From d8e71ee608cb07cfce7a5b2a160fe23e1a67b662 Mon Sep 17 00:00:00 2001 From: Stasik0 Date: Fri, 7 Aug 2015 19:20:37 +0200 Subject: [PATCH] this is a first prototype of a server that which namespace is created from a nodeset XML file automatically @ichrispa @FlorianPalm @jpfr relates to #303 --- examples/CMakeLists.txt | 19 +- examples/server_nodeset.c | 47 + examples/server_nodeset.xml | 43 + .../NodeID_Blacklist_FullNS0.txt | 1514 +++++++++++++++++ 4 files changed, 1622 insertions(+), 1 deletion(-) create mode 100644 examples/server_nodeset.c create mode 100644 examples/server_nodeset.xml create mode 100644 tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index bcf454ec5..b52798063 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,4 +1,5 @@ include_directories(${PROJECT_SOURCE_DIR}/include) +include_directories(${PROJECT_BINARY_DIR}/src_generated) set(LIBS open62541) if(NOT WIN32) @@ -16,7 +17,23 @@ target_link_libraries(server_variable ${LIBS}) add_executable(server_repeated_job server_repeated_job.c) target_link_libraries(server_repeated_job ${LIBS}) +add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/src_generated/nodeset.h ${PROJECT_BINARY_DIR}/src_generated/nodeset.c + PRE_BUILD + COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py -i ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt ${PROJECT_SOURCE_DIR}/tools/schema/namespace0/Opc.Ua.NodeSet2.xml ${PROJECT_SOURCE_DIR}/examples/server_nodeset.xml ${PROJECT_BINARY_DIR}/src_generated/nodeset + DEPENDS ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/generate_open62541CCode.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/logger.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/open62541_MacroHelper.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_builtin_types.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_constants.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_namespace.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/ua_node_types.py + ${PROJECT_SOURCE_DIR}/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt + ${PROJECT_SOURCE_DIR}/examples/server_nodeset.xml) + +add_executable(server_nodeset server_nodeset.c ${PROJECT_BINARY_DIR}/src_generated/nodeset.c) +target_link_libraries(server_nodeset ${LIBS}) + if(ENABLE_METHODCALLS) add_executable(server_method server_method.c) target_link_libraries(server_method ${LIBS}) -endif() \ No newline at end of file +endif() diff --git a/examples/server_nodeset.c b/examples/server_nodeset.c new file mode 100644 index 000000000..aaab9c572 --- /dev/null +++ b/examples/server_nodeset.c @@ -0,0 +1,47 @@ +/* + * This work is licensed under a Creative Commons CCZero 1.0 Universal License. + * See http://creativecommons.org/publicdomain/zero/1.0/ for more information. + */ + +#include +#include + +#ifdef UA_NO_AMALGAMATION +# include "ua_types.h" +# include "ua_server.h" +# include "logger_stdout.h" +# include "networklayer_tcp.h" +#else +# include "open62541.h" +#endif + +/* files nodeset.h and nodeset.c are created from server_nodeset.xml in the /src_generated directory by CMake */ +#include "nodeset.h" + +UA_Boolean running = UA_TRUE; +UA_Logger logger; + +static void stopHandler(int sign) { + UA_LOG_INFO(logger, UA_LOGCATEGORY_SERVER, "received ctrl-c"); + running = 0; +} + +int main(int argc, char** argv) { + signal(SIGINT, stopHandler); /* catches ctrl-c */ + + /* initialize the server */ + UA_Server *server = UA_Server_new(UA_ServerConfig_standard); + logger = Logger_Stdout_new(); + UA_Server_setLogger(server, logger); + UA_Server_addNetworkLayer(server, ServerNetworkLayerTCP_new(UA_ConnectionConfig_standard, 16664)); + + /* create nodes from nodeset */ + nodeset(server); + + /* start server */ + UA_StatusCode retval = UA_Server_run(server, 1, &running); //blocks until running=false + + /* ctrl-c received -> clean up */ + UA_Server_delete(server); + return retval; +} diff --git a/examples/server_nodeset.xml b/examples/server_nodeset.xml new file mode 100644 index 000000000..3f9ecf24a --- /dev/null +++ b/examples/server_nodeset.xml @@ -0,0 +1,43 @@ + + + http://yourorganisation.org/test/ + + + i=11 + i=35 + i=37 + i=40 + i=45 + i=47 + + + testType + + i=58 + ns=1;i=6001 + + + + Var1 + + i=63 + i=78 + ns=1;i=1001 + + + + testInstance + + i=85 + ns=1;i=1001 + ns=1;i=6002 + + + + Var1 + + i=63 + ns=1;i=5001 + + + diff --git a/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt b/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt new file mode 100644 index 000000000..97d77891b --- /dev/null +++ b/tools/pyUANamespace/NodeID_Blacklist_FullNS0.txt @@ -0,0 +1,1514 @@ +i=3062 +i=3063 +i=24 +i=26 +i=27 +i=28 +i=29 +i=1 +i=2 +i=3 +i=4 +i=5 +i=6 +i=7 +i=8 +i=9 +i=10 +i=11 +i=12 +i=13 +i=14 +i=15 +i=16 +i=17 +i=18 +i=19 +i=20 +i=21 +i=22 +i=23 +i=25 +i=30 +i=31 +i=32 +i=33 +i=34 +i=35 +i=36 +i=37 +i=38 +i=39 +i=40 +i=41 +i=3065 +i=44 +i=45 +i=46 +i=47 +i=48 +i=49 +i=51 +i=52 +i=53 +i=54 +i=117 +i=56 +i=58 +i=61 +i=62 +i=63 +i=68 +i=69 +i=104 +i=105 +i=72 +i=106 +i=107 +i=75 +i=76 +i=120 +i=12169 +i=77 +i=111 +i=78 +i=112 +i=80 +i=113 +i=83 +i=114 +i=79 +i=116 +i=11508 +i=11509 +i=11510 +i=11511 +i=84 +i=85 +i=86 +i=87 +i=88 +i=89 +i=90 +i=91 +i=92 +i=93 +i=3068 +i=12170 +i=3067 +i=3069 +i=3070 +i=11433 +i=11498 +i=11512 +i=11513 +i=11432 +i=3071 +i=3072 +i=3073 +i=2000 +i=2001 +i=2002 +i=2003 +i=2004 +i=2005 +i=2006 +i=2007 +i=3074 +i=3075 +i=3076 +i=3077 +i=3078 +i=3079 +i=3080 +i=3081 +i=3082 +i=3083 +i=3084 +i=3085 +i=2008 +i=2742 +i=2009 +i=3086 +i=3087 +i=3088 +i=3089 +i=3090 +i=3091 +i=3092 +i=3093 +i=3094 +i=2010 +i=3095 +i=3096 +i=3097 +i=3098 +i=3099 +i=3100 +i=3101 +i=3102 +i=3104 +i=3105 +i=3106 +i=3107 +i=3108 +i=3110 +i=3111 +i=3112 +i=3113 +i=3114 +i=2011 +i=2012 +i=3115 +i=11527 +i=11489 +i=11490 +i=11491 +i=2013 +i=2014 +i=2016 +i=2017 +i=2732 +i=2733 +i=2734 +i=3049 +i=11549 +i=11550 +i=11551 +i=2019 +i=2754 +i=11562 +i=2020 +i=2021 +i=3116 +i=3117 +i=3118 +i=3119 +i=3120 +i=3121 +i=3122 +i=3124 +i=3125 +i=3126 +i=3127 +i=3128 +i=2022 +i=2023 +i=2744 +i=3129 +i=3130 +i=2025 +i=2026 +i=2027 +i=2028 +i=12097 +i=12098 +i=12099 +i=12100 +i=12101 +i=12102 +i=12103 +i=12104 +i=12105 +i=12106 +i=12107 +i=12108 +i=12109 +i=12110 +i=12111 +i=12112 +i=12113 +i=12114 +i=12115 +i=12116 +i=12117 +i=12118 +i=12119 +i=12120 +i=12121 +i=12122 +i=12123 +i=12124 +i=12125 +i=12126 +i=12127 +i=12128 +i=12129 +i=12130 +i=12131 +i=12132 +i=12133 +i=12134 +i=12135 +i=12136 +i=12137 +i=12138 +i=12139 +i=12140 +i=12141 +i=12142 +i=12143 +i=12144 +i=12145 +i=12146 +i=12147 +i=12148 +i=12149 +i=12150 +i=12151 +i=12152 +i=2029 +i=2030 +i=3131 +i=3132 +i=3133 +i=3134 +i=3135 +i=3136 +i=3137 +i=3138 +i=3139 +i=3140 +i=3141 +i=3142 +i=3143 +i=8898 +i=11891 +i=3151 +i=3152 +i=3153 +i=3154 +i=3155 +i=3156 +i=3157 +i=3158 +i=3159 +i=3160 +i=3161 +i=3162 +i=3163 +i=3164 +i=3165 +i=3166 +i=3167 +i=3168 +i=3169 +i=3170 +i=3171 +i=3172 +i=3173 +i=3174 +i=3175 +i=3176 +i=3177 +i=3178 +i=2031 +i=3179 +i=3180 +i=3181 +i=3182 +i=3183 +i=3184 +i=3185 +i=3186 +i=3187 +i=2032 +i=2033 +i=2034 +i=2035 +i=2036 +i=2037 +i=2038 +i=2039 +i=2040 +i=11945 +i=11948 +i=11564 +i=11565 +i=12161 +i=12162 +i=11567 +i=12163 +i=12164 +i=11569 +i=11570 +i=11571 +i=11572 +i=11573 +i=11574 +i=11575 +i=11576 +i=11577 +i=11578 +i=11579 +i=11580 +i=11581 +i=11582 +i=11583 +i=11584 +i=11585 +i=11586 +i=11587 +i=11588 +i=11589 +i=11590 +i=11591 +i=11592 +i=11593 +i=11594 +i=11595 +i=11615 +i=11616 +i=11617 +i=11618 +i=11619 +i=11620 +i=11621 +i=11622 +i=11623 +i=11624 +i=11625 +i=11626 +i=11627 +i=11628 +i=11629 +i=11630 +i=11631 +i=11632 +i=11633 +i=11634 +i=11635 +i=11636 +i=11637 +i=11638 +i=11639 +i=11640 +i=11641 +i=11642 +i=11643 +i=11645 +i=11646 +i=11647 +i=11648 +i=11649 +i=11650 +i=11651 +i=11652 +i=11653 +i=11675 +i=11676 +i=11677 +i=11678 +i=11679 +i=11680 +i=11681 +i=11682 +i=11683 +i=11684 +i=11685 +i=11686 +i=11687 +i=11688 +i=11689 +i=11690 +i=11691 +i=11692 +i=11693 +i=11694 +i=2041 +i=2042 +i=2043 +i=2044 +i=2045 +i=2046 +i=2047 +i=3190 +i=2050 +i=2051 +i=2052 +i=2053 +i=2054 +i=2055 +i=2056 +i=2057 +i=2058 +i=2059 +i=2745 +i=2060 +i=2061 +i=2746 +i=2062 +i=2063 +i=2065 +i=2066 +i=2069 +i=2070 +i=2071 +i=2072 +i=2073 +i=2747 +i=2074 +i=2748 +i=2749 +i=2075 +i=2076 +i=2077 +i=11485 +i=2078 +i=2079 +i=2080 +i=2081 +i=2082 +i=2083 +i=2084 +i=2085 +i=2086 +i=2087 +i=2088 +i=2089 +i=2090 +i=2091 +i=2092 +i=2093 +i=2094 +i=2095 +i=2096 +i=2097 +i=2098 +i=2099 +i=2100 +i=2750 +i=2101 +i=2102 +i=2103 +i=2104 +i=2751 +i=2127 +i=2128 +i=2129 +i=2130 +i=2131 +i=11446 +i=11696 +i=2132 +i=2133 +i=2134 +i=2738 +i=2739 +i=3035 +i=11436 +i=2340 +i=2137 +i=2138 +i=2139 +i=2140 +i=2141 +i=2142 +i=3698 +i=3699 +i=3700 +i=3701 +i=3702 +i=3703 +i=2752 +i=2753 +i=3051 +i=3052 +i=3053 +i=3054 +i=3055 +i=3056 +i=3057 +i=2150 +i=2151 +i=2152 +i=2153 +i=2154 +i=2155 +i=2156 +i=2157 +i=2159 +i=2160 +i=2161 +i=2162 +i=2163 +i=2164 +i=2165 +i=2166 +i=11697 +i=11698 +i=11699 +i=2171 +i=2172 +i=2173 +i=2174 +i=2175 +i=2176 +i=2177 +i=8888 +i=2179 +i=2180 +i=2181 +i=2182 +i=2183 +i=2184 +i=2185 +i=2186 +i=2187 +i=2188 +i=2189 +i=2190 +i=2191 +i=2998 +i=2193 +i=8889 +i=8890 +i=8891 +i=8892 +i=8893 +i=8894 +i=8895 +i=8896 +i=8897 +i=8902 +i=2196 +i=2197 +i=2198 +i=2199 +i=2200 +i=2201 +i=2202 +i=2203 +i=2204 +i=3050 +i=2205 +i=2206 +i=2207 +i=2208 +i=2209 +i=8900 +i=11892 +i=2217 +i=2218 +i=2219 +i=2220 +i=2221 +i=2222 +i=2223 +i=2224 +i=2225 +i=2226 +i=2227 +i=2228 +i=2229 +i=2230 +i=2231 +i=2232 +i=2233 +i=2234 +i=2235 +i=2236 +i=2237 +i=2238 +i=2239 +i=2240 +i=2241 +i=2242 +i=2730 +i=2731 +i=2243 +i=2244 +i=2245 +i=2246 +i=2247 +i=2248 +i=2249 +i=2250 +i=2251 +i=2252 +i=3058 +i=11487 +i=11488 +i=11701 +i=3048 +i=2253 +i=2254 +i=2255 +i=2256 +i=2257 +i=2258 +i=2259 +i=2260 +i=2262 +i=2263 +i=2261 +i=2264 +i=2265 +i=2266 +i=2992 +i=2993 +i=2267 +i=2994 +i=2268 +i=2269 +i=2271 +i=2272 +i=2735 +i=2736 +i=2737 +i=3704 +i=11702 +i=11703 +i=11704 +i=11705 +i=12165 +i=12166 +i=11707 +i=12167 +i=12168 +i=11709 +i=11710 +i=11711 +i=11712 +i=11713 +i=11714 +i=2996 +i=2997 +i=2274 +i=2275 +i=2276 +i=2277 +i=2278 +i=2279 +i=3705 +i=2281 +i=2282 +i=2284 +i=2285 +i=2286 +i=2287 +i=2288 +i=2289 +i=2290 +i=3706 +i=3707 +i=3708 +i=2294 +i=2295 +i=2296 +i=3709 +i=11312 +i=11313 +i=11314 +i=11715 +i=11492 +i=11493 +i=11494 +i=11192 +i=11193 +i=11242 +i=11273 +i=11274 +i=11196 +i=11197 +i=11198 +i=11199 +i=11200 +i=11281 +i=11282 +i=11283 +i=11502 +i=11275 +i=11201 +i=11737 +i=2299 +i=2769 +i=3720 +i=2770 +i=3724 +i=2755 +i=2756 +i=2757 +i=2758 +i=2759 +i=2762 +i=2763 +i=2764 +i=2765 +i=2766 +i=11456 +i=2771 +i=2772 +i=3728 +i=2773 +i=3732 +i=2760 +i=2761 +i=2767 +i=2768 +i=2307 +i=2308 +i=2309 +i=2310 +i=2312 +i=2311 +i=2774 +i=3754 +i=2775 +i=3746 +i=2776 +i=3750 +i=2315 +i=2777 +i=2778 +i=11939 +i=11940 +i=2365 +i=2366 +i=2367 +i=2368 +i=2370 +i=2369 +i=2371 +i=2372 +i=2373 +i=2374 +i=2375 +i=2376 +i=2377 +i=11238 +i=11241 +i=11461 +i=12021 +i=12024 +i=12025 +i=12026 +i=12027 +i=12028 +i=12029 +i=12037 +i=12038 +i=12046 +i=12047 +i=12055 +i=12056 +i=12057 +i=12065 +i=12066 +i=12067 +i=12068 +i=12076 +i=8995 +i=8996 +i=9000 +i=9001 +i=11110 +i=11111 +i=9002 +i=9003 +i=9004 +i=9005 +i=2782 +i=11112 +i=11113 +i=9009 +i=9010 +i=3874 +i=9011 +i=9012 +i=9015 +i=9016 +i=9017 +i=9020 +i=9021 +i=9022 +i=9023 +i=9024 +i=9025 +i=9026 +i=9028 +i=9027 +i=9029 +i=9030 +i=3875 +i=3876 +i=2830 +i=9035 +i=9036 +i=9055 +i=9056 +i=9060 +i=2831 +i=9064 +i=9065 +i=9066 +i=9067 +i=9068 +i=9069 +i=9070 +i=2881 +i=9073 +i=9074 +i=9093 +i=9094 +i=9098 +i=9102 +i=9103 +i=9107 +i=9111 +i=9112 +i=9113 +i=9114 +i=2915 +i=9118 +i=9119 +i=9160 +i=9161 +i=9164 +i=9165 +i=9166 +i=11120 +i=9169 +i=9170 +i=9174 +i=9178 +i=9179 +i=9180 +i=9184 +i=9185 +i=9188 +i=9189 +i=9211 +i=9212 +i=9213 +i=9214 +i=9215 +i=9216 +i=2929 +i=9115 +i=2930 +i=6098 +i=2932 +i=6100 +i=2933 +i=6101 +i=2935 +i=11322 +i=2936 +i=11323 +i=2940 +i=11324 +i=2942 +i=11325 +i=2943 +i=11326 +i=2945 +i=11327 +i=2947 +i=2948 +i=2949 +i=2991 +i=2955 +i=11124 +i=11125 +i=11126 +i=11127 +i=9318 +i=9329 +i=9330 +i=9331 +i=9332 +i=9333 +i=9334 +i=9335 +i=9336 +i=9337 +i=11340 +i=9338 +i=11341 +i=9339 +i=11342 +i=9340 +i=11343 +i=9341 +i=9398 +i=9399 +i=9455 +i=9456 +i=9457 +i=9461 +i=9462 +i=9465 +i=9906 +i=9963 +i=9964 +i=10020 +i=10021 +i=10025 +i=10029 +i=10030 +i=10034 +i=10038 +i=10039 +i=10043 +i=10047 +i=10048 +i=10052 +i=10060 +i=9482 +i=10368 +i=10522 +i=9764 +i=9905 +i=10214 +i=9623 +i=10523 +i=10637 +i=11158 +i=11753 +i=10751 +i=11163 +i=11164 +i=11165 +i=11166 +i=2790 +i=2803 +i=2829 +i=4170 +i=11851 +i=8927 +i=11852 +i=8944 +i=8945 +i=11853 +i=8961 +i=8962 +i=11854 +i=11093 +i=11855 +i=2787 +i=2788 +i=2789 +i=9006 +i=2391 +i=3830 +i=3831 +i=3833 +i=3835 +i=3836 +i=3838 +i=3839 +i=2392 +i=2393 +i=2394 +i=2395 +i=2396 +i=2397 +i=2398 +i=2399 +i=3840 +i=3841 +i=3842 +i=3843 +i=3844 +i=3845 +i=3846 +i=3847 +i=3848 +i=3849 +i=3850 +i=2400 +i=2401 +i=2402 +i=2403 +i=2404 +i=2405 +i=2406 +i=2407 +i=2408 +i=2409 +i=2410 +i=2411 +i=2412 +i=2413 +i=2414 +i=2415 +i=2416 +i=2417 +i=2418 +i=2419 +i=2420 +i=2421 +i=2422 +i=2423 +i=2424 +i=2425 +i=2426 +i=2427 +i=2428 +i=2429 +i=2430 +i=2378 +i=2379 +i=11856 +i=11875 +i=3806 +i=3825 +i=3826 +i=2380 +i=2381 +i=2382 +i=2383 +i=2384 +i=2385 +i=2386 +i=2387 +i=2388 +i=2389 +i=2390 +i=11214 +i=2318 +i=3059 +i=11168 +i=11169 +i=11170 +i=11171 +i=11876 +i=2323 +i=2324 +i=2325 +i=2326 +i=2327 +i=2328 +i=11499 +i=11500 +i=11202 +i=11203 +i=11204 +i=11205 +i=11206 +i=11207 +i=11208 +i=11215 +i=2330 +i=2331 +i=2332 +i=11268 +i=11269 +i=2334 +i=2335 +i=2336 +i=2337 +i=2338 +i=11278 +i=11279 +i=11280 +i=11501 +i=11270 +i=11172 +i=2999 +i=3025 +i=3028 +i=3003 +i=3029 +i=3030 +i=3006 +i=3026 +i=3031 +i=3032 +i=3033 +i=3012 +i=3027 +i=3014 +i=3015 +i=3016 +i=3017 +i=3034 +i=3019 +i=3020 +i=3021 +i=3022 +i=3023 +i=3024 +i=11187 +i=11188 +i=11189 +i=11190 +i=11191 +i=2341 +i=2342 +i=2343 +i=11285 +i=2344 +i=11304 +i=2346 +i=2347 +i=2348 +i=2349 +i=2350 +i=11286 +i=11287 +i=11305 +i=11306 +i=11288 +i=2351 +i=2352 +i=11307 +i=11308 +i=2355 +i=2357 +i=2358 +i=2359 +i=11505 +i=11506 +i=11507 +i=2360 +i=2361 +i=2362 +i=2363 +i=2364 +i=11292 +i=11426 +i=11427 +i=11428 +i=11429 +i=8921 +i=8922 +i=8923 +i=8924 +i=8925 +i=8926 +i=256 +i=7591 +i=257 +i=11878 +i=296 +i=7594 +i=290 +i=294 +i=295 +i=8912 +i=288 +i=307 +i=7597 +i=308 +i=311 +i=302 +i=7595 +i=303 +i=7596 +i=304 +i=312 +i=432 +i=315 +i=7598 +i=344 +i=388 +i=316 +i=319 +i=322 +i=325 +i=938 +i=348 +i=11881 +i=376 +i=379 +i=382 +i=385 +i=347 +i=11882 +i=521 +i=289 +i=291 +i=292 +i=293 +i=331 +i=334 +i=7599 +i=335 +i=341 +i=576 +i=7605 +i=583 +i=586 +i=589 +i=592 +i=595 +i=598 +i=601 +i=659 +i=11234 +i=11884 +i=11293 +i=11885 +i=719 +i=725 +i=948 +i=920 +i=398 +i=11886 +i=399 +i=402 +i=405 +i=338 +i=851 +i=7611 +i=852 +i=7612 +i=853 +i=11943 +i=11944 +i=856 +i=859 +i=862 +i=865 +i=868 +i=871 +i=299 +i=874 +i=877 +i=897 +i=884 +i=887 +i=12077 +i=12078 +i=12171 +i=12172 +i=12079 +i=12080 +i=894 +i=891 +i=890 +i=7614 +i=297 +i=7616 +i=8913 +i=309 +i=305 +i=313 +i=433 +i=345 +i=317 +i=320 +i=323 +i=326 +i=939 +i=377 +i=380 +i=383 +i=386 +i=332 +i=336 +i=342 +i=584 +i=587 +i=590 +i=593 +i=596 +i=599 +i=602 +i=660 +i=720 +i=726 +i=949 +i=921 +i=400 +i=403 +i=406 +i=339 +i=854 +i=11949 +i=11950 +i=857 +i=860 +i=863 +i=866 +i=869 +i=872 +i=300 +i=875 +i=878 +i=898 +i=885 +i=888 +i=12173 +i=12174 +i=12081 +i=12082 +i=895 +i=892 +i=8252 +i=8254 +i=8285 +i=8291 +i=8918 +i=8300 +i=8297 +i=8303 +i=8417 +i=8333 +i=8306 +i=8309 +i=8312 +i=8315 +i=8318 +i=8363 +i=8366 +i=8369 +i=8372 +i=8321 +i=8324 +i=8330 +i=8564 +i=8567 +i=8570 +i=8573 +i=8576 +i=8579 +i=8582 +i=8639 +i=8702 +i=8708 +i=8711 +i=8807 +i=8384 +i=8387 +i=8390 +i=8327 +i=8843 +i=11951 +i=11954 +i=8846 +i=8849 +i=8852 +i=8855 +i=8858 +i=8861 +i=8294 +i=8864 +i=8867 +i=8870 +i=8873 +i=8876 +i=12175 +i=12178 +i=12083 +i=12086 +i=8882 +i=8879 +i=298 +i=8251 +i=8917 +i=310 +i=306 +i=314 +i=434 +i=346 +i=318 +i=321 +i=324 +i=327 +i=940 +i=378 +i=381 +i=384 +i=387 +i=333 +i=337 +i=343 +i=585 +i=588 +i=591 +i=594 +i=597 +i=600 +i=603 +i=661 +i=721 +i=727 +i=950 +i=922 +i=401 +i=404 +i=407 +i=340 +i=855 +i=11957 +i=11958 +i=858 +i=861 +i=864 +i=867 +i=870 +i=873 +i=301 +i=876 +i=879 +i=899 +i=886 +i=889 +i=12181 +i=12182 +i=12089 +i=12090 +i=896 +i=893 +i=7617 +i=7619 +i=7650 +i=7656 +i=8914 +i=7665 +i=7662 +i=7668 +i=7782 +i=7698 +i=7671 +i=7674 +i=7677 +i=7680 +i=7683 +i=7728 +i=7731 +i=7734 +i=7737 +i=7686 +i=7689 +i=7695 +i=7929 +i=7932 +i=7935 +i=7938 +i=7941 +i=7944 +i=7947 +i=8004 +i=8067 +i=8073 +i=8076 +i=8172 +i=7749 +i=7752 +i=7755 +i=7692 +i=8208 +i=11959 +i=11962 +i=8211 +i=8214 +i=8217 +i=8220 +i=8223 +i=8226 +i=7659 +i=8229 +i=8232 +i=8235 +i=8238 +i=8241 +i=12183 +i=12186 +i=12091 +i=12094 +i=8247 +i=8244