diff --git a/examples/topology-read/Inet_small_toposample.txt b/examples/topology-read/Inet_small_toposample.txt new file mode 100644 index 000000000..77aa8b4cd --- /dev/null +++ b/examples/topology-read/Inet_small_toposample.txt @@ -0,0 +1,20 @@ +10 9 +0 5625 2473 +1 4505 4098 +2 9866 2148 +3 8315 7088 +4 8564 5989 +5 2064 510 +6 2942 2145 +7 2646 9895 +8 5051 3220 +9 6715 6729 +0 1 1973 +0 2 4253 +0 3 5341 +0 5 4066 +0 6 2702 +0 9 4393 +1 8 1033 +2 7 10589 +3 4 1126 diff --git a/examples/topology-read/Inet_toposample.txt b/examples/topology-read/Inet_toposample.txt new file mode 100644 index 000000000..33635d8a3 --- /dev/null +++ b/examples/topology-read/Inet_toposample.txt @@ -0,0 +1,7826 @@ +3037 4788 +0 5625 2473 +1 4505 4098 +2 9866 2148 +3 8315 7088 +4 8564 5989 +5 2064 510 +6 2942 2145 +7 2646 9895 +8 5051 3220 +9 6715 6729 +10 5375 17 +11 1500 3826 +12 718 3640 +13 7870 9475 +14 2834 1667 +15 345 2908 +16 708 1805 +17 8662 2137 +18 989 2807 +19 6537 6490 +20 1659 4642 +21 4255 2709 +22 2260 9074 +23 5081 8712 +24 2482 2591 +25 3725 856 +26 1446 2942 +27 8953 2328 +28 1151 5422 +29 3447 9832 +30 8641 6823 +31 5392 8310 +32 4834 6363 +33 7805 6943 +34 4078 4017 +35 9968 486 +36 9167 7765 +37 1801 4676 +38 6234 3856 +39 6717 8096 +40 6770 7733 +41 984 9648 +42 152 4546 +43 2371 5729 +44 2993 5588 +45 8299 6581 +46 6439 762 +47 3192 6168 +48 830 9908 +49 540 7056 +50 4979 3144 +51 6609 6272 +52 8085 2379 +53 5304 1552 +54 3535 785 +55 8172 2898 +56 1778 6795 +57 6908 2048 +58 4673 2268 +59 2138 8447 +60 5736 9544 +61 3128 948 +62 6245 94 +63 1192 3651 +64 7660 9475 +65 8095 544 +66 7759 3110 +67 8921 416 +68 4208 566 +69 7950 8667 +70 3163 1187 +71 4259 4660 +72 3077 8599 +73 3790 6360 +74 4055 3036 +75 5402 1227 +76 6463 4776 +77 6622 7451 +78 6738 152 +79 4501 1290 +80 1223 4101 +81 3487 8042 +82 7956 120 +83 1980 6096 +84 6371 4963 +85 5095 3134 +86 1789 391 +87 881 2652 +88 6969 6415 +89 8535 3832 +90 8496 743 +91 9173 9409 +92 7779 7901 +93 1438 3109 +94 4116 2522 +95 3662 1116 +96 5419 1518 +97 7178 4024 +98 2125 160 +99 9502 829 +100 7261 5998 +101 9304 3058 +102 3910 6081 +103 5936 7011 +104 3731 6360 +105 2875 8232 +106 7264 2407 +107 3173 8642 +108 3082 7255 +109 3030 2964 +110 8333 2377 +111 9311 4795 +112 1542 8378 +113 3042 5515 +114 8414 3286 +115 8015 6604 +116 6433 9238 +117 1105 7508 +118 9796 87 +119 3284 6144 +120 5491 5291 +121 7272 402 +122 9292 9688 +123 3486 7134 +124 1109 7872 +125 2118 7742 +126 8574 7941 +127 7762 4147 +128 1606 5876 +129 9896 9631 +130 3127 5865 +131 4781 9513 +132 9380 6682 +133 9810 856 +134 8914 9375 +135 3487 3391 +136 2940 9215 +137 3725 4492 +138 2064 9171 +139 6526 8038 +140 9884 8117 +141 2896 9805 +142 2838 7373 +143 9492 22 +144 3925 9827 +145 8842 2543 +146 9963 4421 +147 8856 6897 +148 1959 3305 +149 8858 7658 +150 9921 2468 +151 8615 3957 +152 6813 861 +153 9596 1687 +154 7894 1942 +155 451 2670 +156 3228 2364 +157 1764 8613 +158 871 3745 +159 4511 3061 +160 4150 550 +161 5849 3562 +162 2441 7634 +163 7791 4874 +164 5061 4555 +165 9565 3741 +166 3857 7041 +167 907 3306 +168 7708 9575 +169 899 7176 +170 1782 9054 +171 8476 4419 +172 2918 2996 +173 997 8216 +174 3584 3056 +175 922 8250 +176 2171 464 +177 5808 9959 +178 1229 3816 +179 3292 9892 +180 3421 4216 +181 9077 6846 +182 3842 2540 +183 3813 4753 +184 3845 6769 +185 684 1998 +186 4162 3603 +187 354 4297 +188 8760 7795 +189 1624 1917 +190 6115 5636 +191 8301 8587 +192 223 8728 +193 2906 7785 +194 4423 8866 +195 7801 9708 +196 1577 4890 +197 9863 9056 +198 730 3735 +199 4245 6958 +200 5268 9090 +201 9503 1791 +202 8786 6776 +203 6953 1547 +204 9909 2689 +205 3734 7817 +206 4672 6580 +207 2011 2466 +208 2373 6961 +209 5060 9075 +210 8343 6863 +211 588 6067 +212 7154 2819 +213 7608 5628 +214 3127 746 +215 7752 6076 +216 7607 1581 +217 8313 3206 +218 4601 2732 +219 4986 9198 +220 9439 9569 +221 3219 48 +222 2840 761 +223 1835 368 +224 4391 8115 +225 6675 3191 +226 8066 5765 +227 2801 4064 +228 4385 2087 +229 3181 3616 +230 4822 7539 +231 6589 1983 +232 3493 1355 +233 8836 9298 +234 4776 6567 +235 901 6829 +236 4563 1198 +237 2301 6265 +238 584 6897 +239 3028 7421 +240 1876 5507 +241 9943 5724 +242 3498 6512 +243 8323 1870 +244 4474 8382 +245 2830 3455 +246 1707 3826 +247 2099 3705 +248 4840 7258 +249 6932 6295 +250 1051 2773 +251 5162 3213 +252 5494 9275 +253 5473 9233 +254 306 8261 +255 8266 6783 +256 6267 689 +257 3306 21 +258 6883 7609 +259 5809 6467 +260 4630 2982 +261 9675 5764 +262 828 8872 +263 6919 3702 +264 1189 2043 +265 6439 7083 +266 5740 8138 +267 5850 3383 +268 6359 1228 +269 9702 6508 +270 3285 220 +271 9135 6612 +272 6432 8238 +273 5 4451 +274 5381 7046 +275 4906 6817 +276 8286 1364 +277 3794 3572 +278 357 1132 +279 3768 8945 +280 8676 4258 +281 2625 2381 +282 4482 8103 +283 6186 1034 +284 330 2157 +285 2575 6655 +286 6182 5409 +287 9448 9999 +288 522 9498 +289 334 7211 +290 8839 1172 +291 8806 9988 +292 4052 5942 +293 8601 4205 +294 572 5874 +295 9425 706 +296 9403 5167 +297 4122 2054 +298 9952 4918 +299 8924 7465 +300 4715 9106 +301 8838 6925 +302 9223 685 +303 2108 9194 +304 3922 7283 +305 4386 2199 +306 8466 7725 +307 7239 163 +308 389 3474 +309 5734 2915 +310 7864 2256 +311 9416 4836 +312 1545 8262 +313 5744 7194 +314 4484 7132 +315 6419 8955 +316 6603 2479 +317 3145 7489 +318 9361 9744 +319 2133 8379 +320 1817 1514 +321 20 9088 +322 3341 7796 +323 1763 7807 +324 5253 2295 +325 2929 8023 +326 6053 1179 +327 4607 3085 +328 7530 7581 +329 5097 7531 +330 590 6194 +331 7178 1978 +332 1871 7186 +333 3150 4139 +334 8619 264 +335 247 2753 +336 8382 2252 +337 9960 6950 +338 1441 2627 +339 8964 7620 +340 1392 737 +341 8950 4687 +342 1395 9556 +343 1465 3145 +344 7665 1813 +345 6387 9902 +346 3615 2057 +347 642 2239 +348 9447 7471 +349 2153 5138 +350 1794 9995 +351 6717 7950 +352 4604 3212 +353 4020 3562 +354 514 3553 +355 8210 1904 +356 388 4320 +357 943 1557 +358 5426 425 +359 3376 4549 +360 517 686 +361 2922 7364 +362 8496 4376 +363 2215 3207 +364 1270 4496 +365 2065 9186 +366 4989 5345 +367 6523 5715 +368 6410 3435 +369 7646 7777 +370 6298 1849 +371 8819 4884 +372 8417 6467 +373 4956 9693 +374 2631 7264 +375 2635 8815 +376 2093 7320 +377 2747 7880 +378 4785 4027 +379 660 4955 +380 7716 7724 +381 9328 1165 +382 4456 4471 +383 4003 2494 +384 7004 5553 +385 3128 7398 +386 2066 1323 +387 4314 8528 +388 7840 3768 +389 5832 3990 +390 5358 4987 +391 2816 7552 +392 1281 2419 +393 5612 9048 +394 6392 1849 +395 1594 8929 +396 6925 9463 +397 4157 9416 +398 8099 1187 +399 8088 537 +400 500 37 +401 184 6093 +402 7023 4264 +403 6221 9145 +404 5899 8997 +405 8899 5613 +406 9566 5065 +407 9655 885 +408 8812 5655 +409 4922 3419 +410 423 4423 +411 7079 6408 +412 7456 7166 +413 8803 9291 +414 8299 9127 +415 3573 4510 +416 9599 7316 +417 1391 6344 +418 5965 2934 +419 6660 9381 +420 3920 9158 +421 6466 6657 +422 8560 6716 +423 8218 8902 +424 5962 6135 +425 147 6235 +426 3726 907 +427 6220 3965 +428 1211 7998 +429 5107 1529 +430 1882 2655 +431 9299 1696 +432 5480 8936 +433 3375 3398 +434 4684 7116 +435 319 7898 +436 774 8500 +437 3287 9239 +438 6261 7582 +439 3978 7928 +440 9067 6950 +441 6767 9053 +442 8573 9656 +443 5504 2984 +444 611 9158 +445 8032 5530 +446 7180 1328 +447 6993 2929 +448 5356 5867 +449 6222 4161 +450 7977 9377 +451 7599 8733 +452 4073 3333 +453 1695 1243 +454 8847 1770 +455 668 3106 +456 6698 5539 +457 5215 4423 +458 8582 7448 +459 4351 3029 +460 4044 5730 +461 6511 2616 +462 9999 7709 +463 8018 7590 +464 6454 8338 +465 7014 8936 +466 7880 8356 +467 5735 888 +468 3871 9431 +469 2752 2175 +470 3800 2458 +471 4257 7046 +472 1944 8973 +473 4564 4395 +474 8689 2847 +475 7264 8357 +476 7629 3112 +477 9985 1520 +478 409 9257 +479 2996 3659 +480 3124 7810 +481 4346 7050 +482 3358 1257 +483 9752 326 +484 4511 4341 +485 8249 6945 +486 3697 5654 +487 6127 2568 +488 8719 7992 +489 8585 2264 +490 9187 5785 +491 2294 761 +492 2499 4202 +493 3027 2718 +494 9948 5536 +495 425 5199 +496 7291 6296 +497 96 1073 +498 7859 3929 +499 2576 9366 +500 9335 9125 +501 2300 7924 +502 6516 5600 +503 8098 6089 +504 2265 4567 +505 3323 7425 +506 3308 4053 +507 5278 1343 +508 3350 8901 +509 9240 8028 +510 700 3912 +511 4642 8625 +512 5518 6936 +513 1788 339 +514 2383 9373 +515 9918 2080 +516 7289 5996 +517 3879 144 +518 5320 921 +519 8228 2994 +520 8037 4935 +521 7518 4511 +522 985 4053 +523 6275 6627 +524 2356 1754 +525 3130 9049 +526 3243 7700 +527 3418 9806 +528 6012 193 +529 154 4135 +530 2326 2583 +531 926 2675 +532 6774 360 +533 3243 1252 +534 9166 9922 +535 2966 3181 +536 2524 1132 +537 7516 2169 +538 7653 2839 +539 7538 2656 +540 4467 2230 +541 8631 616 +542 1585 4539 +543 1231 7061 +544 8495 2659 +545 590 2863 +546 9957 6578 +547 8722 2760 +548 2879 3832 +549 950 8886 +550 2338 9609 +551 5551 6640 +552 7453 5817 +553 2227 8296 +554 2923 1255 +555 6010 5406 +556 5954 9787 +557 4841 4774 +558 1655 6566 +559 5911 9127 +560 7718 3769 +561 2617 2561 +562 1643 5233 +563 6089 1802 +564 4106 9269 +565 8270 126 +566 2617 2589 +567 6495 2968 +568 1816 5092 +569 4549 9100 +570 8972 2386 +571 6858 7032 +572 1588 2753 +573 6622 8088 +574 6767 1949 +575 6762 6517 +576 8159 4156 +577 837 8959 +578 5497 2750 +579 8980 3942 +580 7410 8275 +581 9457 414 +582 2372 6414 +583 6844 6 +584 3905 7768 +585 8051 5920 +586 8330 2224 +587 9380 5218 +588 6459 1988 +589 6302 7969 +590 1844 402 +591 3774 9271 +592 3991 3583 +593 8873 8935 +594 7393 4296 +595 2383 2643 +596 2412 5068 +597 5318 7398 +598 581 712 +599 648 5078 +600 9929 4073 +601 8646 2621 +602 2071 7663 +603 9463 3101 +604 7298 2016 +605 732 3139 +606 9085 1041 +607 4641 4945 +608 4786 7473 +609 9950 9787 +610 9470 1182 +611 6830 2875 +612 462 2110 +613 7704 1393 +614 3943 7398 +615 7323 3417 +616 6405 2542 +617 9645 8947 +618 1467 6322 +619 7617 4083 +620 6647 2781 +621 5918 1394 +622 980 994 +623 7030 2028 +624 7380 843 +625 4680 2884 +626 6760 9870 +627 2244 1823 +628 2628 9052 +629 9829 6653 +630 757 5919 +631 3078 1906 +632 6176 4533 +633 2288 1842 +634 9517 717 +635 3352 5662 +636 5606 2198 +637 5202 2220 +638 7115 1574 +639 5165 2687 +640 2636 5839 +641 9144 7349 +642 4755 7192 +643 8239 4065 +644 6827 118 +645 3662 9938 +646 8237 2057 +647 4674 2615 +648 1972 6500 +649 1867 9774 +650 6358 364 +651 9468 5648 +652 1864 5363 +653 7509 3039 +654 741 3311 +655 4103 7548 +656 3126 7430 +657 4668 5653 +658 853 5482 +659 7789 6639 +660 5311 501 +661 830 8687 +662 1168 3074 +663 2250 4077 +664 6493 1075 +665 9498 6484 +666 7988 5908 +667 6135 6669 +668 7689 7160 +669 924 1182 +670 6607 9880 +671 2631 7855 +672 537 5209 +673 2077 5202 +674 4393 1783 +675 7200 7475 +676 1554 6428 +677 5742 7804 +678 7428 656 +679 9478 2104 +680 9398 7867 +681 602 2264 +682 8709 1457 +683 9922 6411 +684 1076 174 +685 9542 7661 +686 8524 4494 +687 6118 9247 +688 1927 4632 +689 4660 6986 +690 4054 3724 +691 3548 6642 +692 9292 1047 +693 7607 6863 +694 2642 790 +695 882 4719 +696 3024 5845 +697 927 2369 +698 2679 4920 +699 5397 2796 +700 1786 7349 +701 6676 3141 +702 1564 9741 +703 4545 3650 +704 763 7282 +705 1540 2428 +706 5259 3364 +707 2416 2224 +708 4026 4686 +709 9975 9885 +710 8839 2075 +711 3797 3725 +712 1826 8677 +713 2405 7980 +714 6886 1957 +715 168 4661 +716 2916 7162 +717 9941 5646 +718 9087 1730 +719 6448 1454 +720 956 1063 +721 6863 41 +722 9246 5266 +723 1726 1825 +724 4239 7848 +725 4649 3087 +726 2278 5931 +727 9423 3044 +728 2513 375 +729 2298 9616 +730 7760 3369 +731 7639 353 +732 5940 1837 +733 5699 8361 +734 2369 7864 +735 289 8138 +736 4298 5494 +737 7155 7148 +738 5976 332 +739 2927 980 +740 4278 8970 +741 6465 2388 +742 4648 7765 +743 2335 1606 +744 5849 36 +745 5460 4544 +746 3801 5940 +747 8620 7662 +748 3488 3160 +749 9279 2510 +750 7473 5250 +751 552 1365 +752 3883 7398 +753 3211 3463 +754 1368 7763 +755 3737 7791 +756 4226 800 +757 5285 6435 +758 4655 1419 +759 6725 7208 +760 2237 6513 +761 5143 7401 +762 796 1931 +763 7549 2501 +764 8432 8536 +765 6160 3443 +766 4274 28 +767 3766 1114 +768 8194 7069 +769 275 4051 +770 8754 270 +771 3984 3773 +772 8475 1780 +773 9122 3742 +774 9832 9043 +775 7343 3057 +776 6234 6449 +777 3348 2134 +778 6280 5569 +779 2456 1294 +780 6935 4308 +781 2005 5452 +782 8890 9621 +783 8928 3608 +784 8440 2150 +785 2908 7266 +786 9649 5437 +787 6531 2009 +788 4850 2080 +789 689 5964 +790 2584 5526 +791 6641 8915 +792 1148 7842 +793 8894 579 +794 6236 3014 +795 7625 3541 +796 8494 4017 +797 2618 798 +798 4722 9011 +799 7419 4684 +800 92 4362 +801 5014 4387 +802 7198 2744 +803 9989 2698 +804 6608 2532 +805 1658 9232 +806 3719 717 +807 977 9729 +808 63 6921 +809 4277 4382 +810 4719 7597 +811 221 5556 +812 5776 5300 +813 877 8862 +814 5564 6747 +815 4938 8590 +816 6186 1520 +817 6767 6832 +818 4503 6234 +819 4563 2963 +820 1663 565 +821 5983 2571 +822 3224 4723 +823 6478 5864 +824 9343 5663 +825 7620 3226 +826 9820 6865 +827 7446 1441 +828 2414 4337 +829 6963 4209 +830 5513 3033 +831 3038 8147 +832 6125 6238 +833 4823 7450 +834 7360 8120 +835 2607 3112 +836 938 7070 +837 5843 4328 +838 5332 7695 +839 8651 4022 +840 4768 614 +841 8206 7188 +842 2088 8835 +843 1554 3919 +844 5773 1634 +845 7579 723 +846 6196 7128 +847 3987 4127 +848 7612 2858 +849 6927 6922 +850 1634 5165 +851 3946 7066 +852 2735 5950 +853 9597 5288 +854 6670 7572 +855 2857 8914 +856 5602 7757 +857 2261 889 +858 4034 3435 +859 551 610 +860 8078 6784 +861 3267 8088 +862 6707 6699 +863 3900 4705 +864 2513 3070 +865 7336 2308 +866 3932 1767 +867 6234 166 +868 3005 7555 +869 7198 7301 +870 3397 780 +871 5196 7652 +872 6560 5784 +873 8026 6327 +874 3100 1627 +875 3110 5088 +876 85 6539 +877 4390 498 +878 1643 7144 +879 7316 584 +880 8744 5724 +881 9866 4340 +882 1257 5031 +883 8571 1385 +884 7860 1000 +885 470 619 +886 5555 5672 +887 9937 4781 +888 2783 5075 +889 1478 5940 +890 8302 5389 +891 7908 686 +892 980 3061 +893 3227 2245 +894 9982 8712 +895 9184 2345 +896 1230 6725 +897 6015 4262 +898 4669 4551 +899 3043 989 +900 7781 1653 +901 9196 1958 +902 6194 6476 +903 186 8551 +904 8129 5956 +905 9843 8094 +906 8337 1170 +907 7260 2685 +908 4096 5101 +909 8964 4398 +910 1754 1143 +911 3142 3019 +912 9985 6462 +913 7537 1537 +914 7416 6193 +915 9803 2874 +916 4080 7783 +917 1339 3864 +918 950 7423 +919 556 2086 +920 3014 3098 +921 8360 4119 +922 5989 1383 +923 7515 2387 +924 7478 4603 +925 5118 8877 +926 4469 376 +927 3018 3849 +928 4434 9349 +929 3633 5814 +930 2645 892 +931 9194 8834 +932 1713 9843 +933 5608 8512 +934 8700 2911 +935 2448 3606 +936 6083 5472 +937 3824 24 +938 58 2473 +939 9974 1610 +940 9720 1240 +941 8051 2856 +942 2553 4049 +943 203 9405 +944 8250 1230 +945 3568 4717 +946 3972 8590 +947 1490 9941 +948 718 2372 +949 2170 3632 +950 8581 6737 +951 8010 9329 +952 680 1823 +953 1678 5626 +954 9567 4873 +955 4126 3032 +956 3743 4884 +957 6764 202 +958 475 5472 +959 3562 5046 +960 5248 1246 +961 4917 7947 +962 3878 246 +963 1017 4838 +964 6959 4914 +965 1822 7762 +966 8285 7743 +967 9073 701 +968 1702 3711 +969 5531 9825 +970 2764 5432 +971 1220 4080 +972 2376 5115 +973 1333 4197 +974 9802 2509 +975 8064 9206 +976 4278 7591 +977 5783 2474 +978 5703 5512 +979 4436 616 +980 3705 233 +981 9377 7863 +982 3173 5566 +983 2154 6583 +984 595 8802 +985 6424 1490 +986 1533 7343 +987 499 2886 +988 6438 4586 +989 9846 190 +990 9354 1338 +991 660 7716 +992 8764 4645 +993 3781 2818 +994 5220 247 +995 6135 8491 +996 4424 1855 +997 6329 8085 +998 1547 9985 +999 5182 886 +1000 9656 9153 +1001 1432 696 +1002 1397 5513 +1003 216 4205 +1004 3384 254 +1005 3941 1839 +1006 643 860 +1007 7877 5910 +1008 7340 3615 +1009 6781 274 +1010 7832 7734 +1011 9137 4970 +1012 8917 594 +1013 9341 614 +1014 628 8356 +1015 2347 17 +1016 332 1066 +1017 5764 4449 +1018 2420 3020 +1019 7980 2613 +1020 8411 372 +1021 4452 1240 +1022 9959 3307 +1023 7099 6505 +1024 1501 3123 +1025 7880 9423 +1026 5429 7038 +1027 3504 3614 +1028 9800 5144 +1029 5665 4748 +1030 7400 4324 +1031 7471 7210 +1032 911 1285 +1033 5950 4923 +1034 2807 3424 +1035 5227 4979 +1036 4071 8053 +1037 4830 3087 +1038 1364 5693 +1039 693 7541 +1040 5894 7117 +1041 1874 288 +1042 6472 9555 +1043 836 581 +1044 2932 3449 +1045 7192 8520 +1046 1533 3281 +1047 4004 1316 +1048 9331 9021 +1049 455 8587 +1050 5478 5037 +1051 4324 6762 +1052 2295 7770 +1053 7790 576 +1054 2320 1823 +1055 7673 1955 +1056 5651 8562 +1057 3198 5341 +1058 5368 8345 +1059 9278 5685 +1060 6443 7784 +1061 8879 348 +1062 2514 93 +1063 7239 7861 +1064 4080 9053 +1065 3346 828 +1066 6934 8908 +1067 6685 5075 +1068 8815 8940 +1069 2282 7331 +1070 1295 5511 +1071 6840 6537 +1072 1334 8590 +1073 4149 8066 +1074 9622 7476 +1075 1890 5310 +1076 7755 9927 +1077 7827 7118 +1078 996 6788 +1079 7368 8389 +1080 8346 2840 +1081 6726 7798 +1082 4703 8519 +1083 49 9423 +1084 2282 7532 +1085 2608 1675 +1086 2042 1361 +1087 3258 4344 +1088 3451 8433 +1089 5801 6635 +1090 4532 2951 +1091 3838 147 +1092 4043 8676 +1093 8301 3731 +1094 534 8555 +1095 330 8312 +1096 3813 5055 +1097 9888 5579 +1098 9993 1486 +1099 3797 9055 +1100 7745 8346 +1101 8559 7140 +1102 5902 8871 +1103 252 8721 +1104 9432 8241 +1105 7296 4737 +1106 2348 8569 +1107 6982 7474 +1108 3344 3287 +1109 5759 3815 +1110 4595 2470 +1111 9676 3016 +1112 7468 5019 +1113 6924 4490 +1114 6061 5313 +1115 8666 908 +1116 5372 4778 +1117 6524 153 +1118 5736 9919 +1119 9620 1364 +1120 2859 6344 +1121 3489 5995 +1122 728 4790 +1123 6997 898 +1124 6101 772 +1125 7710 9160 +1126 4785 6191 +1127 2665 4453 +1128 9234 595 +1129 166 2098 +1130 9695 7429 +1131 577 5019 +1132 9032 1784 +1133 3654 2520 +1134 6184 2465 +1135 5582 7597 +1136 4028 5838 +1137 2241 448 +1138 4165 8848 +1139 2146 6669 +1140 6451 3143 +1141 4386 1077 +1142 4140 9295 +1143 2054 8612 +1144 3017 4180 +1145 7389 4309 +1146 8914 3858 +1147 1707 91 +1148 2568 8883 +1149 4722 6036 +1150 7846 684 +1151 6932 4268 +1152 9642 8812 +1153 5436 8441 +1154 4251 1152 +1155 3579 7169 +1156 1511 3187 +1157 830 4136 +1158 407 611 +1159 3645 7283 +1160 257 4478 +1161 8691 6227 +1162 9877 7725 +1163 4201 1362 +1164 7483 8220 +1165 8793 8807 +1166 6238 1524 +1167 9534 9941 +1168 5435 2527 +1169 573 3515 +1170 2746 9580 +1171 8660 4547 +1172 4470 9997 +1173 3261 2827 +1174 3171 5587 +1175 2710 7728 +1176 7506 7916 +1177 6692 5677 +1178 9870 2081 +1179 1320 6673 +1180 6442 6899 +1181 338 3794 +1182 6873 3488 +1183 2527 2563 +1184 7568 2095 +1185 302 118 +1186 313 2588 +1187 9645 4218 +1188 8222 3838 +1189 4721 6834 +1190 9090 5919 +1191 938 7145 +1192 8606 8139 +1193 8374 2260 +1194 659 5651 +1195 1869 1860 +1196 1257 8809 +1197 8486 6103 +1198 3446 7151 +1199 894 4668 +1200 1481 1513 +1201 7882 4993 +1202 7006 8303 +1203 9802 6060 +1204 5443 9785 +1205 9257 8759 +1206 5376 6146 +1207 9837 5499 +1208 5256 1674 +1209 7719 901 +1210 4398 2872 +1211 2853 9330 +1212 4744 8430 +1213 6250 8014 +1214 8336 4304 +1215 1266 4799 +1216 2816 6438 +1217 2931 9334 +1218 3006 3648 +1219 982 3637 +1220 4836 706 +1221 5350 6437 +1222 9655 6570 +1223 5721 9320 +1224 9375 2288 +1225 4433 9318 +1226 3187 4440 +1227 4324 5770 +1228 673 1902 +1229 1780 5035 +1230 3916 5625 +1231 4049 3585 +1232 7898 2828 +1233 814 2315 +1234 932 8340 +1235 2699 520 +1236 158 3011 +1237 1946 4778 +1238 5999 6076 +1239 9283 6976 +1240 8973 6065 +1241 3343 3789 +1242 1942 2019 +1243 4729 786 +1244 9365 9036 +1245 5618 6108 +1246 3317 2149 +1247 4590 7066 +1248 4307 798 +1249 3562 2480 +1250 1598 3561 +1251 3332 231 +1252 2060 3058 +1253 1884 2563 +1254 7311 4803 +1255 924 8254 +1256 7575 7069 +1257 5958 9693 +1258 1109 2371 +1259 292 3470 +1260 6159 5085 +1261 5863 6213 +1262 9185 1687 +1263 6351 4830 +1264 3123 5868 +1265 4781 1556 +1266 2881 7713 +1267 6498 6358 +1268 5206 6334 +1269 8400 2630 +1270 1838 561 +1271 3580 7064 +1272 5085 1280 +1273 2153 9825 +1274 6622 6462 +1275 6416 8972 +1276 7365 3529 +1277 8213 6250 +1278 4621 4597 +1279 4733 3953 +1280 2168 7147 +1281 5419 5809 +1282 5100 9718 +1283 8508 5150 +1284 17 9901 +1285 8295 2098 +1286 3448 2952 +1287 8890 3622 +1288 4198 4610 +1289 6252 6038 +1290 6740 1177 +1291 3178 9690 +1292 5008 6622 +1293 2441 4662 +1294 7410 897 +1295 8293 4206 +1296 2724 9337 +1297 7585 8421 +1298 5781 4337 +1299 8416 8146 +1300 6309 5189 +1301 7259 4489 +1302 1369 7839 +1303 6580 1226 +1304 6025 3351 +1305 6252 2462 +1306 7695 1802 +1307 4860 3727 +1308 7950 8961 +1309 7447 3980 +1310 5951 4063 +1311 4474 7324 +1312 8130 8508 +1313 4315 989 +1314 4144 6566 +1315 9851 3934 +1316 1880 3659 +1317 2316 4426 +1318 3433 8943 +1319 7107 6859 +1320 5217 8277 +1321 7916 3381 +1322 4669 8370 +1323 6384 8158 +1324 9421 2805 +1325 2814 3615 +1326 3924 4813 +1327 8810 7709 +1328 5795 9020 +1329 6538 421 +1330 3170 4820 +1331 2974 9679 +1332 4419 3983 +1333 4766 8433 +1334 3807 584 +1335 5885 9931 +1336 7429 68 +1337 7392 9761 +1338 973 9136 +1339 6314 5144 +1340 9712 3160 +1341 1323 1273 +1342 8728 284 +1343 7365 6416 +1344 2725 9466 +1345 9622 9749 +1346 8056 8395 +1347 9548 2194 +1348 8475 7616 +1349 3918 3482 +1350 8337 7613 +1351 2590 9206 +1352 1952 2452 +1353 5217 9175 +1354 9246 3980 +1355 5599 2754 +1356 7571 5587 +1357 5570 8483 +1358 129 2809 +1359 6564 1467 +1360 5268 1362 +1361 8298 9989 +1362 9751 9700 +1363 1979 2986 +1364 6408 2968 +1365 3398 4710 +1366 9305 9565 +1367 7930 8191 +1368 3481 1039 +1369 4409 1300 +1370 2996 435 +1371 9287 1758 +1372 9290 6863 +1373 5017 5932 +1374 9318 2101 +1375 1242 9011 +1376 6616 3867 +1377 5174 7480 +1378 9103 9695 +1379 8221 8256 +1380 9610 665 +1381 1845 5755 +1382 2024 6927 +1383 6882 8462 +1384 6502 3383 +1385 4602 9902 +1386 9163 3933 +1387 9031 972 +1388 6831 8880 +1389 199 5182 +1390 7845 6401 +1391 5999 1438 +1392 2699 9999 +1393 835 6841 +1394 1467 489 +1395 6228 3692 +1396 9496 24 +1397 2926 771 +1398 9288 9159 +1399 3609 1544 +1400 5821 6652 +1401 2946 9067 +1402 925 70 +1403 1220 5321 +1404 3446 3633 +1405 8827 3156 +1406 973 5941 +1407 1575 9532 +1408 1866 7551 +1409 8232 1272 +1410 9486 6439 +1411 6307 9823 +1412 7202 6930 +1413 3529 9987 +1414 5344 9900 +1415 3890 444 +1416 4484 3419 +1417 1469 7571 +1418 5913 4340 +1419 9856 1874 +1420 9882 5493 +1421 558 4168 +1422 6661 3103 +1423 740 9562 +1424 54 8086 +1425 128 4593 +1426 8638 7824 +1427 2293 6952 +1428 3501 1915 +1429 5942 9539 +1430 1069 8286 +1431 5338 6845 +1432 1950 1616 +1433 2386 1536 +1434 3966 5081 +1435 9837 5555 +1436 220 7369 +1437 7519 8792 +1438 4041 4416 +1439 1411 1021 +1440 614 2654 +1441 7213 821 +1442 9330 2435 +1443 6890 7344 +1444 8706 35 +1445 8206 281 +1446 8976 9619 +1447 5952 6809 +1448 339 8371 +1449 2801 6593 +1450 297 5499 +1451 9280 4728 +1452 3966 6243 +1453 7413 2273 +1454 4727 9372 +1455 6683 9272 +1456 3988 8417 +1457 1143 5060 +1458 1616 1292 +1459 7023 3459 +1460 6244 7581 +1461 9147 8559 +1462 6757 6604 +1463 1541 2636 +1464 7143 3862 +1465 1643 2559 +1466 8835 4356 +1467 5462 9998 +1468 5243 8274 +1469 2063 4558 +1470 7361 7153 +1471 3601 2400 +1472 3679 5001 +1473 7495 7622 +1474 6927 742 +1475 6275 7020 +1476 4460 5998 +1477 1747 5954 +1478 2083 8552 +1479 9824 6296 +1480 3095 6053 +1481 5781 934 +1482 3678 6288 +1483 2750 9961 +1484 6943 2312 +1485 1722 519 +1486 8190 7534 +1487 4951 9477 +1488 6373 550 +1489 5833 6319 +1490 8151 7607 +1491 8956 1108 +1492 9878 2274 +1493 7989 1469 +1494 7458 6507 +1495 3399 6948 +1496 8716 8112 +1497 6169 7752 +1498 5128 9696 +1499 5333 367 +1500 421 832 +1501 6099 1257 +1502 3195 7476 +1503 1301 7091 +1504 8455 6504 +1505 7093 438 +1506 889 2218 +1507 313 2748 +1508 9815 6758 +1509 6584 6246 +1510 1715 8579 +1511 6059 133 +1512 254 7653 +1513 6789 2028 +1514 1550 6015 +1515 9200 2953 +1516 3093 1030 +1517 1849 2042 +1518 2890 7549 +1519 4250 8443 +1520 3881 9051 +1521 2248 3842 +1522 4971 6819 +1523 654 1402 +1524 3618 5028 +1525 3115 5966 +1526 9481 7275 +1527 2372 9097 +1528 9013 9030 +1529 6032 400 +1530 1212 9204 +1531 9820 85 +1532 1521 775 +1533 2151 9390 +1534 1378 1340 +1535 2163 5728 +1536 5971 5637 +1537 6499 4197 +1538 6387 5774 +1539 9270 8254 +1540 3976 5471 +1541 8182 5670 +1542 2112 7421 +1543 5414 7164 +1544 1328 8517 +1545 927 7012 +1546 4842 2665 +1547 414 6305 +1548 4945 5626 +1549 9592 2148 +1550 9432 4678 +1551 7919 7223 +1552 9977 2328 +1553 5586 8378 +1554 2053 7031 +1555 5237 7429 +1556 8202 3300 +1557 2816 1469 +1558 8798 8407 +1559 8143 7023 +1560 9123 8303 +1561 1148 2968 +1562 4259 7814 +1563 8559 4839 +1564 8309 269 +1565 9801 6525 +1566 7393 5560 +1567 9730 1819 +1568 403 5728 +1569 1673 9776 +1570 1584 2963 +1571 6542 6753 +1572 7224 4612 +1573 1716 9795 +1574 8917 5453 +1575 7999 398 +1576 630 256 +1577 2210 5316 +1578 9549 8276 +1579 3114 2539 +1580 6104 6308 +1581 345 1596 +1582 6290 9910 +1583 3486 5676 +1584 5620 8600 +1585 5599 3205 +1586 6477 3528 +1587 5265 1226 +1588 8321 9439 +1589 2625 786 +1590 2343 5963 +1591 1634 4382 +1592 5207 6347 +1593 7101 3219 +1594 3158 3026 +1595 3168 2499 +1596 6109 6155 +1597 8623 3812 +1598 256 6400 +1599 9031 3045 +1600 7245 6061 +1601 2860 9240 +1602 3564 7108 +1603 6897 6678 +1604 4807 8194 +1605 8650 4632 +1606 8583 872 +1607 7918 1029 +1608 8515 5328 +1609 7430 281 +1610 4776 1402 +1611 8323 5769 +1612 3446 5392 +1613 6461 4816 +1614 5278 6749 +1615 4615 1245 +1616 5372 9643 +1617 8227 133 +1618 1419 2013 +1619 8829 2721 +1620 9961 8611 +1621 9592 8997 +1622 1795 7527 +1623 8684 2511 +1624 9492 8402 +1625 341 9301 +1626 9919 8414 +1627 6652 4303 +1628 6705 5369 +1629 3142 3035 +1630 8892 4593 +1631 2110 3771 +1632 9487 9189 +1633 2980 8486 +1634 578 5391 +1635 8471 217 +1636 2880 2277 +1637 7894 1953 +1638 4383 106 +1639 6371 920 +1640 9029 4793 +1641 7097 2156 +1642 8235 2073 +1643 5214 3253 +1644 8073 7944 +1645 7850 4945 +1646 4772 3336 +1647 4972 3389 +1648 1143 1434 +1649 3090 4496 +1650 1314 8357 +1651 5070 6832 +1652 4825 5860 +1653 2161 551 +1654 1758 8840 +1655 7164 9968 +1656 8342 3867 +1657 9239 7906 +1658 469 4848 +1659 2220 7419 +1660 501 2875 +1661 6658 5316 +1662 213 6357 +1663 4454 8628 +1664 663 3459 +1665 8198 1520 +1666 2899 112 +1667 3493 5679 +1668 1054 6538 +1669 8769 7128 +1670 752 7721 +1671 7927 1480 +1672 6279 1383 +1673 3860 9280 +1674 9606 4370 +1675 6811 4416 +1676 6833 3523 +1677 6165 4808 +1678 6413 6560 +1679 5406 5844 +1680 7735 5918 +1681 6980 292 +1682 3621 3523 +1683 711 3224 +1684 3293 2907 +1685 9179 1651 +1686 8458 3349 +1687 3623 4323 +1688 878 9778 +1689 8988 4414 +1690 2829 3704 +1691 2422 7787 +1692 5935 9684 +1693 1920 1700 +1694 9623 9541 +1695 5283 6250 +1696 4452 2588 +1697 6550 9216 +1698 1689 2955 +1699 2548 9852 +1700 9849 5779 +1701 1708 2115 +1702 9334 5563 +1703 7266 7653 +1704 3602 7211 +1705 3951 4509 +1706 5726 8394 +1707 5585 3741 +1708 8767 6401 +1709 3174 813 +1710 8543 9989 +1711 3234 4538 +1712 6797 8987 +1713 449 7323 +1714 2015 3819 +1715 549 2679 +1716 7034 29 +1717 9538 8395 +1718 9114 262 +1719 8164 6744 +1720 9924 1901 +1721 3947 5662 +1722 6742 4607 +1723 1277 7562 +1724 2976 5262 +1725 9610 9777 +1726 769 6583 +1727 1680 5200 +1728 3546 8745 +1729 4383 3844 +1730 2765 690 +1731 4091 408 +1732 8574 2076 +1733 4389 4416 +1734 2582 5351 +1735 6915 1922 +1736 526 9826 +1737 5475 4416 +1738 1856 4206 +1739 7002 5261 +1740 6341 7410 +1741 5698 3049 +1742 2062 2022 +1743 6139 9633 +1744 1824 7090 +1745 408 4263 +1746 7640 4758 +1747 2855 1026 +1748 3579 7092 +1749 7179 8031 +1750 7714 1706 +1751 5849 7693 +1752 3616 3006 +1753 2879 818 +1754 7634 9529 +1755 9687 1662 +1756 1951 7253 +1757 1733 5410 +1758 1065 744 +1759 8395 5994 +1760 4038 3658 +1761 455 7593 +1762 6011 81 +1763 3031 2022 +1764 8631 2009 +1765 7420 6950 +1766 3436 7664 +1767 91 3779 +1768 7778 6866 +1769 9211 6937 +1770 3671 4734 +1771 4640 6796 +1772 5803 3207 +1773 2153 4590 +1774 9459 4094 +1775 1789 8321 +1776 4097 5232 +1777 4630 5488 +1778 4350 8332 +1779 5809 2275 +1780 360 5659 +1781 7491 4977 +1782 1909 833 +1783 3399 8962 +1784 980 660 +1785 6642 5424 +1786 8227 3017 +1787 7833 2350 +1788 3056 6138 +1789 7663 2670 +1790 4085 2550 +1791 8740 2702 +1792 2840 2 +1793 7931 6876 +1794 3675 1003 +1795 6392 1745 +1796 5343 1185 +1797 4978 9703 +1798 1773 1687 +1799 1069 9977 +1800 5092 2894 +1801 172 6002 +1802 2470 1915 +1803 9354 2122 +1804 9654 2224 +1805 9888 9913 +1806 580 5901 +1807 4861 1557 +1808 7862 9455 +1809 869 6921 +1810 6286 4871 +1811 8382 4739 +1812 260 3621 +1813 247 2718 +1814 9093 7140 +1815 5207 152 +1816 504 1867 +1817 7650 4372 +1818 3968 2648 +1819 1964 1962 +1820 6513 47 +1821 8409 6396 +1822 3177 4111 +1823 6934 9565 +1824 6873 3441 +1825 2286 1411 +1826 8806 5468 +1827 2596 1461 +1828 460 1757 +1829 2069 2160 +1830 1963 5566 +1831 3531 9342 +1832 1796 3706 +1833 1492 5170 +1834 8563 6801 +1835 5909 2754 +1836 9793 702 +1837 9889 2808 +1838 5394 6790 +1839 2683 2134 +1840 6914 4869 +1841 6263 3609 +1842 9771 1244 +1843 737 6340 +1844 4727 2357 +1845 7256 5558 +1846 3394 1108 +1847 1162 1793 +1848 5902 8682 +1849 7862 3557 +1850 4515 3199 +1851 4238 4102 +1852 8256 5680 +1853 2118 193 +1854 456 6233 +1855 8468 8133 +1856 4431 5742 +1857 814 7384 +1858 6912 3010 +1859 7006 8617 +1860 4990 6282 +1861 4005 6372 +1862 7036 9012 +1863 2160 275 +1864 5797 4612 +1865 5406 9862 +1866 6826 8991 +1867 7752 9655 +1868 2166 4971 +1869 465 3016 +1870 777 3095 +1871 3274 3289 +1872 3265 9949 +1873 7281 1291 +1874 6770 6025 +1875 8124 9010 +1876 8107 9407 +1877 3287 123 +1878 7924 6319 +1879 8962 2592 +1880 4592 5814 +1881 9212 304 +1882 4951 8400 +1883 719 1926 +1884 9335 3530 +1885 5935 5679 +1886 7537 301 +1887 4176 3893 +1888 1878 5566 +1889 1372 1790 +1890 2544 6927 +1891 9677 1620 +1892 682 4206 +1893 5806 4179 +1894 5184 3188 +1895 830 9223 +1896 6468 2226 +1897 405 4639 +1898 5717 1432 +1899 8762 3719 +1900 1910 8351 +1901 1498 5205 +1902 672 7609 +1903 371 366 +1904 7421 6836 +1905 2318 4591 +1906 6899 3424 +1907 3137 966 +1908 5230 1399 +1909 2616 1932 +1910 2804 2757 +1911 2518 1272 +1912 14 8917 +1913 5675 1263 +1914 4889 6088 +1915 7509 5551 +1916 124 9915 +1917 9311 4544 +1918 4219 3259 +1919 9753 7680 +1920 9303 5354 +1921 9427 5758 +1922 5333 6270 +1923 2497 6110 +1924 5236 5643 +1925 4924 6797 +1926 4890 4665 +1927 642 155 +1928 1456 221 +1929 314 1844 +1930 479 5777 +1931 9352 5660 +1932 661 7290 +1933 4994 3968 +1934 6728 996 +1935 1423 8515 +1936 977 1405 +1937 6203 8442 +1938 2794 3064 +1939 2572 7999 +1940 1538 7794 +1941 6616 15 +1942 7536 8765 +1943 9854 2971 +1944 5268 4777 +1945 9551 8147 +1946 3390 1372 +1947 6062 9023 +1948 1872 6784 +1949 9256 501 +1950 5862 8055 +1951 2087 4036 +1952 6973 227 +1953 3205 9383 +1954 6933 3741 +1955 5088 8158 +1956 8037 7939 +1957 9313 1133 +1958 700 6781 +1959 7711 1091 +1960 1242 4733 +1961 4416 7367 +1962 977 6228 +1963 7680 7777 +1964 524 6202 +1965 8361 9715 +1966 8709 996 +1967 459 7006 +1968 3069 9469 +1969 5262 9239 +1970 8309 7297 +1971 3634 1875 +1972 5587 1279 +1973 6614 1768 +1974 2666 5591 +1975 4384 4785 +1976 9963 1818 +1977 7803 8352 +1978 9137 9510 +1979 3686 7205 +1980 4557 3585 +1981 614 4856 +1982 1645 8123 +1983 5752 7832 +1984 3767 1618 +1985 1112 2303 +1986 857 4977 +1987 7309 7439 +1988 7955 7101 +1989 1769 8414 +1990 2252 7404 +1991 8024 8299 +1992 2081 2511 +1993 7739 7091 +1994 309 7537 +1995 3334 3452 +1996 3363 6493 +1997 2239 7630 +1998 7027 5709 +1999 5751 3897 +2000 2050 3898 +2001 9140 5565 +2002 6216 2508 +2003 5469 6981 +2004 6601 5487 +2005 6113 2924 +2006 6955 9498 +2007 2126 3532 +2008 5537 4779 +2009 5803 7489 +2010 8364 513 +2011 459 1765 +2012 1943 3925 +2013 6066 4934 +2014 4186 8574 +2015 9764 8967 +2016 1958 7463 +2017 1382 8921 +2018 4910 353 +2019 3619 6716 +2020 5642 5870 +2021 3582 617 +2022 467 198 +2023 9932 6164 +2024 9394 8493 +2025 9174 2487 +2026 9484 2810 +2027 6054 2430 +2028 3902 7992 +2029 1886 9151 +2030 6217 5896 +2031 4802 2552 +2032 1410 9830 +2033 2370 4151 +2034 5419 6379 +2035 2366 5341 +2036 2824 5933 +2037 2435 5219 +2038 6435 1669 +2039 8438 5739 +2040 7596 6209 +2041 1394 7152 +2042 3723 2425 +2043 7245 7671 +2044 9962 6843 +2045 8930 11 +2046 7523 4073 +2047 3094 6862 +2048 132 3119 +2049 6411 9797 +2050 3223 7623 +2051 1672 8459 +2052 7150 559 +2053 556 2621 +2054 7568 1390 +2055 855 4743 +2056 8418 8294 +2057 8285 2675 +2058 1778 8475 +2059 2809 286 +2060 8510 6084 +2061 3917 7044 +2062 835 7311 +2063 4305 3505 +2064 4163 5115 +2065 2441 9726 +2066 3103 8402 +2067 586 4548 +2068 6113 649 +2069 1550 142 +2070 1706 8752 +2071 8481 9851 +2072 3407 9610 +2073 1832 4130 +2074 6509 6759 +2075 2522 3697 +2076 2814 5232 +2077 6477 7313 +2078 61 4143 +2079 866 3732 +2080 2102 5129 +2081 7253 7999 +2082 2455 4022 +2083 3559 3811 +2084 7857 780 +2085 3482 5916 +2086 8807 784 +2087 5994 3745 +2088 2528 3224 +2089 1766 9886 +2090 580 9011 +2091 5569 4412 +2092 5219 7817 +2093 149 1193 +2094 7733 6280 +2095 1490 8686 +2096 2057 3279 +2097 4690 7768 +2098 7528 779 +2099 8109 184 +2100 5940 8090 +2101 7292 8784 +2102 4200 9627 +2103 214 670 +2104 8955 5014 +2105 5269 5453 +2106 2132 3618 +2107 1548 9878 +2108 5872 78 +2109 6315 1649 +2110 2907 4785 +2111 4452 7378 +2112 3651 7380 +2113 3052 2536 +2114 42 5347 +2115 8751 5664 +2116 636 8983 +2117 7255 6245 +2118 3949 1223 +2119 4197 1402 +2120 1987 9353 +2121 3158 5178 +2122 4744 6407 +2123 308 1817 +2124 209 611 +2125 1264 6118 +2126 230 2281 +2127 1552 3222 +2128 9845 654 +2129 5821 6477 +2130 3821 2147 +2131 5754 2662 +2132 4278 7320 +2133 9314 8306 +2134 8062 455 +2135 9691 991 +2136 7832 9407 +2137 1615 3351 +2138 589 926 +2139 4576 4672 +2140 1780 186 +2141 9760 9973 +2142 6118 5629 +2143 692 735 +2144 6117 3364 +2145 7033 4527 +2146 7601 1120 +2147 1418 4202 +2148 6224 3273 +2149 9610 4942 +2150 5186 5647 +2151 4076 8956 +2152 9093 4428 +2153 786 5129 +2154 5301 1381 +2155 7344 1059 +2156 3400 2479 +2157 4141 9318 +2158 2769 9007 +2159 7444 9267 +2160 5575 7292 +2161 9127 6871 +2162 2695 3677 +2163 1203 1556 +2164 6038 6332 +2165 5428 1028 +2166 4844 7180 +2167 4469 476 +2168 2232 2481 +2169 4704 164 +2170 2225 2810 +2171 7438 1163 +2172 446 5475 +2173 3107 4792 +2174 4328 6940 +2175 595 9797 +2176 138 9152 +2177 4311 3369 +2178 8971 4139 +2179 7298 330 +2180 6700 8645 +2181 7952 272 +2182 6159 4828 +2183 4846 4578 +2184 2528 284 +2185 3542 9415 +2186 2417 981 +2187 119 3513 +2188 53 501 +2189 803 143 +2190 4555 9077 +2191 5514 7426 +2192 6071 6147 +2193 3097 9181 +2194 246 4698 +2195 2543 8779 +2196 5384 882 +2197 2304 4932 +2198 9160 1948 +2199 9004 5960 +2200 2126 2420 +2201 6648 8375 +2202 792 1919 +2203 8642 6415 +2204 7361 7332 +2205 776 5950 +2206 7388 1378 +2207 2180 2744 +2208 9960 2062 +2209 8201 1767 +2210 4437 2513 +2211 8243 8553 +2212 7202 3323 +2213 9601 9499 +2214 4776 5428 +2215 5307 1814 +2216 6834 6842 +2217 5636 5978 +2218 3654 7200 +2219 8682 6219 +2220 8736 3145 +2221 3157 2402 +2222 5090 1391 +2223 9007 3235 +2224 5613 5921 +2225 6078 6251 +2226 6241 1160 +2227 6655 2010 +2228 5023 951 +2229 3819 5646 +2230 7456 2107 +2231 3822 6907 +2232 237 3627 +2233 3388 2397 +2234 64 8807 +2235 5454 1961 +2236 8329 9890 +2237 4779 333 +2238 466 5579 +2239 1590 8127 +2240 2432 579 +2241 8220 8637 +2242 681 9244 +2243 7695 4844 +2244 5136 5483 +2245 8810 8232 +2246 8351 374 +2247 1640 5972 +2248 3796 6307 +2249 6586 3696 +2250 9018 2526 +2251 78 1341 +2252 6009 9753 +2253 7795 277 +2254 7640 2410 +2255 6781 9654 +2256 6885 8232 +2257 8182 6528 +2258 5453 9957 +2259 5368 2409 +2260 9482 6641 +2261 2629 4466 +2262 8764 1559 +2263 538 2303 +2264 1954 8160 +2265 7390 5976 +2266 7334 4524 +2267 838 205 +2268 4506 490 +2269 1325 7756 +2270 7087 4681 +2271 5576 6900 +2272 1492 5744 +2273 4530 5376 +2274 6448 5879 +2275 4308 4565 +2276 1161 7354 +2277 6354 1787 +2278 6921 2652 +2279 8675 9023 +2280 5382 388 +2281 1097 9467 +2282 3958 8340 +2283 809 2258 +2284 7221 5490 +2285 7943 8551 +2286 7229 5164 +2287 2562 9569 +2288 4121 4295 +2289 5718 2876 +2290 4631 7377 +2291 4719 5933 +2292 5810 4313 +2293 3450 1606 +2294 7671 939 +2295 3234 2674 +2296 4004 6728 +2297 9819 4765 +2298 9503 5165 +2299 2618 3566 +2300 8544 9469 +2301 6351 6446 +2302 3046 3255 +2303 6861 7336 +2304 3574 1485 +2305 8485 7480 +2306 595 1843 +2307 7492 354 +2308 287 9320 +2309 6077 5988 +2310 4606 8945 +2311 3738 2329 +2312 1451 8359 +2313 2943 5511 +2314 7619 2439 +2315 9401 1797 +2316 6455 7643 +2317 3384 5247 +2318 2641 3334 +2319 9222 3020 +2320 8737 9117 +2321 3637 3739 +2322 7001 4820 +2323 1207 7654 +2324 1629 2889 +2325 3218 2776 +2326 4426 451 +2327 8307 1703 +2328 9505 2210 +2329 3584 5798 +2330 3078 9911 +2331 7764 7432 +2332 1296 4862 +2333 2214 6070 +2334 9030 2854 +2335 2112 2783 +2336 3490 337 +2337 6087 9996 +2338 1334 7431 +2339 6033 8030 +2340 2710 5304 +2341 8415 8943 +2342 1467 9715 +2343 8503 8130 +2344 5820 7440 +2345 7930 1789 +2346 340 9040 +2347 6778 1608 +2348 6705 7196 +2349 2746 3761 +2350 3246 7139 +2351 4995 3514 +2352 9723 176 +2353 955 4035 +2354 7166 4393 +2355 7256 7629 +2356 9608 1832 +2357 4573 7332 +2358 4692 7158 +2359 2254 2179 +2360 3602 1683 +2361 7005 5843 +2362 6382 2163 +2363 6087 3032 +2364 7473 1847 +2365 5592 9097 +2366 1358 4851 +2367 3615 1604 +2368 7536 7840 +2369 501 6207 +2370 7033 6277 +2371 9229 4059 +2372 6621 3639 +2373 6219 2767 +2374 9576 3014 +2375 7672 8822 +2376 9458 2159 +2377 3239 7985 +2378 5578 1833 +2379 2819 4800 +2380 9600 5278 +2381 5877 782 +2382 6364 5055 +2383 6751 8657 +2384 5600 1580 +2385 4050 9265 +2386 9910 5424 +2387 2594 5493 +2388 9094 817 +2389 7793 490 +2390 9335 7919 +2391 7066 8920 +2392 184 4858 +2393 7729 4632 +2394 2057 7819 +2395 9761 4415 +2396 468 9055 +2397 6333 766 +2398 5363 7935 +2399 2641 8340 +2400 7638 2623 +2401 5496 3765 +2402 8037 8772 +2403 986 4872 +2404 7315 7232 +2405 8400 5228 +2406 2082 1491 +2407 7699 482 +2408 1296 6012 +2409 5115 4491 +2410 4734 6362 +2411 7217 3637 +2412 8718 8980 +2413 2473 6451 +2414 3599 6241 +2415 4676 1543 +2416 5669 7148 +2417 9278 2702 +2418 592 8404 +2419 5414 8799 +2420 6941 9356 +2421 3767 1432 +2422 1036 9345 +2423 1676 7738 +2424 3597 1540 +2425 5284 4190 +2426 854 1744 +2427 1695 6906 +2428 7974 189 +2429 7593 2848 +2430 5138 2472 +2431 4812 4769 +2432 3085 2926 +2433 3409 5415 +2434 3489 6222 +2435 6069 8205 +2436 3510 1087 +2437 2713 8513 +2438 3281 5702 +2439 500 6322 +2440 3412 9574 +2441 767 5724 +2442 20 1419 +2443 7355 5477 +2444 8018 1156 +2445 284 6099 +2446 4125 6232 +2447 6566 503 +2448 9670 0 +2449 2392 3732 +2450 3659 8519 +2451 7600 202 +2452 2480 2521 +2453 4497 4312 +2454 4255 5973 +2455 2725 9386 +2456 4291 9944 +2457 3790 3489 +2458 7833 5009 +2459 3812 153 +2460 1939 3045 +2461 141 2666 +2462 5506 6105 +2463 9324 7989 +2464 3284 9185 +2465 7129 851 +2466 4954 7768 +2467 263 9814 +2468 9950 1338 +2469 4728 5274 +2470 1737 5946 +2471 2258 1528 +2472 3366 2663 +2473 2891 9695 +2474 2783 2155 +2475 2400 4519 +2476 4489 4581 +2477 8095 1480 +2478 3101 5726 +2479 543 2739 +2480 779 4751 +2481 6227 8552 +2482 5699 8861 +2483 486 6567 +2484 6173 9938 +2485 9448 2268 +2486 4373 377 +2487 6392 1675 +2488 140 6934 +2489 305 6703 +2490 1073 4555 +2491 513 4014 +2492 8559 2956 +2493 4263 4297 +2494 2338 8711 +2495 2381 8037 +2496 5244 3482 +2497 1333 6633 +2498 5677 4442 +2499 4571 1698 +2500 6566 8346 +2501 5271 6309 +2502 1479 5194 +2503 2005 5342 +2504 2891 8030 +2505 7374 6263 +2506 8926 8351 +2507 4127 2393 +2508 1131 4222 +2509 7566 7089 +2510 7038 7737 +2511 6620 6046 +2512 3962 5531 +2513 3497 8187 +2514 785 7382 +2515 434 1164 +2516 1271 5390 +2517 828 3790 +2518 4694 9391 +2519 8005 7587 +2520 4997 2895 +2521 6034 8154 +2522 7141 824 +2523 85 8668 +2524 3413 6007 +2525 138 9771 +2526 1010 166 +2527 8442 1293 +2528 5954 5476 +2529 182 4731 +2530 1128 7693 +2531 4860 9623 +2532 8789 8670 +2533 5658 901 +2534 6958 420 +2535 9323 7342 +2536 5553 1448 +2537 4697 5636 +2538 5587 6543 +2539 6522 7208 +2540 539 1497 +2541 1232 5736 +2542 4979 5599 +2543 8397 2069 +2544 4319 830 +2545 2373 4897 +2546 6485 7535 +2547 2057 875 +2548 2065 6485 +2549 5245 8617 +2550 122 3724 +2551 163 9750 +2552 1797 2966 +2553 1820 6788 +2554 3811 3671 +2555 8619 8461 +2556 1310 6175 +2557 6218 2025 +2558 7384 6930 +2559 7433 9150 +2560 7027 1070 +2561 7472 9703 +2562 2844 6057 +2563 7878 3314 +2564 7650 6511 +2565 5876 4695 +2566 218 7904 +2567 2437 8282 +2568 5713 1689 +2569 3439 2899 +2570 3816 9013 +2571 6122 5576 +2572 9944 9962 +2573 2874 633 +2574 1916 8728 +2575 9179 853 +2576 8973 6495 +2577 2136 1409 +2578 2662 285 +2579 1209 2595 +2580 5460 8822 +2581 1563 2702 +2582 8888 5528 +2583 1907 1040 +2584 4254 3476 +2585 6038 4331 +2586 9901 5192 +2587 3419 3270 +2588 4415 697 +2589 9736 9597 +2590 4384 4848 +2591 2264 6661 +2592 7004 489 +2593 810 5866 +2594 4604 1576 +2595 2100 1601 +2596 5945 2579 +2597 8223 5816 +2598 3353 7027 +2599 5353 8943 +2600 5851 2191 +2601 5039 6790 +2602 800 6774 +2603 3385 2820 +2604 3121 6408 +2605 1776 9971 +2606 5608 7923 +2607 1797 1166 +2608 3613 8200 +2609 1593 5836 +2610 6043 9764 +2611 3765 7777 +2612 9086 9778 +2613 8515 8787 +2614 3408 5577 +2615 3342 5856 +2616 993 7760 +2617 5471 6628 +2618 7527 9120 +2619 7851 9152 +2620 627 148 +2621 3138 9834 +2622 4390 6669 +2623 7351 3935 +2624 1666 9603 +2625 8356 6170 +2626 3596 8420 +2627 2483 1904 +2628 1632 2774 +2629 4858 687 +2630 1399 1505 +2631 4882 4405 +2632 9025 4898 +2633 1257 149 +2634 6915 2378 +2635 4219 1428 +2636 4157 8739 +2637 6657 9107 +2638 7784 2809 +2639 1478 3030 +2640 2330 918 +2641 2822 509 +2642 2676 2190 +2643 7141 7238 +2644 6317 4749 +2645 4058 8782 +2646 1143 9224 +2647 7311 8624 +2648 8687 2291 +2649 7431 4058 +2650 5784 3263 +2651 9530 9930 +2652 6782 229 +2653 4992 4848 +2654 7725 2906 +2655 7913 2134 +2656 7864 9832 +2657 4493 8943 +2658 9048 5600 +2659 225 4336 +2660 3535 880 +2661 793 3242 +2662 8307 3302 +2663 265 7678 +2664 5601 6808 +2665 1340 9868 +2666 433 6705 +2667 5208 4557 +2668 4710 6319 +2669 7598 4462 +2670 5440 7477 +2671 9873 2807 +2672 4287 9677 +2673 5166 453 +2674 8978 180 +2675 1014 5592 +2676 9105 4433 +2677 8425 5819 +2678 7017 7964 +2679 5038 340 +2680 4899 5919 +2681 1504 9958 +2682 3982 7717 +2683 8100 7388 +2684 2925 1147 +2685 8585 8851 +2686 6128 3000 +2687 3899 6358 +2688 9793 5069 +2689 8418 1401 +2690 101 5544 +2691 467 2395 +2692 1796 7470 +2693 4591 3549 +2694 6344 1204 +2695 4330 8863 +2696 9779 8309 +2697 436 8133 +2698 8699 9574 +2699 140 4508 +2700 6222 4165 +2701 8706 7367 +2702 7545 1123 +2703 4073 4656 +2704 8159 6323 +2705 3651 6072 +2706 5719 5999 +2707 8779 596 +2708 5049 5449 +2709 5920 2139 +2710 8766 718 +2711 9862 3533 +2712 7889 9032 +2713 9679 3713 +2714 6945 4091 +2715 6743 2850 +2716 4324 5600 +2717 2880 3047 +2718 2004 624 +2719 3450 7109 +2720 6628 6818 +2721 1796 8 +2722 5450 1916 +2723 2446 895 +2724 4690 135 +2725 3493 2062 +2726 4812 6206 +2727 7369 4732 +2728 5333 7463 +2729 964 5025 +2730 5997 7404 +2731 1166 3574 +2732 3141 8680 +2733 1757 2862 +2734 9347 9483 +2735 7030 6190 +2736 5007 8674 +2737 2093 5200 +2738 3408 7103 +2739 7949 8670 +2740 9424 6061 +2741 3754 8447 +2742 8992 4747 +2743 5578 6717 +2744 6044 5153 +2745 3316 2713 +2746 4740 3953 +2747 8189 4651 +2748 3229 2668 +2749 1563 3056 +2750 1495 7117 +2751 2517 1379 +2752 9674 6009 +2753 8976 6837 +2754 9530 9341 +2755 8564 928 +2756 1569 4113 +2757 1045 2798 +2758 3342 5080 +2759 2223 1300 +2760 8411 8801 +2761 7497 2611 +2762 285 344 +2763 4246 8853 +2764 915 7423 +2765 8660 2810 +2766 4920 3619 +2767 4210 6449 +2768 3938 5916 +2769 5841 5063 +2770 9806 4970 +2771 3005 6157 +2772 7972 8410 +2773 5551 1913 +2774 8138 3131 +2775 7378 9482 +2776 5140 3681 +2777 9366 9669 +2778 6803 4167 +2779 9146 5701 +2780 9109 3293 +2781 277 3274 +2782 5371 9908 +2783 6264 8010 +2784 4039 4813 +2785 8635 6746 +2786 871 2569 +2787 1180 3773 +2788 934 9591 +2789 6510 4791 +2790 7203 5952 +2791 5030 1578 +2792 8870 2659 +2793 1281 1596 +2794 2575 9144 +2795 8052 3425 +2796 8330 7953 +2797 3201 309 +2798 7077 9657 +2799 4719 393 +2800 9719 4235 +2801 4852 8277 +2802 27 5430 +2803 2546 8040 +2804 260 5242 +2805 6763 8393 +2806 4914 7228 +2807 1134 5292 +2808 6356 8722 +2809 5090 5101 +2810 9757 8162 +2811 7054 5540 +2812 2439 9634 +2813 9215 8793 +2814 5210 6510 +2815 5131 3312 +2816 4111 1272 +2817 3020 7319 +2818 3455 433 +2819 9474 9553 +2820 5464 333 +2821 702 8068 +2822 7119 1596 +2823 4769 1024 +2824 2228 4336 +2825 935 1919 +2826 4042 7187 +2827 4996 8198 +2828 4867 9551 +2829 4092 7909 +2830 4960 913 +2831 3603 3924 +2832 8461 9936 +2833 9154 9444 +2834 9924 3481 +2835 1648 2788 +2836 7170 7630 +2837 8416 5553 +2838 9948 7810 +2839 8952 6737 +2840 7054 9135 +2841 7967 9570 +2842 6187 6103 +2843 2443 3785 +2844 1880 6755 +2845 3404 1667 +2846 7079 350 +2847 8603 5827 +2848 6945 762 +2849 5037 1462 +2850 5010 5022 +2851 1727 5442 +2852 7629 2656 +2853 7909 7510 +2854 4039 5566 +2855 8624 3310 +2856 9255 8795 +2857 8485 8054 +2858 7355 7526 +2859 5926 6186 +2860 9476 9890 +2861 9830 2983 +2862 137 7096 +2863 1616 4679 +2864 793 8770 +2865 4983 5309 +2866 8408 3823 +2867 7942 4573 +2868 4463 6315 +2869 8219 5948 +2870 304 4339 +2871 9515 7271 +2872 6313 6281 +2873 6542 6106 +2874 4881 2972 +2875 8624 6644 +2876 5145 3769 +2877 1335 9604 +2878 8641 5239 +2879 4775 8905 +2880 3220 4929 +2881 4845 6053 +2882 5436 8010 +2883 6820 7336 +2884 9682 6998 +2885 5098 5110 +2886 5509 6644 +2887 8759 2436 +2888 9238 6921 +2889 1922 2554 +2890 8415 7291 +2891 2525 3875 +2892 2873 5638 +2893 1346 5851 +2894 2799 5526 +2895 7324 7916 +2896 2788 6514 +2897 8187 909 +2898 7739 7415 +2899 8082 4260 +2900 3930 8050 +2901 5135 1317 +2902 6507 9743 +2903 7232 9686 +2904 8424 6005 +2905 1261 4002 +2906 6946 880 +2907 4459 2911 +2908 8727 5851 +2909 7785 3781 +2910 357 3463 +2911 190 1326 +2912 5137 945 +2913 2756 7443 +2914 5070 7295 +2915 546 138 +2916 9663 5044 +2917 1953 3410 +2918 9167 7522 +2919 2814 3355 +2920 3493 2744 +2921 6793 9243 +2922 5175 2751 +2923 6158 7248 +2924 3050 6311 +2925 290 7884 +2926 6990 3245 +2927 9578 6861 +2928 3661 4522 +2929 6370 2002 +2930 7995 271 +2931 479 5224 +2932 6952 3004 +2933 2688 7224 +2934 2323 3712 +2935 3430 5653 +2936 4992 2664 +2937 1882 829 +2938 2626 6119 +2939 8024 2349 +2940 3108 8678 +2941 8149 1454 +2942 967 2808 +2943 10 1945 +2944 1782 6709 +2945 6331 2844 +2946 4272 2570 +2947 1773 6001 +2948 9659 9818 +2949 3665 202 +2950 996 4795 +2951 9733 5526 +2952 9536 1017 +2953 7301 7733 +2954 829 6293 +2955 6311 8893 +2956 1590 3248 +2957 2297 6670 +2958 2419 4162 +2959 9042 5393 +2960 7740 5809 +2961 2360 968 +2962 6197 912 +2963 8863 6669 +2964 8916 5138 +2965 5362 5663 +2966 2482 6339 +2967 9851 1605 +2968 402 8595 +2969 763 6197 +2970 7027 9559 +2971 1518 1230 +2972 3498 7454 +2973 1304 3671 +2974 3223 255 +2975 9669 6533 +2976 2468 8131 +2977 6237 7960 +2978 869 9908 +2979 2199 1006 +2980 4891 6727 +2981 7997 6635 +2982 7627 6416 +2983 2402 7478 +2984 3570 4190 +2985 7390 2897 +2986 368 9391 +2987 7877 9575 +2988 5963 3139 +2989 5945 2550 +2990 8902 4964 +2991 7175 5133 +2992 824 3937 +2993 473 5208 +2994 7982 162 +2995 8572 5583 +2996 4777 3942 +2997 2636 9733 +2998 3139 3664 +2999 6955 4875 +3000 7003 173 +3001 2389 458 +3002 1418 3726 +3003 3465 2246 +3004 5336 1383 +3005 3709 3453 +3006 1946 562 +3007 2376 2161 +3008 9495 9197 +3009 1933 8776 +3010 383 8332 +3011 5043 5471 +3012 7460 9471 +3013 9518 5668 +3014 9688 8473 +3015 7228 2148 +3016 4697 7470 +3017 2259 9758 +3018 9075 3916 +3019 8298 3110 +3020 5658 1298 +3021 4830 2465 +3022 7264 630 +3023 3873 5822 +3024 535 1774 +3025 15 4154 +3026 1856 9490 +3027 9177 1933 +3028 7907 8596 +3029 8997 9259 +3030 297 78 +3031 6730 2930 +3032 9578 4275 +3033 3797 2935 +3034 7334 3024 +3035 3158 6413 +3036 7762 8296 +0 1 1973 +0 2 4253 +0 3 5341 +0 5 4066 +0 6 2702 +0 9 4393 +0 10 2468 +0 11 4341 +0 12 5043 +0 14 2905 +0 17 3055 +0 18 4648 +0 20 4520 +0 22 7409 +0 24 3145 +0 26 4205 +0 30 5293 +0 37 4413 +0 44 4078 +0 45 4901 +0 46 1894 +0 48 8847 +0 49 6845 +0 54 2686 +0 56 5786 +0 58 973 +0 61 2925 +0 73 4298 +0 76 2450 +0 79 1631 +0 82 3312 +0 83 5139 +0 84 2599 +0 85 847 +0 93 4235 +0 98 4195 +0 106 1640 +0 109 2641 +0 114 2905 +0 115 4772 +0 116 6813 +0 120 2821 +0 121 2646 +0 133 4486 +0 134 7645 +0 135 2326 +0 146 4755 +0 147 5478 +0 149 6110 +0 150 4296 +0 154 2330 +0 155 5177 +0 156 2399 +0 160 2423 +0 169 6667 +0 175 7449 +0 181 5571 +0 202 5339 +0 211 6187 +0 225 1272 +0 230 5129 +0 233 7542 +0 236 1659 +0 237 5042 +0 241 5405 +0 247 3735 +0 250 4583 +0 251 872 +0 252 6803 +0 256 1896 +0 261 5218 +0 270 3248 +0 272 5821 +0 288 8682 +0 295 4190 +0 297 1560 +0 302 4017 +0 304 5102 +0 305 1268 +0 306 5971 +0 312 7082 +0 313 4722 +0 314 4796 +0 320 3926 +0 321 8670 +0 324 412 +0 329 5085 +0 338 4186 +0 351 5584 +0 352 1260 +0 353 1939 +0 356 5553 +0 357 4770 +0 377 6125 +0 379 5550 +0 382 2314 +0 388 2565 +0 398 2788 +0 401 6535 +0 406 4716 +0 412 5037 +0 424 3677 +0 429 1076 +0 433 2432 +0 439 5698 +0 443 525 +0 444 8356 +0 448 3404 +0 451 6563 +0 454 3297 +0 455 4997 +0 468 7175 +0 471 4773 +0 472 7469 +0 473 2195 +0 486 3719 +0 490 4863 +0 500 7616 +0 503 4380 +0 507 1182 +0 509 6627 +0 513 4390 +0 516 3896 +0 517 2910 +0 520 3446 +0 532 2405 +0 533 2676 +0 538 2060 +0 539 1921 +0 545 5050 +0 551 4167 +0 555 2958 +0 558 5702 +0 563 815 +0 568 4622 +0 581 4350 +0 587 4651 +0 588 964 +0 592 1975 +0 594 2539 +0 595 3246 +0 603 3889 +0 604 1734 +0 613 2342 +0 616 783 +0 622 4874 +0 623 1473 +0 624 2395 +0 631 2609 +0 636 275 +0 638 1740 +0 640 4501 +0 642 4798 +0 649 8211 +0 653 1967 +0 657 3320 +0 658 5641 +0 663 3736 +0 674 1412 +0 676 5675 +0 677 5332 +0 686 3533 +0 693 4816 +0 695 5247 +0 699 395 +0 714 1362 +0 739 3083 +0 741 844 +0 744 2447 +0 745 2077 +0 747 5991 +0 755 5643 +0 761 4951 +0 762 4859 +0 769 5577 +0 770 3826 +0 771 2093 +0 775 1814 +0 780 2254 +0 783 3492 +0 795 2267 +0 801 2009 +0 807 8617 +0 817 4506 +0 818 3924 +0 822 3290 +0 824 4898 +0 828 3712 +0 843 4320 +0 844 851 +0 850 4814 +0 853 4868 +0 859 5405 +0 861 6090 +0 868 5717 +0 871 5196 +0 890 3958 +0 893 2408 +0 895 3561 +0 905 7027 +0 907 1648 +0 910 4093 +0 913 2128 +0 914 4128 +0 915 4197 +0 922 1149 +0 923 1891 +0 924 2823 +0 927 2947 +0 933 6039 +0 939 4433 +0 943 8800 +0 946 6336 +0 947 8536 +0 956 3058 +0 958 5959 +0 960 1283 +0 962 2830 +0 970 4115 +0 976 5292 +0 979 2205 +0 988 2264 +0 991 7220 +0 995 6039 +0 996 1350 +0 1003 5679 +0 1004 3153 +0 1012 3790 +0 1014 7718 +0 1018 3251 +0 1024 4174 +0 1025 7306 +0 1026 4569 +0 1028 4956 +0 1034 2974 +0 1044 2864 +0 1047 1991 +0 1052 6256 +0 1053 2878 +0 1059 4864 +0 1064 6758 +0 1072 7471 +0 1075 4690 +0 1077 5140 +0 1081 5437 +0 1086 3751 +0 1089 4165 +0 1090 1192 +0 1114 2873 +0 1116 2318 +0 1120 4757 +0 1121 4119 +0 1122 5417 +0 1126 3811 +0 1130 6413 +0 1142 6981 +0 1151 2220 +0 1162 6757 +0 1164 6039 +0 1184 1979 +0 1185 5820 +0 1190 4886 +0 1194 5895 +0 1198 5160 +0 1202 5991 +0 1206 3681 +0 1211 7396 +0 1215 4940 +0 1220 1935 +0 1223 6847 +0 1225 6948 +0 1230 3585 +0 1237 4341 +0 1247 4708 +0 1253 3742 +0 1259 5425 +0 1265 1246 +0 1269 2779 +0 1272 1309 +0 1279 1728 +0 1280 5813 +0 1282 7263 +0 1298 1870 +0 1308 6892 +0 1314 4352 +0 1321 2464 +0 1323 5735 +0 1326 2892 +0 1327 6128 +0 1347 3932 +0 1353 6714 +0 1357 6010 +0 1360 1166 +0 1366 7989 +0 1379 6338 +0 1381 5005 +0 1392 8074 +0 1393 6482 +0 1395 1359 +0 1397 3190 +0 1407 8138 +0 1415 2669 +0 1426 6140 +0 1427 5582 +0 1433 3371 +0 1439 4457 +0 1446 7892 +0 1458 4179 +0 1459 1710 +0 1471 2025 +0 1476 3712 +0 1483 8020 +0 1485 4364 +0 1496 6430 +0 1503 6326 +0 1508 5993 +0 1510 7250 +0 1514 5399 +0 1517 3800 +0 1519 6126 +0 1524 3249 +0 1527 7379 +0 1547 6468 +0 1548 3225 +0 1549 3980 +0 1550 4399 +0 1556 2706 +0 1563 3769 +0 1584 6127 +0 1592 3896 +0 1595 2457 +0 1602 5072 +0 1604 5779 +0 1613 2487 +0 1616 7174 +0 1625 8633 +0 1626 7330 +0 1629 2545 +0 1630 3894 +0 1633 6569 +0 1636 2751 +0 1639 1722 +0 1640 4119 +0 1656 3053 +0 1667 3850 +0 1671 2507 +0 1687 2725 +0 1690 3054 +0 1694 8120 +0 1699 7994 +0 1701 3933 +0 1763 2632 +0 1764 3041 +0 1765 4823 +0 1771 4433 +0 1784 4986 +0 1803 3745 +0 1804 4036 +0 1806 6099 +0 1823 7211 +0 1827 3193 +0 1828 5214 +0 1833 4935 +0 1834 5231 +0 1839 2961 +0 1842 4324 +0 1844 905 +0 1846 2615 +0 1847 4514 +0 1851 2139 +0 1858 1394 +0 1861 4222 +0 1866 6627 +0 1872 7839 +0 1880 3497 +0 1886 2893 +0 1896 878 +0 1905 3927 +0 1907 2908 +0 1915 3608 +0 1917 4227 +0 1926 2311 +0 1929 5348 +0 1931 4903 +0 1935 7359 +0 1941 2650 +0 1946 2491 +0 1966 3419 +0 1969 6775 +0 1971 2078 +0 1995 2491 +0 1996 4612 +0 2000 3848 +0 2002 592 +0 2005 664 +0 2022 5637 +0 2029 7653 +0 2030 3473 +0 2032 8478 +0 2038 1141 +0 2039 4310 +0 2043 5444 +0 2047 5066 +0 2051 7173 +0 2052 2447 +0 2057 2667 +0 2067 5449 +0 2074 4376 +0 2085 4055 +0 2094 4351 +0 2096 3657 +0 2098 2547 +0 2103 5703 +0 2108 2407 +0 2110 3568 +0 2116 8201 +0 2125 5683 +0 2143 5230 +0 2148 999 +0 2155 2225 +0 2156 2225 +0 2164 3881 +0 2166 4771 +0 2172 5986 +0 2175 8884 +0 2179 2718 +0 2184 3792 +0 2185 7247 +0 2189 5355 +0 2207 3455 +0 2209 2670 +0 2226 1450 +0 2233 2238 +0 2235 539 +0 2237 2301 +0 2241 6687 +0 2257 4793 +0 2258 7485 +0 2280 2099 +0 2296 4553 +0 2313 4052 +0 2315 3836 +0 2322 2720 +0 2336 3020 +0 2338 6557 +0 2345 2404 +0 2349 3153 +0 2354 2461 +0 2363 725 +0 2369 6340 +0 2376 3845 +0 2381 1709 +0 2384 893 +0 2386 5202 +0 2388 3843 +0 2404 5050 +0 2411 1972 +0 2417 3660 +0 2418 7778 +0 2419 6329 +0 2437 6705 +0 2451 3009 +0 2454 3758 +0 2457 2097 +0 2459 2944 +0 2464 7108 +0 2465 2211 +0 2469 2941 +0 2482 6388 +0 2487 1106 +0 2488 7070 +0 2493 2276 +0 2496 1078 +0 2502 4959 +0 2508 4822 +0 2518 6980 +0 2523 8310 +0 2524 4169 +0 2525 9130 +0 2528 3020 +0 2529 5892 +0 2530 6889 +0 2531 7190 +0 2534 2447 +0 2535 6114 +0 2539 4819 +0 2550 5643 +0 2551 9098 +0 2559 6917 +0 2562 4536 +0 2570 6785 +0 2575 3905 +0 2576 5233 +0 2589 8225 +0 2593 5890 +0 2595 3631 +0 2596 337 +0 2618 6913 +0 2619 7040 +0 2633 4947 +0 2634 1293 +0 2647 6377 +0 2656 7692 +0 2671 4261 +0 2687 4251 +0 2688 4910 +0 2725 2171 +0 2727 2853 +0 2735 3973 +0 2745 2321 +0 2753 5502 +0 2759 3598 +0 2761 1877 +0 2769 2598 +0 2777 8110 +0 2784 2826 +0 2807 5302 +0 2811 3383 +0 2815 973 +0 2823 1682 +0 2831 2488 +0 2837 4156 +0 2845 2362 +0 2861 4235 +0 2865 2907 +0 2870 5638 +0 2885 2689 +0 2889 3703 +0 2891 3402 +0 2896 4937 +0 2913 5738 +0 2917 3789 +0 2924 4621 +0 2932 1429 +0 2958 3623 +0 2968 8047 +0 2969 6124 +0 2975 5730 +0 2977 5521 +0 2980 4316 +0 3006 4145 +0 3014 7246 +0 3026 7965 +0 107 6638 +0 308 5330 +0 296 4640 +0 333 2983 +0 593 7232 +0 1383 6119 +0 803 4369 +0 1674 4409 +0 1388 6519 +0 1117 2488 +0 564 6963 +0 831 6235 +0 255 5054 +0 78 2574 +0 491 3745 +0 269 5736 +0 60 7071 +0 1637 2327 +0 223 4335 +0 263 1784 +0 1023 4292 +0 409 1178 +0 218 1056 +0 27 3331 +0 867 2386 +0 925 6424 +0 81 5965 +0 782 7858 +0 788 868 +0 47 4424 +0 1608 4062 +0 903 8156 +0 204 4289 +0 1049 8006 +0 21 1390 +0 1686 2965 +0 578 305 +0 935 3372 +0 87 4747 +0 544 2876 +0 665 5575 +0 235 6425 +0 423 6932 +0 164 2157 +0 1231 1928 +0 476 2103 +0 7 7997 +0 99 4211 +0 703 1597 +0 957 2540 +0 634 4269 +0 842 7279 +0 841 5375 +0 1557 2983 +0 265 4681 +0 459 1390 +0 97 2194 +0 1536 3182 +0 4 4582 +0 370 917 +0 105 6381 +0 707 3218 +0 950 5188 +0 374 5649 +0 1221 3973 +0 57 1351 +0 857 3718 +0 300 6695 +0 920 2684 +0 367 3364 +0 1542 6068 +0 1418 1889 +0 418 572 +0 560 2461 +0 1277 4578 +0 244 6020 +0 477 4462 +0 142 5637 +0 530 3300 +0 1340 4144 +0 698 3829 +0 1311 4985 +0 396 7109 +0 728 3753 +0 127 2714 +0 1062 3916 +0 144 7547 +0 1097 5274 +0 219 6755 +0 88 4164 +0 350 8441 +0 1263 2466 +0 1155 5122 +0 336 2765 +0 67 3885 +0 185 4963 +0 1325 3034 +0 821 371 +0 607 2660 +0 493 2609 +0 289 7102 +0 1513 1246 +0 15 5297 +0 1404 2468 +0 1558 6729 +0 92 5839 +0 143 4578 +0 763 1924 +0 62 2458 +0 1411 7381 +0 39 5728 +0 90 3351 +0 178 4596 +0 213 3726 +0 620 1067 +0 1134 559 +0 1233 4813 +0 641 6013 +0 1294 2381 +0 23 6262 +0 373 7250 +0 340 4575 +0 1605 3716 +0 1367 6165 +0 436 7736 +0 1200 4253 +0 1434 3090 +0 290 3467 +0 1432 3773 +0 577 8061 +0 1682 2262 +0 865 1718 +0 200 6626 +0 277 2135 +0 648 5437 +0 190 3200 +0 1020 3489 +0 499 7537 +0 284 5304 +0 1010 5705 +0 1437 6596 +1 8 1033 +1 23 4649 +1 36 5931 +1 38 1745 +1 39 4569 +1 43 2685 +1 64 6234 +1 67 5749 +1 71 613 +1 94 1623 +1 99 5971 +1 101 4910 +1 103 3245 +1 118 6639 +1 124 5076 +1 130 2240 +1 140 6714 +1 141 5929 +1 142 3674 +1 158 3651 +1 161 1446 +1 163 3376 +1 167 3684 +1 195 6506 +1 199 2871 +1 213 3459 +1 216 3994 +1 219 5122 +1 238 4817 +1 245 1794 +1 248 3177 +1 263 2446 +1 284 4604 +1 291 7293 +1 294 4315 +1 307 4791 +1 326 3304 +1 331 3411 +1 348 5983 +1 354 4028 +1 358 3786 +1 378 288 +1 384 2891 +1 395 5640 +1 397 5329 +1 411 3458 +1 450 6318 +1 464 4666 +1 475 5074 +1 496 3548 +1 498 3358 +1 501 4415 +1 519 3883 +1 521 3041 +1 540 1868 +1 542 2953 +1 553 4776 +1 576 3654 +1 606 5506 +1 641 5664 +1 662 3490 +1 683 5890 +1 698 2002 +1 704 4913 +1 715 4373 +1 717 5652 +1 730 3335 +1 734 4329 +1 777 2279 +1 785 3547 +1 787 2910 +1 799 2972 +1 806 3471 +1 809 364 +1 819 1136 +1 825 3234 +1 831 4306 +1 835 2138 +1 836 4642 +1 866 2400 +1 876 5049 +1 880 4540 +1 900 4087 +1 911 1738 +1 921 3855 +1 930 3706 +1 937 4130 +1 982 1982 +1 1005 2328 +1 1016 5158 +1 1031 4299 +1 1048 6893 +1 1055 3824 +1 1065 3469 +1 1083 6943 +1 1085 3077 +1 1111 5282 +1 1153 4441 +1 1186 4455 +1 1208 2537 +1 1218 1565 +1 1222 5712 +1 1227 1681 +1 1243 3319 +1 1250 2956 +1 1251 4040 +1 1257 5780 +1 1277 4287 +1 1285 4285 +1 1288 596 +1 1291 5747 +1 1309 2944 +1 1310 1446 +1 1315 5348 +1 1342 5690 +1 1343 3681 +1 1363 2759 +1 1367 5336 +1 1376 2123 +1 1377 3447 +1 1388 5317 +1 1389 4440 +1 1414 5862 +1 1422 2374 +1 1430 5417 +1 1435 5527 +1 1442 5103 +1 1465 3249 +1 1473 4621 +1 1481 3411 +1 1489 2587 +1 1507 4404 +1 1542 4094 +1 1545 4614 +1 1560 6245 +1 1576 5456 +1 1585 1412 +1 1607 4589 +1 1614 2761 +1 1628 2540 +1 1637 4010 +1 1652 1790 +1 1658 4105 +1 1666 4297 +1 1674 5108 +1 1693 3525 +1 1698 3039 +1 1706 4466 +1 1720 5847 +1 1724 1921 +1 1727 3032 +1 1745 4100 +1 1747 3487 +1 1748 3133 +1 1753 3660 +1 1756 4059 +1 1767 4425 +1 1768 4286 +1 1778 4236 +1 1785 2514 +1 1788 2502 +1 1794 3204 +1 1799 6809 +1 1800 1339 +1 1808 6321 +1 1813 4476 +1 1815 4007 +1 1830 2935 +1 1843 4384 +1 1850 899 +1 1882 4325 +1 1903 5569 +1 1911 3454 +1 1914 2026 +1 1919 6353 +1 1920 4959 +1 1932 4996 +1 1950 4183 +1 1953 5442 +1 1963 4859 +1 1984 2587 +1 1986 3752 +1 2020 2105 +1 2021 3601 +1 2023 5806 +1 2025 4939 +1 2034 2457 +1 2035 2473 +1 2037 2354 +1 2046 3018 +1 2049 6009 +1 2062 4877 +1 2065 5994 +1 2071 6993 +1 2079 3657 +1 2106 2421 +1 2118 2928 +1 2120 5827 +1 2123 4776 +1 2124 5533 +1 2137 2984 +1 2138 5039 +1 2151 4876 +1 2158 5206 +1 2183 588 +1 2191 3477 +1 2197 2353 +1 2202 4305 +1 2205 4163 +1 2211 5815 +1 2220 4336 +1 2239 4972 +1 2260 5589 +1 2272 3433 +1 2273 1278 +1 2286 2925 +1 2291 1847 +1 2302 1685 +1 2320 6565 +1 2329 1933 +1 2335 2730 +1 2341 6225 +1 2343 5678 +1 2344 3591 +1 2346 6463 +1 2362 2695 +1 2390 6158 +1 2393 3267 +1 2399 4633 +1 2406 3559 +1 2416 3264 +1 2424 2714 +1 2439 4581 +1 2456 5849 +1 2468 6104 +1 2474 2596 +1 2489 4942 +1 2500 4721 +1 2545 2276 +1 2547 4047 +1 2549 4579 +1 2564 3964 +1 2580 4819 +1 2594 2523 +1 2609 3391 +1 2611 3752 +1 2616 5073 +1 2621 5896 +1 2629 3429 +1 2642 2643 +1 2666 4835 +1 2673 3704 +1 2675 3797 +1 2677 4281 +1 2694 3428 +1 2698 6897 +1 2700 1718 +1 2707 5525 +1 2714 2440 +1 2718 4280 +1 2723 3807 +1 2731 3379 +1 2747 3725 +1 2770 5372 +1 2774 3759 +1 2786 3942 +1 2802 4671 +1 2804 4396 +1 2816 2853 +1 2817 3546 +1 2833 7084 +1 2871 5930 +1 2887 4567 +1 2893 3612 +1 2899 3580 +1 2926 2627 +1 2948 7699 +1 2999 2570 +1 3001 4210 +1 3012 6131 +1 3032 5076 +1 100 3347 +1 923 3462 +1 193 4018 +1 702 6363 +1 568 2866 +1 174 1390 +1 7 6087 +1 257 4249 +1 352 891 +1 85 1130 +1 217 3911 +1 187 4155 +1 1643 1103 +1 811 4525 +1 126 5596 +1 53 2668 +1 1282 5651 +1 1101 5068 +1 166 3013 +1 398 4625 +1 313 3334 +1 92 5018 +1 554 3253 +1 108 3462 +1 171 3983 +1 995 4685 +1 849 3720 +1 1279 270 +1 814 2852 +1 37 2765 +1 117 4815 +1 855 5090 +1 221 4249 +1 86 4595 +1 298 5508 +1 528 4185 +1 1127 1873 +1 451 5572 +1 1589 3808 +1 59 4951 +1 1096 1180 +1 165 5072 +1 449 1718 +1 1209 4533 +1 260 1122 +1 1386 4660 +1 3 4843 +1 304 3237 +1 120 1547 +1 1060 4164 +1 927 1507 +1 710 4782 +1 1237 2647 +1 1025 6304 +1 391 3844 +1 1453 3433 +1 1508 5938 +1 1616 5612 +1 147 5173 +1 286 2128 +1 266 4224 +1 72 4722 +1 75 3007 +1 477 6056 +1 617 7066 +1 1039 5136 +1 693 4155 +1 1289 2610 +1 653 3185 +1 1538 2520 +1 483 6462 +1 1276 2916 +1 178 3288 +1 983 3420 +1 306 5370 +1 614 3347 +1 370 2876 +1 254 5912 +1 1540 1471 +1 447 2748 +1 11 3017 +1 1462 3369 +1 111 4856 +1 339 5682 +1 70 3205 +1 1278 512 +1 1474 4138 +1 18 3745 +1 922 3094 +1 375 5074 +1 13 6343 +1 1249 1872 +2 7 10589 +2 34 6082 +2 40 6385 +2 41 11624 +2 50 4987 +2 53 4600 +2 55 1852 +2 65 2389 +2 72 9365 +2 75 4558 +2 77 6216 +2 78 3710 +2 89 2146 +2 102 7137 +2 107 9325 +2 129 7483 +2 151 2199 +2 174 6347 +2 179 10158 +2 183 6589 +2 192 11674 +2 194 8646 +2 196 8730 +2 197 6908 +2 204 542 +2 224 8098 +2 226 4040 +2 266 7273 +2 274 6641 +2 281 7244 +2 285 8571 +2 296 3054 +2 311 2725 +2 344 2226 +2 365 10506 +2 404 7914 +2 413 7221 +2 422 4751 +2 430 8000 +2 432 8081 +2 453 8220 +2 499 10258 +2 511 8321 +2 515 85 +2 535 6976 +2 536 7411 +2 544 1463 +2 559 8021 +2 561 7260 +2 583 3704 +2 585 4185 +2 611 3121 +2 614 7914 +2 620 3280 +2 630 9858 +2 634 1472 +2 675 5956 +2 682 1347 +2 731 2860 +2 740 8818 +2 751 9346 +2 759 5955 +2 763 2343 +2 782 7536 +2 800 10021 +2 802 2733 +2 842 10257 +2 848 2363 +2 877 5719 +2 884 2311 +2 899 6920 +2 916 8076 +2 918 10359 +2 920 6917 +2 961 7623 +2 964 4012 +2 972 8056 +2 975 7284 +2 1037 5122 +2 1043 9164 +2 1051 7211 +2 1071 5331 +2 1094 11319 +2 1103 11646 +2 1110 5280 +2 1133 6223 +2 1158 9583 +2 1173 6639 +2 1178 67 +2 1193 1496 +2 1205 6638 +2 1207 3351 +2 1229 8585 +2 1252 7858 +2 1274 5397 +2 1276 2856 +2 1292 6604 +2 1305 3627 +2 1312 6592 +2 1328 7987 +2 1337 8004 +2 1369 5522 +2 1372 4750 +2 1387 1442 +2 1405 1447 +2 1408 9653 +2 1421 9524 +2 1434 6588 +2 1440 9265 +2 1447 6086 +2 1455 7802 +2 1492 126 +2 1495 8053 +2 1506 8977 +2 1516 6864 +2 1525 7755 +2 1528 6934 +2 1544 10651 +2 1551 5435 +2 1569 11194 +2 1574 3438 +2 1588 7452 +2 1593 2965 +2 1597 2077 +2 1605 2765 +2 1610 5144 +2 1623 1236 +2 1635 2382 +2 1672 3667 +2 1680 4330 +2 1685 847 +2 1705 6368 +2 1725 7633 +2 1726 10120 +2 1735 2959 +2 1761 10872 +2 1774 1988 +2 1781 3693 +2 1792 7346 +2 1796 4624 +2 1817 3139 +2 1841 3887 +2 1863 7930 +2 1884 1480 +2 1939 9350 +2 1954 3337 +2 1980 5500 +2 1987 5876 +2 2011 9414 +2 2012 8119 +2 2090 11546 +2 2126 9636 +2 2132 7614 +2 2136 7538 +2 2140 8320 +2 2160 6698 +2 2161 4780 +2 2181 2680 +2 2262 1249 +2 2263 9329 +2 2289 4211 +2 2295 6652 +2 2306 9276 +2 2316 6467 +2 2323 10261 +2 2333 8598 +2 2334 1094 +2 2339 7020 +2 2356 407 +2 2360 6281 +2 2361 4673 +2 2408 9400 +2 2430 4739 +2 2448 2156 +2 2453 5788 +2 2475 7833 +2 2498 4775 +2 2540 9349 +2 2548 8925 +2 2557 3650 +2 2568 4178 +2 2577 7765 +2 2579 8668 +2 2590 6110 +2 2599 8157 +2 2607 8128 +2 2622 7101 +2 2686 3833 +2 2711 1385 +2 2720 5682 +2 2740 3937 +2 2755 1784 +2 2756 8526 +2 2787 8836 +2 2788 11626 +2 2795 2218 +2 2805 6973 +2 2824 7945 +2 2829 8156 +2 2854 6755 +2 2855 1700 +2 2862 10914 +2 2879 8460 +2 2880 7204 +2 2901 4803 +2 2933 8791 +2 2942 8923 +2 2956 8348 +2 3004 4594 +2 3011 5856 +2 3022 3012 +2 3035 7949 +2 465 7362 +2 1449 8346 +2 36 5660 +2 631 6792 +2 1196 10885 +2 594 3275 +2 632 4393 +2 354 9456 +2 259 5925 +2 313 6515 +2 61 6844 +2 599 9672 +2 362 2615 +2 8 4932 +2 1295 2590 +2 1166 3681 +2 771 6102 +2 1287 1767 +2 557 5669 +2 1396 2155 +2 1466 2436 +2 85 4871 +2 93 8482 +2 781 8527 +2 130 7696 +2 1131 9722 +2 1184 2298 +2 248 7167 +2 1172 9524 +2 649 11051 +2 915 728 +2 1586 3659 +2 142 8757 +2 120 5386 +2 1496 6073 +2 421 5647 +2 162 9231 +2 459 5584 +2 516 4631 +2 1218 7022 +2 689 7106 +2 897 4393 +2 370 3580 +2 984 11411 +2 1658 9777 +2 1076 8060 +2 26 8457 +2 121 3126 +2 451 6964 +2 540 5399 +3 4 1126 +3 29 5588 +3 31 3168 +3 33 530 +3 104 4641 +3 108 5235 +3 127 2992 +3 164 4123 +3 182 6379 +3 185 9172 +3 198 8293 +3 209 3813 +3 223 9335 +3 239 5297 +3 243 5218 +3 262 7696 +3 269 1503 +3 287 3123 +3 317 5185 +3 318 2854 +3 341 2483 +3 361 5400 +3 405 1586 +3 461 4822 +3 474 4257 +3 480 5240 +3 512 2801 +3 534 2959 +3 633 7990 +3 667 2219 +3 713 5976 +3 839 3084 +3 841 147 +3 856 2794 +3 870 7998 +3 879 6580 +3 886 3102 +3 938 9459 +3 942 6514 +3 966 655 +3 977 5263 +3 1000 2462 +3 1001 9393 +3 1017 3670 +3 1070 7194 +3 1099 4927 +3 1102 3000 +3 1106 6148 +3 1112 2235 +3 1154 7193 +3 1169 8526 +3 1244 2212 +3 1248 7458 +3 1249 6620 +3 1278 4455 +3 1325 6505 +3 1350 525 +3 1364 4539 +3 1390 832 +3 1394 9510 +3 1406 7431 +3 1410 1338 +3 1444 7063 +3 1475 2041 +3 1518 5444 +3 1522 3354 +3 1540 4630 +3 1647 4985 +3 1651 3255 +3 1695 3145 +3 1713 7869 +3 1731 7903 +3 1733 4749 +3 1811 2349 +3 1829 7955 +3 1857 7506 +3 1899 3398 +3 1918 5607 +3 1947 2969 +3 1976 5521 +3 1977 1363 +3 2003 2848 +3 2009 2543 +3 2028 4504 +3 2070 6815 +3 2077 1851 +3 2080 6514 +3 2081 1399 +3 2089 7121 +3 2102 4835 +3 2104 2170 +3 2119 7020 +3 2127 7790 +3 2145 2863 +3 2178 3021 +3 2198 5208 +3 2259 5529 +3 2270 2702 +3 2294 6182 +3 2308 8332 +3 2337 3663 +3 2365 3383 +3 2392 8431 +3 2443 1875 +3 2444 5939 +3 2483 7846 +3 2490 7672 +3 2491 8385 +3 2497 6996 +3 2503 6547 +3 2578 8845 +3 2637 2612 +3 2639 7950 +3 2681 7390 +3 2702 6014 +3 2710 6385 +3 2860 3033 +3 2881 3621 +3 2976 5939 +3 2992 8126 +3 3024 9421 +3 121 6766 +3 232 7491 +3 1659 6103 +3 214 8193 +3 173 7404 +3 1207 2200 +3 268 6177 +3 1566 1784 +3 490 1567 +3 181 799 +3 522 7933 +3 862 1654 +3 100 1516 +3 1310 3839 +3 1554 6262 +3 23 3618 +3 1057 5407 +3 741 5050 +3 1148 6020 +3 538 4300 +3 434 3631 +3 311 2506 +3 1409 5816 +3 74 5879 +3 82 6977 +3 830 4928 +3 1241 5966 +3 1305 5065 +3 7 6325 +3 746 4657 +3 298 2718 +3 1082 3885 +3 575 1654 +3 170 6822 +3 834 1406 +3 151 3145 +3 73 4583 +3 161 4302 +4 35 5679 +4 47 5374 +4 60 4542 +4 88 1650 +4 143 6038 +4 191 2611 +4 229 5882 +4 254 8564 +4 258 2334 +4 267 3762 +4 380 1931 +4 390 3358 +4 399 5472 +4 409 4457 +4 423 2933 +4 457 3697 +4 598 9569 +4 628 6679 +4 706 4220 +4 709 4143 +4 742 4299 +4 748 5811 +4 794 3777 +4 863 4837 +4 934 3081 +4 935 6563 +4 980 7532 +4 1087 5555 +4 1118 4841 +4 1175 6106 +4 1209 5157 +4 1224 3788 +4 1263 2498 +4 1290 5146 +4 1339 2403 +4 1345 3906 +4 1354 2121 +4 1358 9014 +4 1424 8764 +4 1425 8550 +4 1450 8281 +4 1502 5571 +4 1513 4340 +4 1557 7312 +4 1581 9319 +4 1582 4532 +4 1596 2460 +4 1619 3278 +4 1642 3929 +4 1649 5673 +4 1653 8400 +4 1746 1539 +4 1749 2467 +4 1757 6855 +4 1786 2991 +4 1824 3058 +4 1831 6047 +4 1832 7142 +4 1927 9838 +4 1943 3282 +4 1944 3511 +4 2024 2637 +4 2031 5095 +4 2050 5585 +4 2196 6016 +4 2314 3673 +4 2321 5416 +4 2382 2390 +4 2431 3945 +4 2436 7040 +4 2466 4024 +4 2501 3308 +4 2565 2983 +4 2643 1893 +4 2699 8553 +4 2746 4332 +4 2773 5068 +4 2853 1656 +4 2940 6082 +4 1173 6174 +4 26 7742 +4 1254 1725 +4 807 8458 +4 506 5601 +4 1479 1296 +4 271 845 +4 471 4434 +4 438 2800 +4 941 3174 +4 270 7819 +4 871 3756 +4 207 7439 +4 1416 4821 +4 542 7128 +4 155 8765 +4 1398 3251 +4 68 6955 +4 912 1497 +4 253 4480 +4 1408 6877 +4 998 8075 +4 1331 6698 +4 1587 5793 +4 577 8278 +4 1350 1639 +4 1580 2480 +4 266 3548 +4 1556 2713 +4 8 4473 +4 203 4725 +4 734 6472 +4 5 8501 +4 1625 8864 +4 301 975 +4 870 7336 +4 116 3885 +4 580 2560 +4 1284 9399 +4 1403 7374 +4 1119 4744 +4 97 2404 +4 1104 2413 +4 1103 8749 +4 32 3748 +4 563 4863 +5 70 1290 +5 110 6541 +5 144 9501 +5 180 3946 +5 208 6458 +5 227 3629 +5 276 6280 +5 308 3404 +5 322 7397 +5 343 2702 +5 376 6810 +5 419 9990 +5 427 5404 +5 447 5490 +5 531 2445 +5 550 9103 +5 574 4918 +5 582 5912 +5 600 8634 +5 612 2264 +5 652 4857 +5 681 2283 +5 685 10346 +5 703 4001 +5 732 4096 +5 737 8365 +5 760 6005 +5 766 2261 +5 885 1597 +5 968 3221 +5 973 3758 +5 981 10370 +5 993 2876 +5 1038 5230 +5 1105 6726 +5 1149 6132 +5 1156 2733 +5 1171 7733 +5 1210 3320 +5 1242 1513 +5 1300 6317 +5 1322 8280 +5 1385 9728 +5 1429 9826 +5 1494 8065 +5 1512 7368 +5 1535 5218 +5 1553 8620 +5 1575 5936 +5 1591 3895 +5 1609 5370 +5 1723 7095 +5 1737 5185 +5 1769 9611 +5 1849 6549 +5 1875 10439 +5 1989 7909 +5 2054 5573 +5 2100 8513 +5 2111 7271 +5 2130 2401 +5 2231 6634 +5 2252 10049 +5 2264 7650 +5 2279 10778 +5 2298 8775 +5 2299 3105 +5 2324 2418 +5 2347 4840 +5 2389 5729 +5 2470 5445 +5 2522 5086 +5 2585 5512 +5 2591 6154 +5 2592 4940 +5 2597 8129 +5 2600 4143 +5 2606 8216 +5 2662 6838 +5 2838 10744 +5 2867 7145 +5 2907 3391 +5 2936 3634 +5 2952 7489 +5 2970 10320 +5 2997 9240 +5 3015 5417 +5 3020 3679 +5 3023 5611 +5 1080 6700 +5 975 10565 +5 387 8327 +5 964 6584 +5 415 4275 +5 1455 9904 +5 1247 7025 +5 1094 8189 +5 651 9012 +5 20 4151 +5 1583 5358 +5 556 10059 +5 686 7589 +5 1655 10745 +5 845 5519 +6 15 2706 +6 27 6013 +6 81 5922 +6 112 6388 +6 131 7594 +6 201 6570 +6 240 3526 +6 278 2776 +6 299 8005 +6 360 2830 +6 362 5985 +6 431 6372 +6 452 1640 +6 479 1514 +6 518 2674 +6 548 1688 +6 602 5586 +6 625 1888 +6 626 8617 +6 629 8231 +6 635 3540 +6 656 5288 +6 689 5136 +6 756 1859 +6 779 979 +6 804 3686 +6 954 7164 +6 1040 5782 +6 1042 8207 +6 1054 700 +6 1079 7653 +6 1101 7516 +6 1150 5117 +6 1235 1643 +6 1266 5568 +6 1317 2365 +6 1453 4472 +6 1457 3425 +6 1498 7861 +6 1552 7037 +6 1564 5685 +6 1567 6795 +6 1618 1528 +6 1643 2527 +6 1668 4781 +6 1676 4127 +6 1717 9086 +6 1812 3061 +6 1825 984 +6 1862 7994 +6 1937 7091 +6 2036 3789 +6 2055 3332 +6 2066 6259 +6 2139 3009 +6 2153 3681 +6 2171 4601 +6 2195 6645 +6 2206 4511 +6 2234 7257 +6 2238 4233 +6 2240 1646 +6 2265 5870 +6 2282 6277 +6 2290 5497 +6 2452 595 +6 2553 4776 +6 2586 7596 +6 2696 9205 +6 2791 2163 +6 2832 9547 +6 2851 3513 +6 2920 813 +6 2983 5360 +6 113 3371 +6 1548 4016 +6 1130 8574 +6 939 7052 +6 53 2435 +6 466 7934 +6 294 4418 +6 64 8717 +6 110 5395 +6 225 3876 +6 10 3232 +6 815 6747 +6 1107 6687 +6 1234 6512 +6 1623 5753 +6 1362 10170 +7 57 8929 +7 63 6411 +7 100 6040 +7 119 3804 +7 122 6649 +7 137 5509 +7 193 2125 +7 277 6426 +7 292 4195 +7 346 7897 +7 408 7483 +7 646 9627 +7 680 7049 +7 805 1189 +7 840 9520 +7 847 5921 +7 849 5212 +7 909 8374 +7 917 6170 +7 919 8083 +7 1015 9882 +7 1148 1015 +7 1179 3484 +7 1195 8072 +7 1226 5481 +7 1228 8232 +7 1256 5681 +7 1329 10242 +7 1371 10503 +7 1380 11562 +7 1404 6312 +7 1579 7370 +7 1641 8927 +7 1789 8796 +7 1814 7010 +7 1826 7585 +7 1877 9793 +7 1973 9043 +7 2001 7805 +7 2144 7396 +7 2232 6714 +7 2261 5429 +7 2293 8327 +7 2340 4591 +7 2383 4287 +7 2407 10683 +7 2450 1708 +7 2505 5961 +7 2567 1626 +7 2573 9264 +7 2588 9366 +7 2638 8752 +7 2664 4273 +7 2792 9544 +7 2850 5416 +7 88 5549 +7 579 8692 +7 673 4727 +7 817 5134 +7 655 2762 +7 594 7340 +7 146 9138 +7 177 3162 +7 38 7024 +7 974 10284 +7 1070 4587 +7 510 6291 +7 560 7953 +7 1638 9941 +7 102 4017 +7 1551 5911 +7 846 4500 +7 311 8451 +7 327 7086 +7 1105 6944 +7 1238 5082 +7 156 7553 +8 13 6860 +8 95 2521 +8 165 4543 +8 235 5499 +8 268 2383 +8 280 3770 +8 298 5186 +8 372 4676 +8 456 2844 +8 494 5417 +8 619 2707 +8 673 3573 +8 708 1788 +8 735 6845 +8 971 3926 +8 1013 5019 +8 1108 1708 +8 1172 6801 +8 1196 6755 +8 1273 7212 +8 1330 2469 +8 1336 3948 +8 1565 5786 +8 1859 5740 +8 1979 4212 +8 2064 2092 +8 2083 1604 +8 2358 3954 +8 2685 6648 +8 2808 5654 +8 2902 6683 +8 2937 3969 +8 2949 3321 +8 2954 5221 +8 2995 4240 +8 35 5625 +8 770 4734 +8 1429 6381 +8 636 1162 +8 1579 2053 +8 172 2144 +8 97 2273 +8 444 7414 +8 1171 3845 +8 684 5007 +8 156 2013 +8 1081 4874 +8 711 1351 +8 27 4002 +8 1357 5288 +8 555 2387 +8 320 3656 +8 386 3536 +8 1631 2992 +8 1669 5394 +8 176 3986 +8 1066 5991 +8 452 984 +8 1662 5766 +8 1007 3901 +8 978 2382 +8 390 1793 +8 1528 7032 +8 1320 5059 +8 587 4767 +8 352 447 +8 919 4635 +8 882 4204 +8 1150 3774 +9 59 4888 +9 97 2744 +9 177 3354 +9 260 4288 +9 370 4897 +9 375 4582 +9 458 2000 +9 607 2735 +9 749 4937 +9 791 2187 +9 883 5657 +9 1104 3109 +9 1294 5873 +9 1313 6221 +9 1587 5690 +9 1608 2280 +9 1612 3531 +9 1719 1449 +9 1722 2122 +9 1798 7060 +9 1852 1864 +9 1951 5354 +9 1974 4205 +9 2076 4178 +9 2167 6644 +9 2271 1151 +9 2301 461 +9 2434 3265 +9 2467 7151 +9 2494 4804 +9 2495 4527 +9 2541 5572 +9 2563 3607 +9 2604 3608 +9 2628 6440 +9 2797 7318 +9 2799 6642 +9 2835 6419 +9 2863 5495 +9 2957 4418 +9 2978 6654 +9 2998 4709 +9 3000 6562 +9 1670 6044 +9 1667 3388 +9 421 259 +9 480 3750 +9 1054 6586 +9 902 579 +9 76 1969 +9 455 7049 +9 471 2478 +9 1165 2938 +9 111 3237 +9 1448 6584 +9 80 6088 +9 258 895 +9 565 6783 +9 754 5446 +9 331 4773 +9 380 1411 +9 1229 5217 +9 21 4712 +9 179 4660 +9 190 1246 +10 21 2915 +10 68 1289 +10 111 6190 +10 171 5384 +10 176 3235 +10 212 3319 +10 214 2363 +10 333 4684 +10 529 6649 +10 757 6418 +10 816 1707 +10 860 7286 +10 1045 8694 +10 1084 8126 +10 1177 5811 +10 1189 6848 +10 1232 3777 +10 1307 3745 +10 1417 8504 +10 1449 7061 +10 1529 760 +10 1659 8046 +10 1738 5470 +10 1775 9045 +10 1779 2299 +10 1856 5802 +10 1868 5902 +10 1908 1389 +10 2010 3029 +10 2230 2949 +10 2244 5471 +10 2300 9969 +10 2317 5596 +10 2441 7335 +10 2561 9910 +10 2605 10584 +10 2615 6182 +10 2670 7460 +10 2676 5780 +10 2744 5179 +10 2763 8907 +10 2783 8042 +10 2905 5727 +10 2938 6692 +10 3016 7483 +10 1439 4089 +10 196 6178 +10 1064 9128 +10 237 6963 +10 420 9256 +10 137 4769 +10 1422 3343 +10 1602 7318 +10 122 10434 +10 712 9359 +10 518 905 +10 544 4088 +10 1016 5150 +11 25 3711 +11 90 7645 +11 159 3106 +11 203 5910 +11 491 3166 +11 492 1067 +11 502 5320 +11 691 3481 +11 733 6180 +11 772 7268 +11 784 7139 +11 823 5379 +11 1056 6297 +11 1076 8737 +11 1161 7581 +11 1238 5030 +11 1320 5798 +11 1772 4347 +11 2170 1248 +11 2328 8166 +11 2331 7227 +11 2352 8996 +11 2427 3086 +11 2478 2484 +11 2572 10437 +11 2672 6480 +11 2679 4966 +11 2695 5777 +11 2701 8029 +11 2749 772 +11 2872 5402 +11 2892 2273 +11 2897 7295 +11 2903 8197 +11 2934 830 +11 2939 6689 +11 1001 3130 +11 519 6779 +11 85 3660 +11 611 5414 +11 93 719 +11 1606 7674 +11 147 7971 +11 566 1666 +11 488 8334 +11 580 7397 +11 489 7255 +11 979 4350 +11 401 2621 +11 195 8619 +11 49 3369 +11 1600 6164 +11 241 8653 +11 113 2287 +12 19 6479 +12 28 1833 +12 86 3420 +12 96 5157 +12 126 8956 +12 275 5256 +12 337 9816 +12 349 2074 +12 389 5125 +12 710 8270 +12 738 6212 +12 754 4173 +12 854 7133 +12 862 6724 +12 1050 4960 +12 1061 8799 +12 1197 8149 +12 1239 9191 +12 1295 7596 +12 1304 5314 +12 1382 3536 +12 1621 10365 +12 1661 6171 +12 1665 7774 +12 1770 3149 +12 1776 3735 +12 1802 2458 +12 1889 1962 +12 1893 5116 +12 1988 8022 +12 2149 8986 +12 2169 5288 +12 2398 6326 +12 2519 8287 +12 2646 5600 +12 2655 7350 +12 2748 2692 +12 2779 8676 +12 2840 8386 +12 2868 4602 +12 2906 6812 +12 3030 3586 +12 1596 5948 +12 208 3710 +12 1372 9157 +12 457 4564 +12 398 7777 +12 101 8605 +12 936 5669 +12 509 9585 +12 195 9326 +13 69 811 +13 91 1304 +13 162 5732 +13 186 6944 +13 290 8359 +13 300 3176 +13 301 2727 +13 425 8375 +13 664 8512 +13 687 1766 +13 725 7154 +13 729 5573 +13 832 3677 +13 897 5533 +13 901 7633 +13 936 4383 +13 1007 3565 +13 1010 1741 +13 1027 7308 +13 1113 5073 +13 1399 9003 +13 1490 1889 +13 1867 215 +13 2007 8265 +13 2131 7134 +13 2154 8491 +13 2192 3783 +13 2318 8065 +13 2426 10439 +13 2566 7811 +13 2587 7636 +13 2632 4720 +13 2658 4050 +13 2709 7590 +13 2834 6336 +13 2839 2944 +13 2844 6578 +13 2856 1542 +13 2869 3544 +13 2898 2064 +13 1630 4987 +13 1671 7995 +13 241 4285 +13 59 5823 +13 989 9492 +13 424 3846 +13 1378 1252 +14 113 3853 +14 221 1664 +14 242 4890 +14 293 6300 +14 303 7561 +14 402 4928 +14 463 7871 +14 590 1606 +14 627 610 +14 648 4909 +14 829 4848 +14 903 7375 +14 1187 7273 +14 1231 2270 +14 1303 3771 +14 1359 3735 +14 1391 3173 +14 1463 1615 +14 1500 2553 +14 1703 7448 +14 1956 8149 +14 2017 7397 +14 2026 6747 +14 2186 802 +14 2217 5141 +14 2350 5487 +14 2598 5385 +14 2626 6795 +14 2801 6911 +14 2912 2413 +14 2955 8019 +14 16 2130 +14 1191 5796 +14 530 1047 +14 414 9247 +14 450 9267 +14 171 6277 +14 1609 4800 +14 71 3314 +14 208 5314 +14 1410 8186 +14 1375 7514 +14 752 5826 +14 51 5954 +14 404 7945 +15 16 1161 +15 32 5664 +15 42 1649 +15 139 8032 +15 527 7551 +15 834 8739 +15 888 3261 +15 896 3918 +15 1437 9278 +15 1456 6604 +15 1536 6252 +15 1554 4462 +15 1708 9117 +15 1990 4883 +15 2018 5231 +15 2283 798 +15 2330 7517 +15 2432 2740 +15 2486 4757 +15 2683 8956 +15 2693 4294 +15 2987 10058 +15 1242 1827 +15 326 5964 +15 233 10626 +15 716 4970 +15 140 10868 +15 1524 3899 +15 230 6441 +15 43 3473 +15 798 7510 +15 1271 5266 +15 1436 4462 +15 1645 7776 +15 722 9208 +15 1031 8323 +15 247 1926 +15 1577 3045 +15 472 6272 +15 485 8875 +15 1668 3698 +16 87 864 +16 148 1953 +16 210 9158 +16 368 5930 +16 410 2633 +16 566 2063 +16 597 7248 +16 957 6264 +16 987 1101 +16 1166 5537 +16 1375 7225 +16 1590 4467 +16 2093 828 +16 2303 8273 +16 2307 6937 +16 2366 3114 +16 2446 5592 +16 2574 7027 +16 2631 4917 +16 2708 5667 +16 2726 6017 +16 2739 9977 +16 2848 6323 +16 118 9248 +16 227 3079 +16 307 6734 +16 799 7302 +16 1665 7495 +16 1006 947 +16 52 7399 +16 1321 7378 +16 1246 2631 +16 1083 7646 +16 22 7432 +16 1341 813 +16 796 8094 +16 1324 8770 +16 1512 5865 +16 494 9964 +17 403 7420 +17 407 1597 +17 505 7514 +17 562 7671 +17 570 397 +17 707 6246 +17 810 6734 +17 1074 5424 +17 1125 7087 +17 1213 6352 +17 1504 4371 +17 1577 7192 +17 1578 6202 +17 1750 1041 +17 1754 7463 +17 1883 7945 +17 1901 7793 +17 1925 5973 +17 1983 6395 +17 2075 6335 +17 2099 2029 +17 2133 6203 +17 2180 6797 +17 2367 5075 +17 2396 10723 +17 2764 9378 +17 1257 8025 +17 191 6460 +17 107 8511 +17 381 1178 +17 491 6514 +17 1307 4121 +17 24 6196 +17 369 5730 +17 230 6627 +17 157 9461 +17 554 5806 +17 709 7858 +18 138 6454 +18 335 743 +18 387 6617 +18 421 6694 +18 460 4228 +18 465 8594 +18 546 9728 +18 718 8169 +18 1199 1863 +18 1346 9009 +18 1520 6881 +18 1521 1629 +18 1532 2100 +18 1572 6491 +18 1657 9698 +18 2173 2902 +18 2405 7796 +18 2413 3934 +18 2472 2381 +18 2473 7145 +18 2610 8598 +18 2738 4930 +18 2822 6248 +18 2919 1905 +18 3031 5742 +18 439 5929 +18 94 3139 +18 167 505 +18 1390 7740 +18 1397 2810 +18 314 5560 +18 165 8626 +18 1164 8454 +18 81 5800 +18 894 10758 +18 60 8241 +19 125 4592 +19 446 5201 +19 481 2261 +19 514 5056 +19 889 5088 +19 1311 2225 +19 1351 4791 +19 1368 6249 +19 1418 2238 +19 1479 3292 +19 1807 5209 +19 1970 1947 +19 2129 716 +19 2395 3834 +19 2435 1777 +19 2511 451 +19 2659 6669 +19 2660 6362 +19 2806 1782 +19 2821 6044 +19 2894 3860 +19 2985 3692 +19 1617 6577 +19 1349 3988 +19 361 3719 +19 428 5535 +19 366 1925 +19 206 1867 +19 669 7725 +19 332 4717 +19 283 5467 +19 204 5081 +19 548 4521 +19 1486 1955 +19 208 4190 +20 157 3972 +20 166 3253 +20 228 3736 +20 319 3766 +20 417 1722 +20 525 4646 +20 702 5099 +20 764 7812 +20 969 6469 +20 1091 4995 +20 1188 6612 +20 1334 4591 +20 1451 7621 +20 1631 980 +20 1855 7651 +20 1881 8710 +20 1900 3717 +20 1949 8652 +20 2044 8589 +20 2190 5296 +20 2394 3201 +20 2460 1621 +20 2771 2026 +20 1138 4895 +20 47 2163 +20 1584 5599 +20 195 7961 +20 174 2494 +20 126 7661 +20 863 2241 +20 222 4056 +20 996 3925 +21 273 4593 +21 336 4152 +21 632 2649 +21 989 6132 +21 1443 5331 +21 1491 4966 +21 1573 7527 +21 1586 2368 +21 1615 1507 +21 1654 6619 +21 1655 7820 +21 1669 6316 +21 1682 1031 +21 2041 5284 +21 2159 7292 +21 2309 3751 +21 2380 5930 +21 2480 4031 +21 2781 4017 +21 2931 4536 +21 1347 5317 +21 646 4035 +21 79 1440 +21 495 4568 +21 944 4259 +21 126 6784 +21 1169 3769 +21 50 844 +21 457 1964 +21 1495 4324 +22 80 5079 +22 526 1689 +22 875 4075 +22 891 10112 +22 1488 9464 +22 1499 9233 +22 1660 6443 +22 2254 8564 +22 2400 8398 +22 2442 7976 +22 2665 1215 +22 1521 5232 +22 1008 7457 +22 62 9824 +22 658 3857 +22 1680 6319 +22 1385 2484 +22 90 10406 +22 410 5000 +22 1412 5387 +22 1627 6484 +22 202 6918 +22 309 7071 +22 1468 3088 +22 240 3587 +22 194 2172 +22 1504 6706 +22 967 10794 +22 1167 7325 +22 934 8913 +23 92 2817 +23 132 4754 +23 173 4114 +23 222 8260 +23 255 3723 +23 327 5646 +23 495 5832 +23 736 3311 +23 974 7795 +23 1115 8588 +23 1332 4775 +23 1431 1884 +23 1555 1292 +23 1598 5350 +23 1599 6907 +23 2016 3363 +23 2194 6284 +23 2229 3315 +23 2410 2375 +23 2689 8036 +23 2918 4255 +23 2929 6832 +23 1137 8738 +23 1318 1664 +23 1240 4706 +23 39 1748 +23 1564 9039 +23 1182 5522 +24 220 9853 +24 282 5863 +24 393 7175 +24 466 7897 +24 670 8375 +24 820 2185 +24 902 5373 +24 1165 8858 +24 1176 7320 +24 1734 2761 +24 1760 1886 +24 1923 3519 +24 2014 6220 +24 2015 9678 +24 2115 6981 +24 2215 2929 +24 2348 6248 +24 2387 2904 +24 2481 7039 +24 2820 3740 +24 2916 7588 +24 1190 7398 +24 222 1864 +24 619 5347 +24 455 1885 +24 582 3824 +24 1067 4882 +24 748 1155 +25 170 8425 +25 207 2351 +25 316 3304 +25 644 3188 +25 778 5361 +25 790 4807 +25 941 4765 +25 1060 7442 +25 1246 1355 +25 1566 5965 +25 1816 3375 +25 1895 8853 +25 2141 10933 +25 2225 5885 +25 2359 1978 +25 2445 6271 +25 2663 7649 +25 2789 4820 +25 495 5454 +25 1413 9133 +25 931 9672 +25 1673 8425 +25 701 3732 +25 1159 6427 +25 1069 6633 +25 445 6355 +25 482 543 +25 59 7755 +26 271 8519 +26 414 9231 +26 470 2403 +26 484 3369 +26 577 6047 +26 821 4552 +26 955 2681 +26 1033 4920 +26 1129 1533 +26 1331 6908 +26 1361 9829 +26 1420 8813 +26 1480 3521 +26 1964 3387 +26 2068 5199 +26 2187 1444 +26 2243 6532 +26 2657 6730 +26 2728 5962 +26 2826 4975 +26 2915 2944 +26 3010 5493 +26 1058 6676 +26 954 8347 +26 672 2442 +27 51 4587 +27 650 3254 +27 697 8026 +27 765 3007 +27 944 1303 +27 1182 2381 +27 1338 10489 +27 1466 2031 +27 1477 8066 +27 1570 7396 +27 1583 6410 +27 1632 6881 +27 1793 4661 +27 1921 3462 +27 1948 8366 +27 1992 6874 +27 2053 8402 +27 2162 6401 +27 2200 6827 +27 2374 926 +27 2440 9121 +27 2571 4308 +27 2877 10534 +27 2904 3714 +28 206 3706 +28 381 9218 +28 584 3617 +28 608 4173 +28 651 8320 +28 692 9242 +28 700 2028 +28 776 5185 +28 959 2440 +28 1029 4564 +28 1561 2454 +28 1975 3295 +28 2484 6753 +28 2706 4604 +28 270 5622 +28 435 2612 +28 1014 2980 +28 1250 1913 +28 527 4935 +28 629 8764 +28 611 6224 +28 558 1250 +28 836 1661 +28 475 6781 +28 293 7548 +29 589 3409 +29 621 8792 +29 688 5417 +29 999 9112 +29 1035 5169 +29 2250 9187 +29 2537 4378 +29 2624 1795 +29 2669 6787 +29 2772 4743 +29 2796 5232 +29 2841 4527 +29 626 3313 +29 467 9232 +29 156 7471 +29 732 8374 +29 932 1734 +29 259 4111 +29 267 6882 +29 1369 8586 +29 1308 4586 +29 359 5283 +29 1335 2440 +29 786 7601 +29 250 7454 +30 117 7567 +30 145 4284 +30 323 6948 +30 325 5836 +30 373 4670 +30 510 8457 +30 953 7065 +30 1041 9407 +30 1192 1316 +30 1306 5109 +30 2082 6790 +30 2084 6093 +30 2532 1852 +30 2569 6516 +30 2654 4022 +30 3005 5973 +30 697 8907 +30 78 6937 +30 644 6946 +30 1647 5025 +30 713 6342 +30 677 3060 +30 1224 4594 +30 1018 7291 +31 187 6440 +31 215 3249 +31 339 3638 +31 504 4877 +31 572 6734 +31 827 7169 +31 965 3611 +31 1241 4963 +31 1460 1121 +31 1707 4573 +31 1790 5906 +31 1894 5126 +31 1912 5412 +31 1961 1357 +31 2063 4926 +31 2391 1781 +31 1265 6781 +31 57 6442 +31 201 7706 +31 167 6719 +31 1015 8834 +31 795 5265 +31 171 4964 +32 232 5184 +32 436 4588 +32 488 4212 +32 541 6888 +32 567 3779 +32 724 1599 +32 881 5423 +32 1864 1998 +32 1885 1296 +32 2326 5926 +32 2623 3497 +32 2640 5993 +32 550 4094 +32 318 5650 +32 161 2979 +32 1152 5395 +32 622 6609 +32 1211 3567 +32 466 3640 +32 473 1986 +32 787 4673 +32 199 837 +33 887 3036 +33 948 8433 +33 1378 3042 +33 1428 6618 +33 1464 3151 +33 1791 4342 +33 1952 6767 +33 2165 6374 +33 2542 3129 +33 2729 7104 +33 2767 3628 +33 757 2570 +33 843 6944 +33 229 5696 +33 365 6162 +33 525 5127 +33 174 5738 +33 40 1302 +33 886 2584 +33 1079 1510 +33 1576 9807 +33 176 8585 +34 289 4921 +34 345 6321 +34 1140 2528 +34 1157 3250 +34 1469 2086 +34 1601 5363 +34 2224 2445 +34 2536 2962 +34 2775 6384 +34 211 4047 +34 1632 7483 +34 1488 4157 +34 999 3319 +34 135 860 +34 146 5898 +34 118 6938 +34 926 3661 +34 173 5208 +34 430 2584 +34 1061 6042 +34 364 2848 +34 337 6572 +35 66 3430 +35 426 6256 +35 449 5247 +35 564 10559 +35 1107 7599 +35 1200 8548 +35 1928 8516 +35 1960 9704 +35 2268 5462 +35 2292 5651 +35 2768 8114 +35 2994 2012 +35 1592 7551 +35 548 7838 +35 248 8494 +35 319 11121 +35 910 8240 +35 1327 7315 +35 1109 5366 +35 269 6027 +36 310 5660 +36 442 1982 +36 483 7461 +36 485 1230 +36 852 6683 +36 882 8369 +36 892 9442 +36 1066 2508 +36 1472 6144 +36 1533 7201 +36 1650 7875 +36 1870 9602 +36 2253 7612 +36 2297 3070 +36 2517 9237 +36 2704 1759 +36 270 9566 +36 1450 9154 +36 187 9470 +36 196 8116 +37 168 7674 +37 200 5612 +37 523 4880 +37 666 6308 +37 672 1371 +37 792 3232 +37 798 5227 +37 1058 5117 +37 1135 4777 +37 1773 362 +37 2375 7187 +37 2471 3180 +37 2803 3445 +37 2876 3464 +37 940 8632 +37 583 6873 +37 582 1829 +37 1614 4048 +37 363 1526 +38 123 4277 +38 330 6109 +38 369 4167 +38 418 960 +38 727 3290 +38 931 5791 +38 1021 3165 +38 1787 2196 +38 2019 3875 +38 2402 5236 +38 2737 4353 +38 2886 2880 +38 2979 4940 +38 175 6893 +38 1624 5592 +38 1011 3109 +38 440 4195 +38 389 423 +38 654 5519 +39 826 3338 +39 906 7112 +39 985 6612 +39 1264 4228 +39 1662 6732 +39 1820 8051 +39 2463 2609 +39 2874 5443 +39 171 4076 +39 1476 3081 +39 331 6135 +39 275 2217 +39 441 958 +39 321 6770 +39 218 5766 +39 1033 3264 +39 60 1749 +40 363 6421 +40 647 5530 +40 1324 5595 +40 1714 6158 +40 1718 7830 +40 1940 5232 +40 2332 6181 +40 1539 2553 +40 750 2580 +40 276 6546 +40 895 5904 +40 726 4839 +40 1201 2957 +40 1382 4813 +40 1366 3127 +40 733 1241 +40 550 4812 +40 618 5487 +41 105 2362 +41 309 8239 +41 1078 2860 +41 1214 9089 +41 1219 6011 +41 1543 5078 +41 2247 3734 +41 2379 5183 +41 2715 8909 +41 256 10400 +41 1507 6932 +41 50 7632 +41 547 10359 +41 627 7925 +41 1161 8432 +41 153 11727 +41 1160 5220 +41 269 9266 +42 467 6674 +42 482 4593 +42 767 4983 +42 1008 7248 +42 1082 6041 +42 1684 3542 +42 1739 6887 +42 1981 556 +42 2210 4742 +42 233 9899 +42 1183 3094 +42 947 5558 +42 1099 5798 +42 443 5575 +42 1501 6795 +42 1666 5215 +42 294 1392 +42 1621 10436 +43 671 2141 +43 846 4072 +43 1281 3049 +43 1691 2058 +43 2218 1951 +43 2810 7776 +43 612 4091 +43 1174 812 +43 609 8597 +43 772 7270 +43 539 6011 +43 1460 4293 +43 588 5541 +43 1017 3626 +43 1510 2924 +43 1431 3169 +43 1226 1525 +44 205 2348 +44 246 2181 +44 571 4125 +44 1384 4144 +44 2114 2960 +44 2201 4596 +44 2421 4227 +44 133 8298 +44 948 3939 +44 383 3254 +44 1273 4319 +44 805 3880 +44 583 6781 +44 988 3587 +44 403 4803 +44 531 3571 +44 1424 3857 +45 218 5337 +45 400 10180 +45 1067 2207 +45 1271 4743 +45 1301 2336 +45 1580 2211 +45 1742 7725 +45 1879 4043 +45 2649 2668 +45 942 6279 +45 152 5909 +45 1607 5565 +45 635 5031 +45 156 6595 +45 321 8650 +45 1415 7556 +45 1484 4479 +46 52 2307 +46 74 3294 +46 244 7869 +46 552 5155 +46 774 8949 +46 1217 9262 +46 2990 4870 +46 299 7148 +46 1085 3938 +46 172 4169 +46 200 8409 +46 1365 4983 +46 1074 7430 +46 253 8525 +46 214 3312 +46 264 5404 +46 145 2991 +47 136 3057 +47 415 1701 +47 435 3353 +47 660 6050 +47 814 2441 +47 1168 4276 +47 1401 2909 +47 1526 6385 +47 1663 2764 +47 1673 3182 +47 1762 6708 +47 2479 4333 +47 2581 3829 +47 2641 5671 +48 392 7502 +48 565 12289 +48 591 3012 +48 1258 7542 +48 1755 12101 +48 1873 10764 +48 2174 4587 +48 193 2969 +48 961 4533 +48 937 10327 +48 1124 10547 +48 1633 2577 +48 562 4745 +48 619 8943 +48 758 9310 +48 879 11358 +49 2608 3279 +49 2651 9438 +49 1561 4132 +49 230 4309 +49 1441 9132 +49 1562 3795 +49 478 2204 +49 473 4824 +49 1252 4277 +49 412 6916 +49 248 4304 +49 144 4374 +49 284 4903 +49 175 1253 +49 363 4197 +50 416 6224 +50 845 3552 +50 894 7485 +50 994 2907 +50 1131 4784 +50 1352 3105 +50 2713 4734 +50 2935 2948 +50 2946 910 +50 266 5051 +50 120 2207 +50 816 2023 +50 1053 3807 +50 186 937 +51 184 2808 +51 253 3171 +51 1180 648 +51 1679 1276 +51 2353 6080 +51 2509 1258 +51 2682 2998 +51 2719 3268 +51 334 6335 +51 608 2183 +51 719 4820 +51 270 6904 +51 242 3120 +51 506 3977 +52 62 2933 +52 217 857 +52 497 8095 +52 659 4270 +52 1865 7948 +52 1998 3494 +52 2087 2497 +52 2157 7981 +52 2204 5005 +52 2667 3608 +52 2852 533 +52 332 7856 +52 237 6968 +52 1115 1581 +53 837 2827 +53 932 9035 +53 1402 4622 +53 1677 3367 +53 1968 8226 +53 2602 6896 +53 2951 5950 +53 691 5384 +53 562 5191 +53 899 2330 +53 528 1532 +53 287 9408 +53 590 3646 +54 560 5138 +54 952 3037 +54 998 9412 +54 1487 8806 +54 1744 6533 +54 1838 6286 +54 1888 5060 +54 1957 5788 +54 2006 9360 +54 2033 3561 +54 2256 8165 +54 2311 1557 +54 2357 6628 +54 2814 5965 +54 2873 6111 +55 152 2448 +55 554 5500 +55 593 6077 +55 599 7833 +55 1297 5554 +55 2377 7086 +55 2428 2716 +55 2476 4049 +55 2965 3942 +55 1531 3260 +55 1489 4144 +55 740 7213 +55 1180 4359 +55 917 6900 +56 705 4373 +56 786 7987 +56 815 3634 +56 1147 6704 +56 1348 6747 +56 1448 2134 +56 1664 3517 +56 2128 10138 +56 140 8213 +56 1578 7910 +56 235 877 +56 1338 2475 +56 860 6300 +56 579 7746 +57 231 325 +57 2269 7984 +57 2691 6450 +57 83 6377 +57 215 4115 +57 73 5321 +57 608 5825 +57 744 2273 +57 667 4685 +57 107 7578 +57 1162 6406 +57 237 6245 +58 711 1700 +58 865 2663 +58 1006 4268 +58 1622 5994 +58 2373 1624 +58 2614 3542 +58 2636 6491 +58 252 7054 +58 256 2243 +58 225 2204 +58 96 1057 +58 192 7844 +58 1051 4507 +58 913 2955 +59 925 3010 +59 1191 1770 +59 1681 9484 +59 1854 2780 +59 2319 8923 +59 2477 9166 +59 2757 5753 +59 2819 7418 +59 2830 8045 +59 452 5467 +59 338 5861 +60 265 2559 +60 573 1704 +60 1523 9597 +60 650 9201 +60 1553 1175 +60 185 9081 +60 1543 2401 +60 310 7592 +60 1646 6282 +60 1389 7048 +61 350 9144 +61 773 6613 +61 1467 9346 +61 2059 734 +61 2945 3722 +61 1640 7043 +61 1594 2078 +61 859 2599 +61 1168 2795 +61 635 4719 +61 182 1744 +61 259 6135 +62 347 5999 +62 746 6336 +62 1355 2737 +62 1837 4543 +62 1913 1300 +62 2751 3943 +62 2793 5186 +62 348 8041 +62 1044 4715 +62 1423 10952 +62 520 5162 +63 645 6754 +63 716 3911 +63 768 7791 +63 1716 6873 +63 1783 5751 +63 1993 7395 +63 2276 3703 +63 1572 6108 +63 431 8339 +63 413 9472 +63 489 7521 +63 1354 8060 +63 453 2459 +64 617 2054 +64 1236 9902 +64 2275 5945 +64 2890 2310 +64 1232 6651 +64 630 7765 +64 1193 7250 +64 88 3137 +64 1342 9252 +64 166 4515 +64 976 3871 +64 235 7258 +65 328 7059 +65 367 5404 +65 857 5844 +65 1093 3193 +65 1709 4928 +65 2228 3098 +65 2414 7257 +65 2601 6953 +65 2743 6666 +65 2925 10714 +65 76 4535 +65 1405 2712 +66 537 971 +66 726 6164 +66 789 7624 +66 1020 2814 +66 1183 5260 +66 1270 6446 +66 2560 2167 +66 2703 3997 +66 2883 4329 +66 2962 2696 +66 1452 4919 +66 639 2628 +67 506 6688 +67 808 10989 +67 1409 1098 +67 1470 6915 +67 2372 3959 +67 238 10559 +67 1262 1298 +67 312 10768 +67 581 536 +67 116 9166 +67 1374 1731 +68 1286 2504 +68 1289 5841 +68 2058 8273 +68 458 8154 +68 197 10200 +68 361 6918 +68 729 9249 +68 277 3034 +68 456 5561 +68 1217 8860 +68 300 8555 +69 873 2341 +69 1152 1698 +69 1648 9932 +69 1373 4010 +69 783 5152 +69 141 5180 +69 416 2131 +69 1056 2301 +69 211 7807 +69 83 6500 +69 144 4188 +69 1133 7499 +70 340 1827 +70 366 4541 +70 543 6183 +70 654 3221 +70 1137 1181 +70 1318 7760 +70 2042 1358 +70 1028 7727 +70 736 4454 +70 124 6993 +70 456 5606 +71 580 4795 +71 1146 4723 +71 1302 4296 +71 2690 4250 +71 679 5811 +71 260 1718 +71 1264 1658 +71 780 2699 +71 158 3509 +71 986 3824 +71 287 7445 +72 1511 8975 +72 1916 3232 +72 2285 4866 +72 2533 8119 +72 1013 10148 +72 310 7946 +72 584 1173 +72 343 5687 +72 93 5729 +72 1544 1750 +73 1268 1416 +73 1386 5895 +73 1892 3781 +73 1965 5670 +73 2266 3991 +73 2397 6144 +73 2409 2291 +73 2842 2410 +73 779 5238 +74 743 2236 +74 1474 3675 +74 2163 3213 +74 2176 7262 +74 2449 1802 +74 1568 4536 +74 1358 3932 +74 1526 6885 +74 1251 2896 +74 1516 2224 +75 992 4794 +75 1678 5427 +75 1704 6248 +75 1821 5980 +75 2750 7068 +75 2984 3483 +75 1518 6802 +75 418 1797 +75 317 6656 +75 278 5045 +76 851 3402 +76 926 4830 +76 1068 4782 +76 1452 2896 +76 1644 3553 +76 426 4739 +76 938 6806 +76 549 6876 +76 368 1342 +77 283 6431 +77 371 3378 +77 586 5498 +77 678 6842 +77 1468 1605 +77 2544 7010 +77 357 8184 +77 1175 3921 +77 179 4128 +77 215 1779 +77 1438 3984 +78 355 2288 +78 522 6950 +78 578 2879 +78 605 6707 +78 1423 11159 +78 2147 6686 +78 2612 9908 +78 1136 6298 +78 670 9728 +79 332 6455 +79 445 5517 +79 508 7697 +79 2680 4646 +79 394 1971 +79 1634 5675 +79 946 7319 +79 818 4944 +79 209 7805 +79 1610 296 +80 359 2199 +80 1145 6169 +80 1568 1821 +80 2312 4264 +80 553 4313 +80 340 3368 +80 389 4610 +80 263 5709 +80 592 2816 +81 1019 7047 +81 1400 2716 +81 1482 1764 +81 1721 2424 +81 2150 2936 +81 1629 5018 +81 1261 2998 +81 1219 5067 +82 2342 11583 +82 2712 8912 +82 581 1529 +82 1656 3766 +82 202 6707 +82 362 4290 +82 636 3136 +82 1563 4757 +82 394 2331 +83 1541 6216 +83 1603 4951 +83 2214 2874 +83 2422 3383 +83 2617 3531 +83 2742 7140 +83 3025 2762 +83 1533 3298 +84 385 4055 +84 929 2867 +84 1174 3260 +84 1201 1511 +84 1933 1698 +84 1444 5453 +84 101 3497 +84 1400 1776 +84 162 4751 +84 325 4605 +85 861 5280 +85 1098 5167 +85 118 5602 +85 1143 6265 +85 1222 5709 +85 382 1481 +85 1106 6089 +86 2112 7232 +86 2221 2432 +86 2520 4069 +86 2630 1180 +86 122 11946 +86 1178 8255 +86 234 6860 +86 332 6795 +86 1329 4749 +87 477 9174 +87 1163 3561 +87 1461 10159 +87 2208 9098 +87 2552 968 +87 130 3920 +87 1364 5536 +87 838 6726 +87 334 8098 +88 750 1269 +88 904 1247 +88 1023 158 +88 1692 3428 +88 1848 2505 +88 2981 1051 +88 1235 7279 +89 264 7560 +89 1011 1287 +89 1413 7933 +89 2941 2409 +89 561 6052 +89 104 5428 +89 724 5880 +89 501 7457 +89 257 6470 +89 1520 6992 +90 601 1883 +90 684 7441 +90 753 5943 +90 2351 4464 +90 2661 8098 +90 242 7632 +90 933 8288 +91 1119 8057 +91 1284 9169 +91 319 7114 +91 1019 6899 +91 1487 4222 +91 625 7922 +91 1072 7881 +91 1522 4936 +91 1541 3868 +92 172 6905 +92 279 4144 +92 569 3445 +92 1670 7029 +92 2423 6105 +92 2516 6975 +92 2836 666 +93 374 4322 +93 978 4895 +93 730 6327 +93 197 10312 +93 1036 5601 +93 300 6833 +94 812 3236 +94 1697 7122 +94 1702 6039 +94 1936 3331 +94 2526 3898 +94 678 3801 +94 152 3167 +94 448 3567 +95 394 2826 +95 615 4324 +95 618 5649 +95 1462 6300 +95 1645 5674 +95 1835 2780 +95 2177 2344 +95 2849 1417 +95 2911 3478 +96 556 8286 +96 2092 6302 +96 116 7786 +96 1523 4766 +96 721 2065 +96 1529 1275 +96 288 9362 +96 785 6272 +97 128 5871 +97 355 2357 +97 1565 3624 +97 567 1257 +97 1258 6290 +97 322 5380 +98 437 9153 +98 547 7090 +98 1967 7045 +98 864 2935 +98 366 5923 +98 696 5755 +98 813 8791 +98 847 4382 +98 1359 4627 +99 984 11954 +99 2967 850 +99 263 3863 +99 185 8895 +99 141 11144 +99 1323 7964 +99 622 8523 +99 1040 7249 +100 758 5268 +100 858 4120 +100 2878 1574 +100 751 8153 +100 1304 2921 +100 955 4315 +100 171 1992 +101 1945 5094 +101 992 1676 +101 997 5841 +101 280 1354 +101 1068 5902 +101 1509 4190 +101 1213 5821 +102 781 2006 +102 963 3148 +102 1254 3633 +102 1275 3825 +102 1531 8419 +102 2963 4987 +102 2982 3732 +103 1589 7050 +103 1982 4432 +103 2078 6537 +103 2105 1694 +103 794 4008 +103 156 5378 +103 374 3314 +103 840 6502 +104 2438 797 +104 461 4663 +104 524 4806 +104 1676 4203 +104 115 4290 +104 390 2128 +104 990 7539 +105 153 9381 +105 3009 1087 +105 539 7268 +105 612 6580 +105 177 3403 +105 632 4957 +105 561 5676 +106 1620 6764 +106 2543 1182 +106 126 5686 +106 407 2834 +106 890 3157 +106 1483 8799 +106 1459 1079 +106 516 3589 +107 478 2831 +107 884 8964 +107 1135 2625 +107 1328 2649 +107 481 1977 +108 549 2684 +108 668 4607 +108 186 3808 +108 981 6324 +108 138 2169 +108 135 3885 +108 1527 1974 +109 188 7494 +109 386 1903 +109 967 6452 +109 1319 5638 +109 2455 6429 +109 250 1988 +109 663 1359 +109 819 1533 +110 1509 4245 +110 2004 3559 +110 839 1675 +110 130 6266 +110 1620 6443 +110 1003 8320 +110 411 4221 +111 1203 1356 +111 1240 1314 +111 1349 5550 +111 2212 2571 +111 2223 1589 +111 2485 2530 +112 950 7227 +112 1493 9449 +112 1539 7728 +112 2113 6033 +112 647 6559 +112 1371 10188 +112 1156 5191 +112 1639 8884 +113 462 7294 +113 1374 7144 +113 1819 3712 +113 2697 3693 +113 625 3099 +113 1322 3286 +114 476 804 +114 1370 6122 +114 1675 1961 +114 1711 5329 +114 1897 8122 +114 2219 2945 +114 523 3967 +114 1506 7600 +115 391 5284 +115 610 5613 +115 1260 2398 +115 1627 2674 +115 1029 2994 +115 374 5424 +115 504 6100 +116 1255 5596 +116 1715 8811 +116 591 2659 +116 547 6870 +116 416 3703 +117 234 3789 +117 752 2780 +117 1234 849 +117 1958 832 +117 388 7703 +117 384 6214 +117 243 9158 +118 1267 7085 +118 2953 8042 +118 1352 8192 +118 397 10900 +119 2385 3213 +119 2512 914 +119 666 4709 +119 323 2253 +119 143 8718 +119 1497 3302 +119 610 7930 +120 874 4375 +120 1170 5092 +120 1997 4005 +120 1493 4565 +121 1245 5940 +121 1588 9097 +121 132 6624 +121 1591 6901 +121 1047 3393 +122 990 8350 +122 2203 3336 +122 1024 10188 +122 904 3909 +122 694 11108 +123 2088 4025 +123 1236 5298 +123 429 5834 +123 792 2442 +123 924 4726 +123 591 2156 +123 1298 3618 +124 315 5419 +124 643 8082 +124 1362 8833 +124 1876 7164 +124 2944 1343 +124 2989 7191 +125 2401 5217 +125 1376 5936 +125 775 7017 +125 1312 6060 +125 866 6244 +125 965 296 +125 481 2332 +126 1922 3646 +126 637 6640 +126 613 6605 +127 1138 5919 +127 1416 3357 +127 1445 3891 +127 1696 3658 +127 2506 4362 +127 2943 8058 +128 178 2094 +128 364 1420 +128 2627 4067 +128 2895 6071 +128 2959 7451 +128 184 2410 +128 1100 6617 +129 383 9255 +129 504 9158 +129 1648 11991 +129 808 10199 +129 1456 6031 +129 518 9838 +129 1042 3424 +130 1809 2492 +130 2974 5610 +130 1142 3576 +130 761 2534 +131 1266 2617 +131 1195 8188 +131 1034 6400 +131 1333 1080 +131 874 8063 +131 1500 9714 +131 844 7941 +132 570 4315 +132 966 1524 +132 514 7496 +132 1110 6374 +132 749 4173 +132 1336 6895 +133 2613 8036 +133 1595 6842 +133 1009 3084 +133 143 892 +133 970 8401 +133 1599 2323 +134 468 5043 +134 1299 1326 +134 167 10047 +134 623 7584 +134 286 4815 +134 731 9111 +134 261 3690 +135 1978 8328 +135 2072 6219 +135 2546 5114 +135 681 3097 +135 714 3689 +136 434 2728 +136 2027 7465 +136 664 8881 +136 432 2555 +136 769 5811 +136 1114 4996 +136 765 6609 +137 257 4490 +137 1436 4534 +137 1515 5687 +137 253 5052 +137 784 5264 +137 1559 5091 +138 1373 4383 +138 1955 3189 +138 1999 6434 +138 1502 2037 +138 333 5147 +138 806 8614 +139 2135 7725 +139 2216 1235 +139 2310 2123 +139 2527 7011 +139 2684 7775 +139 372 2458 +140 1095 9555 +140 1419 6243 +140 2776 6494 +140 1091 10003 +141 190 5267 +141 461 8046 +141 384 5912 +141 297 7847 +142 286 3878 +142 2812 2295 +142 586 7528 +142 147 6036 +143 1780 10731 +143 2355 7928 +143 1163 5458 +144 2091 5659 +144 2146 9451 +144 1477 4443 +145 3028 6124 +145 1683 8159 +145 345 7757 +145 531 7917 +145 657 5205 +146 420 7678 +146 2370 3468 +146 2733 8352 +146 2884 2592 +147 1117 7135 +147 228 6567 +147 1275 3203 +148 872 5226 +148 323 4506 +148 639 3265 +148 350 6692 +148 303 5890 +148 1255 5056 +149 2403 8350 +149 251 5780 +149 982 6057 +149 1628 3142 +149 289 8535 +149 404 3247 +150 1204 8578 +150 1530 11010 +150 210 4669 +150 179 9952 +150 348 5025 +150 1663 8236 +151 189 7282 +151 1766 6368 +151 2008 3185 +151 643 391 +151 1585 3108 +152 928 8815 +152 1736 10949 +152 1391 997 +152 447 2075 +153 985 3178 +153 1519 8615 +153 1260 4833 +153 169 10284 +153 1214 2904 +154 2900 7281 +154 1505 1704 +154 182 4095 +154 397 8356 +154 1678 4849 +154 392 6630 +155 2304 3340 +155 881 9561 +155 810 6518 +155 671 5624 +155 704 4622 +156 1109 2917 +157 2652 9770 +157 199 2982 +157 417 2299 +157 1618 6609 +157 833 3272 +158 2429 6781 +158 282 5659 +158 349 1893 +158 485 8042 +158 1274 6360 +159 2134 4404 +159 400 5023 +159 1306 3423 +159 827 3352 +159 1030 3153 +159 541 4790 +160 530 2731 +160 639 2365 +160 1287 5648 +160 766 536 +160 184 6226 +160 801 3933 +161 400 6406 +161 1120 4084 +161 603 3643 +161 914 3062 +162 788 6053 +162 898 3803 +162 1751 3408 +162 604 7426 +163 1139 5923 +163 1537 1458 +163 1959 3783 +163 2499 4522 +163 2732 6009 +163 2809 2710 +164 2458 2808 +164 1402 6100 +164 1059 4365 +164 307 4902 +164 1038 3868 +165 949 7395 +165 1155 6898 +165 541 3261 +165 1334 6566 +166 1406 3086 +166 1590 1858 +166 354 4831 +166 637 5005 +167 1810 5602 +167 2717 1989 +168 2825 10221 +168 706 6676 +168 543 6947 +168 319 5701 +168 460 5311 +169 2722 6955 +169 2752 8852 +169 205 2906 +169 759 5826 +170 190 5518 +170 363 5863 +170 1684 6329 +170 328 5933 +172 1710 8974 +172 189 1684 +172 1210 1485 +173 972 3393 +173 206 4022 +173 898 5188 +174 1181 3328 +174 468 6381 +175 2843 4716 +175 406 9212 +175 1571 5815 +176 1123 4845 +176 768 8938 +176 652 4908 +177 1283 5515 +177 600 7185 +177 1380 10041 +178 1073 5156 +178 883 7733 +178 1514 2222 +179 277 6339 +179 520 6861 +180 2433 1199 +180 441 5881 +180 822 543 +180 1194 3112 +180 928 5232 +181 1365 6067 +181 1505 6708 +181 406 1846 +181 1095 8869 +182 438 5592 +182 1221 4178 +182 680 7697 +183 912 6404 +183 2249 2967 +183 2645 4036 +183 310 4758 +183 690 1056 +184 2692 2165 +184 302 8120 +184 921 5235 +185 341 8692 +185 1132 8350 +186 1333 4867 +186 2923 4155 +186 737 4639 +187 1985 2133 +187 2790 7046 +187 254 3964 +188 2828 4270 +188 229 6970 +188 360 10885 +188 534 2165 +188 1443 1923 +189 694 1518 +189 797 1496 +189 534 10998 +189 837 4859 +190 1212 3112 +190 2888 3377 +191 1649 6625 +191 470 7604 +191 878 6812 +191 1121 5465 +192 1356 7991 +192 2061 4059 +192 3018 10075 +192 1126 5219 +193 1871 4511 +193 2558 4558 +193 351 3814 +194 1132 8449 +194 2514 3929 +194 1296 1763 +194 253 1112 +195 596 7111 +195 1159 4811 +196 1874 5315 +196 2554 2544 +196 205 3635 +197 259 4810 +197 347 11467 +197 742 5372 +198 665 9188 +198 908 3632 +198 2245 9247 +198 199 4768 +198 312 4599 +199 2278 5069 +199 877 6461 +200 1080 6966 +200 227 5598 +200 1473 2667 +201 2378 3925 +201 1361 8286 +201 1363 7618 +201 1472 6650 +202 796 2774 +202 1743 3894 +202 3036 1832 +203 945 4637 +203 342 9748 +203 1026 5698 +203 403 7633 +204 1478 9778 +204 327 5316 +204 1417 9750 +205 2107 3004 +205 2794 1761 +205 760 1985 +206 2730 1560 +206 2882 1621 +206 1290 5785 +207 728 2150 +207 1097 8469 +207 1777 3998 +207 3033 1846 +208 2305 6133 +208 2909 6277 +209 311 6078 +209 1087 5062 +209 429 7546 +210 226 1132 +210 952 9171 +210 1687 5360 +211 1740 5907 +211 2193 3999 +212 1552 2865 +212 1661 2545 +212 778 2885 +212 1681 2532 +213 1055 3673 +213 993 4747 +213 349 5476 +214 1728 8009 +214 953 5090 +215 487 3866 +215 722 1699 +216 292 5626 +216 344 239 +216 1353 7961 +216 640 6545 +217 396 6409 +217 2274 3259 +217 474 519 +218 908 2422 +218 593 7531 +219 637 6981 +219 700 3695 +219 364 5993 +220 1043 12441 +220 1481 9377 +220 1292 5321 +220 350 7656 +221 1199 5172 +221 411 7439 +221 642 7307 +222 2741 7740 +222 1281 5668 +223 440 9778 +223 386 982 +223 381 7535 +224 2420 2835 +224 685 5170 +224 606 8489 +224 1052 2124 +225 1315 3261 +225 1688 8774 +226 721 5849 +226 878 6569 +226 745 2877 +227 719 4484 +227 2222 3519 +228 342 8045 +228 1160 4770 +228 1657 7577 +229 1086 2526 +229 1626 8271 +230 1497 1363 +231 493 3637 +231 830 1503 +231 1335 7979 +231 1909 3973 +232 2988 3046 +232 553 7055 +232 239 6083 +233 1411 2582 +233 517 10409 +234 2866 4552 +234 462 5346 +234 1428 4823 +235 1853 6746 +236 1048 9161 +236 1280 6413 +236 279 7787 +236 385 6363 +237 2966 195 +238 1679 4935 +238 1465 4465 +238 282 4080 +239 2199 6151 +239 2242 2971 +239 790 1946 +240 1069 1868 +240 1515 7756 +240 609 9138 +241 249 3064 +241 1317 7736 +242 1924 1943 +242 1230 980 +243 826 5214 +243 800 8599 +243 1581 7982 +244 1383 2409 +244 853 5984 +244 1560 4649 +245 1262 6596 +245 1805 9566 +245 2246 6322 +245 514 5934 +246 712 4852 +246 1065 3416 +246 1619 7207 +246 1555 5044 +247 3029 8856 +247 490 7386 +247 308 1725 +248 2813 4636 +249 892 6773 +249 1401 4855 +249 578 3824 +249 542 5627 +250 618 3573 +250 569 7229 +251 413 7085 +251 1000 7448 +251 511 5436 +252 351 1803 +252 342 4108 +252 1021 8102 +254 575 6687 +254 1368 7889 +255 1192 1397 +255 433 5948 +255 848 3979 +256 983 7187 +256 1677 4120 +257 1600 7210 +257 1050 5466 +258 696 4243 +258 586 5576 +258 1022 5288 +259 2758 2830 +260 1092 5724 +260 1143 6191 +261 1752 6657 +261 2515 10322 +261 346 7103 +262 2782 4659 +262 3007 6887 +262 551 5223 +262 543 1855 +263 442 6179 +264 720 1007 +264 2086 7721 +264 1511 5231 +265 1461 3084 +265 1550 3839 +265 268 5855 +266 2766 4592 +267 595 3545 +267 488 5428 +267 1291 6849 +268 2986 10125 +268 296 4978 +269 2412 2660 +271 2858 2000 +271 1330 6228 +271 377 6512 +272 675 1082 +272 1482 3374 +272 1478 4360 +272 1116 3618 +273 2960 7853 +273 388 7864 +273 960 6145 +273 1111 9776 +274 283 6065 +274 385 2280 +274 1475 894 +275 1730 6490 +275 896 3677 +276 2142 4784 +276 943 11401 +278 1129 984 +278 949 3088 +279 1562 1232 +279 3017 1714 +280 305 4758 +280 676 7445 +281 2778 4543 +281 1530 6967 +281 342 7279 +282 1878 3876 +283 1801 7800 +284 969 9265 +285 869 4667 +285 2288 2821 +285 1288 2610 +286 669 6746 +287 1454 4762 +288 2255 6260 +288 2736 4560 +289 2582 8717 +290 1398 7999 +290 1836 1063 +291 1036 5115 +291 909 5592 +291 893 9543 +292 1215 3011 +292 362 4711 +293 1624 4290 +293 2060 1881 +294 2847 8031 +295 828 7895 +295 1427 9480 +295 474 2263 +296 334 4965 +297 314 5090 +297 1123 3098 +298 1149 5348 +299 708 5631 +299 378 5380 +301 330 8280 +301 962 8319 +302 1759 5373 +302 1293 7862 +303 1118 3699 +303 1151 6894 +304 1559 4228 +304 3002 4349 +305 2928 2433 +305 575 4928 +306 1412 1493 +306 1545 7572 +307 312 9900 +308 2325 2913 +309 869 4623 +309 1517 3981 +313 1494 1846 +314 489 6365 +315 428 5295 +315 1216 4395 +315 1267 2598 +316 1319 4408 +316 1598 7460 +316 753 3531 +317 1188 6253 +317 971 3914 +318 1991 1968 +318 325 6658 +320 1225 8230 +320 1248 2590 +321 1675 8242 +322 872 3796 +322 1046 4863 +323 940 10316 +324 1471 1655 +324 454 3632 +324 1612 3585 +325 535 4842 +326 2248 5602 +326 428 8363 +327 2668 3235 +328 1644 653 +328 1084 5248 +329 1245 1515 +329 739 6901 +329 596 3643 +330 880 8167 +330 1243 6810 +331 1934 1080 +333 973 1817 +334 2818 5166 +335 1393 4130 +335 347 648 +335 440 9767 +336 1032 7533 +336 2556 8087 +337 1286 7641 +337 1360 7296 +338 1144 2212 +338 369 8063 +339 1534 9848 +339 2584 6273 +340 459 3742 +341 377 6976 +341 615 2063 +343 1902 4533 +343 486 3358 +344 2765 1408 +344 1426 6089 +345 1421 8176 +345 521 5508 +346 1140 3036 +346 1259 3610 +347 986 5181 +348 2678 2479 +349 372 6403 +351 2462 2206 +352 1057 2551 +353 371 4977 +353 628 5663 +353 435 5700 +354 2760 9481 +355 679 1283 +355 1650 9444 +356 1348 8732 +356 1153 6516 +356 1525 3185 +357 905 11042 +357 1451 8919 +358 656 7372 +358 825 3557 +358 1073 7746 +359 589 4500 +359 1181 3130 +360 813 8183 +360 1532 1007 +361 463 5101 +364 2121 2007 +365 441 4703 +365 1558 6777 +366 1063 3375 +367 655 3035 +367 1136 2498 +368 524 4388 +368 1574 3218 +369 850 6554 +371 609 5031 +371 738 5366 +372 521 2152 +373 1030 5899 +373 1634 6137 +375 725 6071 +375 1089 3843 +376 2875 6565 +376 472 1659 +376 774 7928 +377 2492 7617 +378 1840 2289 +378 2097 3742 +379 803 9598 +379 1930 841 +379 3021 4856 +380 425 7714 +380 526 4473 +381 1326 6520 +382 1403 3345 +382 1887 642 +383 469 1291 +383 1299 7170 +384 1113 1066 +385 469 5236 +386 569 8163 +387 1683 6412 +387 443 5670 +388 557 3163 +389 854 3678 +391 2281 2573 +392 1141 3382 +393 1782 9011 +393 1457 5989 +395 1384 7405 +395 505 2291 +396 3034 6451 +399 1154 3885 +399 1176 7401 +401 1128 10589 +402 2521 4013 +402 2800 2696 +405 434 4474 +405 835 6770 +407 1093 3151 +408 1938 6552 +408 1186 9035 +409 1233 4253 +410 1062 4808 +412 2961 8023 +414 1617 8994 +415 1128 6882 +417 1394 5855 +419 508 3344 +419 420 2749 +422 867 6950 +422 589 2582 +423 1549 6892 +424 1432 6042 +425 1179 1252 +426 1002 5161 +427 498 1639 +427 1537 362 +430 2993 2916 +431 876 10409 +432 2415 7436 +433 1442 6032 +436 524 6929 +437 1498 1896 +437 1641 8042 +438 510 6662 +439 762 6788 +442 2716 5874 +444 2674 12272 +445 588 3875 +446 1547 8399 +446 1244 8011 +448 1906 2889 +449 1096 2569 +450 627 9483 +453 1567 8055 +454 2510 6235 +458 573 2061 +460 574 4659 +462 1387 6806 +463 1419 6004 +464 1088 3004 +464 2859 2215 +465 991 6470 +467 579 4456 +469 1147 2331 +470 613 4046 +475 1654 5527 +476 2538 3992 +478 2101 6899 +479 598 3810 +479 626 7262 +480 945 3124 +482 2973 3169 +483 690 6634 +484 597 3161 +484 929 1714 +486 1611 4627 +487 1904 4459 +487 735 8068 +492 1268 3445 +492 1092 4732 +493 2635 1756 +494 2625 1713 +496 1570 6608 +496 602 5396 +497 1441 7121 +497 1729 5104 +498 1157 7032 +499 1869 6691 +500 661 8516 +500 2013 5315 +501 1009 8865 +502 1035 1430 +502 1660 6603 +503 557 3512 +503 2754 3553 +505 1622 1531 +507 855 7948 +507 1158 4925 +508 1227 3278 +509 2927 1214 +511 2368 2998 +512 633 6031 +512 956 2713 +513 528 4226 +513 1144 4032 +515 804 3340 +515 891 2446 +517 864 3229 +519 2930 2732 +522 959 2761 +523 2461 7301 +525 2371 7880 +526 1303 7283 +527 1447 3924 +529 592 3876 +529 1125 9074 +532 1300 4851 +532 615 3105 +533 2513 6939 +533 2705 4837 +535 1392 6823 +536 1293 3530 +536 1004 1229 +537 1228 6848 +537 705 5981 +538 1638 4261 +540 793 4724 +545 587 9100 +545 901 8653 +546 1538 3659 +546 1356 2583 +549 621 8989 +551 958 5208 +552 1642 3824 +552 776 1373 +555 2644 725 +556 2996 5962 +558 1891 9424 +559 1492 7918 +559 1355 6380 +563 997 6287 +564 2650 6236 +565 2425 5043 +566 2857 8018 +567 1672 1599 +568 1039 2694 +570 2122 5834 +571 1122 6527 +571 1283 2502 +572 616 4821 +572 1454 7325 +573 630 6253 +574 930 4255 +576 851 5120 +576 1615 4586 +584 1316 4580 +585 1027 5098 +585 674 5522 +590 723 1427 +595 1108 1156 +596 598 4725 +597 600 5684 +599 2188 4615 +601 1860 5173 +601 994 4168 +602 823 4760 +603 755 7401 +604 2095 8844 +605 2284 6901 +605 2364 6863 +606 699 4084 +607 1341 4949 +610 2620 8903 +614 2922 4807 +616 682 2546 +617 3019 5990 +620 951 6688 +621 1351 8491 +623 838 5915 +624 1463 6108 +624 1077 6290 +628 2648 9078 +629 1167 3301 +631 687 7945 +633 2908 7585 +634 1046 8385 +638 720 6180 +638 1395 2296 +645 1440 7896 +659 2504 5091 +660 2798 9324 +661 701 8058 +662 1485 2614 +668 811 7638 +683 2921 4220 +688 1962 1857 +692 1127 7451 +695 1203 9020 +715 1535 2262 +717 875 6853 +718 1689 2685 +723 1438 3474 +727 980 6371 +743 1741 3659 +747 1343 1768 +756 1344 8795 +764 3008 1251 +767 833 6423 +773 2555 4745 +777 2721 2632 +789 797 5514 +791 1344 3954 +793 2109 2792 +802 1078 7403 +809 1256 4254 +812 2069 6668 +820 1797 9720 +824 1239 1314 +829 1098 4073 +832 3027 5277 +852 2327 7006 +856 1898 6326 +858 1425 4074 +868 963 3366 +873 1316 6700 +885 1134 6004 +887 2950 8941 +888 1396 8401 +889 2227 6499 +900 1205 7257 +906 1346 7230 +907 1345 7448 +911 2277 3440 +916 1546 5174 +918 2117 6414 +951 1407 6438 +968 1270 3152 +977 1022 4258 +987 1177 6792 +1002 1049 3215 +1005 2827 6445 +1012 3013 5109 +1032 2507 3401 +1037 1124 2640 +1041 2653 5524 +1045 1102 1336 +1063 2972 3763 +1071 1994 6607 +1075 1340 8112 +1088 1467 2548 +1090 1100 6279 +1112 1758 7698 +1139 2048 4081 +1141 1636 1925 +1145 2583 6382 +1146 1664 8260 +1170 1688 1878 +1185 1822 4920 +1187 1261 4275 +1189 2991 2985 +1197 1469 6606 +1198 1594 4135 +1202 1818 6419 +1204 2780 7455 +1206 1575 6318 +1208 2056 7336 +1212 1501 7299 +1216 2785 5827 +1220 1269 4050 +1223 1470 2717 +1253 1296 6825 +1272 1795 1387 +1285 1484 1368 +1297 2267 10631 +1301 1890 5308 +1302 1686 8391 +1309 2152 1705 +1313 1464 4031 +1314 2947 2437 +1332 1845 3244 +1337 2724 9998 +1339 2073 4595 +1370 2971 1678 +1377 2287 3344 +1379 2040 2140 +1381 3003 3864 +1399 2447 3134 +1414 1486 3701 +1420 2251 10646 +1430 2168 5920 +1433 2182 5007 +1435 1571 3506 +1445 1499 2874 +1446 1712 2268 +1458 2846 5543 +1480 2964 5892 +1490 2045 7635 +1491 2734 8384 +1503 2762 6823 +1534 2914 7006 +1546 1910 2040 +1569 2864 1336 +1573 1646 7145 +1582 1732 8160 +1593 1942 5563 +1597 2910 8273 +1601 2213 6745 +1603 1651 1833 +1604 1606 8238 +1611 2603 5751 +1613 2236 5406 +1635 1700 5730 +1652 1653 5939 +1685 1972 3611 diff --git a/examples/topology-read/Orbis_toposample.txt b/examples/topology-read/Orbis_toposample.txt new file mode 100644 index 000000000..2a7df46db --- /dev/null +++ b/examples/topology-read/Orbis_toposample.txt @@ -0,0 +1,2769 @@ +956 1413 +366 1387 +1421 1369 +1421 1007 +794 1416 +1415 1309 +1397 182 +1402 492 +1412 1358 +1250 1209 +1420 416 +1380 85 +1364 1254 +1316 1129 +230 1310 +718 1301 +589 1422 +1411 571 +1407 1400 +1417 1224 +1310 1419 +944 1391 +1296 1397 +185 1409 +1252 1422 +1144 1408 +1360 989 +1323 1051 +445 1396 +1041 1408 +1414 1393 +483 1388 +1260 601 +385 1414 +1364 735 +1284 625 +1065 1421 +1395 1078 +1341 1350 +1135 56 +1416 1391 +736 1380 +110 1422 +1171 1076 +1374 1408 +1358 1048 +1420 1199 +195 1416 +498 1422 +1139 1419 +306 1405 +487 1418 +961 1422 +1421 409 +1351 1261 +954 1422 +1414 1401 +1257 1388 +1404 1400 +15 1303 +1153 1095 +1422 1145 +401 1417 +1277 1421 +339 1268 +1411 987 +261 1411 +1410 1358 +227 1248 +1418 630 +1392 1303 +1405 1032 +1212 590 +996 1421 +379 1374 +1417 1399 +16 1353 +237 1422 +1365 915 +1414 114 +80 1418 +1421 438 +1407 363 +1415 679 +1089 1385 +1422 973 +138 1422 +1419 1400 +1422 372 +51 1246 +983 1398 +332 1422 +1414 1344 +1396 1299 +495 1390 +1420 691 +1364 784 +139 1200 +1039 1358 +1399 1416 +1393 569 +18 1420 +1300 1415 +886 1417 +901 1335 +1350 446 +1419 1107 +1397 801 +651 1374 +778 1407 +1242 1409 +1394 806 +696 1407 +1097 1420 +1291 1414 +1414 1174 +340 1375 +931 1044 +1406 1364 +873 1418 +1415 1234 +1293 1415 +1418 905 +368 1422 +939 1422 +1123 1422 +1203 1289 +1372 1412 +1156 822 +1413 1042 +1092 1046 +1384 1266 +1415 1388 +1063 1374 +1418 1194 +1323 91 +657 1326 +1422 553 +1422 1395 +1287 393 +1221 1293 +1375 1310 +1346 1160 +1395 1145 +258 1418 +874 1421 +359 1372 +1298 1405 +1418 752 +639 1353 +1340 1421 +1385 432 +1421 841 +1397 1361 +1391 1312 +300 1398 +1329 1051 +1294 1057 +1160 13 +1421 1084 +1419 1358 +885 1418 +1398 593 +958 1420 +488 1410 +1362 1161 +1289 715 +1384 569 +89 1216 +466 1227 +803 1191 +877 1411 +1420 783 +796 1345 +1421 1253 +1390 148 +1083 1418 +1416 212 +208 1325 +1419 477 +1406 1361 +216 1131 +1419 868 +1344 1416 +1398 1311 +1366 688 +1400 1333 +563 1170 +1421 418 +1418 1085 +1422 1350 +1300 833 +1399 1400 +1245 1389 +689 1422 +1232 1418 +1262 1390 +1416 1400 +713 1375 +1420 1182 +660 1409 +1147 1393 +884 1420 +1176 1415 +1421 986 +659 1403 +1400 1401 +1408 1217 +1009 1394 +1050 1386 +1380 484 +1420 680 +1039 1416 +829 1403 +1342 1413 +1223 1353 +1414 1352 +1383 1314 +1408 1204 +1109 1393 +1322 570 +1305 1406 +1395 20 +1422 947 +539 1376 +1419 1390 +1229 460 +1299 402 +1422 94 +1422 463 +1420 605 +1422 1185 +1355 1346 +764 1422 +1421 1218 +1392 493 +1068 1147 +572 1422 +1422 1193 +1357 1315 +1406 1378 +1021 1349 +33 1270 +1421 927 +1062 1398 +1419 976 +1421 482 +1408 1101 +1273 1262 +403 477 +1013 1422 +851 1418 +849 1385 +894 1420 +1206 1409 +1300 1030 +1290 1419 +1394 1115 +1409 758 +499 1348 +1422 1011 +769 1261 +1415 1031 +570 1375 +1221 631 +981 1422 +1402 464 +1363 1419 +58 1420 +1387 1060 +1213 1419 +1420 1352 +1100 1414 +1003 1295 +895 1042 +1185 1338 +1311 411 +1392 289 +907 1383 +1278 1396 +1388 532 +1419 714 +828 1409 +1403 1098 +1066 586 +1181 1419 +1422 619 +492 1413 +1335 1418 +1375 73 +1302 823 +1405 1364 +810 1420 +1402 321 +1325 834 +1420 778 +1404 1290 +1358 414 +1411 885 +1413 744 +1421 673 +1407 440 +1417 1368 +1371 1385 +1422 564 +1399 1401 +508 1422 +518 546 +1091 1114 +1415 1386 +1327 1406 +1134 1416 +1398 1245 +1216 1199 +951 1359 +670 1408 +1097 1422 +567 1096 +714 1422 +1420 1351 +833 1057 +1055 1377 +1407 1289 +1226 994 +1396 1110 +1417 1393 +1011 1375 +813 1416 +1420 1221 +1395 1084 +1132 804 +728 1420 +965 1418 +637 1261 +561 1413 +1421 224 +1120 785 +1402 433 +1404 1369 +505 1311 +725 1419 +1132 1406 +1150 1418 +1406 1370 +1415 1035 +1391 127 +1407 682 +1409 999 +1411 773 +1366 1417 +1416 950 +566 1421 +1249 1382 +670 1409 +1368 1149 +391 1361 +1402 1247 +612 1382 +220 787 +1397 1069 +39 1382 +1418 725 +210 1420 +1343 358 +444 1422 +1135 1421 +1018 1422 +1269 604 +637 1418 +939 1417 +632 1247 +1422 815 +474 1337 +892 1420 +907 1360 +1077 1419 +1365 1215 +1250 459 +1293 27 +678 1422 +1372 594 +732 1411 +1293 384 +1417 1062 +1383 1421 +1105 1411 +628 1420 +1402 1188 +1407 87 +1409 1112 +902 1255 +1416 1302 +1037 1320 +1397 29 +1184 1414 +1422 335 +610 1416 +731 1321 +439 1373 +705 1295 +1026 1368 +828 1333 +1410 1395 +1417 1124 +1421 680 +1328 741 +1420 387 +986 1376 +1418 1066 +1391 1093 +1417 1401 +1365 1410 +857 1393 +1390 722 +1417 439 +1410 1372 +1409 1399 +1409 587 +1421 1055 +1420 1027 +481 1421 +1205 1415 +531 1321 +1061 1417 +449 1413 +1381 346 +1166 1418 +897 1415 +1352 61 +1105 1418 +1067 1386 +1303 1404 +838 1354 +1418 771 +892 1422 +1421 1118 +1411 1399 +1413 971 +1422 658 +1126 1155 +1235 1397 +1422 607 +855 975 +1306 546 +1413 507 +1417 651 +1128 1417 +733 1421 +1395 870 +1363 318 +442 1422 +1412 1291 +1418 194 +1311 621 +144 1413 +1406 640 +1314 1410 +1420 889 +1390 1421 +1280 1296 +955 1379 +264 1340 +1415 1370 +1348 189 +1393 1379 +1122 1418 +1205 1412 +1399 1414 +1170 1408 +1175 1259 +1025 480 +969 1418 +1270 1404 +1421 121 +1404 743 +422 1402 +1195 166 +427 1422 +1387 1406 +1419 618 +1158 1163 +1399 1229 +1413 1045 +1352 1393 +1419 729 +1328 255 +1358 1262 +1409 1134 +821 1371 +1306 266 +1361 605 +686 1227 +1411 848 +1422 1203 +202 1413 +853 1325 +362 1418 +1145 1391 +1056 1326 +1395 1350 +181 1387 +1158 1233 +948 1422 +219 1419 +1378 661 +307 1418 +1353 1412 +974 1385 +1034 1422 +328 1338 +1090 1059 +1154 1418 +1357 1417 +1294 1316 +243 1390 +707 1420 +1380 937 +1409 526 +1422 761 +1191 1263 +528 1210 +1366 22 +1417 1386 +1157 1417 +506 1286 +1409 797 +1409 1265 +574 1420 +1285 1111 +1368 1410 +1258 1179 +1421 268 +653 1413 +773 1386 +1389 103 +1420 483 +1413 478 +1278 984 +1420 703 +1422 1212 +1406 209 +1048 1421 +1422 985 +835 1315 +1391 1422 +1422 656 +1419 1040 +1141 502 +1422 42 +1360 1416 +270 1162 +794 1420 +1345 1419 +772 1421 +1420 682 +978 1410 +614 1396 +1418 695 +622 1376 +1367 1415 +1411 184 +132 1374 +1007 1419 +1412 1371 +1257 172 +1348 1347 +1422 1081 +320 1409 +466 1370 +899 1421 +1419 1201 +1416 1088 +1417 744 +1421 633 +464 412 +1367 1321 +819 1420 +917 1357 +839 1413 +1322 1412 +1404 1224 +393 1422 +1369 1328 +992 1409 +404 1316 +1420 529 +1321 397 +1421 533 +929 1383 +1119 1417 +1202 1414 +1069 1382 +1419 1202 +1407 1229 +1368 1178 +1200 685 +1383 1263 +1405 1218 +1355 1406 +881 1325 +267 1416 +1104 1273 +759 1420 +1308 1422 +154 1186 +1333 1382 +1408 919 +1260 1317 +1422 418 +1306 1414 +1401 1406 +1313 1369 +1165 1422 +1330 1045 +1411 625 +580 1277 +1420 904 +1416 503 +1395 992 +1000 1420 +1386 46 +324 1388 +1389 31 +1411 630 +1106 1407 +901 1348 +735 1160 +1418 93 +1421 1036 +1034 1420 +1420 136 +1285 820 +791 1418 +1391 971 +1326 754 +1397 1031 +583 1422 +394 1422 +708 1219 +1388 694 +211 1414 +1398 155 +1356 1412 +998 1402 +1225 1378 +716 1411 +1421 855 +649 1422 +1387 319 +1016 1422 +1422 621 +1417 1388 +704 1347 +1418 503 +1079 454 +1309 1313 +1377 1419 +1419 1098 +1239 1327 +1410 1383 +1402 1399 +1336 1266 +673 1422 +1283 1409 +646 1371 +1054 1060 +1399 1415 +1404 1344 +802 1352 +1195 1421 +1417 1349 +1421 311 +1409 198 +814 1274 +1398 995 +1419 632 +746 1421 +1292 90 +661 1416 +1317 1413 +1409 729 +1252 1377 +895 1389 +740 1419 +1414 1369 +1197 179 +898 1386 +1297 671 +107 1381 +866 1420 +1067 350 +656 585 +623 1422 +291 1422 +259 1422 +768 1354 +1308 521 +701 1388 +1343 1419 +1327 1419 +1421 1313 +929 1342 +1402 1047 +1418 578 +666 1422 +395 1407 +1326 1331 +1203 1223 +1231 1382 +1022 1417 +597 1415 +1207 1371 +719 1415 +491 1171 +1414 617 +1269 1394 +1418 407 +1338 1058 +1304 1307 +226 1403 +1404 1387 +1398 2 +1257 1082 +1388 26 +809 1421 +449 1268 +904 1416 +1418 1012 +766 1420 +1065 1411 +823 1393 +298 1420 +1417 1053 +707 1421 +1345 910 +1422 1324 +798 1390 +1420 743 +924 1380 +1013 1402 +1404 1000 +1306 574 +688 1402 +1337 1412 +1421 756 +462 1421 +1140 1345 +1421 49 +1311 1406 +1222 1276 +1375 435 +1323 624 +517 1380 +1417 451 +1422 310 +627 1371 +1304 1421 +1233 301 +1052 1397 +1422 544 +1417 1241 +1307 431 +1401 1410 +1395 1415 +1347 665 +1420 1087 +671 1411 +1332 1407 +1421 469 +1408 1279 +1421 1308 +173 1376 +1407 109 +1359 1212 +1374 1417 +1419 808 +1254 1408 +1329 746 +1181 1361 +1390 1417 +1345 528 +883 1388 +1411 1059 +1139 1071 +1129 1368 +1417 1358 +1391 1250 +817 1421 +542 1421 +455 1421 +658 1421 +1420 265 +1255 1370 +635 1421 +1190 1345 +837 1415 +1420 1024 +1403 322 +1406 1365 +1257 1420 +1421 779 +1421 456 +817 1418 +1418 842 +647 1418 +1181 1383 +861 1407 +383 1422 +1198 1413 +1415 430 +1335 1233 +399 1408 +1259 1387 +1014 968 +117 1319 +942 1356 +1410 1387 +1334 552 +1422 826 +1118 1397 +428 1391 +1375 231 +1417 1293 +1408 1189 +1169 1392 +1410 1380 +1406 1220 +1002 1228 +235 1329 +581 1420 +761 995 +1396 398 +598 1407 +962 1422 +1269 1281 +1396 1247 +1399 1406 +1340 877 +1320 482 +1246 1382 +1406 1231 +1420 990 +417 1388 +998 1422 +579 1421 +1328 1208 +697 1420 +1417 1103 +1372 1404 +286 1421 +1002 1350 +1405 104 +1421 1323 +991 1389 +1399 1413 +1032 1282 +1417 844 +1355 1267 +1291 131 +1026 1386 +1422 475 +858 1330 +867 1156 +649 1402 +1419 1321 +1109 1232 +602 513 +1196 1314 +1397 1231 +472 113 +72 1364 +1044 960 +1398 441 +1421 870 +1412 1375 +1255 815 +1244 1096 +1404 1375 +1335 1414 +1405 1329 +1420 433 +1338 1419 +1124 1350 +400 1420 +701 1403 +1344 337 +1412 1324 +831 1319 +1314 1419 +1415 396 +1020 1368 +1294 1174 +531 1355 +1305 1418 +736 1403 +1405 1384 +722 1398 +40 1359 +1419 1063 +1022 1419 +1418 123 +896 1420 +588 1396 +1354 807 +872 1312 +1249 1324 +1419 1369 +1413 1283 +10 1422 +681 1421 +1359 274 +1081 396 +1422 953 +1409 1143 +1422 1354 +1419 1384 +1419 1073 +1418 1401 +473 1393 +1244 1388 +1076 1420 +1028 1167 +1421 960 +950 1419 +1320 1417 +842 602 +1418 738 +1418 592 +1228 916 +416 1360 +1030 1405 +1121 1385 +555 1422 +1072 1111 +156 1409 +1021 1420 +1353 1376 +1392 496 +1211 1290 +1323 1414 +246 1355 +1392 811 +1281 1418 +840 1420 +1410 1333 +920 1420 +1406 1258 +1420 364 +1419 1218 +1056 1422 +1420 1120 +390 1368 +728 1421 +1417 162 +551 1326 +1420 44 +1408 1277 +1421 726 +1183 1411 +1344 530 +1242 1414 +1185 1394 +119 1318 +1375 1073 +1384 423 +1397 844 +1389 1294 +1363 1352 +1376 413 +1173 1415 +1421 554 +1413 734 +1417 7 +1405 1388 +1017 1422 +1267 547 +1404 1337 +1392 1240 +1409 931 +1265 1416 +1378 356 +1206 1416 +1411 251 +1418 1069 +1421 596 +1288 1417 +1409 149 +1422 284 +436 1413 +717 1422 +30 1391 +1159 1387 +1418 847 +683 1366 +1131 1396 +86 1407 +1421 643 +1204 1085 +338 1420 +430 434 +1402 636 +1362 1414 +403 1083 +1275 1417 +1395 229 +1176 1420 +1420 485 +159 1419 +1033 1194 +1227 1356 +1390 1246 +169 1385 +1409 804 +1422 1126 +753 1420 +1256 552 +1422 341 +1196 1419 +972 1284 +1287 880 +1404 1217 +1422 1304 +1038 1422 +1280 373 +1419 1232 +1255 1414 +936 1388 +1331 1091 +883 1411 +187 1107 +862 1411 +1275 1398 +1406 1142 +1347 1412 +909 1339 +1277 1379 +1420 201 +1288 389 +1008 1341 +1016 1418 +1366 1227 +575 1415 +1416 424 +928 1264 +1124 1419 +1410 1092 +1257 1275 +1184 1388 +1421 473 +1340 865 +1355 1421 +1420 678 +152 1284 +810 1422 +1245 1219 +1415 1179 +1414 1394 +1219 1384 +1421 1064 +126 648 +753 1396 +1418 800 +557 1419 +1330 525 +1368 1412 +1417 1123 +1109 1108 +1087 1301 +917 1393 +1339 1376 +1410 1399 +460 1279 +940 1420 +1422 1178 +105 1325 +1406 1339 +1405 1354 +1380 348 +1275 1393 +1347 668 +1364 1177 +1417 1332 +1357 1410 +1348 1192 +1372 1381 +635 1422 +1220 1421 +1412 1386 +1421 949 +1412 1202 +1243 129 +966 1408 +1416 675 +1420 398 +1086 1381 +1354 1418 +1418 1265 +1384 1214 +1391 1096 +1405 1322 +1292 1418 +1222 1378 +1252 1393 +1406 1266 +1416 548 +1339 1416 +1367 1288 +1410 1371 +985 1407 +1421 431 +1117 1422 +305 1327 +1211 1419 +1205 805 +1271 1159 +1377 941 +1369 1410 +900 1399 +1154 1422 +1407 495 +890 1421 +1409 566 +1415 1351 +1338 1414 +1404 1313 +1414 1382 +1401 1415 +1313 1296 +949 1373 +584 1421 +1418 174 +59 1413 +1236 1346 +908 1386 +1078 1393 +1318 1414 +1395 603 +1422 550 +1377 1333 +699 1360 +1099 1413 +1380 1309 +1287 1203 +1394 21 +634 1411 +1418 1204 +1420 1194 +1031 1351 +303 1369 +1410 1384 +476 1420 +1381 1249 +1370 599 +1245 407 +1416 1269 +78 1408 +1422 747 +677 1415 +1341 1420 +1422 920 +1413 879 +1400 1412 +415 1335 +522 1354 +47 1412 +515 1419 +1006 1422 +1394 1412 +991 1390 +6 1420 +750 1330 +1300 410 +560 1360 +1418 712 +37 1421 +1055 1294 +1413 463 +1223 1389 +1260 1261 +1396 97 +1259 1380 +1370 1405 +875 1354 +1393 631 +438 1418 +1393 966 +1217 1418 +1410 1103 +1292 1152 +100 1274 +1420 1082 +1079 1415 +957 1421 +863 1348 +1101 1081 +1058 287 +645 1421 +1215 17 +1422 1331 +1421 1336 +1237 1417 +1236 1248 +1164 1372 +1032 1418 +1288 69 +1420 915 +203 1375 +1329 1276 +1408 1305 +544 1415 +1041 1416 +1421 639 +1419 840 +1392 1414 +1422 1166 +730 599 +1262 1417 +770 1206 +1418 392 +1271 1419 +1004 1421 +1422 1076 +692 1417 +1420 1400 +1196 1393 +1418 848 +1422 1299 +1241 1363 +918 1296 +410 1422 +1407 645 +1380 1406 +108 1420 +1359 1415 +1360 505 +1390 1127 +1199 453 +983 1420 +993 1409 +1384 1414 +454 1420 +1402 489 +1347 1410 +1379 1097 +1165 1421 +1199 1413 +1327 1192 +893 1422 +548 1422 +1372 518 +1033 1377 +151 1357 +1074 1402 +1378 1061 +1184 1419 +1396 554 +1309 1144 +1408 1117 +1318 1421 +993 1394 +1256 1415 +975 1420 +776 1421 +595 1422 +1059 1386 +1086 538 +277 1335 +727 1418 +1307 158 +1397 498 +1005 1328 +1386 1256 +887 1316 +1071 1363 +1404 1106 +41 1350 +1133 1416 +1409 551 +1421 316 +854 1420 +1419 1264 +221 1420 +948 1418 +67 1271 +1411 106 +1329 1037 +1001 1422 +1292 1143 +1397 846 +290 1361 +1357 723 +294 1326 +1394 741 +1390 427 +1371 1198 +435 1416 +1418 82 +1308 550 +1270 375 +1398 1044 +1414 1331 +1414 1258 +683 1324 +1362 329 +1312 19 +609 1421 +1314 1362 +1189 1310 +1356 1410 +596 1381 +336 1366 +1310 1191 +1408 1080 +1100 1372 +1389 1079 +1224 1421 +994 1353 +1125 1418 +1421 647 +816 1279 +1315 75 +1008 1367 +1420 1201 +1049 147 +45 1422 +494 1421 +716 1394 +925 1352 +923 801 +1336 81 +1351 249 +1394 1327 +1415 1219 +1267 1363 +1333 1413 +1238 1415 +1422 978 +1232 1354 +9 1422 +1186 1420 +1370 710 +1335 655 +176 1422 +331 1420 +1421 245 +1321 553 +516 1418 +1420 317 +1304 60 +1405 1399 +1300 534 +1265 549 +1342 558 +1403 1218 +1192 1230 +1422 479 +1310 1332 +1116 615 +1419 1074 +1413 567 +1272 1234 +1334 1420 +1421 238 +924 1405 +128 1422 +1365 262 +537 1420 +120 1411 +1422 1158 +165 1418 +1341 1422 +1123 1418 +1398 652 +1136 1315 +1298 1373 +989 1395 +1410 1381 +1382 122 +378 1420 +1340 458 +517 1276 +250 1422 +811 1415 +467 1347 +514 1390 +1411 1111 +1299 652 +1113 1396 +1419 1288 +1390 429 +447 1383 +488 1095 +1398 684 +1420 706 +1408 1401 +1291 421 +1397 440 +428 1421 +1358 1385 +921 1420 +964 1264 +1113 607 +530 1345 +742 1390 +1091 1356 +748 1413 +1196 1365 +1419 845 +958 1422 +1385 183 +835 1421 +1290 1328 +1404 1401 +860 1420 +1422 1251 +1295 501 +133 1390 +1416 1198 +903 1422 +1387 695 +1390 933 +1420 558 +1420 217 +1422 782 +84 1344 +1365 1414 +1193 1377 +1411 500 +388 1378 +1357 1373 +1329 1406 +1237 1201 +1418 52 +1338 386 +1422 426 +1335 1061 +1420 1304 +520 1349 +1366 1359 +1395 698 +1419 390 +905 1413 +1382 577 +1420 690 +11 1409 +1413 914 +1307 1386 +1390 1410 +1395 1416 +980 1122 +1264 1422 +1391 1259 +767 1063 +1412 1378 +1416 853 +1410 1392 +674 1357 +1239 624 +1420 1101 +1417 535 +1414 1297 +1337 1415 +1010 1383 +1401 1390 +1104 1388 +1370 170 +1384 1116 +1387 1172 +1422 1131 +1412 1325 +1398 1305 +1361 662 +1418 1174 +1090 1420 +1421 1344 +654 774 +1405 1383 +641 1422 +1113 1388 +102 1319 +1214 1410 +422 1417 +1367 774 +1337 1286 +1190 1422 +314 1340 +1417 1381 +458 1121 +894 1422 +1392 1412 +1337 1302 +667 1421 +1243 1209 +860 1407 +626 1361 +1308 1036 +1216 1415 +1406 1400 +663 1422 +1412 1390 +1421 1119 +1422 576 +1420 399 +1208 1408 +1362 1422 +1327 1253 +12 1083 +1378 28 +77 1378 +1399 1412 +1341 1349 +1396 657 +1233 1418 +1412 1367 +1207 1380 +1405 413 +1422 798 +1422 1229 +1413 1226 +1410 1312 +1387 789 +780 1382 +1377 791 +1422 272 +494 1422 +1422 490 +177 1308 +1299 1413 +478 1414 +256 1420 +424 1422 +611 1422 +380 1369 +1188 1148 +1018 1418 +292 1288 +1382 1304 +1397 253 +1327 406 +1 1330 +876 1361 +559 1409 +1413 921 +1403 1137 +996 1371 +874 1394 +1333 977 +598 642 +1416 1401 +1303 762 +1412 1366 +1392 944 +1172 1420 +1365 532 +954 1417 +663 1394 +1403 1210 +1404 1399 +869 1422 +276 1349 +1137 764 +116 1400 +1413 1167 +468 1420 +704 1393 +1363 841 +542 1413 +432 1422 +1420 96 +1302 164 +1407 891 +419 1387 +941 1422 +1422 850 +1405 1347 +914 1289 +1419 882 +1372 280 +1388 1102 +1105 1416 +1040 1317 +1049 1380 +1277 1309 +1420 545 +1376 1209 +1406 1385 +271 1422 +1133 751 +1136 1418 +1422 1204 +646 1414 +423 1417 +1047 1408 +153 1305 +1140 1381 +943 1422 +1422 851 +1390 511 +1336 175 +1395 1251 +1415 628 +92 1422 +1399 1403 +1338 54 +1422 759 +1420 747 +1419 1301 +1420 1264 +1417 343 +1410 1366 +1272 1243 +789 1369 +1144 1418 +1408 970 +1405 1367 +1387 1228 +1418 660 +1422 1107 +1213 395 +1177 1374 +878 1370 +957 1420 +1422 240 +1108 1025 +1420 672 +1148 1337 +450 536 +112 1420 +1419 135 +206 1315 +1414 241 +1402 1102 +1416 448 +1287 1421 +392 1407 +802 1376 +1010 1312 +1281 1297 +1156 1138 +1408 1400 +825 1421 +913 1422 +1408 1046 +1420 675 +1377 308 +1151 1389 +1128 1373 +1414 1372 +525 1295 +493 1373 +1220 1393 +1415 150 +871 1388 +1422 997 +738 881 +1396 334 +421 643 +559 1422 +1260 1422 +1389 1312 +737 1383 +506 1132 +1373 1216 +524 1417 +1382 1419 +1422 1051 +1394 715 +1411 469 +1235 1416 +1268 1421 +1088 1389 +1337 1205 +1302 1420 +956 644 +1418 1141 +1381 1050 +526 1415 +1419 1093 +1386 1317 +969 1369 +1412 1293 +1404 1355 +0 1421 +1379 711 +1413 1149 +99 1422 +1384 509 +1412 180 +662 1422 +1417 1319 +1412 1383 +1421 555 +1397 57 +1351 1089 +1363 1416 +918 1402 +1420 610 +1420 1164 +888 1394 +1406 1376 +952 1422 +1320 1393 +1244 927 +1041 1240 +1412 1377 +1273 1341 +1173 1373 +1395 1273 +1420 882 +1420 720 +1398 14 +1064 1416 +1379 1134 +130 1419 +1042 1408 +1421 875 +932 1420 +1421 234 +1378 443 +1414 1376 +1422 511 +1422 1094 +1360 1412 +374 1117 +1419 1126 +1313 1408 +1284 1078 +909 1384 +893 749 +1404 470 +1240 450 +852 1422 +1093 1413 +1421 706 +365 1422 +876 1384 +1283 1090 +1380 1414 +1419 608 +1421 536 +1415 95 +1407 1399 +1225 369 +1387 827 +1364 285 +1422 676 +510 1328 +457 1385 +1422 1095 +1422 1054 +1296 1420 +1418 1251 +1360 1280 +1391 871 +1329 1414 +1368 1414 +937 1415 +1386 961 +387 1418 +167 1419 +1121 859 +1175 1416 +1420 1068 +1405 1362 +644 1421 +776 1388 +1279 163 +1415 282 +762 1422 +504 1413 +381 1387 +1385 168 +1422 988 +1356 344 +1268 1267 +1415 1133 +1412 1401 +1421 788 +1399 1419 +1407 705 +1421 1258 +676 1420 +1253 1405 +1412 1040 +718 1421 +803 1372 +455 1422 +1414 795 +799 1422 +1422 884 +1421 1248 +740 1355 +1415 1331 +963 1254 +207 1394 +1412 1382 +973 1320 +446 1421 +1420 1399 +1225 748 +1422 1050 +1416 1379 +755 1420 +737 1388 +1377 471 +1416 968 +1421 1359 +1414 1400 +461 1422 +1421 1400 +1404 1363 +1402 562 +565 1376 +650 1416 +1025 1421 +1410 1394 +866 1403 +1402 692 +863 1417 +1406 1388 +302 1417 +1404 1361 +1142 1394 +1065 1120 +1419 419 +586 902 +1420 1143 +1208 1419 +1281 1273 +604 1420 +1415 1068 +1421 486 +254 1392 +1422 606 +608 1358 +36 1421 +1314 500 +1418 524 +1414 1361 +1422 296 +987 1391 +1409 1187 +1379 468 +1405 1379 +1149 1417 +955 1421 +1290 1357 +591 1394 +1365 1189 +1193 613 +1414 442 +1419 1067 +611 771 +1421 1028 +1413 812 +1148 1403 +1417 616 +1177 1421 +1356 1405 +1072 1367 +1168 1388 +1230 1318 +1397 1261 +1349 1108 +910 1421 +549 1384 +481 1387 +1412 739 +1420 1183 +1283 1379 +1383 1353 +1397 101 +838 1421 +1414 1019 +1340 588 +1195 1352 +1411 429 +145 1416 +1332 1099 +1420 1060 +1387 283 +1383 837 +1380 1412 +1421 564 +1412 1393 +1414 1315 +693 1418 +824 1384 +1418 514 +1317 1210 +1421 523 +1419 668 +236 1371 +1221 1236 +839 1375 +1316 1317 +489 1215 +1369 669 +1402 1084 +1337 1370 +1405 1373 +1364 288 +827 1418 +1396 5 +327 1368 +1371 629 +1392 1282 +790 1416 +951 1421 +864 1370 +1407 1286 +1389 767 +345 1272 +822 1419 +1422 775 +1334 397 +1379 1410 +453 1407 +1368 1416 +1367 257 +1377 437 +1053 1419 +1385 745 +1362 1419 +655 1412 +1127 1368 +1417 543 +1012 1408 +1404 1151 +1418 730 +1419 648 +487 1422 +1349 357 +1330 1298 +1416 1225 +1106 1421 +1351 527 +1415 1183 +834 1295 +1411 55 +1421 1394 +1417 137 +665 35 +1417 1271 +1419 1242 +1253 1376 +1416 1015 +1253 1418 +568 1417 +1114 1422 +406 1403 +638 1393 +1420 484 +930 946 +713 1412 +124 1380 +247 1418 +401 1422 +1271 666 +1408 389 +1356 1369 +125 1279 +1297 157 +1422 1170 +1417 388 +1374 1270 +1282 1302 +1410 1263 +1399 1421 +1420 952 +1419 452 +1386 355 +1422 541 +1420 587 +1386 24 +1418 233 +1421 1234 +1396 1212 +1410 1362 +1418 563 +228 1406 +1419 414 +1386 1286 +1406 479 +1420 999 +1320 1412 +1385 1062 +1161 1421 +462 1422 +1413 1266 +1324 758 +140 1421 +1163 1367 +1419 1190 +1422 486 +1420 886 +698 1422 +1422 755 +591 1409 +523 1354 +32 1379 +687 1389 +1405 1335 +1421 650 +1418 1256 +1421 1150 +190 1393 +1421 146 +1419 1283 +1402 1400 +1420 1313 +1311 1070 +1389 824 +1421 1043 +1418 62 +1085 1390 +1236 1394 +1421 193 +1418 763 +1417 640 +1377 1416 +391 1422 +1420 911 +1146 502 +616 1346 +922 1418 +1422 434 +1114 1322 +1422 1296 +1416 1372 +1348 1162 +1415 1400 +1414 1391 +1412 1349 +1417 1338 +1385 71 +1410 1340 +1407 1075 +1411 1115 +142 1197 +865 1420 +1234 1420 +1421 1330 +1094 1336 +797 1413 +543 1418 +1418 467 +712 1406 +1381 1364 +1409 1400 +1282 1389 +83 1422 +739 1422 +1392 1070 +1356 1399 +1098 1290 +1406 1348 +1382 1269 +936 1409 +534 1390 +1299 1421 +269 461 +1191 1408 +1052 1391 +1332 1325 +1392 43 +623 412 +1405 1207 +672 1422 +1146 859 +1367 1414 +1403 697 +849 1323 +1402 988 +830 1411 +1420 1136 +1420 757 +1075 1420 +1419 1071 +1378 537 +1407 529 +745 1420 +862 1396 +1411 497 +1422 1139 +1314 1394 +1409 1165 +984 619 +1409 788 +1387 1110 +926 1391 +1140 1419 +200 1419 +626 1422 +64 1419 +1281 679 +1348 580 +260 1280 +793 1074 +1410 1285 +1345 1418 +1389 777 +1416 1386 +1417 1240 +1250 1408 +1381 315 +1418 888 +1418 593 +188 1419 +1153 1345 +1420 1077 +1408 1172 +1407 807 +962 1411 +1421 1401 +723 1179 +1362 1155 +1272 1415 +1316 1420 +1291 1246 +326 1360 +693 1421 +1278 1422 +845 1422 +617 1286 +1422 756 +353 1292 +1419 1289 +1363 1345 +1318 724 +1381 519 +864 1422 +1409 76 +684 1274 +1422 1210 +313 1416 +1422 1082 +634 1370 +1422 1231 +1408 1112 +689 1420 +1176 1418 +1309 1406 +953 1418 +404 1419 +1420 1005 +1315 1239 +360 1422 +1419 1401 +323 1419 +1224 1414 +700 1422 +1028 1409 +1363 1421 +1382 595 +1421 614 +1375 719 +1420 1157 +1422 1182 +1422 872 +1391 8 +1200 1419 +420 1386 +1346 1343 +1343 1422 +1222 613 +141 1322 +1265 1384 +1415 1039 +1416 1319 +708 1416 +1412 1339 +1408 465 +452 1418 +1419 1339 +1397 504 +1410 1400 +1027 1391 +1420 796 +1405 1400 +1422 545 +808 1422 +1284 540 +1367 590 +1417 1038 +1420 942 +1415 1125 +1421 66 +1389 843 +443 1420 +721 1418 +1421 783 +1415 457 +1351 1419 +1406 967 +1414 867 +1410 1374 +1147 1318 +1420 1003 +765 1422 +1159 1422 +622 1420 +1417 938 +1420 1256 +1358 750 +1317 814 +1412 1280 +1341 1406 +472 1334 +1411 295 +642 1409 +118 597 +1421 519 +1413 1119 +1418 696 +606 1403 +160 1421 +1344 805 +1405 806 +244 1393 +1213 222 +1275 1420 +1422 23 +1417 982 +1406 1394 +1343 1312 +252 1386 +1422 568 +1420 751 +1409 900 +1418 813 +1412 1370 +1320 232 +1383 1180 +411 1418 +1209 1324 +1419 1393 +1376 1400 +1377 1301 +1411 400 +627 1408 +1405 1341 +1389 293 +1406 1381 +1422 510 +1359 1295 +1348 1381 +1254 1419 +1422 1137 +792 1420 +1378 654 +1352 38 +1408 612 +1422 615 +535 1421 +1347 1415 +1419 1155 +1154 1332 +248 1418 +1075 1422 +1410 465 +1408 242 +1014 1351 +1417 342 +1422 836 +1421 1162 +1421 799 +1387 1421 +1418 426 +1019 1422 +1410 1220 +843 1305 +1197 1411 +1374 1053 +571 1413 +1342 1319 +1385 1355 +1409 333 +1403 1276 +1374 1422 +1338 935 +1408 1399 +539 1413 +980 1421 +225 1175 +512 1336 +1346 913 +1125 1380 +1422 1400 +934 1411 +1384 589 +1352 1413 +1214 1421 +1418 562 +1374 1214 +959 1420 +516 1394 +1242 215 +1104 1373 +1422 1152 +547 1422 +499 1411 +709 1422 +1422 898 +1381 700 +1385 1166 +1362 415 +1420 186 +681 1316 +441 1289 +1417 781 +770 1420 +880 1230 +1421 694 +1414 1036 +1416 890 +1421 1237 +959 1387 +1235 1342 +1403 787 +1389 53 +134 1373 +609 1413 +1385 196 +490 1409 +444 1380 +1420 930 +1420 1238 +925 1419 +1420 1187 +1323 1412 +1350 445 +1186 1421 +1421 522 +527 1178 +832 690 +1418 584 +775 1394 +1150 1422 +818 1407 +1416 1099 +1422 1202 +1334 749 +1411 711 +1422 192 +1421 943 +1407 618 +1407 575 +1406 1110 +780 1326 +1285 887 +1033 1418 +1412 1384 +1142 1422 +830 437 +191 1410 +878 1371 +1404 1391 +1422 795 +1411 1241 +1421 1138 +1404 1379 +1376 1115 +1375 669 +1379 1188 +1407 1164 +1417 74 +620 1403 +50 1346 +1171 1400 +273 1418 +501 1419 +1049 1384 +520 1402 +832 1342 +786 1415 +1419 1378 +1303 1294 +664 1422 +507 1394 +782 1407 +1072 1349 +377 1422 +1411 933 +769 1409 +1416 425 +1092 1418 +819 981 +1422 581 +1420 868 +1412 1373 +480 1118 +757 1416 +1422 1064 +1359 1046 +641 1393 +600 1420 +1402 997 +1403 1035 +1421 891 +1377 199 +691 1161 +979 1422 +1211 633 +1410 1307 +1422 702 +1419 869 +1403 178 +1362 1088 +1422 1167 +1417 1235 +1402 922 +1419 1387 +1421 760 +1356 638 +1066 1403 +1230 1420 +111 1420 +1038 1282 +370 1384 +928 1322 +1360 1333 +205 1402 +1359 25 +1298 1100 +686 1416 +533 1243 +947 1419 +800 1422 +347 1331 +1365 1321 +1407 687 +1406 1373 +703 1322 +1180 1029 +1206 1420 +1421 394 +1419 560 +299 1311 +1415 699 +349 1034 +1422 1226 +1420 451 +946 1334 +1422 1023 +1351 1416 +1211 1421 +1420 1401 +766 1367 +1306 540 +1407 1309 +1331 1052 +278 1422 +846 1262 +1422 1215 +1420 908 +1410 792 +1422 577 +1017 1310 +1420 903 +1422 974 +1247 850 +1411 1285 +1373 1419 +1298 752 +1419 1056 +1272 1422 +1334 115 +1416 508 +1130 1418 +1421 304 +1410 1325 +1416 1300 +1411 857 +1409 576 +1403 906 +1415 1379 +1421 1116 +1383 557 +702 1332 +967 1403 +1419 1259 +940 1413 +1326 1173 +1420 724 +1415 1255 +667 1187 +1193 1102 +354 1343 +541 1371 +1373 731 +1411 1004 +1421 279 +821 1127 +1420 1163 +1350 1112 +1418 858 +742 1421 +889 1422 +1381 1414 +1408 1035 +1370 1238 +1422 214 +1419 1152 +1020 1420 +561 1418 +1418 912 +1413 1401 +1418 447 +1420 945 +1422 1258 +1006 1419 +1422 1089 +1201 1027 +470 459 +1412 1342 +1355 513 +790 1411 +1371 1422 +98 1368 +1353 1419 +1415 1103 +1138 1420 +1141 1391 +1213 1198 +1420 475 +1422 1319 +1297 1342 +1417 1192 +48 982 +382 1287 +1422 938 +1415 474 +1420 1298 +1379 1339 +709 1421 +1391 856 +717 1366 +521 1422 +1417 1303 +1244 1407 +836 1263 +1420 1241 +281 1393 +1416 4 +1402 63 +1404 1328 +1415 1045 +1403 79 +1383 88 +405 1420 +1357 1151 +1422 786 +1422 565 +1421 1129 +1420 409 +1254 1306 +1301 538 +515 1366 +592 1422 +1421 239 +1130 1421 +1415 1200 +556 1422 +1422 1399 +1414 923 +721 970 +1223 1070 +1015 1394 +1353 772 +1024 1278 +1421 213 +1168 1407 +1419 1334 +556 1411 +734 1420 +371 1413 +1207 1420 +456 1419 +1420 1363 +1411 1057 +1407 497 +1421 1228 +1406 1369 +1411 1401 +1413 932 +1411 275 +1409 1401 +1365 1043 +1364 1047 +1168 1420 +1422 726 +1418 1399 +1418 1318 +1419 826 +1372 976 +1410 1343 +1330 1350 +784 1410 +620 1208 +1080 1239 +1418 963 +223 1415 +1422 70 +1409 916 +1413 1122 +1413 856 +351 1420 +1420 1347 +1379 1414 +1413 352 +1422 1080 +1364 1422 +1422 417 +583 572 +1420 912 +768 1391 +1413 582 +1418 1030 +1415 906 +263 1422 +1421 965 +1420 579 +420 1422 +1346 1128 +1422 408 +1420 763 +781 1420 +1413 1251 +1301 1378 +1037 1417 +1421 934 +1417 1400 +1420 512 +760 1411 +1422 1073 +1416 1217 +1413 218 +1415 1009 +1411 197 +1153 1422 +1410 733 +1344 1263 +1415 491 +820 1420 +720 1421 +1420 402 +710 1363 +1422 896 +1421 1226 +1414 1029 +1411 65 +1420 977 +1402 852 +312 1421 +1157 1043 +1421 509 +1353 732 +1416 1332 +1346 1180 +1421 1331 +659 1411 +1419 1023 +1420 677 +1353 3 +1349 143 +1420 1270 +1342 485 +1421 1169 +1420 1267 +1409 1135 +935 1260 +601 1341 +1402 825 +1421 408 +1420 376 +1422 1274 +1407 309 +1418 1276 +325 1292 +1419 964 +1378 990 +1414 1195 +1402 809 +204 1354 +945 1422 +1420 727 +1422 1029 +1403 573 +1422 1401 +1422 629 +1421 873 +1197 1343 +1409 897 +1419 1323 +1422 899 +405 1421 +1421 1086 +1403 879 +1407 1087 +1407 573 +367 1421 +1357 664 +1407 1169 +1339 171 +496 972 +1421 594 +1421 68 +1418 812 +1403 1400 +1409 1237 +1421 1094 +1419 448 +1413 425 +1421 1194 +1403 1001 +1278 861 +1421 578 +1422 818 +1146 1420 +1266 1344 +1420 1249 +1411 1400 +1358 1238 +1422 603 +829 1422 +1418 926 +1421 1058 +1422 161 +1422 1222 +1420 653 +1366 1336 +1402 779 +1371 1414 +1421 1054 +1421 1274 +1364 1324 +754 1391 +1339 636 +1420 1048 +361 785 +436 1130 +1351 1077 +1420 793 +1421 1182 +1421 476 +1411 585 +1421 582 +1268 1190 +1412 1365 +1422 34 +1421 854 +1422 919 +1421 765 +1421 911 +1336 1026 +1421 685 +1324 816 +1297 600 +1421 777 +1421 979 +1343 297 +1385 674 +1410 1336 +1291 1343 +471 1390 +1248 1340 +1307 330 +1365 831 diff --git a/examples/topology-read/topology-example-sim.cc b/examples/topology-read/topology-example-sim.cc new file mode 100644 index 000000000..2abd04ea7 --- /dev/null +++ b/examples/topology-read/topology-example-sim.cc @@ -0,0 +1,208 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella + * Author: Valerio Sartini + * + * This program conducts a simple experiment: It builds up a topology based on + * either Inet or Orbis trace files. A random node is then chosen, and all the + * other nodes will send a packet to it. The TTL is measured and reported as an histogram. + * + */ + +#include + +#include + +#include "ns3/core-module.h" +#include "ns3/common-module.h" +#include "ns3/node-module.h" +#include "ns3/helper-module.h" +#include "ns3/simulator-module.h" + +#include "ns3/topology-read-module.h" +#include + +using namespace ns3; +using namespace std; + +NS_LOG_COMPONENT_DEFINE ("TopologyCreationExperiment"); + + +static list data; + +static void SinkRx (Ptr p, const Address &ad) +{ + Ipv4Header ipv4; + p->PeekHeader (ipv4); + std::cout << "TTL: " << (unsigned)ipv4.GetTtl () << std::endl; +} + + +// ---------------------------------------------------------------------- +// -- main +// ---------------------------------------------- +int main (int argc, char *argv[]) +{ + + string format ("Inet"); + string input ("examples/topology-read/Inet_small_toposample.txt"); + + // Set up command line parameters used to control the experiment. + CommandLine cmd; + cmd.AddValue ("format", "Format to use for data input [Orbis|Inet].", + format); + cmd.AddValue ("input", "Name of the input file.", + input); + cmd.Parse (argc, argv); + + + // ------------------------------------------------------------ + // -- Read topology data. + // -------------------------------------------- + + // Pick a topology reader based in the requested format. + + Ptr inFile = 0; + TopologyReaderHelper topoHelp; + + NodeContainer nodes; + + topoHelp.SetFileName(input); + topoHelp.SetFileType(format); + inFile = topoHelp.GetTopologyReader(); + + if (inFile != 0) + { + nodes = inFile->Read (); + } + + if (inFile->LinksSize () == 0) + { + NS_LOG_ERROR ("Problems reading the topology file. Failing."); + return -1; + } + + // ------------------------------------------------------------ + // -- Create nodes and network stacks + // -------------------------------------------- + NS_LOG_INFO ("creating internet stack"); + InternetStackHelper stack; + + // Setup NixVector Routing + Ipv4NixVectorHelper nixRouting; + Ipv4StaticRoutingHelper staticRouting; + + Ipv4ListRoutingHelper listRH; + listRH.Add (staticRouting, 0); + listRH.Add (nixRouting, 10); + + stack.SetRoutingHelper (listRH); + stack.Install (nodes); + + NS_LOG_INFO ("creating ip4 addresses"); + Ipv4AddressHelper address; + address.SetBase ("10.0.0.0", "255.255.255.252"); + + int totlinks = inFile->LinksSize (); + + NS_LOG_INFO ("creating node containers"); + NodeContainer nc[totlinks]; + TopologyReader::ConstLinksIterator iter; + int i = 0; + for ( iter = inFile->LinksBegin (); iter != inFile->LinksEnd (); iter++, i++ ) + { + nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ()); + } + + NS_LOG_INFO ("creating net device containers"); + NetDeviceContainer ndc[totlinks]; + PointToPointHelper p2p; + for (int i = 0; i < totlinks; i++) + { + // p2p.SetChannelAttribute ("Delay", TimeValue(MilliSeconds(weight[i]))); + p2p.SetChannelAttribute ("Delay", StringValue ("2ms")); + p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps")); + ndc[i] = p2p.Install (nc[i]); + } + + // it crates little subnets, one for each couple of nodes. + NS_LOG_INFO ("creating ipv4 interfaces"); + Ipv4InterfaceContainer ipic[totlinks]; + for (int i = 0; i < totlinks; i++) + { + ipic[i] = address.Assign (ndc[i]); + address.NewNetwork (); + } + + + uint32_t totalNodes = nodes.GetN (); + UniformVariable unifRandom (0, totalNodes - 1); + + unsigned int randomServerNumber = unifRandom.GetInteger (0, totalNodes - 1); + + Ptr randomServerNode = nodes.Get (randomServerNumber); + Ptr ipv4Server = randomServerNode->GetObject (); + Ipv4InterfaceAddress iaddrServer = ipv4Server->GetAddress (1,0); + Ipv4Address ipv4AddrServer = iaddrServer.GetLocal (); + + // ------------------------------------------------------------ + // -- Send around packets to check the ttl + // -------------------------------------------- + Config::SetDefault ("ns3::Ipv4RawSocketImpl::Protocol", StringValue ("2")); + InetSocketAddress dst = InetSocketAddress ( ipv4AddrServer ); + + OnOffHelper onoff = OnOffHelper ("ns3::Ipv4RawSocketFactory", dst); + onoff.SetAttribute ("OnTime", RandomVariableValue (ConstantVariable (1.0))); + onoff.SetAttribute ("OffTime", RandomVariableValue (ConstantVariable (0.0))); + onoff.SetAttribute ("DataRate", DataRateValue (DataRate (15000))); + onoff.SetAttribute ("PacketSize", UintegerValue (1200)); + + NodeContainer clientNodes; + for ( unsigned int i = 0; i < nodes.GetN (); i++ ) + { + if (i != randomServerNumber ) + { + Ptr clientNode = nodes.Get (i); + clientNodes.Add (clientNode); + } + } + + ApplicationContainer apps = onoff.Install (clientNodes); + apps.Start (Seconds (1.0)); + apps.Stop (Seconds (2.0)); + + PacketSinkHelper sink = PacketSinkHelper ("ns3::Ipv4RawSocketFactory", dst); + apps = sink.Install (randomServerNode); + apps.Start (Seconds (0.0)); + apps.Stop (Seconds (3.0)); + + // we trap the packet sink receiver to extract the TTL. + Config::ConnectWithoutContext ("/NodeList/*/ApplicationList/*/$ns3::PacketSink/Rx", + MakeCallback (&SinkRx)); + + // ------------------------------------------------------------ + // -- Run the simulation + // -------------------------------------------- + NS_LOG_INFO ("Run Simulation."); + Simulator::Run (); + Simulator::Destroy (); + + NS_LOG_INFO ("Done."); + + return 0; + + // end main +} diff --git a/examples/topology-read/waf b/examples/topology-read/waf new file mode 100644 index 000000000..941d56b43 --- /dev/null +++ b/examples/topology-read/waf @@ -0,0 +1 @@ +exec "`dirname "$0"`"/../../waf "$@" diff --git a/examples/topology-read/wscript b/examples/topology-read/wscript new file mode 100644 index 000000000..2595b4065 --- /dev/null +++ b/examples/topology-read/wscript @@ -0,0 +1,5 @@ +## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- + +def build(bld): + obj = bld.create_ns3_program('topology-read', ['topology-read', 'internet-stack']) + obj.source = 'topology-example-sim.cc' diff --git a/src/common/cost231-propagation-loss-model.h b/src/common/cost231-propagation-loss-model.h index eaa33d4c8..3ba7cbaec 100644 --- a/src/common/cost231-propagation-loss-model.h +++ b/src/common/cost231-propagation-loss-model.h @@ -74,11 +74,6 @@ public: void SetLambda (double frequency, double speed); double GetShadowing (void); void SetShadowing (double shadowing); - /** - * \param d the distnace between the sender and the receiver - * \returns the bulk path loss - */ - double cost231_formula (double d); // the formula that calculates the bulk path loss private: virtual double DoCalcRxPower (double txPowerDbm, Ptr a, Ptr b) const; double m_BSAntennaHeight; // in meter diff --git a/src/contrib/topology-read/inet-topology-reader.cc b/src/contrib/topology-read/inet-topology-reader.cc new file mode 100644 index 000000000..ab1cc5dc3 --- /dev/null +++ b/src/contrib/topology-read/inet-topology-reader.cc @@ -0,0 +1,140 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (Valesar@gmail.com) + */ + +#include +#include +#include + +#include "ns3/log.h" +#include "inet-topology-reader.h" + +using namespace std; + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("InetTopologyReader"); + +NS_OBJECT_ENSURE_REGISTERED (InetTopologyReader); + +TypeId InetTopologyReader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::InetTopologyReader") + .SetParent () + ; + return tid; +} + +InetTopologyReader::InetTopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +InetTopologyReader::~InetTopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +NodeContainer +InetTopologyReader::Read (void) +{ + ifstream topgen; + topgen.open (GetFileName ().c_str ()); + map > nodeMap; + NodeContainer nodes; + + if ( !topgen.is_open () ) + { + return nodes; + } + + string from; + string to; + string linkAttr; + + int linksNumber = 0; + int nodesNumber = 0; + + int totnode = 0; + int totlink = 0; + + istringstream lineBuffer; + string line; + + getline (topgen,line); + lineBuffer.str (line); + + lineBuffer >> totnode; + lineBuffer >> totlink; + NS_LOG_INFO ("Inet topology should have " << totnode << " nodes and " << totlink << " links"); + + for (int i = 0; i <= totnode; i++) + { + getline (topgen,line); + } + + for (int i = 0; i < totlink && !topgen.eof (); i++) + { + getline (topgen,line); + lineBuffer.clear (); + lineBuffer.str (line); + + lineBuffer >> from; + lineBuffer >> to; + lineBuffer >> linkAttr; + + if ( (!from.empty ()) && (!to.empty ()) ) + { + NS_LOG_INFO ( linksNumber << " From: " << from << " to: " << to ); + + if ( nodeMap[from] == 0 ) + { + Ptr tmpNode = CreateObject (); + nodeMap[from] = tmpNode; + nodes.Add (tmpNode); + nodesNumber++; + } + + if (nodeMap[to] == 0) + { + Ptr tmpNode = CreateObject (); + nodeMap[to] = tmpNode; + nodes.Add (tmpNode); + nodesNumber++; + } + + Link link ( nodeMap[from], from, nodeMap[to], to ); + if ( !linkAttr.empty () ) + { + link.SetAttribute ("Weight", linkAttr); + } + AddLink (link); + + linksNumber++; + } + } + + NS_LOG_INFO ("Inet topology created with " << nodesNumber << " nodes and " << linksNumber << " links"); + topgen.close (); + + return nodes; +} + +} /* namespace ns3 */ diff --git a/src/contrib/topology-read/inet-topology-reader.h b/src/contrib/topology-read/inet-topology-reader.h new file mode 100644 index 000000000..f7197129e --- /dev/null +++ b/src/contrib/topology-read/inet-topology-reader.h @@ -0,0 +1,76 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#ifndef __INET_TOPOLOGY_READER_H__ +#define __INET_TOPOLOGY_READER_H__ + +#include "ns3/nstime.h" + +#include "topology-reader.h" + +namespace ns3 { + + +// ------------------------------------------------------------ +// -------------------------------------------- +/** + * \ingroup topology + * \brief Topology file reader (Inet-format type). + * + * This class takes an input file in Inet format and extracts all + * the informations needed to build the topology + * (i.e.number of nodes, links and links structure). + * It have been tested with Inet 3.0 + * http://topology.eecs.umich.edu/inet/ + * + * It might set a link attribute named "Weight", corresponding to + * the euclidean distance between two nodes, the nodes being randomly positioned. + */ +class InetTopologyReader : public TopologyReader +{ +public: + static TypeId GetTypeId (void); + + InetTopologyReader (); + virtual ~InetTopologyReader (); + + /** + * \brief Main topology reading function. + * + * This method opens an input stream and reads the Inet-format file. + * From the first line it takes the total number of nodes and links. + * Then discards a number of rows equals to total nodes (containing + * useless geographical informations). + * Then reads until the end of the file (total links number rows) and saves + * the structure of every single link in the topology. + * + * \return the container of the nodes created (or empty container if there was an error) + */ + virtual NodeContainer Read (void); + + // end class InetTopologyReader +}; + +// end namespace ns3 +}; + + +#endif // __INET_TOPOLOGY_READER_H__ diff --git a/src/contrib/topology-read/orbis-topology-reader.cc b/src/contrib/topology-read/orbis-topology-reader.cc new file mode 100644 index 000000000..04dbaf91a --- /dev/null +++ b/src/contrib/topology-read/orbis-topology-reader.cc @@ -0,0 +1,121 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#include +#include +#include +#include + +#include "ns3/log.h" +#include "orbis-topology-reader.h" + +using namespace std; + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("OrbisTopologyReader"); + +NS_OBJECT_ENSURE_REGISTERED (OrbisTopologyReader); + +TypeId OrbisTopologyReader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::OrbisTopologyReader") + .SetParent () + ; + return tid; +} + +OrbisTopologyReader::OrbisTopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +OrbisTopologyReader::~OrbisTopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +NodeContainer +OrbisTopologyReader::Read (void) +{ + ifstream topgen; + topgen.open (GetFileName ().c_str ()); + map > nodeMap; + NodeContainer nodes; + + if ( !topgen.is_open () ) + { + return nodes; + } + + string from; + string to; + istringstream lineBuffer; + string line; + + int linksNumber = 0; + int nodesNumber = 0; + + while (!topgen.eof ()) + { + line.clear (); + lineBuffer.clear (); + from.clear (); + to.clear (); + + getline (topgen,line); + lineBuffer.str (line); + lineBuffer >> from; + lineBuffer >> to; + + if ( (!from.empty ()) && (!to.empty ()) ) + { + NS_LOG_INFO ( linksNumber << " From: " << from << " to: " << to ); + if ( nodeMap[from] == 0 ) + { + Ptr tmpNode = CreateObject (); + nodeMap[from] = tmpNode; + nodes.Add (tmpNode); + nodesNumber++; + } + + if (nodeMap[to] == 0) + { + Ptr tmpNode = CreateObject (); + nodeMap[to] = tmpNode; + nodes.Add (tmpNode); + nodesNumber++; + } + + Link link ( nodeMap[from], from, nodeMap[to], to ); + AddLink (link); + + linksNumber++; + } + } + NS_LOG_INFO ("Orbis topology created with " << nodesNumber << " nodes and " << linksNumber << " links"); + topgen.close (); + + return nodes; +} + +} /* namespace ns3 */ + diff --git a/src/contrib/topology-read/orbis-topology-reader.h b/src/contrib/topology-read/orbis-topology-reader.h new file mode 100644 index 000000000..e4d66ce0a --- /dev/null +++ b/src/contrib/topology-read/orbis-topology-reader.h @@ -0,0 +1,73 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#ifndef __ORBIS_TOPOLOGY_READER_H__ +#define __ORBIS_TOPOLOGY_READER_H__ + +#include "ns3/nstime.h" + +#include "topology-reader.h" + +namespace ns3 { + + +// ------------------------------------------------------------ +// -------------------------------------------- +/** + * \ingroup topology + * \brief Topology file reader (Orbis-format type). + * + * This class takes an input file in Orbis format and extracts all + * the informations needed to build the topology + * (i.e.number of nodes, links and links structure). + * It have been tested with Orbis 0.70 + * http://www.sysnet.ucsd.edu/~pmahadevan/topo_research/topo.html + */ +class OrbisTopologyReader : public TopologyReader +{ +public: + static TypeId GetTypeId (void); + + OrbisTopologyReader (); + virtual ~OrbisTopologyReader (); + + /** + * \brief Main topology reading function. + * + * This method opens an input stream and reads the Orbis-format file. + * Every row represents a topology link (the ids of a couple of nodes), + * so the input file is read line by line to figure out how many links + * and nodes are in the topology. + * + * \return the container of the nodes created (or empty container if there was an error) + */ + virtual NodeContainer Read (void); + + // end class OrbisTopologyReader +}; + +// end namespace ns3 +}; + + +#endif // __ORBIS_TOPOLOGY_READER_H__ + + diff --git a/src/contrib/topology-read/topology-reader.cc b/src/contrib/topology-read/topology-reader.cc new file mode 100644 index 000000000..a09080aca --- /dev/null +++ b/src/contrib/topology-read/topology-reader.cc @@ -0,0 +1,169 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#include "ns3/log.h" + +#include "topology-reader.h" + + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("TopologyReader"); + +NS_OBJECT_ENSURE_REGISTERED (TopologyReader); + +TypeId TopologyReader::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::TopologyReader") + .SetParent () + ; + return tid; +} + +TopologyReader::TopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +TopologyReader::~TopologyReader () +{ + NS_LOG_FUNCTION (this); +} + +void +TopologyReader::SetFileName (const std::string fileName) +{ + m_fileName = fileName; +} + +std::string +TopologyReader::GetFileName () const +{ + return m_fileName; +} + +/* Manipulating the address block */ + +TopologyReader::ConstLinksIterator +TopologyReader::LinksBegin (void) const +{ + return m_linksList.begin (); +} + +TopologyReader::ConstLinksIterator +TopologyReader::LinksEnd (void) const +{ + return m_linksList.end (); +} + +int +TopologyReader::LinksSize (void) const +{ + return m_linksList.size (); +} + +bool +TopologyReader::LinksEmpty (void) const +{ + return m_linksList.empty (); +} + +void +TopologyReader::AddLink (Link link) +{ + m_linksList.push_back (link); + return; +} + + +TopologyReader::Link::Link ( Ptr fromPtr, std::string fromName, Ptr toPtr, std::string toName ) +{ + m_fromPtr = fromPtr; + m_fromName = fromName; + m_toPtr = toPtr; + m_toName = toName; +} + +TopologyReader::Link::Link () +{ +} + + +Ptr TopologyReader::Link::GetFromNode (void) const +{ + return m_fromPtr; +} + +std::string +TopologyReader::Link::GetFromNodeName (void) const +{ + return m_fromName; +} + +Ptr +TopologyReader::Link::GetToNode (void) const +{ + return m_toPtr; +} + +std::string +TopologyReader::Link::GetToNodeName (void) const +{ + return m_toName; +} + +std::string +TopologyReader::Link::GetAttribute (std::string name) +{ + NS_ASSERT_MSG (m_linkAttr.find ("name") == m_linkAttr.end (), "Requested topology link attribute not found"); + return m_linkAttr[name]; +} + +bool +TopologyReader::Link::GetAttributeFailSafe (std::string name, std::string &value) +{ + if ( m_linkAttr.find ("name") == m_linkAttr.end () ) + { + return false; + } + value = m_linkAttr[name]; + return true; +} + +void +TopologyReader::Link::SetAttribute (std::string name, std::string &value) +{ + m_linkAttr[name] = value; +} + +TopologyReader::Link::ConstAttributesIterator +TopologyReader::Link::AttributesBegin (void) +{ + return m_linkAttr.begin (); +} +TopologyReader::Link::ConstAttributesIterator +TopologyReader::Link::AttributesEnd (void) +{ + return m_linkAttr.end (); +} + + +} /* namespace ns3 */ diff --git a/src/contrib/topology-read/topology-reader.h b/src/contrib/topology-read/topology-reader.h new file mode 100644 index 000000000..a913ebd06 --- /dev/null +++ b/src/contrib/topology-read/topology-reader.h @@ -0,0 +1,203 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#ifndef __TOPOLOGY_READER_H__ +#define __TOPOLOGY_READER_H__ + +#include +#include +#include + +#include "ns3/object.h" +#include "ns3/node-container.h" + + +namespace ns3 { + +/** + * \defgroup topology Topology Input Readers + */ + +/** + * \ingroup topology + * \brief Interface for input file readers management. + * + * This interface perform the shared tasks among all possible input file readers. + * Each different file format is handled by its own topology reader. + */ +class TopologyReader : public Object +{ + +public: + /** + * \ingroup topology + * \brief Inner class holding the details about a link between two nodes. + * + * The link is not described in terms of technology. Rather it is only stating + * an association between two nodes. The nodes are characterized also with names + * reflecting how the nodes are called in the original topology file. + */ + class Link + { +public: + typedef std::map::const_iterator ConstAttributesIterator; + + Link ( Ptr fromPtr, std::string fromName, Ptr toPtr, std::string toName ); + + /** + * \brief Returns a Ptr to the "from" node of the link + * \return a Ptr to the "from" node of the link + */ + Ptr GetFromNode (void) const; + /** + * \brief Returns the name of the "from" node of the link + * \return the name of the "from" node of the link + */ + std::string GetFromNodeName (void) const; + /** + * \brief Returns a Ptr to the "to" node of the link + * \return a Ptr to the "to" node of the link + */ + Ptr GetToNode (void) const; + /** + * \brief Returns the name of the "to" node of the link + * \return the name of the "to" node of the link + */ + std::string GetToNodeName (void) const; + /** + * \brief Returns the value of a link attribute. The attribute must exist. + * + * \param name the name of the attribute + * + * \return the value of the attribute + */ + std::string GetAttribute (std::string name); + /** + * \brief Returns the value of a link attribute. + * \param name the name of the attribute + * \param value the value of the attribute + * + * \return true if the attribute was defined, false otherwise. + */ + bool GetAttributeFailSafe (std::string name, std::string &value); + /** + * \brief Sets an arbitrary link attribute. + * \param name the name of the attribute + * \param value the value of the attribute + */ + void SetAttribute (std::string name, std::string &value); + /** + * \brief Returns an iterator to the begin of the attributes. + * \return a const iterator to the first attribute of a link. + */ + ConstAttributesIterator AttributesBegin (void); + /** + * \brief Returns an iterator to the end of the attributes. + * \return a const iterator to the last attribute of a link. + */ + ConstAttributesIterator AttributesEnd (void); + +private: + Link (); + std::string m_fromName; + Ptr< Node > m_fromPtr; + std::string m_toName; + Ptr< Node > m_toPtr; + std::map m_linkAttr; + }; + + /** + * \brief Contant iterator to the list of the links. + */ + typedef std::list< Link >::const_iterator ConstLinksIterator; + + static TypeId GetTypeId (void); + + TopologyReader (); + virtual ~TopologyReader (); + + /** + * \brief Main topology reading function. + * + * The data is parsed and the results are returned in the passed lists. + * The rationale behind this choice is to allow non-progressive node IDs + * in the topology files, as well as to separate the topology + * reader from the choices about actual IP number assignment and + * kind of links between nodes. + * + * \return the container of the nodes created (or null if there was an error) + */ + virtual NodeContainer Read (void) = 0; + + /** + * \brief Sets the input file name. + * \param fileName the input file name. + */ + void SetFileName (const std::string fileName); + + /** + * \brief Returns the input file name. + * \return the input file name. + */ + std::string GetFileName (void) const; + + /** + * \brief Returns an iterator to the the first link in this block. + * \return a const iterator to the first link in this block. + */ + ConstLinksIterator LinksBegin (void) const; + + /** + * \brief Returns an iterator to the the last link in this block. + * \return a const iterator to the last link in this block. + */ + ConstLinksIterator LinksEnd (void) const; + + /** + * \brief Returns the number of links in this block. + * \return the number of links in this block. + */ + int LinksSize (void) const; + + /** + * \brief Checks if the block contains any links. + * \return true if there are no links in this block, false otherwise. + */ + bool LinksEmpty (void) const; + + /** + * \brief Adds a link to the topology. + * \param link the link to be added. + */ + void AddLink (Link link); + +private: + std::string m_fileName; + std::list m_linksList; + + // end class TopologyReader +}; + +// end namespace ns3 +}; + + +#endif // __TOPOLOGY_READER_H__ diff --git a/src/contrib/topology-read/topology.h b/src/contrib/topology-read/topology.h new file mode 100644 index 000000000..8b55480d6 --- /dev/null +++ b/src/contrib/topology-read/topology.h @@ -0,0 +1,32 @@ +/** + * \addtogroup topology Topology Input Readers + * + * The topology modules aim at reading a topology file generated by an automatic topology generator. + * + * The process is divided in two steps: + * - running a topology generator to build a topology file + * - reading the topology file and build a ns-3 simulation + * + * Hence, model is focused on being able to read correctly the various topology formats. + * + * Currently there are two models: + * - Orbis 0.7 + * - Inet 3.0 + * + * A good source for topology data is also Archipelago (http://www.caida.org/projects/ark/) + * + * The current Archipelago Measurements, monthly updated, are stored here: + * http://data.caida.org/datasets/topology/ipv4.allpref24-aslinks/ + * (complete notation and triple data source, one for each working group) + * + * A different and more compact notation that signs only the AS-relationships is here: + * http://www.caida.org/data/active/as-relationships/index.xml + * (a sort of more Orbis-like format) + * + * The compact notation can be easily stripped down to a pure Orbis format, just removing + * the double relationships (the compact format use one-way links, while Orbis use two-way + * links) and pruning the 3rd parameter. Note that with the compact data Orbis can then be + * used create a rescaled version of the topology, thus being the most effective way + * (to my best knowledge) to make an internet-like topology. + * + */ diff --git a/src/contrib/topology-read/wscript b/src/contrib/topology-read/wscript new file mode 100644 index 000000000..5bd79388b --- /dev/null +++ b/src/contrib/topology-read/wscript @@ -0,0 +1,17 @@ +## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- + +def build(bld): + obj = bld.create_ns3_module('topology-read') + obj.source = [ + 'topology-reader.cc', + 'inet-topology-reader.cc', + 'orbis-topology-reader.cc', + ] + headers = bld.new_task_gen('ns3header') + headers.module = 'topology-read' + headers.source = [ + 'topology-reader.h', + 'inet-topology-reader.h', + 'orbis-topology-reader.h', + ] + diff --git a/src/devices/wimax/bandwidth-manager.h b/src/devices/wimax/bandwidth-manager.h index e0ac5fbc9..522e844fc 100644 --- a/src/devices/wimax/bandwidth-manager.h +++ b/src/devices/wimax/bandwidth-manager.h @@ -64,6 +64,9 @@ public: void SetSubframeRatio (void); uint32_t GetSymbolsPerFrameAllocated (void); private: + BandwidthManager (const BandwidthManager &); + BandwidthManager& operator= (const BandwidthManager &); + Ptr m_device; uint16_t m_nrBwReqsSent; }; diff --git a/src/devices/wimax/bs-link-manager.h b/src/devices/wimax/bs-link-manager.h index aeb52826c..aedb105c7 100644 --- a/src/devices/wimax/bs-link-manager.h +++ b/src/devices/wimax/bs-link-manager.h @@ -57,6 +57,9 @@ public: */ void VerifyInvitedRanging (Cid cid, uint8_t uiuc); private: + BSLinkManager (const BSLinkManager &); + BSLinkManager & operator= (const BSLinkManager &); + void PerformRanging (Cid cid, RngReq rngreq); void PerformInitialRanging (Cid cid, RngReq *rngreq, RngRsp *rngrsp); void PerformInvitedRanging (Cid cid, RngRsp *rngrsp); diff --git a/src/devices/wimax/bs-net-device.h b/src/devices/wimax/bs-net-device.h index 8dbb52638..e58a5b619 100644 --- a/src/devices/wimax/bs-net-device.h +++ b/src/devices/wimax/bs-net-device.h @@ -117,14 +117,6 @@ public: * \returns the number of retries on contention Ranging */ uint8_t GetMaxInvitedRangRetries (void) const; - /** - * \param maxDsaResponseRetries the number of retries on DSA request message - */ - void SetMaxDsaReqRetries (uint8_t maxDsaResponseRetries); - /** - * \returns the number of retries on DSA request message - */ - uint8_t GetMaxDsaReqRetries (void) const; /** * \param rangReqOppSize The ranging opportunity size in symbols */ diff --git a/src/devices/wimax/burst-profile-manager.h b/src/devices/wimax/burst-profile-manager.h index 5367f7526..147ccd151 100644 --- a/src/devices/wimax/burst-profile-manager.h +++ b/src/devices/wimax/burst-profile-manager.h @@ -66,6 +66,9 @@ public: const RngReq *rngreq); uint8_t GetBurstProfileToRequest (void); private: + BurstProfileManager (const BurstProfileManager &); + BurstProfileManager& operator= (const BurstProfileManager &); + Ptr m_device; }; diff --git a/src/devices/wimax/cid-factory.h b/src/devices/wimax/cid-factory.h index 1ec625c12..cc0b7dabe 100644 --- a/src/devices/wimax/cid-factory.h +++ b/src/devices/wimax/cid-factory.h @@ -44,12 +44,6 @@ namespace ns3 { class CidFactory { public: - /** - * \param m the value of the 'm' parameter to use for this factory - * - * The semantics of this parameter are defined in Table 345 ieee-802.16-2004 - */ - CidFactory (uint16_t m); /** * Create a cid factory with a default value for m of 0x5500. */ diff --git a/src/devices/wimax/dl-mac-messages.h b/src/devices/wimax/dl-mac-messages.h index b319fea0c..721dd3da3 100644 --- a/src/devices/wimax/dl-mac-messages.h +++ b/src/devices/wimax/dl-mac-messages.h @@ -95,7 +95,6 @@ public: void SetTtg (uint8_t ttg); void SetRtg (uint8_t rtg); - void SetChnlSwitchFrameNr (uint32_t chnlSwitchFrameNr); void SetBaseStationId (Mac48Address baseStationId); void SetFrameDurationCode (uint8_t frameDurationCode); void SetFrameNumber (uint32_t frameNumber); @@ -104,7 +103,6 @@ public: uint8_t GetTtg (void) const; uint8_t GetRtg (void) const; - uint32_t GetChnlSwitchFrameNr (void) const; Mac48Address GetBaseStationId (void) const; uint8_t GetFrameDurationCode (void) const; uint32_t GetFrameNumber (void) const; diff --git a/src/devices/wimax/mac-messages.h b/src/devices/wimax/mac-messages.h index 189b9a8a3..73e9a5543 100644 --- a/src/devices/wimax/mac-messages.h +++ b/src/devices/wimax/mac-messages.h @@ -341,7 +341,6 @@ class DsaRsp : public Header public: DsaRsp (void); ~DsaRsp (void); - DsaRsp (ServiceFlow sf); void SetTransactionId (uint16_t transactionId); uint16_t GetTransactionId (void) const; diff --git a/src/devices/wimax/packet-burst.h b/src/devices/wimax/packet-burst.h index 58eafd0be..f6b5f772e 100644 --- a/src/devices/wimax/packet-burst.h +++ b/src/devices/wimax/packet-burst.h @@ -64,7 +64,6 @@ public: std::list >::const_iterator End (void) const; private: void DoDispose (void); - friend bool operator == (const PacketBurst &a, const PacketBurst &b); std::list > m_packets; }; } // namespace ns3 diff --git a/src/devices/wimax/service-flow-manager.h b/src/devices/wimax/service-flow-manager.h index 2536efba7..9b03dc4aa 100644 --- a/src/devices/wimax/service-flow-manager.h +++ b/src/devices/wimax/service-flow-manager.h @@ -51,7 +51,6 @@ public: ~ServiceFlowManager (void); void DoDispose (void); - void defineServiceFlow (void); void AddServiceFlow (ServiceFlow * serviceFlow); ServiceFlow* GetServiceFlow (uint32_t sfid) const; ServiceFlow* GetServiceFlow (Cid cid) const; diff --git a/src/devices/wimax/ss-link-manager.h b/src/devices/wimax/ss-link-manager.h index 6c5c5bca1..e18553b1f 100644 --- a/src/devices/wimax/ss-link-manager.h +++ b/src/devices/wimax/ss-link-manager.h @@ -64,6 +64,9 @@ public: SubscriberStationNetDevice::EventType eventType, bool deleteUlParameters, EventId &eventId); private: + SSLinkManager (const SSLinkManager &); + SSLinkManager & operator= (const SSLinkManager &); + void EndScanning (bool status, uint64_t frequency); void StartSynchronizing (void); bool SearchForDlChannel (uint8_t channel); diff --git a/src/devices/wimax/ss-record.h b/src/devices/wimax/ss-record.h index 781b2ca2c..83b2dab0b 100644 --- a/src/devices/wimax/ss-record.h +++ b/src/devices/wimax/ss-record.h @@ -62,9 +62,6 @@ public: uint8_t GetInvitedRangRetries (void) const; void ResetInvitedRangingRetries (void); void IncrementInvitedRangingRetries (void); - uint8_t GetDsaReqRetries (void) const; - void ResetDsaReqRetries (void); - void IncrementDsaReqRetries (void); void SetModulationType (WimaxPhy::ModulationType modulationType); WimaxPhy::ModulationType GetModulationType (void) const; diff --git a/src/devices/wimax/ss-scheduler.h b/src/devices/wimax/ss-scheduler.h index 28d7535eb..72148c998 100644 --- a/src/devices/wimax/ss-scheduler.h +++ b/src/devices/wimax/ss-scheduler.h @@ -58,6 +58,9 @@ public: void DoDispose (void); protected: private: + SSScheduler (const SSScheduler &); + SSScheduler & operator= (const SSScheduler &); + Ptr SelectConnection (void); Ptr m_ss; bool m_pollMe; diff --git a/src/devices/wimax/ss-service-flow-manager.h b/src/devices/wimax/ss-service-flow-manager.h index b7fb78e5b..eeea8feb1 100644 --- a/src/devices/wimax/ss-service-flow-manager.h +++ b/src/devices/wimax/ss-service-flow-manager.h @@ -70,16 +70,10 @@ public: * \return the maximum retries on DSA request message */ uint8_t GetMaxDsaReqRetries (void) const; - /** - * \return the maximum retries on DSA response message - */ - uint8_t GetMaxDsaRspRetries (void) const; EventId GetDsaRspTimeoutEvent (void) const; EventId GetDsaAckTimeoutEvent (void) const; - void AllocateServiceFlows (const DsaReq &dsaReq, Cid cid); - void InitiateServiceFlows (void); DsaReq CreateDsaReq (const ServiceFlow *serviceFlow); diff --git a/src/devices/wimax/wimax-net-device.h b/src/devices/wimax/wimax-net-device.h index 78ba8f752..4daf029a9 100644 --- a/src/devices/wimax/wimax-net-device.h +++ b/src/devices/wimax/wimax-net-device.h @@ -214,13 +214,13 @@ public: virtual Address GetMulticast (Ipv4Address multicastGroup) const; virtual bool IsBridge (void) const; - Ptr GetMobility (void); - void SetMobility (Ptr mobility); - bool IsPromisc (void); void NotifyPromiscTrace (Ptr p); private: + WimaxNetDevice (const WimaxNetDevice &); + WimaxNetDevice & operator= (const WimaxNetDevice &); + virtual bool DoSend (Ptr packet, const Mac48Address& source, const Mac48Address& dest, diff --git a/src/helper/topology-reader-helper.cc b/src/helper/topology-reader-helper.cc new file mode 100644 index 000000000..75663e331 --- /dev/null +++ b/src/helper/topology-reader-helper.cc @@ -0,0 +1,80 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#include "ns3/object.h" +#include "ns3/topology-reader-helper.h" +#include "ns3/inet-topology-reader.h" +#include "ns3/orbis-topology-reader.h" +#include "ns3/log.h" + +namespace ns3 { + +NS_LOG_COMPONENT_DEFINE ("TopologyReaderHelper"); + +TopologyReaderHelper::TopologyReaderHelper () +{ + m_inFile = 0; +} + +void +TopologyReaderHelper::SetFileName (const std::string fileName) +{ + m_fileName = fileName; +} + +void +TopologyReaderHelper::SetFileType (const std::string fileType) +{ + m_fileType = fileType; +} + + +Ptr +TopologyReaderHelper::GetTopologyReader () +{ + if (!m_inFile) + { + NS_ASSERT_MSG (!m_fileType.empty (), "Missing File Type"); + NS_ASSERT_MSG (!m_fileName.empty (), "Missing File Name"); + + if (m_fileType == "Orbis") + { + NS_LOG_INFO ("Creating Orbis formatted data input."); + m_inFile = CreateObject (); + } + else if (m_fileType == "Inet") + { + NS_LOG_INFO ("Creating Inet formatted data input."); + m_inFile = CreateObject (); + } + else + { + NS_ASSERT_MSG (false, "Wrong (unknown) File Type"); + } + + m_inFile->SetFileName (m_fileName); + } + return m_inFile; +} + + + +} // namespace ns3 diff --git a/src/helper/topology-reader-helper.h b/src/helper/topology-reader-helper.h new file mode 100644 index 000000000..24e7bfd81 --- /dev/null +++ b/src/helper/topology-reader-helper.h @@ -0,0 +1,66 @@ +/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ +/* + * Copyright (c) 2010 Universita' di Firenze, Italy + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Author: Tommaso Pecorella (tommaso.pecorella@unifi.it) + * Author: Valerio Sartini (valesar@gmail.com) + */ + +#ifndef TOPOLOGY_READER_HELPER_H +#define TOPOLOGY_READER_HELPER_H + +#include "ns3/topology-reader.h" +#include + +namespace ns3 { + +/** + * \ingroup topology + * \brief Helper class which makes it easier to configure and use a generic TopologyReader. + */ +class TopologyReaderHelper +{ +public: + TopologyReaderHelper (); + + /** + * \brief Sets the input file name. + * \param fileName the input file name. + */ + void SetFileName (const std::string fileName); + + /** + * \brief Sets the input file type. Supported file types are "Orbis" and "Inet". + * \param fileType the input file type. + */ + void SetFileType (const std::string fileType); + + /** + * \brief Gets a Ptr to the actual TopologyReader. + * \return the created Topoloy Reader (or null if there was an error). + */ + Ptr GetTopologyReader (); + +private: + Ptr m_inFile; + std::string m_fileName; + std::string m_fileType; +}; + +} // namespace ns3 + + +#endif /* TOPOLOGY_READER_HELPER_H */ diff --git a/src/helper/wscript b/src/helper/wscript index ae5202b61..d462df4c0 100644 --- a/src/helper/wscript +++ b/src/helper/wscript @@ -50,6 +50,7 @@ def build(bld): 'udp-client-server-helper.cc', 'trace-helper.cc', 'wimax-helper.cc', + 'topology-reader-helper.cc', ] headers = bld.new_task_gen('ns3header') @@ -103,6 +104,7 @@ def build(bld): 'udp-client-server-helper.h', 'trace-helper.h', 'wimax-helper.h', + 'topology-reader-helper.h', ] env = bld.env_of_name('default') diff --git a/src/wscript b/src/wscript index 2d9875775..82beef993 100644 --- a/src/wscript +++ b/src/wscript @@ -51,6 +51,7 @@ all_modules = ( 'applications/udp-client-server', 'devices/wimax', 'mpi', + 'contrib/topology-read', ) def set_options(opt): diff --git a/test.py b/test.py index 3c8f39932..abe6b5f37 100755 --- a/test.py +++ b/test.py @@ -127,6 +127,8 @@ example_tests = [ ("tcp/tcp-nsc-zoo", "ENABLE_NSC == True", "True"), ("tcp/tcp-star-server", "True", "True"), + ("topology-read/topology-read --input=../../examples/topology-read/Inet_small_toposample.txt", "True", "True"), + ("tunneling/virtual-net-device", "True", "True"), ("tutorial/first", "True", "True"),