/relevation/ext/cryptopy-1.2.5.patched/fmath/prime_test.py |
---|
0,0 → 1,67 |
#! /usr/bin/env python |
""" fmath.prime_test |
Test for prime number routines |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import unittest |
from fmath.prime import rabin_miller |
from string import split,atoi |
class primeTests(unittest.TestCase): |
""" Tests for the rabin_miller probabilistic primality """ |
def testKnowPrimes(self): |
""" Test a few known primes """ |
for prime in knownPrimes: |
for testNum in (2,3,5,7,9,13,17,19,21,27,33,101,205): |
assert( rabin_miller(prime, testNum) ), 'Prime: %d should pass rabin miller test using %d!'%(prime,testNum) |
def testKnowComposites(self): |
""" Test a few known primes """ |
for nonPrime in knownComposites: |
witness = 1 |
for testNum in (2,3,5,7,9,13,17,19,21,27,33,101,205): |
if not rabin_miller(nonPrime, testNum): |
witness = 0 |
#print witness, nonPrime, testNum |
assert( not witness ), 'NonPrime: %d should Fail rabin miller tests!'%nonPrime |
def test50K(self): |
""" Test all composites below the first 50000 primes |
print out the maxium witness number required """ |
f=open('primes_1st_50k.txt','r') |
s=f.read() |
f.close() |
ps=split(s) |
primes_1st_50k = [atoi(i) for i in ps] |
maxWitness = 2 |
lastPrime = 2 |
for prime in primes_1st_50k[1:]: |
for composite in range(lastPrime+2,prime,2): |
for witness in primes_1st_50k: |
if not rabin_miller(composite, witness): |
if witness > maxWitness: |
maxWitness = witness |
print 'composite, maxWitness',composite,maxWitness |
lastPrime = prime |
break |
#assert(witness!=primes_1st_50K[-1]),'MR test failed!!!!!!!' |
lastPrime = prime |
print 'last tested',prime |
knownPrimes = [611693, 611707, 611729, 611753, 611791, |
611801, 611803, 611827, 611833, 611837, |
611839, 611873, 611879, 611887, 611903, |
611921, 611927, 611939, 611951, 611953] |
knownComposites = [611695, 611709, 611723, 611757, 611793, |
611805, 611807, 611829, 611835, 611800, |
611841, 611875, 611881, 611889, 611905, |
611923, 611925, 611941, 611947, 611937] |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/fmath/prime.py |
---|
0,0 → 1,42 |
""" fmath.prime |
Start of prime number routines. Rabin-miller test works, more to come later. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
def fermat_little_test( p, a ): |
""" Fermat Little Test. Included as a curiosity, not useful for cryptographic use. |
p -> possiblePrime, a -> any integer |
""" |
if pow(a,p-1,p) == 1 : |
return 1 # could be prime |
else: |
return 0 # is NOT prime |
def rabin_miller(possiblePrime, aTestInteger): |
""" The Rabin-Miller algorithm to test possible primes |
taken from HAC algorithm 4.24, without the 't' |
""" |
assert( 1<= aTestInteger <= (possiblePrime-1) ), 'test integer %d out of range for %d'%(aTestInteger,possiblePrime) |
#assert( possiblePrime%2 == 1 ), 'possiblePrime must be odd' |
# calculate s and r such that (possiblePrime-1) = (2**s)*r with r odd |
r = possiblePrime-1 |
s=0 |
while (r%2)==0 : |
s+=1 |
r=r/2 |
y = pow(aTestInteger,r,possiblePrime) |
if ( y!=1 and y!=(possiblePrime-1) ) : |
j = 1 |
while ( j <= s-1 and y!=possiblePrime-1 ): |
y = pow(y,2,possiblePrime) # (y*y) % n |
if y==1 : |
return 0 # failed - composite |
j = j+1 |
if y != (possiblePrime-1): |
return 0 # failed - composite |
return 1 # success - still a possible prime |
/relevation/ext/cryptopy-1.2.5.patched/fmath/primes_1st_50k.txt |
---|
0,0 → 1,50000 |
2 |
3 |
5 |
7 |
11 |
13 |
17 |
19 |
23 |
29 |
31 |
37 |
41 |
43 |
47 |
53 |
59 |
61 |
67 |
71 |
73 |
79 |
83 |
89 |
97 |
101 |
103 |
107 |
109 |
113 |
127 |
131 |
137 |
139 |
149 |
151 |
157 |
163 |
167 |
173 |
179 |
181 |
191 |
193 |
197 |
199 |
211 |
223 |
227 |
229 |
233 |
239 |
241 |
251 |
257 |
263 |
269 |
271 |
277 |
281 |
283 |
293 |
307 |
311 |
313 |
317 |
331 |
337 |
347 |
349 |
353 |
359 |
367 |
373 |
379 |
383 |
389 |
397 |
401 |
409 |
419 |
421 |
431 |
433 |
439 |
443 |
449 |
457 |
461 |
463 |
467 |
479 |
487 |
491 |
499 |
503 |
509 |
521 |
523 |
541 |
547 |
557 |
563 |
569 |
571 |
577 |
587 |
593 |
599 |
601 |
607 |
613 |
617 |
619 |
631 |
641 |
643 |
647 |
653 |
659 |
661 |
673 |
677 |
683 |
691 |
701 |
709 |
719 |
727 |
733 |
739 |
743 |
751 |
757 |
761 |
769 |
773 |
787 |
797 |
809 |
811 |
821 |
823 |
827 |
829 |
839 |
853 |
857 |
859 |
863 |
877 |
881 |
883 |
887 |
907 |
911 |
919 |
929 |
937 |
941 |
947 |
953 |
967 |
971 |
977 |
983 |
991 |
997 |
1009 |
1013 |
1019 |
1021 |
1031 |
1033 |
1039 |
1049 |
1051 |
1061 |
1063 |
1069 |
1087 |
1091 |
1093 |
1097 |
1103 |
1109 |
1117 |
1123 |
1129 |
1151 |
1153 |
1163 |
1171 |
1181 |
1187 |
1193 |
1201 |
1213 |
1217 |
1223 |
1229 |
1231 |
1237 |
1249 |
1259 |
1277 |
1279 |
1283 |
1289 |
1291 |
1297 |
1301 |
1303 |
1307 |
1319 |
1321 |
1327 |
1361 |
1367 |
1373 |
1381 |
1399 |
1409 |
1423 |
1427 |
1429 |
1433 |
1439 |
1447 |
1451 |
1453 |
1459 |
1471 |
1481 |
1483 |
1487 |
1489 |
1493 |
1499 |
1511 |
1523 |
1531 |
1543 |
1549 |
1553 |
1559 |
1567 |
1571 |
1579 |
1583 |
1597 |
1601 |
1607 |
1609 |
1613 |
1619 |
1621 |
1627 |
1637 |
1657 |
1663 |
1667 |
1669 |
1693 |
1697 |
1699 |
1709 |
1721 |
1723 |
1733 |
1741 |
1747 |
1753 |
1759 |
1777 |
1783 |
1787 |
1789 |
1801 |
1811 |
1823 |
1831 |
1847 |
1861 |
1867 |
1871 |
1873 |
1877 |
1879 |
1889 |
1901 |
1907 |
1913 |
1931 |
1933 |
1949 |
1951 |
1973 |
1979 |
1987 |
1993 |
1997 |
1999 |
2003 |
2011 |
2017 |
2027 |
2029 |
2039 |
2053 |
2063 |
2069 |
2081 |
2083 |
2087 |
2089 |
2099 |
2111 |
2113 |
2129 |
2131 |
2137 |
2141 |
2143 |
2153 |
2161 |
2179 |
2203 |
2207 |
2213 |
2221 |
2237 |
2239 |
2243 |
2251 |
2267 |
2269 |
2273 |
2281 |
2287 |
2293 |
2297 |
2309 |
2311 |
2333 |
2339 |
2341 |
2347 |
2351 |
2357 |
2371 |
2377 |
2381 |
2383 |
2389 |
2393 |
2399 |
2411 |
2417 |
2423 |
2437 |
2441 |
2447 |
2459 |
2467 |
2473 |
2477 |
2503 |
2521 |
2531 |
2539 |
2543 |
2549 |
2551 |
2557 |
2579 |
2591 |
2593 |
2609 |
2617 |
2621 |
2633 |
2647 |
2657 |
2659 |
2663 |
2671 |
2677 |
2683 |
2687 |
2689 |
2693 |
2699 |
2707 |
2711 |
2713 |
2719 |
2729 |
2731 |
2741 |
2749 |
2753 |
2767 |
2777 |
2789 |
2791 |
2797 |
2801 |
2803 |
2819 |
2833 |
2837 |
2843 |
2851 |
2857 |
2861 |
2879 |
2887 |
2897 |
2903 |
2909 |
2917 |
2927 |
2939 |
2953 |
2957 |
2963 |
2969 |
2971 |
2999 |
3001 |
3011 |
3019 |
3023 |
3037 |
3041 |
3049 |
3061 |
3067 |
3079 |
3083 |
3089 |
3109 |
3119 |
3121 |
3137 |
3163 |
3167 |
3169 |
3181 |
3187 |
3191 |
3203 |
3209 |
3217 |
3221 |
3229 |
3251 |
3253 |
3257 |
3259 |
3271 |
3299 |
3301 |
3307 |
3313 |
3319 |
3323 |
3329 |
3331 |
3343 |
3347 |
3359 |
3361 |
3371 |
3373 |
3389 |
3391 |
3407 |
3413 |
3433 |
3449 |
3457 |
3461 |
3463 |
3467 |
3469 |
3491 |
3499 |
3511 |
3517 |
3527 |
3529 |
3533 |
3539 |
3541 |
3547 |
3557 |
3559 |
3571 |
3581 |
3583 |
3593 |
3607 |
3613 |
3617 |
3623 |
3631 |
3637 |
3643 |
3659 |
3671 |
3673 |
3677 |
3691 |
3697 |
3701 |
3709 |
3719 |
3727 |
3733 |
3739 |
3761 |
3767 |
3769 |
3779 |
3793 |
3797 |
3803 |
3821 |
3823 |
3833 |
3847 |
3851 |
3853 |
3863 |
3877 |
3881 |
3889 |
3907 |
3911 |
3917 |
3919 |
3923 |
3929 |
3931 |
3943 |
3947 |
3967 |
3989 |
4001 |
4003 |
4007 |
4013 |
4019 |
4021 |
4027 |
4049 |
4051 |
4057 |
4073 |
4079 |
4091 |
4093 |
4099 |
4111 |
4127 |
4129 |
4133 |
4139 |
4153 |
4157 |
4159 |
4177 |
4201 |
4211 |
4217 |
4219 |
4229 |
4231 |
4241 |
4243 |
4253 |
4259 |
4261 |
4271 |
4273 |
4283 |
4289 |
4297 |
4327 |
4337 |
4339 |
4349 |
4357 |
4363 |
4373 |
4391 |
4397 |
4409 |
4421 |
4423 |
4441 |
4447 |
4451 |
4457 |
4463 |
4481 |
4483 |
4493 |
4507 |
4513 |
4517 |
4519 |
4523 |
4547 |
4549 |
4561 |
4567 |
4583 |
4591 |
4597 |
4603 |
4621 |
4637 |
4639 |
4643 |
4649 |
4651 |
4657 |
4663 |
4673 |
4679 |
4691 |
4703 |
4721 |
4723 |
4729 |
4733 |
4751 |
4759 |
4783 |
4787 |
4789 |
4793 |
4799 |
4801 |
4813 |
4817 |
4831 |
4861 |
4871 |
4877 |
4889 |
4903 |
4909 |
4919 |
4931 |
4933 |
4937 |
4943 |
4951 |
4957 |
4967 |
4969 |
4973 |
4987 |
4993 |
4999 |
5003 |
5009 |
5011 |
5021 |
5023 |
5039 |
5051 |
5059 |
5077 |
5081 |
5087 |
5099 |
5101 |
5107 |
5113 |
5119 |
5147 |
5153 |
5167 |
5171 |
5179 |
5189 |
5197 |
5209 |
5227 |
5231 |
5233 |
5237 |
5261 |
5273 |
5279 |
5281 |
5297 |
5303 |
5309 |
5323 |
5333 |
5347 |
5351 |
5381 |
5387 |
5393 |
5399 |
5407 |
5413 |
5417 |
5419 |
5431 |
5437 |
5441 |
5443 |
5449 |
5471 |
5477 |
5479 |
5483 |
5501 |
5503 |
5507 |
5519 |
5521 |
5527 |
5531 |
5557 |
5563 |
5569 |
5573 |
5581 |
5591 |
5623 |
5639 |
5641 |
5647 |
5651 |
5653 |
5657 |
5659 |
5669 |
5683 |
5689 |
5693 |
5701 |
5711 |
5717 |
5737 |
5741 |
5743 |
5749 |
5779 |
5783 |
5791 |
5801 |
5807 |
5813 |
5821 |
5827 |
5839 |
5843 |
5849 |
5851 |
5857 |
5861 |
5867 |
5869 |
5879 |
5881 |
5897 |
5903 |
5923 |
5927 |
5939 |
5953 |
5981 |
5987 |
6007 |
6011 |
6029 |
6037 |
6043 |
6047 |
6053 |
6067 |
6073 |
6079 |
6089 |
6091 |
6101 |
6113 |
6121 |
6131 |
6133 |
6143 |
6151 |
6163 |
6173 |
6197 |
6199 |
6203 |
6211 |
6217 |
6221 |
6229 |
6247 |
6257 |
6263 |
6269 |
6271 |
6277 |
6287 |
6299 |
6301 |
6311 |
6317 |
6323 |
6329 |
6337 |
6343 |
6353 |
6359 |
6361 |
6367 |
6373 |
6379 |
6389 |
6397 |
6421 |
6427 |
6449 |
6451 |
6469 |
6473 |
6481 |
6491 |
6521 |
6529 |
6547 |
6551 |
6553 |
6563 |
6569 |
6571 |
6577 |
6581 |
6599 |
6607 |
6619 |
6637 |
6653 |
6659 |
6661 |
6673 |
6679 |
6689 |
6691 |
6701 |
6703 |
6709 |
6719 |
6733 |
6737 |
6761 |
6763 |
6779 |
6781 |
6791 |
6793 |
6803 |
6823 |
6827 |
6829 |
6833 |
6841 |
6857 |
6863 |
6869 |
6871 |
6883 |
6899 |
6907 |
6911 |
6917 |
6947 |
6949 |
6959 |
6961 |
6967 |
6971 |
6977 |
6983 |
6991 |
6997 |
7001 |
7013 |
7019 |
7027 |
7039 |
7043 |
7057 |
7069 |
7079 |
7103 |
7109 |
7121 |
7127 |
7129 |
7151 |
7159 |
7177 |
7187 |
7193 |
7207 |
7211 |
7213 |
7219 |
7229 |
7237 |
7243 |
7247 |
7253 |
7283 |
7297 |
7307 |
7309 |
7321 |
7331 |
7333 |
7349 |
7351 |
7369 |
7393 |
7411 |
7417 |
7433 |
7451 |
7457 |
7459 |
7477 |
7481 |
7487 |
7489 |
7499 |
7507 |
7517 |
7523 |
7529 |
7537 |
7541 |
7547 |
7549 |
7559 |
7561 |
7573 |
7577 |
7583 |
7589 |
7591 |
7603 |
7607 |
7621 |
7639 |
7643 |
7649 |
7669 |
7673 |
7681 |
7687 |
7691 |
7699 |
7703 |
7717 |
7723 |
7727 |
7741 |
7753 |
7757 |
7759 |
7789 |
7793 |
7817 |
7823 |
7829 |
7841 |
7853 |
7867 |
7873 |
7877 |
7879 |
7883 |
7901 |
7907 |
7919 |
7927 |
7933 |
7937 |
7949 |
7951 |
7963 |
7993 |
8009 |
8011 |
8017 |
8039 |
8053 |
8059 |
8069 |
8081 |
8087 |
8089 |
8093 |
8101 |
8111 |
8117 |
8123 |
8147 |
8161 |
8167 |
8171 |
8179 |
8191 |
8209 |
8219 |
8221 |
8231 |
8233 |
8237 |
8243 |
8263 |
8269 |
8273 |
8287 |
8291 |
8293 |
8297 |
8311 |
8317 |
8329 |
8353 |
8363 |
8369 |
8377 |
8387 |
8389 |
8419 |
8423 |
8429 |
8431 |
8443 |
8447 |
8461 |
8467 |
8501 |
8513 |
8521 |
8527 |
8537 |
8539 |
8543 |
8563 |
8573 |
8581 |
8597 |
8599 |
8609 |
8623 |
8627 |
8629 |
8641 |
8647 |
8663 |
8669 |
8677 |
8681 |
8689 |
8693 |
8699 |
8707 |
8713 |
8719 |
8731 |
8737 |
8741 |
8747 |
8753 |
8761 |
8779 |
8783 |
8803 |
8807 |
8819 |
8821 |
8831 |
8837 |
8839 |
8849 |
8861 |
8863 |
8867 |
8887 |
8893 |
8923 |
8929 |
8933 |
8941 |
8951 |
8963 |
8969 |
8971 |
8999 |
9001 |
9007 |
9011 |
9013 |
9029 |
9041 |
9043 |
9049 |
9059 |
9067 |
9091 |
9103 |
9109 |
9127 |
9133 |
9137 |
9151 |
9157 |
9161 |
9173 |
9181 |
9187 |
9199 |
9203 |
9209 |
9221 |
9227 |
9239 |
9241 |
9257 |
9277 |
9281 |
9283 |
9293 |
9311 |
9319 |
9323 |
9337 |
9341 |
9343 |
9349 |
9371 |
9377 |
9391 |
9397 |
9403 |
9413 |
9419 |
9421 |
9431 |
9433 |
9437 |
9439 |
9461 |
9463 |
9467 |
9473 |
9479 |
9491 |
9497 |
9511 |
9521 |
9533 |
9539 |
9547 |
9551 |
9587 |
9601 |
9613 |
9619 |
9623 |
9629 |
9631 |
9643 |
9649 |
9661 |
9677 |
9679 |
9689 |
9697 |
9719 |
9721 |
9733 |
9739 |
9743 |
9749 |
9767 |
9769 |
9781 |
9787 |
9791 |
9803 |
9811 |
9817 |
9829 |
9833 |
9839 |
9851 |
9857 |
9859 |
9871 |
9883 |
9887 |
9901 |
9907 |
9923 |
9929 |
9931 |
9941 |
9949 |
9967 |
9973 |
10007 |
10009 |
10037 |
10039 |
10061 |
10067 |
10069 |
10079 |
10091 |
10093 |
10099 |
10103 |
10111 |
10133 |
10139 |
10141 |
10151 |
10159 |
10163 |
10169 |
10177 |
10181 |
10193 |
10211 |
10223 |
10243 |
10247 |
10253 |
10259 |
10267 |
10271 |
10273 |
10289 |
10301 |
10303 |
10313 |
10321 |
10331 |
10333 |
10337 |
10343 |
10357 |
10369 |
10391 |
10399 |
10427 |
10429 |
10433 |
10453 |
10457 |
10459 |
10463 |
10477 |
10487 |
10499 |
10501 |
10513 |
10529 |
10531 |
10559 |
10567 |
10589 |
10597 |
10601 |
10607 |
10613 |
10627 |
10631 |
10639 |
10651 |
10657 |
10663 |
10667 |
10687 |
10691 |
10709 |
10711 |
10723 |
10729 |
10733 |
10739 |
10753 |
10771 |
10781 |
10789 |
10799 |
10831 |
10837 |
10847 |
10853 |
10859 |
10861 |
10867 |
10883 |
10889 |
10891 |
10903 |
10909 |
10937 |
10939 |
10949 |
10957 |
10973 |
10979 |
10987 |
10993 |
11003 |
11027 |
11047 |
11057 |
11059 |
11069 |
11071 |
11083 |
11087 |
11093 |
11113 |
11117 |
11119 |
11131 |
11149 |
11159 |
11161 |
11171 |
11173 |
11177 |
11197 |
11213 |
11239 |
11243 |
11251 |
11257 |
11261 |
11273 |
11279 |
11287 |
11299 |
11311 |
11317 |
11321 |
11329 |
11351 |
11353 |
11369 |
11383 |
11393 |
11399 |
11411 |
11423 |
11437 |
11443 |
11447 |
11467 |
11471 |
11483 |
11489 |
11491 |
11497 |
11503 |
11519 |
11527 |
11549 |
11551 |
11579 |
11587 |
11593 |
11597 |
11617 |
11621 |
11633 |
11657 |
11677 |
11681 |
11689 |
11699 |
11701 |
11717 |
11719 |
11731 |
11743 |
11777 |
11779 |
11783 |
11789 |
11801 |
11807 |
11813 |
11821 |
11827 |
11831 |
11833 |
11839 |
11863 |
11867 |
11887 |
11897 |
11903 |
11909 |
11923 |
11927 |
11933 |
11939 |
11941 |
11953 |
11959 |
11969 |
11971 |
11981 |
11987 |
12007 |
12011 |
12037 |
12041 |
12043 |
12049 |
12071 |
12073 |
12097 |
12101 |
12107 |
12109 |
12113 |
12119 |
12143 |
12149 |
12157 |
12161 |
12163 |
12197 |
12203 |
12211 |
12227 |
12239 |
12241 |
12251 |
12253 |
12263 |
12269 |
12277 |
12281 |
12289 |
12301 |
12323 |
12329 |
12343 |
12347 |
12373 |
12377 |
12379 |
12391 |
12401 |
12409 |
12413 |
12421 |
12433 |
12437 |
12451 |
12457 |
12473 |
12479 |
12487 |
12491 |
12497 |
12503 |
12511 |
12517 |
12527 |
12539 |
12541 |
12547 |
12553 |
12569 |
12577 |
12583 |
12589 |
12601 |
12611 |
12613 |
12619 |
12637 |
12641 |
12647 |
12653 |
12659 |
12671 |
12689 |
12697 |
12703 |
12713 |
12721 |
12739 |
12743 |
12757 |
12763 |
12781 |
12791 |
12799 |
12809 |
12821 |
12823 |
12829 |
12841 |
12853 |
12889 |
12893 |
12899 |
12907 |
12911 |
12917 |
12919 |
12923 |
12941 |
12953 |
12959 |
12967 |
12973 |
12979 |
12983 |
13001 |
13003 |
13007 |
13009 |
13033 |
13037 |
13043 |
13049 |
13063 |
13093 |
13099 |
13103 |
13109 |
13121 |
13127 |
13147 |
13151 |
13159 |
13163 |
13171 |
13177 |
13183 |
13187 |
13217 |
13219 |
13229 |
13241 |
13249 |
13259 |
13267 |
13291 |
13297 |
13309 |
13313 |
13327 |
13331 |
13337 |
13339 |
13367 |
13381 |
13397 |
13399 |
13411 |
13417 |
13421 |
13441 |
13451 |
13457 |
13463 |
13469 |
13477 |
13487 |
13499 |
13513 |
13523 |
13537 |
13553 |
13567 |
13577 |
13591 |
13597 |
13613 |
13619 |
13627 |
13633 |
13649 |
13669 |
13679 |
13681 |
13687 |
13691 |
13693 |
13697 |
13709 |
13711 |
13721 |
13723 |
13729 |
13751 |
13757 |
13759 |
13763 |
13781 |
13789 |
13799 |
13807 |
13829 |
13831 |
13841 |
13859 |
13873 |
13877 |
13879 |
13883 |
13901 |
13903 |
13907 |
13913 |
13921 |
13931 |
13933 |
13963 |
13967 |
13997 |
13999 |
14009 |
14011 |
14029 |
14033 |
14051 |
14057 |
14071 |
14081 |
14083 |
14087 |
14107 |
14143 |
14149 |
14153 |
14159 |
14173 |
14177 |
14197 |
14207 |
14221 |
14243 |
14249 |
14251 |
14281 |
14293 |
14303 |
14321 |
14323 |
14327 |
14341 |
14347 |
14369 |
14387 |
14389 |
14401 |
14407 |
14411 |
14419 |
14423 |
14431 |
14437 |
14447 |
14449 |
14461 |
14479 |
14489 |
14503 |
14519 |
14533 |
14537 |
14543 |
14549 |
14551 |
14557 |
14561 |
14563 |
14591 |
14593 |
14621 |
14627 |
14629 |
14633 |
14639 |
14653 |
14657 |
14669 |
14683 |
14699 |
14713 |
14717 |
14723 |
14731 |
14737 |
14741 |
14747 |
14753 |
14759 |
14767 |
14771 |
14779 |
14783 |
14797 |
14813 |
14821 |
14827 |
14831 |
14843 |
14851 |
14867 |
14869 |
14879 |
14887 |
14891 |
14897 |
14923 |
14929 |
14939 |
14947 |
14951 |
14957 |
14969 |
14983 |
15013 |
15017 |
15031 |
15053 |
15061 |
15073 |
15077 |
15083 |
15091 |
15101 |
15107 |
15121 |
15131 |
15137 |
15139 |
15149 |
15161 |
15173 |
15187 |
15193 |
15199 |
15217 |
15227 |
15233 |
15241 |
15259 |
15263 |
15269 |
15271 |
15277 |
15287 |
15289 |
15299 |
15307 |
15313 |
15319 |
15329 |
15331 |
15349 |
15359 |
15361 |
15373 |
15377 |
15383 |
15391 |
15401 |
15413 |
15427 |
15439 |
15443 |
15451 |
15461 |
15467 |
15473 |
15493 |
15497 |
15511 |
15527 |
15541 |
15551 |
15559 |
15569 |
15581 |
15583 |
15601 |
15607 |
15619 |
15629 |
15641 |
15643 |
15647 |
15649 |
15661 |
15667 |
15671 |
15679 |
15683 |
15727 |
15731 |
15733 |
15737 |
15739 |
15749 |
15761 |
15767 |
15773 |
15787 |
15791 |
15797 |
15803 |
15809 |
15817 |
15823 |
15859 |
15877 |
15881 |
15887 |
15889 |
15901 |
15907 |
15913 |
15919 |
15923 |
15937 |
15959 |
15971 |
15973 |
15991 |
16001 |
16007 |
16033 |
16057 |
16061 |
16063 |
16067 |
16069 |
16073 |
16087 |
16091 |
16097 |
16103 |
16111 |
16127 |
16139 |
16141 |
16183 |
16187 |
16189 |
16193 |
16217 |
16223 |
16229 |
16231 |
16249 |
16253 |
16267 |
16273 |
16301 |
16319 |
16333 |
16339 |
16349 |
16361 |
16363 |
16369 |
16381 |
16411 |
16417 |
16421 |
16427 |
16433 |
16447 |
16451 |
16453 |
16477 |
16481 |
16487 |
16493 |
16519 |
16529 |
16547 |
16553 |
16561 |
16567 |
16573 |
16603 |
16607 |
16619 |
16631 |
16633 |
16649 |
16651 |
16657 |
16661 |
16673 |
16691 |
16693 |
16699 |
16703 |
16729 |
16741 |
16747 |
16759 |
16763 |
16787 |
16811 |
16823 |
16829 |
16831 |
16843 |
16871 |
16879 |
16883 |
16889 |
16901 |
16903 |
16921 |
16927 |
16931 |
16937 |
16943 |
16963 |
16979 |
16981 |
16987 |
16993 |
17011 |
17021 |
17027 |
17029 |
17033 |
17041 |
17047 |
17053 |
17077 |
17093 |
17099 |
17107 |
17117 |
17123 |
17137 |
17159 |
17167 |
17183 |
17189 |
17191 |
17203 |
17207 |
17209 |
17231 |
17239 |
17257 |
17291 |
17293 |
17299 |
17317 |
17321 |
17327 |
17333 |
17341 |
17351 |
17359 |
17377 |
17383 |
17387 |
17389 |
17393 |
17401 |
17417 |
17419 |
17431 |
17443 |
17449 |
17467 |
17471 |
17477 |
17483 |
17489 |
17491 |
17497 |
17509 |
17519 |
17539 |
17551 |
17569 |
17573 |
17579 |
17581 |
17597 |
17599 |
17609 |
17623 |
17627 |
17657 |
17659 |
17669 |
17681 |
17683 |
17707 |
17713 |
17729 |
17737 |
17747 |
17749 |
17761 |
17783 |
17789 |
17791 |
17807 |
17827 |
17837 |
17839 |
17851 |
17863 |
17881 |
17891 |
17903 |
17909 |
17911 |
17921 |
17923 |
17929 |
17939 |
17957 |
17959 |
17971 |
17977 |
17981 |
17987 |
17989 |
18013 |
18041 |
18043 |
18047 |
18049 |
18059 |
18061 |
18077 |
18089 |
18097 |
18119 |
18121 |
18127 |
18131 |
18133 |
18143 |
18149 |
18169 |
18181 |
18191 |
18199 |
18211 |
18217 |
18223 |
18229 |
18233 |
18251 |
18253 |
18257 |
18269 |
18287 |
18289 |
18301 |
18307 |
18311 |
18313 |
18329 |
18341 |
18353 |
18367 |
18371 |
18379 |
18397 |
18401 |
18413 |
18427 |
18433 |
18439 |
18443 |
18451 |
18457 |
18461 |
18481 |
18493 |
18503 |
18517 |
18521 |
18523 |
18539 |
18541 |
18553 |
18583 |
18587 |
18593 |
18617 |
18637 |
18661 |
18671 |
18679 |
18691 |
18701 |
18713 |
18719 |
18731 |
18743 |
18749 |
18757 |
18773 |
18787 |
18793 |
18797 |
18803 |
18839 |
18859 |
18869 |
18899 |
18911 |
18913 |
18917 |
18919 |
18947 |
18959 |
18973 |
18979 |
19001 |
19009 |
19013 |
19031 |
19037 |
19051 |
19069 |
19073 |
19079 |
19081 |
19087 |
19121 |
19139 |
19141 |
19157 |
19163 |
19181 |
19183 |
19207 |
19211 |
19213 |
19219 |
19231 |
19237 |
19249 |
19259 |
19267 |
19273 |
19289 |
19301 |
19309 |
19319 |
19333 |
19373 |
19379 |
19381 |
19387 |
19391 |
19403 |
19417 |
19421 |
19423 |
19427 |
19429 |
19433 |
19441 |
19447 |
19457 |
19463 |
19469 |
19471 |
19477 |
19483 |
19489 |
19501 |
19507 |
19531 |
19541 |
19543 |
19553 |
19559 |
19571 |
19577 |
19583 |
19597 |
19603 |
19609 |
19661 |
19681 |
19687 |
19697 |
19699 |
19709 |
19717 |
19727 |
19739 |
19751 |
19753 |
19759 |
19763 |
19777 |
19793 |
19801 |
19813 |
19819 |
19841 |
19843 |
19853 |
19861 |
19867 |
19889 |
19891 |
19913 |
19919 |
19927 |
19937 |
19949 |
19961 |
19963 |
19973 |
19979 |
19991 |
19993 |
19997 |
20011 |
20021 |
20023 |
20029 |
20047 |
20051 |
20063 |
20071 |
20089 |
20101 |
20107 |
20113 |
20117 |
20123 |
20129 |
20143 |
20147 |
20149 |
20161 |
20173 |
20177 |
20183 |
20201 |
20219 |
20231 |
20233 |
20249 |
20261 |
20269 |
20287 |
20297 |
20323 |
20327 |
20333 |
20341 |
20347 |
20353 |
20357 |
20359 |
20369 |
20389 |
20393 |
20399 |
20407 |
20411 |
20431 |
20441 |
20443 |
20477 |
20479 |
20483 |
20507 |
20509 |
20521 |
20533 |
20543 |
20549 |
20551 |
20563 |
20593 |
20599 |
20611 |
20627 |
20639 |
20641 |
20663 |
20681 |
20693 |
20707 |
20717 |
20719 |
20731 |
20743 |
20747 |
20749 |
20753 |
20759 |
20771 |
20773 |
20789 |
20807 |
20809 |
20849 |
20857 |
20873 |
20879 |
20887 |
20897 |
20899 |
20903 |
20921 |
20929 |
20939 |
20947 |
20959 |
20963 |
20981 |
20983 |
21001 |
21011 |
21013 |
21017 |
21019 |
21023 |
21031 |
21059 |
21061 |
21067 |
21089 |
21101 |
21107 |
21121 |
21139 |
21143 |
21149 |
21157 |
21163 |
21169 |
21179 |
21187 |
21191 |
21193 |
21211 |
21221 |
21227 |
21247 |
21269 |
21277 |
21283 |
21313 |
21317 |
21319 |
21323 |
21341 |
21347 |
21377 |
21379 |
21383 |
21391 |
21397 |
21401 |
21407 |
21419 |
21433 |
21467 |
21481 |
21487 |
21491 |
21493 |
21499 |
21503 |
21517 |
21521 |
21523 |
21529 |
21557 |
21559 |
21563 |
21569 |
21577 |
21587 |
21589 |
21599 |
21601 |
21611 |
21613 |
21617 |
21647 |
21649 |
21661 |
21673 |
21683 |
21701 |
21713 |
21727 |
21737 |
21739 |
21751 |
21757 |
21767 |
21773 |
21787 |
21799 |
21803 |
21817 |
21821 |
21839 |
21841 |
21851 |
21859 |
21863 |
21871 |
21881 |
21893 |
21911 |
21929 |
21937 |
21943 |
21961 |
21977 |
21991 |
21997 |
22003 |
22013 |
22027 |
22031 |
22037 |
22039 |
22051 |
22063 |
22067 |
22073 |
22079 |
22091 |
22093 |
22109 |
22111 |
22123 |
22129 |
22133 |
22147 |
22153 |
22157 |
22159 |
22171 |
22189 |
22193 |
22229 |
22247 |
22259 |
22271 |
22273 |
22277 |
22279 |
22283 |
22291 |
22303 |
22307 |
22343 |
22349 |
22367 |
22369 |
22381 |
22391 |
22397 |
22409 |
22433 |
22441 |
22447 |
22453 |
22469 |
22481 |
22483 |
22501 |
22511 |
22531 |
22541 |
22543 |
22549 |
22567 |
22571 |
22573 |
22613 |
22619 |
22621 |
22637 |
22639 |
22643 |
22651 |
22669 |
22679 |
22691 |
22697 |
22699 |
22709 |
22717 |
22721 |
22727 |
22739 |
22741 |
22751 |
22769 |
22777 |
22783 |
22787 |
22807 |
22811 |
22817 |
22853 |
22859 |
22861 |
22871 |
22877 |
22901 |
22907 |
22921 |
22937 |
22943 |
22961 |
22963 |
22973 |
22993 |
23003 |
23011 |
23017 |
23021 |
23027 |
23029 |
23039 |
23041 |
23053 |
23057 |
23059 |
23063 |
23071 |
23081 |
23087 |
23099 |
23117 |
23131 |
23143 |
23159 |
23167 |
23173 |
23189 |
23197 |
23201 |
23203 |
23209 |
23227 |
23251 |
23269 |
23279 |
23291 |
23293 |
23297 |
23311 |
23321 |
23327 |
23333 |
23339 |
23357 |
23369 |
23371 |
23399 |
23417 |
23431 |
23447 |
23459 |
23473 |
23497 |
23509 |
23531 |
23537 |
23539 |
23549 |
23557 |
23561 |
23563 |
23567 |
23581 |
23593 |
23599 |
23603 |
23609 |
23623 |
23627 |
23629 |
23633 |
23663 |
23669 |
23671 |
23677 |
23687 |
23689 |
23719 |
23741 |
23743 |
23747 |
23753 |
23761 |
23767 |
23773 |
23789 |
23801 |
23813 |
23819 |
23827 |
23831 |
23833 |
23857 |
23869 |
23873 |
23879 |
23887 |
23893 |
23899 |
23909 |
23911 |
23917 |
23929 |
23957 |
23971 |
23977 |
23981 |
23993 |
24001 |
24007 |
24019 |
24023 |
24029 |
24043 |
24049 |
24061 |
24071 |
24077 |
24083 |
24091 |
24097 |
24103 |
24107 |
24109 |
24113 |
24121 |
24133 |
24137 |
24151 |
24169 |
24179 |
24181 |
24197 |
24203 |
24223 |
24229 |
24239 |
24247 |
24251 |
24281 |
24317 |
24329 |
24337 |
24359 |
24371 |
24373 |
24379 |
24391 |
24407 |
24413 |
24419 |
24421 |
24439 |
24443 |
24469 |
24473 |
24481 |
24499 |
24509 |
24517 |
24527 |
24533 |
24547 |
24551 |
24571 |
24593 |
24611 |
24623 |
24631 |
24659 |
24671 |
24677 |
24683 |
24691 |
24697 |
24709 |
24733 |
24749 |
24763 |
24767 |
24781 |
24793 |
24799 |
24809 |
24821 |
24841 |
24847 |
24851 |
24859 |
24877 |
24889 |
24907 |
24917 |
24919 |
24923 |
24943 |
24953 |
24967 |
24971 |
24977 |
24979 |
24989 |
25013 |
25031 |
25033 |
25037 |
25057 |
25073 |
25087 |
25097 |
25111 |
25117 |
25121 |
25127 |
25147 |
25153 |
25163 |
25169 |
25171 |
25183 |
25189 |
25219 |
25229 |
25237 |
25243 |
25247 |
25253 |
25261 |
25301 |
25303 |
25307 |
25309 |
25321 |
25339 |
25343 |
25349 |
25357 |
25367 |
25373 |
25391 |
25409 |
25411 |
25423 |
25439 |
25447 |
25453 |
25457 |
25463 |
25469 |
25471 |
25523 |
25537 |
25541 |
25561 |
25577 |
25579 |
25583 |
25589 |
25601 |
25603 |
25609 |
25621 |
25633 |
25639 |
25643 |
25657 |
25667 |
25673 |
25679 |
25693 |
25703 |
25717 |
25733 |
25741 |
25747 |
25759 |
25763 |
25771 |
25793 |
25799 |
25801 |
25819 |
25841 |
25847 |
25849 |
25867 |
25873 |
25889 |
25903 |
25913 |
25919 |
25931 |
25933 |
25939 |
25943 |
25951 |
25969 |
25981 |
25997 |
25999 |
26003 |
26017 |
26021 |
26029 |
26041 |
26053 |
26083 |
26099 |
26107 |
26111 |
26113 |
26119 |
26141 |
26153 |
26161 |
26171 |
26177 |
26183 |
26189 |
26203 |
26209 |
26227 |
26237 |
26249 |
26251 |
26261 |
26263 |
26267 |
26293 |
26297 |
26309 |
26317 |
26321 |
26339 |
26347 |
26357 |
26371 |
26387 |
26393 |
26399 |
26407 |
26417 |
26423 |
26431 |
26437 |
26449 |
26459 |
26479 |
26489 |
26497 |
26501 |
26513 |
26539 |
26557 |
26561 |
26573 |
26591 |
26597 |
26627 |
26633 |
26641 |
26647 |
26669 |
26681 |
26683 |
26687 |
26693 |
26699 |
26701 |
26711 |
26713 |
26717 |
26723 |
26729 |
26731 |
26737 |
26759 |
26777 |
26783 |
26801 |
26813 |
26821 |
26833 |
26839 |
26849 |
26861 |
26863 |
26879 |
26881 |
26891 |
26893 |
26903 |
26921 |
26927 |
26947 |
26951 |
26953 |
26959 |
26981 |
26987 |
26993 |
27011 |
27017 |
27031 |
27043 |
27059 |
27061 |
27067 |
27073 |
27077 |
27091 |
27103 |
27107 |
27109 |
27127 |
27143 |
27179 |
27191 |
27197 |
27211 |
27239 |
27241 |
27253 |
27259 |
27271 |
27277 |
27281 |
27283 |
27299 |
27329 |
27337 |
27361 |
27367 |
27397 |
27407 |
27409 |
27427 |
27431 |
27437 |
27449 |
27457 |
27479 |
27481 |
27487 |
27509 |
27527 |
27529 |
27539 |
27541 |
27551 |
27581 |
27583 |
27611 |
27617 |
27631 |
27647 |
27653 |
27673 |
27689 |
27691 |
27697 |
27701 |
27733 |
27737 |
27739 |
27743 |
27749 |
27751 |
27763 |
27767 |
27773 |
27779 |
27791 |
27793 |
27799 |
27803 |
27809 |
27817 |
27823 |
27827 |
27847 |
27851 |
27883 |
27893 |
27901 |
27917 |
27919 |
27941 |
27943 |
27947 |
27953 |
27961 |
27967 |
27983 |
27997 |
28001 |
28019 |
28027 |
28031 |
28051 |
28057 |
28069 |
28081 |
28087 |
28097 |
28099 |
28109 |
28111 |
28123 |
28151 |
28163 |
28181 |
28183 |
28201 |
28211 |
28219 |
28229 |
28277 |
28279 |
28283 |
28289 |
28297 |
28307 |
28309 |
28319 |
28349 |
28351 |
28387 |
28393 |
28403 |
28409 |
28411 |
28429 |
28433 |
28439 |
28447 |
28463 |
28477 |
28493 |
28499 |
28513 |
28517 |
28537 |
28541 |
28547 |
28549 |
28559 |
28571 |
28573 |
28579 |
28591 |
28597 |
28603 |
28607 |
28619 |
28621 |
28627 |
28631 |
28643 |
28649 |
28657 |
28661 |
28663 |
28669 |
28687 |
28697 |
28703 |
28711 |
28723 |
28729 |
28751 |
28753 |
28759 |
28771 |
28789 |
28793 |
28807 |
28813 |
28817 |
28837 |
28843 |
28859 |
28867 |
28871 |
28879 |
28901 |
28909 |
28921 |
28927 |
28933 |
28949 |
28961 |
28979 |
29009 |
29017 |
29021 |
29023 |
29027 |
29033 |
29059 |
29063 |
29077 |
29101 |
29123 |
29129 |
29131 |
29137 |
29147 |
29153 |
29167 |
29173 |
29179 |
29191 |
29201 |
29207 |
29209 |
29221 |
29231 |
29243 |
29251 |
29269 |
29287 |
29297 |
29303 |
29311 |
29327 |
29333 |
29339 |
29347 |
29363 |
29383 |
29387 |
29389 |
29399 |
29401 |
29411 |
29423 |
29429 |
29437 |
29443 |
29453 |
29473 |
29483 |
29501 |
29527 |
29531 |
29537 |
29567 |
29569 |
29573 |
29581 |
29587 |
29599 |
29611 |
29629 |
29633 |
29641 |
29663 |
29669 |
29671 |
29683 |
29717 |
29723 |
29741 |
29753 |
29759 |
29761 |
29789 |
29803 |
29819 |
29833 |
29837 |
29851 |
29863 |
29867 |
29873 |
29879 |
29881 |
29917 |
29921 |
29927 |
29947 |
29959 |
29983 |
29989 |
30011 |
30013 |
30029 |
30047 |
30059 |
30071 |
30089 |
30091 |
30097 |
30103 |
30109 |
30113 |
30119 |
30133 |
30137 |
30139 |
30161 |
30169 |
30181 |
30187 |
30197 |
30203 |
30211 |
30223 |
30241 |
30253 |
30259 |
30269 |
30271 |
30293 |
30307 |
30313 |
30319 |
30323 |
30341 |
30347 |
30367 |
30389 |
30391 |
30403 |
30427 |
30431 |
30449 |
30467 |
30469 |
30491 |
30493 |
30497 |
30509 |
30517 |
30529 |
30539 |
30553 |
30557 |
30559 |
30577 |
30593 |
30631 |
30637 |
30643 |
30649 |
30661 |
30671 |
30677 |
30689 |
30697 |
30703 |
30707 |
30713 |
30727 |
30757 |
30763 |
30773 |
30781 |
30803 |
30809 |
30817 |
30829 |
30839 |
30841 |
30851 |
30853 |
30859 |
30869 |
30871 |
30881 |
30893 |
30911 |
30931 |
30937 |
30941 |
30949 |
30971 |
30977 |
30983 |
31013 |
31019 |
31033 |
31039 |
31051 |
31063 |
31069 |
31079 |
31081 |
31091 |
31121 |
31123 |
31139 |
31147 |
31151 |
31153 |
31159 |
31177 |
31181 |
31183 |
31189 |
31193 |
31219 |
31223 |
31231 |
31237 |
31247 |
31249 |
31253 |
31259 |
31267 |
31271 |
31277 |
31307 |
31319 |
31321 |
31327 |
31333 |
31337 |
31357 |
31379 |
31387 |
31391 |
31393 |
31397 |
31469 |
31477 |
31481 |
31489 |
31511 |
31513 |
31517 |
31531 |
31541 |
31543 |
31547 |
31567 |
31573 |
31583 |
31601 |
31607 |
31627 |
31643 |
31649 |
31657 |
31663 |
31667 |
31687 |
31699 |
31721 |
31723 |
31727 |
31729 |
31741 |
31751 |
31769 |
31771 |
31793 |
31799 |
31817 |
31847 |
31849 |
31859 |
31873 |
31883 |
31891 |
31907 |
31957 |
31963 |
31973 |
31981 |
31991 |
32003 |
32009 |
32027 |
32029 |
32051 |
32057 |
32059 |
32063 |
32069 |
32077 |
32083 |
32089 |
32099 |
32117 |
32119 |
32141 |
32143 |
32159 |
32173 |
32183 |
32189 |
32191 |
32203 |
32213 |
32233 |
32237 |
32251 |
32257 |
32261 |
32297 |
32299 |
32303 |
32309 |
32321 |
32323 |
32327 |
32341 |
32353 |
32359 |
32363 |
32369 |
32371 |
32377 |
32381 |
32401 |
32411 |
32413 |
32423 |
32429 |
32441 |
32443 |
32467 |
32479 |
32491 |
32497 |
32503 |
32507 |
32531 |
32533 |
32537 |
32561 |
32563 |
32569 |
32573 |
32579 |
32587 |
32603 |
32609 |
32611 |
32621 |
32633 |
32647 |
32653 |
32687 |
32693 |
32707 |
32713 |
32717 |
32719 |
32749 |
32771 |
32779 |
32783 |
32789 |
32797 |
32801 |
32803 |
32831 |
32833 |
32839 |
32843 |
32869 |
32887 |
32909 |
32911 |
32917 |
32933 |
32939 |
32941 |
32957 |
32969 |
32971 |
32983 |
32987 |
32993 |
32999 |
33013 |
33023 |
33029 |
33037 |
33049 |
33053 |
33071 |
33073 |
33083 |
33091 |
33107 |
33113 |
33119 |
33149 |
33151 |
33161 |
33179 |
33181 |
33191 |
33199 |
33203 |
33211 |
33223 |
33247 |
33287 |
33289 |
33301 |
33311 |
33317 |
33329 |
33331 |
33343 |
33347 |
33349 |
33353 |
33359 |
33377 |
33391 |
33403 |
33409 |
33413 |
33427 |
33457 |
33461 |
33469 |
33479 |
33487 |
33493 |
33503 |
33521 |
33529 |
33533 |
33547 |
33563 |
33569 |
33577 |
33581 |
33587 |
33589 |
33599 |
33601 |
33613 |
33617 |
33619 |
33623 |
33629 |
33637 |
33641 |
33647 |
33679 |
33703 |
33713 |
33721 |
33739 |
33749 |
33751 |
33757 |
33767 |
33769 |
33773 |
33791 |
33797 |
33809 |
33811 |
33827 |
33829 |
33851 |
33857 |
33863 |
33871 |
33889 |
33893 |
33911 |
33923 |
33931 |
33937 |
33941 |
33961 |
33967 |
33997 |
34019 |
34031 |
34033 |
34039 |
34057 |
34061 |
34123 |
34127 |
34129 |
34141 |
34147 |
34157 |
34159 |
34171 |
34183 |
34211 |
34213 |
34217 |
34231 |
34253 |
34259 |
34261 |
34267 |
34273 |
34283 |
34297 |
34301 |
34303 |
34313 |
34319 |
34327 |
34337 |
34351 |
34361 |
34367 |
34369 |
34381 |
34403 |
34421 |
34429 |
34439 |
34457 |
34469 |
34471 |
34483 |
34487 |
34499 |
34501 |
34511 |
34513 |
34519 |
34537 |
34543 |
34549 |
34583 |
34589 |
34591 |
34603 |
34607 |
34613 |
34631 |
34649 |
34651 |
34667 |
34673 |
34679 |
34687 |
34693 |
34703 |
34721 |
34729 |
34739 |
34747 |
34757 |
34759 |
34763 |
34781 |
34807 |
34819 |
34841 |
34843 |
34847 |
34849 |
34871 |
34877 |
34883 |
34897 |
34913 |
34919 |
34939 |
34949 |
34961 |
34963 |
34981 |
35023 |
35027 |
35051 |
35053 |
35059 |
35069 |
35081 |
35083 |
35089 |
35099 |
35107 |
35111 |
35117 |
35129 |
35141 |
35149 |
35153 |
35159 |
35171 |
35201 |
35221 |
35227 |
35251 |
35257 |
35267 |
35279 |
35281 |
35291 |
35311 |
35317 |
35323 |
35327 |
35339 |
35353 |
35363 |
35381 |
35393 |
35401 |
35407 |
35419 |
35423 |
35437 |
35447 |
35449 |
35461 |
35491 |
35507 |
35509 |
35521 |
35527 |
35531 |
35533 |
35537 |
35543 |
35569 |
35573 |
35591 |
35593 |
35597 |
35603 |
35617 |
35671 |
35677 |
35729 |
35731 |
35747 |
35753 |
35759 |
35771 |
35797 |
35801 |
35803 |
35809 |
35831 |
35837 |
35839 |
35851 |
35863 |
35869 |
35879 |
35897 |
35899 |
35911 |
35923 |
35933 |
35951 |
35963 |
35969 |
35977 |
35983 |
35993 |
35999 |
36007 |
36011 |
36013 |
36017 |
36037 |
36061 |
36067 |
36073 |
36083 |
36097 |
36107 |
36109 |
36131 |
36137 |
36151 |
36161 |
36187 |
36191 |
36209 |
36217 |
36229 |
36241 |
36251 |
36263 |
36269 |
36277 |
36293 |
36299 |
36307 |
36313 |
36319 |
36341 |
36343 |
36353 |
36373 |
36383 |
36389 |
36433 |
36451 |
36457 |
36467 |
36469 |
36473 |
36479 |
36493 |
36497 |
36523 |
36527 |
36529 |
36541 |
36551 |
36559 |
36563 |
36571 |
36583 |
36587 |
36599 |
36607 |
36629 |
36637 |
36643 |
36653 |
36671 |
36677 |
36683 |
36691 |
36697 |
36709 |
36713 |
36721 |
36739 |
36749 |
36761 |
36767 |
36779 |
36781 |
36787 |
36791 |
36793 |
36809 |
36821 |
36833 |
36847 |
36857 |
36871 |
36877 |
36887 |
36899 |
36901 |
36913 |
36919 |
36923 |
36929 |
36931 |
36943 |
36947 |
36973 |
36979 |
36997 |
37003 |
37013 |
37019 |
37021 |
37039 |
37049 |
37057 |
37061 |
37087 |
37097 |
37117 |
37123 |
37139 |
37159 |
37171 |
37181 |
37189 |
37199 |
37201 |
37217 |
37223 |
37243 |
37253 |
37273 |
37277 |
37307 |
37309 |
37313 |
37321 |
37337 |
37339 |
37357 |
37361 |
37363 |
37369 |
37379 |
37397 |
37409 |
37423 |
37441 |
37447 |
37463 |
37483 |
37489 |
37493 |
37501 |
37507 |
37511 |
37517 |
37529 |
37537 |
37547 |
37549 |
37561 |
37567 |
37571 |
37573 |
37579 |
37589 |
37591 |
37607 |
37619 |
37633 |
37643 |
37649 |
37657 |
37663 |
37691 |
37693 |
37699 |
37717 |
37747 |
37781 |
37783 |
37799 |
37811 |
37813 |
37831 |
37847 |
37853 |
37861 |
37871 |
37879 |
37889 |
37897 |
37907 |
37951 |
37957 |
37963 |
37967 |
37987 |
37991 |
37993 |
37997 |
38011 |
38039 |
38047 |
38053 |
38069 |
38083 |
38113 |
38119 |
38149 |
38153 |
38167 |
38177 |
38183 |
38189 |
38197 |
38201 |
38219 |
38231 |
38237 |
38239 |
38261 |
38273 |
38281 |
38287 |
38299 |
38303 |
38317 |
38321 |
38327 |
38329 |
38333 |
38351 |
38371 |
38377 |
38393 |
38431 |
38447 |
38449 |
38453 |
38459 |
38461 |
38501 |
38543 |
38557 |
38561 |
38567 |
38569 |
38593 |
38603 |
38609 |
38611 |
38629 |
38639 |
38651 |
38653 |
38669 |
38671 |
38677 |
38693 |
38699 |
38707 |
38711 |
38713 |
38723 |
38729 |
38737 |
38747 |
38749 |
38767 |
38783 |
38791 |
38803 |
38821 |
38833 |
38839 |
38851 |
38861 |
38867 |
38873 |
38891 |
38903 |
38917 |
38921 |
38923 |
38933 |
38953 |
38959 |
38971 |
38977 |
38993 |
39019 |
39023 |
39041 |
39043 |
39047 |
39079 |
39089 |
39097 |
39103 |
39107 |
39113 |
39119 |
39133 |
39139 |
39157 |
39161 |
39163 |
39181 |
39191 |
39199 |
39209 |
39217 |
39227 |
39229 |
39233 |
39239 |
39241 |
39251 |
39293 |
39301 |
39313 |
39317 |
39323 |
39341 |
39343 |
39359 |
39367 |
39371 |
39373 |
39383 |
39397 |
39409 |
39419 |
39439 |
39443 |
39451 |
39461 |
39499 |
39503 |
39509 |
39511 |
39521 |
39541 |
39551 |
39563 |
39569 |
39581 |
39607 |
39619 |
39623 |
39631 |
39659 |
39667 |
39671 |
39679 |
39703 |
39709 |
39719 |
39727 |
39733 |
39749 |
39761 |
39769 |
39779 |
39791 |
39799 |
39821 |
39827 |
39829 |
39839 |
39841 |
39847 |
39857 |
39863 |
39869 |
39877 |
39883 |
39887 |
39901 |
39929 |
39937 |
39953 |
39971 |
39979 |
39983 |
39989 |
40009 |
40013 |
40031 |
40037 |
40039 |
40063 |
40087 |
40093 |
40099 |
40111 |
40123 |
40127 |
40129 |
40151 |
40153 |
40163 |
40169 |
40177 |
40189 |
40193 |
40213 |
40231 |
40237 |
40241 |
40253 |
40277 |
40283 |
40289 |
40343 |
40351 |
40357 |
40361 |
40387 |
40423 |
40427 |
40429 |
40433 |
40459 |
40471 |
40483 |
40487 |
40493 |
40499 |
40507 |
40519 |
40529 |
40531 |
40543 |
40559 |
40577 |
40583 |
40591 |
40597 |
40609 |
40627 |
40637 |
40639 |
40693 |
40697 |
40699 |
40709 |
40739 |
40751 |
40759 |
40763 |
40771 |
40787 |
40801 |
40813 |
40819 |
40823 |
40829 |
40841 |
40847 |
40849 |
40853 |
40867 |
40879 |
40883 |
40897 |
40903 |
40927 |
40933 |
40939 |
40949 |
40961 |
40973 |
40993 |
41011 |
41017 |
41023 |
41039 |
41047 |
41051 |
41057 |
41077 |
41081 |
41113 |
41117 |
41131 |
41141 |
41143 |
41149 |
41161 |
41177 |
41179 |
41183 |
41189 |
41201 |
41203 |
41213 |
41221 |
41227 |
41231 |
41233 |
41243 |
41257 |
41263 |
41269 |
41281 |
41299 |
41333 |
41341 |
41351 |
41357 |
41381 |
41387 |
41389 |
41399 |
41411 |
41413 |
41443 |
41453 |
41467 |
41479 |
41491 |
41507 |
41513 |
41519 |
41521 |
41539 |
41543 |
41549 |
41579 |
41593 |
41597 |
41603 |
41609 |
41611 |
41617 |
41621 |
41627 |
41641 |
41647 |
41651 |
41659 |
41669 |
41681 |
41687 |
41719 |
41729 |
41737 |
41759 |
41761 |
41771 |
41777 |
41801 |
41809 |
41813 |
41843 |
41849 |
41851 |
41863 |
41879 |
41887 |
41893 |
41897 |
41903 |
41911 |
41927 |
41941 |
41947 |
41953 |
41957 |
41959 |
41969 |
41981 |
41983 |
41999 |
42013 |
42017 |
42019 |
42023 |
42043 |
42061 |
42071 |
42073 |
42083 |
42089 |
42101 |
42131 |
42139 |
42157 |
42169 |
42179 |
42181 |
42187 |
42193 |
42197 |
42209 |
42221 |
42223 |
42227 |
42239 |
42257 |
42281 |
42283 |
42293 |
42299 |
42307 |
42323 |
42331 |
42337 |
42349 |
42359 |
42373 |
42379 |
42391 |
42397 |
42403 |
42407 |
42409 |
42433 |
42437 |
42443 |
42451 |
42457 |
42461 |
42463 |
42467 |
42473 |
42487 |
42491 |
42499 |
42509 |
42533 |
42557 |
42569 |
42571 |
42577 |
42589 |
42611 |
42641 |
42643 |
42649 |
42667 |
42677 |
42683 |
42689 |
42697 |
42701 |
42703 |
42709 |
42719 |
42727 |
42737 |
42743 |
42751 |
42767 |
42773 |
42787 |
42793 |
42797 |
42821 |
42829 |
42839 |
42841 |
42853 |
42859 |
42863 |
42899 |
42901 |
42923 |
42929 |
42937 |
42943 |
42953 |
42961 |
42967 |
42979 |
42989 |
43003 |
43013 |
43019 |
43037 |
43049 |
43051 |
43063 |
43067 |
43093 |
43103 |
43117 |
43133 |
43151 |
43159 |
43177 |
43189 |
43201 |
43207 |
43223 |
43237 |
43261 |
43271 |
43283 |
43291 |
43313 |
43319 |
43321 |
43331 |
43391 |
43397 |
43399 |
43403 |
43411 |
43427 |
43441 |
43451 |
43457 |
43481 |
43487 |
43499 |
43517 |
43541 |
43543 |
43573 |
43577 |
43579 |
43591 |
43597 |
43607 |
43609 |
43613 |
43627 |
43633 |
43649 |
43651 |
43661 |
43669 |
43691 |
43711 |
43717 |
43721 |
43753 |
43759 |
43777 |
43781 |
43783 |
43787 |
43789 |
43793 |
43801 |
43853 |
43867 |
43889 |
43891 |
43913 |
43933 |
43943 |
43951 |
43961 |
43963 |
43969 |
43973 |
43987 |
43991 |
43997 |
44017 |
44021 |
44027 |
44029 |
44041 |
44053 |
44059 |
44071 |
44087 |
44089 |
44101 |
44111 |
44119 |
44123 |
44129 |
44131 |
44159 |
44171 |
44179 |
44189 |
44201 |
44203 |
44207 |
44221 |
44249 |
44257 |
44263 |
44267 |
44269 |
44273 |
44279 |
44281 |
44293 |
44351 |
44357 |
44371 |
44381 |
44383 |
44389 |
44417 |
44449 |
44453 |
44483 |
44491 |
44497 |
44501 |
44507 |
44519 |
44531 |
44533 |
44537 |
44543 |
44549 |
44563 |
44579 |
44587 |
44617 |
44621 |
44623 |
44633 |
44641 |
44647 |
44651 |
44657 |
44683 |
44687 |
44699 |
44701 |
44711 |
44729 |
44741 |
44753 |
44771 |
44773 |
44777 |
44789 |
44797 |
44809 |
44819 |
44839 |
44843 |
44851 |
44867 |
44879 |
44887 |
44893 |
44909 |
44917 |
44927 |
44939 |
44953 |
44959 |
44963 |
44971 |
44983 |
44987 |
45007 |
45013 |
45053 |
45061 |
45077 |
45083 |
45119 |
45121 |
45127 |
45131 |
45137 |
45139 |
45161 |
45179 |
45181 |
45191 |
45197 |
45233 |
45247 |
45259 |
45263 |
45281 |
45289 |
45293 |
45307 |
45317 |
45319 |
45329 |
45337 |
45341 |
45343 |
45361 |
45377 |
45389 |
45403 |
45413 |
45427 |
45433 |
45439 |
45481 |
45491 |
45497 |
45503 |
45523 |
45533 |
45541 |
45553 |
45557 |
45569 |
45587 |
45589 |
45599 |
45613 |
45631 |
45641 |
45659 |
45667 |
45673 |
45677 |
45691 |
45697 |
45707 |
45737 |
45751 |
45757 |
45763 |
45767 |
45779 |
45817 |
45821 |
45823 |
45827 |
45833 |
45841 |
45853 |
45863 |
45869 |
45887 |
45893 |
45943 |
45949 |
45953 |
45959 |
45971 |
45979 |
45989 |
46021 |
46027 |
46049 |
46051 |
46061 |
46073 |
46091 |
46093 |
46099 |
46103 |
46133 |
46141 |
46147 |
46153 |
46171 |
46181 |
46183 |
46187 |
46199 |
46219 |
46229 |
46237 |
46261 |
46271 |
46273 |
46279 |
46301 |
46307 |
46309 |
46327 |
46337 |
46349 |
46351 |
46381 |
46399 |
46411 |
46439 |
46441 |
46447 |
46451 |
46457 |
46471 |
46477 |
46489 |
46499 |
46507 |
46511 |
46523 |
46549 |
46559 |
46567 |
46573 |
46589 |
46591 |
46601 |
46619 |
46633 |
46639 |
46643 |
46649 |
46663 |
46679 |
46681 |
46687 |
46691 |
46703 |
46723 |
46727 |
46747 |
46751 |
46757 |
46769 |
46771 |
46807 |
46811 |
46817 |
46819 |
46829 |
46831 |
46853 |
46861 |
46867 |
46877 |
46889 |
46901 |
46919 |
46933 |
46957 |
46993 |
46997 |
47017 |
47041 |
47051 |
47057 |
47059 |
47087 |
47093 |
47111 |
47119 |
47123 |
47129 |
47137 |
47143 |
47147 |
47149 |
47161 |
47189 |
47207 |
47221 |
47237 |
47251 |
47269 |
47279 |
47287 |
47293 |
47297 |
47303 |
47309 |
47317 |
47339 |
47351 |
47353 |
47363 |
47381 |
47387 |
47389 |
47407 |
47417 |
47419 |
47431 |
47441 |
47459 |
47491 |
47497 |
47501 |
47507 |
47513 |
47521 |
47527 |
47533 |
47543 |
47563 |
47569 |
47581 |
47591 |
47599 |
47609 |
47623 |
47629 |
47639 |
47653 |
47657 |
47659 |
47681 |
47699 |
47701 |
47711 |
47713 |
47717 |
47737 |
47741 |
47743 |
47777 |
47779 |
47791 |
47797 |
47807 |
47809 |
47819 |
47837 |
47843 |
47857 |
47869 |
47881 |
47903 |
47911 |
47917 |
47933 |
47939 |
47947 |
47951 |
47963 |
47969 |
47977 |
47981 |
48017 |
48023 |
48029 |
48049 |
48073 |
48079 |
48091 |
48109 |
48119 |
48121 |
48131 |
48157 |
48163 |
48179 |
48187 |
48193 |
48197 |
48221 |
48239 |
48247 |
48259 |
48271 |
48281 |
48299 |
48311 |
48313 |
48337 |
48341 |
48353 |
48371 |
48383 |
48397 |
48407 |
48409 |
48413 |
48437 |
48449 |
48463 |
48473 |
48479 |
48481 |
48487 |
48491 |
48497 |
48523 |
48527 |
48533 |
48539 |
48541 |
48563 |
48571 |
48589 |
48593 |
48611 |
48619 |
48623 |
48647 |
48649 |
48661 |
48673 |
48677 |
48679 |
48731 |
48733 |
48751 |
48757 |
48761 |
48767 |
48779 |
48781 |
48787 |
48799 |
48809 |
48817 |
48821 |
48823 |
48847 |
48857 |
48859 |
48869 |
48871 |
48883 |
48889 |
48907 |
48947 |
48953 |
48973 |
48989 |
48991 |
49003 |
49009 |
49019 |
49031 |
49033 |
49037 |
49043 |
49057 |
49069 |
49081 |
49103 |
49109 |
49117 |
49121 |
49123 |
49139 |
49157 |
49169 |
49171 |
49177 |
49193 |
49199 |
49201 |
49207 |
49211 |
49223 |
49253 |
49261 |
49277 |
49279 |
49297 |
49307 |
49331 |
49333 |
49339 |
49363 |
49367 |
49369 |
49391 |
49393 |
49409 |
49411 |
49417 |
49429 |
49433 |
49451 |
49459 |
49463 |
49477 |
49481 |
49499 |
49523 |
49529 |
49531 |
49537 |
49547 |
49549 |
49559 |
49597 |
49603 |
49613 |
49627 |
49633 |
49639 |
49663 |
49667 |
49669 |
49681 |
49697 |
49711 |
49727 |
49739 |
49741 |
49747 |
49757 |
49783 |
49787 |
49789 |
49801 |
49807 |
49811 |
49823 |
49831 |
49843 |
49853 |
49871 |
49877 |
49891 |
49919 |
49921 |
49927 |
49937 |
49939 |
49943 |
49957 |
49991 |
49993 |
49999 |
50021 |
50023 |
50033 |
50047 |
50051 |
50053 |
50069 |
50077 |
50087 |
50093 |
50101 |
50111 |
50119 |
50123 |
50129 |
50131 |
50147 |
50153 |
50159 |
50177 |
50207 |
50221 |
50227 |
50231 |
50261 |
50263 |
50273 |
50287 |
50291 |
50311 |
50321 |
50329 |
50333 |
50341 |
50359 |
50363 |
50377 |
50383 |
50387 |
50411 |
50417 |
50423 |
50441 |
50459 |
50461 |
50497 |
50503 |
50513 |
50527 |
50539 |
50543 |
50549 |
50551 |
50581 |
50587 |
50591 |
50593 |
50599 |
50627 |
50647 |
50651 |
50671 |
50683 |
50707 |
50723 |
50741 |
50753 |
50767 |
50773 |
50777 |
50789 |
50821 |
50833 |
50839 |
50849 |
50857 |
50867 |
50873 |
50891 |
50893 |
50909 |
50923 |
50929 |
50951 |
50957 |
50969 |
50971 |
50989 |
50993 |
51001 |
51031 |
51043 |
51047 |
51059 |
51061 |
51071 |
51109 |
51131 |
51133 |
51137 |
51151 |
51157 |
51169 |
51193 |
51197 |
51199 |
51203 |
51217 |
51229 |
51239 |
51241 |
51257 |
51263 |
51283 |
51287 |
51307 |
51329 |
51341 |
51343 |
51347 |
51349 |
51361 |
51383 |
51407 |
51413 |
51419 |
51421 |
51427 |
51431 |
51437 |
51439 |
51449 |
51461 |
51473 |
51479 |
51481 |
51487 |
51503 |
51511 |
51517 |
51521 |
51539 |
51551 |
51563 |
51577 |
51581 |
51593 |
51599 |
51607 |
51613 |
51631 |
51637 |
51647 |
51659 |
51673 |
51679 |
51683 |
51691 |
51713 |
51719 |
51721 |
51749 |
51767 |
51769 |
51787 |
51797 |
51803 |
51817 |
51827 |
51829 |
51839 |
51853 |
51859 |
51869 |
51871 |
51893 |
51899 |
51907 |
51913 |
51929 |
51941 |
51949 |
51971 |
51973 |
51977 |
51991 |
52009 |
52021 |
52027 |
52051 |
52057 |
52067 |
52069 |
52081 |
52103 |
52121 |
52127 |
52147 |
52153 |
52163 |
52177 |
52181 |
52183 |
52189 |
52201 |
52223 |
52237 |
52249 |
52253 |
52259 |
52267 |
52289 |
52291 |
52301 |
52313 |
52321 |
52361 |
52363 |
52369 |
52379 |
52387 |
52391 |
52433 |
52453 |
52457 |
52489 |
52501 |
52511 |
52517 |
52529 |
52541 |
52543 |
52553 |
52561 |
52567 |
52571 |
52579 |
52583 |
52609 |
52627 |
52631 |
52639 |
52667 |
52673 |
52691 |
52697 |
52709 |
52711 |
52721 |
52727 |
52733 |
52747 |
52757 |
52769 |
52783 |
52807 |
52813 |
52817 |
52837 |
52859 |
52861 |
52879 |
52883 |
52889 |
52901 |
52903 |
52919 |
52937 |
52951 |
52957 |
52963 |
52967 |
52973 |
52981 |
52999 |
53003 |
53017 |
53047 |
53051 |
53069 |
53077 |
53087 |
53089 |
53093 |
53101 |
53113 |
53117 |
53129 |
53147 |
53149 |
53161 |
53171 |
53173 |
53189 |
53197 |
53201 |
53231 |
53233 |
53239 |
53267 |
53269 |
53279 |
53281 |
53299 |
53309 |
53323 |
53327 |
53353 |
53359 |
53377 |
53381 |
53401 |
53407 |
53411 |
53419 |
53437 |
53441 |
53453 |
53479 |
53503 |
53507 |
53527 |
53549 |
53551 |
53569 |
53591 |
53593 |
53597 |
53609 |
53611 |
53617 |
53623 |
53629 |
53633 |
53639 |
53653 |
53657 |
53681 |
53693 |
53699 |
53717 |
53719 |
53731 |
53759 |
53773 |
53777 |
53783 |
53791 |
53813 |
53819 |
53831 |
53849 |
53857 |
53861 |
53881 |
53887 |
53891 |
53897 |
53899 |
53917 |
53923 |
53927 |
53939 |
53951 |
53959 |
53987 |
53993 |
54001 |
54011 |
54013 |
54037 |
54049 |
54059 |
54083 |
54091 |
54101 |
54121 |
54133 |
54139 |
54151 |
54163 |
54167 |
54181 |
54193 |
54217 |
54251 |
54269 |
54277 |
54287 |
54293 |
54311 |
54319 |
54323 |
54331 |
54347 |
54361 |
54367 |
54371 |
54377 |
54401 |
54403 |
54409 |
54413 |
54419 |
54421 |
54437 |
54443 |
54449 |
54469 |
54493 |
54497 |
54499 |
54503 |
54517 |
54521 |
54539 |
54541 |
54547 |
54559 |
54563 |
54577 |
54581 |
54583 |
54601 |
54617 |
54623 |
54629 |
54631 |
54647 |
54667 |
54673 |
54679 |
54709 |
54713 |
54721 |
54727 |
54751 |
54767 |
54773 |
54779 |
54787 |
54799 |
54829 |
54833 |
54851 |
54869 |
54877 |
54881 |
54907 |
54917 |
54919 |
54941 |
54949 |
54959 |
54973 |
54979 |
54983 |
55001 |
55009 |
55021 |
55049 |
55051 |
55057 |
55061 |
55073 |
55079 |
55103 |
55109 |
55117 |
55127 |
55147 |
55163 |
55171 |
55201 |
55207 |
55213 |
55217 |
55219 |
55229 |
55243 |
55249 |
55259 |
55291 |
55313 |
55331 |
55333 |
55337 |
55339 |
55343 |
55351 |
55373 |
55381 |
55399 |
55411 |
55439 |
55441 |
55457 |
55469 |
55487 |
55501 |
55511 |
55529 |
55541 |
55547 |
55579 |
55589 |
55603 |
55609 |
55619 |
55621 |
55631 |
55633 |
55639 |
55661 |
55663 |
55667 |
55673 |
55681 |
55691 |
55697 |
55711 |
55717 |
55721 |
55733 |
55763 |
55787 |
55793 |
55799 |
55807 |
55813 |
55817 |
55819 |
55823 |
55829 |
55837 |
55843 |
55849 |
55871 |
55889 |
55897 |
55901 |
55903 |
55921 |
55927 |
55931 |
55933 |
55949 |
55967 |
55987 |
55997 |
56003 |
56009 |
56039 |
56041 |
56053 |
56081 |
56087 |
56093 |
56099 |
56101 |
56113 |
56123 |
56131 |
56149 |
56167 |
56171 |
56179 |
56197 |
56207 |
56209 |
56237 |
56239 |
56249 |
56263 |
56267 |
56269 |
56299 |
56311 |
56333 |
56359 |
56369 |
56377 |
56383 |
56393 |
56401 |
56417 |
56431 |
56437 |
56443 |
56453 |
56467 |
56473 |
56477 |
56479 |
56489 |
56501 |
56503 |
56509 |
56519 |
56527 |
56531 |
56533 |
56543 |
56569 |
56591 |
56597 |
56599 |
56611 |
56629 |
56633 |
56659 |
56663 |
56671 |
56681 |
56687 |
56701 |
56711 |
56713 |
56731 |
56737 |
56747 |
56767 |
56773 |
56779 |
56783 |
56807 |
56809 |
56813 |
56821 |
56827 |
56843 |
56857 |
56873 |
56891 |
56893 |
56897 |
56909 |
56911 |
56921 |
56923 |
56929 |
56941 |
56951 |
56957 |
56963 |
56983 |
56989 |
56993 |
56999 |
57037 |
57041 |
57047 |
57059 |
57073 |
57077 |
57089 |
57097 |
57107 |
57119 |
57131 |
57139 |
57143 |
57149 |
57163 |
57173 |
57179 |
57191 |
57193 |
57203 |
57221 |
57223 |
57241 |
57251 |
57259 |
57269 |
57271 |
57283 |
57287 |
57301 |
57329 |
57331 |
57347 |
57349 |
57367 |
57373 |
57383 |
57389 |
57397 |
57413 |
57427 |
57457 |
57467 |
57487 |
57493 |
57503 |
57527 |
57529 |
57557 |
57559 |
57571 |
57587 |
57593 |
57601 |
57637 |
57641 |
57649 |
57653 |
57667 |
57679 |
57689 |
57697 |
57709 |
57713 |
57719 |
57727 |
57731 |
57737 |
57751 |
57773 |
57781 |
57787 |
57791 |
57793 |
57803 |
57809 |
57829 |
57839 |
57847 |
57853 |
57859 |
57881 |
57899 |
57901 |
57917 |
57923 |
57943 |
57947 |
57973 |
57977 |
57991 |
58013 |
58027 |
58031 |
58043 |
58049 |
58057 |
58061 |
58067 |
58073 |
58099 |
58109 |
58111 |
58129 |
58147 |
58151 |
58153 |
58169 |
58171 |
58189 |
58193 |
58199 |
58207 |
58211 |
58217 |
58229 |
58231 |
58237 |
58243 |
58271 |
58309 |
58313 |
58321 |
58337 |
58363 |
58367 |
58369 |
58379 |
58391 |
58393 |
58403 |
58411 |
58417 |
58427 |
58439 |
58441 |
58451 |
58453 |
58477 |
58481 |
58511 |
58537 |
58543 |
58549 |
58567 |
58573 |
58579 |
58601 |
58603 |
58613 |
58631 |
58657 |
58661 |
58679 |
58687 |
58693 |
58699 |
58711 |
58727 |
58733 |
58741 |
58757 |
58763 |
58771 |
58787 |
58789 |
58831 |
58889 |
58897 |
58901 |
58907 |
58909 |
58913 |
58921 |
58937 |
58943 |
58963 |
58967 |
58979 |
58991 |
58997 |
59009 |
59011 |
59021 |
59023 |
59029 |
59051 |
59053 |
59063 |
59069 |
59077 |
59083 |
59093 |
59107 |
59113 |
59119 |
59123 |
59141 |
59149 |
59159 |
59167 |
59183 |
59197 |
59207 |
59209 |
59219 |
59221 |
59233 |
59239 |
59243 |
59263 |
59273 |
59281 |
59333 |
59341 |
59351 |
59357 |
59359 |
59369 |
59377 |
59387 |
59393 |
59399 |
59407 |
59417 |
59419 |
59441 |
59443 |
59447 |
59453 |
59467 |
59471 |
59473 |
59497 |
59509 |
59513 |
59539 |
59557 |
59561 |
59567 |
59581 |
59611 |
59617 |
59621 |
59627 |
59629 |
59651 |
59659 |
59663 |
59669 |
59671 |
59693 |
59699 |
59707 |
59723 |
59729 |
59743 |
59747 |
59753 |
59771 |
59779 |
59791 |
59797 |
59809 |
59833 |
59863 |
59879 |
59887 |
59921 |
59929 |
59951 |
59957 |
59971 |
59981 |
59999 |
60013 |
60017 |
60029 |
60037 |
60041 |
60077 |
60083 |
60089 |
60091 |
60101 |
60103 |
60107 |
60127 |
60133 |
60139 |
60149 |
60161 |
60167 |
60169 |
60209 |
60217 |
60223 |
60251 |
60257 |
60259 |
60271 |
60289 |
60293 |
60317 |
60331 |
60337 |
60343 |
60353 |
60373 |
60383 |
60397 |
60413 |
60427 |
60443 |
60449 |
60457 |
60493 |
60497 |
60509 |
60521 |
60527 |
60539 |
60589 |
60601 |
60607 |
60611 |
60617 |
60623 |
60631 |
60637 |
60647 |
60649 |
60659 |
60661 |
60679 |
60689 |
60703 |
60719 |
60727 |
60733 |
60737 |
60757 |
60761 |
60763 |
60773 |
60779 |
60793 |
60811 |
60821 |
60859 |
60869 |
60887 |
60889 |
60899 |
60901 |
60913 |
60917 |
60919 |
60923 |
60937 |
60943 |
60953 |
60961 |
61001 |
61007 |
61027 |
61031 |
61043 |
61051 |
61057 |
61091 |
61099 |
61121 |
61129 |
61141 |
61151 |
61153 |
61169 |
61211 |
61223 |
61231 |
61253 |
61261 |
61283 |
61291 |
61297 |
61331 |
61333 |
61339 |
61343 |
61357 |
61363 |
61379 |
61381 |
61403 |
61409 |
61417 |
61441 |
61463 |
61469 |
61471 |
61483 |
61487 |
61493 |
61507 |
61511 |
61519 |
61543 |
61547 |
61553 |
61559 |
61561 |
61583 |
61603 |
61609 |
61613 |
61627 |
61631 |
61637 |
61643 |
61651 |
61657 |
61667 |
61673 |
61681 |
61687 |
61703 |
61717 |
61723 |
61729 |
61751 |
61757 |
61781 |
61813 |
61819 |
61837 |
61843 |
61861 |
61871 |
61879 |
61909 |
61927 |
61933 |
61949 |
61961 |
61967 |
61979 |
61981 |
61987 |
61991 |
62003 |
62011 |
62017 |
62039 |
62047 |
62053 |
62057 |
62071 |
62081 |
62099 |
62119 |
62129 |
62131 |
62137 |
62141 |
62143 |
62171 |
62189 |
62191 |
62201 |
62207 |
62213 |
62219 |
62233 |
62273 |
62297 |
62299 |
62303 |
62311 |
62323 |
62327 |
62347 |
62351 |
62383 |
62401 |
62417 |
62423 |
62459 |
62467 |
62473 |
62477 |
62483 |
62497 |
62501 |
62507 |
62533 |
62539 |
62549 |
62563 |
62581 |
62591 |
62597 |
62603 |
62617 |
62627 |
62633 |
62639 |
62653 |
62659 |
62683 |
62687 |
62701 |
62723 |
62731 |
62743 |
62753 |
62761 |
62773 |
62791 |
62801 |
62819 |
62827 |
62851 |
62861 |
62869 |
62873 |
62897 |
62903 |
62921 |
62927 |
62929 |
62939 |
62969 |
62971 |
62981 |
62983 |
62987 |
62989 |
63029 |
63031 |
63059 |
63067 |
63073 |
63079 |
63097 |
63103 |
63113 |
63127 |
63131 |
63149 |
63179 |
63197 |
63199 |
63211 |
63241 |
63247 |
63277 |
63281 |
63299 |
63311 |
63313 |
63317 |
63331 |
63337 |
63347 |
63353 |
63361 |
63367 |
63377 |
63389 |
63391 |
63397 |
63409 |
63419 |
63421 |
63439 |
63443 |
63463 |
63467 |
63473 |
63487 |
63493 |
63499 |
63521 |
63527 |
63533 |
63541 |
63559 |
63577 |
63587 |
63589 |
63599 |
63601 |
63607 |
63611 |
63617 |
63629 |
63647 |
63649 |
63659 |
63667 |
63671 |
63689 |
63691 |
63697 |
63703 |
63709 |
63719 |
63727 |
63737 |
63743 |
63761 |
63773 |
63781 |
63793 |
63799 |
63803 |
63809 |
63823 |
63839 |
63841 |
63853 |
63857 |
63863 |
63901 |
63907 |
63913 |
63929 |
63949 |
63977 |
63997 |
64007 |
64013 |
64019 |
64033 |
64037 |
64063 |
64067 |
64081 |
64091 |
64109 |
64123 |
64151 |
64153 |
64157 |
64171 |
64187 |
64189 |
64217 |
64223 |
64231 |
64237 |
64271 |
64279 |
64283 |
64301 |
64303 |
64319 |
64327 |
64333 |
64373 |
64381 |
64399 |
64403 |
64433 |
64439 |
64451 |
64453 |
64483 |
64489 |
64499 |
64513 |
64553 |
64567 |
64577 |
64579 |
64591 |
64601 |
64609 |
64613 |
64621 |
64627 |
64633 |
64661 |
64663 |
64667 |
64679 |
64693 |
64709 |
64717 |
64747 |
64763 |
64781 |
64783 |
64793 |
64811 |
64817 |
64849 |
64853 |
64871 |
64877 |
64879 |
64891 |
64901 |
64919 |
64921 |
64927 |
64937 |
64951 |
64969 |
64997 |
65003 |
65011 |
65027 |
65029 |
65033 |
65053 |
65063 |
65071 |
65089 |
65099 |
65101 |
65111 |
65119 |
65123 |
65129 |
65141 |
65147 |
65167 |
65171 |
65173 |
65179 |
65183 |
65203 |
65213 |
65239 |
65257 |
65267 |
65269 |
65287 |
65293 |
65309 |
65323 |
65327 |
65353 |
65357 |
65371 |
65381 |
65393 |
65407 |
65413 |
65419 |
65423 |
65437 |
65447 |
65449 |
65479 |
65497 |
65519 |
65521 |
65537 |
65539 |
65543 |
65551 |
65557 |
65563 |
65579 |
65581 |
65587 |
65599 |
65609 |
65617 |
65629 |
65633 |
65647 |
65651 |
65657 |
65677 |
65687 |
65699 |
65701 |
65707 |
65713 |
65717 |
65719 |
65729 |
65731 |
65761 |
65777 |
65789 |
65809 |
65827 |
65831 |
65837 |
65839 |
65843 |
65851 |
65867 |
65881 |
65899 |
65921 |
65927 |
65929 |
65951 |
65957 |
65963 |
65981 |
65983 |
65993 |
66029 |
66037 |
66041 |
66047 |
66067 |
66071 |
66083 |
66089 |
66103 |
66107 |
66109 |
66137 |
66161 |
66169 |
66173 |
66179 |
66191 |
66221 |
66239 |
66271 |
66293 |
66301 |
66337 |
66343 |
66347 |
66359 |
66361 |
66373 |
66377 |
66383 |
66403 |
66413 |
66431 |
66449 |
66457 |
66463 |
66467 |
66491 |
66499 |
66509 |
66523 |
66529 |
66533 |
66541 |
66553 |
66569 |
66571 |
66587 |
66593 |
66601 |
66617 |
66629 |
66643 |
66653 |
66683 |
66697 |
66701 |
66713 |
66721 |
66733 |
66739 |
66749 |
66751 |
66763 |
66791 |
66797 |
66809 |
66821 |
66841 |
66851 |
66853 |
66863 |
66877 |
66883 |
66889 |
66919 |
66923 |
66931 |
66943 |
66947 |
66949 |
66959 |
66973 |
66977 |
67003 |
67021 |
67033 |
67043 |
67049 |
67057 |
67061 |
67073 |
67079 |
67103 |
67121 |
67129 |
67139 |
67141 |
67153 |
67157 |
67169 |
67181 |
67187 |
67189 |
67211 |
67213 |
67217 |
67219 |
67231 |
67247 |
67261 |
67271 |
67273 |
67289 |
67307 |
67339 |
67343 |
67349 |
67369 |
67391 |
67399 |
67409 |
67411 |
67421 |
67427 |
67429 |
67433 |
67447 |
67453 |
67477 |
67481 |
67489 |
67493 |
67499 |
67511 |
67523 |
67531 |
67537 |
67547 |
67559 |
67567 |
67577 |
67579 |
67589 |
67601 |
67607 |
67619 |
67631 |
67651 |
67679 |
67699 |
67709 |
67723 |
67733 |
67741 |
67751 |
67757 |
67759 |
67763 |
67777 |
67783 |
67789 |
67801 |
67807 |
67819 |
67829 |
67843 |
67853 |
67867 |
67883 |
67891 |
67901 |
67927 |
67931 |
67933 |
67939 |
67943 |
67957 |
67961 |
67967 |
67979 |
67987 |
67993 |
68023 |
68041 |
68053 |
68059 |
68071 |
68087 |
68099 |
68111 |
68113 |
68141 |
68147 |
68161 |
68171 |
68207 |
68209 |
68213 |
68219 |
68227 |
68239 |
68261 |
68279 |
68281 |
68311 |
68329 |
68351 |
68371 |
68389 |
68399 |
68437 |
68443 |
68447 |
68449 |
68473 |
68477 |
68483 |
68489 |
68491 |
68501 |
68507 |
68521 |
68531 |
68539 |
68543 |
68567 |
68581 |
68597 |
68611 |
68633 |
68639 |
68659 |
68669 |
68683 |
68687 |
68699 |
68711 |
68713 |
68729 |
68737 |
68743 |
68749 |
68767 |
68771 |
68777 |
68791 |
68813 |
68819 |
68821 |
68863 |
68879 |
68881 |
68891 |
68897 |
68899 |
68903 |
68909 |
68917 |
68927 |
68947 |
68963 |
68993 |
69001 |
69011 |
69019 |
69029 |
69031 |
69061 |
69067 |
69073 |
69109 |
69119 |
69127 |
69143 |
69149 |
69151 |
69163 |
69191 |
69193 |
69197 |
69203 |
69221 |
69233 |
69239 |
69247 |
69257 |
69259 |
69263 |
69313 |
69317 |
69337 |
69341 |
69371 |
69379 |
69383 |
69389 |
69401 |
69403 |
69427 |
69431 |
69439 |
69457 |
69463 |
69467 |
69473 |
69481 |
69491 |
69493 |
69497 |
69499 |
69539 |
69557 |
69593 |
69623 |
69653 |
69661 |
69677 |
69691 |
69697 |
69709 |
69737 |
69739 |
69761 |
69763 |
69767 |
69779 |
69809 |
69821 |
69827 |
69829 |
69833 |
69847 |
69857 |
69859 |
69877 |
69899 |
69911 |
69929 |
69931 |
69941 |
69959 |
69991 |
69997 |
70001 |
70003 |
70009 |
70019 |
70039 |
70051 |
70061 |
70067 |
70079 |
70099 |
70111 |
70117 |
70121 |
70123 |
70139 |
70141 |
70157 |
70163 |
70177 |
70181 |
70183 |
70199 |
70201 |
70207 |
70223 |
70229 |
70237 |
70241 |
70249 |
70271 |
70289 |
70297 |
70309 |
70313 |
70321 |
70327 |
70351 |
70373 |
70379 |
70381 |
70393 |
70423 |
70429 |
70439 |
70451 |
70457 |
70459 |
70481 |
70487 |
70489 |
70501 |
70507 |
70529 |
70537 |
70549 |
70571 |
70573 |
70583 |
70589 |
70607 |
70619 |
70621 |
70627 |
70639 |
70657 |
70663 |
70667 |
70687 |
70709 |
70717 |
70729 |
70753 |
70769 |
70783 |
70793 |
70823 |
70841 |
70843 |
70849 |
70853 |
70867 |
70877 |
70879 |
70891 |
70901 |
70913 |
70919 |
70921 |
70937 |
70949 |
70951 |
70957 |
70969 |
70979 |
70981 |
70991 |
70997 |
70999 |
71011 |
71023 |
71039 |
71059 |
71069 |
71081 |
71089 |
71119 |
71129 |
71143 |
71147 |
71153 |
71161 |
71167 |
71171 |
71191 |
71209 |
71233 |
71237 |
71249 |
71257 |
71261 |
71263 |
71287 |
71293 |
71317 |
71327 |
71329 |
71333 |
71339 |
71341 |
71347 |
71353 |
71359 |
71363 |
71387 |
71389 |
71399 |
71411 |
71413 |
71419 |
71429 |
71437 |
71443 |
71453 |
71471 |
71473 |
71479 |
71483 |
71503 |
71527 |
71537 |
71549 |
71551 |
71563 |
71569 |
71593 |
71597 |
71633 |
71647 |
71663 |
71671 |
71693 |
71699 |
71707 |
71711 |
71713 |
71719 |
71741 |
71761 |
71777 |
71789 |
71807 |
71809 |
71821 |
71837 |
71843 |
71849 |
71861 |
71867 |
71879 |
71881 |
71887 |
71899 |
71909 |
71917 |
71933 |
71941 |
71947 |
71963 |
71971 |
71983 |
71987 |
71993 |
71999 |
72019 |
72031 |
72043 |
72047 |
72053 |
72073 |
72077 |
72089 |
72091 |
72101 |
72103 |
72109 |
72139 |
72161 |
72167 |
72169 |
72173 |
72211 |
72221 |
72223 |
72227 |
72229 |
72251 |
72253 |
72269 |
72271 |
72277 |
72287 |
72307 |
72313 |
72337 |
72341 |
72353 |
72367 |
72379 |
72383 |
72421 |
72431 |
72461 |
72467 |
72469 |
72481 |
72493 |
72497 |
72503 |
72533 |
72547 |
72551 |
72559 |
72577 |
72613 |
72617 |
72623 |
72643 |
72647 |
72649 |
72661 |
72671 |
72673 |
72679 |
72689 |
72701 |
72707 |
72719 |
72727 |
72733 |
72739 |
72763 |
72767 |
72797 |
72817 |
72823 |
72859 |
72869 |
72871 |
72883 |
72889 |
72893 |
72901 |
72907 |
72911 |
72923 |
72931 |
72937 |
72949 |
72953 |
72959 |
72973 |
72977 |
72997 |
73009 |
73013 |
73019 |
73037 |
73039 |
73043 |
73061 |
73063 |
73079 |
73091 |
73121 |
73127 |
73133 |
73141 |
73181 |
73189 |
73237 |
73243 |
73259 |
73277 |
73291 |
73303 |
73309 |
73327 |
73331 |
73351 |
73361 |
73363 |
73369 |
73379 |
73387 |
73417 |
73421 |
73433 |
73453 |
73459 |
73471 |
73477 |
73483 |
73517 |
73523 |
73529 |
73547 |
73553 |
73561 |
73571 |
73583 |
73589 |
73597 |
73607 |
73609 |
73613 |
73637 |
73643 |
73651 |
73673 |
73679 |
73681 |
73693 |
73699 |
73709 |
73721 |
73727 |
73751 |
73757 |
73771 |
73783 |
73819 |
73823 |
73847 |
73849 |
73859 |
73867 |
73877 |
73883 |
73897 |
73907 |
73939 |
73943 |
73951 |
73961 |
73973 |
73999 |
74017 |
74021 |
74027 |
74047 |
74051 |
74071 |
74077 |
74093 |
74099 |
74101 |
74131 |
74143 |
74149 |
74159 |
74161 |
74167 |
74177 |
74189 |
74197 |
74201 |
74203 |
74209 |
74219 |
74231 |
74257 |
74279 |
74287 |
74293 |
74297 |
74311 |
74317 |
74323 |
74353 |
74357 |
74363 |
74377 |
74381 |
74383 |
74411 |
74413 |
74419 |
74441 |
74449 |
74453 |
74471 |
74489 |
74507 |
74509 |
74521 |
74527 |
74531 |
74551 |
74561 |
74567 |
74573 |
74587 |
74597 |
74609 |
74611 |
74623 |
74653 |
74687 |
74699 |
74707 |
74713 |
74717 |
74719 |
74729 |
74731 |
74747 |
74759 |
74761 |
74771 |
74779 |
74797 |
74821 |
74827 |
74831 |
74843 |
74857 |
74861 |
74869 |
74873 |
74887 |
74891 |
74897 |
74903 |
74923 |
74929 |
74933 |
74941 |
74959 |
75011 |
75013 |
75017 |
75029 |
75037 |
75041 |
75079 |
75083 |
75109 |
75133 |
75149 |
75161 |
75167 |
75169 |
75181 |
75193 |
75209 |
75211 |
75217 |
75223 |
75227 |
75239 |
75253 |
75269 |
75277 |
75289 |
75307 |
75323 |
75329 |
75337 |
75347 |
75353 |
75367 |
75377 |
75389 |
75391 |
75401 |
75403 |
75407 |
75431 |
75437 |
75479 |
75503 |
75511 |
75521 |
75527 |
75533 |
75539 |
75541 |
75553 |
75557 |
75571 |
75577 |
75583 |
75611 |
75617 |
75619 |
75629 |
75641 |
75653 |
75659 |
75679 |
75683 |
75689 |
75703 |
75707 |
75709 |
75721 |
75731 |
75743 |
75767 |
75773 |
75781 |
75787 |
75793 |
75797 |
75821 |
75833 |
75853 |
75869 |
75883 |
75913 |
75931 |
75937 |
75941 |
75967 |
75979 |
75983 |
75989 |
75991 |
75997 |
76001 |
76003 |
76031 |
76039 |
76079 |
76081 |
76091 |
76099 |
76103 |
76123 |
76129 |
76147 |
76157 |
76159 |
76163 |
76207 |
76213 |
76231 |
76243 |
76249 |
76253 |
76259 |
76261 |
76283 |
76289 |
76303 |
76333 |
76343 |
76367 |
76369 |
76379 |
76387 |
76403 |
76421 |
76423 |
76441 |
76463 |
76471 |
76481 |
76487 |
76493 |
76507 |
76511 |
76519 |
76537 |
76541 |
76543 |
76561 |
76579 |
76597 |
76603 |
76607 |
76631 |
76649 |
76651 |
76667 |
76673 |
76679 |
76697 |
76717 |
76733 |
76753 |
76757 |
76771 |
76777 |
76781 |
76801 |
76819 |
76829 |
76831 |
76837 |
76847 |
76871 |
76873 |
76883 |
76907 |
76913 |
76919 |
76943 |
76949 |
76961 |
76963 |
76991 |
77003 |
77017 |
77023 |
77029 |
77041 |
77047 |
77069 |
77081 |
77093 |
77101 |
77137 |
77141 |
77153 |
77167 |
77171 |
77191 |
77201 |
77213 |
77237 |
77239 |
77243 |
77249 |
77261 |
77263 |
77267 |
77269 |
77279 |
77291 |
77317 |
77323 |
77339 |
77347 |
77351 |
77359 |
77369 |
77377 |
77383 |
77417 |
77419 |
77431 |
77447 |
77471 |
77477 |
77479 |
77489 |
77491 |
77509 |
77513 |
77521 |
77527 |
77543 |
77549 |
77551 |
77557 |
77563 |
77569 |
77573 |
77587 |
77591 |
77611 |
77617 |
77621 |
77641 |
77647 |
77659 |
77681 |
77687 |
77689 |
77699 |
77711 |
77713 |
77719 |
77723 |
77731 |
77743 |
77747 |
77761 |
77773 |
77783 |
77797 |
77801 |
77813 |
77839 |
77849 |
77863 |
77867 |
77893 |
77899 |
77929 |
77933 |
77951 |
77969 |
77977 |
77983 |
77999 |
78007 |
78017 |
78031 |
78041 |
78049 |
78059 |
78079 |
78101 |
78121 |
78137 |
78139 |
78157 |
78163 |
78167 |
78173 |
78179 |
78191 |
78193 |
78203 |
78229 |
78233 |
78241 |
78259 |
78277 |
78283 |
78301 |
78307 |
78311 |
78317 |
78341 |
78347 |
78367 |
78401 |
78427 |
78437 |
78439 |
78467 |
78479 |
78487 |
78497 |
78509 |
78511 |
78517 |
78539 |
78541 |
78553 |
78569 |
78571 |
78577 |
78583 |
78593 |
78607 |
78623 |
78643 |
78649 |
78653 |
78691 |
78697 |
78707 |
78713 |
78721 |
78737 |
78779 |
78781 |
78787 |
78791 |
78797 |
78803 |
78809 |
78823 |
78839 |
78853 |
78857 |
78877 |
78887 |
78889 |
78893 |
78901 |
78919 |
78929 |
78941 |
78977 |
78979 |
78989 |
79031 |
79039 |
79043 |
79063 |
79087 |
79103 |
79111 |
79133 |
79139 |
79147 |
79151 |
79153 |
79159 |
79181 |
79187 |
79193 |
79201 |
79229 |
79231 |
79241 |
79259 |
79273 |
79279 |
79283 |
79301 |
79309 |
79319 |
79333 |
79337 |
79349 |
79357 |
79367 |
79379 |
79393 |
79397 |
79399 |
79411 |
79423 |
79427 |
79433 |
79451 |
79481 |
79493 |
79531 |
79537 |
79549 |
79559 |
79561 |
79579 |
79589 |
79601 |
79609 |
79613 |
79621 |
79627 |
79631 |
79633 |
79657 |
79669 |
79687 |
79691 |
79693 |
79697 |
79699 |
79757 |
79769 |
79777 |
79801 |
79811 |
79813 |
79817 |
79823 |
79829 |
79841 |
79843 |
79847 |
79861 |
79867 |
79873 |
79889 |
79901 |
79903 |
79907 |
79939 |
79943 |
79967 |
79973 |
79979 |
79987 |
79997 |
79999 |
80021 |
80039 |
80051 |
80071 |
80077 |
80107 |
80111 |
80141 |
80147 |
80149 |
80153 |
80167 |
80173 |
80177 |
80191 |
80207 |
80209 |
80221 |
80231 |
80233 |
80239 |
80251 |
80263 |
80273 |
80279 |
80287 |
80309 |
80317 |
80329 |
80341 |
80347 |
80363 |
80369 |
80387 |
80407 |
80429 |
80447 |
80449 |
80471 |
80473 |
80489 |
80491 |
80513 |
80527 |
80537 |
80557 |
80567 |
80599 |
80603 |
80611 |
80621 |
80627 |
80629 |
80651 |
80657 |
80669 |
80671 |
80677 |
80681 |
80683 |
80687 |
80701 |
80713 |
80737 |
80747 |
80749 |
80761 |
80777 |
80779 |
80783 |
80789 |
80803 |
80809 |
80819 |
80831 |
80833 |
80849 |
80863 |
80897 |
80909 |
80911 |
80917 |
80923 |
80929 |
80933 |
80953 |
80963 |
80989 |
81001 |
81013 |
81017 |
81019 |
81023 |
81031 |
81041 |
81043 |
81047 |
81049 |
81071 |
81077 |
81083 |
81097 |
81101 |
81119 |
81131 |
81157 |
81163 |
81173 |
81181 |
81197 |
81199 |
81203 |
81223 |
81233 |
81239 |
81281 |
81283 |
81293 |
81299 |
81307 |
81331 |
81343 |
81349 |
81353 |
81359 |
81371 |
81373 |
81401 |
81409 |
81421 |
81439 |
81457 |
81463 |
81509 |
81517 |
81527 |
81533 |
81547 |
81551 |
81553 |
81559 |
81563 |
81569 |
81611 |
81619 |
81629 |
81637 |
81647 |
81649 |
81667 |
81671 |
81677 |
81689 |
81701 |
81703 |
81707 |
81727 |
81737 |
81749 |
81761 |
81769 |
81773 |
81799 |
81817 |
81839 |
81847 |
81853 |
81869 |
81883 |
81899 |
81901 |
81919 |
81929 |
81931 |
81937 |
81943 |
81953 |
81967 |
81971 |
81973 |
82003 |
82007 |
82009 |
82013 |
82021 |
82031 |
82037 |
82039 |
82051 |
82067 |
82073 |
82129 |
82139 |
82141 |
82153 |
82163 |
82171 |
82183 |
82189 |
82193 |
82207 |
82217 |
82219 |
82223 |
82231 |
82237 |
82241 |
82261 |
82267 |
82279 |
82301 |
82307 |
82339 |
82349 |
82351 |
82361 |
82373 |
82387 |
82393 |
82421 |
82457 |
82463 |
82469 |
82471 |
82483 |
82487 |
82493 |
82499 |
82507 |
82529 |
82531 |
82549 |
82559 |
82561 |
82567 |
82571 |
82591 |
82601 |
82609 |
82613 |
82619 |
82633 |
82651 |
82657 |
82699 |
82721 |
82723 |
82727 |
82729 |
82757 |
82759 |
82763 |
82781 |
82787 |
82793 |
82799 |
82811 |
82813 |
82837 |
82847 |
82883 |
82889 |
82891 |
82903 |
82913 |
82939 |
82963 |
82981 |
82997 |
83003 |
83009 |
83023 |
83047 |
83059 |
83063 |
83071 |
83077 |
83089 |
83093 |
83101 |
83117 |
83137 |
83177 |
83203 |
83207 |
83219 |
83221 |
83227 |
83231 |
83233 |
83243 |
83257 |
83267 |
83269 |
83273 |
83299 |
83311 |
83339 |
83341 |
83357 |
83383 |
83389 |
83399 |
83401 |
83407 |
83417 |
83423 |
83431 |
83437 |
83443 |
83449 |
83459 |
83471 |
83477 |
83497 |
83537 |
83557 |
83561 |
83563 |
83579 |
83591 |
83597 |
83609 |
83617 |
83621 |
83639 |
83641 |
83653 |
83663 |
83689 |
83701 |
83717 |
83719 |
83737 |
83761 |
83773 |
83777 |
83791 |
83813 |
83833 |
83843 |
83857 |
83869 |
83873 |
83891 |
83903 |
83911 |
83921 |
83933 |
83939 |
83969 |
83983 |
83987 |
84011 |
84017 |
84047 |
84053 |
84059 |
84061 |
84067 |
84089 |
84121 |
84127 |
84131 |
84137 |
84143 |
84163 |
84179 |
84181 |
84191 |
84199 |
84211 |
84221 |
84223 |
84229 |
84239 |
84247 |
84263 |
84299 |
84307 |
84313 |
84317 |
84319 |
84347 |
84349 |
84377 |
84389 |
84391 |
84401 |
84407 |
84421 |
84431 |
84437 |
84443 |
84449 |
84457 |
84463 |
84467 |
84481 |
84499 |
84503 |
84509 |
84521 |
84523 |
84533 |
84551 |
84559 |
84589 |
84629 |
84631 |
84649 |
84653 |
84659 |
84673 |
84691 |
84697 |
84701 |
84713 |
84719 |
84731 |
84737 |
84751 |
84761 |
84787 |
84793 |
84809 |
84811 |
84827 |
84857 |
84859 |
84869 |
84871 |
84913 |
84919 |
84947 |
84961 |
84967 |
84977 |
84979 |
84991 |
85009 |
85021 |
85027 |
85037 |
85049 |
85061 |
85081 |
85087 |
85091 |
85093 |
85103 |
85109 |
85121 |
85133 |
85147 |
85159 |
85193 |
85199 |
85201 |
85213 |
85223 |
85229 |
85237 |
85243 |
85247 |
85259 |
85297 |
85303 |
85313 |
85331 |
85333 |
85361 |
85363 |
85369 |
85381 |
85411 |
85427 |
85429 |
85439 |
85447 |
85451 |
85453 |
85469 |
85487 |
85513 |
85517 |
85523 |
85531 |
85549 |
85571 |
85577 |
85597 |
85601 |
85607 |
85619 |
85621 |
85627 |
85639 |
85643 |
85661 |
85667 |
85669 |
85691 |
85703 |
85711 |
85717 |
85733 |
85751 |
85781 |
85793 |
85817 |
85819 |
85829 |
85831 |
85837 |
85843 |
85847 |
85853 |
85889 |
85903 |
85909 |
85931 |
85933 |
85991 |
85999 |
86011 |
86017 |
86027 |
86029 |
86069 |
86077 |
86083 |
86111 |
86113 |
86117 |
86131 |
86137 |
86143 |
86161 |
86171 |
86179 |
86183 |
86197 |
86201 |
86209 |
86239 |
86243 |
86249 |
86257 |
86263 |
86269 |
86287 |
86291 |
86293 |
86297 |
86311 |
86323 |
86341 |
86351 |
86353 |
86357 |
86369 |
86371 |
86381 |
86389 |
86399 |
86413 |
86423 |
86441 |
86453 |
86461 |
86467 |
86477 |
86491 |
86501 |
86509 |
86531 |
86533 |
86539 |
86561 |
86573 |
86579 |
86587 |
86599 |
86627 |
86629 |
86677 |
86689 |
86693 |
86711 |
86719 |
86729 |
86743 |
86753 |
86767 |
86771 |
86783 |
86813 |
86837 |
86843 |
86851 |
86857 |
86861 |
86869 |
86923 |
86927 |
86929 |
86939 |
86951 |
86959 |
86969 |
86981 |
86993 |
87011 |
87013 |
87037 |
87041 |
87049 |
87071 |
87083 |
87103 |
87107 |
87119 |
87121 |
87133 |
87149 |
87151 |
87179 |
87181 |
87187 |
87211 |
87221 |
87223 |
87251 |
87253 |
87257 |
87277 |
87281 |
87293 |
87299 |
87313 |
87317 |
87323 |
87337 |
87359 |
87383 |
87403 |
87407 |
87421 |
87427 |
87433 |
87443 |
87473 |
87481 |
87491 |
87509 |
87511 |
87517 |
87523 |
87539 |
87541 |
87547 |
87553 |
87557 |
87559 |
87583 |
87587 |
87589 |
87613 |
87623 |
87629 |
87631 |
87641 |
87643 |
87649 |
87671 |
87679 |
87683 |
87691 |
87697 |
87701 |
87719 |
87721 |
87739 |
87743 |
87751 |
87767 |
87793 |
87797 |
87803 |
87811 |
87833 |
87853 |
87869 |
87877 |
87881 |
87887 |
87911 |
87917 |
87931 |
87943 |
87959 |
87961 |
87973 |
87977 |
87991 |
88001 |
88003 |
88007 |
88019 |
88037 |
88069 |
88079 |
88093 |
88117 |
88129 |
88169 |
88177 |
88211 |
88223 |
88237 |
88241 |
88259 |
88261 |
88289 |
88301 |
88321 |
88327 |
88337 |
88339 |
88379 |
88397 |
88411 |
88423 |
88427 |
88463 |
88469 |
88471 |
88493 |
88499 |
88513 |
88523 |
88547 |
88589 |
88591 |
88607 |
88609 |
88643 |
88651 |
88657 |
88661 |
88663 |
88667 |
88681 |
88721 |
88729 |
88741 |
88747 |
88771 |
88789 |
88793 |
88799 |
88801 |
88807 |
88811 |
88813 |
88817 |
88819 |
88843 |
88853 |
88861 |
88867 |
88873 |
88883 |
88897 |
88903 |
88919 |
88937 |
88951 |
88969 |
88993 |
88997 |
89003 |
89009 |
89017 |
89021 |
89041 |
89051 |
89057 |
89069 |
89071 |
89083 |
89087 |
89101 |
89107 |
89113 |
89119 |
89123 |
89137 |
89153 |
89189 |
89203 |
89209 |
89213 |
89227 |
89231 |
89237 |
89261 |
89269 |
89273 |
89293 |
89303 |
89317 |
89329 |
89363 |
89371 |
89381 |
89387 |
89393 |
89399 |
89413 |
89417 |
89431 |
89443 |
89449 |
89459 |
89477 |
89491 |
89501 |
89513 |
89519 |
89521 |
89527 |
89533 |
89561 |
89563 |
89567 |
89591 |
89597 |
89599 |
89603 |
89611 |
89627 |
89633 |
89653 |
89657 |
89659 |
89669 |
89671 |
89681 |
89689 |
89753 |
89759 |
89767 |
89779 |
89783 |
89797 |
89809 |
89819 |
89821 |
89833 |
89839 |
89849 |
89867 |
89891 |
89897 |
89899 |
89909 |
89917 |
89923 |
89939 |
89959 |
89963 |
89977 |
89983 |
89989 |
90001 |
90007 |
90011 |
90017 |
90019 |
90023 |
90031 |
90053 |
90059 |
90067 |
90071 |
90073 |
90089 |
90107 |
90121 |
90127 |
90149 |
90163 |
90173 |
90187 |
90191 |
90197 |
90199 |
90203 |
90217 |
90227 |
90239 |
90247 |
90263 |
90271 |
90281 |
90289 |
90313 |
90353 |
90359 |
90371 |
90373 |
90379 |
90397 |
90401 |
90403 |
90407 |
90437 |
90439 |
90469 |
90473 |
90481 |
90499 |
90511 |
90523 |
90527 |
90529 |
90533 |
90547 |
90583 |
90599 |
90617 |
90619 |
90631 |
90641 |
90647 |
90659 |
90677 |
90679 |
90697 |
90703 |
90709 |
90731 |
90749 |
90787 |
90793 |
90803 |
90821 |
90823 |
90833 |
90841 |
90847 |
90863 |
90887 |
90901 |
90907 |
90911 |
90917 |
90931 |
90947 |
90971 |
90977 |
90989 |
90997 |
91009 |
91019 |
91033 |
91079 |
91081 |
91097 |
91099 |
91121 |
91127 |
91129 |
91139 |
91141 |
91151 |
91153 |
91159 |
91163 |
91183 |
91193 |
91199 |
91229 |
91237 |
91243 |
91249 |
91253 |
91283 |
91291 |
91297 |
91303 |
91309 |
91331 |
91367 |
91369 |
91373 |
91381 |
91387 |
91393 |
91397 |
91411 |
91423 |
91433 |
91453 |
91457 |
91459 |
91463 |
91493 |
91499 |
91513 |
91529 |
91541 |
91571 |
91573 |
91577 |
91583 |
91591 |
91621 |
91631 |
91639 |
91673 |
91691 |
91703 |
91711 |
91733 |
91753 |
91757 |
91771 |
91781 |
91801 |
91807 |
91811 |
91813 |
91823 |
91837 |
91841 |
91867 |
91873 |
91909 |
91921 |
91939 |
91943 |
91951 |
91957 |
91961 |
91967 |
91969 |
91997 |
92003 |
92009 |
92033 |
92041 |
92051 |
92077 |
92083 |
92107 |
92111 |
92119 |
92143 |
92153 |
92173 |
92177 |
92179 |
92189 |
92203 |
92219 |
92221 |
92227 |
92233 |
92237 |
92243 |
92251 |
92269 |
92297 |
92311 |
92317 |
92333 |
92347 |
92353 |
92357 |
92363 |
92369 |
92377 |
92381 |
92383 |
92387 |
92399 |
92401 |
92413 |
92419 |
92431 |
92459 |
92461 |
92467 |
92479 |
92489 |
92503 |
92507 |
92551 |
92557 |
92567 |
92569 |
92581 |
92593 |
92623 |
92627 |
92639 |
92641 |
92647 |
92657 |
92669 |
92671 |
92681 |
92683 |
92693 |
92699 |
92707 |
92717 |
92723 |
92737 |
92753 |
92761 |
92767 |
92779 |
92789 |
92791 |
92801 |
92809 |
92821 |
92831 |
92849 |
92857 |
92861 |
92863 |
92867 |
92893 |
92899 |
92921 |
92927 |
92941 |
92951 |
92957 |
92959 |
92987 |
92993 |
93001 |
93047 |
93053 |
93059 |
93077 |
93083 |
93089 |
93097 |
93103 |
93113 |
93131 |
93133 |
93139 |
93151 |
93169 |
93179 |
93187 |
93199 |
93229 |
93239 |
93241 |
93251 |
93253 |
93257 |
93263 |
93281 |
93283 |
93287 |
93307 |
93319 |
93323 |
93329 |
93337 |
93371 |
93377 |
93383 |
93407 |
93419 |
93427 |
93463 |
93479 |
93481 |
93487 |
93491 |
93493 |
93497 |
93503 |
93523 |
93529 |
93553 |
93557 |
93559 |
93563 |
93581 |
93601 |
93607 |
93629 |
93637 |
93683 |
93701 |
93703 |
93719 |
93739 |
93761 |
93763 |
93787 |
93809 |
93811 |
93827 |
93851 |
93871 |
93887 |
93889 |
93893 |
93901 |
93911 |
93913 |
93923 |
93937 |
93941 |
93949 |
93967 |
93971 |
93979 |
93983 |
93997 |
94007 |
94009 |
94033 |
94049 |
94057 |
94063 |
94079 |
94099 |
94109 |
94111 |
94117 |
94121 |
94151 |
94153 |
94169 |
94201 |
94207 |
94219 |
94229 |
94253 |
94261 |
94273 |
94291 |
94307 |
94309 |
94321 |
94327 |
94331 |
94343 |
94349 |
94351 |
94379 |
94397 |
94399 |
94421 |
94427 |
94433 |
94439 |
94441 |
94447 |
94463 |
94477 |
94483 |
94513 |
94529 |
94531 |
94541 |
94543 |
94547 |
94559 |
94561 |
94573 |
94583 |
94597 |
94603 |
94613 |
94621 |
94649 |
94651 |
94687 |
94693 |
94709 |
94723 |
94727 |
94747 |
94771 |
94777 |
94781 |
94789 |
94793 |
94811 |
94819 |
94823 |
94837 |
94841 |
94847 |
94849 |
94873 |
94889 |
94903 |
94907 |
94933 |
94949 |
94951 |
94961 |
94993 |
94999 |
95003 |
95009 |
95021 |
95027 |
95063 |
95071 |
95083 |
95087 |
95089 |
95093 |
95101 |
95107 |
95111 |
95131 |
95143 |
95153 |
95177 |
95189 |
95191 |
95203 |
95213 |
95219 |
95231 |
95233 |
95239 |
95257 |
95261 |
95267 |
95273 |
95279 |
95287 |
95311 |
95317 |
95327 |
95339 |
95369 |
95383 |
95393 |
95401 |
95413 |
95419 |
95429 |
95441 |
95443 |
95461 |
95467 |
95471 |
95479 |
95483 |
95507 |
95527 |
95531 |
95539 |
95549 |
95561 |
95569 |
95581 |
95597 |
95603 |
95617 |
95621 |
95629 |
95633 |
95651 |
95701 |
95707 |
95713 |
95717 |
95723 |
95731 |
95737 |
95747 |
95773 |
95783 |
95789 |
95791 |
95801 |
95803 |
95813 |
95819 |
95857 |
95869 |
95873 |
95881 |
95891 |
95911 |
95917 |
95923 |
95929 |
95947 |
95957 |
95959 |
95971 |
95987 |
95989 |
96001 |
96013 |
96017 |
96043 |
96053 |
96059 |
96079 |
96097 |
96137 |
96149 |
96157 |
96167 |
96179 |
96181 |
96199 |
96211 |
96221 |
96223 |
96233 |
96259 |
96263 |
96269 |
96281 |
96289 |
96293 |
96323 |
96329 |
96331 |
96337 |
96353 |
96377 |
96401 |
96419 |
96431 |
96443 |
96451 |
96457 |
96461 |
96469 |
96479 |
96487 |
96493 |
96497 |
96517 |
96527 |
96553 |
96557 |
96581 |
96587 |
96589 |
96601 |
96643 |
96661 |
96667 |
96671 |
96697 |
96703 |
96731 |
96737 |
96739 |
96749 |
96757 |
96763 |
96769 |
96779 |
96787 |
96797 |
96799 |
96821 |
96823 |
96827 |
96847 |
96851 |
96857 |
96893 |
96907 |
96911 |
96931 |
96953 |
96959 |
96973 |
96979 |
96989 |
96997 |
97001 |
97003 |
97007 |
97021 |
97039 |
97073 |
97081 |
97103 |
97117 |
97127 |
97151 |
97157 |
97159 |
97169 |
97171 |
97177 |
97187 |
97213 |
97231 |
97241 |
97259 |
97283 |
97301 |
97303 |
97327 |
97367 |
97369 |
97373 |
97379 |
97381 |
97387 |
97397 |
97423 |
97429 |
97441 |
97453 |
97459 |
97463 |
97499 |
97501 |
97511 |
97523 |
97547 |
97549 |
97553 |
97561 |
97571 |
97577 |
97579 |
97583 |
97607 |
97609 |
97613 |
97649 |
97651 |
97673 |
97687 |
97711 |
97729 |
97771 |
97777 |
97787 |
97789 |
97813 |
97829 |
97841 |
97843 |
97847 |
97849 |
97859 |
97861 |
97871 |
97879 |
97883 |
97919 |
97927 |
97931 |
97943 |
97961 |
97967 |
97973 |
97987 |
98009 |
98011 |
98017 |
98041 |
98047 |
98057 |
98081 |
98101 |
98123 |
98129 |
98143 |
98179 |
98207 |
98213 |
98221 |
98227 |
98251 |
98257 |
98269 |
98297 |
98299 |
98317 |
98321 |
98323 |
98327 |
98347 |
98369 |
98377 |
98387 |
98389 |
98407 |
98411 |
98419 |
98429 |
98443 |
98453 |
98459 |
98467 |
98473 |
98479 |
98491 |
98507 |
98519 |
98533 |
98543 |
98561 |
98563 |
98573 |
98597 |
98621 |
98627 |
98639 |
98641 |
98663 |
98669 |
98689 |
98711 |
98713 |
98717 |
98729 |
98731 |
98737 |
98773 |
98779 |
98801 |
98807 |
98809 |
98837 |
98849 |
98867 |
98869 |
98873 |
98887 |
98893 |
98897 |
98899 |
98909 |
98911 |
98927 |
98929 |
98939 |
98947 |
98953 |
98963 |
98981 |
98993 |
98999 |
99013 |
99017 |
99023 |
99041 |
99053 |
99079 |
99083 |
99089 |
99103 |
99109 |
99119 |
99131 |
99133 |
99137 |
99139 |
99149 |
99173 |
99181 |
99191 |
99223 |
99233 |
99241 |
99251 |
99257 |
99259 |
99277 |
99289 |
99317 |
99347 |
99349 |
99367 |
99371 |
99377 |
99391 |
99397 |
99401 |
99409 |
99431 |
99439 |
99469 |
99487 |
99497 |
99523 |
99527 |
99529 |
99551 |
99559 |
99563 |
99571 |
99577 |
99581 |
99607 |
99611 |
99623 |
99643 |
99661 |
99667 |
99679 |
99689 |
99707 |
99709 |
99713 |
99719 |
99721 |
99733 |
99761 |
99767 |
99787 |
99793 |
99809 |
99817 |
99823 |
99829 |
99833 |
99839 |
99859 |
99871 |
99877 |
99881 |
99901 |
99907 |
99923 |
99929 |
99961 |
99971 |
99989 |
99991 |
100003 |
100019 |
100043 |
100049 |
100057 |
100069 |
100103 |
100109 |
100129 |
100151 |
100153 |
100169 |
100183 |
100189 |
100193 |
100207 |
100213 |
100237 |
100267 |
100271 |
100279 |
100291 |
100297 |
100313 |
100333 |
100343 |
100357 |
100361 |
100363 |
100379 |
100391 |
100393 |
100403 |
100411 |
100417 |
100447 |
100459 |
100469 |
100483 |
100493 |
100501 |
100511 |
100517 |
100519 |
100523 |
100537 |
100547 |
100549 |
100559 |
100591 |
100609 |
100613 |
100621 |
100649 |
100669 |
100673 |
100693 |
100699 |
100703 |
100733 |
100741 |
100747 |
100769 |
100787 |
100799 |
100801 |
100811 |
100823 |
100829 |
100847 |
100853 |
100907 |
100913 |
100927 |
100931 |
100937 |
100943 |
100957 |
100981 |
100987 |
100999 |
101009 |
101021 |
101027 |
101051 |
101063 |
101081 |
101089 |
101107 |
101111 |
101113 |
101117 |
101119 |
101141 |
101149 |
101159 |
101161 |
101173 |
101183 |
101197 |
101203 |
101207 |
101209 |
101221 |
101267 |
101273 |
101279 |
101281 |
101287 |
101293 |
101323 |
101333 |
101341 |
101347 |
101359 |
101363 |
101377 |
101383 |
101399 |
101411 |
101419 |
101429 |
101449 |
101467 |
101477 |
101483 |
101489 |
101501 |
101503 |
101513 |
101527 |
101531 |
101533 |
101537 |
101561 |
101573 |
101581 |
101599 |
101603 |
101611 |
101627 |
101641 |
101653 |
101663 |
101681 |
101693 |
101701 |
101719 |
101723 |
101737 |
101741 |
101747 |
101749 |
101771 |
101789 |
101797 |
101807 |
101833 |
101837 |
101839 |
101863 |
101869 |
101873 |
101879 |
101891 |
101917 |
101921 |
101929 |
101939 |
101957 |
101963 |
101977 |
101987 |
101999 |
102001 |
102013 |
102019 |
102023 |
102031 |
102043 |
102059 |
102061 |
102071 |
102077 |
102079 |
102101 |
102103 |
102107 |
102121 |
102139 |
102149 |
102161 |
102181 |
102191 |
102197 |
102199 |
102203 |
102217 |
102229 |
102233 |
102241 |
102251 |
102253 |
102259 |
102293 |
102299 |
102301 |
102317 |
102329 |
102337 |
102359 |
102367 |
102397 |
102407 |
102409 |
102433 |
102437 |
102451 |
102461 |
102481 |
102497 |
102499 |
102503 |
102523 |
102533 |
102539 |
102547 |
102551 |
102559 |
102563 |
102587 |
102593 |
102607 |
102611 |
102643 |
102647 |
102653 |
102667 |
102673 |
102677 |
102679 |
102701 |
102761 |
102763 |
102769 |
102793 |
102797 |
102811 |
102829 |
102841 |
102859 |
102871 |
102877 |
102881 |
102911 |
102913 |
102929 |
102931 |
102953 |
102967 |
102983 |
103001 |
103007 |
103043 |
103049 |
103067 |
103069 |
103079 |
103087 |
103091 |
103093 |
103099 |
103123 |
103141 |
103171 |
103177 |
103183 |
103217 |
103231 |
103237 |
103289 |
103291 |
103307 |
103319 |
103333 |
103349 |
103357 |
103387 |
103391 |
103393 |
103399 |
103409 |
103421 |
103423 |
103451 |
103457 |
103471 |
103483 |
103511 |
103529 |
103549 |
103553 |
103561 |
103567 |
103573 |
103577 |
103583 |
103591 |
103613 |
103619 |
103643 |
103651 |
103657 |
103669 |
103681 |
103687 |
103699 |
103703 |
103723 |
103769 |
103787 |
103801 |
103811 |
103813 |
103837 |
103841 |
103843 |
103867 |
103889 |
103903 |
103913 |
103919 |
103951 |
103963 |
103967 |
103969 |
103979 |
103981 |
103991 |
103993 |
103997 |
104003 |
104009 |
104021 |
104033 |
104047 |
104053 |
104059 |
104087 |
104089 |
104107 |
104113 |
104119 |
104123 |
104147 |
104149 |
104161 |
104173 |
104179 |
104183 |
104207 |
104231 |
104233 |
104239 |
104243 |
104281 |
104287 |
104297 |
104309 |
104311 |
104323 |
104327 |
104347 |
104369 |
104381 |
104383 |
104393 |
104399 |
104417 |
104459 |
104471 |
104473 |
104479 |
104491 |
104513 |
104527 |
104537 |
104543 |
104549 |
104551 |
104561 |
104579 |
104593 |
104597 |
104623 |
104639 |
104651 |
104659 |
104677 |
104681 |
104683 |
104693 |
104701 |
104707 |
104711 |
104717 |
104723 |
104729 |
104743 |
104759 |
104761 |
104773 |
104779 |
104789 |
104801 |
104803 |
104827 |
104831 |
104849 |
104851 |
104869 |
104879 |
104891 |
104911 |
104917 |
104933 |
104947 |
104953 |
104959 |
104971 |
104987 |
104999 |
105019 |
105023 |
105031 |
105037 |
105071 |
105097 |
105107 |
105137 |
105143 |
105167 |
105173 |
105199 |
105211 |
105227 |
105229 |
105239 |
105251 |
105253 |
105263 |
105269 |
105277 |
105319 |
105323 |
105331 |
105337 |
105341 |
105359 |
105361 |
105367 |
105373 |
105379 |
105389 |
105397 |
105401 |
105407 |
105437 |
105449 |
105467 |
105491 |
105499 |
105503 |
105509 |
105517 |
105527 |
105529 |
105533 |
105541 |
105557 |
105563 |
105601 |
105607 |
105613 |
105619 |
105649 |
105653 |
105667 |
105673 |
105683 |
105691 |
105701 |
105727 |
105733 |
105751 |
105761 |
105767 |
105769 |
105817 |
105829 |
105863 |
105871 |
105883 |
105899 |
105907 |
105913 |
105929 |
105943 |
105953 |
105967 |
105971 |
105977 |
105983 |
105997 |
106013 |
106019 |
106031 |
106033 |
106087 |
106103 |
106109 |
106121 |
106123 |
106129 |
106163 |
106181 |
106187 |
106189 |
106207 |
106213 |
106217 |
106219 |
106243 |
106261 |
106273 |
106277 |
106279 |
106291 |
106297 |
106303 |
106307 |
106319 |
106321 |
106331 |
106349 |
106357 |
106363 |
106367 |
106373 |
106391 |
106397 |
106411 |
106417 |
106427 |
106433 |
106441 |
106451 |
106453 |
106487 |
106501 |
106531 |
106537 |
106541 |
106543 |
106591 |
106619 |
106621 |
106627 |
106637 |
106649 |
106657 |
106661 |
106663 |
106669 |
106681 |
106693 |
106699 |
106703 |
106721 |
106727 |
106739 |
106747 |
106751 |
106753 |
106759 |
106781 |
106783 |
106787 |
106801 |
106823 |
106853 |
106859 |
106861 |
106867 |
106871 |
106877 |
106903 |
106907 |
106921 |
106937 |
106949 |
106957 |
106961 |
106963 |
106979 |
106993 |
107021 |
107033 |
107053 |
107057 |
107069 |
107071 |
107077 |
107089 |
107099 |
107101 |
107119 |
107123 |
107137 |
107171 |
107183 |
107197 |
107201 |
107209 |
107227 |
107243 |
107251 |
107269 |
107273 |
107279 |
107309 |
107323 |
107339 |
107347 |
107351 |
107357 |
107377 |
107441 |
107449 |
107453 |
107467 |
107473 |
107507 |
107509 |
107563 |
107581 |
107599 |
107603 |
107609 |
107621 |
107641 |
107647 |
107671 |
107687 |
107693 |
107699 |
107713 |
107717 |
107719 |
107741 |
107747 |
107761 |
107773 |
107777 |
107791 |
107827 |
107837 |
107839 |
107843 |
107857 |
107867 |
107873 |
107881 |
107897 |
107903 |
107923 |
107927 |
107941 |
107951 |
107971 |
107981 |
107999 |
108007 |
108011 |
108013 |
108023 |
108037 |
108041 |
108061 |
108079 |
108089 |
108107 |
108109 |
108127 |
108131 |
108139 |
108161 |
108179 |
108187 |
108191 |
108193 |
108203 |
108211 |
108217 |
108223 |
108233 |
108247 |
108263 |
108271 |
108287 |
108289 |
108293 |
108301 |
108343 |
108347 |
108359 |
108377 |
108379 |
108401 |
108413 |
108421 |
108439 |
108457 |
108461 |
108463 |
108497 |
108499 |
108503 |
108517 |
108529 |
108533 |
108541 |
108553 |
108557 |
108571 |
108587 |
108631 |
108637 |
108643 |
108649 |
108677 |
108707 |
108709 |
108727 |
108739 |
108751 |
108761 |
108769 |
108791 |
108793 |
108799 |
108803 |
108821 |
108827 |
108863 |
108869 |
108877 |
108881 |
108883 |
108887 |
108893 |
108907 |
108917 |
108923 |
108929 |
108943 |
108947 |
108949 |
108959 |
108961 |
108967 |
108971 |
108991 |
109001 |
109013 |
109037 |
109049 |
109063 |
109073 |
109097 |
109103 |
109111 |
109121 |
109133 |
109139 |
109141 |
109147 |
109159 |
109169 |
109171 |
109199 |
109201 |
109211 |
109229 |
109253 |
109267 |
109279 |
109297 |
109303 |
109313 |
109321 |
109331 |
109357 |
109363 |
109367 |
109379 |
109387 |
109391 |
109397 |
109423 |
109433 |
109441 |
109451 |
109453 |
109469 |
109471 |
109481 |
109507 |
109517 |
109519 |
109537 |
109541 |
109547 |
109567 |
109579 |
109583 |
109589 |
109597 |
109609 |
109619 |
109621 |
109639 |
109661 |
109663 |
109673 |
109717 |
109721 |
109741 |
109751 |
109789 |
109793 |
109807 |
109819 |
109829 |
109831 |
109841 |
109843 |
109847 |
109849 |
109859 |
109873 |
109883 |
109891 |
109897 |
109903 |
109913 |
109919 |
109937 |
109943 |
109961 |
109987 |
110017 |
110023 |
110039 |
110051 |
110059 |
110063 |
110069 |
110083 |
110119 |
110129 |
110161 |
110183 |
110221 |
110233 |
110237 |
110251 |
110261 |
110269 |
110273 |
110281 |
110291 |
110311 |
110321 |
110323 |
110339 |
110359 |
110419 |
110431 |
110437 |
110441 |
110459 |
110477 |
110479 |
110491 |
110501 |
110503 |
110527 |
110533 |
110543 |
110557 |
110563 |
110567 |
110569 |
110573 |
110581 |
110587 |
110597 |
110603 |
110609 |
110623 |
110629 |
110641 |
110647 |
110651 |
110681 |
110711 |
110729 |
110731 |
110749 |
110753 |
110771 |
110777 |
110807 |
110813 |
110819 |
110821 |
110849 |
110863 |
110879 |
110881 |
110899 |
110909 |
110917 |
110921 |
110923 |
110927 |
110933 |
110939 |
110947 |
110951 |
110969 |
110977 |
110989 |
111029 |
111031 |
111043 |
111049 |
111053 |
111091 |
111103 |
111109 |
111119 |
111121 |
111127 |
111143 |
111149 |
111187 |
111191 |
111211 |
111217 |
111227 |
111229 |
111253 |
111263 |
111269 |
111271 |
111301 |
111317 |
111323 |
111337 |
111341 |
111347 |
111373 |
111409 |
111427 |
111431 |
111439 |
111443 |
111467 |
111487 |
111491 |
111493 |
111497 |
111509 |
111521 |
111533 |
111539 |
111577 |
111581 |
111593 |
111599 |
111611 |
111623 |
111637 |
111641 |
111653 |
111659 |
111667 |
111697 |
111721 |
111731 |
111733 |
111751 |
111767 |
111773 |
111779 |
111781 |
111791 |
111799 |
111821 |
111827 |
111829 |
111833 |
111847 |
111857 |
111863 |
111869 |
111871 |
111893 |
111913 |
111919 |
111949 |
111953 |
111959 |
111973 |
111977 |
111997 |
112019 |
112031 |
112061 |
112067 |
112069 |
112087 |
112097 |
112103 |
112111 |
112121 |
112129 |
112139 |
112153 |
112163 |
112181 |
112199 |
112207 |
112213 |
112223 |
112237 |
112241 |
112247 |
112249 |
112253 |
112261 |
112279 |
112289 |
112291 |
112297 |
112303 |
112327 |
112331 |
112337 |
112339 |
112349 |
112361 |
112363 |
112397 |
112403 |
112429 |
112459 |
112481 |
112501 |
112507 |
112543 |
112559 |
112571 |
112573 |
112577 |
112583 |
112589 |
112601 |
112603 |
112621 |
112643 |
112657 |
112663 |
112687 |
112691 |
112741 |
112757 |
112759 |
112771 |
112787 |
112799 |
112807 |
112831 |
112843 |
112859 |
112877 |
112901 |
112909 |
112913 |
112919 |
112921 |
112927 |
112939 |
112951 |
112967 |
112979 |
112997 |
113011 |
113017 |
113021 |
113023 |
113027 |
113039 |
113041 |
113051 |
113063 |
113081 |
113083 |
113089 |
113093 |
113111 |
113117 |
113123 |
113131 |
113143 |
113147 |
113149 |
113153 |
113159 |
113161 |
113167 |
113171 |
113173 |
113177 |
113189 |
113209 |
113213 |
113227 |
113233 |
113279 |
113287 |
113327 |
113329 |
113341 |
113357 |
113359 |
113363 |
113371 |
113381 |
113383 |
113417 |
113437 |
113453 |
113467 |
113489 |
113497 |
113501 |
113513 |
113537 |
113539 |
113557 |
113567 |
113591 |
113621 |
113623 |
113647 |
113657 |
113683 |
113717 |
113719 |
113723 |
113731 |
113749 |
113759 |
113761 |
113777 |
113779 |
113783 |
113797 |
113809 |
113819 |
113837 |
113843 |
113891 |
113899 |
113903 |
113909 |
113921 |
113933 |
113947 |
113957 |
113963 |
113969 |
113983 |
113989 |
114001 |
114013 |
114031 |
114041 |
114043 |
114067 |
114073 |
114077 |
114083 |
114089 |
114113 |
114143 |
114157 |
114161 |
114167 |
114193 |
114197 |
114199 |
114203 |
114217 |
114221 |
114229 |
114259 |
114269 |
114277 |
114281 |
114299 |
114311 |
114319 |
114329 |
114343 |
114371 |
114377 |
114407 |
114419 |
114451 |
114467 |
114473 |
114479 |
114487 |
114493 |
114547 |
114553 |
114571 |
114577 |
114593 |
114599 |
114601 |
114613 |
114617 |
114641 |
114643 |
114649 |
114659 |
114661 |
114671 |
114679 |
114689 |
114691 |
114713 |
114743 |
114749 |
114757 |
114761 |
114769 |
114773 |
114781 |
114797 |
114799 |
114809 |
114827 |
114833 |
114847 |
114859 |
114883 |
114889 |
114901 |
114913 |
114941 |
114967 |
114973 |
114997 |
115001 |
115013 |
115019 |
115021 |
115057 |
115061 |
115067 |
115079 |
115099 |
115117 |
115123 |
115127 |
115133 |
115151 |
115153 |
115163 |
115183 |
115201 |
115211 |
115223 |
115237 |
115249 |
115259 |
115279 |
115301 |
115303 |
115309 |
115319 |
115321 |
115327 |
115331 |
115337 |
115343 |
115361 |
115363 |
115399 |
115421 |
115429 |
115459 |
115469 |
115471 |
115499 |
115513 |
115523 |
115547 |
115553 |
115561 |
115571 |
115589 |
115597 |
115601 |
115603 |
115613 |
115631 |
115637 |
115657 |
115663 |
115679 |
115693 |
115727 |
115733 |
115741 |
115751 |
115757 |
115763 |
115769 |
115771 |
115777 |
115781 |
115783 |
115793 |
115807 |
115811 |
115823 |
115831 |
115837 |
115849 |
115853 |
115859 |
115861 |
115873 |
115877 |
115879 |
115883 |
115891 |
115901 |
115903 |
115931 |
115933 |
115963 |
115979 |
115981 |
115987 |
116009 |
116027 |
116041 |
116047 |
116089 |
116099 |
116101 |
116107 |
116113 |
116131 |
116141 |
116159 |
116167 |
116177 |
116189 |
116191 |
116201 |
116239 |
116243 |
116257 |
116269 |
116273 |
116279 |
116293 |
116329 |
116341 |
116351 |
116359 |
116371 |
116381 |
116387 |
116411 |
116423 |
116437 |
116443 |
116447 |
116461 |
116471 |
116483 |
116491 |
116507 |
116531 |
116533 |
116537 |
116539 |
116549 |
116579 |
116593 |
116639 |
116657 |
116663 |
116681 |
116687 |
116689 |
116707 |
116719 |
116731 |
116741 |
116747 |
116789 |
116791 |
116797 |
116803 |
116819 |
116827 |
116833 |
116849 |
116867 |
116881 |
116903 |
116911 |
116923 |
116927 |
116929 |
116933 |
116953 |
116959 |
116969 |
116981 |
116989 |
116993 |
117017 |
117023 |
117037 |
117041 |
117043 |
117053 |
117071 |
117101 |
117109 |
117119 |
117127 |
117133 |
117163 |
117167 |
117191 |
117193 |
117203 |
117209 |
117223 |
117239 |
117241 |
117251 |
117259 |
117269 |
117281 |
117307 |
117319 |
117329 |
117331 |
117353 |
117361 |
117371 |
117373 |
117389 |
117413 |
117427 |
117431 |
117437 |
117443 |
117497 |
117499 |
117503 |
117511 |
117517 |
117529 |
117539 |
117541 |
117563 |
117571 |
117577 |
117617 |
117619 |
117643 |
117659 |
117671 |
117673 |
117679 |
117701 |
117703 |
117709 |
117721 |
117727 |
117731 |
117751 |
117757 |
117763 |
117773 |
117779 |
117787 |
117797 |
117809 |
117811 |
117833 |
117839 |
117841 |
117851 |
117877 |
117881 |
117883 |
117889 |
117899 |
117911 |
117917 |
117937 |
117959 |
117973 |
117977 |
117979 |
117989 |
117991 |
118033 |
118037 |
118043 |
118051 |
118057 |
118061 |
118081 |
118093 |
118127 |
118147 |
118163 |
118169 |
118171 |
118189 |
118211 |
118213 |
118219 |
118247 |
118249 |
118253 |
118259 |
118273 |
118277 |
118297 |
118343 |
118361 |
118369 |
118373 |
118387 |
118399 |
118409 |
118411 |
118423 |
118429 |
118453 |
118457 |
118463 |
118471 |
118493 |
118529 |
118543 |
118549 |
118571 |
118583 |
118589 |
118603 |
118619 |
118621 |
118633 |
118661 |
118669 |
118673 |
118681 |
118687 |
118691 |
118709 |
118717 |
118739 |
118747 |
118751 |
118757 |
118787 |
118799 |
118801 |
118819 |
118831 |
118843 |
118861 |
118873 |
118891 |
118897 |
118901 |
118903 |
118907 |
118913 |
118927 |
118931 |
118967 |
118973 |
119027 |
119033 |
119039 |
119047 |
119057 |
119069 |
119083 |
119087 |
119089 |
119099 |
119101 |
119107 |
119129 |
119131 |
119159 |
119173 |
119179 |
119183 |
119191 |
119227 |
119233 |
119237 |
119243 |
119267 |
119291 |
119293 |
119297 |
119299 |
119311 |
119321 |
119359 |
119363 |
119389 |
119417 |
119419 |
119429 |
119447 |
119489 |
119503 |
119513 |
119533 |
119549 |
119551 |
119557 |
119563 |
119569 |
119591 |
119611 |
119617 |
119627 |
119633 |
119653 |
119657 |
119659 |
119671 |
119677 |
119687 |
119689 |
119699 |
119701 |
119723 |
119737 |
119747 |
119759 |
119771 |
119773 |
119783 |
119797 |
119809 |
119813 |
119827 |
119831 |
119839 |
119849 |
119851 |
119869 |
119881 |
119891 |
119921 |
119923 |
119929 |
119953 |
119963 |
119971 |
119981 |
119983 |
119993 |
120011 |
120017 |
120041 |
120047 |
120049 |
120067 |
120077 |
120079 |
120091 |
120097 |
120103 |
120121 |
120157 |
120163 |
120167 |
120181 |
120193 |
120199 |
120209 |
120223 |
120233 |
120247 |
120277 |
120283 |
120293 |
120299 |
120319 |
120331 |
120349 |
120371 |
120383 |
120391 |
120397 |
120401 |
120413 |
120427 |
120431 |
120473 |
120503 |
120511 |
120539 |
120551 |
120557 |
120563 |
120569 |
120577 |
120587 |
120607 |
120619 |
120623 |
120641 |
120647 |
120661 |
120671 |
120677 |
120689 |
120691 |
120709 |
120713 |
120721 |
120737 |
120739 |
120749 |
120763 |
120767 |
120779 |
120811 |
120817 |
120823 |
120829 |
120833 |
120847 |
120851 |
120863 |
120871 |
120877 |
120889 |
120899 |
120907 |
120917 |
120919 |
120929 |
120937 |
120941 |
120943 |
120947 |
120977 |
120997 |
121001 |
121007 |
121013 |
121019 |
121021 |
121039 |
121061 |
121063 |
121067 |
121081 |
121123 |
121139 |
121151 |
121157 |
121169 |
121171 |
121181 |
121189 |
121229 |
121259 |
121267 |
121271 |
121283 |
121291 |
121309 |
121313 |
121321 |
121327 |
121333 |
121343 |
121349 |
121351 |
121357 |
121367 |
121369 |
121379 |
121403 |
121421 |
121439 |
121441 |
121447 |
121453 |
121469 |
121487 |
121493 |
121501 |
121507 |
121523 |
121531 |
121547 |
121553 |
121559 |
121571 |
121577 |
121579 |
121591 |
121607 |
121609 |
121621 |
121631 |
121633 |
121637 |
121661 |
121687 |
121697 |
121711 |
121721 |
121727 |
121763 |
121787 |
121789 |
121843 |
121853 |
121867 |
121883 |
121889 |
121909 |
121921 |
121931 |
121937 |
121949 |
121951 |
121963 |
121967 |
121993 |
121997 |
122011 |
122021 |
122027 |
122029 |
122033 |
122039 |
122041 |
122051 |
122053 |
122069 |
122081 |
122099 |
122117 |
122131 |
122147 |
122149 |
122167 |
122173 |
122201 |
122203 |
122207 |
122209 |
122219 |
122231 |
122251 |
122263 |
122267 |
122273 |
122279 |
122299 |
122321 |
122323 |
122327 |
122347 |
122363 |
122387 |
122389 |
122393 |
122399 |
122401 |
122443 |
122449 |
122453 |
122471 |
122477 |
122489 |
122497 |
122501 |
122503 |
122509 |
122527 |
122533 |
122557 |
122561 |
122579 |
122597 |
122599 |
122609 |
122611 |
122651 |
122653 |
122663 |
122693 |
122701 |
122719 |
122741 |
122743 |
122753 |
122761 |
122777 |
122789 |
122819 |
122827 |
122833 |
122839 |
122849 |
122861 |
122867 |
122869 |
122887 |
122891 |
122921 |
122929 |
122939 |
122953 |
122957 |
122963 |
122971 |
123001 |
123007 |
123017 |
123031 |
123049 |
123059 |
123077 |
123083 |
123091 |
123113 |
123121 |
123127 |
123143 |
123169 |
123191 |
123203 |
123209 |
123217 |
123229 |
123239 |
123259 |
123269 |
123289 |
123307 |
123311 |
123323 |
123341 |
123373 |
123377 |
123379 |
123397 |
123401 |
123407 |
123419 |
123427 |
123433 |
123439 |
123449 |
123457 |
123479 |
123491 |
123493 |
123499 |
123503 |
123517 |
123527 |
123547 |
123551 |
123553 |
123581 |
123583 |
123593 |
123601 |
123619 |
123631 |
123637 |
123653 |
123661 |
123667 |
123677 |
123701 |
123707 |
123719 |
123727 |
123731 |
123733 |
123737 |
123757 |
123787 |
123791 |
123803 |
123817 |
123821 |
123829 |
123833 |
123853 |
123863 |
123887 |
123911 |
123923 |
123931 |
123941 |
123953 |
123973 |
123979 |
123983 |
123989 |
123997 |
124001 |
124021 |
124067 |
124087 |
124097 |
124121 |
124123 |
124133 |
124139 |
124147 |
124153 |
124171 |
124181 |
124183 |
124193 |
124199 |
124213 |
124231 |
124247 |
124249 |
124277 |
124291 |
124297 |
124301 |
124303 |
124309 |
124337 |
124339 |
124343 |
124349 |
124351 |
124363 |
124367 |
124427 |
124429 |
124433 |
124447 |
124459 |
124471 |
124477 |
124489 |
124493 |
124513 |
124529 |
124541 |
124543 |
124561 |
124567 |
124577 |
124601 |
124633 |
124643 |
124669 |
124673 |
124679 |
124693 |
124699 |
124703 |
124717 |
124721 |
124739 |
124753 |
124759 |
124769 |
124771 |
124777 |
124781 |
124783 |
124793 |
124799 |
124819 |
124823 |
124847 |
124853 |
124897 |
124907 |
124909 |
124919 |
124951 |
124979 |
124981 |
124987 |
124991 |
125003 |
125017 |
125029 |
125053 |
125063 |
125093 |
125101 |
125107 |
125113 |
125117 |
125119 |
125131 |
125141 |
125149 |
125183 |
125197 |
125201 |
125207 |
125219 |
125221 |
125231 |
125243 |
125261 |
125269 |
125287 |
125299 |
125303 |
125311 |
125329 |
125339 |
125353 |
125371 |
125383 |
125387 |
125399 |
125407 |
125423 |
125429 |
125441 |
125453 |
125471 |
125497 |
125507 |
125509 |
125527 |
125539 |
125551 |
125591 |
125597 |
125617 |
125621 |
125627 |
125639 |
125641 |
125651 |
125659 |
125669 |
125683 |
125687 |
125693 |
125707 |
125711 |
125717 |
125731 |
125737 |
125743 |
125753 |
125777 |
125789 |
125791 |
125803 |
125813 |
125821 |
125863 |
125887 |
125897 |
125899 |
125921 |
125927 |
125929 |
125933 |
125941 |
125959 |
125963 |
126001 |
126011 |
126013 |
126019 |
126023 |
126031 |
126037 |
126041 |
126047 |
126067 |
126079 |
126097 |
126107 |
126127 |
126131 |
126143 |
126151 |
126173 |
126199 |
126211 |
126223 |
126227 |
126229 |
126233 |
126241 |
126257 |
126271 |
126307 |
126311 |
126317 |
126323 |
126337 |
126341 |
126349 |
126359 |
126397 |
126421 |
126433 |
126443 |
126457 |
126461 |
126473 |
126481 |
126487 |
126491 |
126493 |
126499 |
126517 |
126541 |
126547 |
126551 |
126583 |
126601 |
126611 |
126613 |
126631 |
126641 |
126653 |
126683 |
126691 |
126703 |
126713 |
126719 |
126733 |
126739 |
126743 |
126751 |
126757 |
126761 |
126781 |
126823 |
126827 |
126839 |
126851 |
126857 |
126859 |
126913 |
126923 |
126943 |
126949 |
126961 |
126967 |
126989 |
127031 |
127033 |
127037 |
127051 |
127079 |
127081 |
127103 |
127123 |
127133 |
127139 |
127157 |
127163 |
127189 |
127207 |
127217 |
127219 |
127241 |
127247 |
127249 |
127261 |
127271 |
127277 |
127289 |
127291 |
127297 |
127301 |
127321 |
127331 |
127343 |
127363 |
127373 |
127399 |
127403 |
127423 |
127447 |
127453 |
127481 |
127487 |
127493 |
127507 |
127529 |
127541 |
127549 |
127579 |
127583 |
127591 |
127597 |
127601 |
127607 |
127609 |
127637 |
127643 |
127649 |
127657 |
127663 |
127669 |
127679 |
127681 |
127691 |
127703 |
127709 |
127711 |
127717 |
127727 |
127733 |
127739 |
127747 |
127763 |
127781 |
127807 |
127817 |
127819 |
127837 |
127843 |
127849 |
127859 |
127867 |
127873 |
127877 |
127913 |
127921 |
127931 |
127951 |
127973 |
127979 |
127997 |
128021 |
128033 |
128047 |
128053 |
128099 |
128111 |
128113 |
128119 |
128147 |
128153 |
128159 |
128173 |
128189 |
128201 |
128203 |
128213 |
128221 |
128237 |
128239 |
128257 |
128273 |
128287 |
128291 |
128311 |
128321 |
128327 |
128339 |
128341 |
128347 |
128351 |
128377 |
128389 |
128393 |
128399 |
128411 |
128413 |
128431 |
128437 |
128449 |
128461 |
128467 |
128473 |
128477 |
128483 |
128489 |
128509 |
128519 |
128521 |
128549 |
128551 |
128563 |
128591 |
128599 |
128603 |
128621 |
128629 |
128657 |
128659 |
128663 |
128669 |
128677 |
128683 |
128693 |
128717 |
128747 |
128749 |
128761 |
128767 |
128813 |
128819 |
128831 |
128833 |
128837 |
128857 |
128861 |
128873 |
128879 |
128903 |
128923 |
128939 |
128941 |
128951 |
128959 |
128969 |
128971 |
128981 |
128983 |
128987 |
128993 |
129001 |
129011 |
129023 |
129037 |
129049 |
129061 |
129083 |
129089 |
129097 |
129113 |
129119 |
129121 |
129127 |
129169 |
129187 |
129193 |
129197 |
129209 |
129221 |
129223 |
129229 |
129263 |
129277 |
129281 |
129287 |
129289 |
129293 |
129313 |
129341 |
129347 |
129361 |
129379 |
129401 |
129403 |
129419 |
129439 |
129443 |
129449 |
129457 |
129461 |
129469 |
129491 |
129497 |
129499 |
129509 |
129517 |
129527 |
129529 |
129533 |
129539 |
129553 |
129581 |
129587 |
129589 |
129593 |
129607 |
129629 |
129631 |
129641 |
129643 |
129671 |
129707 |
129719 |
129733 |
129737 |
129749 |
129757 |
129763 |
129769 |
129793 |
129803 |
129841 |
129853 |
129887 |
129893 |
129901 |
129917 |
129919 |
129937 |
129953 |
129959 |
129967 |
129971 |
130003 |
130021 |
130027 |
130043 |
130051 |
130057 |
130069 |
130073 |
130079 |
130087 |
130099 |
130121 |
130127 |
130147 |
130171 |
130183 |
130199 |
130201 |
130211 |
130223 |
130241 |
130253 |
130259 |
130261 |
130267 |
130279 |
130303 |
130307 |
130337 |
130343 |
130349 |
130363 |
130367 |
130369 |
130379 |
130399 |
130409 |
130411 |
130423 |
130439 |
130447 |
130457 |
130469 |
130477 |
130483 |
130489 |
130513 |
130517 |
130523 |
130531 |
130547 |
130553 |
130579 |
130589 |
130619 |
130621 |
130631 |
130633 |
130639 |
130643 |
130649 |
130651 |
130657 |
130681 |
130687 |
130693 |
130699 |
130729 |
130769 |
130783 |
130787 |
130807 |
130811 |
130817 |
130829 |
130841 |
130843 |
130859 |
130873 |
130927 |
130957 |
130969 |
130973 |
130981 |
130987 |
131009 |
131011 |
131023 |
131041 |
131059 |
131063 |
131071 |
131101 |
131111 |
131113 |
131129 |
131143 |
131149 |
131171 |
131203 |
131213 |
131221 |
131231 |
131249 |
131251 |
131267 |
131293 |
131297 |
131303 |
131311 |
131317 |
131321 |
131357 |
131363 |
131371 |
131381 |
131413 |
131431 |
131437 |
131441 |
131447 |
131449 |
131477 |
131479 |
131489 |
131497 |
131501 |
131507 |
131519 |
131543 |
131561 |
131581 |
131591 |
131611 |
131617 |
131627 |
131639 |
131641 |
131671 |
131687 |
131701 |
131707 |
131711 |
131713 |
131731 |
131743 |
131749 |
131759 |
131771 |
131777 |
131779 |
131783 |
131797 |
131837 |
131839 |
131849 |
131861 |
131891 |
131893 |
131899 |
131909 |
131927 |
131933 |
131939 |
131941 |
131947 |
131959 |
131969 |
132001 |
132019 |
132047 |
132049 |
132059 |
132071 |
132103 |
132109 |
132113 |
132137 |
132151 |
132157 |
132169 |
132173 |
132199 |
132229 |
132233 |
132241 |
132247 |
132257 |
132263 |
132283 |
132287 |
132299 |
132313 |
132329 |
132331 |
132347 |
132361 |
132367 |
132371 |
132383 |
132403 |
132409 |
132421 |
132437 |
132439 |
132469 |
132491 |
132499 |
132511 |
132523 |
132527 |
132529 |
132533 |
132541 |
132547 |
132589 |
132607 |
132611 |
132619 |
132623 |
132631 |
132637 |
132647 |
132661 |
132667 |
132679 |
132689 |
132697 |
132701 |
132707 |
132709 |
132721 |
132739 |
132749 |
132751 |
132757 |
132761 |
132763 |
132817 |
132833 |
132851 |
132857 |
132859 |
132863 |
132887 |
132893 |
132911 |
132929 |
132947 |
132949 |
132953 |
132961 |
132967 |
132971 |
132989 |
133013 |
133033 |
133039 |
133051 |
133069 |
133073 |
133087 |
133097 |
133103 |
133109 |
133117 |
133121 |
133153 |
133157 |
133169 |
133183 |
133187 |
133201 |
133213 |
133241 |
133253 |
133261 |
133271 |
133277 |
133279 |
133283 |
133303 |
133319 |
133321 |
133327 |
133337 |
133349 |
133351 |
133379 |
133387 |
133391 |
133403 |
133417 |
133439 |
133447 |
133451 |
133481 |
133493 |
133499 |
133519 |
133541 |
133543 |
133559 |
133571 |
133583 |
133597 |
133631 |
133633 |
133649 |
133657 |
133669 |
133673 |
133691 |
133697 |
133709 |
133711 |
133717 |
133723 |
133733 |
133769 |
133781 |
133801 |
133811 |
133813 |
133831 |
133843 |
133853 |
133873 |
133877 |
133919 |
133949 |
133963 |
133967 |
133979 |
133981 |
133993 |
133999 |
134033 |
134039 |
134047 |
134053 |
134059 |
134077 |
134081 |
134087 |
134089 |
134093 |
134129 |
134153 |
134161 |
134171 |
134177 |
134191 |
134207 |
134213 |
134219 |
134227 |
134243 |
134257 |
134263 |
134269 |
134287 |
134291 |
134293 |
134327 |
134333 |
134339 |
134341 |
134353 |
134359 |
134363 |
134369 |
134371 |
134399 |
134401 |
134417 |
134437 |
134443 |
134471 |
134489 |
134503 |
134507 |
134513 |
134581 |
134587 |
134591 |
134593 |
134597 |
134609 |
134639 |
134669 |
134677 |
134681 |
134683 |
134699 |
134707 |
134731 |
134741 |
134753 |
134777 |
134789 |
134807 |
134837 |
134839 |
134851 |
134857 |
134867 |
134873 |
134887 |
134909 |
134917 |
134921 |
134923 |
134947 |
134951 |
134989 |
134999 |
135007 |
135017 |
135019 |
135029 |
135043 |
135049 |
135059 |
135077 |
135089 |
135101 |
135119 |
135131 |
135151 |
135173 |
135181 |
135193 |
135197 |
135209 |
135211 |
135221 |
135241 |
135257 |
135271 |
135277 |
135281 |
135283 |
135301 |
135319 |
135329 |
135347 |
135349 |
135353 |
135367 |
135389 |
135391 |
135403 |
135409 |
135427 |
135431 |
135433 |
135449 |
135461 |
135463 |
135467 |
135469 |
135479 |
135497 |
135511 |
135533 |
135559 |
135571 |
135581 |
135589 |
135593 |
135599 |
135601 |
135607 |
135613 |
135617 |
135623 |
135637 |
135647 |
135649 |
135661 |
135671 |
135697 |
135701 |
135719 |
135721 |
135727 |
135731 |
135743 |
135757 |
135781 |
135787 |
135799 |
135829 |
135841 |
135851 |
135859 |
135887 |
135893 |
135899 |
135911 |
135913 |
135929 |
135937 |
135977 |
135979 |
136013 |
136027 |
136033 |
136043 |
136057 |
136067 |
136069 |
136093 |
136099 |
136111 |
136133 |
136139 |
136163 |
136177 |
136189 |
136193 |
136207 |
136217 |
136223 |
136237 |
136247 |
136261 |
136273 |
136277 |
136303 |
136309 |
136319 |
136327 |
136333 |
136337 |
136343 |
136351 |
136361 |
136373 |
136379 |
136393 |
136397 |
136399 |
136403 |
136417 |
136421 |
136429 |
136447 |
136453 |
136463 |
136471 |
136481 |
136483 |
136501 |
136511 |
136519 |
136523 |
136531 |
136537 |
136541 |
136547 |
136559 |
136573 |
136601 |
136603 |
136607 |
136621 |
136649 |
136651 |
136657 |
136691 |
136693 |
136709 |
136711 |
136727 |
136733 |
136739 |
136751 |
136753 |
136769 |
136777 |
136811 |
136813 |
136841 |
136849 |
136859 |
136861 |
136879 |
136883 |
136889 |
136897 |
136943 |
136949 |
136951 |
136963 |
136973 |
136979 |
136987 |
136991 |
136993 |
136999 |
137029 |
137077 |
137087 |
137089 |
137117 |
137119 |
137131 |
137143 |
137147 |
137153 |
137177 |
137183 |
137191 |
137197 |
137201 |
137209 |
137219 |
137239 |
137251 |
137273 |
137279 |
137303 |
137321 |
137339 |
137341 |
137353 |
137359 |
137363 |
137369 |
137383 |
137387 |
137393 |
137399 |
137413 |
137437 |
137443 |
137447 |
137453 |
137477 |
137483 |
137491 |
137507 |
137519 |
137537 |
137567 |
137573 |
137587 |
137593 |
137597 |
137623 |
137633 |
137639 |
137653 |
137659 |
137699 |
137707 |
137713 |
137723 |
137737 |
137743 |
137771 |
137777 |
137791 |
137803 |
137827 |
137831 |
137849 |
137867 |
137869 |
137873 |
137909 |
137911 |
137927 |
137933 |
137941 |
137947 |
137957 |
137983 |
137993 |
137999 |
138007 |
138041 |
138053 |
138059 |
138071 |
138077 |
138079 |
138101 |
138107 |
138113 |
138139 |
138143 |
138157 |
138163 |
138179 |
138181 |
138191 |
138197 |
138209 |
138239 |
138241 |
138247 |
138251 |
138283 |
138289 |
138311 |
138319 |
138323 |
138337 |
138349 |
138371 |
138373 |
138389 |
138401 |
138403 |
138407 |
138427 |
138433 |
138449 |
138451 |
138461 |
138469 |
138493 |
138497 |
138511 |
138517 |
138547 |
138559 |
138563 |
138569 |
138571 |
138577 |
138581 |
138587 |
138599 |
138617 |
138629 |
138637 |
138641 |
138647 |
138661 |
138679 |
138683 |
138727 |
138731 |
138739 |
138763 |
138793 |
138797 |
138799 |
138821 |
138829 |
138841 |
138863 |
138869 |
138883 |
138889 |
138893 |
138899 |
138917 |
138923 |
138937 |
138959 |
138967 |
138977 |
139021 |
139033 |
139067 |
139079 |
139091 |
139109 |
139121 |
139123 |
139133 |
139169 |
139177 |
139187 |
139199 |
139201 |
139241 |
139267 |
139273 |
139291 |
139297 |
139301 |
139303 |
139309 |
139313 |
139333 |
139339 |
139343 |
139361 |
139367 |
139369 |
139387 |
139393 |
139397 |
139409 |
139423 |
139429 |
139439 |
139457 |
139459 |
139483 |
139487 |
139493 |
139501 |
139511 |
139537 |
139547 |
139571 |
139589 |
139591 |
139597 |
139609 |
139619 |
139627 |
139661 |
139663 |
139681 |
139697 |
139703 |
139709 |
139721 |
139729 |
139739 |
139747 |
139753 |
139759 |
139787 |
139801 |
139813 |
139831 |
139837 |
139861 |
139871 |
139883 |
139891 |
139901 |
139907 |
139921 |
139939 |
139943 |
139967 |
139969 |
139981 |
139987 |
139991 |
139999 |
140009 |
140053 |
140057 |
140069 |
140071 |
140111 |
140123 |
140143 |
140159 |
140167 |
140171 |
140177 |
140191 |
140197 |
140207 |
140221 |
140227 |
140237 |
140249 |
140263 |
140269 |
140281 |
140297 |
140317 |
140321 |
140333 |
140339 |
140351 |
140363 |
140381 |
140401 |
140407 |
140411 |
140417 |
140419 |
140423 |
140443 |
140449 |
140453 |
140473 |
140477 |
140521 |
140527 |
140533 |
140549 |
140551 |
140557 |
140587 |
140593 |
140603 |
140611 |
140617 |
140627 |
140629 |
140639 |
140659 |
140663 |
140677 |
140681 |
140683 |
140689 |
140717 |
140729 |
140731 |
140741 |
140759 |
140761 |
140773 |
140779 |
140797 |
140813 |
140827 |
140831 |
140837 |
140839 |
140863 |
140867 |
140869 |
140891 |
140893 |
140897 |
140909 |
140929 |
140939 |
140977 |
140983 |
140989 |
141023 |
141041 |
141061 |
141067 |
141073 |
141079 |
141101 |
141107 |
141121 |
141131 |
141157 |
141161 |
141179 |
141181 |
141199 |
141209 |
141221 |
141223 |
141233 |
141241 |
141257 |
141263 |
141269 |
141277 |
141283 |
141301 |
141307 |
141311 |
141319 |
141353 |
141359 |
141371 |
141397 |
141403 |
141413 |
141439 |
141443 |
141461 |
141481 |
141497 |
141499 |
141509 |
141511 |
141529 |
141539 |
141551 |
141587 |
141601 |
141613 |
141619 |
141623 |
141629 |
141637 |
141649 |
141653 |
141667 |
141671 |
141677 |
141679 |
141689 |
141697 |
141707 |
141709 |
141719 |
141731 |
141761 |
141767 |
141769 |
141773 |
141793 |
141803 |
141811 |
141829 |
141833 |
141851 |
141853 |
141863 |
141871 |
141907 |
141917 |
141931 |
141937 |
141941 |
141959 |
141961 |
141971 |
141991 |
142007 |
142019 |
142031 |
142039 |
142049 |
142057 |
142061 |
142067 |
142097 |
142099 |
142111 |
142123 |
142151 |
142157 |
142159 |
142169 |
142183 |
142189 |
142193 |
142211 |
142217 |
142223 |
142231 |
142237 |
142271 |
142297 |
142319 |
142327 |
142357 |
142369 |
142381 |
142391 |
142403 |
142421 |
142427 |
142433 |
142453 |
142469 |
142501 |
142529 |
142537 |
142543 |
142547 |
142553 |
142559 |
142567 |
142573 |
142589 |
142591 |
142601 |
142607 |
142609 |
142619 |
142657 |
142673 |
142697 |
142699 |
142711 |
142733 |
142757 |
142759 |
142771 |
142787 |
142789 |
142799 |
142811 |
142837 |
142841 |
142867 |
142871 |
142873 |
142897 |
142903 |
142907 |
142939 |
142949 |
142963 |
142969 |
142973 |
142979 |
142981 |
142993 |
143053 |
143063 |
143093 |
143107 |
143111 |
143113 |
143137 |
143141 |
143159 |
143177 |
143197 |
143239 |
143243 |
143249 |
143257 |
143261 |
143263 |
143281 |
143287 |
143291 |
143329 |
143333 |
143357 |
143387 |
143401 |
143413 |
143419 |
143443 |
143461 |
143467 |
143477 |
143483 |
143489 |
143501 |
143503 |
143509 |
143513 |
143519 |
143527 |
143537 |
143551 |
143567 |
143569 |
143573 |
143593 |
143609 |
143617 |
143629 |
143651 |
143653 |
143669 |
143677 |
143687 |
143699 |
143711 |
143719 |
143729 |
143743 |
143779 |
143791 |
143797 |
143807 |
143813 |
143821 |
143827 |
143831 |
143833 |
143873 |
143879 |
143881 |
143909 |
143947 |
143953 |
143971 |
143977 |
143981 |
143999 |
144013 |
144031 |
144037 |
144061 |
144071 |
144073 |
144103 |
144139 |
144161 |
144163 |
144167 |
144169 |
144173 |
144203 |
144223 |
144241 |
144247 |
144253 |
144259 |
144271 |
144289 |
144299 |
144307 |
144311 |
144323 |
144341 |
144349 |
144379 |
144383 |
144407 |
144409 |
144413 |
144427 |
144439 |
144451 |
144461 |
144479 |
144481 |
144497 |
144511 |
144539 |
144541 |
144563 |
144569 |
144577 |
144583 |
144589 |
144593 |
144611 |
144629 |
144659 |
144667 |
144671 |
144701 |
144709 |
144719 |
144731 |
144737 |
144751 |
144757 |
144763 |
144773 |
144779 |
144791 |
144817 |
144829 |
144839 |
144847 |
144883 |
144887 |
144889 |
144899 |
144917 |
144931 |
144941 |
144961 |
144967 |
144973 |
144983 |
145007 |
145009 |
145021 |
145031 |
145037 |
145043 |
145063 |
145069 |
145091 |
145109 |
145121 |
145133 |
145139 |
145177 |
145193 |
145207 |
145213 |
145219 |
145253 |
145259 |
145267 |
145283 |
145289 |
145303 |
145307 |
145349 |
145361 |
145381 |
145391 |
145399 |
145417 |
145423 |
145433 |
145441 |
145451 |
145459 |
145463 |
145471 |
145477 |
145487 |
145501 |
145511 |
145513 |
145517 |
145531 |
145543 |
145547 |
145549 |
145577 |
145589 |
145601 |
145603 |
145633 |
145637 |
145643 |
145661 |
145679 |
145681 |
145687 |
145703 |
145709 |
145721 |
145723 |
145753 |
145757 |
145759 |
145771 |
145777 |
145799 |
145807 |
145819 |
145823 |
145829 |
145861 |
145879 |
145897 |
145903 |
145931 |
145933 |
145949 |
145963 |
145967 |
145969 |
145987 |
145991 |
146009 |
146011 |
146021 |
146023 |
146033 |
146051 |
146057 |
146059 |
146063 |
146077 |
146093 |
146099 |
146117 |
146141 |
146161 |
146173 |
146191 |
146197 |
146203 |
146213 |
146221 |
146239 |
146249 |
146273 |
146291 |
146297 |
146299 |
146309 |
146317 |
146323 |
146347 |
146359 |
146369 |
146381 |
146383 |
146389 |
146407 |
146417 |
146423 |
146437 |
146449 |
146477 |
146513 |
146519 |
146521 |
146527 |
146539 |
146543 |
146563 |
146581 |
146603 |
146609 |
146617 |
146639 |
146647 |
146669 |
146677 |
146681 |
146683 |
146701 |
146719 |
146743 |
146749 |
146767 |
146777 |
146801 |
146807 |
146819 |
146833 |
146837 |
146843 |
146849 |
146857 |
146891 |
146893 |
146917 |
146921 |
146933 |
146941 |
146953 |
146977 |
146983 |
146987 |
146989 |
147011 |
147029 |
147031 |
147047 |
147073 |
147083 |
147089 |
147097 |
147107 |
147137 |
147139 |
147151 |
147163 |
147179 |
147197 |
147209 |
147211 |
147221 |
147227 |
147229 |
147253 |
147263 |
147283 |
147289 |
147293 |
147299 |
147311 |
147319 |
147331 |
147341 |
147347 |
147353 |
147377 |
147391 |
147397 |
147401 |
147409 |
147419 |
147449 |
147451 |
147457 |
147481 |
147487 |
147503 |
147517 |
147541 |
147547 |
147551 |
147557 |
147571 |
147583 |
147607 |
147613 |
147617 |
147629 |
147647 |
147661 |
147671 |
147673 |
147689 |
147703 |
147709 |
147727 |
147739 |
147743 |
147761 |
147769 |
147773 |
147779 |
147787 |
147793 |
147799 |
147811 |
147827 |
147853 |
147859 |
147863 |
147881 |
147919 |
147937 |
147949 |
147977 |
147997 |
148013 |
148021 |
148061 |
148063 |
148073 |
148079 |
148091 |
148123 |
148139 |
148147 |
148151 |
148153 |
148157 |
148171 |
148193 |
148199 |
148201 |
148207 |
148229 |
148243 |
148249 |
148279 |
148301 |
148303 |
148331 |
148339 |
148361 |
148367 |
148381 |
148387 |
148399 |
148403 |
148411 |
148429 |
148439 |
148457 |
148469 |
148471 |
148483 |
148501 |
148513 |
148517 |
148531 |
148537 |
148549 |
148573 |
148579 |
148609 |
148627 |
148633 |
148639 |
148663 |
148667 |
148669 |
148691 |
148693 |
148711 |
148721 |
148723 |
148727 |
148747 |
148763 |
148781 |
148783 |
148793 |
148817 |
148829 |
148853 |
148859 |
148861 |
148867 |
148873 |
148891 |
148913 |
148921 |
148927 |
148931 |
148933 |
148949 |
148957 |
148961 |
148991 |
148997 |
149011 |
149021 |
149027 |
149033 |
149053 |
149057 |
149059 |
149069 |
149077 |
149087 |
149099 |
149101 |
149111 |
149113 |
149119 |
149143 |
149153 |
149159 |
149161 |
149173 |
149183 |
149197 |
149213 |
149239 |
149249 |
149251 |
149257 |
149269 |
149287 |
149297 |
149309 |
149323 |
149333 |
149341 |
149351 |
149371 |
149377 |
149381 |
149393 |
149399 |
149411 |
149417 |
149419 |
149423 |
149441 |
149459 |
149489 |
149491 |
149497 |
149503 |
149519 |
149521 |
149531 |
149533 |
149543 |
149551 |
149561 |
149563 |
149579 |
149603 |
149623 |
149627 |
149629 |
149689 |
149711 |
149713 |
149717 |
149729 |
149731 |
149749 |
149759 |
149767 |
149771 |
149791 |
149803 |
149827 |
149837 |
149839 |
149861 |
149867 |
149873 |
149893 |
149899 |
149909 |
149911 |
149921 |
149939 |
149953 |
149969 |
149971 |
149993 |
150001 |
150011 |
150041 |
150053 |
150061 |
150067 |
150077 |
150083 |
150089 |
150091 |
150097 |
150107 |
150131 |
150151 |
150169 |
150193 |
150197 |
150203 |
150209 |
150211 |
150217 |
150221 |
150223 |
150239 |
150247 |
150287 |
150299 |
150301 |
150323 |
150329 |
150343 |
150373 |
150377 |
150379 |
150383 |
150401 |
150407 |
150413 |
150427 |
150431 |
150439 |
150473 |
150497 |
150503 |
150517 |
150523 |
150533 |
150551 |
150559 |
150571 |
150583 |
150587 |
150589 |
150607 |
150611 |
150617 |
150649 |
150659 |
150697 |
150707 |
150721 |
150743 |
150767 |
150769 |
150779 |
150791 |
150797 |
150827 |
150833 |
150847 |
150869 |
150881 |
150883 |
150889 |
150893 |
150901 |
150907 |
150919 |
150929 |
150959 |
150961 |
150967 |
150979 |
150989 |
150991 |
151007 |
151009 |
151013 |
151027 |
151049 |
151051 |
151057 |
151091 |
151121 |
151141 |
151153 |
151157 |
151163 |
151169 |
151171 |
151189 |
151201 |
151213 |
151237 |
151241 |
151243 |
151247 |
151253 |
151273 |
151279 |
151289 |
151303 |
151337 |
151339 |
151343 |
151357 |
151379 |
151381 |
151391 |
151397 |
151423 |
151429 |
151433 |
151451 |
151471 |
151477 |
151483 |
151499 |
151507 |
151517 |
151523 |
151531 |
151537 |
151549 |
151553 |
151561 |
151573 |
151579 |
151597 |
151603 |
151607 |
151609 |
151631 |
151637 |
151643 |
151651 |
151667 |
151673 |
151681 |
151687 |
151693 |
151703 |
151717 |
151729 |
151733 |
151769 |
151771 |
151783 |
151787 |
151799 |
151813 |
151817 |
151841 |
151847 |
151849 |
151871 |
151883 |
151897 |
151901 |
151903 |
151909 |
151937 |
151939 |
151967 |
151969 |
152003 |
152017 |
152027 |
152029 |
152039 |
152041 |
152063 |
152077 |
152081 |
152083 |
152093 |
152111 |
152123 |
152147 |
152183 |
152189 |
152197 |
152203 |
152213 |
152219 |
152231 |
152239 |
152249 |
152267 |
152287 |
152293 |
152297 |
152311 |
152363 |
152377 |
152381 |
152389 |
152393 |
152407 |
152417 |
152419 |
152423 |
152429 |
152441 |
152443 |
152459 |
152461 |
152501 |
152519 |
152531 |
152533 |
152539 |
152563 |
152567 |
152597 |
152599 |
152617 |
152623 |
152629 |
152639 |
152641 |
152657 |
152671 |
152681 |
152717 |
152723 |
152729 |
152753 |
152767 |
152777 |
152783 |
152791 |
152809 |
152819 |
152821 |
152833 |
152837 |
152839 |
152843 |
152851 |
152857 |
152879 |
152897 |
152899 |
152909 |
152939 |
152941 |
152947 |
152953 |
152959 |
152981 |
152989 |
152993 |
153001 |
153059 |
153067 |
153071 |
153073 |
153077 |
153089 |
153107 |
153113 |
153133 |
153137 |
153151 |
153191 |
153247 |
153259 |
153269 |
153271 |
153277 |
153281 |
153287 |
153313 |
153319 |
153337 |
153343 |
153353 |
153359 |
153371 |
153379 |
153407 |
153409 |
153421 |
153427 |
153437 |
153443 |
153449 |
153457 |
153469 |
153487 |
153499 |
153509 |
153511 |
153521 |
153523 |
153529 |
153533 |
153557 |
153563 |
153589 |
153607 |
153611 |
153623 |
153641 |
153649 |
153689 |
153701 |
153719 |
153733 |
153739 |
153743 |
153749 |
153757 |
153763 |
153817 |
153841 |
153871 |
153877 |
153887 |
153889 |
153911 |
153913 |
153929 |
153941 |
153947 |
153949 |
153953 |
153991 |
153997 |
154001 |
154027 |
154043 |
154057 |
154061 |
154067 |
154073 |
154079 |
154081 |
154087 |
154097 |
154111 |
154127 |
154153 |
154157 |
154159 |
154181 |
154183 |
154211 |
154213 |
154229 |
154243 |
154247 |
154267 |
154277 |
154279 |
154291 |
154303 |
154313 |
154321 |
154333 |
154339 |
154351 |
154369 |
154373 |
154387 |
154409 |
154417 |
154423 |
154439 |
154459 |
154487 |
154493 |
154501 |
154523 |
154543 |
154571 |
154573 |
154579 |
154589 |
154591 |
154613 |
154619 |
154621 |
154643 |
154667 |
154669 |
154681 |
154691 |
154699 |
154723 |
154727 |
154733 |
154747 |
154753 |
154769 |
154787 |
154789 |
154799 |
154807 |
154823 |
154841 |
154849 |
154871 |
154873 |
154877 |
154883 |
154897 |
154927 |
154933 |
154937 |
154943 |
154981 |
154991 |
155003 |
155009 |
155017 |
155027 |
155047 |
155069 |
155081 |
155083 |
155087 |
155119 |
155137 |
155153 |
155161 |
155167 |
155171 |
155191 |
155201 |
155203 |
155209 |
155219 |
155231 |
155251 |
155269 |
155291 |
155299 |
155303 |
155317 |
155327 |
155333 |
155371 |
155377 |
155381 |
155383 |
155387 |
155399 |
155413 |
155423 |
155443 |
155453 |
155461 |
155473 |
155501 |
155509 |
155521 |
155537 |
155539 |
155557 |
155569 |
155579 |
155581 |
155593 |
155599 |
155609 |
155621 |
155627 |
155653 |
155657 |
155663 |
155671 |
155689 |
155693 |
155699 |
155707 |
155717 |
155719 |
155723 |
155731 |
155741 |
155747 |
155773 |
155777 |
155783 |
155797 |
155801 |
155809 |
155821 |
155833 |
155849 |
155851 |
155861 |
155863 |
155887 |
155891 |
155893 |
155921 |
156007 |
156011 |
156019 |
156041 |
156059 |
156061 |
156071 |
156089 |
156109 |
156119 |
156127 |
156131 |
156139 |
156151 |
156157 |
156217 |
156227 |
156229 |
156241 |
156253 |
156257 |
156259 |
156269 |
156307 |
156319 |
156329 |
156347 |
156353 |
156361 |
156371 |
156419 |
156421 |
156437 |
156467 |
156487 |
156491 |
156493 |
156511 |
156521 |
156539 |
156577 |
156589 |
156593 |
156601 |
156619 |
156623 |
156631 |
156641 |
156659 |
156671 |
156677 |
156679 |
156683 |
156691 |
156703 |
156707 |
156719 |
156727 |
156733 |
156749 |
156781 |
156797 |
156799 |
156817 |
156823 |
156833 |
156841 |
156887 |
156899 |
156901 |
156913 |
156941 |
156943 |
156967 |
156971 |
156979 |
157007 |
157013 |
157019 |
157037 |
157049 |
157051 |
157057 |
157061 |
157081 |
157103 |
157109 |
157127 |
157133 |
157141 |
157163 |
157177 |
157181 |
157189 |
157207 |
157211 |
157217 |
157219 |
157229 |
157231 |
157243 |
157247 |
157253 |
157259 |
157271 |
157273 |
157277 |
157279 |
157291 |
157303 |
157307 |
157321 |
157327 |
157349 |
157351 |
157363 |
157393 |
157411 |
157427 |
157429 |
157433 |
157457 |
157477 |
157483 |
157489 |
157513 |
157519 |
157523 |
157543 |
157559 |
157561 |
157571 |
157579 |
157627 |
157637 |
157639 |
157649 |
157667 |
157669 |
157679 |
157721 |
157733 |
157739 |
157747 |
157769 |
157771 |
157793 |
157799 |
157813 |
157823 |
157831 |
157837 |
157841 |
157867 |
157877 |
157889 |
157897 |
157901 |
157907 |
157931 |
157933 |
157951 |
157991 |
157999 |
158003 |
158009 |
158017 |
158029 |
158047 |
158071 |
158077 |
158113 |
158129 |
158141 |
158143 |
158161 |
158189 |
158201 |
158209 |
158227 |
158231 |
158233 |
158243 |
158261 |
158269 |
158293 |
158303 |
158329 |
158341 |
158351 |
158357 |
158359 |
158363 |
158371 |
158393 |
158407 |
158419 |
158429 |
158443 |
158449 |
158489 |
158507 |
158519 |
158527 |
158537 |
158551 |
158563 |
158567 |
158573 |
158581 |
158591 |
158597 |
158611 |
158617 |
158621 |
158633 |
158647 |
158657 |
158663 |
158699 |
158731 |
158747 |
158749 |
158759 |
158761 |
158771 |
158777 |
158791 |
158803 |
158843 |
158849 |
158863 |
158867 |
158881 |
158909 |
158923 |
158927 |
158941 |
158959 |
158981 |
158993 |
159013 |
159017 |
159023 |
159059 |
159073 |
159079 |
159097 |
159113 |
159119 |
159157 |
159161 |
159167 |
159169 |
159179 |
159191 |
159193 |
159199 |
159209 |
159223 |
159227 |
159233 |
159287 |
159293 |
159311 |
159319 |
159337 |
159347 |
159349 |
159361 |
159389 |
159403 |
159407 |
159421 |
159431 |
159437 |
159457 |
159463 |
159469 |
159473 |
159491 |
159499 |
159503 |
159521 |
159539 |
159541 |
159553 |
159563 |
159569 |
159571 |
159589 |
159617 |
159623 |
159629 |
159631 |
159667 |
159671 |
159673 |
159683 |
159697 |
159701 |
159707 |
159721 |
159737 |
159739 |
159763 |
159769 |
159773 |
159779 |
159787 |
159791 |
159793 |
159799 |
159811 |
159833 |
159839 |
159853 |
159857 |
159869 |
159871 |
159899 |
159911 |
159931 |
159937 |
159977 |
159979 |
160001 |
160009 |
160019 |
160031 |
160033 |
160049 |
160073 |
160079 |
160081 |
160087 |
160091 |
160093 |
160117 |
160141 |
160159 |
160163 |
160169 |
160183 |
160201 |
160207 |
160217 |
160231 |
160243 |
160253 |
160309 |
160313 |
160319 |
160343 |
160357 |
160367 |
160373 |
160387 |
160397 |
160403 |
160409 |
160423 |
160441 |
160453 |
160481 |
160483 |
160499 |
160507 |
160541 |
160553 |
160579 |
160583 |
160591 |
160603 |
160619 |
160621 |
160627 |
160637 |
160639 |
160649 |
160651 |
160663 |
160669 |
160681 |
160687 |
160697 |
160709 |
160711 |
160723 |
160739 |
160751 |
160753 |
160757 |
160781 |
160789 |
160807 |
160813 |
160817 |
160829 |
160841 |
160861 |
160877 |
160879 |
160883 |
160903 |
160907 |
160933 |
160967 |
160969 |
160981 |
160997 |
161009 |
161017 |
161033 |
161039 |
161047 |
161053 |
161059 |
161071 |
161087 |
161093 |
161123 |
161137 |
161141 |
161149 |
161159 |
161167 |
161201 |
161221 |
161233 |
161237 |
161263 |
161267 |
161281 |
161303 |
161309 |
161323 |
161333 |
161339 |
161341 |
161363 |
161377 |
161387 |
161407 |
161411 |
161453 |
161459 |
161461 |
161471 |
161503 |
161507 |
161521 |
161527 |
161531 |
161543 |
161561 |
161563 |
161569 |
161573 |
161591 |
161599 |
161611 |
161627 |
161639 |
161641 |
161659 |
161683 |
161717 |
161729 |
161731 |
161741 |
161743 |
161753 |
161761 |
161771 |
161773 |
161779 |
161783 |
161807 |
161831 |
161839 |
161869 |
161873 |
161879 |
161881 |
161911 |
161921 |
161923 |
161947 |
161957 |
161969 |
161971 |
161977 |
161983 |
161999 |
162007 |
162011 |
162017 |
162053 |
162059 |
162079 |
162091 |
162109 |
162119 |
162143 |
162209 |
162221 |
162229 |
162251 |
162257 |
162263 |
162269 |
162277 |
162287 |
162289 |
162293 |
162343 |
162359 |
162389 |
162391 |
162413 |
162419 |
162439 |
162451 |
162457 |
162473 |
162493 |
162499 |
162517 |
162523 |
162527 |
162529 |
162553 |
162557 |
162563 |
162577 |
162593 |
162601 |
162611 |
162623 |
162629 |
162641 |
162649 |
162671 |
162677 |
162683 |
162691 |
162703 |
162709 |
162713 |
162727 |
162731 |
162739 |
162749 |
162751 |
162779 |
162787 |
162791 |
162821 |
162823 |
162829 |
162839 |
162847 |
162853 |
162859 |
162881 |
162889 |
162901 |
162907 |
162917 |
162937 |
162947 |
162971 |
162973 |
162989 |
162997 |
163003 |
163019 |
163021 |
163027 |
163061 |
163063 |
163109 |
163117 |
163127 |
163129 |
163147 |
163151 |
163169 |
163171 |
163181 |
163193 |
163199 |
163211 |
163223 |
163243 |
163249 |
163259 |
163307 |
163309 |
163321 |
163327 |
163337 |
163351 |
163363 |
163367 |
163393 |
163403 |
163409 |
163411 |
163417 |
163433 |
163469 |
163477 |
163481 |
163483 |
163487 |
163517 |
163543 |
163561 |
163567 |
163573 |
163601 |
163613 |
163621 |
163627 |
163633 |
163637 |
163643 |
163661 |
163673 |
163679 |
163697 |
163729 |
163733 |
163741 |
163753 |
163771 |
163781 |
163789 |
163811 |
163819 |
163841 |
163847 |
163853 |
163859 |
163861 |
163871 |
163883 |
163901 |
163909 |
163927 |
163973 |
163979 |
163981 |
163987 |
163991 |
163993 |
163997 |
164011 |
164023 |
164039 |
164051 |
164057 |
164071 |
164089 |
164093 |
164113 |
164117 |
164147 |
164149 |
164173 |
164183 |
164191 |
164201 |
164209 |
164231 |
164233 |
164239 |
164249 |
164251 |
164267 |
164279 |
164291 |
164299 |
164309 |
164321 |
164341 |
164357 |
164363 |
164371 |
164377 |
164387 |
164413 |
164419 |
164429 |
164431 |
164443 |
164447 |
164449 |
164471 |
164477 |
164503 |
164513 |
164531 |
164569 |
164581 |
164587 |
164599 |
164617 |
164621 |
164623 |
164627 |
164653 |
164663 |
164677 |
164683 |
164701 |
164707 |
164729 |
164743 |
164767 |
164771 |
164789 |
164809 |
164821 |
164831 |
164837 |
164839 |
164881 |
164893 |
164911 |
164953 |
164963 |
164987 |
164999 |
165001 |
165037 |
165041 |
165047 |
165049 |
165059 |
165079 |
165083 |
165089 |
165103 |
165133 |
165161 |
165173 |
165181 |
165203 |
165211 |
165229 |
165233 |
165247 |
165287 |
165293 |
165311 |
165313 |
165317 |
165331 |
165343 |
165349 |
165367 |
165379 |
165383 |
165391 |
165397 |
165437 |
165443 |
165449 |
165457 |
165463 |
165469 |
165479 |
165511 |
165523 |
165527 |
165533 |
165541 |
165551 |
165553 |
165559 |
165569 |
165587 |
165589 |
165601 |
165611 |
165617 |
165653 |
165667 |
165673 |
165701 |
165703 |
165707 |
165709 |
165713 |
165719 |
165721 |
165749 |
165779 |
165799 |
165811 |
165817 |
165829 |
165833 |
165857 |
165877 |
165883 |
165887 |
165901 |
165931 |
165941 |
165947 |
165961 |
165983 |
166013 |
166021 |
166027 |
166031 |
166043 |
166063 |
166081 |
166099 |
166147 |
166151 |
166157 |
166169 |
166183 |
166189 |
166207 |
166219 |
166237 |
166247 |
166259 |
166273 |
166289 |
166297 |
166301 |
166303 |
166319 |
166349 |
166351 |
166357 |
166363 |
166393 |
166399 |
166403 |
166409 |
166417 |
166429 |
166457 |
166471 |
166487 |
166541 |
166561 |
166567 |
166571 |
166597 |
166601 |
166603 |
166609 |
166613 |
166619 |
166627 |
166631 |
166643 |
166657 |
166667 |
166669 |
166679 |
166693 |
166703 |
166723 |
166739 |
166741 |
166781 |
166783 |
166799 |
166807 |
166823 |
166841 |
166843 |
166847 |
166849 |
166853 |
166861 |
166867 |
166871 |
166909 |
166919 |
166931 |
166949 |
166967 |
166973 |
166979 |
166987 |
167009 |
167017 |
167021 |
167023 |
167033 |
167039 |
167047 |
167051 |
167071 |
167077 |
167081 |
167087 |
167099 |
167107 |
167113 |
167117 |
167119 |
167149 |
167159 |
167173 |
167177 |
167191 |
167197 |
167213 |
167221 |
167249 |
167261 |
167267 |
167269 |
167309 |
167311 |
167317 |
167329 |
167339 |
167341 |
167381 |
167393 |
167407 |
167413 |
167423 |
167429 |
167437 |
167441 |
167443 |
167449 |
167471 |
167483 |
167491 |
167521 |
167537 |
167543 |
167593 |
167597 |
167611 |
167621 |
167623 |
167627 |
167633 |
167641 |
167663 |
167677 |
167683 |
167711 |
167729 |
167747 |
167759 |
167771 |
167777 |
167779 |
167801 |
167809 |
167861 |
167863 |
167873 |
167879 |
167887 |
167891 |
167899 |
167911 |
167917 |
167953 |
167971 |
167987 |
168013 |
168023 |
168029 |
168037 |
168043 |
168067 |
168071 |
168083 |
168089 |
168109 |
168127 |
168143 |
168151 |
168193 |
168197 |
168211 |
168227 |
168247 |
168253 |
168263 |
168269 |
168277 |
168281 |
168293 |
168323 |
168331 |
168347 |
168353 |
168391 |
168409 |
168433 |
168449 |
168451 |
168457 |
168463 |
168481 |
168491 |
168499 |
168523 |
168527 |
168533 |
168541 |
168559 |
168599 |
168601 |
168617 |
168629 |
168631 |
168643 |
168673 |
168677 |
168697 |
168713 |
168719 |
168731 |
168737 |
168743 |
168761 |
168769 |
168781 |
168803 |
168851 |
168863 |
168869 |
168887 |
168893 |
168899 |
168901 |
168913 |
168937 |
168943 |
168977 |
168991 |
169003 |
169007 |
169009 |
169019 |
169049 |
169063 |
169067 |
169069 |
169079 |
169093 |
169097 |
169111 |
169129 |
169151 |
169159 |
169177 |
169181 |
169199 |
169217 |
169219 |
169241 |
169243 |
169249 |
169259 |
169283 |
169307 |
169313 |
169319 |
169321 |
169327 |
169339 |
169343 |
169361 |
169369 |
169373 |
169399 |
169409 |
169427 |
169457 |
169471 |
169483 |
169489 |
169493 |
169501 |
169523 |
169531 |
169553 |
169567 |
169583 |
169591 |
169607 |
169627 |
169633 |
169639 |
169649 |
169657 |
169661 |
169667 |
169681 |
169691 |
169693 |
169709 |
169733 |
169751 |
169753 |
169769 |
169777 |
169783 |
169789 |
169817 |
169823 |
169831 |
169837 |
169843 |
169859 |
169889 |
169891 |
169909 |
169913 |
169919 |
169933 |
169937 |
169943 |
169951 |
169957 |
169987 |
169991 |
170003 |
170021 |
170029 |
170047 |
170057 |
170063 |
170081 |
170099 |
170101 |
170111 |
170123 |
170141 |
170167 |
170179 |
170189 |
170197 |
170207 |
170213 |
170227 |
170231 |
170239 |
170243 |
170249 |
170263 |
170267 |
170279 |
170293 |
170299 |
170327 |
170341 |
170347 |
170351 |
170353 |
170363 |
170369 |
170371 |
170383 |
170389 |
170393 |
170413 |
170441 |
170447 |
170473 |
170483 |
170497 |
170503 |
170509 |
170537 |
170539 |
170551 |
170557 |
170579 |
170603 |
170609 |
170627 |
170633 |
170641 |
170647 |
170669 |
170689 |
170701 |
170707 |
170711 |
170741 |
170749 |
170759 |
170761 |
170767 |
170773 |
170777 |
170801 |
170809 |
170813 |
170827 |
170837 |
170843 |
170851 |
170857 |
170873 |
170881 |
170887 |
170899 |
170921 |
170927 |
170953 |
170957 |
170971 |
171007 |
171023 |
171029 |
171043 |
171047 |
171049 |
171053 |
171077 |
171079 |
171091 |
171103 |
171131 |
171161 |
171163 |
171167 |
171169 |
171179 |
171203 |
171233 |
171251 |
171253 |
171263 |
171271 |
171293 |
171299 |
171317 |
171329 |
171341 |
171383 |
171401 |
171403 |
171427 |
171439 |
171449 |
171467 |
171469 |
171473 |
171481 |
171491 |
171517 |
171529 |
171539 |
171541 |
171553 |
171559 |
171571 |
171583 |
171617 |
171629 |
171637 |
171641 |
171653 |
171659 |
171671 |
171673 |
171679 |
171697 |
171707 |
171713 |
171719 |
171733 |
171757 |
171761 |
171763 |
171793 |
171799 |
171803 |
171811 |
171823 |
171827 |
171851 |
171863 |
171869 |
171877 |
171881 |
171889 |
171917 |
171923 |
171929 |
171937 |
171947 |
172001 |
172009 |
172021 |
172027 |
172031 |
172049 |
172069 |
172079 |
172093 |
172097 |
172127 |
172147 |
172153 |
172157 |
172169 |
172171 |
172181 |
172199 |
172213 |
172217 |
172219 |
172223 |
172243 |
172259 |
172279 |
172283 |
172297 |
172307 |
172313 |
172321 |
172331 |
172343 |
172351 |
172357 |
172373 |
172399 |
172411 |
172421 |
172423 |
172427 |
172433 |
172439 |
172441 |
172489 |
172507 |
172517 |
172519 |
172541 |
172553 |
172561 |
172573 |
172583 |
172589 |
172597 |
172603 |
172607 |
172619 |
172633 |
172643 |
172649 |
172657 |
172663 |
172673 |
172681 |
172687 |
172709 |
172717 |
172721 |
172741 |
172751 |
172759 |
172787 |
172801 |
172807 |
172829 |
172849 |
172853 |
172859 |
172867 |
172871 |
172877 |
172883 |
172933 |
172969 |
172973 |
172981 |
172987 |
172993 |
172999 |
173021 |
173023 |
173039 |
173053 |
173059 |
173081 |
173087 |
173099 |
173137 |
173141 |
173149 |
173177 |
173183 |
173189 |
173191 |
173207 |
173209 |
173219 |
173249 |
173263 |
173267 |
173273 |
173291 |
173293 |
173297 |
173309 |
173347 |
173357 |
173359 |
173429 |
173431 |
173473 |
173483 |
173491 |
173497 |
173501 |
173531 |
173539 |
173543 |
173549 |
173561 |
173573 |
173599 |
173617 |
173629 |
173647 |
173651 |
173659 |
173669 |
173671 |
173683 |
173687 |
173699 |
173707 |
173713 |
173729 |
173741 |
173743 |
173773 |
173777 |
173779 |
173783 |
173807 |
173819 |
173827 |
173839 |
173851 |
173861 |
173867 |
173891 |
173897 |
173909 |
173917 |
173923 |
173933 |
173969 |
173977 |
173981 |
173993 |
174007 |
174017 |
174019 |
174047 |
174049 |
174061 |
174067 |
174071 |
174077 |
174079 |
174091 |
174101 |
174121 |
174137 |
174143 |
174149 |
174157 |
174169 |
174197 |
174221 |
174241 |
174257 |
174259 |
174263 |
174281 |
174289 |
174299 |
174311 |
174329 |
174331 |
174337 |
174347 |
174367 |
174389 |
174407 |
174413 |
174431 |
174443 |
174457 |
174467 |
174469 |
174481 |
174487 |
174491 |
174527 |
174533 |
174569 |
174571 |
174583 |
174599 |
174613 |
174617 |
174631 |
174637 |
174649 |
174653 |
174659 |
174673 |
174679 |
174703 |
174721 |
174737 |
174749 |
174761 |
174763 |
174767 |
174773 |
174799 |
174821 |
174829 |
174851 |
174859 |
174877 |
174893 |
174901 |
174907 |
174917 |
174929 |
174931 |
174943 |
174959 |
174989 |
174991 |
175003 |
175013 |
175039 |
175061 |
175067 |
175069 |
175079 |
175081 |
175103 |
175129 |
175141 |
175211 |
175229 |
175261 |
175267 |
175277 |
175291 |
175303 |
175309 |
175327 |
175333 |
175349 |
175361 |
175391 |
175393 |
175403 |
175411 |
175433 |
175447 |
175453 |
175463 |
175481 |
175493 |
175499 |
175519 |
175523 |
175543 |
175573 |
175601 |
175621 |
175631 |
175633 |
175649 |
175663 |
175673 |
175687 |
175691 |
175699 |
175709 |
175723 |
175727 |
175753 |
175757 |
175759 |
175781 |
175783 |
175811 |
175829 |
175837 |
175843 |
175853 |
175859 |
175873 |
175891 |
175897 |
175909 |
175919 |
175937 |
175939 |
175949 |
175961 |
175963 |
175979 |
175991 |
175993 |
176017 |
176021 |
176023 |
176041 |
176047 |
176051 |
176053 |
176063 |
176081 |
176087 |
176089 |
176123 |
176129 |
176153 |
176159 |
176161 |
176179 |
176191 |
176201 |
176207 |
176213 |
176221 |
176227 |
176237 |
176243 |
176261 |
176299 |
176303 |
176317 |
176321 |
176327 |
176329 |
176333 |
176347 |
176353 |
176357 |
176369 |
176383 |
176389 |
176401 |
176413 |
176417 |
176419 |
176431 |
176459 |
176461 |
176467 |
176489 |
176497 |
176503 |
176507 |
176509 |
176521 |
176531 |
176537 |
176549 |
176551 |
176557 |
176573 |
176591 |
176597 |
176599 |
176609 |
176611 |
176629 |
176641 |
176651 |
176677 |
176699 |
176711 |
176713 |
176741 |
176747 |
176753 |
176777 |
176779 |
176789 |
176791 |
176797 |
176807 |
176809 |
176819 |
176849 |
176857 |
176887 |
176899 |
176903 |
176921 |
176923 |
176927 |
176933 |
176951 |
176977 |
176983 |
176989 |
177007 |
177011 |
177013 |
177019 |
177043 |
177091 |
177101 |
177109 |
177113 |
177127 |
177131 |
177167 |
177173 |
177209 |
177211 |
177217 |
177223 |
177239 |
177257 |
177269 |
177283 |
177301 |
177319 |
177323 |
177337 |
177347 |
177379 |
177383 |
177409 |
177421 |
177427 |
177431 |
177433 |
177467 |
177473 |
177481 |
177487 |
177493 |
177511 |
177533 |
177539 |
177553 |
177589 |
177601 |
177623 |
177647 |
177677 |
177679 |
177691 |
177739 |
177743 |
177761 |
177763 |
177787 |
177791 |
177797 |
177811 |
177823 |
177839 |
177841 |
177883 |
177887 |
177889 |
177893 |
177907 |
177913 |
177917 |
177929 |
177943 |
177949 |
177953 |
177967 |
177979 |
178001 |
178021 |
178037 |
178039 |
178067 |
178069 |
178091 |
178093 |
178103 |
178117 |
178127 |
178141 |
178151 |
178169 |
178183 |
178187 |
178207 |
178223 |
178231 |
178247 |
178249 |
178259 |
178261 |
178289 |
178301 |
178307 |
178327 |
178333 |
178349 |
178351 |
178361 |
178393 |
178397 |
178403 |
178417 |
178439 |
178441 |
178447 |
178469 |
178481 |
178487 |
178489 |
178501 |
178513 |
178531 |
178537 |
178559 |
178561 |
178567 |
178571 |
178597 |
178601 |
178603 |
178609 |
178613 |
178621 |
178627 |
178639 |
178643 |
178681 |
178691 |
178693 |
178697 |
178753 |
178757 |
178781 |
178793 |
178799 |
178807 |
178813 |
178817 |
178819 |
178831 |
178853 |
178859 |
178873 |
178877 |
178889 |
178897 |
178903 |
178907 |
178909 |
178921 |
178931 |
178933 |
178939 |
178951 |
178973 |
178987 |
179021 |
179029 |
179033 |
179041 |
179051 |
179057 |
179083 |
179089 |
179099 |
179107 |
179111 |
179119 |
179143 |
179161 |
179167 |
179173 |
179203 |
179209 |
179213 |
179233 |
179243 |
179261 |
179269 |
179281 |
179287 |
179317 |
179321 |
179327 |
179351 |
179357 |
179369 |
179381 |
179383 |
179393 |
179407 |
179411 |
179429 |
179437 |
179441 |
179453 |
179461 |
179471 |
179479 |
179483 |
179497 |
179519 |
179527 |
179533 |
179549 |
179563 |
179573 |
179579 |
179581 |
179591 |
179593 |
179603 |
179623 |
179633 |
179651 |
179657 |
179659 |
179671 |
179687 |
179689 |
179693 |
179717 |
179719 |
179737 |
179743 |
179749 |
179779 |
179801 |
179807 |
179813 |
179819 |
179821 |
179827 |
179833 |
179849 |
179897 |
179899 |
179903 |
179909 |
179917 |
179923 |
179939 |
179947 |
179951 |
179953 |
179957 |
179969 |
179981 |
179989 |
179999 |
180001 |
180007 |
180023 |
180043 |
180053 |
180071 |
180073 |
180077 |
180097 |
180137 |
180161 |
180179 |
180181 |
180211 |
180221 |
180233 |
180239 |
180241 |
180247 |
180259 |
180263 |
180281 |
180287 |
180289 |
180307 |
180311 |
180317 |
180331 |
180337 |
180347 |
180361 |
180371 |
180379 |
180391 |
180413 |
180419 |
180437 |
180463 |
180473 |
180491 |
180497 |
180503 |
180511 |
180533 |
180539 |
180541 |
180547 |
180563 |
180569 |
180617 |
180623 |
180629 |
180647 |
180667 |
180679 |
180701 |
180731 |
180749 |
180751 |
180773 |
180779 |
180793 |
180797 |
180799 |
180811 |
180847 |
180871 |
180883 |
180907 |
180949 |
180959 |
181001 |
181003 |
181019 |
181031 |
181039 |
181061 |
181063 |
181081 |
181087 |
181123 |
181141 |
181157 |
181183 |
181193 |
181199 |
181201 |
181211 |
181213 |
181219 |
181243 |
181253 |
181273 |
181277 |
181283 |
181297 |
181301 |
181303 |
181361 |
181387 |
181397 |
181399 |
181409 |
181421 |
181439 |
181457 |
181459 |
181499 |
181501 |
181513 |
181523 |
181537 |
181549 |
181553 |
181603 |
181607 |
181609 |
181619 |
181639 |
181667 |
181669 |
181693 |
181711 |
181717 |
181721 |
181729 |
181739 |
181751 |
181757 |
181759 |
181763 |
181777 |
181787 |
181789 |
181813 |
181837 |
181871 |
181873 |
181889 |
181891 |
181903 |
181913 |
181919 |
181927 |
181931 |
181943 |
181957 |
181967 |
181981 |
181997 |
182009 |
182011 |
182027 |
182029 |
182041 |
182047 |
182057 |
182059 |
182089 |
182099 |
182101 |
182107 |
182111 |
182123 |
182129 |
182131 |
182141 |
182159 |
182167 |
182177 |
182179 |
182201 |
182209 |
182233 |
182239 |
182243 |
182261 |
182279 |
182297 |
182309 |
182333 |
182339 |
182341 |
182353 |
182387 |
182389 |
182417 |
182423 |
182431 |
182443 |
182453 |
182467 |
182471 |
182473 |
182489 |
182503 |
182509 |
182519 |
182537 |
182549 |
182561 |
182579 |
182587 |
182593 |
182599 |
182603 |
182617 |
182627 |
182639 |
182641 |
182653 |
182657 |
182659 |
182681 |
182687 |
182701 |
182711 |
182713 |
182747 |
182773 |
182779 |
182789 |
182803 |
182813 |
182821 |
182839 |
182851 |
182857 |
182867 |
182887 |
182893 |
182899 |
182921 |
182927 |
182929 |
182933 |
182953 |
182957 |
182969 |
182981 |
182999 |
183023 |
183037 |
183041 |
183047 |
183059 |
183067 |
183089 |
183091 |
183119 |
183151 |
183167 |
183191 |
183203 |
183247 |
183259 |
183263 |
183283 |
183289 |
183299 |
183301 |
183307 |
183317 |
183319 |
183329 |
183343 |
183349 |
183361 |
183373 |
183377 |
183383 |
183389 |
183397 |
183437 |
183439 |
183451 |
183461 |
183473 |
183479 |
183487 |
183497 |
183499 |
183503 |
183509 |
183511 |
183523 |
183527 |
183569 |
183571 |
183577 |
183581 |
183587 |
183593 |
183611 |
183637 |
183661 |
183683 |
183691 |
183697 |
183707 |
183709 |
183713 |
183761 |
183763 |
183797 |
183809 |
183823 |
183829 |
183871 |
183877 |
183881 |
183907 |
183917 |
183919 |
183943 |
183949 |
183959 |
183971 |
183973 |
183979 |
184003 |
184007 |
184013 |
184031 |
184039 |
184043 |
184057 |
184073 |
184081 |
184087 |
184111 |
184117 |
184133 |
184153 |
184157 |
184181 |
184187 |
184189 |
184199 |
184211 |
184231 |
184241 |
184259 |
184271 |
184273 |
184279 |
184291 |
184309 |
184321 |
184333 |
184337 |
184351 |
184369 |
184409 |
184417 |
184441 |
184447 |
184463 |
184477 |
184487 |
184489 |
184511 |
184517 |
184523 |
184553 |
184559 |
184567 |
184571 |
184577 |
184607 |
184609 |
184627 |
184631 |
184633 |
184649 |
184651 |
184669 |
184687 |
184693 |
184703 |
184711 |
184721 |
184727 |
184733 |
184753 |
184777 |
184823 |
184829 |
184831 |
184837 |
184843 |
184859 |
184879 |
184901 |
184903 |
184913 |
184949 |
184957 |
184967 |
184969 |
184993 |
184997 |
184999 |
185021 |
185027 |
185051 |
185057 |
185063 |
185069 |
185071 |
185077 |
185089 |
185099 |
185123 |
185131 |
185137 |
185149 |
185153 |
185161 |
185167 |
185177 |
185183 |
185189 |
185221 |
185233 |
185243 |
185267 |
185291 |
185299 |
185303 |
185309 |
185323 |
185327 |
185359 |
185363 |
185369 |
185371 |
185401 |
185429 |
185441 |
185467 |
185477 |
185483 |
185491 |
185519 |
185527 |
185531 |
185533 |
185539 |
185543 |
185551 |
185557 |
185567 |
185569 |
185593 |
185599 |
185621 |
185641 |
185651 |
185677 |
185681 |
185683 |
185693 |
185699 |
185707 |
185711 |
185723 |
185737 |
185747 |
185749 |
185753 |
185767 |
185789 |
185797 |
185813 |
185819 |
185821 |
185831 |
185833 |
185849 |
185869 |
185873 |
185893 |
185897 |
185903 |
185917 |
185923 |
185947 |
185951 |
185957 |
185959 |
185971 |
185987 |
185993 |
186007 |
186013 |
186019 |
186023 |
186037 |
186041 |
186049 |
186071 |
186097 |
186103 |
186107 |
186113 |
186119 |
186149 |
186157 |
186161 |
186163 |
186187 |
186191 |
186211 |
186227 |
186229 |
186239 |
186247 |
186253 |
186259 |
186271 |
186283 |
186299 |
186301 |
186311 |
186317 |
186343 |
186377 |
186379 |
186391 |
186397 |
186419 |
186437 |
186451 |
186469 |
186479 |
186481 |
186551 |
186569 |
186581 |
186583 |
186587 |
186601 |
186619 |
186629 |
186647 |
186649 |
186653 |
186671 |
186679 |
186689 |
186701 |
186707 |
186709 |
186727 |
186733 |
186743 |
186757 |
186761 |
186763 |
186773 |
186793 |
186799 |
186841 |
186859 |
186869 |
186871 |
186877 |
186883 |
186889 |
186917 |
186947 |
186959 |
187003 |
187009 |
187027 |
187043 |
187049 |
187067 |
187069 |
187073 |
187081 |
187091 |
187111 |
187123 |
187127 |
187129 |
187133 |
187139 |
187141 |
187163 |
187171 |
187177 |
187181 |
187189 |
187193 |
187211 |
187217 |
187219 |
187223 |
187237 |
187273 |
187277 |
187303 |
187337 |
187339 |
187349 |
187361 |
187367 |
187373 |
187379 |
187387 |
187393 |
187409 |
187417 |
187423 |
187433 |
187441 |
187463 |
187469 |
187471 |
187477 |
187507 |
187513 |
187531 |
187547 |
187559 |
187573 |
187597 |
187631 |
187633 |
187637 |
187639 |
187651 |
187661 |
187669 |
187687 |
187699 |
187711 |
187721 |
187751 |
187763 |
187787 |
187793 |
187823 |
187843 |
187861 |
187871 |
187877 |
187883 |
187897 |
187907 |
187909 |
187921 |
187927 |
187931 |
187951 |
187963 |
187973 |
187987 |
188011 |
188017 |
188021 |
188029 |
188107 |
188137 |
188143 |
188147 |
188159 |
188171 |
188179 |
188189 |
188197 |
188249 |
188261 |
188273 |
188281 |
188291 |
188299 |
188303 |
188311 |
188317 |
188323 |
188333 |
188351 |
188359 |
188369 |
188389 |
188401 |
188407 |
188417 |
188431 |
188437 |
188443 |
188459 |
188473 |
188483 |
188491 |
188519 |
188527 |
188533 |
188563 |
188579 |
188603 |
188609 |
188621 |
188633 |
188653 |
188677 |
188681 |
188687 |
188693 |
188701 |
188707 |
188711 |
188719 |
188729 |
188753 |
188767 |
188779 |
188791 |
188801 |
188827 |
188831 |
188833 |
188843 |
188857 |
188861 |
188863 |
188869 |
188891 |
188911 |
188927 |
188933 |
188939 |
188941 |
188953 |
188957 |
188983 |
188999 |
189011 |
189017 |
189019 |
189041 |
189043 |
189061 |
189067 |
189127 |
189139 |
189149 |
189151 |
189169 |
189187 |
189199 |
189223 |
189229 |
189239 |
189251 |
189253 |
189257 |
189271 |
189307 |
189311 |
189337 |
189347 |
189349 |
189353 |
189361 |
189377 |
189389 |
189391 |
189401 |
189407 |
189421 |
189433 |
189437 |
189439 |
189463 |
189467 |
189473 |
189479 |
189491 |
189493 |
189509 |
189517 |
189523 |
189529 |
189547 |
189559 |
189583 |
189593 |
189599 |
189613 |
189617 |
189619 |
189643 |
189653 |
189661 |
189671 |
189691 |
189697 |
189701 |
189713 |
189733 |
189743 |
189757 |
189767 |
189797 |
189799 |
189817 |
189823 |
189851 |
189853 |
189859 |
189877 |
189881 |
189887 |
189901 |
189913 |
189929 |
189947 |
189949 |
189961 |
189967 |
189977 |
189983 |
189989 |
189997 |
190027 |
190031 |
190051 |
190063 |
190093 |
190097 |
190121 |
190129 |
190147 |
190159 |
190181 |
190207 |
190243 |
190249 |
190261 |
190271 |
190283 |
190297 |
190301 |
190313 |
190321 |
190331 |
190339 |
190357 |
190367 |
190369 |
190387 |
190391 |
190403 |
190409 |
190471 |
190507 |
190523 |
190529 |
190537 |
190543 |
190573 |
190577 |
190579 |
190583 |
190591 |
190607 |
190613 |
190633 |
190639 |
190649 |
190657 |
190667 |
190669 |
190699 |
190709 |
190711 |
190717 |
190753 |
190759 |
190763 |
190769 |
190783 |
190787 |
190793 |
190807 |
190811 |
190823 |
190829 |
190837 |
190843 |
190871 |
190889 |
190891 |
190901 |
190909 |
190913 |
190921 |
190979 |
190997 |
191021 |
191027 |
191033 |
191039 |
191047 |
191057 |
191071 |
191089 |
191099 |
191119 |
191123 |
191137 |
191141 |
191143 |
191161 |
191173 |
191189 |
191227 |
191231 |
191237 |
191249 |
191251 |
191281 |
191297 |
191299 |
191339 |
191341 |
191353 |
191413 |
191441 |
191447 |
191449 |
191453 |
191459 |
191461 |
191467 |
191473 |
191491 |
191497 |
191507 |
191509 |
191519 |
191531 |
191533 |
191537 |
191551 |
191561 |
191563 |
191579 |
191599 |
191621 |
191627 |
191657 |
191669 |
191671 |
191677 |
191689 |
191693 |
191699 |
191707 |
191717 |
191747 |
191749 |
191773 |
191783 |
191791 |
191801 |
191803 |
191827 |
191831 |
191833 |
191837 |
191861 |
191899 |
191903 |
191911 |
191929 |
191953 |
191969 |
191977 |
191999 |
192007 |
192013 |
192029 |
192037 |
192043 |
192047 |
192053 |
192091 |
192097 |
192103 |
192113 |
192121 |
192133 |
192149 |
192161 |
192173 |
192187 |
192191 |
192193 |
192229 |
192233 |
192239 |
192251 |
192259 |
192263 |
192271 |
192307 |
192317 |
192319 |
192323 |
192341 |
192343 |
192347 |
192373 |
192377 |
192383 |
192391 |
192407 |
192431 |
192461 |
192463 |
192497 |
192499 |
192529 |
192539 |
192547 |
192553 |
192557 |
192571 |
192581 |
192583 |
192587 |
192601 |
192611 |
192613 |
192617 |
192629 |
192631 |
192637 |
192667 |
192677 |
192697 |
192737 |
192743 |
192749 |
192757 |
192767 |
192781 |
192791 |
192799 |
192811 |
192817 |
192833 |
192847 |
192853 |
192859 |
192877 |
192883 |
192887 |
192889 |
192917 |
192923 |
192931 |
192949 |
192961 |
192971 |
192977 |
192979 |
192991 |
193003 |
193009 |
193013 |
193031 |
193043 |
193051 |
193057 |
193073 |
193093 |
193133 |
193139 |
193147 |
193153 |
193163 |
193181 |
193183 |
193189 |
193201 |
193243 |
193247 |
193261 |
193283 |
193301 |
193327 |
193337 |
193357 |
193367 |
193373 |
193379 |
193381 |
193387 |
193393 |
193423 |
193433 |
193441 |
193447 |
193451 |
193463 |
193469 |
193493 |
193507 |
193513 |
193541 |
193549 |
193559 |
193573 |
193577 |
193597 |
193601 |
193603 |
193607 |
193619 |
193649 |
193663 |
193679 |
193703 |
193723 |
193727 |
193741 |
193751 |
193757 |
193763 |
193771 |
193789 |
193793 |
193799 |
193811 |
193813 |
193841 |
193847 |
193859 |
193861 |
193871 |
193873 |
193877 |
193883 |
193891 |
193937 |
193939 |
193943 |
193951 |
193957 |
193979 |
193993 |
194003 |
194017 |
194027 |
194057 |
194069 |
194071 |
194083 |
194087 |
194093 |
194101 |
194113 |
194119 |
194141 |
194149 |
194167 |
194179 |
194197 |
194203 |
194239 |
194263 |
194267 |
194269 |
194309 |
194323 |
194353 |
194371 |
194377 |
194413 |
194431 |
194443 |
194471 |
194479 |
194483 |
194507 |
194521 |
194527 |
194543 |
194569 |
194581 |
194591 |
194609 |
194647 |
194653 |
194659 |
194671 |
194681 |
194683 |
194687 |
194707 |
194713 |
194717 |
194723 |
194729 |
194749 |
194767 |
194771 |
194809 |
194813 |
194819 |
194827 |
194839 |
194861 |
194863 |
194867 |
194869 |
194891 |
194899 |
194911 |
194917 |
194933 |
194963 |
194977 |
194981 |
194989 |
195023 |
195029 |
195043 |
195047 |
195049 |
195053 |
195071 |
195077 |
195089 |
195103 |
195121 |
195127 |
195131 |
195137 |
195157 |
195161 |
195163 |
195193 |
195197 |
195203 |
195229 |
195241 |
195253 |
195259 |
195271 |
195277 |
195281 |
195311 |
195319 |
195329 |
195341 |
195343 |
195353 |
195359 |
195389 |
195401 |
195407 |
195413 |
195427 |
195443 |
195457 |
195469 |
195479 |
195493 |
195497 |
195511 |
195527 |
195539 |
195541 |
195581 |
195593 |
195599 |
195659 |
195677 |
195691 |
195697 |
195709 |
195731 |
195733 |
195737 |
195739 |
195743 |
195751 |
195761 |
195781 |
195787 |
195791 |
195809 |
195817 |
195863 |
195869 |
195883 |
195887 |
195893 |
195907 |
195913 |
195919 |
195929 |
195931 |
195967 |
195971 |
195973 |
195977 |
195991 |
195997 |
196003 |
196033 |
196039 |
196043 |
196051 |
196073 |
196081 |
196087 |
196111 |
196117 |
196139 |
196159 |
196169 |
196171 |
196177 |
196181 |
196187 |
196193 |
196201 |
196247 |
196271 |
196277 |
196279 |
196291 |
196303 |
196307 |
196331 |
196337 |
196379 |
196387 |
196429 |
196439 |
196453 |
196459 |
196477 |
196499 |
196501 |
196519 |
196523 |
196541 |
196543 |
196549 |
196561 |
196579 |
196583 |
196597 |
196613 |
196643 |
196657 |
196661 |
196663 |
196681 |
196687 |
196699 |
196709 |
196717 |
196727 |
196739 |
196751 |
196769 |
196771 |
196799 |
196817 |
196831 |
196837 |
196853 |
196871 |
196873 |
196879 |
196901 |
196907 |
196919 |
196927 |
196961 |
196991 |
196993 |
197003 |
197009 |
197023 |
197033 |
197059 |
197063 |
197077 |
197083 |
197089 |
197101 |
197117 |
197123 |
197137 |
197147 |
197159 |
197161 |
197203 |
197207 |
197221 |
197233 |
197243 |
197257 |
197261 |
197269 |
197273 |
197279 |
197293 |
197297 |
197299 |
197311 |
197339 |
197341 |
197347 |
197359 |
197369 |
197371 |
197381 |
197383 |
197389 |
197419 |
197423 |
197441 |
197453 |
197479 |
197507 |
197521 |
197539 |
197551 |
197567 |
197569 |
197573 |
197597 |
197599 |
197609 |
197621 |
197641 |
197647 |
197651 |
197677 |
197683 |
197689 |
197699 |
197711 |
197713 |
197741 |
197753 |
197759 |
197767 |
197773 |
197779 |
197803 |
197807 |
197831 |
197837 |
197887 |
197891 |
197893 |
197909 |
197921 |
197927 |
197933 |
197947 |
197957 |
197959 |
197963 |
197969 |
197971 |
198013 |
198017 |
198031 |
198043 |
198047 |
198073 |
198083 |
198091 |
198097 |
198109 |
198127 |
198139 |
198173 |
198179 |
198193 |
198197 |
198221 |
198223 |
198241 |
198251 |
198257 |
198259 |
198277 |
198281 |
198301 |
198313 |
198323 |
198337 |
198347 |
198349 |
198377 |
198391 |
198397 |
198409 |
198413 |
198427 |
198437 |
198439 |
198461 |
198463 |
198469 |
198479 |
198491 |
198503 |
198529 |
198533 |
198553 |
198571 |
198589 |
198593 |
198599 |
198613 |
198623 |
198637 |
198641 |
198647 |
198659 |
198673 |
198689 |
198701 |
198719 |
198733 |
198761 |
198769 |
198811 |
198817 |
198823 |
198827 |
198829 |
198833 |
198839 |
198841 |
198851 |
198859 |
198899 |
198901 |
198929 |
198937 |
198941 |
198943 |
198953 |
198959 |
198967 |
198971 |
198977 |
198997 |
199021 |
199033 |
199037 |
199039 |
199049 |
199081 |
199103 |
199109 |
199151 |
199153 |
199181 |
199193 |
199207 |
199211 |
199247 |
199261 |
199267 |
199289 |
199313 |
199321 |
199337 |
199343 |
199357 |
199373 |
199379 |
199399 |
199403 |
199411 |
199417 |
199429 |
199447 |
199453 |
199457 |
199483 |
199487 |
199489 |
199499 |
199501 |
199523 |
199559 |
199567 |
199583 |
199601 |
199603 |
199621 |
199637 |
199657 |
199669 |
199673 |
199679 |
199687 |
199697 |
199721 |
199729 |
199739 |
199741 |
199751 |
199753 |
199777 |
199783 |
199799 |
199807 |
199811 |
199813 |
199819 |
199831 |
199853 |
199873 |
199877 |
199889 |
199909 |
199921 |
199931 |
199933 |
199961 |
199967 |
199999 |
200003 |
200009 |
200017 |
200023 |
200029 |
200033 |
200041 |
200063 |
200087 |
200117 |
200131 |
200153 |
200159 |
200171 |
200177 |
200183 |
200191 |
200201 |
200227 |
200231 |
200237 |
200257 |
200273 |
200293 |
200297 |
200323 |
200329 |
200341 |
200351 |
200357 |
200363 |
200371 |
200381 |
200383 |
200401 |
200407 |
200437 |
200443 |
200461 |
200467 |
200483 |
200513 |
200569 |
200573 |
200579 |
200587 |
200591 |
200597 |
200609 |
200639 |
200657 |
200671 |
200689 |
200699 |
200713 |
200723 |
200731 |
200771 |
200779 |
200789 |
200797 |
200807 |
200843 |
200861 |
200867 |
200869 |
200881 |
200891 |
200899 |
200903 |
200909 |
200927 |
200929 |
200971 |
200983 |
200987 |
200989 |
201007 |
201011 |
201031 |
201037 |
201049 |
201073 |
201101 |
201107 |
201119 |
201121 |
201139 |
201151 |
201163 |
201167 |
201193 |
201203 |
201209 |
201211 |
201233 |
201247 |
201251 |
201281 |
201287 |
201307 |
201329 |
201337 |
201359 |
201389 |
201401 |
201403 |
201413 |
201437 |
201449 |
201451 |
201473 |
201491 |
201493 |
201497 |
201499 |
201511 |
201517 |
201547 |
201557 |
201577 |
201581 |
201589 |
201599 |
201611 |
201623 |
201629 |
201653 |
201661 |
201667 |
201673 |
201683 |
201701 |
201709 |
201731 |
201743 |
201757 |
201767 |
201769 |
201781 |
201787 |
201791 |
201797 |
201809 |
201821 |
201823 |
201827 |
201829 |
201833 |
201847 |
201881 |
201889 |
201893 |
201907 |
201911 |
201919 |
201923 |
201937 |
201947 |
201953 |
201961 |
201973 |
201979 |
201997 |
202001 |
202021 |
202031 |
202049 |
202061 |
202063 |
202067 |
202087 |
202099 |
202109 |
202121 |
202127 |
202129 |
202183 |
202187 |
202201 |
202219 |
202231 |
202243 |
202277 |
202289 |
202291 |
202309 |
202327 |
202339 |
202343 |
202357 |
202361 |
202381 |
202387 |
202393 |
202403 |
202409 |
202441 |
202471 |
202481 |
202493 |
202519 |
202529 |
202549 |
202567 |
202577 |
202591 |
202613 |
202621 |
202627 |
202637 |
202639 |
202661 |
202667 |
202679 |
202693 |
202717 |
202729 |
202733 |
202747 |
202751 |
202753 |
202757 |
202777 |
202799 |
202817 |
202823 |
202841 |
202859 |
202877 |
202879 |
202889 |
202907 |
202921 |
202931 |
202933 |
202949 |
202967 |
202973 |
202981 |
202987 |
202999 |
203011 |
203017 |
203023 |
203039 |
203051 |
203057 |
203117 |
203141 |
203173 |
203183 |
203207 |
203209 |
203213 |
203221 |
203227 |
203233 |
203249 |
203279 |
203293 |
203309 |
203311 |
203317 |
203321 |
203323 |
203339 |
203341 |
203351 |
203353 |
203363 |
203381 |
203383 |
203387 |
203393 |
203417 |
203419 |
203429 |
203431 |
203449 |
203459 |
203461 |
203531 |
203549 |
203563 |
203569 |
203579 |
203591 |
203617 |
203627 |
203641 |
203653 |
203657 |
203659 |
203663 |
203669 |
203713 |
203761 |
203767 |
203771 |
203773 |
203789 |
203807 |
203809 |
203821 |
203843 |
203857 |
203869 |
203873 |
203897 |
203909 |
203911 |
203921 |
203947 |
203953 |
203969 |
203971 |
203977 |
203989 |
203999 |
204007 |
204013 |
204019 |
204023 |
204047 |
204059 |
204067 |
204101 |
204107 |
204133 |
204137 |
204143 |
204151 |
204161 |
204163 |
204173 |
204233 |
204251 |
204299 |
204301 |
204311 |
204319 |
204329 |
204331 |
204353 |
204359 |
204361 |
204367 |
204371 |
204377 |
204397 |
204427 |
204431 |
204437 |
204439 |
204443 |
204461 |
204481 |
204487 |
204509 |
204511 |
204517 |
204521 |
204557 |
204563 |
204583 |
204587 |
204599 |
204601 |
204613 |
204623 |
204641 |
204667 |
204679 |
204707 |
204719 |
204733 |
204749 |
204751 |
204781 |
204791 |
204793 |
204797 |
204803 |
204821 |
204857 |
204859 |
204871 |
204887 |
204913 |
204917 |
204923 |
204931 |
204947 |
204973 |
204979 |
204983 |
205019 |
205031 |
205033 |
205043 |
205063 |
205069 |
205081 |
205097 |
205103 |
205111 |
205129 |
205133 |
205141 |
205151 |
205157 |
205171 |
205187 |
205201 |
205211 |
205213 |
205223 |
205237 |
205253 |
205267 |
205297 |
205307 |
205319 |
205327 |
205339 |
205357 |
205391 |
205397 |
205399 |
205417 |
205421 |
205423 |
205427 |
205433 |
205441 |
205453 |
205463 |
205477 |
205483 |
205487 |
205493 |
205507 |
205519 |
205529 |
205537 |
205549 |
205553 |
205559 |
205589 |
205603 |
205607 |
205619 |
205627 |
205633 |
205651 |
205657 |
205661 |
205663 |
205703 |
205721 |
205759 |
205763 |
205783 |
205817 |
205823 |
205837 |
205847 |
205879 |
205883 |
205913 |
205937 |
205949 |
205951 |
205957 |
205963 |
205967 |
205981 |
205991 |
205993 |
206009 |
206021 |
206027 |
206033 |
206039 |
206047 |
206051 |
206069 |
206077 |
206081 |
206083 |
206123 |
206153 |
206177 |
206179 |
206183 |
206191 |
206197 |
206203 |
206209 |
206221 |
206233 |
206237 |
206249 |
206251 |
206263 |
206273 |
206279 |
206281 |
206291 |
206299 |
206303 |
206341 |
206347 |
206351 |
206369 |
206383 |
206399 |
206407 |
206411 |
206413 |
206419 |
206447 |
206461 |
206467 |
206477 |
206483 |
206489 |
206501 |
206519 |
206527 |
206543 |
206551 |
206593 |
206597 |
206603 |
206623 |
206627 |
206639 |
206641 |
206651 |
206699 |
206749 |
206779 |
206783 |
206803 |
206807 |
206813 |
206819 |
206821 |
206827 |
206879 |
206887 |
206897 |
206909 |
206911 |
206917 |
206923 |
206933 |
206939 |
206951 |
206953 |
206993 |
207013 |
207017 |
207029 |
207037 |
207041 |
207061 |
207073 |
207079 |
207113 |
207121 |
207127 |
207139 |
207169 |
207187 |
207191 |
207197 |
207199 |
207227 |
207239 |
207241 |
207257 |
207269 |
207287 |
207293 |
207301 |
207307 |
207329 |
207331 |
207341 |
207343 |
207367 |
207371 |
207377 |
207401 |
207409 |
207433 |
207443 |
207457 |
207463 |
207469 |
207479 |
207481 |
207491 |
207497 |
207509 |
207511 |
207517 |
207521 |
207523 |
207541 |
207547 |
207551 |
207563 |
207569 |
207589 |
207593 |
207619 |
207629 |
207643 |
207653 |
207661 |
207671 |
207673 |
207679 |
207709 |
207719 |
207721 |
207743 |
207763 |
207769 |
207797 |
207799 |
207811 |
207821 |
207833 |
207847 |
207869 |
207877 |
207923 |
207931 |
207941 |
207947 |
207953 |
207967 |
207971 |
207973 |
207997 |
208001 |
208003 |
208009 |
208037 |
208049 |
208057 |
208067 |
208073 |
208099 |
208111 |
208121 |
208129 |
208139 |
208141 |
208147 |
208189 |
208207 |
208213 |
208217 |
208223 |
208231 |
208253 |
208261 |
208277 |
208279 |
208283 |
208291 |
208309 |
208319 |
208333 |
208337 |
208367 |
208379 |
208387 |
208391 |
208393 |
208409 |
208433 |
208441 |
208457 |
208459 |
208463 |
208469 |
208489 |
208493 |
208499 |
208501 |
208511 |
208513 |
208519 |
208529 |
208553 |
208577 |
208589 |
208591 |
208609 |
208627 |
208631 |
208657 |
208667 |
208673 |
208687 |
208697 |
208699 |
208721 |
208729 |
208739 |
208759 |
208787 |
208799 |
208807 |
208837 |
208843 |
208877 |
208889 |
208891 |
208907 |
208927 |
208931 |
208933 |
208961 |
208963 |
208991 |
208993 |
208997 |
209021 |
209029 |
209039 |
209063 |
209071 |
209089 |
209123 |
209147 |
209159 |
209173 |
209179 |
209189 |
209201 |
209203 |
209213 |
209221 |
209227 |
209233 |
209249 |
209257 |
209263 |
209267 |
209269 |
209299 |
209311 |
209317 |
209327 |
209333 |
209347 |
209353 |
209357 |
209359 |
209371 |
209381 |
209393 |
209401 |
209431 |
209441 |
209449 |
209459 |
209471 |
209477 |
209497 |
209519 |
209533 |
209543 |
209549 |
209563 |
209567 |
209569 |
209579 |
209581 |
209597 |
209621 |
209623 |
209639 |
209647 |
209659 |
209669 |
209687 |
209701 |
209707 |
209717 |
209719 |
209743 |
209767 |
209771 |
209789 |
209801 |
209809 |
209813 |
209819 |
209821 |
209837 |
209851 |
209857 |
209861 |
209887 |
209917 |
209927 |
209929 |
209939 |
209953 |
209959 |
209971 |
209977 |
209983 |
209987 |
210011 |
210019 |
210031 |
210037 |
210053 |
210071 |
210097 |
210101 |
210109 |
210113 |
210127 |
210131 |
210139 |
210143 |
210157 |
210169 |
210173 |
210187 |
210191 |
210193 |
210209 |
210229 |
210233 |
210241 |
210247 |
210257 |
210263 |
210277 |
210283 |
210299 |
210317 |
210319 |
210323 |
210347 |
210359 |
210361 |
210391 |
210401 |
210403 |
210407 |
210421 |
210437 |
210461 |
210467 |
210481 |
210487 |
210491 |
210499 |
210523 |
210527 |
210533 |
210557 |
210599 |
210601 |
210619 |
210631 |
210643 |
210659 |
210671 |
210709 |
210713 |
210719 |
210731 |
210739 |
210761 |
210773 |
210803 |
210809 |
210811 |
210823 |
210827 |
210839 |
210853 |
210857 |
210869 |
210901 |
210907 |
210911 |
210913 |
210923 |
210929 |
210943 |
210961 |
210967 |
211007 |
211039 |
211049 |
211051 |
211061 |
211063 |
211067 |
211073 |
211093 |
211097 |
211129 |
211151 |
211153 |
211177 |
211187 |
211193 |
211199 |
211213 |
211217 |
211219 |
211229 |
211231 |
211241 |
211247 |
211271 |
211283 |
211291 |
211297 |
211313 |
211319 |
211333 |
211339 |
211349 |
211369 |
211373 |
211403 |
211427 |
211433 |
211441 |
211457 |
211469 |
211493 |
211499 |
211501 |
211507 |
211543 |
211559 |
211571 |
211573 |
211583 |
211597 |
211619 |
211639 |
211643 |
211657 |
211661 |
211663 |
211681 |
211691 |
211693 |
211711 |
211723 |
211727 |
211741 |
211747 |
211777 |
211781 |
211789 |
211801 |
211811 |
211817 |
211859 |
211867 |
211873 |
211877 |
211879 |
211889 |
211891 |
211927 |
211931 |
211933 |
211943 |
211949 |
211969 |
211979 |
211997 |
212029 |
212039 |
212057 |
212081 |
212099 |
212117 |
212123 |
212131 |
212141 |
212161 |
212167 |
212183 |
212203 |
212207 |
212209 |
212227 |
212239 |
212243 |
212281 |
212293 |
212297 |
212353 |
212369 |
212383 |
212411 |
212419 |
212423 |
212437 |
212447 |
212453 |
212461 |
212467 |
212479 |
212501 |
212507 |
212557 |
212561 |
212573 |
212579 |
212587 |
212593 |
212627 |
212633 |
212651 |
212669 |
212671 |
212677 |
212683 |
212701 |
212777 |
212791 |
212801 |
212827 |
212837 |
212843 |
212851 |
212867 |
212869 |
212873 |
212881 |
212897 |
212903 |
212909 |
212917 |
212923 |
212969 |
212981 |
212987 |
212999 |
213019 |
213023 |
213029 |
213043 |
213067 |
213079 |
213091 |
213097 |
213119 |
213131 |
213133 |
213139 |
213149 |
213173 |
213181 |
213193 |
213203 |
213209 |
213217 |
213223 |
213229 |
213247 |
213253 |
213263 |
213281 |
213287 |
213289 |
213307 |
213319 |
213329 |
213337 |
213349 |
213359 |
213361 |
213383 |
213391 |
213397 |
213407 |
213449 |
213461 |
213467 |
213481 |
213491 |
213523 |
213533 |
213539 |
213553 |
213557 |
213589 |
213599 |
213611 |
213613 |
213623 |
213637 |
213641 |
213649 |
213659 |
213713 |
213721 |
213727 |
213737 |
213751 |
213791 |
213799 |
213821 |
213827 |
213833 |
213847 |
213859 |
213881 |
213887 |
213901 |
213919 |
213929 |
213943 |
213947 |
213949 |
213953 |
213973 |
213977 |
213989 |
214003 |
214007 |
214009 |
214021 |
214031 |
214033 |
214043 |
214051 |
214063 |
214069 |
214087 |
214091 |
214129 |
214133 |
214141 |
214147 |
214163 |
214177 |
214189 |
214211 |
214213 |
214219 |
214237 |
214243 |
214259 |
214283 |
214297 |
214309 |
214351 |
214363 |
214373 |
214381 |
214391 |
214399 |
214433 |
214439 |
214451 |
214457 |
214463 |
214469 |
214481 |
214483 |
214499 |
214507 |
214517 |
214519 |
214531 |
214541 |
214559 |
214561 |
214589 |
214603 |
214607 |
214631 |
214639 |
214651 |
214657 |
214663 |
214667 |
214673 |
214691 |
214723 |
214729 |
214733 |
214741 |
214759 |
214763 |
214771 |
214783 |
214787 |
214789 |
214807 |
214811 |
214817 |
214831 |
214849 |
214853 |
214867 |
214883 |
214891 |
214913 |
214939 |
214943 |
214967 |
214987 |
214993 |
215051 |
215063 |
215077 |
215087 |
215123 |
215141 |
215143 |
215153 |
215161 |
215179 |
215183 |
215191 |
215197 |
215239 |
215249 |
215261 |
215273 |
215279 |
215297 |
215309 |
215317 |
215329 |
215351 |
215353 |
215359 |
215381 |
215389 |
215393 |
215399 |
215417 |
215443 |
215447 |
215459 |
215461 |
215471 |
215483 |
215497 |
215503 |
215507 |
215521 |
215531 |
215563 |
215573 |
215587 |
215617 |
215653 |
215659 |
215681 |
215687 |
215689 |
215693 |
215723 |
215737 |
215753 |
215767 |
215771 |
215797 |
215801 |
215827 |
215833 |
215843 |
215851 |
215857 |
215863 |
215893 |
215899 |
215909 |
215921 |
215927 |
215939 |
215953 |
215959 |
215981 |
215983 |
216023 |
216037 |
216061 |
216071 |
216091 |
216103 |
216107 |
216113 |
216119 |
216127 |
216133 |
216149 |
216157 |
216173 |
216179 |
216211 |
216217 |
216233 |
216259 |
216263 |
216289 |
216317 |
216319 |
216329 |
216347 |
216371 |
216373 |
216379 |
216397 |
216401 |
216421 |
216431 |
216451 |
216481 |
216493 |
216509 |
216523 |
216551 |
216553 |
216569 |
216571 |
216577 |
216607 |
216617 |
216641 |
216647 |
216649 |
216653 |
216661 |
216679 |
216703 |
216719 |
216731 |
216743 |
216751 |
216757 |
216761 |
216779 |
216781 |
216787 |
216791 |
216803 |
216829 |
216841 |
216851 |
216859 |
216877 |
216899 |
216901 |
216911 |
216917 |
216919 |
216947 |
216967 |
216973 |
216991 |
217001 |
217003 |
217027 |
217033 |
217057 |
217069 |
217081 |
217111 |
217117 |
217121 |
217157 |
217163 |
217169 |
217199 |
217201 |
217207 |
217219 |
217223 |
217229 |
217241 |
217253 |
217271 |
217307 |
217309 |
217313 |
217319 |
217333 |
217337 |
217339 |
217351 |
217361 |
217363 |
217367 |
217369 |
217387 |
217397 |
217409 |
217411 |
217421 |
217429 |
217439 |
217457 |
217463 |
217489 |
217499 |
217517 |
217519 |
217559 |
217561 |
217573 |
217577 |
217579 |
217619 |
217643 |
217661 |
217667 |
217681 |
217687 |
217691 |
217697 |
217717 |
217727 |
217733 |
217739 |
217747 |
217771 |
217781 |
217793 |
217823 |
217829 |
217849 |
217859 |
217901 |
217907 |
217909 |
217933 |
217937 |
217969 |
217979 |
217981 |
218003 |
218021 |
218047 |
218069 |
218077 |
218081 |
218083 |
218087 |
218107 |
218111 |
218117 |
218131 |
218137 |
218143 |
218149 |
218171 |
218191 |
218213 |
218227 |
218233 |
218249 |
218279 |
218287 |
218357 |
218363 |
218371 |
218381 |
218389 |
218401 |
218417 |
218419 |
218423 |
218437 |
218447 |
218453 |
218459 |
218461 |
218479 |
218509 |
218513 |
218521 |
218527 |
218531 |
218549 |
218551 |
218579 |
218591 |
218599 |
218611 |
218623 |
218627 |
218629 |
218641 |
218651 |
218657 |
218677 |
218681 |
218711 |
218717 |
218719 |
218723 |
218737 |
218749 |
218761 |
218783 |
218797 |
218809 |
218819 |
218833 |
218839 |
218843 |
218849 |
218857 |
218873 |
218887 |
218923 |
218941 |
218947 |
218963 |
218969 |
218971 |
218987 |
218989 |
218993 |
219001 |
219017 |
219019 |
219031 |
219041 |
219053 |
219059 |
219071 |
219083 |
219091 |
219097 |
219103 |
219119 |
219133 |
219143 |
219169 |
219187 |
219217 |
219223 |
219251 |
219277 |
219281 |
219293 |
219301 |
219311 |
219313 |
219353 |
219361 |
219371 |
219377 |
219389 |
219407 |
219409 |
219433 |
219437 |
219451 |
219463 |
219467 |
219491 |
219503 |
219517 |
219523 |
219529 |
219533 |
219547 |
219577 |
219587 |
219599 |
219607 |
219613 |
219619 |
219629 |
219647 |
219649 |
219677 |
219679 |
219683 |
219689 |
219707 |
219721 |
219727 |
219731 |
219749 |
219757 |
219761 |
219763 |
219767 |
219787 |
219797 |
219799 |
219809 |
219823 |
219829 |
219839 |
219847 |
219851 |
219871 |
219881 |
219889 |
219911 |
219917 |
219931 |
219937 |
219941 |
219943 |
219953 |
219959 |
219971 |
219977 |
219979 |
219983 |
220009 |
220013 |
220019 |
220021 |
220057 |
220063 |
220123 |
220141 |
220147 |
220151 |
220163 |
220169 |
220177 |
220189 |
220217 |
220243 |
220279 |
220291 |
220301 |
220307 |
220327 |
220333 |
220351 |
220357 |
220361 |
220369 |
220373 |
220391 |
220399 |
220403 |
220411 |
220421 |
220447 |
220469 |
220471 |
220511 |
220513 |
220529 |
220537 |
220543 |
220553 |
220559 |
220573 |
220579 |
220589 |
220613 |
220663 |
220667 |
220673 |
220681 |
220687 |
220699 |
220709 |
220721 |
220747 |
220757 |
220771 |
220783 |
220789 |
220793 |
220807 |
220811 |
220841 |
220859 |
220861 |
220873 |
220877 |
220879 |
220889 |
220897 |
220901 |
220903 |
220907 |
220919 |
220931 |
220933 |
220939 |
220973 |
221021 |
221047 |
221059 |
221069 |
221071 |
221077 |
221083 |
221087 |
221093 |
221101 |
221159 |
221171 |
221173 |
221197 |
221201 |
221203 |
221209 |
221219 |
221227 |
221233 |
221239 |
221251 |
221261 |
221281 |
221303 |
221311 |
221317 |
221327 |
221393 |
221399 |
221401 |
221411 |
221413 |
221447 |
221453 |
221461 |
221471 |
221477 |
221489 |
221497 |
221509 |
221537 |
221539 |
221549 |
221567 |
221581 |
221587 |
221603 |
221621 |
221623 |
221653 |
221657 |
221659 |
221671 |
221677 |
221707 |
221713 |
221717 |
221719 |
221723 |
221729 |
221737 |
221747 |
221773 |
221797 |
221807 |
221813 |
221827 |
221831 |
221849 |
221873 |
221891 |
221909 |
221941 |
221951 |
221953 |
221957 |
221987 |
221989 |
221999 |
222007 |
222011 |
222023 |
222029 |
222041 |
222043 |
222059 |
222067 |
222073 |
222107 |
222109 |
222113 |
222127 |
222137 |
222149 |
222151 |
222161 |
222163 |
222193 |
222197 |
222199 |
222247 |
222269 |
222289 |
222293 |
222311 |
222317 |
222323 |
222329 |
222337 |
222347 |
222349 |
222361 |
222367 |
222379 |
222389 |
222403 |
222419 |
222437 |
222461 |
222493 |
222499 |
222511 |
222527 |
222533 |
222553 |
222557 |
222587 |
222601 |
222613 |
222619 |
222643 |
222647 |
222659 |
222679 |
222707 |
222713 |
222731 |
222773 |
222779 |
222787 |
222791 |
222793 |
222799 |
222823 |
222839 |
222841 |
222857 |
222863 |
222877 |
222883 |
222913 |
222919 |
222931 |
222941 |
222947 |
222953 |
222967 |
222977 |
222979 |
222991 |
223007 |
223009 |
223019 |
223037 |
223049 |
223051 |
223061 |
223063 |
223087 |
223099 |
223103 |
223129 |
223133 |
223151 |
223207 |
223211 |
223217 |
223219 |
223229 |
223241 |
223243 |
223247 |
223253 |
223259 |
223273 |
223277 |
223283 |
223291 |
223303 |
223313 |
223319 |
223331 |
223337 |
223339 |
223361 |
223367 |
223381 |
223403 |
223423 |
223429 |
223439 |
223441 |
223463 |
223469 |
223481 |
223493 |
223507 |
223529 |
223543 |
223547 |
223549 |
223577 |
223589 |
223621 |
223633 |
223637 |
223667 |
223679 |
223681 |
223697 |
223711 |
223747 |
223753 |
223757 |
223759 |
223781 |
223823 |
223829 |
223831 |
223837 |
223841 |
223843 |
223849 |
223903 |
223919 |
223921 |
223939 |
223963 |
223969 |
223999 |
224011 |
224027 |
224033 |
224041 |
224047 |
224057 |
224069 |
224071 |
224101 |
224113 |
224129 |
224131 |
224149 |
224153 |
224171 |
224177 |
224197 |
224201 |
224209 |
224221 |
224233 |
224239 |
224251 |
224261 |
224267 |
224291 |
224299 |
224303 |
224309 |
224317 |
224327 |
224351 |
224359 |
224363 |
224401 |
224423 |
224429 |
224443 |
224449 |
224461 |
224467 |
224473 |
224491 |
224501 |
224513 |
224527 |
224563 |
224569 |
224579 |
224591 |
224603 |
224611 |
224617 |
224629 |
224633 |
224669 |
224677 |
224683 |
224699 |
224711 |
224717 |
224729 |
224737 |
224743 |
224759 |
224771 |
224797 |
224813 |
224831 |
224863 |
224869 |
224881 |
224891 |
224897 |
224909 |
224911 |
224921 |
224929 |
224947 |
224951 |
224969 |
224977 |
224993 |
225023 |
225037 |
225061 |
225067 |
225077 |
225079 |
225089 |
225109 |
225119 |
225133 |
225143 |
225149 |
225157 |
225161 |
225163 |
225167 |
225217 |
225221 |
225223 |
225227 |
225241 |
225257 |
225263 |
225287 |
225289 |
225299 |
225307 |
225341 |
225343 |
225347 |
225349 |
225353 |
225371 |
225373 |
225383 |
225427 |
225431 |
225457 |
225461 |
225479 |
225493 |
225499 |
225503 |
225509 |
225523 |
225527 |
225529 |
225569 |
225581 |
225583 |
225601 |
225611 |
225613 |
225619 |
225629 |
225637 |
225671 |
225683 |
225689 |
225697 |
225721 |
225733 |
225749 |
225751 |
225767 |
225769 |
225779 |
225781 |
225809 |
225821 |
225829 |
225839 |
225859 |
225871 |
225889 |
225919 |
225931 |
225941 |
225943 |
225949 |
225961 |
225977 |
225983 |
225989 |
226001 |
226007 |
226013 |
226027 |
226063 |
226087 |
226099 |
226103 |
226123 |
226129 |
226133 |
226141 |
226169 |
226183 |
226189 |
226199 |
226201 |
226217 |
226231 |
226241 |
226267 |
226283 |
226307 |
226313 |
226337 |
226357 |
226367 |
226379 |
226381 |
226397 |
226409 |
226427 |
226433 |
226451 |
226453 |
226463 |
226483 |
226487 |
226511 |
226531 |
226547 |
226549 |
226553 |
226571 |
226601 |
226609 |
226621 |
226631 |
226637 |
226643 |
226649 |
226657 |
226663 |
226669 |
226691 |
226697 |
226741 |
226753 |
226769 |
226777 |
226783 |
226789 |
226799 |
226813 |
226817 |
226819 |
226823 |
226843 |
226871 |
226901 |
226903 |
226907 |
226913 |
226937 |
226943 |
226991 |
227011 |
227027 |
227053 |
227081 |
227089 |
227093 |
227111 |
227113 |
227131 |
227147 |
227153 |
227159 |
227167 |
227177 |
227189 |
227191 |
227207 |
227219 |
227231 |
227233 |
227251 |
227257 |
227267 |
227281 |
227299 |
227303 |
227363 |
227371 |
227377 |
227387 |
227393 |
227399 |
227407 |
227419 |
227431 |
227453 |
227459 |
227467 |
227471 |
227473 |
227489 |
227497 |
227501 |
227519 |
227531 |
227533 |
227537 |
227561 |
227567 |
227569 |
227581 |
227593 |
227597 |
227603 |
227609 |
227611 |
227627 |
227629 |
227651 |
227653 |
227663 |
227671 |
227693 |
227699 |
227707 |
227719 |
227729 |
227743 |
227789 |
227797 |
227827 |
227849 |
227869 |
227873 |
227893 |
227947 |
227951 |
227977 |
227989 |
227993 |
228013 |
228023 |
228049 |
228061 |
228077 |
228097 |
228103 |
228113 |
228127 |
228131 |
228139 |
228181 |
228197 |
228199 |
228203 |
228211 |
228223 |
228233 |
228251 |
228257 |
228281 |
228299 |
228301 |
228307 |
228311 |
228331 |
228337 |
228341 |
228353 |
228359 |
228383 |
228409 |
228419 |
228421 |
228427 |
228443 |
228451 |
228457 |
228461 |
228469 |
228479 |
228509 |
228511 |
228517 |
228521 |
228523 |
228539 |
228559 |
228577 |
228581 |
228587 |
228593 |
228601 |
228611 |
228617 |
228619 |
228637 |
228647 |
228677 |
228707 |
228713 |
228731 |
228733 |
228737 |
228751 |
228757 |
228773 |
228793 |
228797 |
228799 |
228829 |
228841 |
228847 |
228853 |
228859 |
228869 |
228881 |
228883 |
228887 |
228901 |
228911 |
228913 |
228923 |
228929 |
228953 |
228959 |
228961 |
228983 |
228989 |
229003 |
229027 |
229037 |
229081 |
229093 |
229123 |
229127 |
229133 |
229139 |
229153 |
229157 |
229171 |
229181 |
229189 |
229199 |
229213 |
229217 |
229223 |
229237 |
229247 |
229249 |
229253 |
229261 |
229267 |
229283 |
229309 |
229321 |
229343 |
229351 |
229373 |
229393 |
229399 |
229403 |
229409 |
229423 |
229433 |
229459 |
229469 |
229487 |
229499 |
229507 |
229519 |
229529 |
229547 |
229549 |
229553 |
229561 |
229583 |
229589 |
229591 |
229601 |
229613 |
229627 |
229631 |
229637 |
229639 |
229681 |
229693 |
229699 |
229703 |
229711 |
229717 |
229727 |
229739 |
229751 |
229753 |
229759 |
229763 |
229769 |
229771 |
229777 |
229781 |
229799 |
229813 |
229819 |
229837 |
229841 |
229847 |
229849 |
229897 |
229903 |
229937 |
229939 |
229949 |
229961 |
229963 |
229979 |
229981 |
230003 |
230017 |
230047 |
230059 |
230063 |
230077 |
230081 |
230089 |
230101 |
230107 |
230117 |
230123 |
230137 |
230143 |
230149 |
230189 |
230203 |
230213 |
230221 |
230227 |
230233 |
230239 |
230257 |
230273 |
230281 |
230291 |
230303 |
230309 |
230311 |
230327 |
230339 |
230341 |
230353 |
230357 |
230369 |
230383 |
230387 |
230389 |
230393 |
230431 |
230449 |
230453 |
230467 |
230471 |
230479 |
230501 |
230507 |
230539 |
230551 |
230561 |
230563 |
230567 |
230597 |
230611 |
230647 |
230653 |
230663 |
230683 |
230693 |
230719 |
230729 |
230743 |
230761 |
230767 |
230771 |
230773 |
230779 |
230807 |
230819 |
230827 |
230833 |
230849 |
230861 |
230863 |
230873 |
230891 |
230929 |
230933 |
230939 |
230941 |
230959 |
230969 |
230977 |
230999 |
231001 |
231017 |
231019 |
231031 |
231041 |
231053 |
231067 |
231079 |
231107 |
231109 |
231131 |
231169 |
231197 |
231223 |
231241 |
231269 |
231271 |
231277 |
231289 |
231293 |
231299 |
231317 |
231323 |
231331 |
231347 |
231349 |
231359 |
231367 |
231379 |
231409 |
231419 |
231431 |
231433 |
231443 |
231461 |
231463 |
231479 |
231481 |
231493 |
231503 |
231529 |
231533 |
231547 |
231551 |
231559 |
231563 |
231571 |
231589 |
231599 |
231607 |
231611 |
231613 |
231631 |
231643 |
231661 |
231677 |
231701 |
231709 |
231719 |
231779 |
231799 |
231809 |
231821 |
231823 |
231827 |
231839 |
231841 |
231859 |
231871 |
231877 |
231893 |
231901 |
231919 |
231923 |
231943 |
231947 |
231961 |
231967 |
232003 |
232007 |
232013 |
232049 |
232051 |
232073 |
232079 |
232081 |
232091 |
232103 |
232109 |
232117 |
232129 |
232153 |
232171 |
232187 |
232189 |
232207 |
232217 |
232259 |
232303 |
232307 |
232333 |
232357 |
232363 |
232367 |
232381 |
232391 |
232409 |
232411 |
232417 |
232433 |
232439 |
232451 |
232457 |
232459 |
232487 |
232499 |
232513 |
232523 |
232549 |
232567 |
232571 |
232591 |
232597 |
232607 |
232621 |
232633 |
232643 |
232663 |
232669 |
232681 |
232699 |
232709 |
232711 |
232741 |
232751 |
232753 |
232777 |
232801 |
232811 |
232819 |
232823 |
232847 |
232853 |
232861 |
232871 |
232877 |
232891 |
232901 |
232907 |
232919 |
232937 |
232961 |
232963 |
232987 |
233021 |
233069 |
233071 |
233083 |
233113 |
233117 |
233141 |
233143 |
233159 |
233161 |
233173 |
233183 |
233201 |
233221 |
233231 |
233239 |
233251 |
233267 |
233279 |
233293 |
233297 |
233323 |
233327 |
233329 |
233341 |
233347 |
233353 |
233357 |
233371 |
233407 |
233417 |
233419 |
233423 |
233437 |
233477 |
233489 |
233509 |
233549 |
233551 |
233557 |
233591 |
233599 |
233609 |
233617 |
233621 |
233641 |
233663 |
233669 |
233683 |
233687 |
233689 |
233693 |
233713 |
233743 |
233747 |
233759 |
233777 |
233837 |
233851 |
233861 |
233879 |
233881 |
233911 |
233917 |
233921 |
233923 |
233939 |
233941 |
233969 |
233983 |
233993 |
234007 |
234029 |
234043 |
234067 |
234083 |
234089 |
234103 |
234121 |
234131 |
234139 |
234149 |
234161 |
234167 |
234181 |
234187 |
234191 |
234193 |
234197 |
234203 |
234211 |
234217 |
234239 |
234259 |
234271 |
234281 |
234287 |
234293 |
234317 |
234319 |
234323 |
234331 |
234341 |
234343 |
234361 |
234383 |
234431 |
234457 |
234461 |
234463 |
234467 |
234473 |
234499 |
234511 |
234527 |
234529 |
234539 |
234541 |
234547 |
234571 |
234587 |
234589 |
234599 |
234613 |
234629 |
234653 |
234659 |
234673 |
234683 |
234713 |
234721 |
234727 |
234733 |
234743 |
234749 |
234769 |
234781 |
234791 |
234799 |
234803 |
234809 |
234811 |
234833 |
234847 |
234851 |
234863 |
234869 |
234893 |
234907 |
234917 |
234931 |
234947 |
234959 |
234961 |
234967 |
234977 |
234979 |
234989 |
235003 |
235007 |
235009 |
235013 |
235043 |
235051 |
235057 |
235069 |
235091 |
235099 |
235111 |
235117 |
235159 |
235171 |
235177 |
235181 |
235199 |
235211 |
235231 |
235241 |
235243 |
235273 |
235289 |
235307 |
235309 |
235337 |
235349 |
235369 |
235397 |
235439 |
235441 |
235447 |
235483 |
235489 |
235493 |
235513 |
235519 |
235523 |
235537 |
235541 |
235553 |
235559 |
235577 |
235591 |
235601 |
235607 |
235621 |
235661 |
235663 |
235673 |
235679 |
235699 |
235723 |
235747 |
235751 |
235783 |
235787 |
235789 |
235793 |
235811 |
235813 |
235849 |
235871 |
235877 |
235889 |
235891 |
235901 |
235919 |
235927 |
235951 |
235967 |
235979 |
235997 |
236017 |
236021 |
236053 |
236063 |
236069 |
236077 |
236087 |
236107 |
236111 |
236129 |
236143 |
236153 |
236167 |
236207 |
236209 |
236219 |
236231 |
236261 |
236287 |
236293 |
236297 |
236323 |
236329 |
236333 |
236339 |
236377 |
236381 |
236387 |
236399 |
236407 |
236429 |
236449 |
236461 |
236471 |
236477 |
236479 |
236503 |
236507 |
236519 |
236527 |
236549 |
236563 |
236573 |
236609 |
236627 |
236641 |
236653 |
236659 |
236681 |
236699 |
236701 |
236707 |
236713 |
236723 |
236729 |
236737 |
236749 |
236771 |
236773 |
236779 |
236783 |
236807 |
236813 |
236867 |
236869 |
236879 |
236881 |
236891 |
236893 |
236897 |
236909 |
236917 |
236947 |
236981 |
236983 |
236993 |
237011 |
237019 |
237043 |
237053 |
237067 |
237071 |
237073 |
237089 |
237091 |
237137 |
237143 |
237151 |
237157 |
237161 |
237163 |
237173 |
237179 |
237203 |
237217 |
237233 |
237257 |
237271 |
237277 |
237283 |
237287 |
237301 |
237313 |
237319 |
237331 |
237343 |
237361 |
237373 |
237379 |
237401 |
237409 |
237467 |
237487 |
237509 |
237547 |
237563 |
237571 |
237581 |
237607 |
237619 |
237631 |
237673 |
237683 |
237689 |
237691 |
237701 |
237707 |
237733 |
237737 |
237749 |
237763 |
237767 |
237781 |
237791 |
237821 |
237851 |
237857 |
237859 |
237877 |
237883 |
237901 |
237911 |
237929 |
237959 |
237967 |
237971 |
237973 |
237977 |
237997 |
238001 |
238009 |
238019 |
238031 |
238037 |
238039 |
238079 |
238081 |
238093 |
238099 |
238103 |
238109 |
238141 |
238151 |
238157 |
238159 |
238163 |
238171 |
238181 |
238201 |
238207 |
238213 |
238223 |
238229 |
238237 |
238247 |
238261 |
238267 |
238291 |
238307 |
238313 |
238321 |
238331 |
238339 |
238361 |
238363 |
238369 |
238373 |
238397 |
238417 |
238423 |
238439 |
238451 |
238463 |
238471 |
238477 |
238481 |
238499 |
238519 |
238529 |
238531 |
238547 |
238573 |
238591 |
238627 |
238639 |
238649 |
238657 |
238673 |
238681 |
238691 |
238703 |
238709 |
238723 |
238727 |
238729 |
238747 |
238759 |
238781 |
238789 |
238801 |
238829 |
238837 |
238841 |
238853 |
238859 |
238877 |
238879 |
238883 |
238897 |
238919 |
238921 |
238939 |
238943 |
238949 |
238967 |
238991 |
239017 |
239023 |
239027 |
239053 |
239069 |
239081 |
239087 |
239119 |
239137 |
239147 |
239167 |
239171 |
239179 |
239201 |
239231 |
239233 |
239237 |
239243 |
239251 |
239263 |
239273 |
239287 |
239297 |
239329 |
239333 |
239347 |
239357 |
239383 |
239387 |
239389 |
239417 |
239423 |
239429 |
239431 |
239441 |
239461 |
239489 |
239509 |
239521 |
239527 |
239531 |
239539 |
239543 |
239557 |
239567 |
239579 |
239587 |
239597 |
239611 |
239623 |
239633 |
239641 |
239671 |
239689 |
239699 |
239711 |
239713 |
239731 |
239737 |
239753 |
239779 |
239783 |
239803 |
239807 |
239831 |
239843 |
239849 |
239851 |
239857 |
239873 |
239879 |
239893 |
239929 |
239933 |
239947 |
239957 |
239963 |
239977 |
239999 |
240007 |
240011 |
240017 |
240041 |
240043 |
240047 |
240049 |
240059 |
240073 |
240089 |
240101 |
240109 |
240113 |
240131 |
240139 |
240151 |
240169 |
240173 |
240197 |
240203 |
240209 |
240257 |
240259 |
240263 |
240271 |
240283 |
240287 |
240319 |
240341 |
240347 |
240349 |
240353 |
240371 |
240379 |
240421 |
240433 |
240437 |
240473 |
240479 |
240491 |
240503 |
240509 |
240517 |
240551 |
240571 |
240587 |
240589 |
240599 |
240607 |
240623 |
240631 |
240641 |
240659 |
240677 |
240701 |
240707 |
240719 |
240727 |
240733 |
240739 |
240743 |
240763 |
240769 |
240797 |
240811 |
240829 |
240841 |
240853 |
240859 |
240869 |
240881 |
240883 |
240893 |
240899 |
240913 |
240943 |
240953 |
240959 |
240967 |
240997 |
241013 |
241027 |
241037 |
241049 |
241051 |
241061 |
241067 |
241069 |
241079 |
241093 |
241117 |
241127 |
241141 |
241169 |
241177 |
241183 |
241207 |
241229 |
241249 |
241253 |
241259 |
241261 |
241271 |
241291 |
241303 |
241313 |
241321 |
241327 |
241333 |
241337 |
241343 |
241361 |
241363 |
241391 |
241393 |
241421 |
241429 |
241441 |
241453 |
241463 |
241469 |
241489 |
241511 |
241513 |
241517 |
241537 |
241543 |
241559 |
241561 |
241567 |
241589 |
241597 |
241601 |
241603 |
241639 |
241643 |
241651 |
241663 |
241667 |
241679 |
241687 |
241691 |
241711 |
241727 |
241739 |
241771 |
241781 |
241783 |
241793 |
241807 |
241811 |
241817 |
241823 |
241847 |
241861 |
241867 |
241873 |
241877 |
241883 |
241903 |
241907 |
241919 |
241921 |
241931 |
241939 |
241951 |
241963 |
241973 |
241979 |
241981 |
241993 |
242009 |
242057 |
242059 |
242069 |
242083 |
242093 |
242101 |
242119 |
242129 |
242147 |
242161 |
242171 |
242173 |
242197 |
242201 |
242227 |
242243 |
242257 |
242261 |
242273 |
242279 |
242309 |
242329 |
242357 |
242371 |
242377 |
242393 |
242399 |
242413 |
242419 |
242441 |
242447 |
242449 |
242453 |
242467 |
242479 |
242483 |
242491 |
242509 |
242519 |
242521 |
242533 |
242551 |
242591 |
242603 |
242617 |
242621 |
242629 |
242633 |
242639 |
242647 |
242659 |
242677 |
242681 |
242689 |
242713 |
242729 |
242731 |
242747 |
242773 |
242779 |
242789 |
242797 |
242807 |
242813 |
242819 |
242863 |
242867 |
242873 |
242887 |
242911 |
242923 |
242927 |
242971 |
242989 |
242999 |
243011 |
243031 |
243073 |
243077 |
243091 |
243101 |
243109 |
243119 |
243121 |
243137 |
243149 |
243157 |
243161 |
243167 |
243197 |
243203 |
243209 |
243227 |
243233 |
243239 |
243259 |
243263 |
243301 |
243311 |
243343 |
243367 |
243391 |
243401 |
243403 |
243421 |
243431 |
243433 |
243437 |
243461 |
243469 |
243473 |
243479 |
243487 |
243517 |
243521 |
243527 |
243533 |
243539 |
243553 |
243577 |
243583 |
243587 |
243589 |
243613 |
243623 |
243631 |
243643 |
243647 |
243671 |
243673 |
243701 |
243703 |
243707 |
243709 |
243769 |
243781 |
243787 |
243799 |
243809 |
243829 |
243839 |
243851 |
243857 |
243863 |
243871 |
243889 |
243911 |
243917 |
243931 |
243953 |
243973 |
243989 |
244003 |
244009 |
244021 |
244033 |
244043 |
244087 |
244091 |
244109 |
244121 |
244129 |
244141 |
244147 |
244157 |
244159 |
244177 |
244199 |
244217 |
244219 |
244243 |
244247 |
244253 |
244261 |
244291 |
244297 |
244301 |
244303 |
244313 |
244333 |
244339 |
244351 |
244357 |
244367 |
244379 |
244381 |
244393 |
244399 |
244403 |
244411 |
244423 |
244429 |
244451 |
244457 |
244463 |
244471 |
244481 |
244493 |
244507 |
244529 |
244547 |
244553 |
244561 |
244567 |
244583 |
244589 |
244597 |
244603 |
244619 |
244633 |
244637 |
244639 |
244667 |
244669 |
244687 |
244691 |
244703 |
244711 |
244721 |
244733 |
244747 |
244753 |
244759 |
244781 |
244787 |
244813 |
244837 |
244841 |
244843 |
244859 |
244861 |
244873 |
244877 |
244889 |
244897 |
244901 |
244939 |
244943 |
244957 |
244997 |
245023 |
245029 |
245033 |
245039 |
245071 |
245083 |
245087 |
245107 |
245129 |
245131 |
245149 |
245171 |
245173 |
245177 |
245183 |
245209 |
245251 |
245257 |
245261 |
245269 |
245279 |
245291 |
245299 |
245317 |
245321 |
245339 |
245383 |
245389 |
245407 |
245411 |
245417 |
245419 |
245437 |
245471 |
245473 |
245477 |
245501 |
245513 |
245519 |
245521 |
245527 |
245533 |
245561 |
245563 |
245587 |
245591 |
245593 |
245621 |
245627 |
245629 |
245639 |
245653 |
245671 |
245681 |
245683 |
245711 |
245719 |
245723 |
245741 |
245747 |
245753 |
245759 |
245771 |
245783 |
245789 |
245821 |
245849 |
245851 |
245863 |
245881 |
245897 |
245899 |
245909 |
245911 |
245941 |
245963 |
245977 |
245981 |
245983 |
245989 |
246011 |
246017 |
246049 |
246073 |
246097 |
246119 |
246121 |
246131 |
246133 |
246151 |
246167 |
246173 |
246187 |
246193 |
246203 |
246209 |
246217 |
246223 |
246241 |
246247 |
246251 |
246271 |
246277 |
246289 |
246317 |
246319 |
246329 |
246343 |
246349 |
246361 |
246371 |
246391 |
246403 |
246439 |
246469 |
246473 |
246497 |
246509 |
246511 |
246523 |
246527 |
246539 |
246557 |
246569 |
246577 |
246599 |
246607 |
246611 |
246613 |
246637 |
246641 |
246643 |
246661 |
246683 |
246689 |
246707 |
246709 |
246713 |
246731 |
246739 |
246769 |
246773 |
246781 |
246787 |
246793 |
246803 |
246809 |
246811 |
246817 |
246833 |
246839 |
246889 |
246899 |
246907 |
246913 |
246919 |
246923 |
246929 |
246931 |
246937 |
246941 |
246947 |
246971 |
246979 |
247001 |
247007 |
247031 |
247067 |
247069 |
247073 |
247087 |
247099 |
247141 |
247183 |
247193 |
247201 |
247223 |
247229 |
247241 |
247249 |
247259 |
247279 |
247301 |
247309 |
247337 |
247339 |
247343 |
247363 |
247369 |
247381 |
247391 |
247393 |
247409 |
247421 |
247433 |
247439 |
247451 |
247463 |
247501 |
247519 |
247529 |
247531 |
247547 |
247553 |
247579 |
247591 |
247601 |
247603 |
247607 |
247609 |
247613 |
247633 |
247649 |
247651 |
247691 |
247693 |
247697 |
247711 |
247717 |
247729 |
247739 |
247759 |
247769 |
247771 |
247781 |
247799 |
247811 |
247813 |
247829 |
247847 |
247853 |
247873 |
247879 |
247889 |
247901 |
247913 |
247939 |
247943 |
247957 |
247991 |
247993 |
247997 |
247999 |
248021 |
248033 |
248041 |
248051 |
248057 |
248063 |
248071 |
248077 |
248089 |
248099 |
248117 |
248119 |
248137 |
248141 |
248161 |
248167 |
248177 |
248179 |
248189 |
248201 |
248203 |
248231 |
248243 |
248257 |
248267 |
248291 |
248293 |
248299 |
248309 |
248317 |
248323 |
248351 |
248357 |
248371 |
248389 |
248401 |
248407 |
248431 |
248441 |
248447 |
248461 |
248473 |
248477 |
248483 |
248509 |
248533 |
248537 |
248543 |
248569 |
248579 |
248587 |
248593 |
248597 |
248609 |
248621 |
248627 |
248639 |
248641 |
248657 |
248683 |
248701 |
248707 |
248719 |
248723 |
248737 |
248749 |
248753 |
248779 |
248783 |
248789 |
248797 |
248813 |
248821 |
248827 |
248839 |
248851 |
248861 |
248867 |
248869 |
248879 |
248887 |
248891 |
248893 |
248903 |
248909 |
248971 |
248981 |
248987 |
249017 |
249037 |
249059 |
249079 |
249089 |
249097 |
249103 |
249107 |
249127 |
249131 |
249133 |
249143 |
249181 |
249187 |
249199 |
249211 |
249217 |
249229 |
249233 |
249253 |
249257 |
249287 |
249311 |
249317 |
249329 |
249341 |
249367 |
249377 |
249383 |
249397 |
249419 |
249421 |
249427 |
249433 |
249437 |
249439 |
249449 |
249463 |
249497 |
249499 |
249503 |
249517 |
249521 |
249533 |
249539 |
249541 |
249563 |
249583 |
249589 |
249593 |
249607 |
249647 |
249659 |
249671 |
249677 |
249703 |
249721 |
249727 |
249737 |
249749 |
249763 |
249779 |
249797 |
249811 |
249827 |
249833 |
249853 |
249857 |
249859 |
249863 |
249871 |
249881 |
249911 |
249923 |
249943 |
249947 |
249967 |
249971 |
249973 |
249989 |
250007 |
250013 |
250027 |
250031 |
250037 |
250043 |
250049 |
250051 |
250057 |
250073 |
250091 |
250109 |
250123 |
250147 |
250153 |
250169 |
250199 |
250253 |
250259 |
250267 |
250279 |
250301 |
250307 |
250343 |
250361 |
250403 |
250409 |
250423 |
250433 |
250441 |
250451 |
250489 |
250499 |
250501 |
250543 |
250583 |
250619 |
250643 |
250673 |
250681 |
250687 |
250693 |
250703 |
250709 |
250721 |
250727 |
250739 |
250741 |
250751 |
250753 |
250777 |
250787 |
250793 |
250799 |
250807 |
250813 |
250829 |
250837 |
250841 |
250853 |
250867 |
250871 |
250889 |
250919 |
250949 |
250951 |
250963 |
250967 |
250969 |
250979 |
250993 |
251003 |
251033 |
251051 |
251057 |
251059 |
251063 |
251071 |
251081 |
251087 |
251099 |
251117 |
251143 |
251149 |
251159 |
251171 |
251177 |
251179 |
251191 |
251197 |
251201 |
251203 |
251219 |
251221 |
251231 |
251233 |
251257 |
251261 |
251263 |
251287 |
251291 |
251297 |
251323 |
251347 |
251353 |
251359 |
251387 |
251393 |
251417 |
251429 |
251431 |
251437 |
251443 |
251467 |
251473 |
251477 |
251483 |
251491 |
251501 |
251513 |
251519 |
251527 |
251533 |
251539 |
251543 |
251561 |
251567 |
251609 |
251611 |
251621 |
251623 |
251639 |
251653 |
251663 |
251677 |
251701 |
251707 |
251737 |
251761 |
251789 |
251791 |
251809 |
251831 |
251833 |
251843 |
251857 |
251861 |
251879 |
251887 |
251893 |
251897 |
251903 |
251917 |
251939 |
251941 |
251947 |
251969 |
251971 |
251983 |
252001 |
252013 |
252017 |
252029 |
252037 |
252079 |
252101 |
252139 |
252143 |
252151 |
252157 |
252163 |
252169 |
252173 |
252181 |
252193 |
252209 |
252223 |
252233 |
252253 |
252277 |
252283 |
252289 |
252293 |
252313 |
252319 |
252323 |
252341 |
252359 |
252383 |
252391 |
252401 |
252409 |
252419 |
252431 |
252443 |
252449 |
252457 |
252463 |
252481 |
252509 |
252533 |
252541 |
252559 |
252583 |
252589 |
252607 |
252611 |
252617 |
252641 |
252667 |
252691 |
252709 |
252713 |
252727 |
252731 |
252737 |
252761 |
252767 |
252779 |
252817 |
252823 |
252827 |
252829 |
252869 |
252877 |
252881 |
252887 |
252893 |
252899 |
252911 |
252913 |
252919 |
252937 |
252949 |
252971 |
252979 |
252983 |
253003 |
253013 |
253049 |
253063 |
253081 |
253103 |
253109 |
253133 |
253153 |
253157 |
253159 |
253229 |
253243 |
253247 |
253273 |
253307 |
253321 |
253343 |
253349 |
253361 |
253367 |
253369 |
253381 |
253387 |
253417 |
253423 |
253427 |
253433 |
253439 |
253447 |
253469 |
253481 |
253493 |
253501 |
253507 |
253531 |
253537 |
253543 |
253553 |
253567 |
253573 |
253601 |
253607 |
253609 |
253613 |
253633 |
253637 |
253639 |
253651 |
253661 |
253679 |
253681 |
253703 |
253717 |
253733 |
253741 |
253751 |
253763 |
253769 |
253777 |
253787 |
253789 |
253801 |
253811 |
253819 |
253823 |
253853 |
253867 |
253871 |
253879 |
253901 |
253907 |
253909 |
253919 |
253937 |
253949 |
253951 |
253969 |
253987 |
253993 |
253999 |
254003 |
254021 |
254027 |
254039 |
254041 |
254047 |
254053 |
254071 |
254083 |
254119 |
254141 |
254147 |
254161 |
254179 |
254197 |
254207 |
254209 |
254213 |
254249 |
254257 |
254279 |
254281 |
254291 |
254299 |
254329 |
254369 |
254377 |
254383 |
254389 |
254407 |
254413 |
254437 |
254447 |
254461 |
254489 |
254491 |
254519 |
254537 |
254557 |
254593 |
254623 |
254627 |
254647 |
254659 |
254663 |
254699 |
254713 |
254729 |
254731 |
254741 |
254747 |
254753 |
254773 |
254777 |
254783 |
254791 |
254803 |
254827 |
254831 |
254833 |
254857 |
254869 |
254873 |
254879 |
254887 |
254899 |
254911 |
254927 |
254929 |
254941 |
254959 |
254963 |
254971 |
254977 |
254987 |
254993 |
255007 |
255019 |
255023 |
255043 |
255049 |
255053 |
255071 |
255077 |
255083 |
255097 |
255107 |
255121 |
255127 |
255133 |
255137 |
255149 |
255173 |
255179 |
255181 |
255191 |
255193 |
255197 |
255209 |
255217 |
255239 |
255247 |
255251 |
255253 |
255259 |
255313 |
255329 |
255349 |
255361 |
255371 |
255383 |
255413 |
255419 |
255443 |
255457 |
255467 |
255469 |
255473 |
255487 |
255499 |
255503 |
255511 |
255517 |
255523 |
255551 |
255571 |
255587 |
255589 |
255613 |
255617 |
255637 |
255641 |
255649 |
255653 |
255659 |
255667 |
255679 |
255709 |
255713 |
255733 |
255743 |
255757 |
255763 |
255767 |
255803 |
255839 |
255841 |
255847 |
255851 |
255859 |
255869 |
255877 |
255887 |
255907 |
255917 |
255919 |
255923 |
255947 |
255961 |
255971 |
255973 |
255977 |
255989 |
256019 |
256021 |
256031 |
256033 |
256049 |
256057 |
256079 |
256093 |
256117 |
256121 |
256129 |
256133 |
256147 |
256163 |
256169 |
256181 |
256187 |
256189 |
256199 |
256211 |
256219 |
256279 |
256301 |
256307 |
256313 |
256337 |
256349 |
256363 |
256369 |
256391 |
256393 |
256423 |
256441 |
256469 |
256471 |
256483 |
256489 |
256493 |
256499 |
256517 |
256541 |
256561 |
256567 |
256577 |
256579 |
256589 |
256603 |
256609 |
256639 |
256643 |
256651 |
256661 |
256687 |
256699 |
256721 |
256723 |
256757 |
256771 |
256799 |
256801 |
256813 |
256831 |
256873 |
256877 |
256889 |
256901 |
256903 |
256931 |
256939 |
256957 |
256967 |
256981 |
257003 |
257017 |
257053 |
257069 |
257077 |
257093 |
257099 |
257107 |
257123 |
257141 |
257161 |
257171 |
257177 |
257189 |
257219 |
257221 |
257239 |
257249 |
257263 |
257273 |
257281 |
257287 |
257293 |
257297 |
257311 |
257321 |
257339 |
257351 |
257353 |
257371 |
257381 |
257399 |
257401 |
257407 |
257437 |
257443 |
257447 |
257459 |
257473 |
257489 |
257497 |
257501 |
257503 |
257519 |
257539 |
257561 |
257591 |
257611 |
257627 |
257639 |
257657 |
257671 |
257687 |
257689 |
257707 |
257711 |
257713 |
257717 |
257731 |
257783 |
257791 |
257797 |
257837 |
257857 |
257861 |
257863 |
257867 |
257869 |
257879 |
257893 |
257903 |
257921 |
257947 |
257953 |
257981 |
257987 |
257989 |
257993 |
258019 |
258023 |
258031 |
258061 |
258067 |
258101 |
258107 |
258109 |
258113 |
258119 |
258127 |
258131 |
258143 |
258157 |
258161 |
258173 |
258197 |
258211 |
258233 |
258241 |
258253 |
258277 |
258283 |
258299 |
258317 |
258319 |
258329 |
258331 |
258337 |
258353 |
258373 |
258389 |
258403 |
258407 |
258413 |
258421 |
258437 |
258443 |
258449 |
258469 |
258487 |
258491 |
258499 |
258521 |
258527 |
258539 |
258551 |
258563 |
258569 |
258581 |
258607 |
258611 |
258613 |
258617 |
258623 |
258631 |
258637 |
258659 |
258673 |
258677 |
258691 |
258697 |
258703 |
258707 |
258721 |
258733 |
258737 |
258743 |
258763 |
258779 |
258787 |
258803 |
258809 |
258827 |
258847 |
258871 |
258887 |
258917 |
258919 |
258949 |
258959 |
258967 |
258971 |
258977 |
258983 |
258991 |
259001 |
259009 |
259019 |
259033 |
259099 |
259121 |
259123 |
259151 |
259157 |
259159 |
259163 |
259169 |
259177 |
259183 |
259201 |
259211 |
259213 |
259219 |
259229 |
259271 |
259277 |
259309 |
259321 |
259339 |
259379 |
259381 |
259387 |
259397 |
259411 |
259421 |
259429 |
259451 |
259453 |
259459 |
259499 |
259507 |
259517 |
259531 |
259537 |
259547 |
259577 |
259583 |
259603 |
259619 |
259621 |
259627 |
259631 |
259639 |
259643 |
259657 |
259667 |
259681 |
259691 |
259697 |
259717 |
259723 |
259733 |
259751 |
259771 |
259781 |
259783 |
259801 |
259813 |
259823 |
259829 |
259837 |
259841 |
259867 |
259907 |
259933 |
259937 |
259943 |
259949 |
259967 |
259991 |
259993 |
260003 |
260009 |
260011 |
260017 |
260023 |
260047 |
260081 |
260089 |
260111 |
260137 |
260171 |
260179 |
260189 |
260191 |
260201 |
260207 |
260209 |
260213 |
260231 |
260263 |
260269 |
260317 |
260329 |
260339 |
260363 |
260387 |
260399 |
260411 |
260413 |
260417 |
260419 |
260441 |
260453 |
260461 |
260467 |
260483 |
260489 |
260527 |
260539 |
260543 |
260549 |
260551 |
260569 |
260573 |
260581 |
260587 |
260609 |
260629 |
260647 |
260651 |
260671 |
260677 |
260713 |
260717 |
260723 |
260747 |
260753 |
260761 |
260773 |
260791 |
260807 |
260809 |
260849 |
260857 |
260861 |
260863 |
260873 |
260879 |
260893 |
260921 |
260941 |
260951 |
260959 |
260969 |
260983 |
260987 |
260999 |
261011 |
261013 |
261017 |
261031 |
261043 |
261059 |
261061 |
261071 |
261077 |
261089 |
261101 |
261127 |
261167 |
261169 |
261223 |
261229 |
261241 |
261251 |
261271 |
261281 |
261301 |
261323 |
261329 |
261337 |
261347 |
261353 |
261379 |
261389 |
261407 |
261427 |
261431 |
261433 |
261439 |
261451 |
261463 |
261467 |
261509 |
261523 |
261529 |
261557 |
261563 |
261577 |
261581 |
261587 |
261593 |
261601 |
261619 |
261631 |
261637 |
261641 |
261643 |
261673 |
261697 |
261707 |
261713 |
261721 |
261739 |
261757 |
261761 |
261773 |
261787 |
261791 |
261799 |
261823 |
261847 |
261881 |
261887 |
261917 |
261959 |
261971 |
261973 |
261977 |
261983 |
262007 |
262027 |
262049 |
262051 |
262069 |
262079 |
262103 |
262109 |
262111 |
262121 |
262127 |
262133 |
262139 |
262147 |
262151 |
262153 |
262187 |
262193 |
262217 |
262231 |
262237 |
262253 |
262261 |
262271 |
262303 |
262313 |
262321 |
262331 |
262337 |
262349 |
262351 |
262369 |
262387 |
262391 |
262399 |
262411 |
262433 |
262459 |
262469 |
262489 |
262501 |
262511 |
262513 |
262519 |
262541 |
262543 |
262553 |
262567 |
262583 |
262597 |
262621 |
262627 |
262643 |
262649 |
262651 |
262657 |
262681 |
262693 |
262697 |
262709 |
262723 |
262733 |
262739 |
262741 |
262747 |
262781 |
262783 |
262807 |
262819 |
262853 |
262877 |
262883 |
262897 |
262901 |
262909 |
262937 |
262949 |
262957 |
262981 |
263009 |
263023 |
263047 |
263063 |
263071 |
263077 |
263083 |
263089 |
263101 |
263111 |
263119 |
263129 |
263167 |
263171 |
263183 |
263191 |
263201 |
263209 |
263213 |
263227 |
263239 |
263257 |
263267 |
263269 |
263273 |
263287 |
263293 |
263303 |
263323 |
263369 |
263383 |
263387 |
263399 |
263401 |
263411 |
263423 |
263429 |
263437 |
263443 |
263489 |
263491 |
263503 |
263513 |
263519 |
263521 |
263533 |
263537 |
263561 |
263567 |
263573 |
263591 |
263597 |
263609 |
263611 |
263621 |
263647 |
263651 |
263657 |
263677 |
263723 |
263729 |
263737 |
263759 |
263761 |
263803 |
263819 |
263821 |
263827 |
263843 |
263849 |
263863 |
263867 |
263869 |
263881 |
263899 |
263909 |
263911 |
263927 |
263933 |
263941 |
263951 |
263953 |
263957 |
263983 |
264007 |
264013 |
264029 |
264031 |
264053 |
264059 |
264071 |
264083 |
264091 |
264101 |
264113 |
264127 |
264133 |
264137 |
264139 |
264167 |
264169 |
264179 |
264211 |
264221 |
264263 |
264269 |
264283 |
264289 |
264301 |
264323 |
264331 |
264343 |
264349 |
264353 |
264359 |
264371 |
264391 |
264403 |
264437 |
264443 |
264463 |
264487 |
264527 |
264529 |
264553 |
264559 |
264577 |
264581 |
264599 |
264601 |
264619 |
264631 |
264637 |
264643 |
264659 |
264697 |
264731 |
264739 |
264743 |
264749 |
264757 |
264763 |
264769 |
264779 |
264787 |
264791 |
264793 |
264811 |
264827 |
264829 |
264839 |
264871 |
264881 |
264889 |
264893 |
264899 |
264919 |
264931 |
264949 |
264959 |
264961 |
264977 |
264991 |
264997 |
265003 |
265007 |
265021 |
265037 |
265079 |
265091 |
265093 |
265117 |
265123 |
265129 |
265141 |
265151 |
265157 |
265163 |
265169 |
265193 |
265207 |
265231 |
265241 |
265247 |
265249 |
265261 |
265271 |
265273 |
265277 |
265313 |
265333 |
265337 |
265339 |
265381 |
265399 |
265403 |
265417 |
265423 |
265427 |
265451 |
265459 |
265471 |
265483 |
265493 |
265511 |
265513 |
265541 |
265543 |
265547 |
265561 |
265567 |
265571 |
265579 |
265607 |
265613 |
265619 |
265621 |
265703 |
265709 |
265711 |
265717 |
265729 |
265739 |
265747 |
265757 |
265781 |
265787 |
265807 |
265813 |
265819 |
265831 |
265841 |
265847 |
265861 |
265871 |
265873 |
265883 |
265891 |
265921 |
265957 |
265961 |
265987 |
266003 |
266009 |
266023 |
266027 |
266029 |
266047 |
266051 |
266053 |
266059 |
266081 |
266083 |
266089 |
266093 |
266099 |
266111 |
266117 |
266129 |
266137 |
266153 |
266159 |
266177 |
266183 |
266221 |
266239 |
266261 |
266269 |
266281 |
266291 |
266293 |
266297 |
266333 |
266351 |
266353 |
266359 |
266369 |
266381 |
266401 |
266411 |
266417 |
266447 |
266449 |
266477 |
266479 |
266489 |
266491 |
266521 |
266549 |
266587 |
266599 |
266603 |
266633 |
266641 |
266647 |
266663 |
266671 |
266677 |
266681 |
266683 |
266687 |
266689 |
266701 |
266711 |
266719 |
266759 |
266767 |
266797 |
266801 |
266821 |
266837 |
266839 |
266863 |
266867 |
266891 |
266897 |
266899 |
266909 |
266921 |
266927 |
266933 |
266947 |
266953 |
266957 |
266971 |
266977 |
266983 |
266993 |
266999 |
267017 |
267037 |
267049 |
267097 |
267131 |
267133 |
267139 |
267143 |
267167 |
267187 |
267193 |
267199 |
267203 |
267217 |
267227 |
267229 |
267233 |
267259 |
267271 |
267277 |
267299 |
267301 |
267307 |
267317 |
267341 |
267353 |
267373 |
267389 |
267391 |
267401 |
267403 |
267413 |
267419 |
267431 |
267433 |
267439 |
267451 |
267469 |
267479 |
267481 |
267493 |
267497 |
267511 |
267517 |
267521 |
267523 |
267541 |
267551 |
267557 |
267569 |
267581 |
267587 |
267593 |
267601 |
267611 |
267613 |
267629 |
267637 |
267643 |
267647 |
267649 |
267661 |
267667 |
267671 |
267677 |
267679 |
267713 |
267719 |
267721 |
267727 |
267737 |
267739 |
267749 |
267763 |
267781 |
267791 |
267797 |
267803 |
267811 |
267829 |
267833 |
267857 |
267863 |
267877 |
267887 |
267893 |
267899 |
267901 |
267907 |
267913 |
267929 |
267941 |
267959 |
267961 |
268003 |
268013 |
268043 |
268049 |
268063 |
268069 |
268091 |
268123 |
268133 |
268153 |
268171 |
268189 |
268199 |
268207 |
268211 |
268237 |
268253 |
268267 |
268271 |
268283 |
268291 |
268297 |
268343 |
268403 |
268439 |
268459 |
268487 |
268493 |
268501 |
268507 |
268517 |
268519 |
268529 |
268531 |
268537 |
268547 |
268573 |
268607 |
268613 |
268637 |
268643 |
268661 |
268693 |
268721 |
268729 |
268733 |
268747 |
268757 |
268759 |
268771 |
268777 |
268781 |
268783 |
268789 |
268811 |
268813 |
268817 |
268819 |
268823 |
268841 |
268843 |
268861 |
268883 |
268897 |
268909 |
268913 |
268921 |
268927 |
268937 |
268969 |
268973 |
268979 |
268993 |
268997 |
268999 |
269023 |
269029 |
269039 |
269041 |
269057 |
269063 |
269069 |
269089 |
269117 |
269131 |
269141 |
269167 |
269177 |
269179 |
269183 |
269189 |
269201 |
269209 |
269219 |
269221 |
269231 |
269237 |
269251 |
269257 |
269281 |
269317 |
269327 |
269333 |
269341 |
269351 |
269377 |
269383 |
269387 |
269389 |
269393 |
269413 |
269419 |
269429 |
269431 |
269441 |
269461 |
269473 |
269513 |
269519 |
269527 |
269539 |
269543 |
269561 |
269573 |
269579 |
269597 |
269617 |
269623 |
269641 |
269651 |
269663 |
269683 |
269701 |
269713 |
269719 |
269723 |
269741 |
269749 |
269761 |
269779 |
269783 |
269791 |
269851 |
269879 |
269887 |
269891 |
269897 |
269923 |
269939 |
269947 |
269953 |
269981 |
269987 |
270001 |
270029 |
270031 |
270037 |
270059 |
270071 |
270073 |
270097 |
270121 |
270131 |
270133 |
270143 |
270157 |
270163 |
270167 |
270191 |
270209 |
270217 |
270223 |
270229 |
270239 |
270241 |
270269 |
270271 |
270287 |
270299 |
270307 |
270311 |
270323 |
270329 |
270337 |
270343 |
270371 |
270379 |
270407 |
270421 |
270437 |
270443 |
270451 |
270461 |
270463 |
270493 |
270509 |
270527 |
270539 |
270547 |
270551 |
270553 |
270563 |
270577 |
270583 |
270587 |
270593 |
270601 |
270619 |
270631 |
270653 |
270659 |
270667 |
270679 |
270689 |
270701 |
270709 |
270719 |
270737 |
270749 |
270761 |
270763 |
270791 |
270797 |
270799 |
270821 |
270833 |
270841 |
270859 |
270899 |
270913 |
270923 |
270931 |
270937 |
270953 |
270961 |
270967 |
270973 |
271003 |
271013 |
271021 |
271027 |
271043 |
271057 |
271067 |
271079 |
271097 |
271109 |
271127 |
271129 |
271163 |
271169 |
271177 |
271181 |
271211 |
271217 |
271231 |
271241 |
271253 |
271261 |
271273 |
271277 |
271279 |
271289 |
271333 |
271351 |
271357 |
271363 |
271367 |
271393 |
271409 |
271429 |
271451 |
271463 |
271471 |
271483 |
271489 |
271499 |
271501 |
271517 |
271549 |
271553 |
271571 |
271573 |
271597 |
271603 |
271619 |
271637 |
271639 |
271651 |
271657 |
271693 |
271703 |
271723 |
271729 |
271753 |
271769 |
271771 |
271787 |
271807 |
271811 |
271829 |
271841 |
271849 |
271853 |
271861 |
271867 |
271879 |
271897 |
271903 |
271919 |
271927 |
271939 |
271967 |
271969 |
271981 |
272003 |
272009 |
272011 |
272029 |
272039 |
272053 |
272059 |
272093 |
272131 |
272141 |
272171 |
272179 |
272183 |
272189 |
272191 |
272201 |
272203 |
272227 |
272231 |
272249 |
272257 |
272263 |
272267 |
272269 |
272287 |
272299 |
272317 |
272329 |
272333 |
272341 |
272347 |
272351 |
272353 |
272359 |
272369 |
272381 |
272383 |
272399 |
272407 |
272411 |
272417 |
272423 |
272449 |
272453 |
272477 |
272507 |
272533 |
272537 |
272539 |
272549 |
272563 |
272567 |
272581 |
272603 |
272621 |
272651 |
272659 |
272683 |
272693 |
272717 |
272719 |
272737 |
272759 |
272761 |
272771 |
272777 |
272807 |
272809 |
272813 |
272863 |
272879 |
272887 |
272903 |
272911 |
272917 |
272927 |
272933 |
272959 |
272971 |
272981 |
272983 |
272989 |
272999 |
273001 |
273029 |
273043 |
273047 |
273059 |
273061 |
273067 |
273073 |
273083 |
273107 |
273113 |
273127 |
273131 |
273149 |
273157 |
273181 |
273187 |
273193 |
273233 |
273253 |
273269 |
273271 |
273281 |
273283 |
273289 |
273311 |
273313 |
273323 |
273349 |
273359 |
273367 |
273433 |
273457 |
273473 |
273503 |
273517 |
273521 |
273527 |
273551 |
273569 |
273601 |
273613 |
273617 |
273629 |
273641 |
273643 |
273653 |
273697 |
273709 |
273719 |
273727 |
273739 |
273773 |
273787 |
273797 |
273803 |
273821 |
273827 |
273857 |
273881 |
273899 |
273901 |
273913 |
273919 |
273929 |
273941 |
273943 |
273967 |
273971 |
273979 |
273997 |
274007 |
274019 |
274033 |
274061 |
274069 |
274081 |
274093 |
274103 |
274117 |
274121 |
274123 |
274139 |
274147 |
274163 |
274171 |
274177 |
274187 |
274199 |
274201 |
274213 |
274223 |
274237 |
274243 |
274259 |
274271 |
274277 |
274283 |
274301 |
274333 |
274349 |
274357 |
274361 |
274403 |
274423 |
274441 |
274451 |
274453 |
274457 |
274471 |
274489 |
274517 |
274529 |
274579 |
274583 |
274591 |
274609 |
274627 |
274661 |
274667 |
274679 |
274693 |
274697 |
274709 |
274711 |
274723 |
274739 |
274751 |
274777 |
274783 |
274787 |
274811 |
274817 |
274829 |
274831 |
274837 |
274843 |
274847 |
274853 |
274861 |
274867 |
274871 |
274889 |
274909 |
274931 |
274943 |
274951 |
274957 |
274961 |
274973 |
274993 |
275003 |
275027 |
275039 |
275047 |
275053 |
275059 |
275083 |
275087 |
275129 |
275131 |
275147 |
275153 |
275159 |
275161 |
275167 |
275183 |
275201 |
275207 |
275227 |
275251 |
275263 |
275269 |
275299 |
275309 |
275321 |
275323 |
275339 |
275357 |
275371 |
275389 |
275393 |
275399 |
275419 |
275423 |
275447 |
275449 |
275453 |
275459 |
275461 |
275489 |
275491 |
275503 |
275521 |
275531 |
275543 |
275549 |
275573 |
275579 |
275581 |
275591 |
275593 |
275599 |
275623 |
275641 |
275651 |
275657 |
275669 |
275677 |
275699 |
275711 |
275719 |
275729 |
275741 |
275767 |
275773 |
275783 |
275813 |
275827 |
275837 |
275881 |
275897 |
275911 |
275917 |
275921 |
275923 |
275929 |
275939 |
275941 |
275963 |
275969 |
275981 |
275987 |
275999 |
276007 |
276011 |
276019 |
276037 |
276041 |
276043 |
276047 |
276049 |
276079 |
276083 |
276091 |
276113 |
276137 |
276151 |
276173 |
276181 |
276187 |
276191 |
276209 |
276229 |
276239 |
276247 |
276251 |
276257 |
276277 |
276293 |
276319 |
276323 |
276337 |
276343 |
276347 |
276359 |
276371 |
276373 |
276389 |
276401 |
276439 |
276443 |
276449 |
276461 |
276467 |
276487 |
276499 |
276503 |
276517 |
276527 |
276553 |
276557 |
276581 |
276587 |
276589 |
276593 |
276599 |
276623 |
276629 |
276637 |
276671 |
276673 |
276707 |
276721 |
276739 |
276763 |
276767 |
276779 |
276781 |
276817 |
276821 |
276823 |
276827 |
276833 |
276839 |
276847 |
276869 |
276883 |
276901 |
276907 |
276917 |
276919 |
276929 |
276949 |
276953 |
276961 |
276977 |
277003 |
277007 |
277021 |
277051 |
277063 |
277073 |
277087 |
277097 |
277099 |
277157 |
277163 |
277169 |
277177 |
277183 |
277213 |
277217 |
277223 |
277231 |
277247 |
277259 |
277261 |
277273 |
277279 |
277297 |
277301 |
277309 |
277331 |
277363 |
277373 |
277411 |
277421 |
277427 |
277429 |
277483 |
277493 |
277499 |
277513 |
277531 |
277547 |
277549 |
277567 |
277577 |
277579 |
277597 |
277601 |
277603 |
277637 |
277639 |
277643 |
277657 |
277663 |
277687 |
277691 |
277703 |
277741 |
277747 |
277751 |
277757 |
277787 |
277789 |
277793 |
277813 |
277829 |
277847 |
277859 |
277883 |
277889 |
277891 |
277897 |
277903 |
277919 |
277961 |
277993 |
277999 |
278017 |
278029 |
278041 |
278051 |
278063 |
278071 |
278087 |
278111 |
278119 |
278123 |
278143 |
278147 |
278149 |
278177 |
278191 |
278207 |
278209 |
278219 |
278227 |
278233 |
278237 |
278261 |
278269 |
278279 |
278321 |
278329 |
278347 |
278353 |
278363 |
278387 |
278393 |
278413 |
278437 |
278459 |
278479 |
278489 |
278491 |
278497 |
278501 |
278503 |
278543 |
278549 |
278557 |
278561 |
278563 |
278581 |
278591 |
278609 |
278611 |
278617 |
278623 |
278627 |
278639 |
278651 |
278671 |
278687 |
278689 |
278701 |
278717 |
278741 |
278743 |
278753 |
278767 |
278801 |
278807 |
278809 |
278813 |
278819 |
278827 |
278843 |
278849 |
278867 |
278879 |
278881 |
278891 |
278903 |
278909 |
278911 |
278917 |
278947 |
278981 |
279001 |
279007 |
279023 |
279029 |
279047 |
279073 |
279109 |
279119 |
279121 |
279127 |
279131 |
279137 |
279143 |
279173 |
279179 |
279187 |
279203 |
279211 |
279221 |
279269 |
279311 |
279317 |
279329 |
279337 |
279353 |
279397 |
279407 |
279413 |
279421 |
279431 |
279443 |
279451 |
279479 |
279481 |
279511 |
279523 |
279541 |
279551 |
279553 |
279557 |
279571 |
279577 |
279583 |
279593 |
279607 |
279613 |
279619 |
279637 |
279641 |
279649 |
279659 |
279679 |
279689 |
279707 |
279709 |
279731 |
279751 |
279761 |
279767 |
279779 |
279817 |
279823 |
279847 |
279857 |
279863 |
279883 |
279913 |
279919 |
279941 |
279949 |
279967 |
279977 |
279991 |
280001 |
280009 |
280013 |
280031 |
280037 |
280061 |
280069 |
280097 |
280099 |
280103 |
280121 |
280129 |
280139 |
280183 |
280187 |
280199 |
280207 |
280219 |
280223 |
280229 |
280243 |
280249 |
280253 |
280277 |
280297 |
280303 |
280321 |
280327 |
280337 |
280339 |
280351 |
280373 |
280409 |
280411 |
280451 |
280463 |
280487 |
280499 |
280507 |
280513 |
280537 |
280541 |
280547 |
280549 |
280561 |
280583 |
280589 |
280591 |
280597 |
280603 |
280607 |
280613 |
280627 |
280639 |
280673 |
280681 |
280697 |
280699 |
280703 |
280711 |
280717 |
280729 |
280751 |
280759 |
280769 |
280771 |
280811 |
280817 |
280837 |
280843 |
280859 |
280871 |
280879 |
280883 |
280897 |
280909 |
280913 |
280921 |
280927 |
280933 |
280939 |
280949 |
280957 |
280963 |
280967 |
280979 |
280997 |
281023 |
281033 |
281053 |
281063 |
281069 |
281081 |
281117 |
281131 |
281153 |
281159 |
281167 |
281189 |
281191 |
281207 |
281227 |
281233 |
281243 |
281249 |
281251 |
281273 |
281279 |
281291 |
281297 |
281317 |
281321 |
281327 |
281339 |
281353 |
281357 |
281363 |
281381 |
281419 |
281423 |
281429 |
281431 |
281509 |
281527 |
281531 |
281539 |
281549 |
281551 |
281557 |
281563 |
281579 |
281581 |
281609 |
281621 |
281623 |
281627 |
281641 |
281647 |
281651 |
281653 |
281663 |
281669 |
281683 |
281717 |
281719 |
281737 |
281747 |
281761 |
281767 |
281777 |
281783 |
281791 |
281797 |
281803 |
281807 |
281833 |
281837 |
281839 |
281849 |
281857 |
281867 |
281887 |
281893 |
281921 |
281923 |
281927 |
281933 |
281947 |
281959 |
281971 |
281989 |
281993 |
282001 |
282011 |
282019 |
282053 |
282059 |
282071 |
282089 |
282091 |
282097 |
282101 |
282103 |
282127 |
282143 |
282157 |
282167 |
282221 |
282229 |
282239 |
282241 |
282253 |
282281 |
282287 |
282299 |
282307 |
282311 |
282313 |
282349 |
282377 |
282383 |
282389 |
282391 |
282407 |
282409 |
282413 |
282427 |
282439 |
282461 |
282481 |
282487 |
282493 |
282559 |
282563 |
282571 |
282577 |
282589 |
282599 |
282617 |
282661 |
282671 |
282677 |
282679 |
282683 |
282691 |
282697 |
282703 |
282707 |
282713 |
282767 |
282769 |
282773 |
282797 |
282809 |
282827 |
282833 |
282847 |
282851 |
282869 |
282881 |
282889 |
282907 |
282911 |
282913 |
282917 |
282959 |
282973 |
282977 |
282991 |
283001 |
283007 |
283009 |
283027 |
283051 |
283079 |
283093 |
283097 |
283099 |
283111 |
283117 |
283121 |
283133 |
283139 |
283159 |
283163 |
283181 |
283183 |
283193 |
283207 |
283211 |
283267 |
283277 |
283289 |
283303 |
283369 |
283397 |
283403 |
283411 |
283447 |
283463 |
283487 |
283489 |
283501 |
283511 |
283519 |
283541 |
283553 |
283571 |
283573 |
283579 |
283583 |
283601 |
283607 |
283609 |
283631 |
283637 |
283639 |
283669 |
283687 |
283697 |
283721 |
283741 |
283763 |
283769 |
283771 |
283793 |
283799 |
283807 |
283813 |
283817 |
283831 |
283837 |
283859 |
283861 |
283873 |
283909 |
283937 |
283949 |
283957 |
283961 |
283979 |
284003 |
284023 |
284041 |
284051 |
284057 |
284059 |
284083 |
284093 |
284111 |
284117 |
284129 |
284131 |
284149 |
284153 |
284159 |
284161 |
284173 |
284191 |
284201 |
284227 |
284231 |
284233 |
284237 |
284243 |
284261 |
284267 |
284269 |
284293 |
284311 |
284341 |
284357 |
284369 |
284377 |
284387 |
284407 |
284413 |
284423 |
284429 |
284447 |
284467 |
284477 |
284483 |
284489 |
284507 |
284509 |
284521 |
284527 |
284539 |
284551 |
284561 |
284573 |
284587 |
284591 |
284593 |
284623 |
284633 |
284651 |
284657 |
284659 |
284681 |
284689 |
284701 |
284707 |
284723 |
284729 |
284731 |
284737 |
284741 |
284743 |
284747 |
284749 |
284759 |
284777 |
284783 |
284803 |
284807 |
284813 |
284819 |
284831 |
284833 |
284839 |
284857 |
284881 |
284897 |
284899 |
284917 |
284927 |
284957 |
284969 |
284989 |
285007 |
285023 |
285031 |
285049 |
285071 |
285079 |
285091 |
285101 |
285113 |
285119 |
285121 |
285139 |
285151 |
285161 |
285179 |
285191 |
285199 |
285221 |
285227 |
285251 |
285281 |
285283 |
285287 |
285289 |
285301 |
285317 |
285343 |
285377 |
285421 |
285433 |
285451 |
285457 |
285463 |
285469 |
285473 |
285497 |
285517 |
285521 |
285533 |
285539 |
285553 |
285557 |
285559 |
285569 |
285599 |
285611 |
285613 |
285629 |
285631 |
285641 |
285643 |
285661 |
285667 |
285673 |
285697 |
285707 |
285709 |
285721 |
285731 |
285749 |
285757 |
285763 |
285767 |
285773 |
285781 |
285823 |
285827 |
285839 |
285841 |
285871 |
285937 |
285949 |
285953 |
285977 |
285979 |
285983 |
285997 |
286001 |
286009 |
286019 |
286043 |
286049 |
286061 |
286063 |
286073 |
286103 |
286129 |
286163 |
286171 |
286199 |
286243 |
286249 |
286289 |
286301 |
286333 |
286367 |
286369 |
286381 |
286393 |
286397 |
286411 |
286421 |
286427 |
286453 |
286457 |
286459 |
286469 |
286477 |
286483 |
286487 |
286493 |
286499 |
286513 |
286519 |
286541 |
286543 |
286547 |
286553 |
286589 |
286591 |
286609 |
286613 |
286619 |
286633 |
286651 |
286673 |
286687 |
286697 |
286703 |
286711 |
286721 |
286733 |
286751 |
286753 |
286763 |
286771 |
286777 |
286789 |
286801 |
286813 |
286831 |
286859 |
286873 |
286927 |
286973 |
286981 |
286987 |
286999 |
287003 |
287047 |
287057 |
287059 |
287087 |
287093 |
287099 |
287107 |
287117 |
287137 |
287141 |
287149 |
287159 |
287167 |
287173 |
287179 |
287191 |
287219 |
287233 |
287237 |
287239 |
287251 |
287257 |
287269 |
287279 |
287281 |
287291 |
287297 |
287321 |
287327 |
287333 |
287341 |
287347 |
287383 |
287387 |
287393 |
287437 |
287449 |
287491 |
287501 |
287503 |
287537 |
287549 |
287557 |
287579 |
287597 |
287611 |
287629 |
287669 |
287671 |
287681 |
287689 |
287701 |
287731 |
287747 |
287783 |
287789 |
287801 |
287813 |
287821 |
287849 |
287851 |
287857 |
287863 |
287867 |
287873 |
287887 |
287921 |
287933 |
287939 |
287977 |
288007 |
288023 |
288049 |
288053 |
288061 |
288077 |
288089 |
288109 |
288137 |
288179 |
288181 |
288191 |
288199 |
288203 |
288209 |
288227 |
288241 |
288247 |
288257 |
288283 |
288293 |
288307 |
288313 |
288317 |
288349 |
288359 |
288361 |
288383 |
288389 |
288403 |
288413 |
288427 |
288433 |
288461 |
288467 |
288481 |
288493 |
288499 |
288527 |
288529 |
288539 |
288551 |
288559 |
288571 |
288577 |
288583 |
288647 |
288649 |
288653 |
288661 |
288679 |
288683 |
288689 |
288697 |
288731 |
288733 |
288751 |
288767 |
288773 |
288803 |
288817 |
288823 |
288833 |
288839 |
288851 |
288853 |
288877 |
288907 |
288913 |
288929 |
288931 |
288947 |
288973 |
288979 |
288989 |
288991 |
288997 |
289001 |
289019 |
289021 |
289031 |
289033 |
289039 |
289049 |
289063 |
289067 |
289099 |
289103 |
289109 |
289111 |
289127 |
289129 |
289139 |
289141 |
289151 |
289169 |
289171 |
289181 |
289189 |
289193 |
289213 |
289241 |
289243 |
289249 |
289253 |
289273 |
289283 |
289291 |
289297 |
289309 |
289319 |
289343 |
289349 |
289361 |
289369 |
289381 |
289397 |
289417 |
289423 |
289439 |
289453 |
289463 |
289469 |
289477 |
289489 |
289511 |
289543 |
289559 |
289573 |
289577 |
289589 |
289603 |
289607 |
289637 |
289643 |
289657 |
289669 |
289717 |
289721 |
289727 |
289733 |
289741 |
289759 |
289763 |
289771 |
289789 |
289837 |
289841 |
289843 |
289847 |
289853 |
289859 |
289871 |
289889 |
289897 |
289937 |
289951 |
289957 |
289967 |
289973 |
289987 |
289999 |
290011 |
290021 |
290023 |
290027 |
290033 |
290039 |
290041 |
290047 |
290057 |
290083 |
290107 |
290113 |
290119 |
290137 |
290141 |
290161 |
290183 |
290189 |
290201 |
290209 |
290219 |
290233 |
290243 |
290249 |
290317 |
290327 |
290347 |
290351 |
290359 |
290369 |
290383 |
290393 |
290399 |
290419 |
290429 |
290441 |
290443 |
290447 |
290471 |
290473 |
290489 |
290497 |
290509 |
290527 |
290531 |
290533 |
290539 |
290557 |
290593 |
290597 |
290611 |
290617 |
290621 |
290623 |
290627 |
290657 |
290659 |
290663 |
290669 |
290671 |
290677 |
290701 |
290707 |
290711 |
290737 |
290761 |
290767 |
290791 |
290803 |
290821 |
290827 |
290837 |
290839 |
290861 |
290869 |
290879 |
290897 |
290923 |
290959 |
290963 |
290971 |
290987 |
290993 |
290999 |
291007 |
291013 |
291037 |
291041 |
291043 |
291077 |
291089 |
291101 |
291103 |
291107 |
291113 |
291143 |
291167 |
291169 |
291173 |
291191 |
291199 |
291209 |
291217 |
291253 |
291257 |
291271 |
291287 |
291293 |
291299 |
291331 |
291337 |
291349 |
291359 |
291367 |
291371 |
291373 |
291377 |
291419 |
291437 |
291439 |
291443 |
291457 |
291481 |
291491 |
291503 |
291509 |
291521 |
291539 |
291547 |
291559 |
291563 |
291569 |
291619 |
291647 |
291649 |
291661 |
291677 |
291689 |
291691 |
291701 |
291721 |
291727 |
291743 |
291751 |
291779 |
291791 |
291817 |
291829 |
291833 |
291853 |
291857 |
291869 |
291877 |
291887 |
291899 |
291901 |
291923 |
291971 |
291979 |
291983 |
291997 |
292021 |
292027 |
292037 |
292057 |
292069 |
292079 |
292081 |
292091 |
292093 |
292133 |
292141 |
292147 |
292157 |
292181 |
292183 |
292223 |
292231 |
292241 |
292249 |
292267 |
292283 |
292301 |
292309 |
292319 |
292343 |
292351 |
292363 |
292367 |
292381 |
292393 |
292427 |
292441 |
292459 |
292469 |
292471 |
292477 |
292483 |
292489 |
292493 |
292517 |
292531 |
292541 |
292549 |
292561 |
292573 |
292577 |
292601 |
292627 |
292631 |
292661 |
292667 |
292673 |
292679 |
292693 |
292703 |
292709 |
292711 |
292717 |
292727 |
292753 |
292759 |
292777 |
292793 |
292801 |
292807 |
292819 |
292837 |
292841 |
292849 |
292867 |
292879 |
292909 |
292921 |
292933 |
292969 |
292973 |
292979 |
292993 |
293021 |
293071 |
293081 |
293087 |
293093 |
293099 |
293107 |
293123 |
293129 |
293147 |
293149 |
293173 |
293177 |
293179 |
293201 |
293207 |
293213 |
293221 |
293257 |
293261 |
293263 |
293269 |
293311 |
293329 |
293339 |
293351 |
293357 |
293399 |
293413 |
293431 |
293441 |
293453 |
293459 |
293467 |
293473 |
293483 |
293507 |
293543 |
293599 |
293603 |
293617 |
293621 |
293633 |
293639 |
293651 |
293659 |
293677 |
293681 |
293701 |
293717 |
293723 |
293729 |
293749 |
293767 |
293773 |
293791 |
293803 |
293827 |
293831 |
293861 |
293863 |
293893 |
293899 |
293941 |
293957 |
293983 |
293989 |
293999 |
294001 |
294013 |
294023 |
294029 |
294043 |
294053 |
294059 |
294067 |
294103 |
294127 |
294131 |
294149 |
294157 |
294167 |
294169 |
294179 |
294181 |
294199 |
294211 |
294223 |
294227 |
294241 |
294247 |
294251 |
294269 |
294277 |
294289 |
294293 |
294311 |
294313 |
294317 |
294319 |
294337 |
294341 |
294347 |
294353 |
294383 |
294391 |
294397 |
294403 |
294431 |
294439 |
294461 |
294467 |
294479 |
294499 |
294509 |
294523 |
294529 |
294551 |
294563 |
294629 |
294641 |
294647 |
294649 |
294659 |
294673 |
294703 |
294731 |
294751 |
294757 |
294761 |
294773 |
294781 |
294787 |
294793 |
294799 |
294803 |
294809 |
294821 |
294829 |
294859 |
294869 |
294887 |
294893 |
294911 |
294919 |
294923 |
294947 |
294949 |
294953 |
294979 |
294989 |
294991 |
294997 |
295007 |
295033 |
295037 |
295039 |
295049 |
295073 |
295079 |
295081 |
295111 |
295123 |
295129 |
295153 |
295187 |
295199 |
295201 |
295219 |
295237 |
295247 |
295259 |
295271 |
295277 |
295283 |
295291 |
295313 |
295319 |
295333 |
295357 |
295363 |
295387 |
295411 |
295417 |
295429 |
295433 |
295439 |
295441 |
295459 |
295513 |
295517 |
295541 |
295553 |
295567 |
295571 |
295591 |
295601 |
295663 |
295693 |
295699 |
295703 |
295727 |
295751 |
295759 |
295769 |
295777 |
295787 |
295819 |
295831 |
295837 |
295843 |
295847 |
295853 |
295861 |
295871 |
295873 |
295877 |
295879 |
295901 |
295903 |
295909 |
295937 |
295943 |
295949 |
295951 |
295961 |
295973 |
295993 |
296011 |
296017 |
296027 |
296041 |
296047 |
296071 |
296083 |
296099 |
296117 |
296129 |
296137 |
296159 |
296183 |
296201 |
296213 |
296221 |
296237 |
296243 |
296249 |
296251 |
296269 |
296273 |
296279 |
296287 |
296299 |
296347 |
296353 |
296363 |
296369 |
296377 |
296437 |
296441 |
296473 |
296477 |
296479 |
296489 |
296503 |
296507 |
296509 |
296519 |
296551 |
296557 |
296561 |
296563 |
296579 |
296581 |
296587 |
296591 |
296627 |
296651 |
296663 |
296669 |
296683 |
296687 |
296693 |
296713 |
296719 |
296729 |
296731 |
296741 |
296749 |
296753 |
296767 |
296771 |
296773 |
296797 |
296801 |
296819 |
296827 |
296831 |
296833 |
296843 |
296909 |
296911 |
296921 |
296929 |
296941 |
296969 |
296971 |
296981 |
296983 |
296987 |
297019 |
297023 |
297049 |
297061 |
297067 |
297079 |
297083 |
297097 |
297113 |
297133 |
297151 |
297161 |
297169 |
297191 |
297233 |
297247 |
297251 |
297257 |
297263 |
297289 |
297317 |
297359 |
297371 |
297377 |
297391 |
297397 |
297403 |
297421 |
297439 |
297457 |
297467 |
297469 |
297481 |
297487 |
297503 |
297509 |
297523 |
297533 |
297581 |
297589 |
297601 |
297607 |
297613 |
297617 |
297623 |
297629 |
297641 |
297659 |
297683 |
297691 |
297707 |
297719 |
297727 |
297757 |
297779 |
297793 |
297797 |
297809 |
297811 |
297833 |
297841 |
297853 |
297881 |
297889 |
297893 |
297907 |
297911 |
297931 |
297953 |
297967 |
297971 |
297989 |
297991 |
298013 |
298021 |
298031 |
298043 |
298049 |
298063 |
298087 |
298093 |
298099 |
298153 |
298157 |
298159 |
298169 |
298171 |
298187 |
298201 |
298211 |
298213 |
298223 |
298237 |
298247 |
298261 |
298283 |
298303 |
298307 |
298327 |
298339 |
298343 |
298349 |
298369 |
298373 |
298399 |
298409 |
298411 |
298427 |
298451 |
298477 |
298483 |
298513 |
298559 |
298579 |
298583 |
298589 |
298601 |
298607 |
298621 |
298631 |
298651 |
298667 |
298679 |
298681 |
298687 |
298691 |
298693 |
298709 |
298723 |
298733 |
298757 |
298759 |
298777 |
298799 |
298801 |
298817 |
298819 |
298841 |
298847 |
298853 |
298861 |
298897 |
298937 |
298943 |
298993 |
298999 |
299011 |
299017 |
299027 |
299029 |
299053 |
299059 |
299063 |
299087 |
299099 |
299107 |
299113 |
299137 |
299147 |
299171 |
299179 |
299191 |
299197 |
299213 |
299239 |
299261 |
299281 |
299287 |
299311 |
299317 |
299329 |
299333 |
299357 |
299359 |
299363 |
299371 |
299389 |
299393 |
299401 |
299417 |
299419 |
299447 |
299471 |
299473 |
299477 |
299479 |
299501 |
299513 |
299521 |
299527 |
299539 |
299567 |
299569 |
299603 |
299617 |
299623 |
299653 |
299671 |
299681 |
299683 |
299699 |
299701 |
299711 |
299723 |
299731 |
299743 |
299749 |
299771 |
299777 |
299807 |
299843 |
299857 |
299861 |
299881 |
299891 |
299903 |
299909 |
299933 |
299941 |
299951 |
299969 |
299977 |
299983 |
299993 |
300007 |
300017 |
300023 |
300043 |
300073 |
300089 |
300109 |
300119 |
300137 |
300149 |
300151 |
300163 |
300187 |
300191 |
300193 |
300221 |
300229 |
300233 |
300239 |
300247 |
300277 |
300299 |
300301 |
300317 |
300319 |
300323 |
300331 |
300343 |
300347 |
300367 |
300397 |
300413 |
300427 |
300431 |
300439 |
300463 |
300481 |
300491 |
300493 |
300497 |
300499 |
300511 |
300557 |
300569 |
300581 |
300583 |
300589 |
300593 |
300623 |
300631 |
300647 |
300649 |
300661 |
300667 |
300673 |
300683 |
300691 |
300719 |
300721 |
300733 |
300739 |
300743 |
300749 |
300757 |
300761 |
300779 |
300787 |
300799 |
300809 |
300821 |
300823 |
300851 |
300857 |
300869 |
300877 |
300889 |
300893 |
300929 |
300931 |
300953 |
300961 |
300967 |
300973 |
300977 |
300997 |
301013 |
301027 |
301039 |
301051 |
301057 |
301073 |
301079 |
301123 |
301127 |
301141 |
301153 |
301159 |
301177 |
301181 |
301183 |
301211 |
301219 |
301237 |
301241 |
301243 |
301247 |
301267 |
301303 |
301319 |
301331 |
301333 |
301349 |
301361 |
301363 |
301381 |
301403 |
301409 |
301423 |
301429 |
301447 |
301459 |
301463 |
301471 |
301487 |
301489 |
301493 |
301501 |
301531 |
301577 |
301579 |
301583 |
301591 |
301601 |
301619 |
301627 |
301643 |
301649 |
301657 |
301669 |
301673 |
301681 |
301703 |
301711 |
301747 |
301751 |
301753 |
301759 |
301789 |
301793 |
301813 |
301831 |
301841 |
301843 |
301867 |
301877 |
301897 |
301901 |
301907 |
301913 |
301927 |
301933 |
301943 |
301949 |
301979 |
301991 |
301993 |
301997 |
301999 |
302009 |
302053 |
302111 |
302123 |
302143 |
302167 |
302171 |
302173 |
302189 |
302191 |
302213 |
302221 |
302227 |
302261 |
302273 |
302279 |
302287 |
302297 |
302299 |
302317 |
302329 |
302399 |
302411 |
302417 |
302429 |
302443 |
302459 |
302483 |
302507 |
302513 |
302551 |
302563 |
302567 |
302573 |
302579 |
302581 |
302587 |
302593 |
302597 |
302609 |
302629 |
302647 |
302663 |
302681 |
302711 |
302723 |
302747 |
302759 |
302767 |
302779 |
302791 |
302801 |
302831 |
302833 |
302837 |
302843 |
302851 |
302857 |
302873 |
302891 |
302903 |
302909 |
302921 |
302927 |
302941 |
302959 |
302969 |
302971 |
302977 |
302983 |
302989 |
302999 |
303007 |
303011 |
303013 |
303019 |
303029 |
303049 |
303053 |
303073 |
303089 |
303091 |
303097 |
303119 |
303139 |
303143 |
303151 |
303157 |
303187 |
303217 |
303257 |
303271 |
303283 |
303287 |
303293 |
303299 |
303307 |
303313 |
303323 |
303337 |
303341 |
303361 |
303367 |
303371 |
303377 |
303379 |
303389 |
303409 |
303421 |
303431 |
303463 |
303469 |
303473 |
303491 |
303493 |
303497 |
303529 |
303539 |
303547 |
303551 |
303553 |
303571 |
303581 |
303587 |
303593 |
303613 |
303617 |
303619 |
303643 |
303647 |
303649 |
303679 |
303683 |
303689 |
303691 |
303703 |
303713 |
303727 |
303731 |
303749 |
303767 |
303781 |
303803 |
303817 |
303827 |
303839 |
303859 |
303871 |
303889 |
303907 |
303917 |
303931 |
303937 |
303959 |
303983 |
303997 |
304009 |
304013 |
304021 |
304033 |
304039 |
304049 |
304063 |
304067 |
304069 |
304081 |
304091 |
304099 |
304127 |
304151 |
304153 |
304163 |
304169 |
304193 |
304211 |
304217 |
304223 |
304253 |
304259 |
304279 |
304301 |
304303 |
304331 |
304349 |
304357 |
304363 |
304373 |
304391 |
304393 |
304411 |
304417 |
304429 |
304433 |
304439 |
304457 |
304459 |
304477 |
304481 |
304489 |
304501 |
304511 |
304517 |
304523 |
304537 |
304541 |
304553 |
304559 |
304561 |
304597 |
304609 |
304631 |
304643 |
304651 |
304663 |
304687 |
304709 |
304723 |
304729 |
304739 |
304751 |
304757 |
304763 |
304771 |
304781 |
304789 |
304807 |
304813 |
304831 |
304847 |
304849 |
304867 |
304879 |
304883 |
304897 |
304901 |
304903 |
304907 |
304933 |
304937 |
304943 |
304949 |
304961 |
304979 |
304981 |
305017 |
305021 |
305023 |
305029 |
305033 |
305047 |
305069 |
305093 |
305101 |
305111 |
305113 |
305119 |
305131 |
305143 |
305147 |
305209 |
305219 |
305231 |
305237 |
305243 |
305267 |
305281 |
305297 |
305329 |
305339 |
305351 |
305353 |
305363 |
305369 |
305377 |
305401 |
305407 |
305411 |
305413 |
305419 |
305423 |
305441 |
305449 |
305471 |
305477 |
305479 |
305483 |
305489 |
305497 |
305521 |
305533 |
305551 |
305563 |
305581 |
305593 |
305597 |
305603 |
305611 |
305621 |
305633 |
305639 |
305663 |
305717 |
305719 |
305741 |
305743 |
305749 |
305759 |
305761 |
305771 |
305783 |
305803 |
305821 |
305839 |
305849 |
305857 |
305861 |
305867 |
305873 |
305917 |
305927 |
305933 |
305947 |
305971 |
305999 |
306011 |
306023 |
306029 |
306041 |
306049 |
306083 |
306091 |
306121 |
306133 |
306139 |
306149 |
306157 |
306167 |
306169 |
306191 |
306193 |
306209 |
306239 |
306247 |
306253 |
306259 |
306263 |
306301 |
306329 |
306331 |
306347 |
306349 |
306359 |
306367 |
306377 |
306389 |
306407 |
306419 |
306421 |
306431 |
306437 |
306457 |
306463 |
306473 |
306479 |
306491 |
306503 |
306511 |
306517 |
306529 |
306533 |
306541 |
306563 |
306577 |
306587 |
306589 |
306643 |
306653 |
306661 |
306689 |
306701 |
306703 |
306707 |
306727 |
306739 |
306749 |
306763 |
306781 |
306809 |
306821 |
306827 |
306829 |
306847 |
306853 |
306857 |
306871 |
306877 |
306883 |
306893 |
306899 |
306913 |
306919 |
306941 |
306947 |
306949 |
306953 |
306991 |
307009 |
307019 |
307031 |
307033 |
307067 |
307079 |
307091 |
307093 |
307103 |
307121 |
307129 |
307147 |
307163 |
307169 |
307171 |
307187 |
307189 |
307201 |
307243 |
307253 |
307259 |
307261 |
307267 |
307273 |
307277 |
307283 |
307289 |
307301 |
307337 |
307339 |
307361 |
307367 |
307381 |
307397 |
307399 |
307409 |
307423 |
307451 |
307471 |
307481 |
307511 |
307523 |
307529 |
307537 |
307543 |
307577 |
307583 |
307589 |
307609 |
307627 |
307631 |
307633 |
307639 |
307651 |
307669 |
307687 |
307691 |
307693 |
307711 |
307733 |
307759 |
307817 |
307823 |
307831 |
307843 |
307859 |
307871 |
307873 |
307891 |
307903 |
307919 |
307939 |
307969 |
308003 |
308017 |
308027 |
308041 |
308051 |
308081 |
308093 |
308101 |
308107 |
308117 |
308129 |
308137 |
308141 |
308149 |
308153 |
308213 |
308219 |
308249 |
308263 |
308291 |
308293 |
308303 |
308309 |
308311 |
308317 |
308323 |
308327 |
308333 |
308359 |
308383 |
308411 |
308423 |
308437 |
308447 |
308467 |
308489 |
308491 |
308501 |
308507 |
308509 |
308519 |
308521 |
308527 |
308537 |
308551 |
308569 |
308573 |
308587 |
308597 |
308621 |
308639 |
308641 |
308663 |
308681 |
308701 |
308713 |
308723 |
308761 |
308773 |
308801 |
308809 |
308813 |
308827 |
308849 |
308851 |
308857 |
308887 |
308899 |
308923 |
308927 |
308929 |
308933 |
308939 |
308951 |
308989 |
308999 |
309007 |
309011 |
309013 |
309019 |
309031 |
309037 |
309059 |
309079 |
309083 |
309091 |
309107 |
309109 |
309121 |
309131 |
309137 |
309157 |
309167 |
309173 |
309193 |
309223 |
309241 |
309251 |
309259 |
309269 |
309271 |
309277 |
309289 |
309293 |
309311 |
309313 |
309317 |
309359 |
309367 |
309371 |
309391 |
309403 |
309433 |
309437 |
309457 |
309461 |
309469 |
309479 |
309481 |
309493 |
309503 |
309521 |
309523 |
309539 |
309541 |
309559 |
309571 |
309577 |
309583 |
309599 |
309623 |
309629 |
309637 |
309667 |
309671 |
309677 |
309707 |
309713 |
309731 |
309737 |
309769 |
309779 |
309781 |
309797 |
309811 |
309823 |
309851 |
309853 |
309857 |
309877 |
309899 |
309929 |
309931 |
309937 |
309977 |
309989 |
310019 |
310021 |
310027 |
310043 |
310049 |
310081 |
310087 |
310091 |
310111 |
310117 |
310127 |
310129 |
310169 |
310181 |
310187 |
310223 |
310229 |
310231 |
310237 |
310243 |
310273 |
310283 |
310291 |
310313 |
310333 |
310357 |
310361 |
310363 |
310379 |
310397 |
310423 |
310433 |
310439 |
310447 |
310459 |
310463 |
310481 |
310489 |
310501 |
310507 |
310511 |
310547 |
310553 |
310559 |
310567 |
310571 |
310577 |
310591 |
310627 |
310643 |
310663 |
310693 |
310697 |
310711 |
310721 |
310727 |
310729 |
310733 |
310741 |
310747 |
310771 |
310781 |
310789 |
310801 |
310819 |
310823 |
310829 |
310831 |
310861 |
310867 |
310883 |
310889 |
310901 |
310927 |
310931 |
310949 |
310969 |
310987 |
310997 |
311009 |
311021 |
311027 |
311033 |
311041 |
311099 |
311111 |
311123 |
311137 |
311153 |
311173 |
311177 |
311183 |
311189 |
311197 |
311203 |
311237 |
311279 |
311291 |
311293 |
311299 |
311303 |
311323 |
311329 |
311341 |
311347 |
311359 |
311371 |
311393 |
311407 |
311419 |
311447 |
311453 |
311473 |
311533 |
311537 |
311539 |
311551 |
311557 |
311561 |
311567 |
311569 |
311603 |
311609 |
311653 |
311659 |
311677 |
311681 |
311683 |
311687 |
311711 |
311713 |
311737 |
311743 |
311747 |
311749 |
311791 |
311803 |
311807 |
311821 |
311827 |
311867 |
311869 |
311881 |
311897 |
311951 |
311957 |
311963 |
311981 |
312007 |
312023 |
312029 |
312031 |
312043 |
312047 |
312071 |
312073 |
312083 |
312089 |
312101 |
312107 |
312121 |
312161 |
312197 |
312199 |
312203 |
312209 |
312211 |
312217 |
312229 |
312233 |
312241 |
312251 |
312253 |
312269 |
312281 |
312283 |
312289 |
312311 |
312313 |
312331 |
312343 |
312349 |
312353 |
312371 |
312383 |
312397 |
312401 |
312407 |
312413 |
312427 |
312451 |
312469 |
312509 |
312517 |
312527 |
312551 |
312553 |
312563 |
312581 |
312583 |
312589 |
312601 |
312617 |
312619 |
312623 |
312643 |
312673 |
312677 |
312679 |
312701 |
312703 |
312709 |
312727 |
312737 |
312743 |
312757 |
312773 |
312779 |
312799 |
312839 |
312841 |
312857 |
312863 |
312887 |
312899 |
312929 |
312931 |
312937 |
312941 |
312943 |
312967 |
312971 |
312979 |
312989 |
313003 |
313009 |
313031 |
313037 |
313081 |
313087 |
313109 |
313127 |
313129 |
313133 |
313147 |
313151 |
313153 |
313163 |
313207 |
313211 |
313219 |
313241 |
313249 |
313267 |
313273 |
313289 |
313297 |
313301 |
313307 |
313321 |
313331 |
313333 |
313343 |
313351 |
313373 |
313381 |
313387 |
313399 |
313409 |
313471 |
313477 |
313507 |
313517 |
313543 |
313549 |
313553 |
313561 |
313567 |
313571 |
313583 |
313589 |
313597 |
313603 |
313613 |
313619 |
313637 |
313639 |
313661 |
313669 |
313679 |
313699 |
313711 |
313717 |
313721 |
313727 |
313739 |
313741 |
313763 |
313777 |
313783 |
313829 |
313849 |
313853 |
313879 |
313883 |
313889 |
313897 |
313909 |
313921 |
313931 |
313933 |
313949 |
313961 |
313969 |
313979 |
313981 |
313987 |
313991 |
313993 |
313997 |
314003 |
314021 |
314059 |
314063 |
314077 |
314107 |
314113 |
314117 |
314129 |
314137 |
314159 |
314161 |
314173 |
314189 |
314213 |
314219 |
314227 |
314233 |
314239 |
314243 |
314257 |
314261 |
314263 |
314267 |
314299 |
314329 |
314339 |
314351 |
314357 |
314359 |
314399 |
314401 |
314407 |
314423 |
314441 |
314453 |
314467 |
314491 |
314497 |
314513 |
314527 |
314543 |
314549 |
314569 |
314581 |
314591 |
314597 |
314599 |
314603 |
314623 |
314627 |
314641 |
314651 |
314693 |
314707 |
314711 |
314719 |
314723 |
314747 |
314761 |
314771 |
314777 |
314779 |
314807 |
314813 |
314827 |
314851 |
314879 |
314903 |
314917 |
314927 |
314933 |
314953 |
314957 |
314983 |
314989 |
315011 |
315013 |
315037 |
315047 |
315059 |
315067 |
315083 |
315097 |
315103 |
315109 |
315127 |
315179 |
315181 |
315193 |
315199 |
315223 |
315247 |
315251 |
315257 |
315269 |
315281 |
315313 |
315349 |
315361 |
315373 |
315377 |
315389 |
315407 |
315409 |
315421 |
315437 |
315449 |
315451 |
315461 |
315467 |
315481 |
315493 |
315517 |
315521 |
315527 |
315529 |
315547 |
315551 |
315559 |
315569 |
315589 |
315593 |
315599 |
315613 |
315617 |
315631 |
315643 |
315671 |
315677 |
315691 |
315697 |
315701 |
315703 |
315739 |
315743 |
315751 |
315779 |
315803 |
315811 |
315829 |
315851 |
315857 |
315881 |
315883 |
315893 |
315899 |
315907 |
315937 |
315949 |
315961 |
315967 |
315977 |
316003 |
316031 |
316033 |
316037 |
316051 |
316067 |
316073 |
316087 |
316097 |
316109 |
316133 |
316139 |
316153 |
316177 |
316189 |
316193 |
316201 |
316213 |
316219 |
316223 |
316241 |
316243 |
316259 |
316271 |
316291 |
316297 |
316301 |
316321 |
316339 |
316343 |
316363 |
316373 |
316391 |
316403 |
316423 |
316429 |
316439 |
316453 |
316469 |
316471 |
316493 |
316499 |
316501 |
316507 |
316531 |
316567 |
316571 |
316577 |
316583 |
316621 |
316633 |
316637 |
316649 |
316661 |
316663 |
316681 |
316691 |
316697 |
316699 |
316703 |
316717 |
316753 |
316759 |
316769 |
316777 |
316783 |
316793 |
316801 |
316817 |
316819 |
316847 |
316853 |
316859 |
316861 |
316879 |
316891 |
316903 |
316907 |
316919 |
316937 |
316951 |
316957 |
316961 |
316991 |
317003 |
317011 |
317021 |
317029 |
317047 |
317063 |
317071 |
317077 |
317087 |
317089 |
317123 |
317159 |
317171 |
317179 |
317189 |
317197 |
317209 |
317227 |
317257 |
317263 |
317267 |
317269 |
317279 |
317321 |
317323 |
317327 |
317333 |
317351 |
317353 |
317363 |
317371 |
317399 |
317411 |
317419 |
317431 |
317437 |
317453 |
317459 |
317483 |
317489 |
317491 |
317503 |
317539 |
317557 |
317563 |
317587 |
317591 |
317593 |
317599 |
317609 |
317617 |
317621 |
317651 |
317663 |
317671 |
317693 |
317701 |
317711 |
317717 |
317729 |
317731 |
317741 |
317743 |
317771 |
317773 |
317777 |
317783 |
317789 |
317797 |
317827 |
317831 |
317839 |
317857 |
317887 |
317903 |
317921 |
317923 |
317957 |
317959 |
317963 |
317969 |
317971 |
317983 |
317987 |
318001 |
318007 |
318023 |
318077 |
318103 |
318107 |
318127 |
318137 |
318161 |
318173 |
318179 |
318181 |
318191 |
318203 |
318209 |
318211 |
318229 |
318233 |
318247 |
318259 |
318271 |
318281 |
318287 |
318289 |
318299 |
318301 |
318313 |
318319 |
318323 |
318337 |
318347 |
318349 |
318377 |
318403 |
318407 |
318419 |
318431 |
318443 |
318457 |
318467 |
318473 |
318503 |
318523 |
318557 |
318559 |
318569 |
318581 |
318589 |
318601 |
318629 |
318641 |
318653 |
318671 |
318677 |
318679 |
318683 |
318691 |
318701 |
318713 |
318737 |
318743 |
318749 |
318751 |
318781 |
318793 |
318809 |
318811 |
318817 |
318823 |
318833 |
318841 |
318863 |
318881 |
318883 |
318889 |
318907 |
318911 |
318917 |
318919 |
318949 |
318979 |
319001 |
319027 |
319031 |
319037 |
319049 |
319057 |
319061 |
319069 |
319093 |
319097 |
319117 |
319127 |
319129 |
319133 |
319147 |
319159 |
319169 |
319183 |
319201 |
319211 |
319223 |
319237 |
319259 |
319279 |
319289 |
319313 |
319321 |
319327 |
319339 |
319343 |
319351 |
319357 |
319387 |
319391 |
319399 |
319411 |
319427 |
319433 |
319439 |
319441 |
319453 |
319469 |
319477 |
319483 |
319489 |
319499 |
319511 |
319519 |
319541 |
319547 |
319567 |
319577 |
319589 |
319591 |
319601 |
319607 |
319639 |
319673 |
319679 |
319681 |
319687 |
319691 |
319699 |
319727 |
319729 |
319733 |
319747 |
319757 |
319763 |
319811 |
319817 |
319819 |
319829 |
319831 |
319849 |
319883 |
319897 |
319901 |
319919 |
319927 |
319931 |
319937 |
319967 |
319973 |
319981 |
319993 |
320009 |
320011 |
320027 |
320039 |
320041 |
320053 |
320057 |
320063 |
320081 |
320083 |
320101 |
320107 |
320113 |
320119 |
320141 |
320143 |
320149 |
320153 |
320179 |
320209 |
320213 |
320219 |
320237 |
320239 |
320267 |
320269 |
320273 |
320291 |
320293 |
320303 |
320317 |
320329 |
320339 |
320377 |
320387 |
320389 |
320401 |
320417 |
320431 |
320449 |
320471 |
320477 |
320483 |
320513 |
320521 |
320533 |
320539 |
320561 |
320563 |
320591 |
320609 |
320611 |
320627 |
320647 |
320657 |
320659 |
320669 |
320687 |
320693 |
320699 |
320713 |
320741 |
320759 |
320767 |
320791 |
320821 |
320833 |
320839 |
320843 |
320851 |
320861 |
320867 |
320899 |
320911 |
320923 |
320927 |
320939 |
320941 |
320953 |
321007 |
321017 |
321031 |
321037 |
321047 |
321053 |
321073 |
321077 |
321091 |
321109 |
321143 |
321163 |
321169 |
321187 |
321193 |
321199 |
321203 |
321221 |
321227 |
321239 |
321247 |
321289 |
321301 |
321311 |
321313 |
321319 |
321323 |
321329 |
321331 |
321341 |
321359 |
321367 |
321371 |
321383 |
321397 |
321403 |
321413 |
321427 |
321443 |
321449 |
321467 |
321469 |
321509 |
321547 |
321553 |
321569 |
321571 |
321577 |
321593 |
321611 |
321617 |
321619 |
321631 |
321647 |
321661 |
321679 |
321707 |
321709 |
321721 |
321733 |
321743 |
321751 |
321757 |
321779 |
321799 |
321817 |
321821 |
321823 |
321829 |
321833 |
321847 |
321851 |
321889 |
321901 |
321911 |
321947 |
321949 |
321961 |
321983 |
321991 |
322001 |
322009 |
322013 |
322037 |
322039 |
322051 |
322057 |
322067 |
322073 |
322079 |
322093 |
322097 |
322109 |
322111 |
322139 |
322169 |
322171 |
322193 |
322213 |
322229 |
322237 |
322243 |
322247 |
322249 |
322261 |
322271 |
322319 |
322327 |
322339 |
322349 |
322351 |
322397 |
322403 |
322409 |
322417 |
322429 |
322433 |
322459 |
322463 |
322501 |
322513 |
322519 |
322523 |
322537 |
322549 |
322559 |
322571 |
322573 |
322583 |
322589 |
322591 |
322607 |
322613 |
322627 |
322631 |
322633 |
322649 |
322669 |
322709 |
322727 |
322747 |
322757 |
322769 |
322771 |
322781 |
322783 |
322807 |
322849 |
322859 |
322871 |
322877 |
322891 |
322901 |
322919 |
322921 |
322939 |
322951 |
322963 |
322969 |
322997 |
322999 |
323003 |
323009 |
323027 |
323053 |
323077 |
323083 |
323087 |
323093 |
323101 |
323123 |
323131 |
323137 |
323149 |
323201 |
323207 |
323233 |
323243 |
323249 |
323251 |
323273 |
323333 |
323339 |
323341 |
323359 |
323369 |
323371 |
323377 |
323381 |
323383 |
323413 |
323419 |
323441 |
323443 |
323467 |
323471 |
323473 |
323507 |
323509 |
323537 |
323549 |
323567 |
323579 |
323581 |
323591 |
323597 |
323599 |
323623 |
323641 |
323647 |
323651 |
323699 |
323707 |
323711 |
323717 |
323759 |
323767 |
323789 |
323797 |
323801 |
323803 |
323819 |
323837 |
323879 |
323899 |
323903 |
323923 |
323927 |
323933 |
323951 |
323957 |
323987 |
324011 |
324031 |
324053 |
324067 |
324073 |
324089 |
324097 |
324101 |
324113 |
324119 |
324131 |
324143 |
324151 |
324161 |
324179 |
324199 |
324209 |
324211 |
324217 |
324223 |
324239 |
324251 |
324293 |
324299 |
324301 |
324319 |
324329 |
324341 |
324361 |
324391 |
324397 |
324403 |
324419 |
324427 |
324431 |
324437 |
324439 |
324449 |
324451 |
324469 |
324473 |
324491 |
324497 |
324503 |
324517 |
324523 |
324529 |
324557 |
324587 |
324589 |
324593 |
324617 |
324619 |
324637 |
324641 |
324647 |
324661 |
324673 |
324689 |
324697 |
324707 |
324733 |
324743 |
324757 |
324763 |
324773 |
324781 |
324791 |
324799 |
324809 |
324811 |
324839 |
324847 |
324869 |
324871 |
324889 |
324893 |
324901 |
324931 |
324941 |
324949 |
324953 |
324977 |
324979 |
324983 |
324991 |
324997 |
325001 |
325009 |
325019 |
325021 |
325027 |
325043 |
325051 |
325063 |
325079 |
325081 |
325093 |
325133 |
325153 |
325163 |
325181 |
325187 |
325189 |
325201 |
325217 |
325219 |
325229 |
325231 |
325249 |
325271 |
325301 |
325307 |
325309 |
325319 |
325333 |
325343 |
325349 |
325379 |
325411 |
325421 |
325439 |
325447 |
325453 |
325459 |
325463 |
325477 |
325487 |
325513 |
325517 |
325537 |
325541 |
325543 |
325571 |
325597 |
325607 |
325627 |
325631 |
325643 |
325667 |
325673 |
325681 |
325691 |
325693 |
325697 |
325709 |
325723 |
325729 |
325747 |
325751 |
325753 |
325769 |
325777 |
325781 |
325783 |
325807 |
325813 |
325849 |
325861 |
325877 |
325883 |
325889 |
325891 |
325901 |
325921 |
325939 |
325943 |
325951 |
325957 |
325987 |
325993 |
325999 |
326023 |
326057 |
326063 |
326083 |
326087 |
326099 |
326101 |
326113 |
326119 |
326141 |
326143 |
326147 |
326149 |
326153 |
326159 |
326171 |
326189 |
326203 |
326219 |
326251 |
326257 |
326309 |
326323 |
326351 |
326353 |
326369 |
326437 |
326441 |
326449 |
326467 |
326479 |
326497 |
326503 |
326537 |
326539 |
326549 |
326561 |
326563 |
326567 |
326581 |
326593 |
326597 |
326609 |
326611 |
326617 |
326633 |
326657 |
326659 |
326663 |
326681 |
326687 |
326693 |
326701 |
326707 |
326737 |
326741 |
326773 |
326779 |
326831 |
326863 |
326867 |
326869 |
326873 |
326881 |
326903 |
326923 |
326939 |
326941 |
326947 |
326951 |
326983 |
326993 |
326999 |
327001 |
327007 |
327011 |
327017 |
327023 |
327059 |
327071 |
327079 |
327127 |
327133 |
327163 |
327179 |
327193 |
327203 |
327209 |
327211 |
327247 |
327251 |
327263 |
327277 |
327289 |
327307 |
327311 |
327317 |
327319 |
327331 |
327337 |
327343 |
327347 |
327401 |
327407 |
327409 |
327419 |
327421 |
327433 |
327443 |
327463 |
327469 |
327473 |
327479 |
327491 |
327493 |
327499 |
327511 |
327517 |
327529 |
327553 |
327557 |
327559 |
327571 |
327581 |
327583 |
327599 |
327619 |
327629 |
327647 |
327661 |
327667 |
327673 |
327689 |
327707 |
327721 |
327737 |
327739 |
327757 |
327779 |
327797 |
327799 |
327809 |
327823 |
327827 |
327829 |
327839 |
327851 |
327853 |
327869 |
327871 |
327881 |
327889 |
327917 |
327923 |
327941 |
327953 |
327967 |
327979 |
327983 |
328007 |
328037 |
328043 |
328051 |
328061 |
328063 |
328067 |
328093 |
328103 |
328109 |
328121 |
328127 |
328129 |
328171 |
328177 |
328213 |
328243 |
328249 |
328271 |
328277 |
328283 |
328291 |
328303 |
328327 |
328331 |
328333 |
328343 |
328357 |
328373 |
328379 |
328381 |
328397 |
328411 |
328421 |
328429 |
328439 |
328481 |
328511 |
328513 |
328519 |
328543 |
328579 |
328589 |
328591 |
328619 |
328621 |
328633 |
328637 |
328639 |
328651 |
328667 |
328687 |
328709 |
328721 |
328753 |
328777 |
328781 |
328787 |
328789 |
328813 |
328829 |
328837 |
328847 |
328849 |
328883 |
328891 |
328897 |
328901 |
328919 |
328921 |
328931 |
328961 |
328981 |
329009 |
329027 |
329053 |
329059 |
329081 |
329083 |
329089 |
329101 |
329111 |
329123 |
329143 |
329167 |
329177 |
329191 |
329201 |
329207 |
329209 |
329233 |
329243 |
329257 |
329267 |
329269 |
329281 |
329293 |
329297 |
329299 |
329309 |
329317 |
329321 |
329333 |
329347 |
329387 |
329393 |
329401 |
329419 |
329431 |
329471 |
329473 |
329489 |
329503 |
329519 |
329533 |
329551 |
329557 |
329587 |
329591 |
329597 |
329603 |
329617 |
329627 |
329629 |
329639 |
329657 |
329663 |
329671 |
329677 |
329683 |
329687 |
329711 |
329717 |
329723 |
329729 |
329761 |
329773 |
329779 |
329789 |
329801 |
329803 |
329863 |
329867 |
329873 |
329891 |
329899 |
329941 |
329947 |
329951 |
329957 |
329969 |
329977 |
329993 |
329999 |
330017 |
330019 |
330037 |
330041 |
330047 |
330053 |
330061 |
330067 |
330097 |
330103 |
330131 |
330133 |
330139 |
330149 |
330167 |
330199 |
330203 |
330217 |
330227 |
330229 |
330233 |
330241 |
330247 |
330271 |
330287 |
330289 |
330311 |
330313 |
330329 |
330331 |
330347 |
330359 |
330383 |
330389 |
330409 |
330413 |
330427 |
330431 |
330433 |
330439 |
330469 |
330509 |
330557 |
330563 |
330569 |
330587 |
330607 |
330611 |
330623 |
330641 |
330643 |
330653 |
330661 |
330679 |
330683 |
330689 |
330697 |
330703 |
330719 |
330721 |
330731 |
330749 |
330767 |
330787 |
330791 |
330793 |
330821 |
330823 |
330839 |
330853 |
330857 |
330859 |
330877 |
330887 |
330899 |
330907 |
330917 |
330943 |
330983 |
330997 |
331013 |
331027 |
331031 |
331043 |
331063 |
331081 |
331099 |
331127 |
331141 |
331147 |
331153 |
331159 |
331171 |
331183 |
331207 |
331213 |
331217 |
331231 |
331241 |
331249 |
331259 |
331277 |
331283 |
331301 |
331307 |
331319 |
331333 |
331337 |
331339 |
331349 |
331367 |
331369 |
331391 |
331399 |
331423 |
331447 |
331451 |
331489 |
331501 |
331511 |
331519 |
331523 |
331537 |
331543 |
331547 |
331549 |
331553 |
331577 |
331579 |
331589 |
331603 |
331609 |
331613 |
331651 |
331663 |
331691 |
331693 |
331697 |
331711 |
331739 |
331753 |
331769 |
331777 |
331781 |
331801 |
331819 |
331841 |
331843 |
331871 |
331883 |
331889 |
331897 |
331907 |
331909 |
331921 |
331937 |
331943 |
331957 |
331967 |
331973 |
331997 |
331999 |
332009 |
332011 |
332039 |
332053 |
332069 |
332081 |
332099 |
332113 |
332117 |
332147 |
332159 |
332161 |
332179 |
332183 |
332191 |
332201 |
332203 |
332207 |
332219 |
332221 |
332251 |
332263 |
332273 |
332287 |
332303 |
332309 |
332317 |
332393 |
332399 |
332411 |
332417 |
332441 |
332447 |
332461 |
332467 |
332471 |
332473 |
332477 |
332489 |
332509 |
332513 |
332561 |
332567 |
332569 |
332573 |
332611 |
332617 |
332623 |
332641 |
332687 |
332699 |
332711 |
332729 |
332743 |
332749 |
332767 |
332779 |
332791 |
332803 |
332837 |
332851 |
332873 |
332881 |
332887 |
332903 |
332921 |
332933 |
332947 |
332951 |
332987 |
332989 |
332993 |
333019 |
333023 |
333029 |
333031 |
333041 |
333049 |
333071 |
333097 |
333101 |
333103 |
333107 |
333131 |
333139 |
333161 |
333187 |
333197 |
333209 |
333227 |
333233 |
333253 |
333269 |
333271 |
333283 |
333287 |
333299 |
333323 |
333331 |
333337 |
333341 |
333349 |
333367 |
333383 |
333397 |
333419 |
333427 |
333433 |
333439 |
333449 |
333451 |
333457 |
333479 |
333491 |
333493 |
333497 |
333503 |
333517 |
333533 |
333539 |
333563 |
333581 |
333589 |
333623 |
333631 |
333647 |
333667 |
333673 |
333679 |
333691 |
333701 |
333713 |
333719 |
333721 |
333737 |
333757 |
333769 |
333779 |
333787 |
333791 |
333793 |
333803 |
333821 |
333857 |
333871 |
333911 |
333923 |
333929 |
333941 |
333959 |
333973 |
333989 |
333997 |
334021 |
334031 |
334043 |
334049 |
334057 |
334069 |
334093 |
334099 |
334127 |
334133 |
334157 |
334171 |
334177 |
334183 |
334189 |
334199 |
334231 |
334247 |
334261 |
334289 |
334297 |
334319 |
334331 |
334333 |
334349 |
334363 |
334379 |
334387 |
334393 |
334403 |
334421 |
334423 |
334427 |
334429 |
334447 |
334487 |
334493 |
334507 |
334511 |
334513 |
334541 |
334547 |
334549 |
334561 |
334603 |
334619 |
334637 |
334643 |
334651 |
334661 |
334667 |
334681 |
334693 |
334699 |
334717 |
334721 |
334727 |
334751 |
334753 |
334759 |
334771 |
334777 |
334783 |
334787 |
334793 |
334843 |
334861 |
334877 |
334889 |
334891 |
334897 |
334931 |
334963 |
334973 |
334987 |
334991 |
334993 |
335009 |
335021 |
335029 |
335033 |
335047 |
335051 |
335057 |
335077 |
335081 |
335089 |
335107 |
335113 |
335117 |
335123 |
335131 |
335149 |
335161 |
335171 |
335173 |
335207 |
335213 |
335221 |
335249 |
335261 |
335273 |
335281 |
335299 |
335323 |
335341 |
335347 |
335381 |
335383 |
335411 |
335417 |
335429 |
335449 |
335453 |
335459 |
335473 |
335477 |
335507 |
335519 |
335527 |
335539 |
335557 |
335567 |
335579 |
335591 |
335609 |
335633 |
335641 |
335653 |
335663 |
335669 |
335681 |
335689 |
335693 |
335719 |
335729 |
335743 |
335747 |
335771 |
335807 |
335809 |
335813 |
335821 |
335833 |
335843 |
335857 |
335879 |
335893 |
335897 |
335917 |
335941 |
335953 |
335957 |
335999 |
336029 |
336031 |
336041 |
336059 |
336079 |
336101 |
336103 |
336109 |
336113 |
336121 |
336143 |
336151 |
336157 |
336163 |
336181 |
336199 |
336211 |
336221 |
336223 |
336227 |
336239 |
336247 |
336251 |
336253 |
336263 |
336307 |
336317 |
336353 |
336361 |
336373 |
336397 |
336403 |
336419 |
336437 |
336463 |
336491 |
336499 |
336503 |
336521 |
336527 |
336529 |
336533 |
336551 |
336563 |
336571 |
336577 |
336587 |
336593 |
336599 |
336613 |
336631 |
336643 |
336649 |
336653 |
336667 |
336671 |
336683 |
336689 |
336703 |
336727 |
336757 |
336761 |
336767 |
336769 |
336773 |
336793 |
336799 |
336803 |
336823 |
336827 |
336829 |
336857 |
336863 |
336871 |
336887 |
336899 |
336901 |
336911 |
336929 |
336961 |
336977 |
336983 |
336989 |
336997 |
337013 |
337021 |
337031 |
337039 |
337049 |
337069 |
337081 |
337091 |
337097 |
337121 |
337153 |
337189 |
337201 |
337213 |
337217 |
337219 |
337223 |
337261 |
337277 |
337279 |
337283 |
337291 |
337301 |
337313 |
337327 |
337339 |
337343 |
337349 |
337361 |
337367 |
337369 |
337397 |
337411 |
337427 |
337453 |
337457 |
337487 |
337489 |
337511 |
337517 |
337529 |
337537 |
337541 |
337543 |
337583 |
337607 |
337609 |
337627 |
337633 |
337639 |
337651 |
337661 |
337669 |
337681 |
337691 |
337697 |
337721 |
337741 |
337751 |
337759 |
337781 |
337793 |
337817 |
337837 |
337853 |
337859 |
337861 |
337867 |
337871 |
337873 |
337891 |
337901 |
337903 |
337907 |
337919 |
337949 |
337957 |
337969 |
337973 |
337999 |
338017 |
338027 |
338033 |
338119 |
338137 |
338141 |
338153 |
338159 |
338161 |
338167 |
338171 |
338183 |
338197 |
338203 |
338207 |
338213 |
338231 |
338237 |
338251 |
338263 |
338267 |
338269 |
338279 |
338287 |
338293 |
338297 |
338309 |
338321 |
338323 |
338339 |
338341 |
338347 |
338369 |
338383 |
338389 |
338407 |
338411 |
338413 |
338423 |
338431 |
338449 |
338461 |
338473 |
338477 |
338497 |
338531 |
338543 |
338563 |
338567 |
338573 |
338579 |
338581 |
338609 |
338659 |
338669 |
338683 |
338687 |
338707 |
338717 |
338731 |
338747 |
338753 |
338761 |
338773 |
338777 |
338791 |
338803 |
338839 |
338851 |
338857 |
338867 |
338893 |
338909 |
338927 |
338959 |
338993 |
338999 |
339023 |
339049 |
339067 |
339071 |
339091 |
339103 |
339107 |
339121 |
339127 |
339137 |
339139 |
339151 |
339161 |
339173 |
339187 |
339211 |
339223 |
339239 |
339247 |
339257 |
339263 |
339289 |
339307 |
339323 |
339331 |
339341 |
339373 |
339389 |
339413 |
339433 |
339467 |
339491 |
339517 |
339527 |
339539 |
339557 |
339583 |
339589 |
339601 |
339613 |
339617 |
339631 |
339637 |
339649 |
339653 |
339659 |
339671 |
339673 |
339679 |
339707 |
339727 |
339749 |
339751 |
339761 |
339769 |
339799 |
339811 |
339817 |
339821 |
339827 |
339839 |
339841 |
339863 |
339887 |
339907 |
339943 |
339959 |
339991 |
340007 |
340027 |
340031 |
340037 |
340049 |
340057 |
340061 |
340063 |
340073 |
340079 |
340103 |
340111 |
340117 |
340121 |
340127 |
340129 |
340169 |
340183 |
340201 |
340211 |
340237 |
340261 |
340267 |
340283 |
340297 |
340321 |
340337 |
340339 |
340369 |
340381 |
340387 |
340393 |
340397 |
340409 |
340429 |
340447 |
340451 |
340453 |
340477 |
340481 |
340519 |
340541 |
340559 |
340573 |
340577 |
340579 |
340583 |
340591 |
340601 |
340619 |
340633 |
340643 |
340649 |
340657 |
340661 |
340687 |
340693 |
340709 |
340723 |
340757 |
340777 |
340787 |
340789 |
340793 |
340801 |
340811 |
340819 |
340849 |
340859 |
340877 |
340889 |
340897 |
340903 |
340909 |
340913 |
340919 |
340927 |
340931 |
340933 |
340937 |
340939 |
340957 |
340979 |
340999 |
341017 |
341027 |
341041 |
341057 |
341059 |
341063 |
341083 |
341087 |
341123 |
341141 |
341171 |
341179 |
341191 |
341203 |
341219 |
341227 |
341233 |
341269 |
341273 |
341281 |
341287 |
341293 |
341303 |
341311 |
341321 |
341323 |
341333 |
341339 |
341347 |
341357 |
341423 |
341443 |
341447 |
341459 |
341461 |
341477 |
341491 |
341501 |
341507 |
341521 |
341543 |
341557 |
341569 |
341587 |
341597 |
341603 |
341617 |
341623 |
341629 |
341641 |
341647 |
341659 |
341681 |
341687 |
341701 |
341729 |
341743 |
341749 |
341771 |
341773 |
341777 |
341813 |
341821 |
341827 |
341839 |
341851 |
341863 |
341879 |
341911 |
341927 |
341947 |
341951 |
341953 |
341959 |
341963 |
341983 |
341993 |
342037 |
342047 |
342049 |
342059 |
342061 |
342071 |
342073 |
342077 |
342101 |
342107 |
342131 |
342143 |
342179 |
342187 |
342191 |
342197 |
342203 |
342211 |
342233 |
342239 |
342241 |
342257 |
342281 |
342283 |
342299 |
342319 |
342337 |
342341 |
342343 |
342347 |
342359 |
342371 |
342373 |
342379 |
342389 |
342413 |
342421 |
342449 |
342451 |
342467 |
342469 |
342481 |
342497 |
342521 |
342527 |
342547 |
342553 |
342569 |
342593 |
342599 |
342607 |
342647 |
342653 |
342659 |
342673 |
342679 |
342691 |
342697 |
342733 |
342757 |
342761 |
342791 |
342799 |
342803 |
342821 |
342833 |
342841 |
342847 |
342863 |
342869 |
342871 |
342889 |
342899 |
342929 |
342949 |
342971 |
342989 |
343019 |
343037 |
343051 |
343061 |
343073 |
343081 |
343087 |
343127 |
343141 |
343153 |
343163 |
343169 |
343177 |
343193 |
343199 |
343219 |
343237 |
343243 |
343253 |
343261 |
343267 |
343289 |
343303 |
343307 |
343309 |
343313 |
343327 |
343333 |
343337 |
343373 |
343379 |
343381 |
343391 |
343393 |
343411 |
343423 |
343433 |
343481 |
343489 |
343517 |
343529 |
343531 |
343543 |
343547 |
343559 |
343561 |
343579 |
343583 |
343589 |
343591 |
343601 |
343627 |
343631 |
343639 |
343649 |
343661 |
343667 |
343687 |
343709 |
343727 |
343769 |
343771 |
343787 |
343799 |
343801 |
343813 |
343817 |
343823 |
343829 |
343831 |
343891 |
343897 |
343901 |
343913 |
343933 |
343939 |
343943 |
343951 |
343963 |
343997 |
344017 |
344021 |
344039 |
344053 |
344083 |
344111 |
344117 |
344153 |
344161 |
344167 |
344171 |
344173 |
344177 |
344189 |
344207 |
344209 |
344213 |
344221 |
344231 |
344237 |
344243 |
344249 |
344251 |
344257 |
344263 |
344269 |
344273 |
344291 |
344293 |
344321 |
344327 |
344347 |
344353 |
344363 |
344371 |
344417 |
344423 |
344429 |
344453 |
344479 |
344483 |
344497 |
344543 |
344567 |
344587 |
344599 |
344611 |
344621 |
344629 |
344639 |
344653 |
344671 |
344681 |
344683 |
344693 |
344719 |
344749 |
344753 |
344759 |
344791 |
344797 |
344801 |
344807 |
344819 |
344821 |
344843 |
344857 |
344863 |
344873 |
344887 |
344893 |
344909 |
344917 |
344921 |
344941 |
344957 |
344959 |
344963 |
344969 |
344987 |
345001 |
345011 |
345017 |
345019 |
345041 |
345047 |
345067 |
345089 |
345109 |
345133 |
345139 |
345143 |
345181 |
345193 |
345221 |
345227 |
345229 |
345259 |
345263 |
345271 |
345307 |
345311 |
345329 |
345379 |
345413 |
345431 |
345451 |
345461 |
345463 |
345473 |
345479 |
345487 |
345511 |
345517 |
345533 |
345547 |
345551 |
345571 |
345577 |
345581 |
345599 |
345601 |
345607 |
345637 |
345643 |
345647 |
345659 |
345673 |
345679 |
345689 |
345701 |
345707 |
345727 |
345731 |
345733 |
345739 |
345749 |
345757 |
345769 |
345773 |
345791 |
345803 |
345811 |
345817 |
345823 |
345853 |
345869 |
345881 |
345887 |
345889 |
345907 |
345923 |
345937 |
345953 |
345979 |
345997 |
346013 |
346039 |
346043 |
346051 |
346079 |
346091 |
346097 |
346111 |
346117 |
346133 |
346139 |
346141 |
346147 |
346169 |
346187 |
346201 |
346207 |
346217 |
346223 |
346259 |
346261 |
346277 |
346303 |
346309 |
346321 |
346331 |
346337 |
346349 |
346361 |
346369 |
346373 |
346391 |
346393 |
346397 |
346399 |
346417 |
346421 |
346429 |
346433 |
346439 |
346441 |
346447 |
346453 |
346469 |
346501 |
346529 |
346543 |
346547 |
346553 |
346559 |
346561 |
346589 |
346601 |
346607 |
346627 |
346639 |
346649 |
346651 |
346657 |
346667 |
346669 |
346699 |
346711 |
346721 |
346739 |
346751 |
346763 |
346793 |
346831 |
346849 |
346867 |
346873 |
346877 |
346891 |
346903 |
346933 |
346939 |
346943 |
346961 |
346963 |
347003 |
347033 |
347041 |
347051 |
347057 |
347059 |
347063 |
347069 |
347071 |
347099 |
347129 |
347131 |
347141 |
347143 |
347161 |
347167 |
347173 |
347177 |
347183 |
347197 |
347201 |
347209 |
347227 |
347233 |
347239 |
347251 |
347257 |
347287 |
347297 |
347299 |
347317 |
347329 |
347341 |
347359 |
347401 |
347411 |
347437 |
347443 |
347489 |
347509 |
347513 |
347519 |
347533 |
347539 |
347561 |
347563 |
347579 |
347587 |
347591 |
347609 |
347621 |
347629 |
347651 |
347671 |
347707 |
347717 |
347729 |
347731 |
347747 |
347759 |
347771 |
347773 |
347779 |
347801 |
347813 |
347821 |
347849 |
347873 |
347887 |
347891 |
347899 |
347929 |
347933 |
347951 |
347957 |
347959 |
347969 |
347981 |
347983 |
347987 |
347989 |
347993 |
348001 |
348011 |
348017 |
348031 |
348043 |
348053 |
348077 |
348083 |
348097 |
348149 |
348163 |
348181 |
348191 |
348209 |
348217 |
348221 |
348239 |
348241 |
348247 |
348253 |
348259 |
348269 |
348287 |
348307 |
348323 |
348353 |
348367 |
348389 |
348401 |
348407 |
348419 |
348421 |
348431 |
348433 |
348437 |
348443 |
348451 |
348457 |
348461 |
348463 |
348487 |
348527 |
348547 |
348553 |
348559 |
348563 |
348571 |
348583 |
348587 |
348617 |
348629 |
348637 |
348643 |
348661 |
348671 |
348709 |
348731 |
348739 |
348757 |
348763 |
348769 |
348779 |
348811 |
348827 |
348833 |
348839 |
348851 |
348883 |
348889 |
348911 |
348917 |
348919 |
348923 |
348937 |
348949 |
348989 |
348991 |
349007 |
349039 |
349043 |
349051 |
349079 |
349081 |
349093 |
349099 |
349109 |
349121 |
349133 |
349171 |
349177 |
349183 |
349187 |
349199 |
349207 |
349211 |
349241 |
349291 |
349303 |
349313 |
349331 |
349337 |
349343 |
349357 |
349369 |
349373 |
349379 |
349381 |
349387 |
349397 |
349399 |
349403 |
349409 |
349411 |
349423 |
349471 |
349477 |
349483 |
349493 |
349499 |
349507 |
349519 |
349529 |
349553 |
349567 |
349579 |
349589 |
349603 |
349637 |
349663 |
349667 |
349697 |
349709 |
349717 |
349729 |
349753 |
349759 |
349787 |
349793 |
349801 |
349813 |
349819 |
349829 |
349831 |
349837 |
349841 |
349849 |
349871 |
349903 |
349907 |
349913 |
349919 |
349927 |
349931 |
349933 |
349939 |
349949 |
349963 |
349967 |
349981 |
350003 |
350029 |
350033 |
350039 |
350087 |
350089 |
350093 |
350107 |
350111 |
350137 |
350159 |
350179 |
350191 |
350213 |
350219 |
350237 |
350249 |
350257 |
350281 |
350293 |
350347 |
350351 |
350377 |
350381 |
350411 |
350423 |
350429 |
350431 |
350437 |
350443 |
350447 |
350453 |
350459 |
350503 |
350521 |
350549 |
350561 |
350563 |
350587 |
350593 |
350617 |
350621 |
350629 |
350657 |
350663 |
350677 |
350699 |
350711 |
350719 |
350729 |
350731 |
350737 |
350741 |
350747 |
350767 |
350771 |
350783 |
350789 |
350803 |
350809 |
350843 |
350851 |
350869 |
350881 |
350887 |
350891 |
350899 |
350941 |
350947 |
350963 |
350971 |
350981 |
350983 |
350989 |
351011 |
351023 |
351031 |
351037 |
351041 |
351047 |
351053 |
351059 |
351061 |
351077 |
351079 |
351097 |
351121 |
351133 |
351151 |
351157 |
351179 |
351217 |
351223 |
351229 |
351257 |
351259 |
351269 |
351287 |
351289 |
351293 |
351301 |
351311 |
351341 |
351343 |
351347 |
351359 |
351361 |
351383 |
351391 |
351397 |
351401 |
351413 |
351427 |
351437 |
351457 |
351469 |
351479 |
351497 |
351503 |
351517 |
351529 |
351551 |
351563 |
351587 |
351599 |
351643 |
351653 |
351661 |
351667 |
351691 |
351707 |
351727 |
351731 |
351733 |
351749 |
351751 |
351763 |
351773 |
351779 |
351797 |
351803 |
351811 |
351829 |
351847 |
351851 |
351859 |
351863 |
351887 |
351913 |
351919 |
351929 |
351931 |
351959 |
351971 |
351991 |
352007 |
352021 |
352043 |
352049 |
352057 |
352069 |
352073 |
352081 |
352097 |
352109 |
352111 |
352123 |
352133 |
352181 |
352193 |
352201 |
352217 |
352229 |
352237 |
352249 |
352267 |
352271 |
352273 |
352301 |
352309 |
352327 |
352333 |
352349 |
352357 |
352361 |
352367 |
352369 |
352381 |
352399 |
352403 |
352409 |
352411 |
352421 |
352423 |
352441 |
352459 |
352463 |
352481 |
352483 |
352489 |
352493 |
352511 |
352523 |
352543 |
352549 |
352579 |
352589 |
352601 |
352607 |
352619 |
352633 |
352637 |
352661 |
352691 |
352711 |
352739 |
352741 |
352753 |
352757 |
352771 |
352813 |
352817 |
352819 |
352831 |
352837 |
352841 |
352853 |
352867 |
352883 |
352907 |
352909 |
352931 |
352939 |
352949 |
352951 |
352973 |
352991 |
353011 |
353021 |
353047 |
353053 |
353057 |
353069 |
353081 |
353099 |
353117 |
353123 |
353137 |
353147 |
353149 |
353161 |
353173 |
353179 |
353201 |
353203 |
353237 |
353263 |
353293 |
353317 |
353321 |
353329 |
353333 |
353341 |
353359 |
353389 |
353401 |
353411 |
353429 |
353443 |
353453 |
353459 |
353471 |
353473 |
353489 |
353501 |
353527 |
353531 |
353557 |
353567 |
353603 |
353611 |
353621 |
353627 |
353629 |
353641 |
353653 |
353657 |
353677 |
353681 |
353687 |
353699 |
353711 |
353737 |
353747 |
353767 |
353777 |
353783 |
353797 |
353807 |
353813 |
353819 |
353833 |
353867 |
353869 |
353879 |
353891 |
353897 |
353911 |
353917 |
353921 |
353929 |
353939 |
353963 |
354001 |
354007 |
354017 |
354023 |
354031 |
354037 |
354041 |
354043 |
354047 |
354073 |
354091 |
354097 |
354121 |
354139 |
354143 |
354149 |
354163 |
354169 |
354181 |
354209 |
354247 |
354251 |
354253 |
354257 |
354259 |
354271 |
354301 |
354307 |
354313 |
354317 |
354323 |
354329 |
354337 |
354353 |
354371 |
354373 |
354377 |
354383 |
354391 |
354401 |
354421 |
354439 |
354443 |
354451 |
354461 |
354463 |
354469 |
354479 |
354533 |
354539 |
354551 |
354553 |
354581 |
354587 |
354619 |
354643 |
354647 |
354661 |
354667 |
354677 |
354689 |
354701 |
354703 |
354727 |
354737 |
354743 |
354751 |
354763 |
354779 |
354791 |
354799 |
354829 |
354833 |
354839 |
354847 |
354869 |
354877 |
354881 |
354883 |
354911 |
354953 |
354961 |
354971 |
354973 |
354979 |
354983 |
354997 |
355007 |
355009 |
355027 |
355031 |
355037 |
355039 |
355049 |
355057 |
355063 |
355073 |
355087 |
355093 |
355099 |
355109 |
355111 |
355127 |
355139 |
355171 |
355193 |
355211 |
355261 |
355297 |
355307 |
355321 |
355331 |
355339 |
355343 |
355361 |
355363 |
355379 |
355417 |
355427 |
355441 |
355457 |
355463 |
355483 |
355499 |
355501 |
355507 |
355513 |
355517 |
355519 |
355529 |
355541 |
355549 |
355559 |
355571 |
355573 |
355591 |
355609 |
355633 |
355643 |
355651 |
355669 |
355679 |
355697 |
355717 |
355721 |
355723 |
355753 |
355763 |
355777 |
355783 |
355799 |
355811 |
355819 |
355841 |
355847 |
355853 |
355867 |
355891 |
355909 |
355913 |
355933 |
355937 |
355939 |
355951 |
355967 |
355969 |
356023 |
356039 |
356077 |
356093 |
356101 |
356113 |
356123 |
356129 |
356137 |
356141 |
356143 |
356171 |
356173 |
356197 |
356219 |
356243 |
356261 |
356263 |
356287 |
356299 |
356311 |
356327 |
356333 |
356351 |
356387 |
356399 |
356441 |
356443 |
356449 |
356453 |
356467 |
356479 |
356501 |
356509 |
356533 |
356549 |
356561 |
356563 |
356567 |
356579 |
356591 |
356621 |
356647 |
356663 |
356693 |
356701 |
356731 |
356737 |
356749 |
356761 |
356803 |
356819 |
356821 |
356831 |
356869 |
356887 |
356893 |
356927 |
356929 |
356933 |
356947 |
356959 |
356969 |
356977 |
356981 |
356989 |
356999 |
357031 |
357047 |
357073 |
357079 |
357083 |
357103 |
357107 |
357109 |
357131 |
357139 |
357169 |
357179 |
357197 |
357199 |
357211 |
357229 |
357239 |
357241 |
357263 |
357271 |
357281 |
357283 |
357293 |
357319 |
357347 |
357349 |
357353 |
357359 |
357377 |
357389 |
357421 |
357431 |
357437 |
357473 |
357503 |
357509 |
357517 |
357551 |
357559 |
357563 |
357569 |
357571 |
357583 |
357587 |
357593 |
357611 |
357613 |
357619 |
357649 |
357653 |
357659 |
357661 |
357667 |
357671 |
357677 |
357683 |
357689 |
357703 |
357727 |
357733 |
357737 |
357739 |
357767 |
357779 |
357781 |
357787 |
357793 |
357809 |
357817 |
357823 |
357829 |
357839 |
357859 |
357883 |
357913 |
357967 |
357977 |
357983 |
357989 |
357997 |
358031 |
358051 |
358069 |
358073 |
358079 |
358103 |
358109 |
358153 |
358157 |
358159 |
358181 |
358201 |
358213 |
358219 |
358223 |
358229 |
358243 |
358273 |
358277 |
358279 |
358289 |
358291 |
358297 |
358301 |
358313 |
358327 |
358331 |
358349 |
358373 |
358417 |
358427 |
358429 |
358441 |
358447 |
358459 |
358471 |
358483 |
358487 |
358499 |
358531 |
358541 |
358571 |
358573 |
358591 |
358597 |
358601 |
358607 |
358613 |
358637 |
358667 |
358669 |
358681 |
358691 |
358697 |
358703 |
358711 |
358723 |
358727 |
358733 |
358747 |
358753 |
358769 |
358783 |
358793 |
358811 |
358829 |
358847 |
358859 |
358861 |
358867 |
358877 |
358879 |
358901 |
358903 |
358907 |
358909 |
358931 |
358951 |
358973 |
358979 |
358987 |
358993 |
358999 |
359003 |
359017 |
359027 |
359041 |
359063 |
359069 |
359101 |
359111 |
359129 |
359137 |
359143 |
359147 |
359153 |
359167 |
359171 |
359207 |
359209 |
359231 |
359243 |
359263 |
359267 |
359279 |
359291 |
359297 |
359299 |
359311 |
359323 |
359327 |
359353 |
359357 |
359377 |
359389 |
359407 |
359417 |
359419 |
359441 |
359449 |
359477 |
359479 |
359483 |
359501 |
359509 |
359539 |
359549 |
359561 |
359563 |
359581 |
359587 |
359599 |
359621 |
359633 |
359641 |
359657 |
359663 |
359701 |
359713 |
359719 |
359731 |
359747 |
359753 |
359761 |
359767 |
359783 |
359837 |
359851 |
359869 |
359897 |
359911 |
359929 |
359981 |
359987 |
360007 |
360023 |
360037 |
360049 |
360053 |
360071 |
360089 |
360091 |
360163 |
360167 |
360169 |
360181 |
360187 |
360193 |
360197 |
360223 |
360229 |
360233 |
360257 |
360271 |
360277 |
360287 |
360289 |
360293 |
360307 |
360317 |
360323 |
360337 |
360391 |
360407 |
360421 |
360439 |
360457 |
360461 |
360497 |
360509 |
360511 |
360541 |
360551 |
360589 |
360593 |
360611 |
360637 |
360649 |
360653 |
360749 |
360769 |
360779 |
360781 |
360803 |
360817 |
360821 |
360823 |
360827 |
360851 |
360853 |
360863 |
360869 |
360901 |
360907 |
360947 |
360949 |
360953 |
360959 |
360973 |
360977 |
360979 |
360989 |
361001 |
361003 |
361013 |
361033 |
361069 |
361091 |
361093 |
361111 |
361159 |
361183 |
361211 |
361213 |
361217 |
361219 |
361223 |
361237 |
361241 |
361271 |
361279 |
361313 |
361321 |
361327 |
361337 |
361349 |
361351 |
361357 |
361363 |
361373 |
361409 |
361411 |
361421 |
361433 |
361441 |
361447 |
361451 |
361463 |
361469 |
361481 |
361499 |
361507 |
361511 |
361523 |
361531 |
361541 |
361549 |
361561 |
361577 |
361637 |
361643 |
361649 |
361651 |
361663 |
361679 |
361687 |
361723 |
361727 |
361747 |
361763 |
361769 |
361787 |
361789 |
361793 |
361799 |
361807 |
361843 |
361871 |
361873 |
361877 |
361901 |
361903 |
361909 |
361919 |
361927 |
361943 |
361961 |
361967 |
361973 |
361979 |
361993 |
362003 |
362027 |
362051 |
362053 |
362059 |
362069 |
362081 |
362093 |
362099 |
362107 |
362137 |
362143 |
362147 |
362161 |
362177 |
362191 |
362203 |
362213 |
362221 |
362233 |
362237 |
362281 |
362291 |
362293 |
362303 |
362309 |
362333 |
362339 |
362347 |
362353 |
362357 |
362363 |
362371 |
362377 |
362381 |
362393 |
362407 |
362419 |
362429 |
362431 |
362443 |
362449 |
362459 |
362473 |
362521 |
362561 |
362569 |
362581 |
362599 |
362629 |
362633 |
362657 |
362693 |
362707 |
362717 |
362723 |
362741 |
362743 |
362749 |
362753 |
362759 |
362801 |
362851 |
362863 |
362867 |
362897 |
362903 |
362911 |
362927 |
362941 |
362951 |
362953 |
362969 |
362977 |
362983 |
362987 |
363017 |
363019 |
363037 |
363043 |
363047 |
363059 |
363061 |
363067 |
363119 |
363149 |
363151 |
363157 |
363161 |
363173 |
363179 |
363199 |
363211 |
363217 |
363257 |
363269 |
363271 |
363277 |
363313 |
363317 |
363329 |
363343 |
363359 |
363361 |
363367 |
363371 |
363373 |
363379 |
363397 |
363401 |
363403 |
363431 |
363437 |
363439 |
363463 |
363481 |
363491 |
363497 |
363523 |
363529 |
363533 |
363541 |
363551 |
363557 |
363563 |
363569 |
363577 |
363581 |
363589 |
363611 |
363619 |
363659 |
363677 |
363683 |
363691 |
363719 |
363731 |
363751 |
363757 |
363761 |
363767 |
363773 |
363799 |
363809 |
363829 |
363833 |
363841 |
363871 |
363887 |
363889 |
363901 |
363911 |
363917 |
363941 |
363947 |
363949 |
363959 |
363967 |
363977 |
363989 |
364027 |
364031 |
364069 |
364073 |
364079 |
364103 |
364127 |
364129 |
364141 |
364171 |
364183 |
364187 |
364193 |
364213 |
364223 |
364241 |
364267 |
364271 |
364289 |
364291 |
364303 |
364313 |
364321 |
364333 |
364337 |
364349 |
364373 |
364379 |
364393 |
364411 |
364417 |
364423 |
364433 |
364447 |
364451 |
364459 |
364471 |
364499 |
364513 |
364523 |
364537 |
364541 |
364543 |
364571 |
364583 |
364601 |
364607 |
364621 |
364627 |
364643 |
364657 |
364669 |
364687 |
364691 |
364699 |
364717 |
364739 |
364747 |
364751 |
364753 |
364759 |
364801 |
364829 |
364853 |
364873 |
364879 |
364883 |
364891 |
364909 |
364919 |
364921 |
364937 |
364943 |
364961 |
364979 |
364993 |
364997 |
365003 |
365017 |
365021 |
365039 |
365063 |
365069 |
365089 |
365107 |
365119 |
365129 |
365137 |
365147 |
365159 |
365173 |
365179 |
365201 |
365213 |
365231 |
365249 |
365251 |
365257 |
365291 |
365293 |
365297 |
365303 |
365327 |
365333 |
365357 |
365369 |
365377 |
365411 |
365413 |
365419 |
365423 |
365441 |
365461 |
365467 |
365471 |
365473 |
365479 |
365489 |
365507 |
365509 |
365513 |
365527 |
365531 |
365537 |
365557 |
365567 |
365569 |
365587 |
365591 |
365611 |
365627 |
365639 |
365641 |
365669 |
365683 |
365689 |
365699 |
365747 |
365749 |
365759 |
365773 |
365779 |
365791 |
365797 |
365809 |
365837 |
365839 |
365851 |
365903 |
365929 |
365933 |
365941 |
365969 |
365983 |
366001 |
366013 |
366019 |
366029 |
366031 |
366053 |
366077 |
366097 |
366103 |
366127 |
366133 |
366139 |
366161 |
366167 |
366169 |
366173 |
366181 |
366193 |
366199 |
366211 |
366217 |
366221 |
366227 |
366239 |
366259 |
366269 |
366277 |
366287 |
366293 |
366307 |
366313 |
366329 |
366341 |
366343 |
366347 |
366383 |
366397 |
366409 |
366419 |
366433 |
366437 |
366439 |
366461 |
366463 |
366467 |
366479 |
366497 |
366511 |
366517 |
366521 |
366547 |
366593 |
366599 |
366607 |
366631 |
366677 |
366683 |
366697 |
366701 |
366703 |
366713 |
366721 |
366727 |
366733 |
366787 |
366791 |
366811 |
366829 |
366841 |
366851 |
366853 |
366859 |
366869 |
366881 |
366889 |
366901 |
366907 |
366917 |
366923 |
366941 |
366953 |
366967 |
366973 |
366983 |
366997 |
367001 |
367007 |
367019 |
367021 |
367027 |
367033 |
367049 |
367069 |
367097 |
367121 |
367123 |
367127 |
367139 |
367163 |
367181 |
367189 |
367201 |
367207 |
367219 |
367229 |
367231 |
367243 |
367259 |
367261 |
367273 |
367277 |
367307 |
367309 |
367313 |
367321 |
367357 |
367369 |
367391 |
367397 |
367427 |
367453 |
367457 |
367469 |
367501 |
367519 |
367531 |
367541 |
367547 |
367559 |
367561 |
367573 |
367597 |
367603 |
367613 |
367621 |
367637 |
367649 |
367651 |
367663 |
367673 |
367687 |
367699 |
367711 |
367721 |
367733 |
367739 |
367751 |
367771 |
367777 |
367781 |
367789 |
367819 |
367823 |
367831 |
367841 |
367849 |
367853 |
367867 |
367879 |
367883 |
367889 |
367909 |
367949 |
367957 |
368021 |
368029 |
368047 |
368059 |
368077 |
368083 |
368089 |
368099 |
368107 |
368111 |
368117 |
368129 |
368141 |
368149 |
368153 |
368171 |
368189 |
368197 |
368227 |
368231 |
368233 |
368243 |
368273 |
368279 |
368287 |
368293 |
368323 |
368327 |
368359 |
368363 |
368369 |
368399 |
368411 |
368443 |
368447 |
368453 |
368471 |
368491 |
368507 |
368513 |
368521 |
368531 |
368539 |
368551 |
368579 |
368593 |
368597 |
368609 |
368633 |
368647 |
368651 |
368653 |
368689 |
368717 |
368729 |
368737 |
368743 |
368773 |
368783 |
368789 |
368791 |
368801 |
368803 |
368833 |
368857 |
368873 |
368881 |
368899 |
368911 |
368939 |
368947 |
368957 |
369007 |
369013 |
369023 |
369029 |
369067 |
369071 |
369077 |
369079 |
369097 |
369119 |
369133 |
369137 |
369143 |
369169 |
369181 |
369191 |
369197 |
369211 |
369247 |
369253 |
369263 |
369269 |
369283 |
369293 |
369301 |
369319 |
369331 |
369353 |
369361 |
369407 |
369409 |
369419 |
369469 |
369487 |
369491 |
369539 |
369553 |
369557 |
369581 |
369637 |
369647 |
369659 |
369661 |
369673 |
369703 |
369709 |
369731 |
369739 |
369751 |
369791 |
369793 |
369821 |
369827 |
369829 |
369833 |
369841 |
369851 |
369877 |
369893 |
369913 |
369917 |
369947 |
369959 |
369961 |
369979 |
369983 |
369991 |
369997 |
370003 |
370009 |
370021 |
370033 |
370057 |
370061 |
370067 |
370081 |
370091 |
370103 |
370121 |
370133 |
370147 |
370159 |
370169 |
370193 |
370199 |
370207 |
370213 |
370217 |
370241 |
370247 |
370261 |
370373 |
370387 |
370399 |
370411 |
370421 |
370423 |
370427 |
370439 |
370441 |
370451 |
370463 |
370471 |
370477 |
370483 |
370493 |
370511 |
370529 |
370537 |
370547 |
370561 |
370571 |
370597 |
370603 |
370609 |
370613 |
370619 |
370631 |
370661 |
370663 |
370673 |
370679 |
370687 |
370693 |
370723 |
370759 |
370793 |
370801 |
370813 |
370837 |
370871 |
370873 |
370879 |
370883 |
370891 |
370897 |
370919 |
370949 |
371027 |
371029 |
371057 |
371069 |
371071 |
371083 |
371087 |
371099 |
371131 |
371141 |
371143 |
371153 |
371177 |
371179 |
371191 |
371213 |
371227 |
371233 |
371237 |
371249 |
371251 |
371257 |
371281 |
371291 |
371299 |
371303 |
371311 |
371321 |
371333 |
371339 |
371341 |
371353 |
371359 |
371383 |
371387 |
371389 |
371417 |
371447 |
371453 |
371471 |
371479 |
371491 |
371509 |
371513 |
371549 |
371561 |
371573 |
371587 |
371617 |
371627 |
371633 |
371639 |
371663 |
371669 |
371699 |
371719 |
371737 |
371779 |
371797 |
371831 |
371837 |
371843 |
371851 |
371857 |
371869 |
371873 |
371897 |
371927 |
371929 |
371939 |
371941 |
371951 |
371957 |
371971 |
371981 |
371999 |
372013 |
372023 |
372037 |
372049 |
372059 |
372061 |
372067 |
372107 |
372121 |
372131 |
372137 |
372149 |
372167 |
372173 |
372179 |
372223 |
372241 |
372263 |
372269 |
372271 |
372277 |
372289 |
372293 |
372299 |
372311 |
372313 |
372353 |
372367 |
372371 |
372377 |
372397 |
372401 |
372409 |
372413 |
372443 |
372451 |
372461 |
372473 |
372481 |
372497 |
372511 |
372523 |
372539 |
372607 |
372611 |
372613 |
372629 |
372637 |
372653 |
372661 |
372667 |
372677 |
372689 |
372707 |
372709 |
372719 |
372733 |
372739 |
372751 |
372763 |
372769 |
372773 |
372797 |
372803 |
372809 |
372817 |
372829 |
372833 |
372839 |
372847 |
372859 |
372871 |
372877 |
372881 |
372901 |
372917 |
372941 |
372943 |
372971 |
372973 |
372979 |
373003 |
373007 |
373019 |
373049 |
373063 |
373073 |
373091 |
373127 |
373151 |
373157 |
373171 |
373181 |
373183 |
373187 |
373193 |
373199 |
373207 |
373211 |
373213 |
373229 |
373231 |
373273 |
373291 |
373297 |
373301 |
373327 |
373339 |
373343 |
373349 |
373357 |
373361 |
373363 |
373379 |
373393 |
373447 |
373453 |
373459 |
373463 |
373487 |
373489 |
373501 |
373517 |
373553 |
373561 |
373567 |
373613 |
373621 |
373631 |
373649 |
373657 |
373661 |
373669 |
373693 |
373717 |
373721 |
373753 |
373757 |
373777 |
373783 |
373823 |
373837 |
373859 |
373861 |
373903 |
373909 |
373937 |
373943 |
373951 |
373963 |
373969 |
373981 |
373987 |
373999 |
374009 |
374029 |
374039 |
374041 |
374047 |
374063 |
374069 |
374083 |
374089 |
374093 |
374111 |
374117 |
374123 |
374137 |
374149 |
374159 |
374173 |
374177 |
374189 |
374203 |
374219 |
374239 |
374287 |
374291 |
374293 |
374299 |
374317 |
374321 |
374333 |
374347 |
374351 |
374359 |
374389 |
374399 |
374441 |
374443 |
374447 |
374461 |
374483 |
374501 |
374531 |
374537 |
374557 |
374587 |
374603 |
374639 |
374641 |
374653 |
374669 |
374677 |
374681 |
374683 |
374687 |
374701 |
374713 |
374719 |
374729 |
374741 |
374753 |
374761 |
374771 |
374783 |
374789 |
374797 |
374807 |
374819 |
374837 |
374839 |
374849 |
374879 |
374887 |
374893 |
374903 |
374909 |
374929 |
374939 |
374953 |
374977 |
374981 |
374987 |
374989 |
374993 |
375017 |
375019 |
375029 |
375043 |
375049 |
375059 |
375083 |
375091 |
375097 |
375101 |
375103 |
375113 |
375119 |
375121 |
375127 |
375149 |
375157 |
375163 |
375169 |
375203 |
375209 |
375223 |
375227 |
375233 |
375247 |
375251 |
375253 |
375257 |
375259 |
375281 |
375283 |
375311 |
375341 |
375359 |
375367 |
375371 |
375373 |
375391 |
375407 |
375413 |
375443 |
375449 |
375451 |
375457 |
375467 |
375481 |
375509 |
375511 |
375523 |
375527 |
375533 |
375553 |
375559 |
375563 |
375569 |
375593 |
375607 |
375623 |
375631 |
375643 |
375647 |
375667 |
375673 |
375703 |
375707 |
375709 |
375743 |
375757 |
375761 |
375773 |
375779 |
375787 |
375799 |
375833 |
375841 |
375857 |
375899 |
375901 |
375923 |
375931 |
375967 |
375971 |
375979 |
375983 |
375997 |
376001 |
376003 |
376009 |
376021 |
376039 |
376049 |
376063 |
376081 |
376097 |
376099 |
376127 |
376133 |
376147 |
376153 |
376171 |
376183 |
376199 |
376231 |
376237 |
376241 |
376283 |
376291 |
376297 |
376307 |
376351 |
376373 |
376393 |
376399 |
376417 |
376463 |
376469 |
376471 |
376477 |
376483 |
376501 |
376511 |
376529 |
376531 |
376547 |
376573 |
376577 |
376583 |
376589 |
376603 |
376609 |
376627 |
376631 |
376633 |
376639 |
376657 |
376679 |
376687 |
376699 |
376709 |
376721 |
376729 |
376757 |
376759 |
376769 |
376787 |
376793 |
376801 |
376807 |
376811 |
376819 |
376823 |
376837 |
376841 |
376847 |
376853 |
376889 |
376891 |
376897 |
376921 |
376927 |
376931 |
376933 |
376949 |
376963 |
376969 |
377011 |
377021 |
377051 |
377059 |
377071 |
377099 |
377123 |
377129 |
377137 |
377147 |
377171 |
377173 |
377183 |
377197 |
377219 |
377231 |
377257 |
377263 |
377287 |
377291 |
377297 |
377327 |
377329 |
377339 |
377347 |
377353 |
377369 |
377371 |
377387 |
377393 |
377459 |
377471 |
377477 |
377491 |
377513 |
377521 |
377527 |
377537 |
377543 |
377557 |
377561 |
377563 |
377581 |
377593 |
377599 |
377617 |
377623 |
377633 |
377653 |
377681 |
377687 |
377711 |
377717 |
377737 |
377749 |
377761 |
377771 |
377779 |
377789 |
377801 |
377809 |
377827 |
377831 |
377843 |
377851 |
377873 |
377887 |
377911 |
377963 |
377981 |
377999 |
378011 |
378019 |
378023 |
378041 |
378071 |
378083 |
378089 |
378101 |
378127 |
378137 |
378149 |
378151 |
378163 |
378167 |
378179 |
378193 |
378223 |
378229 |
378239 |
378241 |
378253 |
378269 |
378277 |
378283 |
378289 |
378317 |
378353 |
378361 |
378379 |
378401 |
378407 |
378439 |
378449 |
378463 |
378467 |
378493 |
378503 |
378509 |
378523 |
378533 |
378551 |
378559 |
378569 |
378571 |
378583 |
378593 |
378601 |
378619 |
378629 |
378661 |
378667 |
378671 |
378683 |
378691 |
378713 |
378733 |
378739 |
378757 |
378761 |
378779 |
378793 |
378809 |
378817 |
378821 |
378823 |
378869 |
378883 |
378893 |
378901 |
378919 |
378929 |
378941 |
378949 |
378953 |
378967 |
378977 |
378997 |
379007 |
379009 |
379013 |
379033 |
379039 |
379073 |
379081 |
379087 |
379097 |
379103 |
379123 |
379133 |
379147 |
379157 |
379163 |
379177 |
379187 |
379189 |
379199 |
379207 |
379273 |
379277 |
379283 |
379289 |
379307 |
379319 |
379333 |
379343 |
379369 |
379387 |
379391 |
379397 |
379399 |
379417 |
379433 |
379439 |
379441 |
379451 |
379459 |
379499 |
379501 |
379513 |
379531 |
379541 |
379549 |
379571 |
379573 |
379579 |
379597 |
379607 |
379633 |
379649 |
379663 |
379667 |
379679 |
379681 |
379693 |
379699 |
379703 |
379721 |
379723 |
379727 |
379751 |
379777 |
379787 |
379811 |
379817 |
379837 |
379849 |
379853 |
379859 |
379877 |
379889 |
379903 |
379909 |
379913 |
379927 |
379931 |
379963 |
379979 |
379993 |
379997 |
379999 |
380041 |
380047 |
380059 |
380071 |
380117 |
380129 |
380131 |
380141 |
380147 |
380179 |
380189 |
380197 |
380201 |
380203 |
380207 |
380231 |
380251 |
380267 |
380269 |
380287 |
380291 |
380299 |
380309 |
380311 |
380327 |
380329 |
380333 |
380363 |
380377 |
380383 |
380417 |
380423 |
380441 |
380447 |
380453 |
380459 |
380461 |
380483 |
380503 |
380533 |
380557 |
380563 |
380591 |
380621 |
380623 |
380629 |
380641 |
380651 |
380657 |
380707 |
380713 |
380729 |
380753 |
380777 |
380797 |
380803 |
380819 |
380837 |
380839 |
380843 |
380867 |
380869 |
380879 |
380881 |
380909 |
380917 |
380929 |
380951 |
380957 |
380971 |
380977 |
380983 |
381001 |
381011 |
381019 |
381037 |
381047 |
381061 |
381071 |
381077 |
381097 |
381103 |
381167 |
381169 |
381181 |
381209 |
381221 |
381223 |
381233 |
381239 |
381253 |
381287 |
381289 |
381301 |
381319 |
381323 |
381343 |
381347 |
381371 |
381373 |
381377 |
381383 |
381389 |
381401 |
381413 |
381419 |
381439 |
381443 |
381461 |
381467 |
381481 |
381487 |
381509 |
381523 |
381527 |
381529 |
381533 |
381541 |
381559 |
381569 |
381607 |
381629 |
381631 |
381637 |
381659 |
381673 |
381697 |
381707 |
381713 |
381737 |
381739 |
381749 |
381757 |
381761 |
381791 |
381793 |
381817 |
381841 |
381853 |
381859 |
381911 |
381917 |
381937 |
381943 |
381949 |
381977 |
381989 |
381991 |
382001 |
382003 |
382021 |
382037 |
382061 |
382069 |
382073 |
382087 |
382103 |
382117 |
382163 |
382171 |
382189 |
382229 |
382231 |
382241 |
382253 |
382267 |
382271 |
382303 |
382331 |
382351 |
382357 |
382363 |
382373 |
382391 |
382427 |
382429 |
382457 |
382463 |
382493 |
382507 |
382511 |
382519 |
382541 |
382549 |
382553 |
382567 |
382579 |
382583 |
382589 |
382601 |
382621 |
382631 |
382643 |
382649 |
382661 |
382663 |
382693 |
382703 |
382709 |
382727 |
382729 |
382747 |
382751 |
382763 |
382769 |
382777 |
382801 |
382807 |
382813 |
382843 |
382847 |
382861 |
382867 |
382871 |
382873 |
382883 |
382919 |
382933 |
382939 |
382961 |
382979 |
382999 |
383011 |
383023 |
383029 |
383041 |
383051 |
383069 |
383077 |
383081 |
383083 |
383099 |
383101 |
383107 |
383113 |
383143 |
383147 |
383153 |
383171 |
383179 |
383219 |
383221 |
383261 |
383267 |
383281 |
383291 |
383297 |
383303 |
383321 |
383347 |
383371 |
383393 |
383399 |
383417 |
383419 |
383429 |
383459 |
383483 |
383489 |
383519 |
383521 |
383527 |
383533 |
383549 |
383557 |
383573 |
383587 |
383609 |
383611 |
383623 |
383627 |
383633 |
383651 |
383657 |
383659 |
383681 |
383683 |
383693 |
383723 |
383729 |
383753 |
383759 |
383767 |
383777 |
383791 |
383797 |
383807 |
383813 |
383821 |
383833 |
383837 |
383839 |
383869 |
383891 |
383909 |
383917 |
383923 |
383941 |
383951 |
383963 |
383969 |
383983 |
383987 |
384001 |
384017 |
384029 |
384049 |
384061 |
384067 |
384079 |
384089 |
384107 |
384113 |
384133 |
384143 |
384151 |
384157 |
384173 |
384187 |
384193 |
384203 |
384227 |
384247 |
384253 |
384257 |
384259 |
384277 |
384287 |
384289 |
384299 |
384301 |
384317 |
384331 |
384343 |
384359 |
384367 |
384383 |
384403 |
384407 |
384437 |
384469 |
384473 |
384479 |
384481 |
384487 |
384497 |
384509 |
384533 |
384547 |
384577 |
384581 |
384589 |
384599 |
384611 |
384619 |
384623 |
384641 |
384673 |
384691 |
384697 |
384701 |
384719 |
384733 |
384737 |
384751 |
384757 |
384773 |
384779 |
384817 |
384821 |
384827 |
384841 |
384847 |
384851 |
384889 |
384907 |
384913 |
384919 |
384941 |
384961 |
384973 |
385001 |
385013 |
385027 |
385039 |
385057 |
385069 |
385079 |
385081 |
385087 |
385109 |
385127 |
385129 |
385139 |
385141 |
385153 |
385159 |
385171 |
385193 |
385199 |
385223 |
385249 |
385261 |
385267 |
385279 |
385289 |
385291 |
385321 |
385327 |
385331 |
385351 |
385379 |
385391 |
385393 |
385397 |
385403 |
385417 |
385433 |
385471 |
385481 |
385493 |
385501 |
385519 |
385531 |
385537 |
385559 |
385571 |
385573 |
385579 |
385589 |
385591 |
385597 |
385607 |
385621 |
385631 |
385639 |
385657 |
385661 |
385663 |
385709 |
385739 |
385741 |
385771 |
385783 |
385793 |
385811 |
385817 |
385831 |
385837 |
385843 |
385859 |
385877 |
385897 |
385901 |
385907 |
385927 |
385939 |
385943 |
385967 |
385991 |
385997 |
386017 |
386039 |
386041 |
386047 |
386051 |
386083 |
386093 |
386117 |
386119 |
386129 |
386131 |
386143 |
386149 |
386153 |
386159 |
386161 |
386173 |
386219 |
386227 |
386233 |
386237 |
386249 |
386263 |
386279 |
386297 |
386299 |
386303 |
386329 |
386333 |
386339 |
386363 |
386369 |
386371 |
386381 |
386383 |
386401 |
386411 |
386413 |
386429 |
386431 |
386437 |
386471 |
386489 |
386501 |
386521 |
386537 |
386543 |
386549 |
386569 |
386587 |
386609 |
386611 |
386621 |
386629 |
386641 |
386647 |
386651 |
386677 |
386689 |
386693 |
386713 |
386719 |
386723 |
386731 |
386747 |
386777 |
386809 |
386839 |
386851 |
386887 |
386891 |
386921 |
386927 |
386963 |
386977 |
386987 |
386989 |
386993 |
387007 |
387017 |
387031 |
387047 |
387071 |
387077 |
387083 |
387089 |
387109 |
387137 |
387151 |
387161 |
387169 |
387173 |
387187 |
387197 |
387199 |
387203 |
387227 |
387253 |
387263 |
387269 |
387281 |
387307 |
387313 |
387329 |
387341 |
387371 |
387397 |
387403 |
387433 |
387437 |
387449 |
387463 |
387493 |
387503 |
387509 |
387529 |
387551 |
387577 |
387587 |
387613 |
387623 |
387631 |
387641 |
387659 |
387677 |
387679 |
387683 |
387707 |
387721 |
387727 |
387743 |
387749 |
387763 |
387781 |
387791 |
387799 |
387839 |
387853 |
387857 |
387911 |
387913 |
387917 |
387953 |
387967 |
387971 |
387973 |
387977 |
388009 |
388051 |
388057 |
388067 |
388081 |
388099 |
388109 |
388111 |
388117 |
388133 |
388159 |
388163 |
388169 |
388177 |
388181 |
388183 |
388187 |
388211 |
388231 |
388237 |
388253 |
388259 |
388273 |
388277 |
388301 |
388313 |
388319 |
388351 |
388363 |
388369 |
388373 |
388391 |
388403 |
388459 |
388471 |
388477 |
388481 |
388483 |
388489 |
388499 |
388519 |
388529 |
388541 |
388567 |
388573 |
388621 |
388651 |
388657 |
388673 |
388691 |
388693 |
388697 |
388699 |
388711 |
388727 |
388757 |
388777 |
388781 |
388789 |
388793 |
388813 |
388823 |
388837 |
388859 |
388879 |
388891 |
388897 |
388901 |
388903 |
388931 |
388933 |
388937 |
388961 |
388963 |
388991 |
389003 |
389023 |
389027 |
389029 |
389041 |
389047 |
389057 |
389083 |
389089 |
389099 |
389111 |
389117 |
389141 |
389149 |
389161 |
389167 |
389171 |
389173 |
389189 |
389219 |
389227 |
389231 |
389269 |
389273 |
389287 |
389297 |
389299 |
389303 |
389357 |
389369 |
389381 |
389399 |
389401 |
389437 |
389447 |
389461 |
389479 |
389483 |
389507 |
389513 |
389527 |
389531 |
389533 |
389539 |
389561 |
389563 |
389567 |
389569 |
389579 |
389591 |
389621 |
389629 |
389651 |
389659 |
389663 |
389687 |
389699 |
389713 |
389723 |
389743 |
389749 |
389761 |
389773 |
389783 |
389791 |
389797 |
389819 |
389839 |
389849 |
389867 |
389891 |
389897 |
389903 |
389911 |
389923 |
389927 |
389941 |
389947 |
389953 |
389957 |
389971 |
389981 |
389989 |
389999 |
390001 |
390043 |
390067 |
390077 |
390083 |
390097 |
390101 |
390107 |
390109 |
390113 |
390119 |
390151 |
390157 |
390161 |
390191 |
390193 |
390199 |
390209 |
390211 |
390223 |
390263 |
390281 |
390289 |
390307 |
390323 |
390343 |
390347 |
390353 |
390359 |
390367 |
390373 |
390389 |
390391 |
390407 |
390413 |
390419 |
390421 |
390433 |
390437 |
390449 |
390463 |
390479 |
390487 |
390491 |
390493 |
390499 |
390503 |
390527 |
390539 |
390553 |
390581 |
390647 |
390653 |
390671 |
390673 |
390703 |
390707 |
390721 |
390727 |
390737 |
390739 |
390743 |
390751 |
390763 |
390781 |
390791 |
390809 |
390821 |
390829 |
390851 |
390869 |
390877 |
390883 |
390889 |
390893 |
390953 |
390959 |
390961 |
390967 |
390989 |
390991 |
391009 |
391019 |
391021 |
391031 |
391049 |
391057 |
391063 |
391067 |
391073 |
391103 |
391117 |
391133 |
391151 |
391159 |
391163 |
391177 |
391199 |
391217 |
391219 |
391231 |
391247 |
391249 |
391273 |
391283 |
391291 |
391301 |
391331 |
391337 |
391351 |
391367 |
391373 |
391379 |
391387 |
391393 |
391397 |
391399 |
391403 |
391441 |
391451 |
391453 |
391487 |
391519 |
391537 |
391553 |
391579 |
391613 |
391619 |
391627 |
391631 |
391639 |
391661 |
391679 |
391691 |
391693 |
391711 |
391717 |
391733 |
391739 |
391751 |
391753 |
391757 |
391789 |
391801 |
391817 |
391823 |
391847 |
391861 |
391873 |
391879 |
391889 |
391891 |
391903 |
391907 |
391921 |
391939 |
391961 |
391967 |
391987 |
391999 |
392011 |
392033 |
392053 |
392059 |
392069 |
392087 |
392099 |
392101 |
392111 |
392113 |
392131 |
392143 |
392149 |
392153 |
392159 |
392177 |
392201 |
392209 |
392213 |
392221 |
392233 |
392239 |
392251 |
392261 |
392263 |
392267 |
392269 |
392279 |
392281 |
392297 |
392299 |
392321 |
392333 |
392339 |
392347 |
392351 |
392363 |
392383 |
392389 |
392423 |
392437 |
392443 |
392467 |
392473 |
392477 |
392489 |
392503 |
392519 |
392531 |
392543 |
392549 |
392569 |
392593 |
392599 |
392611 |
392629 |
392647 |
392663 |
392669 |
392699 |
392723 |
392737 |
392741 |
392759 |
392761 |
392767 |
392803 |
392807 |
392809 |
392827 |
392831 |
392837 |
392849 |
392851 |
392857 |
392879 |
392893 |
392911 |
392923 |
392927 |
392929 |
392957 |
392963 |
392969 |
392981 |
392983 |
393007 |
393013 |
393017 |
393031 |
393059 |
393073 |
393077 |
393079 |
393083 |
393097 |
393103 |
393109 |
393121 |
393137 |
393143 |
393157 |
393161 |
393181 |
393187 |
393191 |
393203 |
393209 |
393241 |
393247 |
393257 |
393271 |
393287 |
393299 |
393301 |
393311 |
393331 |
393361 |
393373 |
393377 |
393383 |
393401 |
393403 |
393413 |
393451 |
393473 |
393479 |
393487 |
393517 |
393521 |
393539 |
393541 |
393551 |
393557 |
393571 |
393577 |
393581 |
393583 |
393587 |
393593 |
393611 |
393629 |
393637 |
393649 |
393667 |
393671 |
393677 |
393683 |
393697 |
393709 |
393713 |
393721 |
393727 |
393739 |
393749 |
393761 |
393779 |
393797 |
393847 |
393853 |
393857 |
393859 |
393863 |
393871 |
393901 |
393919 |
393929 |
393931 |
393947 |
393961 |
393977 |
393989 |
393997 |
394007 |
394019 |
394039 |
394049 |
394063 |
394073 |
394099 |
394123 |
394129 |
394153 |
394157 |
394169 |
394187 |
394201 |
394211 |
394223 |
394241 |
394249 |
394259 |
394271 |
394291 |
394319 |
394327 |
394357 |
394363 |
394367 |
394369 |
394393 |
394409 |
394411 |
394453 |
394481 |
394489 |
394501 |
394507 |
394523 |
394529 |
394549 |
394571 |
394577 |
394579 |
394601 |
394619 |
394631 |
394633 |
394637 |
394643 |
394673 |
394699 |
394717 |
394721 |
394727 |
394729 |
394733 |
394739 |
394747 |
394759 |
394787 |
394811 |
394813 |
394817 |
394819 |
394829 |
394837 |
394861 |
394879 |
394897 |
394931 |
394943 |
394963 |
394967 |
394969 |
394981 |
394987 |
394993 |
395023 |
395027 |
395039 |
395047 |
395069 |
395089 |
395093 |
395107 |
395111 |
395113 |
395119 |
395137 |
395141 |
395147 |
395159 |
395173 |
395189 |
395191 |
395201 |
395231 |
395243 |
395251 |
395261 |
395273 |
395287 |
395293 |
395303 |
395309 |
395321 |
395323 |
395377 |
395383 |
395407 |
395429 |
395431 |
395443 |
395449 |
395453 |
395459 |
395491 |
395509 |
395513 |
395533 |
395537 |
395543 |
395581 |
395597 |
395611 |
395621 |
395627 |
395657 |
395671 |
395677 |
395687 |
395701 |
395719 |
395737 |
395741 |
395749 |
395767 |
395803 |
395849 |
395851 |
395873 |
395887 |
395891 |
395897 |
395909 |
395921 |
395953 |
395959 |
395971 |
396001 |
396029 |
396031 |
396041 |
396043 |
396061 |
396079 |
396091 |
396103 |
396107 |
396119 |
396157 |
396173 |
396181 |
396197 |
396199 |
396203 |
396217 |
396239 |
396247 |
396259 |
396269 |
396293 |
396299 |
396301 |
396311 |
396323 |
396349 |
396353 |
396373 |
396377 |
396379 |
396413 |
396427 |
396437 |
396443 |
396449 |
396479 |
396509 |
396523 |
396527 |
396533 |
396541 |
396547 |
396563 |
396577 |
396581 |
396601 |
396619 |
396623 |
396629 |
396631 |
396637 |
396647 |
396667 |
396679 |
396703 |
396709 |
396713 |
396719 |
396733 |
396833 |
396871 |
396881 |
396883 |
396887 |
396919 |
396931 |
396937 |
396943 |
396947 |
396953 |
396971 |
396983 |
396997 |
397013 |
397027 |
397037 |
397051 |
397057 |
397063 |
397073 |
397093 |
397099 |
397127 |
397151 |
397153 |
397181 |
397183 |
397211 |
397217 |
397223 |
397237 |
397253 |
397259 |
397283 |
397289 |
397297 |
397301 |
397303 |
397337 |
397351 |
397357 |
397361 |
397373 |
397379 |
397427 |
397429 |
397433 |
397459 |
397469 |
397489 |
397493 |
397517 |
397519 |
397541 |
397543 |
397547 |
397549 |
397567 |
397589 |
397591 |
397597 |
397633 |
397643 |
397673 |
397687 |
397697 |
397721 |
397723 |
397729 |
397751 |
397753 |
397757 |
397759 |
397763 |
397799 |
397807 |
397811 |
397829 |
397849 |
397867 |
397897 |
397907 |
397921 |
397939 |
397951 |
397963 |
397973 |
397981 |
398011 |
398023 |
398029 |
398033 |
398039 |
398053 |
398059 |
398063 |
398077 |
398087 |
398113 |
398117 |
398119 |
398129 |
398143 |
398149 |
398171 |
398207 |
398213 |
398219 |
398227 |
398249 |
398261 |
398267 |
398273 |
398287 |
398303 |
398311 |
398323 |
398339 |
398341 |
398347 |
398353 |
398357 |
398369 |
398393 |
398407 |
398417 |
398423 |
398441 |
398459 |
398467 |
398471 |
398473 |
398477 |
398491 |
398509 |
398539 |
398543 |
398549 |
398557 |
398569 |
398581 |
398591 |
398609 |
398611 |
398621 |
398627 |
398669 |
398681 |
398683 |
398693 |
398711 |
398729 |
398731 |
398759 |
398771 |
398813 |
398819 |
398821 |
398833 |
398857 |
398863 |
398887 |
398903 |
398917 |
398921 |
398933 |
398941 |
398969 |
398977 |
398989 |
399023 |
399031 |
399043 |
399059 |
399067 |
399071 |
399079 |
399097 |
399101 |
399107 |
399131 |
399137 |
399149 |
399151 |
399163 |
399173 |
399181 |
399197 |
399221 |
399227 |
399239 |
399241 |
399263 |
399271 |
399277 |
399281 |
399283 |
399353 |
399379 |
399389 |
399391 |
399401 |
399403 |
399409 |
399433 |
399439 |
399473 |
399481 |
399491 |
399493 |
399499 |
399523 |
399527 |
399541 |
399557 |
399571 |
399577 |
399583 |
399587 |
399601 |
399613 |
399617 |
399643 |
399647 |
399667 |
399677 |
399689 |
399691 |
399719 |
399727 |
399731 |
399739 |
399757 |
399761 |
399769 |
399781 |
399787 |
399793 |
399851 |
399853 |
399871 |
399887 |
399899 |
399911 |
399913 |
399937 |
399941 |
399953 |
399979 |
399983 |
399989 |
400009 |
400031 |
400033 |
400051 |
400067 |
400069 |
400087 |
400093 |
400109 |
400123 |
400151 |
400157 |
400187 |
400199 |
400207 |
400217 |
400237 |
400243 |
400247 |
400249 |
400261 |
400277 |
400291 |
400297 |
400307 |
400313 |
400321 |
400331 |
400339 |
400381 |
400391 |
400409 |
400417 |
400429 |
400441 |
400457 |
400471 |
400481 |
400523 |
400559 |
400579 |
400597 |
400601 |
400607 |
400619 |
400643 |
400651 |
400657 |
400679 |
400681 |
400703 |
400711 |
400721 |
400723 |
400739 |
400753 |
400759 |
400823 |
400837 |
400849 |
400853 |
400859 |
400871 |
400903 |
400927 |
400931 |
400943 |
400949 |
400963 |
400997 |
401017 |
401029 |
401039 |
401053 |
401057 |
401069 |
401077 |
401087 |
401101 |
401113 |
401119 |
401161 |
401173 |
401179 |
401201 |
401209 |
401231 |
401237 |
401243 |
401279 |
401287 |
401309 |
401311 |
401321 |
401329 |
401341 |
401347 |
401371 |
401381 |
401393 |
401407 |
401411 |
401417 |
401473 |
401477 |
401507 |
401519 |
401537 |
401539 |
401551 |
401567 |
401587 |
401593 |
401627 |
401629 |
401651 |
401669 |
401671 |
401689 |
401707 |
401711 |
401743 |
401771 |
401773 |
401809 |
401813 |
401827 |
401839 |
401861 |
401867 |
401887 |
401903 |
401909 |
401917 |
401939 |
401953 |
401957 |
401959 |
401981 |
401987 |
401993 |
402023 |
402029 |
402037 |
402043 |
402049 |
402053 |
402071 |
402089 |
402091 |
402107 |
402131 |
402133 |
402137 |
402139 |
402197 |
402221 |
402223 |
402239 |
402253 |
402263 |
402277 |
402299 |
402307 |
402313 |
402329 |
402331 |
402341 |
402343 |
402359 |
402361 |
402371 |
402379 |
402383 |
402403 |
402419 |
402443 |
402487 |
402503 |
402511 |
402517 |
402527 |
402529 |
402541 |
402551 |
402559 |
402581 |
402583 |
402587 |
402593 |
402601 |
402613 |
402631 |
402691 |
402697 |
402739 |
402751 |
402757 |
402761 |
402763 |
402767 |
402769 |
402797 |
402803 |
402817 |
402823 |
402847 |
402851 |
402859 |
402863 |
402869 |
402881 |
402923 |
402943 |
402947 |
402949 |
402991 |
403001 |
403003 |
403037 |
403043 |
403049 |
403057 |
403061 |
403063 |
403079 |
403097 |
403103 |
403133 |
403141 |
403159 |
403163 |
403181 |
403219 |
403241 |
403243 |
403253 |
403261 |
403267 |
403289 |
403301 |
403309 |
403327 |
403331 |
403339 |
403363 |
403369 |
403387 |
403391 |
403433 |
403439 |
403483 |
403499 |
403511 |
403537 |
403547 |
403549 |
403553 |
403567 |
403577 |
403591 |
403603 |
403607 |
403621 |
403649 |
403661 |
403679 |
403681 |
403687 |
403703 |
403717 |
403721 |
403729 |
403757 |
403783 |
403787 |
403817 |
403829 |
403831 |
403849 |
403861 |
403867 |
403877 |
403889 |
403901 |
403933 |
403951 |
403957 |
403969 |
403979 |
403981 |
403993 |
404009 |
404011 |
404017 |
404021 |
404029 |
404051 |
404081 |
404099 |
404113 |
404119 |
404123 |
404161 |
404167 |
404177 |
404189 |
404191 |
404197 |
404213 |
404221 |
404249 |
404251 |
404267 |
404269 |
404273 |
404291 |
404309 |
404321 |
404323 |
404357 |
404381 |
404387 |
404389 |
404399 |
404419 |
404423 |
404429 |
404431 |
404449 |
404461 |
404483 |
404489 |
404497 |
404507 |
404513 |
404527 |
404531 |
404533 |
404539 |
404557 |
404597 |
404671 |
404693 |
404699 |
404713 |
404773 |
404779 |
404783 |
404819 |
404827 |
404837 |
404843 |
404849 |
404851 |
404941 |
404951 |
404959 |
404969 |
404977 |
404981 |
404983 |
405001 |
405011 |
405029 |
405037 |
405047 |
405049 |
405071 |
405073 |
405089 |
405091 |
405143 |
405157 |
405179 |
405199 |
405211 |
405221 |
405227 |
405239 |
405241 |
405247 |
405253 |
405269 |
405277 |
405287 |
405299 |
405323 |
405341 |
405343 |
405347 |
405373 |
405401 |
405407 |
405413 |
405437 |
405439 |
405473 |
405487 |
405491 |
405497 |
405499 |
405521 |
405527 |
405529 |
405541 |
405553 |
405577 |
405599 |
405607 |
405611 |
405641 |
405659 |
405667 |
405677 |
405679 |
405683 |
405689 |
405701 |
405703 |
405709 |
405719 |
405731 |
405749 |
405763 |
405767 |
405781 |
405799 |
405817 |
405827 |
405829 |
405857 |
405863 |
405869 |
405871 |
405893 |
405901 |
405917 |
405947 |
405949 |
405959 |
405967 |
405989 |
405991 |
405997 |
406013 |
406027 |
406037 |
406067 |
406073 |
406093 |
406117 |
406123 |
406169 |
406171 |
406177 |
406183 |
406207 |
406247 |
406253 |
406267 |
406271 |
406309 |
406313 |
406327 |
406331 |
406339 |
406349 |
406361 |
406381 |
406397 |
406403 |
406423 |
406447 |
406481 |
406499 |
406501 |
406507 |
406513 |
406517 |
406531 |
406547 |
406559 |
406561 |
406573 |
406577 |
406579 |
406583 |
406591 |
406631 |
406633 |
406649 |
406661 |
406673 |
406697 |
406699 |
406717 |
406729 |
406739 |
406789 |
406807 |
406811 |
406817 |
406837 |
406859 |
406873 |
406883 |
406907 |
406951 |
406969 |
406981 |
406993 |
407023 |
407047 |
407059 |
407083 |
407119 |
407137 |
407149 |
407153 |
407177 |
407179 |
407191 |
407203 |
407207 |
407219 |
407221 |
407233 |
407249 |
407257 |
407263 |
407273 |
407287 |
407291 |
407299 |
407311 |
407317 |
407321 |
407347 |
407357 |
407359 |
407369 |
407377 |
407383 |
407401 |
407437 |
407471 |
407483 |
407489 |
407501 |
407503 |
407509 |
407521 |
407527 |
407567 |
407573 |
407579 |
407587 |
407599 |
407621 |
407633 |
407639 |
407651 |
407657 |
407669 |
407699 |
407707 |
407713 |
407717 |
407723 |
407741 |
407747 |
407783 |
407789 |
407791 |
407801 |
407807 |
407821 |
407833 |
407843 |
407857 |
407861 |
407879 |
407893 |
407899 |
407917 |
407923 |
407947 |
407959 |
407969 |
407971 |
407977 |
407993 |
408011 |
408019 |
408041 |
408049 |
408071 |
408077 |
408091 |
408127 |
408131 |
408137 |
408169 |
408173 |
408197 |
408203 |
408209 |
408211 |
408217 |
408223 |
408229 |
408241 |
408251 |
408263 |
408271 |
408283 |
408311 |
408337 |
408341 |
408347 |
408361 |
408379 |
408389 |
408403 |
408413 |
408427 |
408431 |
408433 |
408437 |
408461 |
408469 |
408479 |
408491 |
408497 |
408533 |
408539 |
408553 |
408563 |
408607 |
408623 |
408631 |
408637 |
408643 |
408659 |
408677 |
408689 |
408691 |
408701 |
408703 |
408713 |
408719 |
408743 |
408763 |
408769 |
408773 |
408787 |
408803 |
408809 |
408817 |
408841 |
408857 |
408869 |
408911 |
408913 |
408923 |
408943 |
408953 |
408959 |
408971 |
408979 |
408997 |
409007 |
409021 |
409027 |
409033 |
409043 |
409063 |
409069 |
409081 |
409099 |
409121 |
409153 |
409163 |
409177 |
409187 |
409217 |
409237 |
409259 |
409261 |
409267 |
409271 |
409289 |
409291 |
409327 |
409333 |
409337 |
409349 |
409351 |
409369 |
409379 |
409391 |
409397 |
409429 |
409433 |
409441 |
409463 |
409471 |
409477 |
409483 |
409499 |
409517 |
409523 |
409529 |
409543 |
409573 |
409579 |
409589 |
409597 |
409609 |
409639 |
409657 |
409691 |
409693 |
409709 |
409711 |
409723 |
409729 |
409733 |
409753 |
409769 |
409777 |
409781 |
409813 |
409817 |
409823 |
409831 |
409841 |
409861 |
409867 |
409879 |
409889 |
409891 |
409897 |
409901 |
409909 |
409933 |
409943 |
409951 |
409961 |
409967 |
409987 |
409993 |
409999 |
410009 |
410029 |
410063 |
410087 |
410093 |
410117 |
410119 |
410141 |
410143 |
410149 |
410171 |
410173 |
410203 |
410231 |
410233 |
410239 |
410243 |
410257 |
410279 |
410281 |
410299 |
410317 |
410323 |
410339 |
410341 |
410353 |
410359 |
410383 |
410387 |
410393 |
410401 |
410411 |
410413 |
410453 |
410461 |
410477 |
410489 |
410491 |
410497 |
410507 |
410513 |
410519 |
410551 |
410561 |
410587 |
410617 |
410621 |
410623 |
410629 |
410651 |
410659 |
410671 |
410687 |
410701 |
410717 |
410731 |
410741 |
410747 |
410749 |
410759 |
410783 |
410789 |
410801 |
410807 |
410819 |
410833 |
410857 |
410899 |
410903 |
410929 |
410953 |
410983 |
410999 |
411001 |
411007 |
411011 |
411013 |
411031 |
411041 |
411049 |
411067 |
411071 |
411083 |
411101 |
411113 |
411119 |
411127 |
411143 |
411157 |
411167 |
411193 |
411197 |
411211 |
411233 |
411241 |
411251 |
411253 |
411259 |
411287 |
411311 |
411337 |
411347 |
411361 |
411371 |
411379 |
411409 |
411421 |
411443 |
411449 |
411469 |
411473 |
411479 |
411491 |
411503 |
411527 |
411529 |
411557 |
411563 |
411569 |
411577 |
411583 |
411589 |
411611 |
411613 |
411617 |
411637 |
411641 |
411667 |
411679 |
411683 |
411703 |
411707 |
411709 |
411721 |
411727 |
411737 |
411739 |
411743 |
411751 |
411779 |
411799 |
411809 |
411821 |
411823 |
411833 |
411841 |
411883 |
411919 |
411923 |
411937 |
411941 |
411947 |
411967 |
411991 |
412001 |
412007 |
412019 |
412031 |
412033 |
412037 |
412039 |
412051 |
412067 |
412073 |
412081 |
412099 |
412109 |
412123 |
412127 |
412133 |
412147 |
412157 |
412171 |
412187 |
412189 |
412193 |
412201 |
412211 |
412213 |
412219 |
412249 |
412253 |
412273 |
412277 |
412289 |
412303 |
412333 |
412339 |
412343 |
412387 |
412397 |
412411 |
412457 |
412463 |
412481 |
412487 |
412493 |
412537 |
412561 |
412567 |
412571 |
412589 |
412591 |
412603 |
412609 |
412619 |
412627 |
412637 |
412639 |
412651 |
412663 |
412667 |
412717 |
412739 |
412771 |
412793 |
412807 |
412831 |
412849 |
412859 |
412891 |
412901 |
412903 |
412939 |
412943 |
412949 |
412967 |
412987 |
413009 |
413027 |
413033 |
413053 |
413069 |
413071 |
413081 |
413087 |
413089 |
413093 |
413111 |
413113 |
413129 |
413141 |
413143 |
413159 |
413167 |
413183 |
413197 |
413201 |
413207 |
413233 |
413243 |
413251 |
413263 |
413267 |
413293 |
413299 |
413353 |
413411 |
413417 |
413429 |
413443 |
413461 |
413477 |
413521 |
413527 |
413533 |
413537 |
413551 |
413557 |
413579 |
413587 |
413597 |
413629 |
413653 |
413681 |
413683 |
413689 |
413711 |
413713 |
413719 |
413737 |
413753 |
413759 |
413779 |
413783 |
413807 |
413827 |
413849 |
413863 |
413867 |
413869 |
413879 |
413887 |
413911 |
413923 |
413951 |
413981 |
414013 |
414017 |
414019 |
414031 |
414049 |
414053 |
414061 |
414077 |
414083 |
414097 |
414101 |
414107 |
414109 |
414131 |
414157 |
414179 |
414199 |
414203 |
414209 |
414217 |
414221 |
414241 |
414259 |
414269 |
414277 |
414283 |
414311 |
414313 |
414329 |
414331 |
414347 |
414361 |
414367 |
414383 |
414389 |
414397 |
414413 |
414431 |
414433 |
414451 |
414457 |
414461 |
414467 |
414487 |
414503 |
414521 |
414539 |
414553 |
414559 |
414571 |
414577 |
414607 |
414611 |
414629 |
414641 |
414643 |
414653 |
414677 |
414679 |
414683 |
414691 |
414697 |
414703 |
414707 |
414709 |
414721 |
414731 |
414737 |
414763 |
414767 |
414769 |
414773 |
414779 |
414793 |
414803 |
414809 |
414833 |
414857 |
414871 |
414889 |
414893 |
414899 |
414913 |
414923 |
414929 |
414949 |
414959 |
414971 |
414977 |
414991 |
415013 |
415031 |
415039 |
415061 |
415069 |
415073 |
415087 |
415097 |
415109 |
415111 |
415133 |
415141 |
415147 |
415153 |
415159 |
415171 |
415187 |
415189 |
415201 |
415213 |
415231 |
415253 |
415271 |
415273 |
415319 |
415343 |
415379 |
415381 |
415391 |
415409 |
415427 |
415447 |
415469 |
415477 |
415489 |
415507 |
415517 |
415523 |
415543 |
415553 |
415559 |
415567 |
415577 |
415603 |
415607 |
415609 |
415627 |
415631 |
415643 |
415651 |
415661 |
415669 |
415673 |
415687 |
415691 |
415697 |
415717 |
415721 |
415729 |
415759 |
415783 |
415787 |
415799 |
415801 |
415819 |
415823 |
415861 |
415873 |
415879 |
415901 |
415931 |
415937 |
415949 |
415951 |
415957 |
415963 |
415969 |
415979 |
415993 |
415999 |
416011 |
416023 |
416071 |
416077 |
416089 |
416107 |
416147 |
416149 |
416153 |
416159 |
416167 |
416201 |
416219 |
416239 |
416243 |
416249 |
416257 |
416263 |
416281 |
416291 |
416333 |
416359 |
416387 |
416389 |
416393 |
416399 |
416401 |
416407 |
416413 |
416417 |
416419 |
416441 |
416443 |
416459 |
416473 |
416477 |
416491 |
416497 |
416501 |
416503 |
416513 |
416531 |
416543 |
416573 |
416579 |
416593 |
416621 |
416623 |
416629 |
416659 |
416677 |
416693 |
416719 |
416761 |
416797 |
416821 |
416833 |
416839 |
416849 |
416851 |
416873 |
416881 |
416887 |
416947 |
416957 |
416963 |
416989 |
417007 |
417017 |
417019 |
417023 |
417037 |
417089 |
417097 |
417113 |
417119 |
417127 |
417133 |
417161 |
417169 |
417173 |
417181 |
417187 |
417191 |
417203 |
417217 |
417227 |
417239 |
417251 |
417271 |
417283 |
417293 |
417311 |
417317 |
417331 |
417337 |
417371 |
417377 |
417379 |
417383 |
417419 |
417437 |
417451 |
417457 |
417479 |
417491 |
417493 |
417509 |
417511 |
417523 |
417541 |
417553 |
417559 |
417577 |
417581 |
417583 |
417617 |
417623 |
417631 |
417643 |
417649 |
417671 |
417691 |
417719 |
417721 |
417727 |
417731 |
417733 |
417737 |
417751 |
417763 |
417773 |
417793 |
417811 |
417821 |
417839 |
417863 |
417869 |
417881 |
417883 |
417899 |
417931 |
417941 |
417947 |
417953 |
417959 |
417961 |
417983 |
417997 |
418007 |
418009 |
418027 |
418031 |
418043 |
418051 |
418069 |
418073 |
418079 |
418087 |
418109 |
418129 |
418157 |
418169 |
418177 |
418181 |
418189 |
418199 |
418207 |
418219 |
418259 |
418273 |
418279 |
418289 |
418303 |
418321 |
418331 |
418337 |
418339 |
418343 |
418349 |
418351 |
418357 |
418373 |
418381 |
418391 |
418423 |
418427 |
418447 |
418459 |
418471 |
418493 |
418511 |
418553 |
418559 |
418597 |
418601 |
418603 |
418631 |
418633 |
418637 |
418657 |
418667 |
418699 |
418709 |
418721 |
418739 |
418751 |
418763 |
418771 |
418783 |
418787 |
418793 |
418799 |
418811 |
418813 |
418819 |
418837 |
418843 |
418849 |
418861 |
418867 |
418871 |
418883 |
418889 |
418909 |
418921 |
418927 |
418933 |
418939 |
418961 |
418981 |
418987 |
418993 |
418997 |
419047 |
419051 |
419053 |
419057 |
419059 |
419087 |
419141 |
419147 |
419161 |
419171 |
419183 |
419189 |
419191 |
419201 |
419231 |
419249 |
419261 |
419281 |
419291 |
419297 |
419303 |
419317 |
419329 |
419351 |
419383 |
419401 |
419417 |
419423 |
419429 |
419443 |
419449 |
419459 |
419467 |
419473 |
419477 |
419483 |
419491 |
419513 |
419527 |
419537 |
419557 |
419561 |
419563 |
419567 |
419579 |
419591 |
419597 |
419599 |
419603 |
419609 |
419623 |
419651 |
419687 |
419693 |
419701 |
419711 |
419743 |
419753 |
419777 |
419789 |
419791 |
419801 |
419803 |
419821 |
419827 |
419831 |
419873 |
419893 |
419921 |
419927 |
419929 |
419933 |
419953 |
419959 |
419999 |
420001 |
420029 |
420037 |
420041 |
420047 |
420073 |
420097 |
420103 |
420149 |
420163 |
420191 |
420193 |
420221 |
420241 |
420253 |
420263 |
420269 |
420271 |
420293 |
420307 |
420313 |
420317 |
420319 |
420323 |
420331 |
420341 |
420349 |
420353 |
420361 |
420367 |
420383 |
420397 |
420419 |
420421 |
420439 |
420457 |
420467 |
420479 |
420481 |
420499 |
420503 |
420521 |
420551 |
420557 |
420569 |
420571 |
420593 |
420599 |
420613 |
420671 |
420677 |
420683 |
420691 |
420731 |
420737 |
420743 |
420757 |
420769 |
420779 |
420781 |
420799 |
420803 |
420809 |
420811 |
420851 |
420853 |
420857 |
420859 |
420899 |
420919 |
420929 |
420941 |
420967 |
420977 |
420997 |
421009 |
421019 |
421033 |
421037 |
421049 |
421079 |
421081 |
421093 |
421103 |
421121 |
421123 |
421133 |
421147 |
421159 |
421163 |
421177 |
421181 |
421189 |
421207 |
421241 |
421273 |
421279 |
421303 |
421313 |
421331 |
421339 |
421349 |
421361 |
421381 |
421397 |
421409 |
421417 |
421423 |
421433 |
421453 |
421459 |
421469 |
421471 |
421483 |
421493 |
421501 |
421517 |
421559 |
421607 |
421609 |
421621 |
421633 |
421639 |
421643 |
421657 |
421661 |
421691 |
421697 |
421699 |
421703 |
421709 |
421711 |
421717 |
421727 |
421739 |
421741 |
421783 |
421801 |
421807 |
421831 |
421847 |
421891 |
421907 |
421913 |
421943 |
421973 |
421987 |
421997 |
422029 |
422041 |
422057 |
422063 |
422069 |
422077 |
422083 |
422087 |
422089 |
422099 |
422101 |
422111 |
422113 |
422129 |
422137 |
422141 |
422183 |
422203 |
422209 |
422231 |
422239 |
422243 |
422249 |
422267 |
422287 |
422291 |
422309 |
422311 |
422321 |
422339 |
422353 |
422363 |
422369 |
422377 |
422393 |
422407 |
422431 |
422453 |
422459 |
422479 |
422537 |
422549 |
422551 |
422557 |
422563 |
422567 |
422573 |
422581 |
422621 |
422627 |
422657 |
422689 |
422701 |
422707 |
422711 |
422749 |
422753 |
422759 |
422761 |
422789 |
422797 |
422803 |
422827 |
422857 |
422861 |
422867 |
422869 |
422879 |
422881 |
422893 |
422897 |
422899 |
422911 |
422923 |
422927 |
422969 |
422987 |
423001 |
423013 |
423019 |
423043 |
423053 |
423061 |
423067 |
423083 |
423091 |
423097 |
423103 |
423109 |
423121 |
423127 |
423133 |
423173 |
423179 |
423191 |
423209 |
423221 |
423229 |
423233 |
423251 |
423257 |
423259 |
423277 |
423281 |
423287 |
423289 |
423299 |
423307 |
423323 |
423341 |
423347 |
423389 |
423403 |
423413 |
423427 |
423431 |
423439 |
423457 |
423461 |
423463 |
423469 |
423481 |
423497 |
423503 |
423509 |
423541 |
423547 |
423557 |
423559 |
423581 |
423587 |
423601 |
423617 |
423649 |
423667 |
423697 |
423707 |
423713 |
423727 |
423749 |
423751 |
423763 |
423769 |
423779 |
423781 |
423791 |
423803 |
423823 |
423847 |
423853 |
423859 |
423869 |
423883 |
423887 |
423931 |
423949 |
423961 |
423977 |
423989 |
423991 |
424001 |
424003 |
424007 |
424019 |
424027 |
424037 |
424079 |
424091 |
424093 |
424103 |
424117 |
424121 |
424129 |
424139 |
424147 |
424157 |
424163 |
424169 |
424187 |
424199 |
424223 |
424231 |
424243 |
424247 |
424261 |
424267 |
424271 |
424273 |
424313 |
424331 |
424339 |
424343 |
424351 |
424397 |
424423 |
424429 |
424433 |
424451 |
424471 |
424481 |
424493 |
424519 |
424537 |
424547 |
424549 |
424559 |
424573 |
424577 |
424597 |
424601 |
424639 |
424661 |
424667 |
424679 |
424687 |
424693 |
424709 |
424727 |
424729 |
424757 |
424769 |
424771 |
424777 |
424811 |
424817 |
424819 |
424829 |
424841 |
424843 |
424849 |
424861 |
424867 |
424889 |
424891 |
424903 |
424909 |
424913 |
424939 |
424961 |
424967 |
424997 |
425003 |
425027 |
425039 |
425057 |
425059 |
425071 |
425083 |
425101 |
425107 |
425123 |
425147 |
425149 |
425189 |
425197 |
425207 |
425233 |
425237 |
425251 |
425273 |
425279 |
425281 |
425291 |
425297 |
425309 |
425317 |
425329 |
425333 |
425363 |
425377 |
425387 |
425393 |
425417 |
425419 |
425423 |
425441 |
425443 |
425471 |
425473 |
425489 |
425501 |
425519 |
425521 |
425533 |
425549 |
425563 |
425591 |
425603 |
425609 |
425641 |
425653 |
425681 |
425701 |
425713 |
425779 |
425783 |
425791 |
425801 |
425813 |
425819 |
425837 |
425839 |
425851 |
425857 |
425861 |
425869 |
425879 |
425899 |
425903 |
425911 |
425939 |
425959 |
425977 |
425987 |
425989 |
426007 |
426011 |
426061 |
426073 |
426077 |
426089 |
426091 |
426103 |
426131 |
426161 |
426163 |
426193 |
426197 |
426211 |
426229 |
426233 |
426253 |
426287 |
426301 |
426311 |
426319 |
426331 |
426353 |
426383 |
426389 |
426401 |
426407 |
426421 |
426427 |
426469 |
426487 |
426527 |
426541 |
426551 |
426553 |
426563 |
426583 |
426611 |
426631 |
426637 |
426641 |
426661 |
426691 |
426697 |
426707 |
426709 |
426731 |
426737 |
426739 |
426743 |
426757 |
426761 |
426763 |
426773 |
426779 |
426787 |
426799 |
426841 |
426859 |
426863 |
426871 |
426889 |
426893 |
426913 |
426917 |
426919 |
426931 |
426941 |
426971 |
426973 |
426997 |
427001 |
427013 |
427039 |
427043 |
427067 |
427069 |
427073 |
427079 |
427081 |
427103 |
427117 |
427151 |
427169 |
427181 |
427213 |
427237 |
427241 |
427243 |
427247 |
427249 |
427279 |
427283 |
427307 |
427309 |
427327 |
427333 |
427351 |
427369 |
427379 |
427381 |
427403 |
427417 |
427421 |
427423 |
427429 |
427433 |
427439 |
427447 |
427451 |
427457 |
427477 |
427513 |
427517 |
427523 |
427529 |
427541 |
427579 |
427591 |
427597 |
427619 |
427621 |
427681 |
427711 |
427717 |
427723 |
427727 |
427733 |
427751 |
427781 |
427787 |
427789 |
427813 |
427849 |
427859 |
427877 |
427879 |
427883 |
427913 |
427919 |
427939 |
427949 |
427951 |
427957 |
427967 |
427969 |
427991 |
427993 |
427997 |
428003 |
428023 |
428027 |
428033 |
428039 |
428041 |
428047 |
428083 |
428093 |
428137 |
428143 |
428147 |
428149 |
428161 |
428167 |
428173 |
428177 |
428221 |
428227 |
428231 |
428249 |
428251 |
428273 |
428297 |
428299 |
428303 |
428339 |
428353 |
428369 |
428401 |
428411 |
428429 |
428471 |
428473 |
428489 |
428503 |
428509 |
428531 |
428539 |
428551 |
428557 |
428563 |
428567 |
428569 |
428579 |
428629 |
428633 |
428639 |
428657 |
428663 |
428671 |
428677 |
428683 |
428693 |
428731 |
428741 |
428759 |
428777 |
428797 |
428801 |
428807 |
428809 |
428833 |
428843 |
428851 |
428863 |
428873 |
428899 |
428951 |
428957 |
428977 |
429007 |
429017 |
429043 |
429083 |
429101 |
429109 |
429119 |
429127 |
429137 |
429139 |
429161 |
429181 |
429197 |
429211 |
429217 |
429223 |
429227 |
429241 |
429259 |
429271 |
429277 |
429281 |
429283 |
429329 |
429347 |
429349 |
429361 |
429367 |
429389 |
429397 |
429409 |
429413 |
429427 |
429431 |
429449 |
429463 |
429467 |
429469 |
429487 |
429497 |
429503 |
429509 |
429511 |
429521 |
429529 |
429547 |
429551 |
429563 |
429581 |
429587 |
429589 |
429599 |
429631 |
429643 |
429659 |
429661 |
429673 |
429677 |
429679 |
429683 |
429701 |
429719 |
429727 |
429731 |
429733 |
429773 |
429791 |
429797 |
429817 |
429823 |
429827 |
429851 |
429853 |
429881 |
429887 |
429889 |
429899 |
429901 |
429907 |
429911 |
429917 |
429929 |
429931 |
429937 |
429943 |
429953 |
429971 |
429973 |
429991 |
430007 |
430009 |
430013 |
430019 |
430057 |
430061 |
430081 |
430091 |
430093 |
430121 |
430139 |
430147 |
430193 |
430259 |
430267 |
430277 |
430279 |
430289 |
430303 |
430319 |
430333 |
430343 |
430357 |
430393 |
430411 |
430427 |
430433 |
430453 |
430487 |
430499 |
430511 |
430513 |
430517 |
430543 |
430553 |
430571 |
430579 |
430589 |
430601 |
430603 |
430649 |
430663 |
430691 |
430697 |
430699 |
430709 |
430723 |
430739 |
430741 |
430747 |
430751 |
430753 |
430769 |
430783 |
430789 |
430799 |
430811 |
430819 |
430823 |
430841 |
430847 |
430861 |
430873 |
430879 |
430883 |
430891 |
430897 |
430907 |
430909 |
430921 |
430949 |
430957 |
430979 |
430981 |
430987 |
430999 |
431017 |
431021 |
431029 |
431047 |
431051 |
431063 |
431077 |
431083 |
431099 |
431107 |
431141 |
431147 |
431153 |
431173 |
431191 |
431203 |
431213 |
431219 |
431237 |
431251 |
431257 |
431267 |
431269 |
431287 |
431297 |
431311 |
431329 |
431339 |
431363 |
431369 |
431377 |
431381 |
431399 |
431423 |
431429 |
431441 |
431447 |
431449 |
431479 |
431513 |
431521 |
431533 |
431567 |
431581 |
431597 |
431603 |
431611 |
431617 |
431621 |
431657 |
431659 |
431663 |
431671 |
431693 |
431707 |
431729 |
431731 |
431759 |
431777 |
431797 |
431801 |
431803 |
431807 |
431831 |
431833 |
431857 |
431863 |
431867 |
431869 |
431881 |
431887 |
431891 |
431903 |
431911 |
431929 |
431933 |
431947 |
431983 |
431993 |
432001 |
432007 |
432023 |
432031 |
432037 |
432043 |
432053 |
432059 |
432067 |
432073 |
432097 |
432121 |
432137 |
432139 |
432143 |
432149 |
432161 |
432163 |
432167 |
432199 |
432203 |
432227 |
432241 |
432251 |
432277 |
432281 |
432287 |
432301 |
432317 |
432323 |
432337 |
432343 |
432349 |
432359 |
432373 |
432389 |
432391 |
432401 |
432413 |
432433 |
432437 |
432449 |
432457 |
432479 |
432491 |
432499 |
432503 |
432511 |
432527 |
432539 |
432557 |
432559 |
432569 |
432577 |
432587 |
432589 |
432613 |
432631 |
432637 |
432659 |
432661 |
432713 |
432721 |
432727 |
432737 |
432743 |
432749 |
432781 |
432793 |
432797 |
432799 |
432833 |
432847 |
432857 |
432869 |
432893 |
432907 |
432923 |
432931 |
432959 |
432961 |
432979 |
432983 |
432989 |
433003 |
433033 |
433049 |
433051 |
433061 |
433073 |
433079 |
433087 |
433093 |
433099 |
433117 |
433123 |
433141 |
433151 |
433187 |
433193 |
433201 |
433207 |
433229 |
433241 |
433249 |
433253 |
433259 |
433261 |
433267 |
433271 |
433291 |
433309 |
433319 |
433337 |
433351 |
433357 |
433361 |
433369 |
433373 |
433393 |
433399 |
433421 |
433429 |
433439 |
433453 |
433469 |
433471 |
433501 |
433507 |
433513 |
433549 |
433571 |
433577 |
433607 |
433627 |
433633 |
433639 |
433651 |
433661 |
433663 |
433673 |
433679 |
433681 |
433703 |
433723 |
433729 |
433747 |
433759 |
433777 |
433781 |
433787 |
433813 |
433817 |
433847 |
433859 |
433861 |
433877 |
433883 |
433889 |
433931 |
433943 |
433963 |
433967 |
433981 |
434009 |
434011 |
434029 |
434039 |
434081 |
434087 |
434107 |
434111 |
434113 |
434117 |
434141 |
434167 |
434179 |
434191 |
434201 |
434209 |
434221 |
434237 |
434243 |
434249 |
434261 |
434267 |
434293 |
434297 |
434303 |
434311 |
434323 |
434347 |
434353 |
434363 |
434377 |
434383 |
434387 |
434389 |
434407 |
434411 |
434431 |
434437 |
434459 |
434461 |
434471 |
434479 |
434501 |
434509 |
434521 |
434561 |
434563 |
434573 |
434593 |
434597 |
434611 |
434647 |
434659 |
434683 |
434689 |
434699 |
434717 |
434719 |
434743 |
434761 |
434783 |
434803 |
434807 |
434813 |
434821 |
434827 |
434831 |
434839 |
434849 |
434857 |
434867 |
434873 |
434881 |
434909 |
434921 |
434923 |
434927 |
434933 |
434939 |
434947 |
434957 |
434963 |
434977 |
434981 |
434989 |
435037 |
435041 |
435059 |
435103 |
435107 |
435109 |
435131 |
435139 |
435143 |
435151 |
435161 |
435179 |
435181 |
435187 |
435191 |
435221 |
435223 |
435247 |
435257 |
435263 |
435277 |
435283 |
435287 |
435307 |
435317 |
435343 |
435349 |
435359 |
435371 |
435397 |
435401 |
435403 |
435419 |
435427 |
435437 |
435439 |
435451 |
435481 |
435503 |
435529 |
435541 |
435553 |
435559 |
435563 |
435569 |
435571 |
435577 |
435583 |
435593 |
435619 |
435623 |
435637 |
435641 |
435647 |
435649 |
435653 |
435661 |
435679 |
435709 |
435731 |
435733 |
435739 |
435751 |
435763 |
435769 |
435779 |
435817 |
435839 |
435847 |
435857 |
435859 |
435881 |
435889 |
435893 |
435907 |
435913 |
435923 |
435947 |
435949 |
435973 |
435983 |
435997 |
436003 |
436013 |
436027 |
436061 |
436081 |
436087 |
436091 |
436097 |
436127 |
436147 |
436151 |
436157 |
436171 |
436181 |
436217 |
436231 |
436253 |
436273 |
436279 |
436283 |
436291 |
436307 |
436309 |
436313 |
436343 |
436357 |
436399 |
436417 |
436427 |
436439 |
436459 |
436463 |
436477 |
436481 |
436483 |
436507 |
436523 |
436529 |
436531 |
436547 |
436549 |
436571 |
436591 |
436607 |
436621 |
436627 |
436649 |
436651 |
436673 |
436687 |
436693 |
436717 |
436727 |
436729 |
436739 |
436741 |
436757 |
436801 |
436811 |
436819 |
436831 |
436841 |
436853 |
436871 |
436889 |
436913 |
436957 |
436963 |
436967 |
436973 |
436979 |
436993 |
436999 |
437011 |
437033 |
437071 |
437077 |
437083 |
437093 |
437111 |
437113 |
437137 |
437141 |
437149 |
437153 |
437159 |
437191 |
437201 |
437219 |
437237 |
437243 |
437263 |
437273 |
437279 |
437287 |
437293 |
437321 |
437351 |
437357 |
437363 |
437387 |
437389 |
437401 |
437413 |
437467 |
437471 |
437473 |
437497 |
437501 |
437509 |
437519 |
437527 |
437533 |
437539 |
437543 |
437557 |
437587 |
437629 |
437641 |
437651 |
437653 |
437677 |
437681 |
437687 |
437693 |
437719 |
437729 |
437743 |
437753 |
437771 |
437809 |
437819 |
437837 |
437849 |
437861 |
437867 |
437881 |
437909 |
437923 |
437947 |
437953 |
437959 |
437977 |
438001 |
438017 |
438029 |
438047 |
438049 |
438091 |
438131 |
438133 |
438143 |
438169 |
438203 |
438211 |
438223 |
438233 |
438241 |
438253 |
438259 |
438271 |
438281 |
438287 |
438301 |
438313 |
438329 |
438341 |
438377 |
438391 |
438401 |
438409 |
438419 |
438439 |
438443 |
438467 |
438479 |
438499 |
438517 |
438521 |
438523 |
438527 |
438533 |
438551 |
438569 |
438589 |
438601 |
438611 |
438623 |
438631 |
438637 |
438661 |
438667 |
438671 |
438701 |
438707 |
438721 |
438733 |
438761 |
438769 |
438793 |
438827 |
438829 |
438833 |
438847 |
438853 |
438869 |
438877 |
438887 |
438899 |
438913 |
438937 |
438941 |
438953 |
438961 |
438967 |
438979 |
438983 |
438989 |
439007 |
439009 |
439063 |
439081 |
439123 |
439133 |
439141 |
439157 |
439163 |
439171 |
439183 |
439199 |
439217 |
439253 |
439273 |
439279 |
439289 |
439303 |
439339 |
439349 |
439357 |
439367 |
439381 |
439409 |
439421 |
439427 |
439429 |
439441 |
439459 |
439463 |
439471 |
439493 |
439511 |
439519 |
439541 |
439559 |
439567 |
439573 |
439577 |
439583 |
439601 |
439613 |
439631 |
439639 |
439661 |
439667 |
439687 |
439693 |
439697 |
439709 |
439723 |
439729 |
439753 |
439759 |
439763 |
439771 |
439781 |
439787 |
439799 |
439811 |
439823 |
439849 |
439853 |
439861 |
439867 |
439883 |
439891 |
439903 |
439919 |
439949 |
439961 |
439969 |
439973 |
439981 |
439991 |
440009 |
440023 |
440039 |
440047 |
440087 |
440093 |
440101 |
440131 |
440159 |
440171 |
440177 |
440179 |
440183 |
440203 |
440207 |
440221 |
440227 |
440239 |
440261 |
440269 |
440281 |
440303 |
440311 |
440329 |
440333 |
440339 |
440347 |
440371 |
440383 |
440389 |
440393 |
440399 |
440431 |
440441 |
440443 |
440471 |
440497 |
440501 |
440507 |
440509 |
440527 |
440537 |
440543 |
440549 |
440551 |
440567 |
440569 |
440579 |
440581 |
440641 |
440651 |
440653 |
440669 |
440677 |
440681 |
440683 |
440711 |
440717 |
440723 |
440731 |
440753 |
440761 |
440773 |
440807 |
440809 |
440821 |
440831 |
440849 |
440863 |
440893 |
440903 |
440911 |
440939 |
440941 |
440953 |
440959 |
440983 |
440987 |
440989 |
441011 |
441029 |
441041 |
441043 |
441053 |
441073 |
441079 |
441101 |
441107 |
441109 |
441113 |
441121 |
441127 |
441157 |
441169 |
441179 |
441187 |
441191 |
441193 |
441229 |
441247 |
441251 |
441257 |
441263 |
441281 |
441307 |
441319 |
441349 |
441359 |
441361 |
441403 |
441421 |
441443 |
441449 |
441461 |
441479 |
441499 |
441517 |
441523 |
441527 |
441547 |
441557 |
441563 |
441569 |
441587 |
441607 |
441613 |
441619 |
441631 |
441647 |
441667 |
441697 |
441703 |
441713 |
441737 |
441751 |
441787 |
441797 |
441799 |
441811 |
441827 |
441829 |
441839 |
441841 |
441877 |
441887 |
441907 |
441913 |
441923 |
441937 |
441953 |
441971 |
442003 |
442007 |
442009 |
442019 |
442027 |
442031 |
442033 |
442061 |
442069 |
442097 |
442109 |
442121 |
442139 |
442147 |
442151 |
442157 |
442171 |
442177 |
442181 |
442193 |
442201 |
442207 |
442217 |
442229 |
442237 |
442243 |
442271 |
442283 |
442291 |
442319 |
442327 |
442333 |
442363 |
442367 |
442397 |
442399 |
442439 |
442447 |
442457 |
442469 |
442487 |
442489 |
442499 |
442501 |
442517 |
442531 |
442537 |
442571 |
442573 |
442577 |
442579 |
442601 |
442609 |
442619 |
442633 |
442691 |
442699 |
442703 |
442721 |
442733 |
442747 |
442753 |
442763 |
442769 |
442777 |
442781 |
442789 |
442807 |
442817 |
442823 |
442829 |
442831 |
442837 |
442843 |
442861 |
442879 |
442903 |
442919 |
442961 |
442963 |
442973 |
442979 |
442987 |
442991 |
442997 |
443011 |
443017 |
443039 |
443041 |
443057 |
443059 |
443063 |
443077 |
443089 |
443117 |
443123 |
443129 |
443147 |
443153 |
443159 |
443161 |
443167 |
443171 |
443189 |
443203 |
443221 |
443227 |
443231 |
443237 |
443243 |
443249 |
443263 |
443273 |
443281 |
443291 |
443293 |
443341 |
443347 |
443353 |
443363 |
443369 |
443389 |
443407 |
443413 |
443419 |
443423 |
443431 |
443437 |
443453 |
443467 |
443489 |
443501 |
443533 |
443543 |
443551 |
443561 |
443563 |
443567 |
443587 |
443591 |
443603 |
443609 |
443629 |
443659 |
443687 |
443689 |
443701 |
443711 |
443731 |
443749 |
443753 |
443759 |
443761 |
443771 |
443777 |
443791 |
443837 |
443851 |
443867 |
443869 |
443873 |
443879 |
443881 |
443893 |
443899 |
443909 |
443917 |
443939 |
443941 |
443953 |
443983 |
443987 |
443999 |
444001 |
444007 |
444029 |
444043 |
444047 |
444079 |
444089 |
444109 |
444113 |
444121 |
444127 |
444131 |
444151 |
444167 |
444173 |
444179 |
444181 |
444187 |
444209 |
444253 |
444271 |
444281 |
444287 |
444289 |
444293 |
444307 |
444341 |
444343 |
444347 |
444349 |
444401 |
444403 |
444421 |
444443 |
444449 |
444461 |
444463 |
444469 |
444473 |
444487 |
444517 |
444523 |
444527 |
444529 |
444539 |
444547 |
444553 |
444557 |
444569 |
444589 |
444607 |
444623 |
444637 |
444641 |
444649 |
444671 |
444677 |
444701 |
444713 |
444739 |
444767 |
444791 |
444793 |
444803 |
444811 |
444817 |
444833 |
444841 |
444859 |
444863 |
444869 |
444877 |
444883 |
444887 |
444893 |
444901 |
444929 |
444937 |
444953 |
444967 |
444971 |
444979 |
445001 |
445019 |
445021 |
445031 |
445033 |
445069 |
445087 |
445091 |
445097 |
445103 |
445141 |
445157 |
445169 |
445183 |
445187 |
445199 |
445229 |
445261 |
445271 |
445279 |
445283 |
445297 |
445307 |
445321 |
445339 |
445363 |
445427 |
445433 |
445447 |
445453 |
445463 |
445477 |
445499 |
445507 |
445537 |
445541 |
445567 |
445573 |
445583 |
445589 |
445597 |
445619 |
445631 |
445633 |
445649 |
445657 |
445691 |
445699 |
445703 |
445741 |
445747 |
445769 |
445771 |
445789 |
445799 |
445807 |
445829 |
445847 |
445853 |
445871 |
445877 |
445883 |
445891 |
445931 |
445937 |
445943 |
445967 |
445969 |
446003 |
446009 |
446041 |
446053 |
446081 |
446087 |
446111 |
446123 |
446129 |
446141 |
446179 |
446189 |
446191 |
446197 |
446221 |
446227 |
446231 |
446261 |
446263 |
446273 |
446279 |
446293 |
446309 |
446323 |
446333 |
446353 |
446363 |
446387 |
446389 |
446399 |
446401 |
446417 |
446441 |
446447 |
446461 |
446473 |
446477 |
446503 |
446533 |
446549 |
446561 |
446569 |
446597 |
446603 |
446609 |
446647 |
446657 |
446713 |
446717 |
446731 |
446753 |
446759 |
446767 |
446773 |
446819 |
446827 |
446839 |
446863 |
446881 |
446891 |
446893 |
446909 |
446911 |
446921 |
446933 |
446951 |
446969 |
446983 |
447001 |
447011 |
447019 |
447053 |
447067 |
447079 |
447101 |
447107 |
447119 |
447133 |
447137 |
447173 |
447179 |
447193 |
447197 |
447211 |
447217 |
447221 |
447233 |
447247 |
447257 |
447259 |
447263 |
447311 |
447319 |
447323 |
447331 |
447353 |
447401 |
447409 |
447427 |
447439 |
447443 |
447449 |
447451 |
447463 |
447467 |
447481 |
447509 |
447521 |
447527 |
447541 |
447569 |
447571 |
447611 |
447617 |
447637 |
447641 |
447677 |
447683 |
447701 |
447703 |
447743 |
447749 |
447757 |
447779 |
447791 |
447793 |
447817 |
447823 |
447827 |
447829 |
447841 |
447859 |
447877 |
447883 |
447893 |
447901 |
447907 |
447943 |
447961 |
447983 |
447991 |
448003 |
448013 |
448027 |
448031 |
448057 |
448067 |
448073 |
448093 |
448111 |
448121 |
448139 |
448141 |
448157 |
448159 |
448169 |
448177 |
448187 |
448193 |
448199 |
448207 |
448241 |
448249 |
448303 |
448309 |
448313 |
448321 |
448351 |
448363 |
448367 |
448373 |
448379 |
448387 |
448397 |
448421 |
448451 |
448519 |
448531 |
448561 |
448597 |
448607 |
448627 |
448631 |
448633 |
448667 |
448687 |
448697 |
448703 |
448727 |
448733 |
448741 |
448769 |
448793 |
448801 |
448807 |
448829 |
448843 |
448853 |
448859 |
448867 |
448871 |
448873 |
448879 |
448883 |
448907 |
448927 |
448939 |
448969 |
448993 |
448997 |
448999 |
449003 |
449011 |
449051 |
449077 |
449083 |
449093 |
449107 |
449117 |
449129 |
449131 |
449149 |
449153 |
449161 |
449171 |
449173 |
449201 |
449203 |
449209 |
449227 |
449243 |
449249 |
449261 |
449263 |
449269 |
449287 |
449299 |
449303 |
449311 |
449321 |
449333 |
449347 |
449353 |
449363 |
449381 |
449399 |
449411 |
449417 |
449419 |
449437 |
449441 |
449459 |
449473 |
449543 |
449549 |
449557 |
449563 |
449567 |
449569 |
449591 |
449609 |
449621 |
449629 |
449653 |
449663 |
449671 |
449677 |
449681 |
449689 |
449693 |
449699 |
449741 |
449759 |
449767 |
449773 |
449783 |
449797 |
449807 |
449821 |
449833 |
449851 |
449879 |
449921 |
449929 |
449941 |
449951 |
449959 |
449963 |
449971 |
449987 |
449989 |
450001 |
450011 |
450019 |
450029 |
450067 |
450071 |
450077 |
450083 |
450101 |
450103 |
450113 |
450127 |
450137 |
450161 |
450169 |
450193 |
450199 |
450209 |
450217 |
450223 |
450227 |
450239 |
450257 |
450259 |
450277 |
450287 |
450293 |
450299 |
450301 |
450311 |
450343 |
450349 |
450361 |
450367 |
450377 |
450383 |
450391 |
450403 |
450413 |
450421 |
450431 |
450451 |
450473 |
450479 |
450481 |
450487 |
450493 |
450503 |
450529 |
450533 |
450557 |
450563 |
450581 |
450587 |
450599 |
450601 |
450617 |
450641 |
450643 |
450649 |
450677 |
450691 |
450707 |
450719 |
450727 |
450761 |
450767 |
450787 |
450797 |
450799 |
450803 |
450809 |
450811 |
450817 |
450829 |
450839 |
450841 |
450847 |
450859 |
450881 |
450883 |
450887 |
450893 |
450899 |
450913 |
450917 |
450929 |
450943 |
450949 |
450971 |
450991 |
450997 |
451013 |
451039 |
451051 |
451057 |
451069 |
451093 |
451097 |
451103 |
451109 |
451159 |
451177 |
451181 |
451183 |
451201 |
451207 |
451249 |
451277 |
451279 |
451301 |
451303 |
451309 |
451313 |
451331 |
451337 |
451343 |
451361 |
451387 |
451397 |
451411 |
451439 |
451441 |
451481 |
451499 |
451519 |
451523 |
451541 |
451547 |
451553 |
451579 |
451601 |
451609 |
451621 |
451637 |
451657 |
451663 |
451667 |
451669 |
451679 |
451681 |
451691 |
451699 |
451709 |
451723 |
451747 |
451753 |
451771 |
451783 |
451793 |
451799 |
451823 |
451831 |
451837 |
451859 |
451873 |
451879 |
451897 |
451901 |
451903 |
451909 |
451921 |
451933 |
451937 |
451939 |
451961 |
451967 |
451987 |
452009 |
452017 |
452027 |
452033 |
452041 |
452077 |
452083 |
452087 |
452131 |
452159 |
452161 |
452171 |
452191 |
452201 |
452213 |
452227 |
452233 |
452239 |
452269 |
452279 |
452293 |
452297 |
452329 |
452363 |
452377 |
452393 |
452401 |
452443 |
452453 |
452497 |
452519 |
452521 |
452531 |
452533 |
452537 |
452539 |
452549 |
452579 |
452587 |
452597 |
452611 |
452629 |
452633 |
452671 |
452687 |
452689 |
452701 |
452731 |
452759 |
452773 |
452797 |
452807 |
452813 |
452821 |
452831 |
452857 |
452869 |
452873 |
452923 |
452953 |
452957 |
452983 |
452989 |
453023 |
453029 |
453053 |
453073 |
453107 |
453119 |
453133 |
453137 |
453143 |
453157 |
453161 |
453181 |
453197 |
453199 |
453209 |
453217 |
453227 |
453239 |
453247 |
453269 |
453289 |
453293 |
453301 |
453311 |
453317 |
453329 |
453347 |
453367 |
453371 |
453377 |
453379 |
453421 |
453451 |
453461 |
453527 |
453553 |
453559 |
453569 |
453571 |
453599 |
453601 |
453617 |
453631 |
453637 |
453641 |
453643 |
453659 |
453667 |
453671 |
453683 |
453703 |
453707 |
453709 |
453737 |
453757 |
453797 |
453799 |
453823 |
453833 |
453847 |
453851 |
453877 |
453889 |
453907 |
453913 |
453923 |
453931 |
453949 |
453961 |
453977 |
453983 |
453991 |
454009 |
454021 |
454031 |
454033 |
454039 |
454061 |
454063 |
454079 |
454109 |
454141 |
454151 |
454159 |
454183 |
454199 |
454211 |
454213 |
454219 |
454229 |
454231 |
454247 |
454253 |
454277 |
454297 |
454303 |
454313 |
454331 |
454351 |
454357 |
454361 |
454379 |
454387 |
454409 |
454417 |
454451 |
454453 |
454483 |
454501 |
454507 |
454513 |
454541 |
454543 |
454547 |
454577 |
454579 |
454603 |
454609 |
454627 |
454637 |
454673 |
454679 |
454709 |
454711 |
454721 |
454723 |
454759 |
454763 |
454777 |
454799 |
454823 |
454843 |
454847 |
454849 |
454859 |
454889 |
454891 |
454907 |
454919 |
454921 |
454931 |
454943 |
454967 |
454969 |
454973 |
454991 |
455003 |
455011 |
455033 |
455047 |
455053 |
455093 |
455099 |
455123 |
455149 |
455159 |
455167 |
455171 |
455177 |
455201 |
455219 |
455227 |
455233 |
455237 |
455261 |
455263 |
455269 |
455291 |
455309 |
455317 |
455321 |
455333 |
455339 |
455341 |
455353 |
455381 |
455393 |
455401 |
455407 |
455419 |
455431 |
455437 |
455443 |
455461 |
455471 |
455473 |
455479 |
455489 |
455491 |
455513 |
455527 |
455531 |
455537 |
455557 |
455573 |
455579 |
455597 |
455599 |
455603 |
455627 |
455647 |
455659 |
455681 |
455683 |
455687 |
455701 |
455711 |
455717 |
455737 |
455761 |
455783 |
455789 |
455809 |
455827 |
455831 |
455849 |
455863 |
455881 |
455899 |
455921 |
455933 |
455941 |
455953 |
455969 |
455977 |
455989 |
455993 |
455999 |
456007 |
456013 |
456023 |
456037 |
456047 |
456061 |
456091 |
456107 |
456109 |
456119 |
456149 |
456151 |
456167 |
456193 |
456223 |
456233 |
456241 |
456283 |
456293 |
456329 |
456349 |
456353 |
456367 |
456377 |
456403 |
456409 |
456427 |
456439 |
456451 |
456457 |
456461 |
456499 |
456503 |
456517 |
456523 |
456529 |
456539 |
456553 |
456557 |
456559 |
456571 |
456581 |
456587 |
456607 |
456611 |
456613 |
456623 |
456641 |
456647 |
456649 |
456653 |
456679 |
456683 |
456697 |
456727 |
456737 |
456763 |
456767 |
456769 |
456791 |
456809 |
456811 |
456821 |
456871 |
456877 |
456881 |
456899 |
456901 |
456923 |
456949 |
456959 |
456979 |
456991 |
457001 |
457003 |
457013 |
457021 |
457043 |
457049 |
457057 |
457087 |
457091 |
457097 |
457099 |
457117 |
457139 |
457151 |
457153 |
457183 |
457189 |
457201 |
457213 |
457229 |
457241 |
457253 |
457267 |
457271 |
457277 |
457279 |
457307 |
457319 |
457333 |
457339 |
457363 |
457367 |
457381 |
457393 |
457397 |
457399 |
457403 |
457411 |
457421 |
457433 |
457459 |
457469 |
457507 |
457511 |
457517 |
457547 |
457553 |
457559 |
457571 |
457607 |
457609 |
457621 |
457643 |
457651 |
457661 |
457669 |
457673 |
457679 |
457687 |
457697 |
457711 |
457739 |
457757 |
457789 |
457799 |
457813 |
457817 |
457829 |
457837 |
457871 |
457889 |
457903 |
457913 |
457943 |
457979 |
457981 |
457987 |
458009 |
458027 |
458039 |
458047 |
458053 |
458057 |
458063 |
458069 |
458119 |
458123 |
458173 |
458179 |
458189 |
458191 |
458197 |
458207 |
458219 |
458239 |
458309 |
458317 |
458323 |
458327 |
458333 |
458357 |
458363 |
458377 |
458399 |
458401 |
458407 |
458449 |
458477 |
458483 |
458501 |
458531 |
458533 |
458543 |
458567 |
458569 |
458573 |
458593 |
458599 |
458611 |
458621 |
458629 |
458639 |
458651 |
458663 |
458669 |
458683 |
458701 |
458719 |
458729 |
458747 |
458789 |
458791 |
458797 |
458807 |
458819 |
458849 |
458863 |
458879 |
458891 |
458897 |
458917 |
458921 |
458929 |
458947 |
458957 |
458959 |
458963 |
458971 |
458977 |
458981 |
458987 |
458993 |
459007 |
459013 |
459023 |
459029 |
459031 |
459037 |
459047 |
459089 |
459091 |
459113 |
459127 |
459167 |
459169 |
459181 |
459209 |
459223 |
459229 |
459233 |
459257 |
459271 |
459293 |
459301 |
459313 |
459317 |
459337 |
459341 |
459343 |
459353 |
459373 |
459377 |
459383 |
459397 |
459421 |
459427 |
459443 |
459463 |
459467 |
459469 |
459479 |
459509 |
459521 |
459523 |
459593 |
459607 |
459611 |
459619 |
459623 |
459631 |
459647 |
459649 |
459671 |
459677 |
459691 |
459703 |
459749 |
459763 |
459791 |
459803 |
459817 |
459829 |
459841 |
459847 |
459883 |
459913 |
459923 |
459929 |
459937 |
459961 |
460013 |
460039 |
460051 |
460063 |
460073 |
460079 |
460081 |
460087 |
460091 |
460099 |
460111 |
460127 |
460147 |
460157 |
460171 |
460181 |
460189 |
460211 |
460217 |
460231 |
460247 |
460267 |
460289 |
460297 |
460301 |
460337 |
460349 |
460373 |
460379 |
460387 |
460393 |
460403 |
460409 |
460417 |
460451 |
460463 |
460477 |
460531 |
460543 |
460561 |
460571 |
460589 |
460609 |
460619 |
460627 |
460633 |
460637 |
460643 |
460657 |
460673 |
460697 |
460709 |
460711 |
460721 |
460771 |
460777 |
460787 |
460793 |
460813 |
460829 |
460841 |
460843 |
460871 |
460891 |
460903 |
460907 |
460913 |
460919 |
460937 |
460949 |
460951 |
460969 |
460973 |
460979 |
460981 |
460987 |
460991 |
461009 |
461011 |
461017 |
461051 |
461053 |
461059 |
461093 |
461101 |
461119 |
461143 |
461147 |
461171 |
461183 |
461191 |
461207 |
461233 |
461239 |
461257 |
461269 |
461273 |
461297 |
461299 |
461309 |
461317 |
461323 |
461327 |
461333 |
461359 |
461381 |
461393 |
461407 |
461411 |
461413 |
461437 |
461441 |
461443 |
461467 |
461479 |
461507 |
461521 |
461561 |
461569 |
461581 |
461599 |
461603 |
461609 |
461627 |
461639 |
461653 |
461677 |
461687 |
461689 |
461693 |
461707 |
461717 |
461801 |
461803 |
461819 |
461843 |
461861 |
461887 |
461891 |
461917 |
461921 |
461933 |
461957 |
461971 |
461977 |
461983 |
462013 |
462041 |
462067 |
462073 |
462079 |
462097 |
462103 |
462109 |
462113 |
462131 |
462149 |
462181 |
462191 |
462199 |
462221 |
462239 |
462263 |
462271 |
462307 |
462311 |
462331 |
462337 |
462361 |
462373 |
462377 |
462401 |
462409 |
462419 |
462421 |
462437 |
462443 |
462467 |
462481 |
462491 |
462493 |
462499 |
462529 |
462541 |
462547 |
462557 |
462569 |
462571 |
462577 |
462589 |
462607 |
462629 |
462641 |
462643 |
462653 |
462659 |
462667 |
462673 |
462677 |
462697 |
462713 |
462719 |
462727 |
462733 |
462739 |
462773 |
462827 |
462841 |
462851 |
462863 |
462871 |
462881 |
462887 |
462899 |
462901 |
462911 |
462937 |
462947 |
462953 |
462983 |
463003 |
463031 |
463033 |
463093 |
463103 |
463157 |
463181 |
463189 |
463207 |
463213 |
463219 |
463231 |
463237 |
463247 |
463249 |
463261 |
463283 |
463291 |
463297 |
463303 |
463313 |
463319 |
463321 |
463339 |
463343 |
463363 |
463387 |
463399 |
463433 |
463447 |
463451 |
463453 |
463457 |
463459 |
463483 |
463501 |
463511 |
463513 |
463523 |
463531 |
463537 |
463549 |
463579 |
463613 |
463627 |
463633 |
463643 |
463649 |
463663 |
463679 |
463693 |
463711 |
463717 |
463741 |
463747 |
463753 |
463763 |
463781 |
463787 |
463807 |
463823 |
463829 |
463831 |
463849 |
463861 |
463867 |
463873 |
463889 |
463891 |
463907 |
463919 |
463921 |
463949 |
463963 |
463973 |
463987 |
463993 |
464003 |
464011 |
464021 |
464033 |
464047 |
464069 |
464081 |
464089 |
464119 |
464129 |
464131 |
464137 |
464141 |
464143 |
464171 |
464173 |
464197 |
464201 |
464213 |
464237 |
464251 |
464257 |
464263 |
464279 |
464281 |
464291 |
464309 |
464311 |
464327 |
464351 |
464371 |
464381 |
464383 |
464413 |
464419 |
464437 |
464447 |
464459 |
464467 |
464479 |
464483 |
464521 |
464537 |
464539 |
464549 |
464557 |
464561 |
464587 |
464591 |
464603 |
464617 |
464621 |
464647 |
464663 |
464687 |
464699 |
464741 |
464747 |
464749 |
464753 |
464767 |
464771 |
464773 |
464777 |
464801 |
464803 |
464809 |
464813 |
464819 |
464843 |
464857 |
464879 |
464897 |
464909 |
464917 |
464923 |
464927 |
464939 |
464941 |
464951 |
464953 |
464963 |
464983 |
464993 |
464999 |
465007 |
465011 |
465013 |
465019 |
465041 |
465061 |
465067 |
465071 |
465077 |
465079 |
465089 |
465107 |
465119 |
465133 |
465151 |
465161 |
465163 |
465167 |
465169 |
465173 |
465187 |
465209 |
465211 |
465259 |
465271 |
465277 |
465281 |
465293 |
465299 |
465317 |
465319 |
465331 |
465337 |
465373 |
465379 |
465383 |
465407 |
465419 |
465433 |
465463 |
465469 |
465523 |
465529 |
465541 |
465551 |
465581 |
465587 |
465611 |
465631 |
465643 |
465649 |
465659 |
465679 |
465701 |
465721 |
465739 |
465743 |
465761 |
465781 |
465797 |
465799 |
465809 |
465821 |
465833 |
465841 |
465887 |
465893 |
465901 |
465917 |
465929 |
465931 |
465947 |
465977 |
465989 |
466009 |
466019 |
466027 |
466033 |
466043 |
466061 |
466069 |
466073 |
466079 |
466087 |
466091 |
466121 |
466139 |
466153 |
466171 |
466181 |
466183 |
466201 |
466243 |
466247 |
466261 |
466267 |
466273 |
466283 |
466303 |
466321 |
466331 |
466339 |
466357 |
466369 |
466373 |
466409 |
466423 |
466441 |
466451 |
466483 |
466517 |
466537 |
466547 |
466553 |
466561 |
466567 |
466573 |
466579 |
466603 |
466619 |
466637 |
466649 |
466651 |
466673 |
466717 |
466723 |
466729 |
466733 |
466747 |
466751 |
466777 |
466787 |
466801 |
466819 |
466853 |
466859 |
466897 |
466909 |
466913 |
466919 |
466951 |
466957 |
466997 |
467003 |
467009 |
467017 |
467021 |
467063 |
467081 |
467083 |
467101 |
467119 |
467123 |
467141 |
467147 |
467171 |
467183 |
467197 |
467209 |
467213 |
467237 |
467239 |
467261 |
467293 |
467297 |
467317 |
467329 |
467333 |
467353 |
467371 |
467399 |
467417 |
467431 |
467437 |
467447 |
467471 |
467473 |
467477 |
467479 |
467491 |
467497 |
467503 |
467507 |
467527 |
467531 |
467543 |
467549 |
467557 |
467587 |
467591 |
467611 |
467617 |
467627 |
467629 |
467633 |
467641 |
467651 |
467657 |
467669 |
467671 |
467681 |
467689 |
467699 |
467713 |
467729 |
467737 |
467743 |
467749 |
467773 |
467783 |
467813 |
467827 |
467833 |
467867 |
467869 |
467879 |
467881 |
467893 |
467897 |
467899 |
467903 |
467927 |
467941 |
467953 |
467963 |
467977 |
468001 |
468011 |
468019 |
468029 |
468049 |
468059 |
468067 |
468071 |
468079 |
468107 |
468109 |
468113 |
468121 |
468133 |
468137 |
468151 |
468157 |
468173 |
468187 |
468191 |
468199 |
468239 |
468241 |
468253 |
468271 |
468277 |
468289 |
468319 |
468323 |
468353 |
468359 |
468371 |
468389 |
468421 |
468439 |
468451 |
468463 |
468473 |
468491 |
468493 |
468499 |
468509 |
468527 |
468551 |
468557 |
468577 |
468581 |
468593 |
468599 |
468613 |
468619 |
468623 |
468641 |
468647 |
468653 |
468661 |
468667 |
468683 |
468691 |
468697 |
468703 |
468709 |
468719 |
468737 |
468739 |
468761 |
468773 |
468781 |
468803 |
468817 |
468821 |
468841 |
468851 |
468859 |
468869 |
468883 |
468887 |
468889 |
468893 |
468899 |
468913 |
468953 |
468967 |
468973 |
468983 |
469009 |
469031 |
469037 |
469069 |
469099 |
469121 |
469127 |
469141 |
469153 |
469169 |
469193 |
469207 |
469219 |
469229 |
469237 |
469241 |
469253 |
469267 |
469279 |
469283 |
469303 |
469321 |
469331 |
469351 |
469363 |
469367 |
469369 |
469379 |
469397 |
469411 |
469429 |
469439 |
469457 |
469487 |
469501 |
469529 |
469541 |
469543 |
469561 |
469583 |
469589 |
469613 |
469627 |
469631 |
469649 |
469657 |
469673 |
469687 |
469691 |
469717 |
469723 |
469747 |
469753 |
469757 |
469769 |
469787 |
469793 |
469801 |
469811 |
469823 |
469841 |
469849 |
469877 |
469879 |
469891 |
469907 |
469919 |
469939 |
469957 |
469969 |
469979 |
469993 |
470021 |
470039 |
470059 |
470077 |
470081 |
470083 |
470087 |
470089 |
470131 |
470149 |
470153 |
470161 |
470167 |
470179 |
470201 |
470207 |
470209 |
470213 |
470219 |
470227 |
470243 |
470251 |
470263 |
470279 |
470297 |
470299 |
470303 |
470317 |
470333 |
470347 |
470359 |
470389 |
470399 |
470411 |
470413 |
470417 |
470429 |
470443 |
470447 |
470453 |
470461 |
470471 |
470473 |
470489 |
470501 |
470513 |
470521 |
470531 |
470539 |
470551 |
470579 |
470593 |
470597 |
470599 |
470609 |
470621 |
470627 |
470647 |
470651 |
470653 |
470663 |
470669 |
470689 |
470711 |
470719 |
470731 |
470749 |
470779 |
470783 |
470791 |
470819 |
470831 |
470837 |
470863 |
470867 |
470881 |
470887 |
470891 |
470903 |
470927 |
470933 |
470941 |
470947 |
470957 |
470959 |
470993 |
470999 |
471007 |
471041 |
471061 |
471073 |
471089 |
471091 |
471101 |
471137 |
471139 |
471161 |
471173 |
471179 |
471187 |
471193 |
471209 |
471217 |
471241 |
471253 |
471259 |
471277 |
471281 |
471283 |
471299 |
471301 |
471313 |
471353 |
471389 |
471391 |
471403 |
471407 |
471439 |
471451 |
471467 |
471481 |
471487 |
471503 |
471509 |
471521 |
471533 |
471539 |
471553 |
471571 |
471589 |
471593 |
471607 |
471617 |
471619 |
471641 |
471649 |
471659 |
471671 |
471673 |
471677 |
471683 |
471697 |
471703 |
471719 |
471721 |
471749 |
471769 |
471781 |
471791 |
471803 |
471817 |
471841 |
471847 |
471853 |
471871 |
471893 |
471901 |
471907 |
471923 |
471929 |
471931 |
471943 |
471949 |
471959 |
471997 |
472019 |
472027 |
472051 |
472057 |
472063 |
472067 |
472103 |
472111 |
472123 |
472127 |
472133 |
472139 |
472151 |
472159 |
472163 |
472189 |
472193 |
472247 |
472249 |
472253 |
472261 |
472273 |
472289 |
472301 |
472309 |
472319 |
472331 |
472333 |
472349 |
472369 |
472391 |
472393 |
472399 |
472411 |
472421 |
472457 |
472469 |
472477 |
472523 |
472541 |
472543 |
472559 |
472561 |
472573 |
472597 |
472631 |
472639 |
472643 |
472669 |
472687 |
472691 |
472697 |
472709 |
472711 |
472721 |
472741 |
472751 |
472763 |
472793 |
472799 |
472817 |
472831 |
472837 |
472847 |
472859 |
472883 |
472907 |
472909 |
472921 |
472937 |
472939 |
472963 |
472993 |
473009 |
473021 |
473027 |
473089 |
473101 |
473117 |
473141 |
473147 |
473159 |
473167 |
473173 |
473191 |
473197 |
473201 |
473203 |
473219 |
473227 |
473257 |
473279 |
473287 |
473293 |
473311 |
473321 |
473327 |
473351 |
473353 |
473377 |
473381 |
473383 |
473411 |
473419 |
473441 |
473443 |
473453 |
473471 |
473477 |
473479 |
473497 |
473503 |
473507 |
473513 |
473519 |
473527 |
473531 |
473533 |
473549 |
473579 |
473597 |
473611 |
473617 |
473633 |
473647 |
473659 |
473719 |
473723 |
473729 |
473741 |
473743 |
473761 |
473789 |
473833 |
473839 |
473857 |
473861 |
473867 |
473887 |
473899 |
473911 |
473923 |
473927 |
473929 |
473939 |
473951 |
473953 |
473971 |
473981 |
473987 |
473999 |
474017 |
474029 |
474037 |
474043 |
474049 |
474059 |
474073 |
474077 |
474101 |
474119 |
474127 |
474137 |
474143 |
474151 |
474163 |
474169 |
474197 |
474211 |
474223 |
474241 |
474263 |
474289 |
474307 |
474311 |
474319 |
474337 |
474343 |
474347 |
474359 |
474379 |
474389 |
474391 |
474413 |
474433 |
474437 |
474443 |
474479 |
474491 |
474497 |
474499 |
474503 |
474533 |
474541 |
474547 |
474557 |
474569 |
474571 |
474581 |
474583 |
474619 |
474629 |
474647 |
474659 |
474667 |
474671 |
474707 |
474709 |
474737 |
474751 |
474757 |
474769 |
474779 |
474787 |
474809 |
474811 |
474839 |
474847 |
474857 |
474899 |
474907 |
474911 |
474917 |
474923 |
474931 |
474937 |
474941 |
474949 |
474959 |
474977 |
474983 |
475037 |
475051 |
475073 |
475081 |
475091 |
475093 |
475103 |
475109 |
475141 |
475147 |
475151 |
475159 |
475169 |
475207 |
475219 |
475229 |
475243 |
475271 |
475273 |
475283 |
475289 |
475297 |
475301 |
475327 |
475331 |
475333 |
475351 |
475367 |
475369 |
475379 |
475381 |
475403 |
475417 |
475421 |
475427 |
475429 |
475441 |
475457 |
475469 |
475483 |
475511 |
475523 |
475529 |
475549 |
475583 |
475597 |
475613 |
475619 |
475621 |
475637 |
475639 |
475649 |
475669 |
475679 |
475681 |
475691 |
475693 |
475697 |
475721 |
475729 |
475751 |
475753 |
475759 |
475763 |
475777 |
475789 |
475793 |
475807 |
475823 |
475831 |
475837 |
475841 |
475859 |
475877 |
475879 |
475889 |
475897 |
475903 |
475907 |
475921 |
475927 |
475933 |
475957 |
475973 |
475991 |
475997 |
476009 |
476023 |
476027 |
476029 |
476039 |
476041 |
476059 |
476081 |
476087 |
476089 |
476101 |
476107 |
476111 |
476137 |
476143 |
476167 |
476183 |
476219 |
476233 |
476237 |
476243 |
476249 |
476279 |
476299 |
476317 |
476347 |
476351 |
476363 |
476369 |
476381 |
476401 |
476407 |
476419 |
476423 |
476429 |
476467 |
476477 |
476479 |
476507 |
476513 |
476519 |
476579 |
476587 |
476591 |
476599 |
476603 |
476611 |
476633 |
476639 |
476647 |
476659 |
476681 |
476683 |
476701 |
476713 |
476719 |
476737 |
476743 |
476753 |
476759 |
476783 |
476803 |
476831 |
476849 |
476851 |
476863 |
476869 |
476887 |
476891 |
476911 |
476921 |
476929 |
476977 |
476981 |
476989 |
477011 |
477013 |
477017 |
477019 |
477031 |
477047 |
477073 |
477077 |
477091 |
477131 |
477149 |
477163 |
477209 |
477221 |
477229 |
477259 |
477277 |
477293 |
477313 |
477317 |
477329 |
477341 |
477359 |
477361 |
477383 |
477409 |
477439 |
477461 |
477469 |
477497 |
477511 |
477517 |
477523 |
477539 |
477551 |
477553 |
477557 |
477571 |
477577 |
477593 |
477619 |
477623 |
477637 |
477671 |
477677 |
477721 |
477727 |
477731 |
477739 |
477767 |
477769 |
477791 |
477797 |
477809 |
477811 |
477821 |
477823 |
477839 |
477847 |
477857 |
477863 |
477881 |
477899 |
477913 |
477941 |
477947 |
477973 |
477977 |
477991 |
478001 |
478039 |
478063 |
478067 |
478069 |
478087 |
478099 |
478111 |
478129 |
478139 |
478157 |
478169 |
478171 |
478189 |
478199 |
478207 |
478213 |
478241 |
478243 |
478253 |
478259 |
478271 |
478273 |
478321 |
478339 |
478343 |
478351 |
478391 |
478399 |
478403 |
478411 |
478417 |
478421 |
478427 |
478433 |
478441 |
478451 |
478453 |
478459 |
478481 |
478483 |
478493 |
478523 |
478531 |
478571 |
478573 |
478579 |
478589 |
478603 |
478627 |
478631 |
478637 |
478651 |
478679 |
478697 |
478711 |
478727 |
478729 |
478739 |
478741 |
478747 |
478763 |
478769 |
478787 |
478801 |
478811 |
478813 |
478823 |
478831 |
478843 |
478853 |
478861 |
478871 |
478879 |
478897 |
478901 |
478913 |
478927 |
478931 |
478937 |
478943 |
478963 |
478967 |
478991 |
478999 |
479023 |
479027 |
479029 |
479041 |
479081 |
479131 |
479137 |
479147 |
479153 |
479189 |
479191 |
479201 |
479209 |
479221 |
479231 |
479239 |
479243 |
479263 |
479267 |
479287 |
479299 |
479309 |
479317 |
479327 |
479357 |
479371 |
479377 |
479387 |
479419 |
479429 |
479431 |
479441 |
479461 |
479473 |
479489 |
479497 |
479509 |
479513 |
479533 |
479543 |
479561 |
479569 |
479581 |
479593 |
479599 |
479623 |
479629 |
479639 |
479701 |
479749 |
479753 |
479761 |
479771 |
479777 |
479783 |
479797 |
479813 |
479821 |
479833 |
479839 |
479861 |
479879 |
479881 |
479891 |
479903 |
479909 |
479939 |
479951 |
479953 |
479957 |
479971 |
480013 |
480017 |
480019 |
480023 |
480043 |
480047 |
480049 |
480059 |
480061 |
480071 |
480091 |
480101 |
480107 |
480113 |
480133 |
480143 |
480157 |
480167 |
480169 |
480203 |
480209 |
480287 |
480299 |
480317 |
480329 |
480341 |
480343 |
480349 |
480367 |
480373 |
480379 |
480383 |
480391 |
480409 |
480419 |
480427 |
480449 |
480451 |
480461 |
480463 |
480499 |
480503 |
480509 |
480517 |
480521 |
480527 |
480533 |
480541 |
480553 |
480563 |
480569 |
480583 |
480587 |
480647 |
480661 |
480707 |
480713 |
480731 |
480737 |
480749 |
480761 |
480773 |
480787 |
480803 |
480827 |
480839 |
480853 |
480881 |
480911 |
480919 |
480929 |
480937 |
480941 |
480959 |
480967 |
480979 |
480989 |
481001 |
481003 |
481009 |
481021 |
481043 |
481051 |
481067 |
481073 |
481087 |
481093 |
481097 |
481109 |
481123 |
481133 |
481141 |
481147 |
481153 |
481157 |
481171 |
481177 |
481181 |
481199 |
481207 |
481211 |
481231 |
481249 |
481297 |
481301 |
481303 |
481307 |
481343 |
481363 |
481373 |
481379 |
481387 |
481409 |
481417 |
481433 |
481447 |
481469 |
481489 |
481501 |
481513 |
481531 |
481549 |
481571 |
481577 |
481589 |
481619 |
481633 |
481639 |
481651 |
481667 |
481673 |
481681 |
481693 |
481697 |
481699 |
481721 |
481751 |
481753 |
481769 |
481787 |
481801 |
481807 |
481813 |
481837 |
481843 |
481847 |
481849 |
481861 |
481867 |
481879 |
481883 |
481909 |
481939 |
481963 |
481997 |
482017 |
482021 |
482029 |
482033 |
482039 |
482051 |
482071 |
482093 |
482099 |
482101 |
482117 |
482123 |
482179 |
482189 |
482203 |
482213 |
482227 |
482231 |
482233 |
482243 |
482263 |
482281 |
482309 |
482323 |
482347 |
482351 |
482359 |
482371 |
482387 |
482393 |
482399 |
482401 |
482407 |
482413 |
482423 |
482437 |
482441 |
482483 |
482501 |
482507 |
482509 |
482513 |
482519 |
482527 |
482539 |
482569 |
482593 |
482597 |
482621 |
482627 |
482633 |
482641 |
482659 |
482663 |
482683 |
482687 |
482689 |
482707 |
482711 |
482717 |
482719 |
482731 |
482743 |
482753 |
482759 |
482767 |
482773 |
482789 |
482803 |
482819 |
482827 |
482837 |
482861 |
482863 |
482873 |
482897 |
482899 |
482917 |
482941 |
482947 |
482957 |
482971 |
483017 |
483031 |
483061 |
483071 |
483097 |
483127 |
483139 |
483163 |
483167 |
483179 |
483209 |
483211 |
483221 |
483229 |
483233 |
483239 |
483247 |
483251 |
483281 |
483289 |
483317 |
483323 |
483337 |
483347 |
483367 |
483377 |
483389 |
483397 |
483407 |
483409 |
483433 |
483443 |
483467 |
483481 |
483491 |
483499 |
483503 |
483523 |
483541 |
483551 |
483557 |
483563 |
483577 |
483611 |
483619 |
483629 |
483643 |
483649 |
483671 |
483697 |
483709 |
483719 |
483727 |
483733 |
483751 |
483757 |
483761 |
483767 |
483773 |
483787 |
483809 |
483811 |
483827 |
483829 |
483839 |
483853 |
483863 |
483869 |
483883 |
483907 |
483929 |
483937 |
483953 |
483971 |
483991 |
484019 |
484027 |
484037 |
484061 |
484067 |
484079 |
484091 |
484111 |
484117 |
484123 |
484129 |
484151 |
484153 |
484171 |
484181 |
484193 |
484201 |
484207 |
484229 |
484243 |
484259 |
484283 |
484301 |
484303 |
484327 |
484339 |
484361 |
484369 |
484373 |
484397 |
484411 |
484417 |
484439 |
484447 |
484457 |
484459 |
484487 |
484489 |
484493 |
484531 |
484543 |
484577 |
484597 |
484607 |
484609 |
484613 |
484621 |
484639 |
484643 |
484691 |
484703 |
484727 |
484733 |
484751 |
484763 |
484769 |
484777 |
484787 |
484829 |
484853 |
484867 |
484927 |
484951 |
484987 |
484999 |
485021 |
485029 |
485041 |
485053 |
485059 |
485063 |
485081 |
485101 |
485113 |
485123 |
485131 |
485137 |
485161 |
485167 |
485171 |
485201 |
485207 |
485209 |
485263 |
485311 |
485347 |
485351 |
485363 |
485371 |
485383 |
485389 |
485411 |
485417 |
485423 |
485437 |
485447 |
485479 |
485497 |
485509 |
485519 |
485543 |
485567 |
485587 |
485593 |
485603 |
485609 |
485647 |
485657 |
485671 |
485689 |
485701 |
485717 |
485729 |
485731 |
485753 |
485777 |
485819 |
485827 |
485831 |
485833 |
485893 |
485899 |
485909 |
485923 |
485941 |
485959 |
485977 |
485993 |
486023 |
486037 |
486041 |
486043 |
486053 |
486061 |
486071 |
486091 |
486103 |
486119 |
486133 |
486139 |
486163 |
486179 |
486181 |
486193 |
486203 |
486221 |
486223 |
486247 |
486281 |
486293 |
486307 |
486313 |
486323 |
486329 |
486331 |
486341 |
486349 |
486377 |
486379 |
486389 |
486391 |
486397 |
486407 |
486433 |
486443 |
486449 |
486481 |
486491 |
486503 |
486509 |
486511 |
486527 |
486539 |
486559 |
486569 |
486583 |
486589 |
486601 |
486617 |
486637 |
486641 |
486643 |
486653 |
486667 |
486671 |
486677 |
486679 |
486683 |
486697 |
486713 |
486721 |
486757 |
486767 |
486769 |
486781 |
486797 |
486817 |
486821 |
486833 |
486839 |
486869 |
486907 |
486923 |
486929 |
486943 |
486947 |
486949 |
486971 |
486977 |
486991 |
487007 |
487013 |
487021 |
487049 |
487051 |
487057 |
487073 |
487079 |
487093 |
487099 |
487111 |
487133 |
487177 |
487183 |
487187 |
487211 |
487213 |
487219 |
487247 |
487261 |
487283 |
487303 |
487307 |
487313 |
487349 |
487363 |
487381 |
487387 |
487391 |
487397 |
487423 |
487427 |
487429 |
487447 |
487457 |
487463 |
487469 |
487471 |
487477 |
487481 |
487489 |
487507 |
487561 |
487589 |
487601 |
487603 |
487607 |
487637 |
487649 |
487651 |
487657 |
487681 |
487691 |
487703 |
487709 |
487717 |
487727 |
487733 |
487741 |
487757 |
487769 |
487783 |
487789 |
487793 |
487811 |
487819 |
487829 |
487831 |
487843 |
487873 |
487889 |
487891 |
487897 |
487933 |
487943 |
487973 |
487979 |
487997 |
488003 |
488009 |
488011 |
488021 |
488051 |
488057 |
488069 |
488119 |
488143 |
488149 |
488153 |
488161 |
488171 |
488197 |
488203 |
488207 |
488209 |
488227 |
488231 |
488233 |
488239 |
488249 |
488261 |
488263 |
488287 |
488303 |
488309 |
488311 |
488317 |
488321 |
488329 |
488333 |
488339 |
488347 |
488353 |
488381 |
488399 |
488401 |
488407 |
488417 |
488419 |
488441 |
488459 |
488473 |
488503 |
488513 |
488539 |
488567 |
488573 |
488603 |
488611 |
488617 |
488627 |
488633 |
488639 |
488641 |
488651 |
488687 |
488689 |
488701 |
488711 |
488717 |
488723 |
488729 |
488743 |
488749 |
488759 |
488779 |
488791 |
488797 |
488821 |
488827 |
488833 |
488861 |
488879 |
488893 |
488897 |
488909 |
488921 |
488947 |
488959 |
488981 |
488993 |
489001 |
489011 |
489019 |
489043 |
489053 |
489061 |
489101 |
489109 |
489113 |
489127 |
489133 |
489157 |
489161 |
489179 |
489191 |
489197 |
489217 |
489239 |
489241 |
489257 |
489263 |
489283 |
489299 |
489329 |
489337 |
489343 |
489361 |
489367 |
489389 |
489407 |
489409 |
489427 |
489431 |
489439 |
489449 |
489457 |
489479 |
489487 |
489493 |
489529 |
489539 |
489551 |
489553 |
489557 |
489571 |
489613 |
489631 |
489653 |
489659 |
489673 |
489677 |
489679 |
489689 |
489691 |
489733 |
489743 |
489761 |
489791 |
489793 |
489799 |
489803 |
489817 |
489823 |
489833 |
489847 |
489851 |
489869 |
489871 |
489887 |
489901 |
489911 |
489913 |
489941 |
489943 |
489959 |
489961 |
489977 |
489989 |
490001 |
490003 |
490019 |
490031 |
490033 |
490057 |
490097 |
490103 |
490111 |
490117 |
490121 |
490151 |
490159 |
490169 |
490183 |
490201 |
490207 |
490223 |
490241 |
490247 |
490249 |
490267 |
490271 |
490277 |
490283 |
490309 |
490313 |
490339 |
490367 |
490393 |
490417 |
490421 |
490453 |
490459 |
490463 |
490481 |
490493 |
490499 |
490519 |
490537 |
490541 |
490543 |
490549 |
490559 |
490571 |
490573 |
490577 |
490579 |
490591 |
490619 |
490627 |
490631 |
490643 |
490661 |
490663 |
490697 |
490733 |
490741 |
490769 |
490771 |
490783 |
490829 |
490837 |
490849 |
490859 |
490877 |
490891 |
490913 |
490921 |
490927 |
490937 |
490949 |
490951 |
490957 |
490967 |
490969 |
490991 |
490993 |
491003 |
491039 |
491041 |
491059 |
491081 |
491083 |
491129 |
491137 |
491149 |
491159 |
491167 |
491171 |
491201 |
491213 |
491219 |
491251 |
491261 |
491273 |
491279 |
491297 |
491299 |
491327 |
491329 |
491333 |
491339 |
491341 |
491353 |
491357 |
491371 |
491377 |
491417 |
491423 |
491429 |
491461 |
491483 |
491489 |
491497 |
491501 |
491503 |
491527 |
491531 |
491537 |
491539 |
491581 |
491591 |
491593 |
491611 |
491627 |
491633 |
491639 |
491651 |
491653 |
491669 |
491677 |
491707 |
491719 |
491731 |
491737 |
491747 |
491773 |
491783 |
491789 |
491797 |
491819 |
491833 |
491837 |
491851 |
491857 |
491867 |
491873 |
491899 |
491923 |
491951 |
491969 |
491977 |
491983 |
492007 |
492013 |
492017 |
492029 |
492047 |
492053 |
492059 |
492061 |
492067 |
492077 |
492083 |
492103 |
492113 |
492227 |
492251 |
492253 |
492257 |
492281 |
492293 |
492299 |
492319 |
492377 |
492389 |
492397 |
492403 |
492409 |
492413 |
492421 |
492431 |
492463 |
492467 |
492487 |
492491 |
492511 |
492523 |
492551 |
492563 |
492587 |
492601 |
492617 |
492619 |
492629 |
492631 |
492641 |
492647 |
492659 |
492671 |
492673 |
492707 |
492719 |
492721 |
492731 |
492757 |
492761 |
492763 |
492769 |
492781 |
492799 |
492839 |
492853 |
492871 |
492883 |
492893 |
492901 |
492911 |
492967 |
492979 |
493001 |
493013 |
493021 |
493027 |
493043 |
493049 |
493067 |
493093 |
493109 |
493111 |
493121 |
493123 |
493127 |
493133 |
493139 |
493147 |
493159 |
493169 |
493177 |
493193 |
493201 |
493211 |
493217 |
493219 |
493231 |
493243 |
493249 |
493277 |
493279 |
493291 |
493301 |
493313 |
493333 |
493351 |
493369 |
493393 |
493397 |
493399 |
493403 |
493433 |
493447 |
493457 |
493463 |
493481 |
493523 |
493531 |
493541 |
493567 |
493573 |
493579 |
493583 |
493607 |
493621 |
493627 |
493643 |
493657 |
493693 |
493709 |
493711 |
493721 |
493729 |
493733 |
493747 |
493777 |
493793 |
493807 |
493811 |
493813 |
493817 |
493853 |
493859 |
493873 |
493877 |
493897 |
493919 |
493931 |
493937 |
493939 |
493967 |
493973 |
493979 |
493993 |
494023 |
494029 |
494041 |
494051 |
494069 |
494077 |
494083 |
494093 |
494101 |
494107 |
494129 |
494141 |
494147 |
494167 |
494191 |
494213 |
494237 |
494251 |
494257 |
494267 |
494269 |
494281 |
494287 |
494317 |
494327 |
494341 |
494353 |
494359 |
494369 |
494381 |
494383 |
494387 |
494407 |
494413 |
494441 |
494443 |
494471 |
494497 |
494519 |
494521 |
494539 |
494561 |
494563 |
494567 |
494587 |
494591 |
494609 |
494617 |
494621 |
494639 |
494647 |
494651 |
494671 |
494677 |
494687 |
494693 |
494699 |
494713 |
494719 |
494723 |
494731 |
494737 |
494743 |
494749 |
494759 |
494761 |
494783 |
494789 |
494803 |
494843 |
494849 |
494873 |
494899 |
494903 |
494917 |
494927 |
494933 |
494939 |
494959 |
494987 |
495017 |
495037 |
495041 |
495043 |
495067 |
495071 |
495109 |
495113 |
495119 |
495133 |
495139 |
495149 |
495151 |
495161 |
495181 |
495199 |
495211 |
495221 |
495241 |
495269 |
495277 |
495289 |
495301 |
495307 |
495323 |
495337 |
495343 |
495347 |
495359 |
495361 |
495371 |
495377 |
495389 |
495401 |
495413 |
495421 |
495433 |
495437 |
495449 |
495457 |
495461 |
495491 |
495511 |
495527 |
495557 |
495559 |
495563 |
495569 |
495571 |
495587 |
495589 |
495611 |
495613 |
495617 |
495619 |
495629 |
495637 |
495647 |
495667 |
495679 |
495701 |
495707 |
495713 |
495749 |
495751 |
495757 |
495769 |
495773 |
495787 |
495791 |
495797 |
495799 |
495821 |
495827 |
495829 |
495851 |
495877 |
495893 |
495899 |
495923 |
495931 |
495947 |
495953 |
495959 |
495967 |
495973 |
495983 |
496007 |
496019 |
496039 |
496051 |
496063 |
496073 |
496079 |
496123 |
496127 |
496163 |
496187 |
496193 |
496211 |
496229 |
496231 |
496259 |
496283 |
496289 |
496291 |
496297 |
496303 |
496313 |
496333 |
496339 |
496343 |
496381 |
496399 |
496427 |
496439 |
496453 |
496459 |
496471 |
496477 |
496481 |
496487 |
496493 |
496499 |
496511 |
496549 |
496579 |
496583 |
496609 |
496631 |
496669 |
496681 |
496687 |
496703 |
496711 |
496733 |
496747 |
496763 |
496789 |
496813 |
496817 |
496841 |
496849 |
496871 |
496877 |
496889 |
496891 |
496897 |
496901 |
496913 |
496919 |
496949 |
496963 |
496997 |
496999 |
497011 |
497017 |
497041 |
497047 |
497051 |
497069 |
497093 |
497111 |
497113 |
497117 |
497137 |
497141 |
497153 |
497171 |
497177 |
497197 |
497239 |
497257 |
497261 |
497269 |
497279 |
497281 |
497291 |
497297 |
497303 |
497309 |
497323 |
497339 |
497351 |
497389 |
497411 |
497417 |
497423 |
497449 |
497461 |
497473 |
497479 |
497491 |
497501 |
497507 |
497509 |
497521 |
497537 |
497551 |
497557 |
497561 |
497579 |
497587 |
497597 |
497603 |
497633 |
497659 |
497663 |
497671 |
497677 |
497689 |
497701 |
497711 |
497719 |
497729 |
497737 |
497741 |
497771 |
497773 |
497801 |
497813 |
497831 |
497839 |
497851 |
497867 |
497869 |
497873 |
497899 |
497929 |
497957 |
497963 |
497969 |
497977 |
497989 |
497993 |
497999 |
498013 |
498053 |
498061 |
498073 |
498089 |
498101 |
498103 |
498119 |
498143 |
498163 |
498167 |
498181 |
498209 |
498227 |
498257 |
498259 |
498271 |
498301 |
498331 |
498343 |
498361 |
498367 |
498391 |
498397 |
498401 |
498403 |
498409 |
498439 |
498461 |
498467 |
498469 |
498493 |
498497 |
498521 |
498523 |
498527 |
498551 |
498557 |
498577 |
498583 |
498599 |
498611 |
498613 |
498643 |
498647 |
498653 |
498679 |
498689 |
498691 |
498733 |
498739 |
498749 |
498761 |
498767 |
498779 |
498781 |
498787 |
498791 |
498803 |
498833 |
498857 |
498859 |
498881 |
498907 |
498923 |
498931 |
498937 |
498947 |
498961 |
498973 |
498977 |
498989 |
499021 |
499027 |
499033 |
499039 |
499063 |
499067 |
499099 |
499117 |
499127 |
499129 |
499133 |
499139 |
499141 |
499151 |
499157 |
499159 |
499181 |
499183 |
499189 |
499211 |
499229 |
499253 |
499267 |
499277 |
499283 |
499309 |
499321 |
499327 |
499349 |
499361 |
499363 |
499391 |
499397 |
499403 |
499423 |
499439 |
499459 |
499481 |
499483 |
499493 |
499507 |
499519 |
499523 |
499549 |
499559 |
499571 |
499591 |
499601 |
499607 |
499621 |
499633 |
499637 |
499649 |
499661 |
499663 |
499669 |
499673 |
499679 |
499687 |
499691 |
499693 |
499711 |
499717 |
499729 |
499739 |
499747 |
499781 |
499787 |
499801 |
499819 |
499853 |
499879 |
499883 |
499897 |
499903 |
499927 |
499943 |
499957 |
499969 |
499973 |
499979 |
500009 |
500029 |
500041 |
500057 |
500069 |
500083 |
500107 |
500111 |
500113 |
500119 |
500153 |
500167 |
500173 |
500177 |
500179 |
500197 |
500209 |
500231 |
500233 |
500237 |
500239 |
500249 |
500257 |
500287 |
500299 |
500317 |
500321 |
500333 |
500341 |
500363 |
500369 |
500389 |
500393 |
500413 |
500417 |
500431 |
500443 |
500459 |
500471 |
500473 |
500483 |
500501 |
500509 |
500519 |
500527 |
500567 |
500579 |
500587 |
500603 |
500629 |
500671 |
500677 |
500693 |
500699 |
500713 |
500719 |
500723 |
500729 |
500741 |
500777 |
500791 |
500807 |
500809 |
500831 |
500839 |
500861 |
500873 |
500881 |
500887 |
500891 |
500909 |
500911 |
500921 |
500923 |
500933 |
500947 |
500953 |
500957 |
500977 |
501001 |
501013 |
501019 |
501029 |
501031 |
501037 |
501043 |
501077 |
501089 |
501103 |
501121 |
501131 |
501133 |
501139 |
501157 |
501173 |
501187 |
501191 |
501197 |
501203 |
501209 |
501217 |
501223 |
501229 |
501233 |
501257 |
501271 |
501287 |
501299 |
501317 |
501341 |
501343 |
501367 |
501383 |
501401 |
501409 |
501419 |
501427 |
501451 |
501463 |
501493 |
501503 |
501511 |
501563 |
501577 |
501593 |
501601 |
501617 |
501623 |
501637 |
501659 |
501691 |
501701 |
501703 |
501707 |
501719 |
501731 |
501769 |
501779 |
501803 |
501817 |
501821 |
501827 |
501829 |
501841 |
501863 |
501889 |
501911 |
501931 |
501947 |
501953 |
501967 |
501971 |
501997 |
502001 |
502013 |
502039 |
502043 |
502057 |
502063 |
502079 |
502081 |
502087 |
502093 |
502121 |
502133 |
502141 |
502171 |
502181 |
502217 |
502237 |
502247 |
502259 |
502261 |
502277 |
502301 |
502321 |
502339 |
502393 |
502409 |
502421 |
502429 |
502441 |
502451 |
502487 |
502499 |
502501 |
502507 |
502517 |
502543 |
502549 |
502553 |
502591 |
502597 |
502613 |
502631 |
502633 |
502643 |
502651 |
502669 |
502687 |
502699 |
502703 |
502717 |
502729 |
502769 |
502771 |
502781 |
502787 |
502807 |
502819 |
502829 |
502841 |
502847 |
502861 |
502883 |
502919 |
502921 |
502937 |
502961 |
502973 |
503003 |
503017 |
503039 |
503053 |
503077 |
503123 |
503131 |
503137 |
503147 |
503159 |
503197 |
503207 |
503213 |
503227 |
503231 |
503233 |
503249 |
503267 |
503287 |
503297 |
503303 |
503317 |
503339 |
503351 |
503359 |
503369 |
503381 |
503383 |
503389 |
503407 |
503413 |
503423 |
503431 |
503441 |
503453 |
503483 |
503501 |
503543 |
503549 |
503551 |
503563 |
503593 |
503599 |
503609 |
503611 |
503621 |
503623 |
503647 |
503653 |
503663 |
503707 |
503717 |
503743 |
503753 |
503771 |
503777 |
503779 |
503791 |
503803 |
503819 |
503821 |
503827 |
503851 |
503857 |
503869 |
503879 |
503911 |
503927 |
503929 |
503939 |
503947 |
503959 |
503963 |
503969 |
503983 |
503989 |
504001 |
504011 |
504017 |
504047 |
504061 |
504073 |
504103 |
504121 |
504139 |
504143 |
504149 |
504151 |
504157 |
504181 |
504187 |
504197 |
504209 |
504221 |
504247 |
504269 |
504289 |
504299 |
504307 |
504311 |
504323 |
504337 |
504349 |
504353 |
504359 |
504377 |
504379 |
504389 |
504403 |
504457 |
504461 |
504473 |
504479 |
504521 |
504523 |
504527 |
504547 |
504563 |
504593 |
504599 |
504607 |
504617 |
504619 |
504631 |
504661 |
504667 |
504671 |
504677 |
504683 |
504727 |
504767 |
504787 |
504797 |
504799 |
504817 |
504821 |
504851 |
504853 |
504857 |
504871 |
504877 |
504893 |
504901 |
504929 |
504937 |
504943 |
504947 |
504953 |
504967 |
504983 |
504989 |
504991 |
505027 |
505031 |
505033 |
505049 |
505051 |
505061 |
505067 |
505073 |
505091 |
505097 |
505111 |
505117 |
505123 |
505129 |
505139 |
505157 |
505159 |
505181 |
505187 |
505201 |
505213 |
505231 |
505237 |
505277 |
505279 |
505283 |
505301 |
505313 |
505319 |
505321 |
505327 |
505339 |
505357 |
505367 |
505369 |
505399 |
505409 |
505411 |
505429 |
505447 |
505459 |
505469 |
505481 |
505493 |
505501 |
505511 |
505513 |
505523 |
505537 |
505559 |
505573 |
505601 |
505607 |
505613 |
505619 |
505633 |
505639 |
505643 |
505657 |
505663 |
505669 |
505691 |
505693 |
505709 |
505711 |
505727 |
505759 |
505763 |
505777 |
505781 |
505811 |
505819 |
505823 |
505867 |
505871 |
505877 |
505907 |
505919 |
505927 |
505949 |
505961 |
505969 |
505979 |
506047 |
506071 |
506083 |
506101 |
506113 |
506119 |
506131 |
506147 |
506171 |
506173 |
506183 |
506201 |
506213 |
506251 |
506263 |
506269 |
506281 |
506291 |
506327 |
506329 |
506333 |
506339 |
506347 |
506351 |
506357 |
506381 |
506393 |
506417 |
506423 |
506449 |
506459 |
506461 |
506479 |
506491 |
506501 |
506507 |
506531 |
506533 |
506537 |
506551 |
506563 |
506573 |
506591 |
506593 |
506599 |
506609 |
506629 |
506647 |
506663 |
506683 |
506687 |
506689 |
506699 |
506729 |
506731 |
506743 |
506773 |
506783 |
506791 |
506797 |
506809 |
506837 |
506843 |
506861 |
506873 |
506887 |
506893 |
506899 |
506903 |
506911 |
506929 |
506941 |
506963 |
506983 |
506993 |
506999 |
507029 |
507049 |
507071 |
507077 |
507079 |
507103 |
507109 |
507113 |
507119 |
507137 |
507139 |
507149 |
507151 |
507163 |
507193 |
507197 |
507217 |
507289 |
507301 |
507313 |
507317 |
507329 |
507347 |
507349 |
507359 |
507361 |
507371 |
507383 |
507401 |
507421 |
507431 |
507461 |
507491 |
507497 |
507499 |
507503 |
507523 |
507557 |
507571 |
507589 |
507593 |
507599 |
507607 |
507631 |
507641 |
507667 |
507673 |
507691 |
507697 |
507713 |
507719 |
507743 |
507757 |
507779 |
507781 |
507797 |
507803 |
507809 |
507821 |
507827 |
507839 |
507883 |
507901 |
507907 |
507917 |
507919 |
507937 |
507953 |
507961 |
507971 |
507979 |
508009 |
508019 |
508021 |
508033 |
508037 |
508073 |
508087 |
508091 |
508097 |
508103 |
508129 |
508159 |
508171 |
508187 |
508213 |
508223 |
508229 |
508237 |
508243 |
508259 |
508271 |
508273 |
508297 |
508301 |
508327 |
508331 |
508349 |
508363 |
508367 |
508373 |
508393 |
508433 |
508439 |
508451 |
508471 |
508477 |
508489 |
508499 |
508513 |
508517 |
508531 |
508549 |
508559 |
508567 |
508577 |
508579 |
508583 |
508619 |
508621 |
508637 |
508643 |
508661 |
508693 |
508709 |
508727 |
508771 |
508789 |
508799 |
508811 |
508817 |
508841 |
508847 |
508867 |
508901 |
508903 |
508909 |
508913 |
508919 |
508931 |
508943 |
508951 |
508957 |
508961 |
508969 |
508973 |
508987 |
509023 |
509027 |
509053 |
509063 |
509071 |
509087 |
509101 |
509123 |
509137 |
509147 |
509149 |
509203 |
509221 |
509227 |
509239 |
509263 |
509281 |
509287 |
509293 |
509297 |
509317 |
509329 |
509359 |
509363 |
509389 |
509393 |
509413 |
509417 |
509429 |
509441 |
509449 |
509477 |
509513 |
509521 |
509543 |
509549 |
509557 |
509563 |
509569 |
509573 |
509581 |
509591 |
509603 |
509623 |
509633 |
509647 |
509653 |
509659 |
509681 |
509687 |
509689 |
509693 |
509699 |
509723 |
509731 |
509737 |
509741 |
509767 |
509783 |
509797 |
509801 |
509833 |
509837 |
509843 |
509863 |
509867 |
509879 |
509909 |
509911 |
509921 |
509939 |
509947 |
509959 |
509963 |
509989 |
510007 |
510031 |
510047 |
510049 |
510061 |
510067 |
510073 |
510077 |
510079 |
510089 |
510101 |
510121 |
510127 |
510137 |
510157 |
510179 |
510199 |
510203 |
510217 |
510227 |
510233 |
510241 |
510247 |
510253 |
510271 |
510287 |
510299 |
510311 |
510319 |
510331 |
510361 |
510379 |
510383 |
510401 |
510403 |
510449 |
510451 |
510457 |
510463 |
510481 |
510529 |
510551 |
510553 |
510569 |
510581 |
510583 |
510589 |
510611 |
510613 |
510617 |
510619 |
510677 |
510683 |
510691 |
510707 |
510709 |
510751 |
510767 |
510773 |
510793 |
510803 |
510817 |
510823 |
510827 |
510847 |
510889 |
510907 |
510919 |
510931 |
510941 |
510943 |
510989 |
511001 |
511013 |
511019 |
511033 |
511039 |
511057 |
511061 |
511087 |
511109 |
511111 |
511123 |
511151 |
511153 |
511163 |
511169 |
511171 |
511177 |
511193 |
511201 |
511211 |
511213 |
511223 |
511237 |
511243 |
511261 |
511279 |
511289 |
511297 |
511327 |
511333 |
511337 |
511351 |
511361 |
511387 |
511391 |
511409 |
511417 |
511439 |
511447 |
511453 |
511457 |
511463 |
511477 |
511487 |
511507 |
511519 |
511523 |
511541 |
511549 |
511559 |
511573 |
511579 |
511583 |
511591 |
511603 |
511627 |
511631 |
511633 |
511669 |
511691 |
511703 |
511711 |
511723 |
511757 |
511787 |
511793 |
511801 |
511811 |
511831 |
511843 |
511859 |
511867 |
511873 |
511891 |
511897 |
511909 |
511933 |
511939 |
511961 |
511963 |
511991 |
511997 |
512009 |
512011 |
512021 |
512047 |
512059 |
512093 |
512101 |
512137 |
512147 |
512167 |
512207 |
512249 |
512251 |
512269 |
512287 |
512311 |
512321 |
512333 |
512353 |
512389 |
512419 |
512429 |
512443 |
512467 |
512497 |
512503 |
512507 |
512521 |
512531 |
512537 |
512543 |
512569 |
512573 |
512579 |
512581 |
512591 |
512593 |
512597 |
512609 |
512621 |
512641 |
512657 |
512663 |
512671 |
512683 |
512711 |
512713 |
512717 |
512741 |
512747 |
512761 |
512767 |
512779 |
512797 |
512803 |
512819 |
512821 |
512843 |
512849 |
512891 |
512899 |
512903 |
512917 |
512921 |
512927 |
512929 |
512959 |
512977 |
512989 |
512999 |
513001 |
513013 |
513017 |
513031 |
513041 |
513047 |
513053 |
513059 |
513067 |
513083 |
513101 |
513103 |
513109 |
513131 |
513137 |
513157 |
513167 |
513169 |
513173 |
513203 |
513239 |
513257 |
513269 |
513277 |
513283 |
513307 |
513311 |
513313 |
513319 |
513341 |
513347 |
513353 |
513367 |
513371 |
513397 |
513407 |
513419 |
513427 |
513431 |
513439 |
513473 |
513479 |
513481 |
513509 |
513511 |
513529 |
513533 |
513593 |
513631 |
513641 |
513649 |
513673 |
513679 |
513683 |
513691 |
513697 |
513719 |
513727 |
513731 |
513739 |
513749 |
513761 |
513767 |
513769 |
513781 |
513829 |
513839 |
513841 |
513871 |
513881 |
513899 |
513917 |
513923 |
513937 |
513943 |
513977 |
513991 |
514001 |
514009 |
514013 |
514021 |
514049 |
514051 |
514057 |
514061 |
514079 |
514081 |
514093 |
514103 |
514117 |
514123 |
514127 |
514147 |
514177 |
514187 |
514201 |
514219 |
514229 |
514243 |
514247 |
514249 |
514271 |
514277 |
514289 |
514309 |
514313 |
514333 |
514343 |
514357 |
514361 |
514379 |
514399 |
514417 |
514429 |
514433 |
514453 |
514499 |
514513 |
514519 |
514523 |
514529 |
514531 |
514543 |
514561 |
514571 |
514621 |
514637 |
514639 |
514643 |
514649 |
514651 |
514669 |
514681 |
514711 |
514733 |
514739 |
514741 |
514747 |
514751 |
514757 |
514769 |
514783 |
514793 |
514819 |
514823 |
514831 |
514841 |
514847 |
514853 |
514859 |
514867 |
514873 |
514889 |
514903 |
514933 |
514939 |
514949 |
514967 |
515041 |
515087 |
515089 |
515111 |
515143 |
515149 |
515153 |
515173 |
515191 |
515227 |
515231 |
515233 |
515237 |
515279 |
515293 |
515311 |
515323 |
515351 |
515357 |
515369 |
515371 |
515377 |
515381 |
515401 |
515429 |
515477 |
515507 |
515519 |
515539 |
515563 |
515579 |
515587 |
515597 |
515611 |
515621 |
515639 |
515651 |
515653 |
515663 |
515677 |
515681 |
515687 |
515693 |
515701 |
515737 |
515741 |
515761 |
515771 |
515773 |
515777 |
515783 |
515803 |
515813 |
515839 |
515843 |
515857 |
515861 |
515873 |
515887 |
515917 |
515923 |
515929 |
515941 |
515951 |
515969 |
515993 |
516017 |
516023 |
516049 |
516053 |
516077 |
516091 |
516127 |
516151 |
516157 |
516161 |
516163 |
516169 |
516179 |
516193 |
516199 |
516209 |
516223 |
516227 |
516233 |
516247 |
516251 |
516253 |
516277 |
516283 |
516293 |
516319 |
516323 |
516349 |
516359 |
516361 |
516371 |
516377 |
516391 |
516407 |
516421 |
516431 |
516433 |
516437 |
516449 |
516457 |
516469 |
516493 |
516499 |
516517 |
516521 |
516539 |
516541 |
516563 |
516587 |
516589 |
516599 |
516611 |
516617 |
516619 |
516623 |
516643 |
516653 |
516673 |
516679 |
516689 |
516701 |
516709 |
516713 |
516721 |
516727 |
516757 |
516793 |
516811 |
516821 |
516829 |
516839 |
516847 |
516871 |
516877 |
516883 |
516907 |
516911 |
516931 |
516947 |
516949 |
516959 |
516973 |
516977 |
516979 |
516991 |
517003 |
517043 |
517061 |
517067 |
517073 |
517079 |
517081 |
517087 |
517091 |
517129 |
517151 |
517169 |
517177 |
517183 |
517189 |
517207 |
517211 |
517217 |
517229 |
517241 |
517243 |
517249 |
517261 |
517267 |
517277 |
517289 |
517303 |
517337 |
517343 |
517367 |
517373 |
517381 |
517393 |
517399 |
517403 |
517411 |
517417 |
517457 |
517459 |
517469 |
517471 |
517481 |
517487 |
517499 |
517501 |
517507 |
517511 |
517513 |
517547 |
517549 |
517553 |
517571 |
517577 |
517589 |
517597 |
517603 |
517609 |
517613 |
517619 |
517637 |
517639 |
517711 |
517717 |
517721 |
517729 |
517733 |
517739 |
517747 |
517817 |
517823 |
517831 |
517861 |
517873 |
517877 |
517901 |
517919 |
517927 |
517931 |
517949 |
517967 |
517981 |
517991 |
517999 |
518017 |
518047 |
518057 |
518059 |
518083 |
518099 |
518101 |
518113 |
518123 |
518129 |
518131 |
518137 |
518153 |
518159 |
518171 |
518179 |
518191 |
518207 |
518209 |
518233 |
518237 |
518239 |
518249 |
518261 |
518291 |
518299 |
518311 |
518327 |
518341 |
518387 |
518389 |
518411 |
518417 |
518429 |
518431 |
518447 |
518467 |
518471 |
518473 |
518509 |
518521 |
518533 |
518543 |
518579 |
518587 |
518597 |
518611 |
518621 |
518657 |
518689 |
518699 |
518717 |
518729 |
518737 |
518741 |
518743 |
518747 |
518759 |
518761 |
518767 |
518779 |
518801 |
518803 |
518807 |
518809 |
518813 |
518831 |
518863 |
518867 |
518893 |
518911 |
518933 |
518953 |
518981 |
518983 |
518989 |
519011 |
519031 |
519037 |
519067 |
519083 |
519089 |
519091 |
519097 |
519107 |
519119 |
519121 |
519131 |
519151 |
519161 |
519193 |
519217 |
519227 |
519229 |
519247 |
519257 |
519269 |
519283 |
519287 |
519301 |
519307 |
519349 |
519353 |
519359 |
519371 |
519373 |
519383 |
519391 |
519413 |
519427 |
519433 |
519457 |
519487 |
519499 |
519509 |
519521 |
519523 |
519527 |
519539 |
519551 |
519553 |
519577 |
519581 |
519587 |
519611 |
519619 |
519643 |
519647 |
519667 |
519683 |
519691 |
519703 |
519713 |
519733 |
519737 |
519769 |
519787 |
519793 |
519797 |
519803 |
519817 |
519863 |
519881 |
519889 |
519907 |
519917 |
519919 |
519923 |
519931 |
519943 |
519947 |
519971 |
519989 |
519997 |
520019 |
520021 |
520031 |
520043 |
520063 |
520067 |
520073 |
520103 |
520111 |
520123 |
520129 |
520151 |
520193 |
520213 |
520241 |
520279 |
520291 |
520297 |
520307 |
520309 |
520313 |
520339 |
520349 |
520357 |
520361 |
520363 |
520369 |
520379 |
520381 |
520393 |
520409 |
520411 |
520423 |
520427 |
520433 |
520447 |
520451 |
520529 |
520547 |
520549 |
520567 |
520571 |
520589 |
520607 |
520609 |
520621 |
520631 |
520633 |
520649 |
520679 |
520691 |
520699 |
520703 |
520717 |
520721 |
520747 |
520759 |
520763 |
520787 |
520813 |
520837 |
520841 |
520853 |
520867 |
520889 |
520913 |
520921 |
520943 |
520957 |
520963 |
520967 |
520969 |
520981 |
521009 |
521021 |
521023 |
521039 |
521041 |
521047 |
521051 |
521063 |
521107 |
521119 |
521137 |
521153 |
521161 |
521167 |
521173 |
521177 |
521179 |
521201 |
521231 |
521243 |
521251 |
521267 |
521281 |
521299 |
521309 |
521317 |
521329 |
521357 |
521359 |
521363 |
521369 |
521377 |
521393 |
521399 |
521401 |
521429 |
521447 |
521471 |
521483 |
521491 |
521497 |
521503 |
521519 |
521527 |
521533 |
521537 |
521539 |
521551 |
521557 |
521567 |
521581 |
521603 |
521641 |
521657 |
521659 |
521669 |
521671 |
521693 |
521707 |
521723 |
521743 |
521749 |
521753 |
521767 |
521777 |
521789 |
521791 |
521809 |
521813 |
521819 |
521831 |
521861 |
521869 |
521879 |
521881 |
521887 |
521897 |
521903 |
521923 |
521929 |
521981 |
521993 |
521999 |
522017 |
522037 |
522047 |
522059 |
522061 |
522073 |
522079 |
522083 |
522113 |
522127 |
522157 |
522161 |
522167 |
522191 |
522199 |
522211 |
522227 |
522229 |
522233 |
522239 |
522251 |
522259 |
522281 |
522283 |
522289 |
522317 |
522323 |
522337 |
522371 |
522373 |
522383 |
522391 |
522409 |
522413 |
522439 |
522449 |
522469 |
522479 |
522497 |
522517 |
522521 |
522523 |
522541 |
522553 |
522569 |
522601 |
522623 |
522637 |
522659 |
522661 |
522673 |
522677 |
522679 |
522689 |
522703 |
522707 |
522719 |
522737 |
522749 |
522757 |
522761 |
522763 |
522787 |
522811 |
522827 |
522829 |
522839 |
522853 |
522857 |
522871 |
522881 |
522883 |
522887 |
522919 |
522943 |
522947 |
522959 |
522961 |
522989 |
523007 |
523021 |
523031 |
523049 |
523093 |
523097 |
523109 |
523129 |
523169 |
523177 |
523207 |
523213 |
523219 |
523261 |
523297 |
523307 |
523333 |
523349 |
523351 |
523357 |
523387 |
523403 |
523417 |
523427 |
523433 |
523459 |
523463 |
523487 |
523489 |
523493 |
523511 |
523519 |
523541 |
523543 |
523553 |
523571 |
523573 |
523577 |
523597 |
523603 |
523631 |
523637 |
523639 |
523657 |
523667 |
523669 |
523673 |
523681 |
523717 |
523729 |
523741 |
523759 |
523763 |
523771 |
523777 |
523793 |
523801 |
523829 |
523847 |
523867 |
523877 |
523903 |
523907 |
523927 |
523937 |
523949 |
523969 |
523987 |
523997 |
524047 |
524053 |
524057 |
524063 |
524071 |
524081 |
524087 |
524099 |
524113 |
524119 |
524123 |
524149 |
524171 |
524189 |
524197 |
524201 |
524203 |
524219 |
524221 |
524231 |
524243 |
524257 |
524261 |
524269 |
524287 |
524309 |
524341 |
524347 |
524351 |
524353 |
524369 |
524387 |
524389 |
524411 |
524413 |
524429 |
524453 |
524497 |
524507 |
524509 |
524519 |
524521 |
524591 |
524593 |
524599 |
524633 |
524669 |
524681 |
524683 |
524701 |
524707 |
524731 |
524743 |
524789 |
524801 |
524803 |
524827 |
524831 |
524857 |
524863 |
524869 |
524873 |
524893 |
524899 |
524921 |
524933 |
524939 |
524941 |
524947 |
524957 |
524959 |
524963 |
524969 |
524971 |
524981 |
524983 |
524999 |
525001 |
525013 |
525017 |
525029 |
525043 |
525101 |
525127 |
525137 |
525143 |
525157 |
525163 |
525167 |
525191 |
525193 |
525199 |
525209 |
525221 |
525241 |
525247 |
525253 |
525257 |
525299 |
525313 |
525353 |
525359 |
525361 |
525373 |
525377 |
525379 |
525391 |
525397 |
525409 |
525431 |
525433 |
525439 |
525457 |
525461 |
525467 |
525491 |
525493 |
525517 |
525529 |
525533 |
525541 |
525571 |
525583 |
525593 |
525599 |
525607 |
525641 |
525649 |
525671 |
525677 |
525697 |
525709 |
525713 |
525719 |
525727 |
525731 |
525739 |
525769 |
525773 |
525781 |
525809 |
525817 |
525839 |
525869 |
525871 |
525887 |
525893 |
525913 |
525923 |
525937 |
525947 |
525949 |
525953 |
525961 |
525979 |
525983 |
526027 |
526037 |
526049 |
526051 |
526063 |
526067 |
526069 |
526073 |
526087 |
526117 |
526121 |
526139 |
526157 |
526159 |
526189 |
526193 |
526199 |
526213 |
526223 |
526231 |
526249 |
526271 |
526283 |
526289 |
526291 |
526297 |
526307 |
526367 |
526373 |
526381 |
526387 |
526391 |
526397 |
526423 |
526429 |
526441 |
526453 |
526459 |
526483 |
526499 |
526501 |
526511 |
526531 |
526543 |
526571 |
526573 |
526583 |
526601 |
526619 |
526627 |
526633 |
526637 |
526649 |
526651 |
526657 |
526667 |
526679 |
526681 |
526703 |
526709 |
526717 |
526733 |
526739 |
526741 |
526759 |
526763 |
526777 |
526781 |
526829 |
526831 |
526837 |
526853 |
526859 |
526871 |
526909 |
526913 |
526931 |
526937 |
526943 |
526951 |
526957 |
526963 |
526993 |
526997 |
527053 |
527057 |
527063 |
527069 |
527071 |
527081 |
527099 |
527123 |
527129 |
527143 |
527159 |
527161 |
527173 |
527179 |
527203 |
527207 |
527209 |
527237 |
527251 |
527273 |
527281 |
527291 |
527327 |
527333 |
527347 |
527353 |
527377 |
527381 |
527393 |
527399 |
527407 |
527411 |
527419 |
527441 |
527447 |
527453 |
527489 |
527507 |
527533 |
527557 |
527563 |
527581 |
527591 |
527599 |
527603 |
527623 |
527627 |
527633 |
527671 |
527699 |
527701 |
527729 |
527741 |
527749 |
527753 |
527789 |
527803 |
527809 |
527819 |
527843 |
527851 |
527869 |
527881 |
527897 |
527909 |
527921 |
527929 |
527941 |
527981 |
527983 |
527987 |
527993 |
528001 |
528013 |
528041 |
528043 |
528053 |
528091 |
528097 |
528107 |
528127 |
528131 |
528137 |
528163 |
528167 |
528191 |
528197 |
528217 |
528223 |
528247 |
528263 |
528289 |
528299 |
528313 |
528317 |
528329 |
528373 |
528383 |
528391 |
528401 |
528403 |
528413 |
528419 |
528433 |
528469 |
528487 |
528491 |
528509 |
528511 |
528527 |
528559 |
528611 |
528623 |
528629 |
528631 |
528659 |
528667 |
528673 |
528679 |
528691 |
528707 |
528709 |
528719 |
528763 |
528779 |
528791 |
528799 |
528811 |
528821 |
528823 |
528833 |
528863 |
528877 |
528881 |
528883 |
528911 |
528929 |
528947 |
528967 |
528971 |
528973 |
528991 |
529003 |
529007 |
529027 |
529033 |
529037 |
529043 |
529049 |
529051 |
529097 |
529103 |
529117 |
529121 |
529127 |
529129 |
529153 |
529157 |
529181 |
529183 |
529213 |
529229 |
529237 |
529241 |
529259 |
529271 |
529273 |
529301 |
529307 |
529313 |
529327 |
529343 |
529349 |
529357 |
529381 |
529393 |
529411 |
529421 |
529423 |
529471 |
529489 |
529513 |
529517 |
529519 |
529531 |
529547 |
529577 |
529579 |
529603 |
529619 |
529637 |
529649 |
529657 |
529673 |
529681 |
529687 |
529691 |
529693 |
529709 |
529723 |
529741 |
529747 |
529751 |
529807 |
529811 |
529813 |
529819 |
529829 |
529847 |
529871 |
529927 |
529933 |
529939 |
529957 |
529961 |
529973 |
529979 |
529981 |
529987 |
529999 |
530017 |
530021 |
530027 |
530041 |
530051 |
530063 |
530087 |
530093 |
530129 |
530137 |
530143 |
530177 |
530183 |
530197 |
530203 |
530209 |
530227 |
530237 |
530249 |
530251 |
530261 |
530267 |
530279 |
530293 |
530297 |
530303 |
530329 |
530333 |
530339 |
530353 |
530359 |
530389 |
530393 |
530401 |
530429 |
530443 |
530447 |
530501 |
530507 |
530513 |
530527 |
530531 |
530533 |
530539 |
530549 |
530567 |
530597 |
530599 |
530603 |
530609 |
530641 |
530653 |
530659 |
530669 |
530693 |
530701 |
530711 |
530713 |
530731 |
530741 |
530743 |
530753 |
530767 |
530773 |
530797 |
530807 |
530833 |
530837 |
530843 |
530851 |
530857 |
530861 |
530869 |
530897 |
530911 |
530947 |
530969 |
530977 |
530983 |
530989 |
531017 |
531023 |
531043 |
531071 |
531079 |
531101 |
531103 |
531121 |
531133 |
531143 |
531163 |
531169 |
531173 |
531197 |
531203 |
531229 |
531239 |
531253 |
531263 |
531281 |
531287 |
531299 |
531331 |
531337 |
531343 |
531347 |
531353 |
531359 |
531383 |
531457 |
531481 |
531497 |
531521 |
531547 |
531551 |
531569 |
531571 |
531581 |
531589 |
531611 |
531613 |
531623 |
531631 |
531637 |
531667 |
531673 |
531689 |
531701 |
531731 |
531793 |
531799 |
531821 |
531823 |
531827 |
531833 |
531841 |
531847 |
531857 |
531863 |
531871 |
531877 |
531901 |
531911 |
531919 |
531977 |
531983 |
531989 |
531997 |
532001 |
532009 |
532027 |
532033 |
532061 |
532069 |
532093 |
532099 |
532141 |
532153 |
532159 |
532163 |
532183 |
532187 |
532193 |
532199 |
532241 |
532249 |
532261 |
532267 |
532277 |
532283 |
532307 |
532313 |
532327 |
532331 |
532333 |
532349 |
532373 |
532379 |
532391 |
532403 |
532417 |
532421 |
532439 |
532447 |
532451 |
532453 |
532489 |
532501 |
532523 |
532529 |
532531 |
532537 |
532547 |
532561 |
532601 |
532603 |
532607 |
532619 |
532621 |
532633 |
532639 |
532663 |
532669 |
532687 |
532691 |
532709 |
532733 |
532739 |
532751 |
532757 |
532771 |
532781 |
532783 |
532789 |
532801 |
532811 |
532823 |
532849 |
532853 |
532867 |
532907 |
532919 |
532949 |
532951 |
532981 |
532993 |
532999 |
533003 |
533009 |
533011 |
533033 |
533051 |
533053 |
533063 |
533077 |
533089 |
533111 |
533129 |
533149 |
533167 |
533177 |
533189 |
533191 |
533213 |
533219 |
533227 |
533237 |
533249 |
533257 |
533261 |
533263 |
533297 |
533303 |
533317 |
533321 |
533327 |
533353 |
533363 |
533371 |
533389 |
533399 |
533413 |
533447 |
533453 |
533459 |
533509 |
533543 |
533549 |
533573 |
533581 |
533593 |
533633 |
533641 |
533671 |
533693 |
533711 |
533713 |
533719 |
533723 |
533737 |
533747 |
533777 |
533801 |
533809 |
533821 |
533831 |
533837 |
533857 |
533879 |
533887 |
533893 |
533909 |
533921 |
533927 |
533959 |
533963 |
533969 |
533971 |
533989 |
533993 |
533999 |
534007 |
534013 |
534019 |
534029 |
534043 |
534047 |
534049 |
534059 |
534073 |
534077 |
534091 |
534101 |
534113 |
534137 |
534167 |
534173 |
534199 |
534203 |
534211 |
534229 |
534241 |
534253 |
534283 |
534301 |
534307 |
534311 |
534323 |
534329 |
534341 |
534367 |
534371 |
534403 |
534407 |
534431 |
534439 |
534473 |
534491 |
534511 |
534529 |
534553 |
534571 |
534577 |
534581 |
534601 |
534607 |
534617 |
534629 |
534631 |
534637 |
534647 |
534649 |
534659 |
534661 |
534671 |
534697 |
534707 |
534739 |
534799 |
534811 |
534827 |
534839 |
534841 |
534851 |
534857 |
534883 |
534889 |
534913 |
534923 |
534931 |
534943 |
534949 |
534971 |
535013 |
535019 |
535033 |
535037 |
535061 |
535099 |
535103 |
535123 |
535133 |
535151 |
535159 |
535169 |
535181 |
535193 |
535207 |
535219 |
535229 |
535237 |
535243 |
535273 |
535303 |
535319 |
535333 |
535349 |
535351 |
535361 |
535387 |
535391 |
535399 |
535481 |
535487 |
535489 |
535499 |
535511 |
535523 |
535529 |
535547 |
535571 |
535573 |
535589 |
535607 |
535609 |
535627 |
535637 |
535663 |
535669 |
535673 |
535679 |
535697 |
535709 |
535727 |
535741 |
535751 |
535757 |
535771 |
535783 |
535793 |
535811 |
535849 |
535859 |
535861 |
535879 |
535919 |
535937 |
535939 |
535943 |
535957 |
535967 |
535973 |
535991 |
535999 |
536017 |
536023 |
536051 |
536057 |
536059 |
536069 |
536087 |
536099 |
536101 |
536111 |
536141 |
536147 |
536149 |
536189 |
536191 |
536203 |
536213 |
536219 |
536227 |
536233 |
536243 |
536267 |
536273 |
536279 |
536281 |
536287 |
536293 |
536311 |
536323 |
536353 |
536357 |
536377 |
536399 |
536407 |
536423 |
536441 |
536443 |
536447 |
536449 |
536453 |
536461 |
536467 |
536479 |
536491 |
536509 |
536513 |
536531 |
536533 |
536561 |
536563 |
536593 |
536609 |
536621 |
536633 |
536651 |
536671 |
536677 |
536687 |
536699 |
536717 |
536719 |
536729 |
536743 |
536749 |
536771 |
536773 |
536777 |
536779 |
536791 |
536801 |
536803 |
536839 |
536849 |
536857 |
536867 |
536869 |
536891 |
536909 |
536917 |
536923 |
536929 |
536933 |
536947 |
536953 |
536971 |
536989 |
536999 |
537001 |
537007 |
537011 |
537023 |
537029 |
537037 |
537041 |
537067 |
537071 |
537079 |
537091 |
537127 |
537133 |
537143 |
537157 |
537169 |
537181 |
537191 |
537197 |
537221 |
537233 |
537241 |
537269 |
537281 |
537287 |
537307 |
537331 |
537343 |
537347 |
537373 |
537379 |
537401 |
537403 |
537413 |
537497 |
537527 |
537547 |
537569 |
537583 |
537587 |
537599 |
537611 |
537637 |
537661 |
537673 |
537679 |
537703 |
537709 |
537739 |
537743 |
537749 |
537769 |
537773 |
537781 |
537787 |
537793 |
537811 |
537841 |
537847 |
537853 |
537877 |
537883 |
537899 |
537913 |
537919 |
537941 |
537991 |
538001 |
538019 |
538049 |
538051 |
538073 |
538079 |
538093 |
538117 |
538121 |
538123 |
538127 |
538147 |
538151 |
538157 |
538159 |
538163 |
538199 |
538201 |
538247 |
538249 |
538259 |
538267 |
538283 |
538297 |
538301 |
538303 |
538309 |
538331 |
538333 |
538357 |
538367 |
538397 |
538399 |
538411 |
538423 |
538457 |
538471 |
538481 |
538487 |
538511 |
538513 |
538519 |
538523 |
538529 |
538553 |
538561 |
538567 |
538579 |
538589 |
538597 |
538621 |
538649 |
538651 |
538697 |
538709 |
538711 |
538721 |
538723 |
538739 |
538751 |
538763 |
538771 |
538777 |
538789 |
538799 |
538801 |
538817 |
538823 |
538829 |
538841 |
538871 |
538877 |
538921 |
538927 |
538931 |
538939 |
538943 |
538987 |
539003 |
539009 |
539039 |
539047 |
539089 |
539093 |
539101 |
539107 |
539111 |
539113 |
539129 |
539141 |
539153 |
539159 |
539167 |
539171 |
539207 |
539219 |
539233 |
539237 |
539261 |
539267 |
539269 |
539293 |
539303 |
539309 |
539311 |
539321 |
539323 |
539339 |
539347 |
539351 |
539389 |
539401 |
539447 |
539449 |
539479 |
539501 |
539503 |
539507 |
539509 |
539533 |
539573 |
539621 |
539629 |
539633 |
539639 |
539641 |
539653 |
539663 |
539677 |
539687 |
539711 |
539713 |
539723 |
539729 |
539743 |
539761 |
539783 |
539797 |
539837 |
539839 |
539843 |
539849 |
539863 |
539881 |
539897 |
539899 |
539921 |
539947 |
539993 |
540041 |
540061 |
540079 |
540101 |
540119 |
540121 |
540139 |
540149 |
540157 |
540167 |
540173 |
540179 |
540181 |
540187 |
540203 |
540217 |
540233 |
540251 |
540269 |
540271 |
540283 |
540301 |
540307 |
540343 |
540347 |
540349 |
540367 |
540373 |
540377 |
540383 |
540389 |
540391 |
540433 |
540437 |
540461 |
540469 |
540509 |
540511 |
540517 |
540539 |
540541 |
540557 |
540559 |
540577 |
540587 |
540599 |
540611 |
540613 |
540619 |
540629 |
540677 |
540679 |
540689 |
540691 |
540697 |
540703 |
540713 |
540751 |
540769 |
540773 |
540779 |
540781 |
540803 |
540809 |
540823 |
540851 |
540863 |
540871 |
540877 |
540901 |
540907 |
540961 |
540989 |
541001 |
541007 |
541027 |
541049 |
541061 |
541087 |
541097 |
541129 |
541133 |
541141 |
541153 |
541181 |
541193 |
541201 |
541217 |
541231 |
541237 |
541249 |
541267 |
541271 |
541283 |
541301 |
541309 |
541339 |
541349 |
541361 |
541363 |
541369 |
541381 |
541391 |
541417 |
541439 |
541447 |
541469 |
541483 |
541507 |
541511 |
541523 |
541529 |
541531 |
541537 |
541543 |
541547 |
541549 |
541571 |
541577 |
541579 |
541589 |
541613 |
541631 |
541657 |
541661 |
541669 |
541693 |
541699 |
541711 |
541721 |
541727 |
541759 |
541763 |
541771 |
541777 |
541781 |
541799 |
541817 |
541831 |
541837 |
541859 |
541889 |
541901 |
541927 |
541951 |
541967 |
541987 |
541991 |
541993 |
541999 |
542021 |
542023 |
542027 |
542053 |
542063 |
542071 |
542081 |
542083 |
542093 |
542111 |
542117 |
542119 |
542123 |
542131 |
542141 |
542149 |
542153 |
542167 |
542183 |
542189 |
542197 |
542207 |
542219 |
542237 |
542251 |
542261 |
542263 |
542281 |
542293 |
542299 |
542323 |
542371 |
542401 |
542441 |
542447 |
542461 |
542467 |
542483 |
542489 |
542497 |
542519 |
542533 |
542537 |
542539 |
542551 |
542557 |
542567 |
542579 |
542587 |
542599 |
542603 |
542683 |
542687 |
542693 |
542713 |
542719 |
542723 |
542747 |
542761 |
542771 |
542783 |
542791 |
542797 |
542821 |
542831 |
542837 |
542873 |
542891 |
542911 |
542921 |
542923 |
542933 |
542939 |
542947 |
542951 |
542981 |
542987 |
542999 |
543017 |
543019 |
543029 |
543061 |
543097 |
543113 |
543131 |
543139 |
543143 |
543149 |
543157 |
543161 |
543163 |
543187 |
543203 |
543217 |
543223 |
543227 |
543233 |
543241 |
543253 |
543259 |
543281 |
543287 |
543289 |
543299 |
543307 |
543311 |
543313 |
543341 |
543349 |
543353 |
543359 |
543379 |
543383 |
543407 |
543427 |
543463 |
543497 |
543503 |
543509 |
543539 |
543551 |
543553 |
543593 |
543601 |
543607 |
543611 |
543617 |
543637 |
543659 |
543661 |
543671 |
543679 |
543689 |
543703 |
543707 |
543713 |
543769 |
543773 |
543787 |
543791 |
543793 |
543797 |
543811 |
543827 |
543841 |
543853 |
543857 |
543859 |
543871 |
543877 |
543883 |
543887 |
543889 |
543901 |
543911 |
543929 |
543967 |
543971 |
543997 |
544001 |
544007 |
544009 |
544013 |
544021 |
544031 |
544097 |
544099 |
544109 |
544123 |
544129 |
544133 |
544139 |
544171 |
544177 |
544183 |
544199 |
544223 |
544259 |
544273 |
544277 |
544279 |
544367 |
544373 |
544399 |
544403 |
544429 |
544451 |
544471 |
544477 |
544487 |
544501 |
544513 |
544517 |
544543 |
544549 |
544601 |
544613 |
544627 |
544631 |
544651 |
544667 |
544699 |
544717 |
544721 |
544723 |
544727 |
544757 |
544759 |
544771 |
544781 |
544793 |
544807 |
544813 |
544837 |
544861 |
544877 |
544879 |
544883 |
544889 |
544897 |
544903 |
544919 |
544927 |
544937 |
544961 |
544963 |
544979 |
545023 |
545029 |
545033 |
545057 |
545063 |
545087 |
545089 |
545093 |
545117 |
545131 |
545141 |
545143 |
545161 |
545189 |
545203 |
545213 |
545231 |
545239 |
545257 |
545267 |
545291 |
545329 |
545371 |
545387 |
545429 |
545437 |
545443 |
545449 |
545473 |
545477 |
545483 |
545497 |
545521 |
545527 |
545533 |
545543 |
545549 |
545551 |
545579 |
545599 |
545609 |
545617 |
545621 |
545641 |
545647 |
545651 |
545663 |
545711 |
545723 |
545731 |
545747 |
545749 |
545759 |
545773 |
545789 |
545791 |
545827 |
545843 |
545863 |
545873 |
545893 |
545899 |
545911 |
545917 |
545929 |
545933 |
545939 |
545947 |
545959 |
546001 |
546017 |
546019 |
546031 |
546047 |
546053 |
546067 |
546071 |
546097 |
546101 |
546103 |
546109 |
546137 |
546149 |
546151 |
546173 |
546179 |
546197 |
546211 |
546233 |
546239 |
546241 |
546253 |
546263 |
546283 |
546289 |
546317 |
546323 |
546341 |
546349 |
546353 |
546361 |
546367 |
546373 |
546391 |
546461 |
546467 |
546479 |
546509 |
546523 |
546547 |
546569 |
546583 |
546587 |
546599 |
546613 |
546617 |
546619 |
546631 |
546643 |
546661 |
546671 |
546677 |
546683 |
546691 |
546709 |
546719 |
546731 |
546739 |
546781 |
546841 |
546859 |
546863 |
546869 |
546881 |
546893 |
546919 |
546937 |
546943 |
546947 |
546961 |
546967 |
546977 |
547007 |
547021 |
547037 |
547061 |
547087 |
547093 |
547097 |
547103 |
547121 |
547133 |
547139 |
547171 |
547223 |
547229 |
547237 |
547241 |
547249 |
547271 |
547273 |
547291 |
547301 |
547321 |
547357 |
547361 |
547363 |
547369 |
547373 |
547387 |
547397 |
547399 |
547411 |
547441 |
547453 |
547471 |
547483 |
547487 |
547493 |
547499 |
547501 |
547513 |
547529 |
547537 |
547559 |
547567 |
547577 |
547583 |
547601 |
547609 |
547619 |
547627 |
547639 |
547643 |
547661 |
547663 |
547681 |
547709 |
547727 |
547741 |
547747 |
547753 |
547763 |
547769 |
547787 |
547817 |
547819 |
547823 |
547831 |
547849 |
547853 |
547871 |
547889 |
547901 |
547909 |
547951 |
547957 |
547999 |
548003 |
548039 |
548059 |
548069 |
548083 |
548089 |
548099 |
548117 |
548123 |
548143 |
548153 |
548189 |
548201 |
548213 |
548221 |
548227 |
548239 |
548243 |
548263 |
548291 |
548309 |
548323 |
548347 |
548351 |
548363 |
548371 |
548393 |
548399 |
548407 |
548417 |
548423 |
548441 |
548453 |
548459 |
548461 |
548489 |
548501 |
548503 |
548519 |
548521 |
548533 |
548543 |
548557 |
548567 |
548579 |
548591 |
548623 |
548629 |
548657 |
548671 |
548677 |
548687 |
548693 |
548707 |
548719 |
548749 |
548753 |
548761 |
548771 |
548783 |
548791 |
548827 |
548831 |
548833 |
548837 |
548843 |
548851 |
548861 |
548869 |
548893 |
548897 |
548903 |
548909 |
548927 |
548953 |
548957 |
548963 |
549001 |
549011 |
549013 |
549019 |
549023 |
549037 |
549071 |
549089 |
549091 |
549097 |
549121 |
549139 |
549149 |
549161 |
549163 |
549167 |
549169 |
549193 |
549203 |
549221 |
549229 |
549247 |
549257 |
549259 |
549281 |
549313 |
549319 |
549323 |
549331 |
549379 |
549391 |
549403 |
549421 |
549431 |
549443 |
549449 |
549481 |
549503 |
549509 |
549511 |
549517 |
549533 |
549547 |
549551 |
549553 |
549569 |
549587 |
549589 |
549607 |
549623 |
549641 |
549643 |
549649 |
549667 |
549683 |
549691 |
549701 |
549707 |
549713 |
549719 |
549733 |
549737 |
549739 |
549749 |
549751 |
549767 |
549817 |
549833 |
549839 |
549863 |
549877 |
549883 |
549911 |
549937 |
549943 |
549949 |
549977 |
549979 |
550007 |
550009 |
550027 |
550049 |
550061 |
550063 |
550073 |
550111 |
550117 |
550127 |
550129 |
550139 |
550163 |
550169 |
550177 |
550181 |
550189 |
550211 |
550213 |
550241 |
550267 |
550279 |
550283 |
550289 |
550309 |
550337 |
550351 |
550369 |
550379 |
550427 |
550439 |
550441 |
550447 |
550457 |
550469 |
550471 |
550489 |
550513 |
550519 |
550531 |
550541 |
550553 |
550577 |
550607 |
550609 |
550621 |
550631 |
550637 |
550651 |
550657 |
550661 |
550663 |
550679 |
550691 |
550703 |
550717 |
550721 |
550733 |
550757 |
550763 |
550789 |
550801 |
550811 |
550813 |
550831 |
550841 |
550843 |
550859 |
550861 |
550903 |
550909 |
550937 |
550939 |
550951 |
550961 |
550969 |
550973 |
550993 |
550997 |
551003 |
551017 |
551027 |
551039 |
551059 |
551063 |
551069 |
551093 |
551099 |
551107 |
551113 |
551129 |
551143 |
551179 |
551197 |
551207 |
551219 |
551231 |
551233 |
551269 |
551281 |
551297 |
551311 |
551321 |
551339 |
551347 |
551363 |
551381 |
551387 |
551407 |
551423 |
551443 |
551461 |
551483 |
551489 |
551503 |
551519 |
551539 |
551543 |
551549 |
551557 |
551569 |
551581 |
551587 |
551597 |
551651 |
551653 |
551659 |
551671 |
551689 |
551693 |
551713 |
551717 |
551723 |
551729 |
551731 |
551743 |
551753 |
551767 |
551773 |
551801 |
551809 |
551813 |
551843 |
551849 |
551861 |
551909 |
551911 |
551917 |
551927 |
551933 |
551951 |
551959 |
551963 |
551981 |
552001 |
552011 |
552029 |
552031 |
552047 |
552053 |
552059 |
552089 |
552091 |
552103 |
552107 |
552113 |
552127 |
552137 |
552179 |
552193 |
552217 |
552239 |
552241 |
552259 |
552263 |
552271 |
552283 |
552301 |
552317 |
552341 |
552353 |
552379 |
552397 |
552401 |
552403 |
552469 |
552473 |
552481 |
552491 |
552493 |
552511 |
552523 |
552527 |
552553 |
552581 |
552583 |
552589 |
552611 |
552649 |
552659 |
552677 |
552703 |
552707 |
552709 |
552731 |
552749 |
552751 |
552757 |
552787 |
552791 |
552793 |
552809 |
552821 |
552833 |
552841 |
552847 |
552859 |
552883 |
552887 |
552899 |
552913 |
552917 |
552971 |
552983 |
552991 |
553013 |
553037 |
553043 |
553051 |
553057 |
553067 |
553073 |
553093 |
553097 |
553099 |
553103 |
553123 |
553139 |
553141 |
553153 |
553171 |
553181 |
553193 |
553207 |
553211 |
553229 |
553249 |
553253 |
553277 |
553279 |
553309 |
553351 |
553363 |
553369 |
553411 |
553417 |
553433 |
553439 |
553447 |
553457 |
553463 |
553471 |
553481 |
553507 |
553513 |
553517 |
553529 |
553543 |
553549 |
553561 |
553573 |
553583 |
553589 |
553591 |
553601 |
553607 |
553627 |
553643 |
553649 |
553667 |
553681 |
553687 |
553699 |
553703 |
553727 |
553733 |
553747 |
553757 |
553759 |
553769 |
553789 |
553811 |
553837 |
553849 |
553867 |
553873 |
553897 |
553901 |
553919 |
553921 |
553933 |
553961 |
553963 |
553981 |
553991 |
554003 |
554011 |
554017 |
554051 |
554077 |
554087 |
554089 |
554117 |
554123 |
554129 |
554137 |
554167 |
554171 |
554179 |
554189 |
554207 |
554209 |
554233 |
554237 |
554263 |
554269 |
554293 |
554299 |
554303 |
554317 |
554347 |
554377 |
554383 |
554417 |
554419 |
554431 |
554447 |
554453 |
554467 |
554503 |
554527 |
554531 |
554569 |
554573 |
554597 |
554611 |
554627 |
554633 |
554639 |
554641 |
554663 |
554669 |
554677 |
554699 |
554707 |
554711 |
554731 |
554747 |
554753 |
554759 |
554767 |
554779 |
554789 |
554791 |
554797 |
554803 |
554821 |
554833 |
554837 |
554839 |
554843 |
554849 |
554887 |
554891 |
554893 |
554899 |
554923 |
554927 |
554951 |
554959 |
554969 |
554977 |
555029 |
555041 |
555043 |
555053 |
555073 |
555077 |
555083 |
555091 |
555097 |
555109 |
555119 |
555143 |
555167 |
555209 |
555221 |
555251 |
555253 |
555257 |
555277 |
555287 |
555293 |
555301 |
555307 |
555337 |
555349 |
555361 |
555383 |
555391 |
555419 |
555421 |
555439 |
555461 |
555487 |
555491 |
555521 |
555523 |
555557 |
555589 |
555593 |
555637 |
555661 |
555671 |
555677 |
555683 |
555691 |
555697 |
555707 |
555739 |
555743 |
555761 |
555767 |
555823 |
555827 |
555829 |
555853 |
555857 |
555871 |
555931 |
555941 |
555953 |
555967 |
556007 |
556021 |
556027 |
556037 |
556043 |
556051 |
556067 |
556069 |
556093 |
556103 |
556123 |
556159 |
556177 |
556181 |
556211 |
556219 |
556229 |
556243 |
556253 |
556261 |
556267 |
556271 |
556273 |
556279 |
556289 |
556313 |
556321 |
556327 |
556331 |
556343 |
556351 |
556373 |
556399 |
556403 |
556441 |
556459 |
556477 |
556483 |
556487 |
556513 |
556519 |
556537 |
556559 |
556573 |
556579 |
556583 |
556601 |
556607 |
556609 |
556613 |
556627 |
556639 |
556651 |
556679 |
556687 |
556691 |
556693 |
556697 |
556709 |
556723 |
556727 |
556741 |
556753 |
556763 |
556769 |
556781 |
556789 |
556793 |
556799 |
556811 |
556817 |
556819 |
556823 |
556841 |
556849 |
556859 |
556861 |
556867 |
556883 |
556891 |
556931 |
556939 |
556943 |
556957 |
556967 |
556981 |
556987 |
556999 |
557017 |
557021 |
557027 |
557033 |
557041 |
557057 |
557059 |
557069 |
557087 |
557093 |
557153 |
557159 |
557197 |
557201 |
557261 |
557269 |
557273 |
557281 |
557303 |
557309 |
557321 |
557329 |
557339 |
557369 |
557371 |
557377 |
557423 |
557443 |
557449 |
557461 |
557483 |
557489 |
557519 |
557521 |
557533 |
557537 |
557551 |
557567 |
557573 |
557591 |
557611 |
557633 |
557639 |
557663 |
557671 |
557693 |
557717 |
557729 |
557731 |
557741 |
557743 |
557747 |
557759 |
557761 |
557779 |
557789 |
557801 |
557803 |
557831 |
557857 |
557861 |
557863 |
557891 |
557899 |
557903 |
557927 |
557981 |
557987 |
558007 |
558017 |
558029 |
558053 |
558067 |
558083 |
558091 |
558109 |
558113 |
558121 |
558139 |
558149 |
558167 |
558179 |
558197 |
558203 |
558209 |
558223 |
558241 |
558251 |
558253 |
558287 |
558289 |
558307 |
558319 |
558343 |
558401 |
558413 |
558421 |
558427 |
558431 |
558457 |
558469 |
558473 |
558479 |
558491 |
558497 |
558499 |
558521 |
558529 |
558533 |
558539 |
558541 |
558563 |
558583 |
558587 |
558599 |
558611 |
558629 |
558643 |
558661 |
558683 |
558703 |
558721 |
558731 |
558757 |
558769 |
558781 |
558787 |
558791 |
558793 |
558827 |
558829 |
558863 |
558869 |
558881 |
558893 |
558913 |
558931 |
558937 |
558947 |
558973 |
558979 |
558997 |
559001 |
559049 |
559051 |
559067 |
559081 |
559093 |
559099 |
559123 |
559133 |
559157 |
559177 |
559183 |
559201 |
559211 |
559213 |
559217 |
559219 |
559231 |
559243 |
559259 |
559277 |
559297 |
559313 |
559319 |
559343 |
559357 |
559367 |
559369 |
559397 |
559421 |
559451 |
559459 |
559469 |
559483 |
559511 |
559513 |
559523 |
559529 |
559541 |
559547 |
559549 |
559561 |
559571 |
559577 |
559583 |
559591 |
559597 |
559631 |
559633 |
559639 |
559649 |
559667 |
559673 |
559679 |
559687 |
559703 |
559709 |
559739 |
559747 |
559777 |
559781 |
559799 |
559807 |
559813 |
559831 |
559841 |
559849 |
559859 |
559877 |
559883 |
559901 |
559907 |
559913 |
559939 |
559967 |
559973 |
559991 |
560017 |
560023 |
560029 |
560039 |
560047 |
560081 |
560083 |
560089 |
560093 |
560107 |
560113 |
560117 |
560123 |
560137 |
560149 |
560159 |
560171 |
560173 |
560179 |
560191 |
560207 |
560213 |
560221 |
560227 |
560233 |
560237 |
560239 |
560243 |
560249 |
560281 |
560293 |
560297 |
560299 |
560311 |
560317 |
560341 |
560353 |
560393 |
560411 |
560437 |
560447 |
560459 |
560471 |
560477 |
560479 |
560489 |
560491 |
560501 |
560503 |
560531 |
560543 |
560551 |
560561 |
560597 |
560617 |
560621 |
560639 |
560641 |
560653 |
560669 |
560683 |
560689 |
560701 |
560719 |
560737 |
560753 |
560761 |
560767 |
560771 |
560783 |
560797 |
560803 |
560827 |
560837 |
560863 |
560869 |
560873 |
560887 |
560891 |
560893 |
560897 |
560929 |
560939 |
560941 |
560969 |
560977 |
561019 |
561047 |
561053 |
561059 |
561061 |
561079 |
561083 |
561091 |
561097 |
561101 |
561103 |
561109 |
561161 |
561173 |
561181 |
561191 |
561199 |
561229 |
561251 |
561277 |
561307 |
561313 |
561343 |
561347 |
561359 |
561367 |
561373 |
561377 |
561389 |
561409 |
561419 |
561439 |
561461 |
561521 |
561529 |
561551 |
561553 |
561559 |
561599 |
561607 |
561667 |
561703 |
561713 |
561733 |
561761 |
561767 |
561787 |
561797 |
561809 |
561829 |
561839 |
561907 |
561917 |
561923 |
561931 |
561943 |
561947 |
561961 |
561973 |
561983 |
561997 |
562007 |
562019 |
562021 |
562043 |
562091 |
562103 |
562129 |
562147 |
562169 |
562181 |
562193 |
562201 |
562231 |
562259 |
562271 |
562273 |
562283 |
562291 |
562297 |
562301 |
562307 |
562313 |
562333 |
562337 |
562349 |
562351 |
562357 |
562361 |
562399 |
562403 |
562409 |
562417 |
562421 |
562427 |
562439 |
562459 |
562477 |
562493 |
562501 |
562517 |
562519 |
562537 |
562577 |
562579 |
562589 |
562591 |
562607 |
562613 |
562621 |
562631 |
562633 |
562651 |
562663 |
562669 |
562673 |
562691 |
562693 |
562699 |
562703 |
562711 |
562721 |
562739 |
562753 |
562759 |
562763 |
562781 |
562789 |
562813 |
562831 |
562841 |
562871 |
562897 |
562901 |
562909 |
562931 |
562943 |
562949 |
562963 |
562967 |
562973 |
562979 |
562987 |
562997 |
563009 |
563011 |
563021 |
563039 |
563041 |
563047 |
563051 |
563077 |
563081 |
563099 |
563113 |
563117 |
563119 |
563131 |
563149 |
563153 |
563183 |
563197 |
563219 |
563249 |
563263 |
563287 |
563327 |
563351 |
563357 |
563359 |
563377 |
563401 |
563411 |
563413 |
563417 |
563419 |
563447 |
563449 |
563467 |
563489 |
563501 |
563503 |
563543 |
563551 |
563561 |
563587 |
563593 |
563599 |
563623 |
563657 |
563663 |
563723 |
563743 |
563747 |
563777 |
563809 |
563813 |
563821 |
563831 |
563837 |
563851 |
563869 |
563881 |
563887 |
563897 |
563929 |
563933 |
563947 |
563971 |
563987 |
563999 |
564013 |
564017 |
564041 |
564049 |
564059 |
564061 |
564089 |
564097 |
564103 |
564127 |
564133 |
564149 |
564163 |
564173 |
564191 |
564197 |
564227 |
564229 |
564233 |
564251 |
564257 |
564269 |
564271 |
564299 |
564301 |
564307 |
564313 |
564323 |
564353 |
564359 |
564367 |
564371 |
564373 |
564391 |
564401 |
564407 |
564409 |
564419 |
564437 |
564449 |
564457 |
564463 |
564467 |
564491 |
564497 |
564523 |
564533 |
564593 |
564607 |
564617 |
564643 |
564653 |
564667 |
564671 |
564679 |
564701 |
564703 |
564709 |
564713 |
564761 |
564779 |
564793 |
564797 |
564827 |
564871 |
564881 |
564899 |
564917 |
564919 |
564923 |
564937 |
564959 |
564973 |
564979 |
564983 |
564989 |
564997 |
565013 |
565039 |
565049 |
565057 |
565069 |
565109 |
565111 |
565127 |
565163 |
565171 |
565177 |
565183 |
565189 |
565207 |
565237 |
565241 |
565247 |
565259 |
565261 |
565273 |
565283 |
565289 |
565303 |
565319 |
565333 |
565337 |
565343 |
565361 |
565379 |
565381 |
565387 |
565391 |
565393 |
565427 |
565429 |
565441 |
565451 |
565463 |
565469 |
565483 |
565489 |
565507 |
565511 |
565517 |
565519 |
565549 |
565553 |
565559 |
565567 |
565571 |
565583 |
565589 |
565597 |
565603 |
565613 |
565637 |
565651 |
565661 |
565667 |
565723 |
565727 |
565769 |
565771 |
565787 |
565793 |
565813 |
565849 |
565867 |
565889 |
565891 |
565907 |
565909 |
565919 |
565921 |
565937 |
565973 |
565979 |
565997 |
566011 |
566023 |
566047 |
566057 |
566077 |
566089 |
566101 |
566107 |
566131 |
566149 |
566161 |
566173 |
566179 |
566183 |
566201 |
566213 |
566227 |
566231 |
566233 |
566273 |
566311 |
566323 |
566347 |
566387 |
566393 |
566413 |
566417 |
566429 |
566431 |
566437 |
566441 |
566443 |
566453 |
566521 |
566537 |
566539 |
566543 |
566549 |
566551 |
566557 |
566563 |
566567 |
566617 |
566633 |
566639 |
566653 |
566659 |
566677 |
566681 |
566693 |
566701 |
566707 |
566717 |
566719 |
566723 |
566737 |
566759 |
566767 |
566791 |
566821 |
566833 |
566851 |
566857 |
566879 |
566911 |
566939 |
566947 |
566963 |
566971 |
566977 |
566987 |
566999 |
567011 |
567013 |
567031 |
567053 |
567059 |
567067 |
567097 |
567101 |
567107 |
567121 |
567143 |
567179 |
567181 |
567187 |
567209 |
567257 |
567263 |
567277 |
567319 |
567323 |
567367 |
567377 |
567383 |
567389 |
567401 |
567407 |
567439 |
567449 |
567451 |
567467 |
567487 |
567493 |
567499 |
567527 |
567529 |
567533 |
567569 |
567601 |
567607 |
567631 |
567649 |
567653 |
567659 |
567661 |
567667 |
567673 |
567689 |
567719 |
567737 |
567751 |
567761 |
567767 |
567779 |
567793 |
567811 |
567829 |
567841 |
567857 |
567863 |
567871 |
567877 |
567881 |
567883 |
567899 |
567937 |
567943 |
567947 |
567949 |
567961 |
567979 |
567991 |
567997 |
568019 |
568027 |
568033 |
568049 |
568069 |
568091 |
568097 |
568109 |
568133 |
568151 |
568153 |
568163 |
568171 |
568177 |
568187 |
568189 |
568193 |
568201 |
568207 |
568231 |
568237 |
568241 |
568273 |
568279 |
568289 |
568303 |
568349 |
568363 |
568367 |
568387 |
568391 |
568433 |
568439 |
568441 |
568453 |
568471 |
568481 |
568493 |
568523 |
568541 |
568549 |
568577 |
568609 |
568619 |
568627 |
568643 |
568657 |
568669 |
568679 |
568691 |
568699 |
568709 |
568723 |
568751 |
568783 |
568787 |
568807 |
568823 |
568831 |
568853 |
568877 |
568891 |
568903 |
568907 |
568913 |
568921 |
568963 |
568979 |
568987 |
568991 |
568999 |
569003 |
569011 |
569021 |
569047 |
569053 |
569057 |
569071 |
569077 |
569081 |
569083 |
569111 |
569117 |
569137 |
569141 |
569159 |
569161 |
569189 |
569197 |
569201 |
569209 |
569213 |
569237 |
569243 |
569249 |
569251 |
569263 |
569267 |
569269 |
569321 |
569323 |
569369 |
569417 |
569419 |
569423 |
569431 |
569447 |
569461 |
569479 |
569497 |
569507 |
569533 |
569573 |
569579 |
569581 |
569599 |
569603 |
569609 |
569617 |
569623 |
569659 |
569663 |
569671 |
569683 |
569711 |
569713 |
569717 |
569729 |
569731 |
569747 |
569759 |
569771 |
569773 |
569797 |
569809 |
569813 |
569819 |
569831 |
569839 |
569843 |
569851 |
569861 |
569869 |
569887 |
569893 |
569897 |
569903 |
569927 |
569939 |
569957 |
569983 |
570001 |
570013 |
570029 |
570041 |
570043 |
570047 |
570049 |
570071 |
570077 |
570079 |
570083 |
570091 |
570107 |
570109 |
570113 |
570131 |
570139 |
570161 |
570173 |
570181 |
570191 |
570217 |
570221 |
570233 |
570253 |
570329 |
570359 |
570373 |
570379 |
570389 |
570391 |
570403 |
570407 |
570413 |
570419 |
570421 |
570461 |
570463 |
570467 |
570487 |
570491 |
570497 |
570499 |
570509 |
570511 |
570527 |
570529 |
570539 |
570547 |
570553 |
570569 |
570587 |
570601 |
570613 |
570637 |
570643 |
570649 |
570659 |
570667 |
570671 |
570677 |
570683 |
570697 |
570719 |
570733 |
570737 |
570743 |
570781 |
570821 |
570827 |
570839 |
570841 |
570851 |
570853 |
570859 |
570881 |
570887 |
570901 |
570919 |
570937 |
570949 |
570959 |
570961 |
570967 |
570991 |
571001 |
571019 |
571031 |
571037 |
571049 |
571069 |
571093 |
571099 |
571111 |
571133 |
571147 |
571157 |
571163 |
571199 |
571201 |
571211 |
571223 |
571229 |
571231 |
571261 |
571267 |
571279 |
571303 |
571321 |
571331 |
571339 |
571369 |
571381 |
571397 |
571399 |
571409 |
571433 |
571453 |
571471 |
571477 |
571531 |
571541 |
571579 |
571583 |
571589 |
571601 |
571603 |
571633 |
571657 |
571673 |
571679 |
571699 |
571709 |
571717 |
571721 |
571741 |
571751 |
571759 |
571777 |
571783 |
571789 |
571799 |
571801 |
571811 |
571841 |
571847 |
571853 |
571861 |
571867 |
571871 |
571873 |
571877 |
571903 |
571933 |
571939 |
571969 |
571973 |
572023 |
572027 |
572041 |
572051 |
572053 |
572059 |
572063 |
572069 |
572087 |
572093 |
572107 |
572137 |
572161 |
572177 |
572179 |
572183 |
572207 |
572233 |
572239 |
572251 |
572269 |
572281 |
572303 |
572311 |
572321 |
572323 |
572329 |
572333 |
572357 |
572387 |
572399 |
572417 |
572419 |
572423 |
572437 |
572449 |
572461 |
572471 |
572479 |
572491 |
572497 |
572519 |
572521 |
572549 |
572567 |
572573 |
572581 |
572587 |
572597 |
572599 |
572609 |
572629 |
572633 |
572639 |
572651 |
572653 |
572657 |
572659 |
572683 |
572687 |
572699 |
572707 |
572711 |
572749 |
572777 |
572791 |
572801 |
572807 |
572813 |
572821 |
572827 |
572833 |
572843 |
572867 |
572879 |
572881 |
572903 |
572909 |
572927 |
572933 |
572939 |
572941 |
572963 |
572969 |
572993 |
573007 |
573031 |
573047 |
573101 |
573107 |
573109 |
573119 |
573143 |
573161 |
573163 |
573179 |
573197 |
573247 |
573253 |
573263 |
573277 |
573289 |
573299 |
573317 |
573329 |
573341 |
573343 |
573371 |
573379 |
573383 |
573409 |
573437 |
573451 |
573457 |
573473 |
573479 |
573481 |
573487 |
573493 |
573497 |
573509 |
573511 |
573523 |
573527 |
573557 |
573569 |
573571 |
573637 |
573647 |
573673 |
573679 |
573691 |
573719 |
573737 |
573739 |
573757 |
573761 |
573763 |
573787 |
573791 |
573809 |
573817 |
573829 |
573847 |
573851 |
573863 |
573871 |
573883 |
573887 |
573899 |
573901 |
573929 |
573941 |
573953 |
573967 |
573973 |
573977 |
574003 |
574031 |
574033 |
574051 |
574061 |
574081 |
574099 |
574109 |
574127 |
574157 |
574159 |
574163 |
574169 |
574181 |
574183 |
574201 |
574219 |
574261 |
574279 |
574283 |
574289 |
574297 |
574307 |
574309 |
574363 |
574367 |
574373 |
574393 |
574423 |
574429 |
574433 |
574439 |
574477 |
574489 |
574493 |
574501 |
574507 |
574529 |
574543 |
574547 |
574597 |
574619 |
574621 |
574627 |
574631 |
574643 |
574657 |
574667 |
574687 |
574699 |
574703 |
574711 |
574723 |
574727 |
574733 |
574741 |
574789 |
574799 |
574801 |
574813 |
574817 |
574859 |
574907 |
574913 |
574933 |
574939 |
574949 |
574963 |
574967 |
574969 |
575009 |
575027 |
575033 |
575053 |
575063 |
575077 |
575087 |
575119 |
575123 |
575129 |
575131 |
575137 |
575153 |
575173 |
575177 |
575203 |
575213 |
575219 |
575231 |
575243 |
575249 |
575251 |
575257 |
575261 |
575303 |
575317 |
575359 |
575369 |
575371 |
575401 |
575417 |
575429 |
575431 |
575441 |
575473 |
575479 |
575489 |
575503 |
575513 |
575551 |
575557 |
575573 |
575579 |
575581 |
575591 |
575593 |
575611 |
575623 |
575647 |
575651 |
575669 |
575677 |
575689 |
575693 |
575699 |
575711 |
575717 |
575723 |
575747 |
575753 |
575777 |
575791 |
575821 |
575837 |
575849 |
575857 |
575863 |
575867 |
575893 |
575903 |
575921 |
575923 |
575941 |
575957 |
575959 |
575963 |
575987 |
576001 |
576013 |
576019 |
576029 |
576031 |
576041 |
576049 |
576089 |
576101 |
576119 |
576131 |
576151 |
576161 |
576167 |
576179 |
576193 |
576203 |
576211 |
576217 |
576221 |
576223 |
576227 |
576287 |
576293 |
576299 |
576313 |
576319 |
576341 |
576377 |
576379 |
576391 |
576421 |
576427 |
576431 |
576439 |
576461 |
576469 |
576473 |
576493 |
576509 |
576523 |
576529 |
576533 |
576539 |
576551 |
576553 |
576577 |
576581 |
576613 |
576617 |
576637 |
576647 |
576649 |
576659 |
576671 |
576677 |
576683 |
576689 |
576701 |
576703 |
576721 |
576727 |
576731 |
576739 |
576743 |
576749 |
576757 |
576769 |
576787 |
576791 |
576881 |
576883 |
576889 |
576899 |
576943 |
576949 |
576967 |
576977 |
577007 |
577009 |
577033 |
577043 |
577063 |
577067 |
577069 |
577081 |
577097 |
577111 |
577123 |
577147 |
577151 |
577153 |
577169 |
577177 |
577193 |
577219 |
577249 |
577259 |
577271 |
577279 |
577307 |
577327 |
577331 |
577333 |
577349 |
577351 |
577363 |
577387 |
577397 |
577399 |
577427 |
577453 |
577457 |
577463 |
577471 |
577483 |
577513 |
577517 |
577523 |
577529 |
577531 |
577537 |
577547 |
577559 |
577573 |
577589 |
577601 |
577613 |
577627 |
577637 |
577639 |
577667 |
577721 |
577739 |
577751 |
577757 |
577781 |
577799 |
577807 |
577817 |
577831 |
577849 |
577867 |
577873 |
577879 |
577897 |
577901 |
577909 |
577919 |
577931 |
577937 |
577939 |
577957 |
577979 |
577981 |
578021 |
578029 |
578041 |
578047 |
578063 |
578077 |
578093 |
578117 |
578131 |
578167 |
578183 |
578191 |
578203 |
578209 |
578213 |
578251 |
578267 |
578297 |
578299 |
578309 |
578311 |
578317 |
578327 |
578353 |
578363 |
578371 |
578399 |
578401 |
578407 |
578419 |
578441 |
578453 |
578467 |
578477 |
578483 |
578489 |
578497 |
578503 |
578509 |
578533 |
578537 |
578563 |
578573 |
578581 |
578587 |
578597 |
578603 |
578609 |
578621 |
578647 |
578659 |
578687 |
578689 |
578693 |
578701 |
578719 |
578729 |
578741 |
578777 |
578779 |
578789 |
578803 |
578819 |
578821 |
578827 |
578839 |
578843 |
578857 |
578861 |
578881 |
578917 |
578923 |
578957 |
578959 |
578971 |
578999 |
579011 |
579017 |
579023 |
579053 |
579079 |
579083 |
579107 |
579113 |
579119 |
579133 |
579179 |
579197 |
579199 |
579239 |
579251 |
579259 |
579263 |
579277 |
579281 |
579283 |
579287 |
579311 |
579331 |
579353 |
579379 |
579407 |
579409 |
579427 |
579433 |
579451 |
579473 |
579497 |
579499 |
579503 |
579517 |
579521 |
579529 |
579533 |
579539 |
579541 |
579563 |
579569 |
579571 |
579583 |
579587 |
579611 |
579613 |
579629 |
579637 |
579641 |
579643 |
579653 |
579673 |
579701 |
579707 |
579713 |
579721 |
579737 |
579757 |
579763 |
579773 |
579779 |
579809 |
579829 |
579851 |
579869 |
579877 |
579881 |
579883 |
579893 |
579907 |
579947 |
579949 |
579961 |
579967 |
579973 |
579983 |
580001 |
580031 |
580033 |
580079 |
580081 |
580093 |
580133 |
580163 |
580169 |
580183 |
580187 |
580201 |
580213 |
580219 |
580231 |
580259 |
580291 |
580301 |
580303 |
580331 |
580339 |
580343 |
580357 |
580361 |
580373 |
580379 |
580381 |
580409 |
580417 |
580471 |
580477 |
580487 |
580513 |
580529 |
580549 |
580553 |
580561 |
580577 |
580607 |
580627 |
580631 |
580633 |
580639 |
580663 |
580673 |
580687 |
580691 |
580693 |
580711 |
580717 |
580733 |
580747 |
580757 |
580759 |
580763 |
580787 |
580793 |
580807 |
580813 |
580837 |
580843 |
580859 |
580871 |
580889 |
580891 |
580901 |
580913 |
580919 |
580927 |
580939 |
580969 |
580981 |
580997 |
581029 |
581041 |
581047 |
581069 |
581071 |
581089 |
581099 |
581101 |
581137 |
581143 |
581149 |
581171 |
581173 |
581177 |
581183 |
581197 |
581201 |
581227 |
581237 |
581239 |
581261 |
581263 |
581293 |
581303 |
581311 |
581323 |
581333 |
581341 |
581351 |
581353 |
581369 |
581377 |
581393 |
581407 |
581411 |
581429 |
581443 |
581447 |
581459 |
581473 |
581491 |
581521 |
581527 |
581549 |
581551 |
581557 |
581573 |
581597 |
581599 |
581617 |
581639 |
581657 |
581663 |
581683 |
581687 |
581699 |
581701 |
581729 |
581731 |
581743 |
581753 |
581767 |
581773 |
581797 |
581809 |
581821 |
581843 |
581857 |
581863 |
581869 |
581873 |
581891 |
581909 |
581921 |
581941 |
581947 |
581953 |
581981 |
581983 |
582011 |
582013 |
582017 |
582031 |
582037 |
582067 |
582083 |
582119 |
582137 |
582139 |
582157 |
582161 |
582167 |
582173 |
582181 |
582203 |
582209 |
582221 |
582223 |
582227 |
582247 |
582251 |
582299 |
582317 |
582319 |
582371 |
582391 |
582409 |
582419 |
582427 |
582433 |
582451 |
582457 |
582469 |
582499 |
582509 |
582511 |
582541 |
582551 |
582563 |
582587 |
582601 |
582623 |
582643 |
582649 |
582677 |
582689 |
582691 |
582719 |
582721 |
582727 |
582731 |
582737 |
582761 |
582763 |
582767 |
582773 |
582781 |
582793 |
582809 |
582821 |
582851 |
582853 |
582859 |
582887 |
582899 |
582931 |
582937 |
582949 |
582961 |
582971 |
582973 |
582983 |
583007 |
583013 |
583019 |
583021 |
583031 |
583069 |
583087 |
583127 |
583139 |
583147 |
583153 |
583169 |
583171 |
583181 |
583189 |
583207 |
583213 |
583229 |
583237 |
583249 |
583267 |
583273 |
583279 |
583291 |
583301 |
583337 |
583339 |
583351 |
583367 |
583391 |
583397 |
583403 |
583409 |
583417 |
583421 |
583447 |
583459 |
583469 |
583481 |
583493 |
583501 |
583511 |
583519 |
583523 |
583537 |
583543 |
583577 |
583603 |
583613 |
583619 |
583621 |
583631 |
583651 |
583657 |
583669 |
583673 |
583697 |
583727 |
583733 |
583753 |
583769 |
583777 |
583783 |
583789 |
583801 |
583841 |
583853 |
583859 |
583861 |
583873 |
583879 |
583903 |
583909 |
583937 |
583969 |
583981 |
583991 |
583997 |
584011 |
584027 |
584033 |
584053 |
584057 |
584063 |
584081 |
584099 |
584141 |
584153 |
584167 |
584183 |
584203 |
584249 |
584261 |
584279 |
584281 |
584303 |
584347 |
584357 |
584359 |
584377 |
584387 |
584393 |
584399 |
584411 |
584417 |
584429 |
584447 |
584471 |
584473 |
584509 |
584531 |
584557 |
584561 |
584587 |
584593 |
584599 |
584603 |
584609 |
584621 |
584627 |
584659 |
584663 |
584677 |
584693 |
584699 |
584707 |
584713 |
584719 |
584723 |
584737 |
584767 |
584777 |
584789 |
584791 |
584809 |
584849 |
584863 |
584869 |
584873 |
584879 |
584897 |
584911 |
584917 |
584923 |
584951 |
584963 |
584971 |
584981 |
584993 |
584999 |
585019 |
585023 |
585031 |
585037 |
585041 |
585043 |
585049 |
585061 |
585071 |
585073 |
585077 |
585107 |
585113 |
585119 |
585131 |
585149 |
585163 |
585199 |
585217 |
585251 |
585269 |
585271 |
585283 |
585289 |
585313 |
585317 |
585337 |
585341 |
585367 |
585383 |
585391 |
585413 |
585437 |
585443 |
585461 |
585467 |
585493 |
585503 |
585517 |
585547 |
585551 |
585569 |
585577 |
585581 |
585587 |
585593 |
585601 |
585619 |
585643 |
585653 |
585671 |
585677 |
585691 |
585721 |
585727 |
585733 |
585737 |
585743 |
585749 |
585757 |
585779 |
585791 |
585799 |
585839 |
585841 |
585847 |
585853 |
585857 |
585863 |
585877 |
585881 |
585883 |
585889 |
585899 |
585911 |
585913 |
585917 |
585919 |
585953 |
585989 |
585997 |
586009 |
586037 |
586051 |
586057 |
586067 |
586073 |
586087 |
586111 |
586121 |
586123 |
586129 |
586139 |
586147 |
586153 |
586189 |
586213 |
586237 |
586273 |
586277 |
586291 |
586301 |
586309 |
586319 |
586349 |
586361 |
586363 |
586367 |
586387 |
586403 |
586429 |
586433 |
586457 |
586459 |
586463 |
586471 |
586493 |
586499 |
586501 |
586541 |
586543 |
586567 |
586571 |
586577 |
586589 |
586601 |
586603 |
586609 |
586627 |
586631 |
586633 |
586667 |
586679 |
586693 |
586711 |
586723 |
586741 |
586769 |
586787 |
586793 |
586801 |
586811 |
586813 |
586819 |
586837 |
586841 |
586849 |
586871 |
586897 |
586903 |
586909 |
586919 |
586921 |
586933 |
586939 |
586951 |
586961 |
586973 |
586979 |
586981 |
587017 |
587021 |
587033 |
587051 |
587053 |
587057 |
587063 |
587087 |
587101 |
587107 |
587117 |
587123 |
587131 |
587137 |
587143 |
587149 |
587173 |
587179 |
587189 |
587201 |
587219 |
587263 |
587267 |
587269 |
587281 |
587287 |
587297 |
587303 |
587341 |
587371 |
587381 |
587387 |
587413 |
587417 |
587429 |
587437 |
587441 |
587459 |
587467 |
587473 |
587497 |
587513 |
587519 |
587527 |
587533 |
587539 |
587549 |
587551 |
587563 |
587579 |
587599 |
587603 |
587617 |
587621 |
587623 |
587633 |
587659 |
587669 |
587677 |
587687 |
587693 |
587711 |
587731 |
587737 |
587747 |
587749 |
587753 |
587771 |
587773 |
587789 |
587813 |
587827 |
587833 |
587849 |
587863 |
587887 |
587891 |
587897 |
587927 |
587933 |
587947 |
587959 |
587969 |
587971 |
587987 |
587989 |
587999 |
588011 |
588019 |
588037 |
588043 |
588061 |
588073 |
588079 |
588083 |
588097 |
588113 |
588121 |
588131 |
588151 |
588167 |
588169 |
588173 |
588191 |
588199 |
588229 |
588239 |
588241 |
588257 |
588277 |
588293 |
588311 |
588347 |
588359 |
588361 |
588383 |
588389 |
588397 |
588403 |
588433 |
588437 |
588463 |
588481 |
588493 |
588503 |
588509 |
588517 |
588521 |
588529 |
588569 |
588571 |
588619 |
588631 |
588641 |
588647 |
588649 |
588667 |
588673 |
588683 |
588703 |
588733 |
588737 |
588743 |
588767 |
588773 |
588779 |
588811 |
588827 |
588839 |
588871 |
588877 |
588881 |
588893 |
588911 |
588937 |
588941 |
588947 |
588949 |
588953 |
588977 |
589021 |
589027 |
589049 |
589063 |
589109 |
589111 |
589123 |
589139 |
589159 |
589163 |
589181 |
589187 |
589189 |
589207 |
589213 |
589219 |
589231 |
589241 |
589243 |
589273 |
589289 |
589291 |
589297 |
589327 |
589331 |
589349 |
589357 |
589387 |
589409 |
589439 |
589451 |
589453 |
589471 |
589481 |
589493 |
589507 |
589529 |
589531 |
589579 |
589583 |
589591 |
589601 |
589607 |
589609 |
589639 |
589643 |
589681 |
589711 |
589717 |
589751 |
589753 |
589759 |
589763 |
589783 |
589793 |
589807 |
589811 |
589829 |
589847 |
589859 |
589861 |
589873 |
589877 |
589903 |
589921 |
589933 |
589993 |
589997 |
590021 |
590027 |
590033 |
590041 |
590071 |
590077 |
590099 |
590119 |
590123 |
590129 |
590131 |
590137 |
590141 |
590153 |
590171 |
590201 |
590207 |
590243 |
590251 |
590263 |
590267 |
590269 |
590279 |
590309 |
590321 |
590323 |
590327 |
590357 |
590363 |
590377 |
590383 |
590389 |
590399 |
590407 |
590431 |
590437 |
590489 |
590537 |
590543 |
590567 |
590573 |
590593 |
590599 |
590609 |
590627 |
590641 |
590647 |
590657 |
590659 |
590669 |
590713 |
590717 |
590719 |
590741 |
590753 |
590771 |
590797 |
590809 |
590813 |
590819 |
590833 |
590839 |
590867 |
590899 |
590921 |
590923 |
590929 |
590959 |
590963 |
590983 |
590987 |
591023 |
591053 |
591061 |
591067 |
591079 |
591089 |
591091 |
591113 |
591127 |
591131 |
591137 |
591161 |
591163 |
591181 |
591193 |
591233 |
591259 |
591271 |
591287 |
591289 |
591301 |
591317 |
591319 |
591341 |
591377 |
591391 |
591403 |
591407 |
591421 |
591431 |
591443 |
591457 |
591469 |
591499 |
591509 |
591523 |
591553 |
591559 |
591581 |
591599 |
591601 |
591611 |
591623 |
591649 |
591653 |
591659 |
591673 |
591691 |
591709 |
591739 |
591743 |
591749 |
591751 |
591757 |
591779 |
591791 |
591827 |
591841 |
591847 |
591863 |
591881 |
591887 |
591893 |
591901 |
591937 |
591959 |
591973 |
592019 |
592027 |
592049 |
592057 |
592061 |
592073 |
592087 |
592099 |
592121 |
592129 |
592133 |
592139 |
592157 |
592199 |
592217 |
592219 |
592223 |
592237 |
592261 |
592289 |
592303 |
592307 |
592309 |
592321 |
592337 |
592343 |
592351 |
592357 |
592367 |
592369 |
592387 |
592391 |
592393 |
592429 |
592451 |
592453 |
592463 |
592469 |
592483 |
592489 |
592507 |
592517 |
592531 |
592547 |
592561 |
592577 |
592589 |
592597 |
592601 |
592609 |
592621 |
592639 |
592643 |
592649 |
592661 |
592663 |
592681 |
592693 |
592723 |
592727 |
592741 |
592747 |
592759 |
592763 |
592793 |
592843 |
592849 |
592853 |
592861 |
592873 |
592877 |
592897 |
592903 |
592919 |
592931 |
592939 |
592967 |
592973 |
592987 |
592993 |
593003 |
593029 |
593041 |
593051 |
593059 |
593071 |
593081 |
593083 |
593111 |
593119 |
593141 |
593143 |
593149 |
593171 |
593179 |
593183 |
593207 |
593209 |
593213 |
593227 |
593231 |
593233 |
593251 |
593261 |
593273 |
593291 |
593293 |
593297 |
593321 |
593323 |
593353 |
593381 |
593387 |
593399 |
593401 |
593407 |
593429 |
593447 |
593449 |
593473 |
593479 |
593491 |
593497 |
593501 |
593507 |
593513 |
593519 |
593531 |
593539 |
593573 |
593587 |
593597 |
593603 |
593627 |
593629 |
593633 |
593641 |
593647 |
593651 |
593689 |
593707 |
593711 |
593767 |
593777 |
593783 |
593839 |
593851 |
593863 |
593869 |
593899 |
593903 |
593933 |
593951 |
593969 |
593977 |
593987 |
593993 |
594023 |
594037 |
594047 |
594091 |
594103 |
594107 |
594119 |
594137 |
594151 |
594157 |
594161 |
594163 |
594179 |
594193 |
594203 |
594211 |
594227 |
594241 |
594271 |
594281 |
594283 |
594287 |
594299 |
594311 |
594313 |
594329 |
594359 |
594367 |
594379 |
594397 |
594401 |
594403 |
594421 |
594427 |
594449 |
594457 |
594467 |
594469 |
594499 |
594511 |
594521 |
594523 |
594533 |
594551 |
594563 |
594569 |
594571 |
594577 |
594617 |
594637 |
594641 |
594653 |
594667 |
594679 |
594697 |
594709 |
594721 |
594739 |
594749 |
594751 |
594773 |
594793 |
594821 |
594823 |
594827 |
594829 |
594857 |
594889 |
594899 |
594911 |
594917 |
594929 |
594931 |
594953 |
594959 |
594961 |
594977 |
594989 |
595003 |
595037 |
595039 |
595043 |
595057 |
595069 |
595073 |
595081 |
595087 |
595093 |
595097 |
595117 |
595123 |
595129 |
595139 |
595141 |
595157 |
595159 |
595181 |
595183 |
595201 |
595207 |
595229 |
595247 |
595253 |
595261 |
595267 |
595271 |
595277 |
595291 |
595303 |
595313 |
595319 |
595333 |
595339 |
595351 |
595363 |
595373 |
595379 |
595381 |
595411 |
595451 |
595453 |
595481 |
595513 |
595519 |
595523 |
595547 |
595549 |
595571 |
595577 |
595579 |
595613 |
595627 |
595687 |
595703 |
595709 |
595711 |
595717 |
595733 |
595741 |
595801 |
595807 |
595817 |
595843 |
595873 |
595877 |
595927 |
595939 |
595943 |
595949 |
595951 |
595957 |
595961 |
595963 |
595967 |
595981 |
596009 |
596021 |
596027 |
596047 |
596053 |
596059 |
596069 |
596081 |
596083 |
596093 |
596117 |
596119 |
596143 |
596147 |
596159 |
596179 |
596209 |
596227 |
596231 |
596243 |
596251 |
596257 |
596261 |
596273 |
596279 |
596291 |
596293 |
596317 |
596341 |
596363 |
596369 |
596399 |
596419 |
596423 |
596461 |
596489 |
596503 |
596507 |
596537 |
596569 |
596573 |
596579 |
596587 |
596593 |
596599 |
596611 |
596623 |
596633 |
596653 |
596663 |
596669 |
596671 |
596693 |
596707 |
596737 |
596741 |
596749 |
596767 |
596779 |
596789 |
596803 |
596821 |
596831 |
596839 |
596851 |
596857 |
596861 |
596863 |
596879 |
596899 |
596917 |
596927 |
596929 |
596933 |
596941 |
596963 |
596977 |
596983 |
596987 |
597031 |
597049 |
597053 |
597059 |
597073 |
597127 |
597131 |
597133 |
597137 |
597169 |
597209 |
597221 |
597239 |
597253 |
597263 |
597269 |
597271 |
597301 |
597307 |
597349 |
597353 |
597361 |
597367 |
597383 |
597391 |
597403 |
597407 |
597409 |
597419 |
597433 |
597437 |
597451 |
597473 |
597497 |
597521 |
597523 |
597539 |
597551 |
597559 |
597577 |
597581 |
597589 |
597593 |
597599 |
597613 |
597637 |
597643 |
597659 |
597671 |
597673 |
597677 |
597679 |
597689 |
597697 |
597757 |
597761 |
597767 |
597769 |
597781 |
597803 |
597823 |
597827 |
597833 |
597853 |
597859 |
597869 |
597889 |
597899 |
597901 |
597923 |
597929 |
597967 |
597997 |
598007 |
598049 |
598051 |
598057 |
598079 |
598093 |
598099 |
598123 |
598127 |
598141 |
598151 |
598159 |
598163 |
598187 |
598189 |
598193 |
598219 |
598229 |
598261 |
598303 |
598307 |
598333 |
598363 |
598369 |
598379 |
598387 |
598399 |
598421 |
598427 |
598439 |
598447 |
598457 |
598463 |
598487 |
598489 |
598501 |
598537 |
598541 |
598571 |
598613 |
598643 |
598649 |
598651 |
598657 |
598669 |
598681 |
598687 |
598691 |
598711 |
598721 |
598727 |
598729 |
598777 |
598783 |
598789 |
598799 |
598817 |
598841 |
598853 |
598867 |
598877 |
598883 |
598891 |
598903 |
598931 |
598933 |
598963 |
598967 |
598973 |
598981 |
598987 |
598999 |
599003 |
599009 |
599021 |
599023 |
599069 |
599087 |
599117 |
599143 |
599147 |
599149 |
599153 |
599191 |
599213 |
599231 |
599243 |
599251 |
599273 |
599281 |
599303 |
599309 |
599321 |
599341 |
599353 |
599359 |
599371 |
599383 |
599387 |
599399 |
599407 |
599413 |
599419 |
599429 |
599477 |
599479 |
599491 |
599513 |
599519 |
599537 |
599551 |
599561 |
599591 |
599597 |
599603 |
599611 |
599623 |
599629 |
599657 |
599663 |
599681 |
599693 |
599699 |
599701 |
599713 |
599719 |
599741 |
599759 |
599779 |
599783 |
599803 |
599831 |
599843 |
599857 |
599869 |
599891 |
599899 |
599927 |
599933 |
599939 |
599941 |
599959 |
599983 |
599993 |
599999 |
600011 |
600043 |
600053 |
600071 |
600073 |
600091 |
600101 |
600109 |
600167 |
600169 |
600203 |
600217 |
600221 |
600233 |
600239 |
600241 |
600247 |
600269 |
600283 |
600289 |
600293 |
600307 |
600311 |
600317 |
600319 |
600337 |
600359 |
600361 |
600367 |
600371 |
600401 |
600403 |
600407 |
600421 |
600433 |
600449 |
600451 |
600463 |
600469 |
600487 |
600517 |
600529 |
600557 |
600569 |
600577 |
600601 |
600623 |
600631 |
600641 |
600659 |
600673 |
600689 |
600697 |
600701 |
600703 |
600727 |
600751 |
600791 |
600823 |
600827 |
600833 |
600841 |
600857 |
600877 |
600881 |
600883 |
600889 |
600893 |
600931 |
600947 |
600949 |
600959 |
600961 |
600973 |
600979 |
600983 |
601021 |
601031 |
601037 |
601039 |
601043 |
601061 |
601067 |
601079 |
601093 |
601127 |
601147 |
601187 |
601189 |
601193 |
601201 |
601207 |
601219 |
601231 |
601241 |
601247 |
601259 |
601267 |
601283 |
601291 |
601297 |
601309 |
601313 |
601319 |
601333 |
601339 |
601357 |
601379 |
601397 |
601411 |
601423 |
601439 |
601451 |
601457 |
601487 |
601507 |
601541 |
601543 |
601589 |
601591 |
601607 |
601631 |
601651 |
601669 |
601687 |
601697 |
601717 |
601747 |
601751 |
601759 |
601763 |
601771 |
601801 |
601807 |
601813 |
601819 |
601823 |
601831 |
601849 |
601873 |
601883 |
601889 |
601897 |
601903 |
601943 |
601949 |
601961 |
601969 |
601981 |
602029 |
602033 |
602039 |
602047 |
602057 |
602081 |
602083 |
602087 |
602093 |
602099 |
602111 |
602137 |
602141 |
602143 |
602153 |
602179 |
602197 |
602201 |
602221 |
602227 |
602233 |
602257 |
602267 |
602269 |
602279 |
602297 |
602309 |
602311 |
602317 |
602321 |
602333 |
602341 |
602351 |
602377 |
602383 |
602401 |
602411 |
602431 |
602453 |
602461 |
602477 |
602479 |
602489 |
602501 |
602513 |
602521 |
602543 |
602551 |
602593 |
602597 |
602603 |
602621 |
602627 |
602639 |
602647 |
602677 |
602687 |
602689 |
602711 |
602713 |
602717 |
602729 |
602743 |
602753 |
602759 |
602773 |
602779 |
602801 |
602821 |
602831 |
602839 |
602867 |
602873 |
602887 |
602891 |
602909 |
602929 |
602947 |
602951 |
602971 |
602977 |
602983 |
602999 |
603011 |
603013 |
603023 |
603047 |
603077 |
603091 |
603101 |
603103 |
603131 |
603133 |
603149 |
603173 |
603191 |
603203 |
603209 |
603217 |
603227 |
603257 |
603283 |
603311 |
603319 |
603349 |
603389 |
603391 |
603401 |
603431 |
603443 |
603457 |
603467 |
603487 |
603503 |
603521 |
603523 |
603529 |
603541 |
603553 |
603557 |
603563 |
603569 |
603607 |
603613 |
603623 |
603641 |
603667 |
603679 |
603689 |
603719 |
603731 |
603739 |
603749 |
603761 |
603769 |
603781 |
603791 |
603793 |
603817 |
603821 |
603833 |
603847 |
603851 |
603853 |
603859 |
603881 |
603893 |
603899 |
603901 |
603907 |
603913 |
603917 |
603919 |
603923 |
603931 |
603937 |
603947 |
603949 |
603989 |
604001 |
604007 |
604013 |
604031 |
604057 |
604063 |
604069 |
604073 |
604171 |
604189 |
604223 |
604237 |
604243 |
604249 |
604259 |
604277 |
604291 |
604309 |
604313 |
604319 |
604339 |
604343 |
604349 |
604361 |
604369 |
604379 |
604397 |
604411 |
604427 |
604433 |
604441 |
604477 |
604481 |
604517 |
604529 |
604547 |
604559 |
604579 |
604589 |
604603 |
604609 |
604613 |
604619 |
604649 |
604651 |
604661 |
604697 |
604699 |
604711 |
604727 |
604729 |
604733 |
604753 |
604759 |
604781 |
604787 |
604801 |
604811 |
604819 |
604823 |
604829 |
604837 |
604859 |
604861 |
604867 |
604883 |
604907 |
604931 |
604939 |
604949 |
604957 |
604973 |
604997 |
605009 |
605021 |
605023 |
605039 |
605051 |
605069 |
605071 |
605113 |
605117 |
605123 |
605147 |
605167 |
605173 |
605177 |
605191 |
605221 |
605233 |
605237 |
605239 |
605249 |
605257 |
605261 |
605309 |
605323 |
605329 |
605333 |
605347 |
605369 |
605393 |
605401 |
605411 |
605413 |
605443 |
605471 |
605477 |
605497 |
605503 |
605509 |
605531 |
605533 |
605543 |
605551 |
605573 |
605593 |
605597 |
605599 |
605603 |
605609 |
605617 |
605629 |
605639 |
605641 |
605687 |
605707 |
605719 |
605779 |
605789 |
605809 |
605837 |
605849 |
605861 |
605867 |
605873 |
605879 |
605887 |
605893 |
605909 |
605921 |
605933 |
605947 |
605953 |
605977 |
605987 |
605993 |
606017 |
606029 |
606031 |
606037 |
606041 |
606049 |
606059 |
606077 |
606079 |
606083 |
606091 |
606113 |
606121 |
606131 |
606173 |
606181 |
606223 |
606241 |
606247 |
606251 |
606299 |
606301 |
606311 |
606313 |
606323 |
606341 |
606379 |
606383 |
606413 |
606433 |
606443 |
606449 |
606493 |
606497 |
606503 |
606521 |
606527 |
606539 |
606559 |
606569 |
606581 |
606587 |
606589 |
606607 |
606643 |
606649 |
606653 |
606659 |
606673 |
606721 |
606731 |
606733 |
606737 |
606743 |
606757 |
606791 |
606811 |
606829 |
606833 |
606839 |
606847 |
606857 |
606863 |
606899 |
606913 |
606919 |
606943 |
606959 |
606961 |
606967 |
606971 |
606997 |
607001 |
607003 |
607007 |
607037 |
607043 |
607049 |
607063 |
607067 |
607081 |
607091 |
607093 |
607097 |
607109 |
607127 |
607129 |
607147 |
607151 |
607153 |
607157 |
607163 |
607181 |
607199 |
607213 |
607219 |
607249 |
607253 |
607261 |
607301 |
607303 |
607307 |
607309 |
607319 |
607331 |
607337 |
607339 |
607349 |
607357 |
607363 |
607417 |
607421 |
607423 |
607471 |
607493 |
607517 |
607531 |
607549 |
607573 |
607583 |
607619 |
607627 |
607667 |
607669 |
607681 |
607697 |
607703 |
607721 |
607723 |
607727 |
607741 |
607769 |
607813 |
607819 |
607823 |
607837 |
607843 |
607861 |
607883 |
607889 |
607909 |
607921 |
607931 |
607933 |
607939 |
607951 |
607961 |
607967 |
607991 |
607993 |
608011 |
608029 |
608033 |
608087 |
608089 |
608099 |
608117 |
608123 |
608129 |
608131 |
608147 |
608161 |
608177 |
608191 |
608207 |
608213 |
608269 |
608273 |
608297 |
608299 |
608303 |
608339 |
608347 |
608357 |
608359 |
608369 |
608371 |
608383 |
608389 |
608393 |
608401 |
608411 |
608423 |
608429 |
608431 |
608459 |
608471 |
608483 |
608497 |
608519 |
608521 |
608527 |
608581 |
608591 |
608593 |
608609 |
608611 |
608633 |
608653 |
608659 |
608669 |
608677 |
608693 |
608701 |
608737 |
608743 |
608749 |
608759 |
608767 |
608789 |
608819 |
608831 |
608843 |
608851 |
608857 |
608863 |
608873 |
608887 |
608897 |
608899 |
608903 |
608941 |
608947 |
608953 |
608977 |
608987 |
608989 |
608999 |
609043 |
609047 |
609067 |
609071 |
609079 |
609101 |
609107 |
609113 |
609143 |
609149 |
609163 |
609173 |
609179 |
609199 |
609209 |
609221 |
609227 |
609233 |
609241 |
609253 |
609269 |
609277 |
609283 |
609289 |
609307 |
609313 |
609337 |
609359 |
609361 |
609373 |
609379 |
609391 |
609397 |
609403 |
609407 |
609421 |
609437 |
609443 |
609461 |
609487 |
609503 |
609509 |
609517 |
609527 |
609533 |
609541 |
609571 |
609589 |
609593 |
609599 |
609601 |
609607 |
609613 |
609617 |
609619 |
609641 |
609673 |
609683 |
609701 |
609709 |
609743 |
609751 |
609757 |
609779 |
609781 |
609803 |
609809 |
609821 |
609859 |
609877 |
609887 |
609907 |
609911 |
609913 |
609923 |
609929 |
609979 |
609989 |
609991 |
609997 |
610031 |
610063 |
610081 |
610123 |
610157 |
610163 |
610187 |
610193 |
610199 |
610217 |
610219 |
610229 |
610243 |
610271 |
610279 |
610289 |
610301 |
610327 |
610331 |
610339 |
610391 |
610409 |
610417 |
610429 |
610439 |
610447 |
610457 |
610469 |
610501 |
610523 |
610541 |
610543 |
610553 |
610559 |
610567 |
610579 |
610583 |
610619 |
610633 |
610639 |
610651 |
610661 |
610667 |
610681 |
610699 |
610703 |
610721 |
610733 |
610739 |
610741 |
610763 |
610781 |
610783 |
610787 |
610801 |
610817 |
610823 |
610829 |
610837 |
610843 |
610847 |
610849 |
610867 |
610877 |
610879 |
610891 |
610913 |
610919 |
610921 |
610933 |
610957 |
610969 |
610993 |
611011 |
611027 |
611033 |
611057 |
611069 |
611071 |
611081 |
611101 |
611111 |
611113 |
611131 |
611137 |
611147 |
611189 |
611207 |
611213 |
611257 |
611263 |
611279 |
611293 |
611297 |
611323 |
611333 |
611389 |
611393 |
611411 |
611419 |
611441 |
611449 |
611453 |
611459 |
611467 |
611483 |
611497 |
611531 |
611543 |
611549 |
611551 |
611557 |
611561 |
611587 |
611603 |
611621 |
611641 |
611657 |
611671 |
611693 |
611707 |
611729 |
611753 |
611791 |
611801 |
611803 |
611827 |
611833 |
611837 |
611839 |
611873 |
611879 |
611887 |
611903 |
611921 |
611927 |
611939 |
611951 |
611953 |
/relevation/ext/cryptopy-1.2.5.patched/fmath/__init__.py |
---|
0,0 → 1,5 |
""" fmath module |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/fmath/primes_to_5k.py |
---|
0,0 → 1,90 |
""" fmath.primes_to_5k |
All of the prime numbers below 5000 |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
primes_to_5k = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, |
47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, |
103, 107, 109, 113, 127, 131, 137, 139, 149, 151, |
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, |
211, 223, 227, 229, 233, 239, 241, 251, 257, 263, |
269, 271, 277, 281, 283, 293, 307, 311, 313, 317, |
331, 337, 347, 349, 353, 359, 367, 373, 379, 383, |
389, 397, 401, 409, 419, 421, 431, 433, 439, 443, |
449, 457, 461, 463, 467, 479, 487, 491, 499, 503, |
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, |
587, 593, 599, 601, 607, 613, 617, 619, 631, 641, |
643, 647, 653, 659, 661, 673, 677, 683, 691, 701, |
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, |
773, 787, 797, 809, 811, 821, 823, 827, 829, 839, |
853, 857, 859, 863, 877, 881, 883, 887, 907, 911, |
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, |
991, 997, 1009, 1013, 1019, 1021, 1031, 1033, |
1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, |
1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, |
1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, |
1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, |
1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, |
1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, |
1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, |
1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, |
1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, |
1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, |
1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, |
1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, |
1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, |
1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, |
1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, |
1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, |
1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, |
2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, |
2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, |
2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, |
2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, |
2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, |
2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, |
2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, |
2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, |
2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, |
2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, |
2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, |
2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, |
2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, |
2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, |
2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, |
3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, |
3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, |
3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, |
3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, |
3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, |
3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, |
3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, |
3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, |
3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, |
3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, |
3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, |
3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, |
3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, |
3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, |
3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, |
4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, |
4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, |
4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, |
4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, |
4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, |
4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, |
4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, |
4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, |
4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, |
4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, |
4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, |
4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, |
4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, |
4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, |
4957, 4967, 4969, 4973, 4987, 4993, 4999 ] |
/relevation/ext/cryptopy-1.2.5.patched/fmath |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/LICENSE.txt |
---|
0,0 → 1,114 |
The CryptoPy Artistic License Version 1.0 |
Copyright © (c) 2002 by Paul A. Lambert |
Derived from the "Artistic License" at "OpenSource.org". |
PREAMBLE |
The intent of this document is to state the conditions under which a |
Package may be copied, such that the Copyright Holder maintains some |
semblance of artistic control over the development of the package, |
while giving the users of the package the right to use and distribute |
the Package in a more-or-less customary fashion, plus the right to |
make reasonable modifications. |
DEFINITIONS |
o "Package" refers to the script, suite, file, or collection of scripts, |
suites, and/or files distributed by the Copyright Holder, and to |
derivatives of that Package created through textual modification. |
o "Standard Version" refers to such a Package if it has not been |
modified, or has been modified in accordance with the wishes of the |
Copyright Holder. |
o "Copyright Holder" is whoever is named in the copyright statement or |
statements for the package. |
o "You" is you, if you're thinking about copying or distributing this |
Package. |
o "Reasonable copying fee" is whatever you can justify on the basis of |
media cost, duplication charges, time of people involved, and so on. |
(You will not be required to justify it to the Copyright Holder, but |
only to the computing community at large as a market that must bear the |
fee.) |
o "Freely Available" means that no fee is charged for the item itself, |
though there may be fees involved in handling the item. It also means |
that recipients of the item may redistribute it under the same |
conditions they received it. |
TERMS |
1. You may make and give away verbatim copies of the source form of the |
Standard Version of this Package without restriction, provided that you |
duplicate all of the original copyright notices and associated disclaimers. |
2. You may apply bug fixes, portability fixes, and other modifications |
derived from the Public Domain or from the Copyright Holder. A Package |
modified in such a way shall still be considered the Standard Version. |
3. You may otherwise modify your copy of this Package in any way, provided |
that you insert a prominent notice in each changed script, suite, or file |
stating how and when you changed that script, suite, or file, and provided |
that you do at least ONE of the following: |
a) Use the modified Package only within your corporation or |
organization, or retain the modified Package solely for personal use. |
b) Place your modifications in the Public Domain or otherwise make them |
Freely Available, such as by posting said modifications to Usenet or an |
equivalent medium, or placing the modifications on a major archive site |
such as ftp.uu.net, or by allowing the Copyright Holder to include your |
modifications in the Standard Version of the Package. |
c) Rename any non-standard executables so the names do not conflict |
with standard executables, which must also be provided, and provide a |
separate manual page (or equivalent) for each non-standard executable |
that clearly documents how it differs from the Standard Version. |
d) Make other distribution arrangements with the Copyright Holder. |
4. You may distribute the programs of this Package in object code or |
executable form, provided that you do at least ONE of the following: |
a) Distribute a Standard Version of the executables and library files, |
together with instructions (in the manual page or equivalent) on where |
to get the Standard Version. |
b) Accompany the distribution with the machine-readable source of the |
Package with your modifications. |
c) Accompany any non-standard executables with their corresponding |
Standard Version executables, give the non-standard executables |
non-standard names, and clearly document the differences in manual |
pages (or equivalent), together with instructions on where to get the |
Standard Version. |
d) Make other distribution arrangements with the Copyright Holder. |
5. You may charge a reasonable copying fee for any distribution of this |
Package. You may charge any fee you choose for support of this Package. |
You may not charge a fee for this Package itself. However, you may |
distribute this Package in aggregate with other (possibly commercial) |
programs as part of a larger (possibly commercial) software distribution |
provided that you do not advertise this Package as a product of your own. |
6. The scripts and library files supplied as input to or produced as |
output from the programs of this Package do not automatically fall under |
the copyright of this Package, but belong to whomever generated them, and |
may be sold commercially, and may be aggregated with this Package. |
7. Scripts, suites, or programs supplied by you that depend on or |
otherwise make use of this Package shall not be considered part of this |
Package. |
8. The name of the Copyright Holder may not be used to endorse or promote |
products derived from this software without specific prior written |
permission. |
9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED |
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF |
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
/relevation/ext/cryptopy-1.2.5.patched/crypto/common.py |
---|
0,0 → 1,21 |
""" crypto.common |
Common utility routines for crypto modules |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
def xorS(a,b): |
""" XOR two strings """ |
assert len(a)==len(b) |
x = [] |
for i in range(len(a)): |
x.append( chr(ord(a[i])^ord(b[i]))) |
return ''.join(x) |
def xor(a,b): |
""" XOR two strings """ |
x = [] |
for i in range(min(len(a),len(b))): |
x.append( chr(ord(a[i])^ord(b[i]))) |
return ''.join(x) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/app/__init__.py |
---|
0,0 → 1,8 |
""" crypto.app |
Sample applications of CryptoPy |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/app/filecrypt.py |
---|
0,0 → 1,87 |
#!/usr/bin/env python |
""" cipher.app.filecrypt |
File encryption script. |
Current uses an 'extended' AES algorithm. |
2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import sys, getpass, getopt, os |
from crypto.cipher.trolldoll import Trolldoll |
from crypto.errors import DecryptNotBlockAlignedError |
from binascii_plus import * |
def main(): |
""" Main is the command line interface to filecrypt """ |
path, progName = os.path.split(sys.argv[0]) |
usage = """Usage: %s [-d | -e][a][?] [-k <passPhrase>] [-i <infile>] [-o <outfile>]\n""" % progName |
try: |
# use get opt to parse and validate command line |
optlist, args = getopt.getopt( sys.argv[1:], 'edk:i:o:' ) |
except getopt.GetoptError, err : |
sys.exit( "Error: %s\n%s" % (err,usage) ) |
print optlist,'\n------\n',args |
# make a dictionary and check for one occurance of each option |
optdict = {} |
for option in optlist: |
if not optdict.has_key(option[0]): |
optdict[option[0]] = option[1] |
else: |
sys.exit( "Error: duplicate option '%s'\n%s" % (option[0],usage) ) |
if optdict.has_key('-e') and optdict.has_key('-d'): |
sys.exit( "Error: Can not do both encrypt and decrypt, pick either '-e' or '-d'\n%s" % usage ) |
if not(optdict.has_key('-e') or optdict.has_key('-d')): |
sys.exit( "Error: Must select encrypt or decrypt, pick either '-e' or '-d'\n%s" % usage ) |
# determine the passphrase from the command line or by keyboard input |
if optdict.has_key('-k'): |
passPhrase = optdict['-k'] |
else: |
passPhrase = getpass.getpass('Key: ') |
# should really test for a good passphrase ................... |
# get input from file or stdin |
if optdict.has_key('-i'): |
infile = open(optdict['-i'],'rb') |
input = infile.read() |
else: |
input = sys.stdin.read() |
print "input (%d bytes): %s" % (len(input),b2a_pt(input)) |
alg=Trolldoll(ivSize=160) |
alg.setPassphrase( passPhrase ) |
# Encrypt or decrypt depending on the option selected |
if optdict.has_key('-e'): |
output = alg.encrypt(input) |
elif optdict.has_key('-d'): |
try: |
output = alg.decrypt(input) |
except DecryptNotBlockAlignedError, errMessage : |
sys.exit("""Error: %s\n Note this can be caused by inappropriate modification \n of binary files (Win issue with CR/LFs). Try -a mode. """ % errMessage ) |
# should check for integrity failure |
else: |
sys.exit( "Error: Must select encrypt or decrypt, pick either '-e' or '-d'\n%s" % usage ) |
print "output (%d bytes): %s" % (len(output),b2a_pt(output)) |
# put output to file or stdout |
if optdict.has_key('-o'): |
outfile = open(optdict['-o'],'wb') |
outfile.write( output ) |
else: |
sys.stdout.write( output ) |
sys.exit() # normal termination |
if __name__ == "__main__": |
""" Called when run from the command line """ |
main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/app |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto/entropy/__init__.py |
---|
0,0 → 1,8 |
""" crypto.entropy |
Entropy package of CryptoPy |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/entropy/pagingEntropy.py |
---|
0,0 → 1,75 |
""" crypto.entropy.pagingEntropy |
Uses variations in disk access time to generator entropy. A long string is |
created that is bigger than available memory. Virtual memory access' create |
random variations in retrieval time. |
Just an experiment, not recommended for use at this time. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import struct |
class PagingEntropyCollector: |
""" collect entropy from memory paging """ |
def __init__(self, memSize=500000000L): #? how should this be picked? |
""" Initialize paging entropy collector, |
memSize must be larger than allocated memory """ |
self.size = memSize |
self.memBlock = self.size*chr(0) # long string of length self.size |
self.index = 0 |
import random |
self.rand = random.Random(1555551) |
def randomBytes(self, numberOfBytes, secondsPerBit=.05): |
byteString = '' |
for b in range(numberOfBytes): |
aByte = 0 |
for bit in range(8): |
aByte = aByte << 1 |
aByte = aByte ^ self.collectBit(secondsPerBit) |
byteString += chr(aByte) |
return byteString |
def collectBit(self, secondsPerBit=1.0): |
""" Collect an entropy bit by jumping around a long string and |
collecting the variation in time and number of samples per |
time interval """ |
t1 = time() |
count = 0 |
while (time()-t1) < secondsPerBit: # seconds per sample |
# use random to sample various virtual memory locations |
sample = self.memBlock[int(self.rand.random()*self.size)] |
count += 1 |
randomBit = intToParity(count)^floatToParity(time()-t1) |
return randomBit |
def intToParity(integer): |
s = struct.pack('i',integer) |
parity = 0 |
for character in s: |
byte = ord(character) |
parity = parity^(0x01&(byte^(byte>>1)^(byte>>2)^(byte>>3)^(byte>>4)^(byte>>5)^(byte>>6)^(byte>>7))) |
return parity |
def floatToParity(float): |
s = struct.pack('d',float) |
parity = 0 |
for character in s: |
byte = ord(character) |
parity = parity^(0x01&(byte^(byte>>1)^(byte>>2)^(byte>>3)^(byte>>4)^(byte>>5)^(byte>>6)^(byte>>7))) |
return parity |
if __name__ == "__main__": |
from binascii import b2a_hex |
e = PagingEntropyCollector() |
for i in range(20): |
e.rand.seed(1) # make each sample set the same to allow examination of statistics |
print b2a_hex( e.randomBytes(16) ) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/entropy/prn_rijndael_test.py |
---|
0,0 → 1,31 |
#! /usr/bin/env python |
""" crypto.entropy.prn_rijndael_test |
Unit test for prn_rijndael |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.entropy.prn_rijndael import PRN_Rijndael |
from binascii import b2a_hex |
""" Not much of a test yet .... """ |
if __name__ == "__main__": |
r = PRN_Rijndael() |
for i in range(20): |
print b2a_hex(r.getSomeBytes()) |
for i in range (20): |
r.getBytes(i) |
for i in range(40): |
c=r.getBytes(i) |
print b2a_hex(r.getBytes(i)) |
r.reseed(c) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/entropy/prn_rijndael.py |
---|
0,0 → 1,62 |
""" crypto.entropy.prn_rijndael |
A Psudeo Random Number Generator based on Rijndael_256k_256b |
The algorithm is based on Section 13.4 of: |
"AES Proposal: Rijndael", Joan Daemen, Vincent Rijmen |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.rijndael import Rijndael |
from crypto.cipher.base import noPadding |
from binascii import b2a_hex |
defaultSeed = "An arbirary 32 byte string!!!!!!" # can be changed by the truely paranoid |
class PRN_Rijndael: |
""" A Psudeo Random Number Generator based on Rijndael_256k_256b |
The algorithm is based on Section 13.4 of: |
"AES Proposal: Rijndael", Joan Daemen, Vincent Rijmen |
""" |
def __init__(self, seed=defaultSeed): |
self.__algorithm = Rijndael(padding=noPadding(),keySize=32, blockSize=32) |
self.reset() |
self.reseed(seed) |
def reset(self): |
self.__algorithm.setKey(self.__algorithm.keySize*chr(0)) # set key to all zeros |
self.__state = self.__algorithm.blockSize*chr(0) # a single block of zeros |
def reseed(self,seed): |
while len(seed) > 0 : |
if len(seed) < self.__algorithm.blockSize: |
block = seed + (self.__algorithm.blockSize-len(seed))*chr(0) |
seed = '' |
else: |
block = seed[:self.__algorithm.blockSize] |
seed = seed[self.__algorithm.blockSize:] |
self.__algorithm.setKey( self.__algorithm.encrypt(block) ) |
def getBytes(self, numBytes): |
""" Return a psuedo random byte string of length numBytes """ |
bytes = '' |
while len(bytes)< numBytes : |
bytes = bytes + self.getSomeBytes() |
return bytes[:numBytes] # truncate to the requested length |
def getSomeBytes(self): |
""" Psuedo random bytes are generated 16 bytes at a time. |
The state is updated by applying Rijndael using the Cipher |
Key. The first 128 bits of the state are output as a pseudorandom number. |
""" |
self.__state = self.__algorithm.encrypt(self.__state) |
return self.__state[:16] |
/relevation/ext/cryptopy-1.2.5.patched/crypto/entropy |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto/icedoll_test.py |
---|
0,0 → 1,51 |
#! /usr/bin/env python |
""" crypto.cipher.icedoll_test |
Tests for icedoll encryption algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.icedoll import Icedoll |
from crypto.cipher.base import noPadding |
from binascii import a2b_hex |
from binascii_plus import b2a_p, a2b_p |
import unittest |
class Icedoll_Basic_Tests(unittest.TestCase): |
""" Test Icedoll algorithm """ |
def testDctEqPt(self): |
""" test of plaintext = decrypt(encrypt(plaintext)) """ |
alg = Icedoll( 16*chr(0), padding=noPadding()) |
pt = 16*4*'a' # block aligned |
ct = alg.encrypt(pt) |
print 'ct = ',b2a_p(ct) |
dct = alg.decrypt(ct) |
print 'dct = ',b2a_p(dct) |
assert(pt == dct), 'pt != dct' |
alg = Icedoll( 16*chr(0)) # autoPad |
pt = 17*4*'a' # non-block aligned |
ct = alg.encrypt(pt) |
print 'ct = ',b2a_p(ct) |
dct = alg.decrypt(ct) |
print 'dct = ',b2a_p(dct) |
assert(pt == dct), 'pt != dct' |
def testEncrcptDecryptMultiSizesPt(self): |
""" Encrypt decrypt multiple sizes """ |
alg = Icedoll( 16*chr(0)) |
for size in range(100): |
pt = size*'a' |
ct = alg.encrypt(pt) |
#print 'ct = ',b2a_p(ct) |
dct = alg.decrypt(ct) |
#print 'dct = ',b2a_p(dct) |
assert(pt == dct), 'pt != dct' |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/errors.py |
---|
0,0 → 1,26 |
""" errors |
Error classes for cryptographic modules |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
class CryptoError(Exception): |
""" Base class for crypto exceptions """ |
def __init__(self,errorMessage='Error!'): |
self.message = errorMessage |
def __str__(self): |
return self.message |
class InitCryptoError(CryptoError): |
""" Crypto errors during algorithm initialization """ |
class BadKeySizeError(InitCryptoError): |
""" Bad key size error """ |
class EncryptError(CryptoError): |
""" Error in encryption processing """ |
class DecryptError(CryptoError): |
""" Error in decryption processing """ |
class DecryptNotBlockAlignedError(DecryptError): |
""" Error in decryption processing """ |
class IntegrityCheckError(DecryptError): |
""" Bad integrity detected during decryption (integrity aware algorithms) """ |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/__init__.py |
---|
0,0 → 1,3 |
""" The crypto.hash package. |
Part of the CryptoPy framework. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/sha1Hash_test.py |
---|
0,0 → 1,51 |
#!/usr/bin/env python |
""" sha1Hash_test.py |
Unit tests for sha1.py |
""" |
from crypto.hash.sha1Hash import SHA1 |
import unittest |
import struct |
assert struct.calcsize('!IIIII') == 20, '5 integers should be 20 bytes' |
class SHA1_FIPS180_TestCases(unittest.TestCase): |
""" SHA-1 tests from FIPS180-1 Appendix A, B and C """ |
def testFIPS180_1_Appendix_A(self): |
""" APPENDIX A. A SAMPLE MESSAGE AND ITS MESSAGE DIGEST """ |
hashAlg = SHA1() |
message = 'abc' |
message_digest = 0xA9993E36L, 0x4706816AL, 0xBA3E2571L, 0x7850C26CL, 0x9CD0D89DL |
md_string = _toBString(message_digest) |
assert( hashAlg(message) == md_string ), 'FIPS180 Appendix A test Failed' |
def testFIPS180_1_Appendix_B(self): |
""" APPENDIX B. A SECOND SAMPLE MESSAGE AND ITS MESSAGE DIGEST """ |
hashAlg = SHA1() |
message = 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq' |
message_digest = 0x84983E44L, 0x1C3BD26EL, 0xBAAE4AA1L, 0xF95129E5L, 0xE54670F1L |
md_string = _toBString(message_digest) |
assert( hashAlg(message) == md_string ), 'FIPS180 Appendix B test Failed' |
def testFIPS180_1_Appendix_C(self): |
""" APPENDIX C. A THIRD SAMPLE MESSAGE AND ITS MESSAGE DIGEST |
Let the message be the binary-coded form of the ASCII string which consists |
of 1,000,000 repetitions of "a". """ |
hashAlg = SHA1() |
message = 1000000*'a' |
message_digest = 0x34AA973CL, 0xD4C4DAA4L, 0xF61EEB2BL, 0xDBAD2731L, 0x6534016FL |
md_string = _toBString(message_digest) |
assert( hashAlg(message) == md_string ), 'FIPS180 Appendix C test Failed' |
def _toBlock(binaryString): |
""" Convert binary string to blocks of 5 words of uint32() """ |
return [uint32(word) for word in struct.unpack('!IIIII', binaryString)] |
def _toBString(block): |
""" Convert block (5 words of 32 bits to binary string """ |
return ''.join([struct.pack('!I',word) for word in block]) |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/sha1Hash.py |
---|
0,0 → 1,37 |
""" crypto.hash.sha1Hash |
Wrapper for python sha module to support crypo module standard interface |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import sha |
from crypto.hash.hash import Hash |
class SHA1(Hash): |
def __init__( self ): |
self.name = 'SHA1' |
self.blocksize = 1 # single octets can be hashed by padding to raw block size |
self.raw_block_size = 64 # SHA1 operates on 512 bit / 64 byte blocks |
self.digest_size = 20 # or 160 bits |
self.reset() |
def reset(self): |
self.pysha1 = sha.new() |
def update(self,data): |
""" Update the sha object with the string arg. Repeated calls are |
equivalent to a single call with the concatenation of all the |
arguments: m.update(a); m.update(b) is equivalent to m.update(a+b). |
""" |
self.pysha1.update(data) |
def digest(self): |
""" Return the digest of the strings passed to the update() |
method so far. This is a 20-byte string which may contain |
non-ASCII characters, including null bytes. |
""" |
return self.pysha1.digest() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/hash.py |
---|
0,0 → 1,36 |
""" crypto.cipher.hash |
Base class for cryptographic hash algorithms |
An alternate interface (no 'new'). |
Copyright © (c) 2002 by Paul A. Lambert. |
""" |
from binascii import b2a_hex |
class Hash: |
def __init__( self ): |
raise 'must overload' |
def reset(self): |
raise 'must overload' |
def __call__(self, data, more=None): |
return self.hash(data,more) |
def hash(self,data,more=None): |
self.update(data) |
digest = self.digest() |
if more==None: |
self.reset() # no more data, reset |
return digest |
def update(self,data): |
""" Update the hash object with the data. Repeated calls are |
equivalent to a single call with the concatenation of all the |
arguments: m.update(a); m.update(b) is equivalent to m.update(a+b). |
""" |
raise 'must overload' |
def digest(self): |
raise 'must overload' |
def final(self,data): |
return self.hash(data) |
def hexdigest(self): |
""" Return the digest of the data in ascii-hex format """ |
return b2a_hex(self.digest()) |
# def hexdigest(self): not supported yet |
# def copy(self): not supported yet ... may change |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/md5Hash_test.py |
---|
0,0 → 1,26 |
#!/usr/bin/env python |
""" md5Hash_test.py |
Unit tests for md5Hash.py (not the default python library!) |
MD5 defined in RFC 1321 |
""" |
from crypto.hash.md5Hash import MD5 |
import unittest |
from binascii import a2b_hex |
class MD5_TestCases(unittest.TestCase): |
""" MD5 tests from ...""" |
def testFIPS180_1_Appendix_A(self): |
""" APPENDIX A. A SAMPLE MESSAGE AND ITS MESSAGE DIGEST """ |
hashAlg = MD5() |
message = 'abc' |
message_digest = '900150983cd24fb0d6963f7d28e17f72' |
md_string = a2b_hex(message_digest) |
assert( hashAlg(message) == md_string ), 'md5 test Failed' |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash/md5Hash.py |
---|
0,0 → 1,31 |
""" md5Hash.py |
Wrapper for python md5 module to support crypo module standard interface |
""" |
import md5 |
from crypto.hash.hash import Hash |
class MD5(Hash): |
def __init__( self ): |
self.name = 'MD5' |
self.blocksize = 1 # single octets can be hashed by padding to raw block size |
self.raw_block_size = 64 # MD5 operates on 512 bits or 64 byte blocks |
self.digest_size = 16 # or 128 bits |
self.reset() |
def reset(self): |
self.pymd5 = md5.new() |
def update(self,data): |
""" Update the md5 object with the string arg. Repeated calls are |
equivalent to a single call with the concatenation of all the |
arguments: m.update(a); m.update(b) is equivalent to m.update(a+b). |
""" |
self.pymd5.update(data) |
def digest(self): |
""" Return the digest of the strings passed to the update() |
method so far. This is a 20-byte string which may contain |
non-ASCII characters, including null bytes. |
""" |
return self.pymd5.digest() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/hash |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/prf_dot11_test.py |
---|
0,0 → 1,54 |
#!/usr/bin/env python |
""" crypto.keyedHash.prf_dot11_test |
Tests of the IEEE 802.11 PRF functions |
""" |
from crypto.keyedHash.prf_dot11 import PRF |
import unittest |
from binascii_plus import b2a_hex, a2b_hex, b2a_p, a2b_p |
class prf_TestVectors(unittest.TestCase): |
""" PRF from IEEE 802.11 testing known values """ |
def testKnowValues(self): |
""" Test vectors from 11-02-298r0-I-suggested-changes-to-RSN.doc |
Modified to show prefix and correct length. |
""" |
for [key,data,digest,prf_know_value] in prfTestVectors: |
# the 298r test vectors do not include the prefix :-( |
prefix = 'prefix' |
# remove white spaces and convert to binary string |
prf_value = a2b_p(prf_know_value) |
lengthInBits=8*len(prf_value) |
a_prf = PRF(key,prefix,data,lengthInBits) |
print 'key = ', b2a_p(key) |
print 'prefix = ', '"'+prefix+'"' |
print 'data = ', b2a_p(data) |
print 'PRF = ', b2a_p(a_prf) |
print 'PRF_v = ', b2a_p(prf_value) |
print 'len prf= ', len(a_prf)* 8 |
self.assertEqual(a_prf, prf_value) |
""" -------------- (key, data, digest, prf_value) ------------------ """ |
prfTestVectors =((a2b_hex('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'), |
'Hi There', |
'b617318655057264e28bc0b6fb378c8ef146be00', |
'bcd4c650b30b9684951829e0d75f9d54'), |
('Jefe', |
'what do ya want for nothing?', |
'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79', |
"""51f4de5b33f249adf81aeb713a3c20f4fe631446fabdfa58 |
244759ae58ef9009a99abf4eac2ca5fa87e692c440eb40023e |
7babb206d61de7b92f41529092b8fc"""), |
(20*chr(0xaa), |
50*chr(0xdd), #0xdd repeated 50 times |
'125d7342b9ac11cd91a39af48aa17b4f63f175d3', |
"""e1ac546ec4cb636f9976487be5c86be17a0252ca5d8d8df12c |
fb0473525249ce9dd8d177ead710bc9b590547239107aef7b4ab |
d43d87f0a68f1cbd9e2b6f7607""")) |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/tkip_mic_test.py |
---|
0,0 → 1,83 |
#!/usr/bin/env python |
""" Testing of TKIP_MIC Class |
""" |
from crypto.keyedHash.tkip_mic import TKIP_MIC |
from binascii_plus import * |
from struct import pack, unpack |
import unittest |
class TKIP_MIC_Tests(unittest.TestCase): |
""" Test MIC algorithm using know values """ |
def testAdrianExample1(self): |
""" Test 1 from Adrian 2002-12-12""" |
print "==== Test 1 Adrian ====" |
# raw data |
k0 = 0x00000000L # assume is a 'dword' |
k1 = 0x00000000L |
key = pack('<II', k0, k1 ) # pack two integers into string little-endian |
a1 = a2b_p('161514131211') |
a2 = a2b_p('262524232221') |
a3 = a2b_p('363534333231') # assumed to be TA |
a4 = a2b_p('464544434241') |
tcid = 2 |
payload = a2b_p('10 11 12 13 14 15 16 17 18 19 1a 1b 1c') |
# this looks like a 4 addresses example do: |
sa = a2 # a4 |
da = a1 # a3 |
print "key =", b2a_p(key) |
print "sa =", b2a_p(sa) |
print "da =", b2a_p(da) |
print "tcid =", tcid |
print "payload =", b2a_p(payload) |
v0 = 0x85a3fe4cL |
v1 = 0x20f4105fL |
micResultAdrian = pack('<II', v0, v1) # pack little-endian dwords into 8 octets |
tkipMic = TKIP_MIC(key) |
micResult = tkipMic.hash(sa, da, tcid, payload ) |
print "expected MIC =", b2a_p(micResultAdrian) |
print "MIC Result =", b2a_p(micResult) |
v0Result, v1Result = unpack('<II', micResult) |
self.assertEqual( v0, v0Result ), 'failed vo' |
self.assertEqual( v1, v1Result ), 'failed v1' |
def testParagExample1(self): |
""" Test 2 from Parag 2002-12-16""" |
print "==== Test 2 ====" |
# raw data |
k0 = 0x01234567L |
k1 = 0x89abcdefL |
key = pack('<II', k0, k1 ) # pack two integers into string little-endian |
da = a2b_p('aaaaaaaaaaaa') |
sa = a2b_p('bbbbbbbbbbbb') |
priority = 0x03 |
payload = pack('<IIIIIIIIIII',0xdeaf0005L, 0xdeaf0006L, 0xdeaf0007L, 0xdeaf0008L, 0xdeaf0009L, 0xdeaf000aL, 0xdeaf000bL, 0xdeaf000cL, 0xdeaf000dL, 0xdeaf000eL, 0x00ccdd00L) |
payload = payload[:-1] # trim off last octet |
print "key =", b2a_p(key) |
print "sa =", b2a_p(sa) |
print "da =", b2a_p(da) |
print "priority =", priority |
print "payload =", b2a_p(payload) |
# The know MIC is |
v0 = 0xe597b391L |
v1 = 0xb8c4a7b7L |
micResultParag = pack('<II', v0, v1) # pack little-endian dwords into 8 octets |
tkipMic = TKIP_MIC(key) |
tcid = priority |
micResult = tkipMic.hash(sa, da, tcid, payload ) |
print "expected MIC =", b2a_p(micResultParag) |
print "MIC Result =", b2a_p(micResult) |
v0Result, v1Result = unpack('<II', micResult) |
self.assertEqual( v0, v0Result ), 'failed vo' |
self.assertEqual( v1, v1Result ), 'failed v1' |
if __name__ == '__main__': |
unittest.main() # run all the tests |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/__init__.py |
---|
0,0 → 1,7 |
""" crypto.keyedHash |
The keyedHash package. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/prf_dot11.py |
---|
0,0 → 1,38 |
""" prf_dot11.py |
The PRF function is used in a number of places in 802.11i |
to create psuedo random octet strings. |
The parameter 'prefix' is a string that shall be a unique label for each |
different purpose of the PRF. |
""" |
import hmac, sha # available in any Python 2.x |
def PRF( key, prefix, data, number_of_bits): |
""" Key, prefix and data are arbitrary strings . |
number_of_bits must be a multiple of 8 |
HMAC_SHA1 generates 20 byte blocks. Enough are generated to get the |
requested number of octets and the reslut is truncated to the requested size. |
""" |
number_of_octets, remainder = divmod(number_of_bits,8) |
if remainder != 0: |
raise ValueError, 'requested bits not multiple of 8' |
R = '' |
i = 0 |
while len(R) <= number_of_octets : |
hmac_sha_1= hmac.new( key, prefix + chr(0x00) + data + chr(i), sha ) |
i = i + 1 |
R = R + hmac_sha_1.digest() # concatenate latest hash to result string |
return R[:number_of_octets] # return R truncated to 'number_of_octets' |
def PRF_128(key,A,B): return PRF(key,A,B,128) |
def PRF_192(key,A,B): return PRF(key,A,B,192) |
def PRF_256(key,A,B): return PRF(key,A,B,256) |
def PRF_384(key,A,B): return PRF(key,A,B,384) |
def PRF_512(key,A,B): return PRF(key,A,B,512) |
def PRF_768(key,A,B): return PRF(key,A,B,768) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/tkip_mic.py |
---|
0,0 → 1,40 |
""" crypto.keyedHash.tkip_mic |
A reference implementation of the TKIP Message Integrety Chek (MIC) |
that is defined in IEEE 802.11i |
The MIC is based on Michael, a 64-bit MIC, with a design strength of 20 bits. |
(c) 2002 Paul A. Lambert |
""" |
from crypto.keyedHash.michael import Michael |
class TKIP_MIC(Michael): |
""" The TKIP MIC Calculation for IEEE 802.11 TGi |
This MIC algorithm uses the Michael Message Integrity Check (MIC) |
and incorporates the DA, SA, priority and padding as |
part of the MIC calculation |
""" |
def __init__(self, key=None, version='D3'): |
""" """ |
self.version = version |
Michael.__init__(self,key) |
def hash(self, sa, da, priority, msduData ): |
""" The TKIP MIC appends sa, da and priority to msduData |
and uses the result in the Michael keyed hash |
to create an 8 octet MIC value |
""" |
assert( 0 <= priority <= 15 ), 'Priority must be 4 bit value' |
assert( (len(sa)==6) and (len(da)==6) ), 'Addresses must be 6 octets' |
if self.version == 'D3': |
micData = da + sa + chr(priority) + 3*chr(0) + msduData |
elif self.version == 'D2': |
micData = da + sa + msduData |
else: |
raise 'bad version' |
return Michael.hash(self, micData) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/michael_test.py |
---|
0,0 → 1,57 |
#!/usr/bin/env python |
""" crypto.keyedHash.michael_test |
Tests of the Michael Message Integrity Check Algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.keyedHash.michael import Michael |
from binascii import * |
import unittest |
class Michael_TestVectors(unittest.TestCase): |
""" Test MIC algorithm using know values """ |
def testIEEE_BaseKnowValues(self): |
""" Test using vectors from IEEE P802.11i/D2.0 """ |
def runSingleTest(key,data,micResult): |
print "=============================" |
key = a2b_hex(key) |
knownMICResult = a2b_hex(micResult) |
print "key: ",b2a_hex(key) |
print "data: ",b2a_hex(data) |
print "knownMIC: ", b2a_hex(knownMICResult) |
micAlg = Michael(key) |
calculatedMIC = micAlg.hash(data) |
print "CalcMIC: ", b2a_hex(calculatedMIC) |
self.assertEqual( calculatedMIC, knownMICResult ) |
# alternate calling sequence |
micAlg = Michael() |
micAlg.setKey(key) |
calculatedMIC = micAlg.hash(data) |
self.assertEqual( calculatedMIC, knownMICResult ) |
# yet another way to use algorithm |
calculatedMIC = micAlg(data) |
self.assertEqual( calculatedMIC, knownMICResult ) |
runSingleTest( "0000000000000000", "" , "82925c1ca1d130b8" ) |
runSingleTest( "82925c1ca1d130b8", "M" , "434721ca40639b3f" ) |
runSingleTest( "434721ca40639b3f", "Mi" , "e8f9becae97e5d29" ) |
runSingleTest( "e8f9becae97e5d29", "Mic" , "90038fc6cf13c1db" ) |
runSingleTest( "90038fc6cf13c1db", "Mich" , "d55e100510128986" ) |
runSingleTest( "d55e100510128986", "Michael" , "0a942b124ecaa546" ) |
class Michael_Check_Corners(unittest.TestCase): |
def testShortKey(self): |
""" Check for assertion on short key """ |
pass |
def testLongKey(self): |
""" Check for assertion on too long key """ |
pass |
if __name__ == '__main__': |
unittest.main() # run all the tests |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/michael.py |
---|
0,0 → 1,69 |
""" crypto.keyedHash.michael |
A reference implementation of the Michael Message Integrety Chek (MIC) |
that is defined in IEEE 802.11 Task Group 'i' |
Michael is a 64-bit MIC, with a design strength of 20 bits. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from struct import pack, unpack |
from binascii_plus import * |
class Michael: |
""" The Michael keyed hash as defined in IEEE 802.11i D2.0 """ |
def __init__(self, key = None): |
self.name = 'Michael' |
self.blocksize = 1 # single octets can be hashed by padding to raw block size |
self.raw_block_size = 4 # operates on 32 bits or 4 byte blocks |
self.digest_size = 8 # MIC size of 64 bits or 8 bytes |
self.keySize = 8 # key size is 8 octets |
self.strength = 20 |
if key != None: |
self.setKey(key) |
def __del__(self): |
self.setKey(8*chr(0)) # feable attempt to clear keys on exit |
def setKey(self,key): |
""" setKey(key) ... key is binary string """ |
assert( len(key)== self.keySize), 'Key must be 8 octets' |
self._key = unpack('<II', key) # unpack into 2 32bit integers |
def __call__(self,data,more=None): |
return self.hash(data) |
def hash(self,data): |
""" Michael keyed hash """ |
fullBlocks, extraOctets = divmod(len(data),4) |
paddedData = data + chr(0x5a) + chr(0)*(7-extraOctets) |
l, r = self._key |
for i in range(fullBlocks+2): |
mSub_i = unpack('<I', paddedData[i*4:i*4+4])[0] # ith block as 32 bit integer |
l = l ^ mSub_i |
l, r = b(l,r) |
digest = pack('<II', l, r ) |
return digest |
def update(self,data): |
raise 'No update method supported for Michael keyed hash' |
def digest(self): |
raise 'No digest method supported for Michael keyed hash' |
def final(self,data): |
raise 'No final method supported for Michael keyed hash' |
def b(l,r): |
""" The 'b' block function for the IEEE 802.11i Michael Integrity Check """ |
r ^= (((l<<17) & 0xffffffffL)|((l>>15) & 0x1ffffL)) # r = r ^ (l <<< 17) |
l = (l+r) & 0xffffffffL # l = (l+r) mod 2**32 |
r ^= ((l & 0xff00ff00L)>>8)|((l & 0x00ff00ffL)<<8) # r = r ^ XSWAP(l) |
l = (l+r) & 0xffffffffL # l = (l+r) mod 2**32 |
r ^= (((l<<3) & 0xffffffffL) | ((l>>29)& 0x7)) # r = r ^ (l <<< 3) |
l = (l+r) & 0xffffffffL # l = (l+r) mod 2**32 |
r ^= (((l<<30L) & 0xffffffffL)|((l>>2) & 0x3fffffff)) # r = r ^ (l >>> 2) |
l = (l+r) & 0xffffffffL # l = (l+r) mod 2**32 |
return (l,r) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/pbkdf2_test.py |
---|
0,0 → 1,83 |
#!/usr/bin/env python |
""" crypto.keyedHash.pbkdf2_test |
Unit tests for crypto.keyedHash.pbkdf2 |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.keyedHash.pbkdf2 import pbkdf2, dot11PassPhraseToPSK |
import unittest |
from binascii_plus import a2b_p, b2a_p, b2a_hex,b2a_pter |
class PBDKDF22_KnowAnswerTests(unittest.TestCase): |
""" """ |
def pbkdf2KAT(self,testDescription, password, salt, iterations, keySize, ka): |
""" Know Answer Tests from IEEE """ |
knownAnswer = a2b_p(ka) # convert ascii 2 binary |
derivedKey = pbkdf2(password, salt, iterations, keySize) |
print "========== %s ==========" % testDescription |
print 'password = "%s"' % password |
print "salt/ssid = %s" % b2a_pter(salt, frnt=' ')[15:] |
print "iterations =", iterations |
print "keySize =", keySize |
print "derivedKey =", b2a_p(derivedKey, frnt=' ')[15:] |
#print "knownAnswer =", b2a_p(knownAnswer, frnt=' ')[15:] |
self.assertEqual(derivedKey, knownAnswer), "KAT Failed-> %s "% testDescription |
def testKnownAnswerRFC3211_1(self): |
description = "RFC3211 KAT Test 1" |
password = "password" |
salt = a2b_p("12 34 56 78 78 56 34 12") |
iterations = 5 |
keySize = 8 |
knownAnswer = "D1 DA A7 86 15 F2 87 E6" |
self.pbkdf2KAT(description, password, salt, iterations, keySize, knownAnswer) |
def testknownAnswerTGi_1(self): |
description = "pbkdf2 IEEE 802.11 TGi Test 1" |
password = "password" |
ssid = "IEEE" |
iterations = 4096 # IEEE 802.11 TGi spcification |
keySize = 32 # 32 bytes, 256 bits |
knownAnswer = """f4 2c 6f c5 2d f0 eb ef 9e bb 4b 90 b3 8a 5f 90 |
2e 83 fe 1b 13 5a 70 e2 3a ed 76 2e 97 10 a1 2e""" |
self.pbkdf2KAT(description, password, ssid, iterations, keySize, knownAnswer) |
def testknownAnswerTGi_2(self): |
description = "pbkdf2 IEEE 802.11 TGi Test 2" |
password = "ThisIsAPassword" |
ssid = "ThisIsASSID" |
iterations = 4096 # IEEE 802.11 TGi spcification |
keySize = 32 # 32 bytes, 256 bits |
knownAnswer = """0d c0 d6 eb 90 55 5e d6 41 97 56 b9 a1 5e c3 e3 |
20 9b 63 df 70 7d d5 08 d1 45 81 f8 98 27 21 af""" |
self.pbkdf2KAT(description, password, ssid, iterations, keySize, knownAnswer) |
def testknownAnswerTGi_3(self): |
description = "pbkdf2 IEEE 802.11 TGi Test 3" |
password = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
ssid = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ" |
iterations = 4096 # IEEE 802.11 TGi spcification |
keySize = 32 # 32 bytes, 256 bits |
knownAnswer = """be cb 93 86 6b b8 c3 83 2c b7 77 c2 f5 59 80 7c |
8c 59 af cb 6e ae 73 48 85 00 13 00 a9 81 cc 62""" |
self.pbkdf2KAT(description, password, ssid, iterations, keySize, knownAnswer) |
def testDot11PassPhraseToPSK(self): |
passPhrase = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
ssid = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ" |
knownAnswer = """be cb 93 86 6b b8 c3 83 2c b7 77 c2 f5 59 80 7c |
8c 59 af cb 6e ae 73 48 85 00 13 00 a9 81 cc 62""" |
key = dot11PassPhraseToPSK( passPhrase, ssid ) |
self.assertEqual( a2b_p(knownAnswer), key ) |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/pbkdf2.py |
---|
0,0 → 1,43 |
""" crypto.keyedHash.pbkdf2 |
Password Based Key Derivation Function 2 |
References: RFC2898, B. Kaliski, September 2000, PKCS #5 |
This function is used for IEEE 802.11/WPA passphrase to key hashing |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.keyedHash.hmacHash import HMAC_SHA1 |
from crypto.common import xor |
from math import ceil |
from struct import pack |
def pbkdf2(password, salt, iterations, keySize, PRF=HMAC_SHA1): |
""" Create key of size keySize from password and salt """ |
if len(password)>63: |
raise 'Password too long for pbkdf2' |
#if len(password)<8 : raise 'Password too short for pbkdf2' |
if (keySize > 10000): # spec says >4294967295L*digestSize |
raise 'keySize too long for PBKDF2' |
prf = PRF(key=password) # HMAC_SHA1 |
numBlocks = ceil(1.*keySize/prf.digest_size) # ceiling function |
key = '' |
for block in range(1,numBlocks+1): |
# Calculate F(P, salt, iterations, i) |
F = prf(salt+pack('>i',block)) # i is packed into 4 big-endian bytes |
U = prf(salt+pack('>i',block)) # i is packed into 4 big-endian bytes |
for count in range(2,iterations+1): |
U = prf(U) |
F = xor(F,U) |
key = key + F |
return key[:keySize] |
def dot11PassPhraseToPSK(passPhrase,ssid): |
""" The 802.11 TGi recommended pass-phrase-to-preshared-key mapping. |
This function simply uses pbkdf2 with interations=4096 and keySize=32 |
""" |
assert( 7<len(passPhrase)<64 ), 'Passphrase must be greater than 7 or less than 64 characters' |
return pbkdf2(passPhrase, ssid, iterations=4096, keySize=32) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/tkip_key_mixing_test.py |
---|
0,0 → 1,214 |
#! /usr/bin/env python |
""" crypto.keyedHash.tkip_key_mixing |
Tests for TKIP key mixing function |
Paul Lambert |
November 4, 2002 |
""" |
import unittest |
from crypto.keyedHash.tkip_key_mixing import TKIP_Mixer |
from struct import pack, unpack |
from binascii_plus import a2b_p, b2a_p, b2a_hex |
class TKIP_Mixer_Know_Answer_Tests(unittest.TestCase): |
""" Test TKIP Mixing using know values (aka test vectors) """ |
def testTKIP_Mixer_KnowValues(self): |
""" Test using vectors from IEEE 802.11TGi D2.4.2 """ |
for testCase in TKIP_MixerTestCases: |
description = testCase['testCase'] |
tk = a2b_p(testCase['TK']) |
ta = a2b_p(testCase['TA']) |
iv32 = a2b_p(testCase['IV32']) # last 4 octets of PN/IV field |
iv16 = a2b_p(testCase['IV16']) |
# NOTE - iv16 and iv32 are confused notation from early drafts |
# may not match notation in the future |
pnField = iv16[1]+iv16[0] + iv32[3]+iv32[2]+iv32[1]+iv32[0] |
pn = unpack('<Q', pnField + 2*chr(0) )[0] |
knownP1key = a2b_p(testCase['P1K']) |
knownRC4Key = a2b_p(testCase['RC4KEY']) |
print '===========================================================' |
print 'testCase:%s'%description |
print 'TK: %s'%b2a_p(tk)[9:] |
print 'TA: %s'%b2a_p(ta)[9:] |
print 'IV32: %s'%b2a_p(iv32)[9:] |
print 'IV16: %s'%b2a_p(iv16)[9:] |
keyId = 0 |
eh1 = chr((ord(pnField[1])|0x20)&0x7f) |
eh = pnField[0]+eh1+pnField[1]+chr((keyId<<6)|0x20)+pnField[2:] |
print 'EncHdr: %s (with KeyId=0)' % b2a_p(eh)[9:] |
print 'PNfield: %s' % b2a_p(pnField)[9:] |
print 'PNvalue: hex 0x%012X decimal %d' % (pn,pn) |
#print 'TSC: [0x%04x, 0x%04x, 0x%04x]' % (unpack('<H',pnField[0:2])[0],\ |
# unpack('<H',pnField[2:4])[0],unpack('<H',pnField[4:6])[0]) |
mixer = TKIP_Mixer(tk,ta) |
newRC4Key = mixer.newKey(pnField) |
p1kstring = ''.join([pack('>H',i) for i in mixer.phase1Key]) # a list of int's |
print 'TTAK: [0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x]' % (mixer.phase1Key[0], \ |
mixer.phase1Key[1],mixer.phase1Key[2],mixer.phase1Key[3],mixer.phase1Key[4]) |
print 'P1K: %s'%b2a_p(p1kstring)[9:] |
#print 'knownP1K:%s'%b2a_p(knownP1key)[9:] |
self.assertEqual( p1kstring, knownP1key),'Phase1 Keys dont match' |
print 'RC4Key: %s'% b2a_p(newRC4Key)[9:] |
#print 'knownRC4Key: %s'% b2a_p(knownRC4Key)[9:] |
self.assertEqual( newRC4Key, knownRC4Key ),'Final Key does not match' |
print '===========================================================' |
def xtestTKIP_Mixer_Sequence(self): |
""" Test TKIP Mixing using alternate calling approaches """ |
key = 16*chr(0) |
ta = 6*chr(0) |
tscOctets = 6*chr(0) |
keyMixer = TKIP_Mixer(key) |
keyMixer.setTA(ta) |
newKey = keyMixer.newKey(tscOctets) |
keyMixer = TKIP_Mixer() |
keyMixer.setTA(ta) |
keyMixer.setKey(key) |
newKey = keyMixer.newKey(tscOctets) |
keyMixer = TKIP_Mixer(transmitterAddress=ta) |
keyMixer.setKey(key) |
newKey = keyMixer.newKey(tscOctets) |
def xtestGunarExample1(self): |
""" Test example from Gunnar 2003-01-27 """ |
tk1 = a2b_p( "A9 90 6D C8 3E 78 92 3F 86 04 E9 9E F6 CD BA BB" ) |
ta = a2b_p( "50 30 F1 84 44 08" ) |
iv32 = a2b_p( "B5039776" ) # [transmitted as B5 03 97 76] |
iv16 = a2b_p( "E70C" ) |
p1k = a2b_p( "26D5 F1E1 2A59 2021 0E8E" ) |
rc4Key = a2b_p( "E7 67 0C 68 15 E0 2E 3F 1C 15 92 92 D4 E2 78 82" ) |
mixer = TKIP_Mixer(tk1,ta) |
newRC4Key = mixer.newKey(iv16+iv32) |
print "=== Gunnar Example ===" |
print "rc4Key = ", b2a_p( rc4Key ) |
print "newRC4Key = ", b2a_p( newRC4Key ) |
print "knownp1K = ", b2a_p( p1k ) |
print "calcp1K = %04X %04X %04x %04x %04x" % (mixer.phase1Key[0],mixer.phase1Key[1],mixer.phase1Key[2],mixer.phase1Key[3],mixer.phase1Key[4]) |
self.assertEqual(rc4Key,newRC4Key) |
def xtestTKIP_Mixer_TV_values(self): |
""" Test using vectors from IEEE 802.11TGi D2.4.2 """ |
for testCase in TKIP_TestVector: |
description = testCase['testCase'] |
tk = a2b_p(testCase['TK']) |
ta = a2b_p(testCase['TA']) |
pn = testCase['PN'] |
pnField = pack('<Q', pn)[:6] |
print '===========================================================' |
print 'testCase:%s'%description |
print 'TK: %s'%b2a_p(tk)[9:] |
print 'TA: %s'%b2a_p(ta)[9:] |
keyId = 0 |
eh1 = chr((ord(pnField[1])|0x20)&0x7f) |
eh = pnField[0]+eh1+pnField[1]+chr((keyId<<6)|0x20)+pnField[2:] |
print 'EncHdr: %s (with KeyId=0)' % b2a_p(eh)[9:] |
print 'PNfield: %s' % b2a_p(pnField)[9:] |
print 'PNvalue: 0x%06X' % pn |
print 'TSC?: [0x%04x, 0x%04x, 0x%04x]' % (unpack('<H',pnField[0:2])[0],\ |
unpack('<H',pnField[2:4])[0],unpack('<H',pnField[4:6])[0]) |
mixer = TKIP_Mixer(tk,ta) |
newRC4Key = mixer.newKey(pnField) |
p1kstring = ''.join([pack('>H',i) for i in mixer.phase1Key]) # a list of int's |
print 'TTAK: [0x%04x, 0x%04x, 0x%04x, 0x%04x, 0x%04x]' % (mixer.phase1Key[0], \ |
mixer.phase1Key[1],mixer.phase1Key[2],mixer.phase1Key[3],mixer.phase1Key[4]) |
print 'P1K: %s'%b2a_p(p1kstring)[9:] |
print 'RC4Key: %s' % b2a_p( newRC4Key )[9:] |
print 'kRC4Key: %s' % b2a_p( a2b_p(testCase['RC4KEY']))[9:] |
self.assertEqual(newRC4Key, a2b_p(testCase['RC4KEY'])) |
print '===========================================================' |
""" TKIP_Mixer Know Answer Tests from IEEE TGi """ |
TKIP_MixerTestCases = [ |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #1", |
'TK' : "00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F", |
'TA' : "10 22 33 44 55 66", |
'IV32' : "00000000", |
'IV16' : "0000", |
'P1K' : "3DD2 016E 76F4 8697 B2E8", |
'RC4KEY': "00 20 00 33 EA 8D 2F 60 CA 6D 13 74 23 4A 66 0B"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #2", |
'TK' : "00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F", |
'TA' : "10 22 33 44 55 66", |
'IV32' : "00000000", #[transmitted as 00 00 00 00] |
'IV16' : "0001", |
'P1K' : "3DD2 016E 76F4 8697 B2E8", |
'RC4KEY': "00 20 01 90 FF DC 31 43 89 A9 D9 D0 74 FD 20 AA"}, |
{'testCase':"IEEE TGi TKIP_Mixer Test vector #3", |
'TK' : "63 89 3B 25 08 40 B8 AE 0B D0 FA 7E 61 D2 78 3E", |
'TA' : "64 F2 EA ED DC 25", |
'IV32' : "20DCFD43", |
'IV16' : "FFFF", |
'P1K' : "7C67 49D7 9724 B5E9 B4F1", |
'RC4KEY': "FF 7F FF 93 81 0F C6 E5 8F 5D D3 26 25 15 44 CE"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #4", |
'TK' : "63 89 3B 25 08 40 B8 AE 0B D0 FA 7E 61 D2 78 3E", |
'TA' : "64 F2 EA ED DC 25", |
'IV32' : "20DCFD44", |
'IV16' : "0000", |
'P1K' : "5A5D 73A8 A859 2EC1 DC8B", |
'RC4KEY': "00 20 00 49 8C A4 71 FC FB FA A1 6E 36 10 F0 05"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #5", |
'TK' : "98 3A 16 EF 4F AC B3 51 AA 9E CC 27 1D 73 09 E2", |
'TA' : "50 9C 4B 17 27 D9", |
'IV32' : "F0A410FC", |
'IV16' : "058C", |
'P1K' : "F2DF EBB1 88D3 5923 A07C", |
'RC4KEY': "05 25 8C F4 D8 51 52 F4 D9 AF 1A 64 F1 D0 70 21"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #6", |
'TK' : "98 3A 16 EF 4F AC B3 51 AA 9E CC 27 1D 73 09 E2", |
'TA' : "50 9C 4B 17 27 D9", |
'IV32' : "F0A410FC", |
'IV16' : "058D", |
'P1K' : "F2DF EBB1 88D3 5923 A07C ", |
'RC4KEY': "05 25 8D 09 F8 15 43 B7 6A 59 6F C2 C6 73 8B 30"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #7", |
'TK' : "C8 AD C1 6A 8B 4D DA 3B 4D D5 B6 54 38 35 9B 05", |
'TA' : "94 5E 24 4E 4D 6E", |
'IV32' : "8B1573B7", |
'IV16' : "30F8", |
'P1K' : "EFF1 3F38 A364 60A9 76F3", |
'RC4KEY': "30 30 F8 65 0D A0 73 EA 61 4E A8 F4 74 EE 03 19"}, |
{'testCase': "IEEE TGi TKIP_Mixer Test vector #8", |
'TK' : "C8 AD C1 6A 8B 4D DA 3B 4D D5 B6 54 38 35 9B 05", |
'TA' : "94 5E 24 4E 4D 6E", |
'IV32' : "8B1573B7", |
'IV16' : "30F9", |
'P1K' : "EFF1 3F38 A364 60A9 76F3", |
'RC4KEY': "30 30 F9 31 55 CE 29 34 37 CC 76 71 27 16 AB 8F"} |
] |
TKIP_TestVector = [ |
{'testCase': "-------------TKIP Test Vector 1", |
'TK' : "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f", |
'TA' : "10 22 33 44 55 66", |
'PN' : 0x000000000000, |
'RC4KEY': "00 20 00 33 EA 8D 2F 60 CA 6D 13 74 23 4A 66 0B"}, |
{'testCase': "-------------IEEE TGi TKIP_Mixer Test vector #6 Mod to PN", |
'TK' : "98 3A 16 EF 4F AC B3 51 AA 9E CC 27 1D 73 09 E2", |
'TA' : "50 9C 4B 17 27 D9", |
'PN' : 0xF0A410FC058D, # [transmitted as: 8D 25 05 DefKeyID FC 10 A4 F0] |
'RC4KEY': "05 25 8D 09 F8 15 43 B7 6A 59 6F C2 C6 73 8B 30"}] |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/tkip_key_mixing.py |
---|
0,0 → 1,135 |
""" crypto.keyedHash.tkip_key_mixing.py |
TKIP Temporal Key Mixing Function reference implementation |
2002-11-04 |
""" |
from struct import pack, unpack |
from binascii_plus import * |
def S(word): |
""" TKIP S-Box non-linear substitution of a 16 bit word """ |
return (tkipSbox[0][word & 0x00FF] ^ tkipSbox[1][(word>>8) & 0x00FF]) |
""" tkipSbox consists of two 256 word arrays |
The tkip Sbox is formed from the AES/Rijndael Sbox |
""" |
from crypto.cipher.rijndael import Sbox |
tkipSbox = [range(256),range(256)] # arbitrary initialization |
for i in range(256): |
k = Sbox[i] # the rijndael S box (imported) |
if k & 0x80 : # calculate k*2 polynomial math |
k2 = (k<<1)^0x11b # reduce by rijndael modulas |
else: |
k2 = k<<1 |
k3 = k ^ k2 |
tkipSbox[0][i] = (k2<<8)^k3 |
tkipSbox[1][i] = (k3<<8)^k2 # second array is just byte swap of first array |
def rotR1(v16): |
""" circular right rotate on 16 bits """ |
return ((((v16) >> 1) & 0x7FFF) ^ (((v16) & 1) << 15)) |
class TKIP_Mixer: |
""" The TKIP_Mixer class generates dynamic keys for TKIP based on the |
TK (temporal key), TA and PN |
""" |
def __init__(self, tk1=None, transmitterAddress=None, pnBytes=6*chr(0)): |
""" The TKIP Mixer is initialized with tk1 and TA |
tk1 is a temporal key (16 octet string) |
transmitterAddress is a 6 octet MAC address |
pn is the packet number, here as an integer < (1<<8*6) |
""" |
self.tk = None |
self.ta = None |
self.setPnBytes(pnBytes) # sets self.pnBytes and validates input |
self.upper4SequenceOctets = self.pnBytes[-4:] |
if tk1 != None : |
self.setKey(tk1) |
if transmitterAddress != None : |
self.setTA(transmitterAddress) |
def setKey(self, key): |
""" Set the temporal key (tk1) for key mixing """ |
if len(key)!= 16: raise 'Wrong key size' |
# for readability of subroutines, make tk a list of 1 octet ints |
self.tk = [ord(byte) for byte in key] |
if self.ta != None : # reset phase1 value |
self.phase1Key = phase1KeyMixing( self.tk, self.ta, self.pn) |
def setTA(self, taBytes): |
""" Set the transmitter address """ |
if len(taBytes) != 6: raise 'Bad size for transmitterAddress' |
self.ta = [ord(byte) for byte in taBytes] |
if self.tk != None : # reset phase1 value |
self.phase1Key = phase1KeyMixing( self.tk, self.ta, self.pn ) |
def setPnBytes(self, pnBytes): |
""" Set the pnBytes from the packet number (int) """ |
assert( len(pnBytes)==6 ), 'pnBytes must be 6 octets' |
self.pnBytes = pnBytes |
self.pn = [ord(byte) for byte in pnBytes] # int list for readability |
def newKey(self, pnBytes): |
""" return a new 'mixed' key (16 octets) based on |
the pn in 6 octets, also know as TSC |
""" |
assert(self.ta != None), 'No TA' |
assert(self.tk != None), 'No TK' |
self.setPnBytes(pnBytes) |
if self.pnBytes[-4:] != self.upper4SequenceOctets: # check if upper bits change |
# calculate phase1 key only when upper bytes change |
self.upper4SequenceOctets = pnBytes[-4:] |
self.phase1Key = phase1KeyMixing( self.tk, self.ta, self.pn ) |
return phase2KeyMixing( self.tk, self.phase1Key, self.pn ) |
def phase1KeyMixing(tk,ta,pn): |
""" Create a p1k (5 integers) from TK, TA and upper 4 octets of sequence number pn""" |
p1k = [0,0,0,0,0] # array of 5 integers (each 2 octets) |
p1k[0] = pn[3]*256 + pn[2] |
p1k[1] = pn[5]*256 + pn[4] |
p1k[2] = ta[1]*256 + ta[0] # 2 octets of MAC as an integer (little-endian) |
p1k[3] = ta[3]*256 + ta[2] # 2 octets of MAC as an integer (little-endian) |
p1k[4] = ta[5]*256 + ta[4] # 2 octets of MAC as an integer (little-endian) |
for i in range(8): |
j = 2*(i&1) |
p1k[0] = ( p1k[0] + S( p1k[4]^(tk[j+ 1]*256 + tk[j+ 0]))) & 0xFFFF |
p1k[1] = ( p1k[1] + S( p1k[0]^(tk[j+ 5]*256 + tk[j+ 4]))) & 0xFFFF |
p1k[2] = ( p1k[2] + S( p1k[1]^(tk[j+ 9]*256 + tk[j+ 8]))) & 0xFFFF |
p1k[3] = ( p1k[3] + S( p1k[2]^(tk[j+13]*256 + tk[j+12]))) & 0xFFFF |
p1k[4] = ( p1k[4] + S( p1k[3]^(tk[j+ 1]*256 + tk[j])) + i ) & 0xFFFF |
return p1k |
def phase2KeyMixing(tk,p1k,pn): |
""" Create a 16 octet key from the phase1Key (p1k) |
and 2 octets of sequence counter """ |
ppk = [i for i in p1k] |
ppk.append( p1k[4] + pn[1]*256 + pn[0] ) # append value for ppk[5] |
# Bijective non-linear mixing of the 96 bits of ppk |
ppk[0] = (ppk[0] + S(ppk[5] ^ (tk[1]*256 + tk[0]) )) & 0xFFFF |
ppk[1] = (ppk[1] + S(ppk[0] ^ (tk[3]*256 + tk[2]) )) & 0xFFFF |
ppk[2] = (ppk[2] + S(ppk[1] ^ (tk[5]*256 + tk[4]) )) & 0xFFFF |
ppk[3] = (ppk[3] + S(ppk[2] ^ (tk[7]*256 + tk[6]) )) & 0xFFFF |
ppk[4] = (ppk[4] + S(ppk[3] ^ (tk[9]*256 + tk[8]) )) & 0xFFFF |
ppk[5] = (ppk[5] + S(ppk[4] ^ (tk[11]*256+ tk[10]) )) & 0xFFFF |
# Final sweep |
ppk[0] = (ppk[0] + rotR1(ppk[5] ^ (tk[13]*256+tk[12]))) & 0xFFFF |
ppk[1] = (ppk[1] + rotR1(ppk[0] ^ (tk[15]*256+tk[14]))) & 0xFFFF |
ppk[2] = (ppk[2] + rotR1(ppk[1])) & 0xFFFF |
ppk[3] = (ppk[3] + rotR1(ppk[2])) & 0xFFFF |
ppk[4] = (ppk[4] + rotR1(ppk[3])) & 0xFFFF |
ppk[5] = (ppk[5] + rotR1(ppk[4])) & 0xFFFF |
rc4Key = range(16) |
rc4Key[0] = pn[0] |
rc4Key[1] = (pn[0] | 0x20) & 0x7F |
rc4Key[2] = pn[1] |
rc4Key[3] = 0xFF &((ppk[5]^(tk[1]*256+tk[0]))>>1) |
for i in range(6): |
rc4Key[4+2*i] = ppk[i] & 0xff |
rc4Key[5+2*i] = (ppk[i]>>8) & 0xff |
wepSeed = ''.join([chr(i) for i in rc4Key]) # convert to string |
return wepSeed |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/hmacHash_test.py |
---|
0,0 → 1,121 |
#!/usr/bin/env python |
""" hmacHash_test.py |
Unit tests for hmacHash.py |
So far only runs test vectors from RFC2104 |
References |
[IETF] RFC 2104 "HMAC: Keyed-Hashing for Message Authentication" |
[IETF] RFC 2202 |
""" |
import unittest |
from crypto.keyedHash.hmacHash import HMAC, HMAC_SHA1 |
from crypto.hash.sha1Hash import SHA1 |
from crypto.hash.md5Hash import MD5 |
from binascii import a2b_hex, b2a_hex |
class HMAC_Simple_TestCases(unittest.TestCase): |
""" HMAC constructed ny hand """ |
def testSHA1_NullKey(self): |
""" HMAC_SHA1 testNullKey """ |
ki = ''.join([chr(0x36) for i in range(64)]) |
ko = ''.join([chr(0x5C) for i in range(64)]) |
h = SHA1() |
keyedHashAlg = HMAC(SHA1,key='') |
assert ( keyedHashAlg('') == h(ko+h(ki)) ), 'Null key, Null data test' |
assert ( keyedHashAlg('a') == h(ko+h(ki+'a')) ), 'Null key, a data test' |
assert ( keyedHashAlg('ab') == h(ko+h(ki+'ab')) ), 'Null key, ab data test' |
assert ( keyedHashAlg(50*'a') == h(ko+h(ki+50*'a')) ), 'Null key, 50*a data test' |
# try hmac in two steps of 25 chrs |
manual_hmac = h(ko+h(ki+50*'a')) |
keyedHashAlg.update(25*'a') |
keyedHashAlg.update(25*'a') |
hm = keyedHashAlg.digest() |
assert (hm == manual_hmac), 'HMAC as update, update and digest' |
def testMD5_NullKey(self): |
""" HMAC_MD5 testNullKey """ |
ki = ''.join([chr(0x36) for i in range(64)]) |
ko = ''.join([chr(0x5C) for i in range(64)]) |
h = MD5() |
keyedHashAlg = HMAC(MD5,key='') |
assert ( keyedHashAlg('') == h(ko+h(ki)) ), 'Null key, Null data test' |
assert ( keyedHashAlg('a') == h(ko+h(ki+'a')) ), 'Null key, a data test' |
assert ( keyedHashAlg('ab') == h(ko+h(ki+'ab')) ), 'Null key, ab data test' |
assert ( keyedHashAlg(50*'a') == h(ko+h(ki+50*'a')) ), 'Null key, 50*a data test' |
def testSHA1_oneByteKey(self): |
""" HMAC_SHA1 oneByteKey of 0xFF""" |
ki = ''.join([chr(0x36) for i in range(64)]) |
ko = ''.join([chr(0x5C) for i in range(64)]) |
ki = chr(ord(ki[0])^0xFF)+ ki[1:] |
ko = chr(ord(ko[0])^0xFF)+ ko[1:] |
h = SHA1() |
keyedHashAlg = HMAC(SHA1,chr(0xff)) |
assert ( keyedHashAlg('') == h(ko+h(ki)) ), 'one byte key, Null data test' |
assert ( keyedHashAlg('a') == h(ko+h(ki+'a')) ), 'one byte key, a data test' |
assert ( keyedHashAlg('ab') == h(ko+h(ki+'ab')) ), 'one byte key, ab data test' |
assert ( keyedHashAlg(50*'a') == h(ko+h(ki+50*'a')) ), 'one byte key, 50*a data test' |
class HMAC_RFC2104_TestCases(unittest.TestCase): |
""" HMAC tests from RFC2104 """ |
def testRFC2104_1(self): |
""" RFC2104 test 1 and various calling methods """ |
key = chr(0x0b)*20 |
keyedHashAlg = HMAC(SHA1,key) |
data = "Hi There" |
digest = a2b_hex('b617318655057264e28bc0b6fb378c8ef146be00') |
cd=keyedHashAlg(data) |
assert( cd == digest ), 'RFC2104 test 1 failed' |
hmac_sha1 = HMAC_SHA1(key) |
cd = hmac_sha1.hash(data) |
assert( cd == digest ), 'RFC2104 test 1 failed, HMAC_SHA1 called' |
cd = hmac_sha1.hash(data[:3],more=1) |
cd = hmac_sha1.hash(data[3:]) |
assert( cd == digest ), 'RFC2104 test 1 failed, HMAC_SHA1 called twice' |
hmac_sha1.update(data[:3]) |
hmac_sha1.update(data[3:]) |
cd = hmac_sha1.digest() |
print b2a_hex(cd) |
assert( cd == digest ), 'RFC2104 test 1 failed, HMAC_SHA1 called with update' |
hmac_sha1.reset(data) |
cd1 = hmac_sha1.hash(data) |
cd2 = hmac_sha1.hash(data) |
print b2a_hex(cd1) |
print b2a_hex(cd2) |
assert( cd1 == cd2 ), 'hash method should default to reseting state' |
def testRFC2104_2(self): |
""" RFC2104 test 2 """ |
keyedHashAlg = HMAC(SHA1) |
key = 'Jefe' |
keyedHashAlg.setKey(key) |
data = 'what do ya want for nothing?' |
digest = a2b_hex('effcdf6ae5eb2fa2d27416d5f184df9c259a7c79') |
cd = keyedHashAlg(data) |
assert( cd == digest ), 'RFC2104 test 2 failed' |
def testRFC2104_3(self): |
""" RFC2104 test 3 """ |
key = a2b_hex('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') |
keyedHashAlg = HMAC_SHA1(key) |
data = 50*chr(0xdd) |
digest = a2b_hex('125d7342b9ac11cd91a39af48aa17b4f63f175d3') |
cd = keyedHashAlg(data) |
assert( cd == digest ), 'RFC2104 test 3 failed' |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash/hmacHash.py |
---|
0,0 → 1,83 |
""" hmacHash.py |
Implemention of Request for Comments: 2104 |
HMAC: Keyed-Hashing for Message Authentication |
HMAC is a mechanism for message authentication |
using cryptographic hash functions. HMAC can be used with any |
iterative cryptographic hash function, e.g., MD5, SHA-1, in |
combination with a secret shared key. The cryptographic strength of |
HMAC depends on the properties of the underlying hash function. |
This implementation of HMAC uses a generic cryptographic 'hashFunction' |
(self.H). Hash functions must conform to the crypto.hash method |
conventions and are not directly compatible with the Python sha1 or md5 algorithms. |
[IETF] RFC 2104 "HMAC: Keyed-Hashing for Message Authentication" |
>>>key = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
>>>keyedHashAlg = HMAC(SHA1, key) |
>>>result = keyedHashAlg(data) |
""" |
from crypto.hash.hash import Hash |
class HMAC(Hash): |
""" To compute HMAC over the data `text' we perform |
H(K XOR opad, H(K XOR ipad, text)) |
""" |
def __init__(self, hashFunction, key = None): |
""" initialize HMAC with hashfunction and optionally the key """ |
# should check for right type of function |
self.H = hashFunction() # a new instance for inner hash |
self.H_outer = hashFunction() # separate outer context to allow intermediate digests |
self.B = self.H.raw_block_size # in bytes, note - hash block size typically 1 |
# and raw_block_size much larger |
# e.g. raw_block_size is 64 bytes for SHA1 and MD5 |
self.name = 'HMAC_'+self.H.name |
self.blocksize = 1 # single octets can be hashed by padding to raw block size |
self.raw_block_size = self.H.raw_block_size |
self.digest_size = self.H.digest_size |
if key != None: |
self.setKey(key) |
else: |
self.keyed = None |
def setKey(self,key): |
""" setKey(key) ... key is binary string """ |
if len(key) > self.B: # if key is too long then hash it |
key = self.H(key) # humm... this is odd, hash can be smaller than B |
else: # should raise error on short key, but breaks tests :-( |
key =key + (self.B-len(key)) * chr(0) |
self.k_xor_ipad = ''.join([chr(ord(bchar)^0x36) for bchar in key]) |
self.k_xor_opad = ''.join([chr(ord(bchar)^0x5C) for bchar in key]) |
self.keyed = 1 |
self.reset() |
def reset(self): |
self.H.reset() |
if self.keyed == None : |
raise 'no key defined' |
self.H.update(self.k_xor_ipad) # start inner hash with key xored with ipad |
# outer hash always called as one full pass (no updates) |
def update(self,data): |
if self.keyed == None : |
raise 'no key defined' |
self.H.update(data) |
def digest(self): |
if self.keyed == None : |
raise 'no key defined' |
return self.H_outer(self.k_xor_opad+self.H.digest()) |
from crypto.hash.sha1Hash import SHA1 |
class HMAC_SHA1(HMAC): |
""" Predefined HMAC built on SHA1 """ |
def __init__(self, key = None): |
""" optionally initialize with key """ |
HMAC.__init__(self,SHA1,key) |
from crypto.hash.md5Hash import MD5 |
class HMAC_MD5(HMAC): |
""" Predefined HMAC built on SHA1 """ |
def __init__(self, key = None): |
""" optionally initialize with key """ |
HMAC.__init__(self,MD5,key) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/keyedHash |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto/passwords/passwordfactory_test.py |
---|
0,0 → 1,32 |
#! /usr/bin/env python |
""" crypto.passwords.passwordfactory_test |
Test classes for password generation |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import unittest |
from crypto.passwords.passwordfactory import * |
class Password_Generation_Tests_Basic(unittest.TestCase): |
def testPasswordFactorySimple(self): |
""" Just print a few to see how they look for now """ |
print "==== PasswordFactorySimple ====" |
makePassword = PasswordFactorySimple("factorySpecificSeed",minSize=6, maxSize=10) |
print "minSize=%d maxSize=%d entropy=%d"% (makePassword.minSize,makePassword.maxSize,makePassword.entropy()) |
for i in range(10): |
print makePassword(chr(i)) |
def testPasswordFactoryReadable_01(self): |
""" Examples of PasswordFactoryReadable_01 """ |
print "======== PasswordFactoryReadable_01 ========" |
makePassword = PasswordFactoryReadable_01("factorySpecificSeed",minSize=6, maxSize=10) |
print "minSize=%d maxSize=%d entropy=%d"% (makePassword.minSize,makePassword.maxSize,makePassword.entropy()) |
for i in range(10): |
print makePassword(chr(i)) |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/passwords/passwordfactory.py |
---|
0,0 → 1,94 |
""" crypto.passwords.passwordfactory |
Python classes to create and recover passwords. Currently contains |
simple password generation. <need to merge the dictionary based pws> |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
August 14, 2002 |
""" |
from random import Random |
from sha import sha # the SHA1 algorithm for cryptographic hashing |
from math import log, ceil |
#from binascii_plus import b2a_p |
class PasswordFactory: |
""" Make passwords using pseudo random seeds. |
Also used to recover passwords by using same pwSeed. |
If the seed is not saved, the password can not be recovered!! |
""" |
def __init__(self, pwFactorySeed, minSize=10, maxSize=10 ): |
""" An abstract class to create passwords """ |
self._factorySeed = pwFactorySeed |
self.minSize = minSize |
self.maxSize = maxSize |
self.rand = Random( self._factorySeed ) |
def getPassword(self, pwSeed): |
raise "MUST be overloaded" |
def __call__(self, pwSeed): |
""" Create a new password as a 'call' """ |
return self.getPassword(pwSeed) |
def entropy(self): |
""" Calculate the security of the password generation as a power of 2 """ |
total = 0 |
for pwSize in range(self.minSize, self.maxSize+1): |
total = total + self.passwordsForSize(pwSize) |
return powof2( total ) |
def powof2(x): |
""" Convert x to a power of 2 """ |
return log(x)/log(2) |
class PasswordFactorySimple(PasswordFactory): |
""" This class implements a very secure but simple selection of numbers and letters. |
Some characters have been removed to prevent confusion between similar shapes |
The removed characters are: (O,0,o), (l,1,I) , (u,v),(U,V) |
""" |
def __init__(self, pwFactorySeed, minSize=10, maxSize=10 ): |
""" Initialize password generation """ |
PasswordFactory.__init__(self, pwFactorySeed, minSize, maxSize ) |
self.lettersReduced = 'abcdefghijkmnpqrstwxyzABCDEFGHJKLMNPQRSTWXYZ' |
self.digitsReduced = '23456789' |
self.specialCharacters = '#%*+$' |
def getPassword(self, pwSeed): |
""" Create a new password from pwSeed. """ |
self.rand.seed( pwSeed + 'getPassword' + self._factorySeed ) # reset prf sequence |
self.passwordSize = self.rand.randrange(self.minSize, self.maxSize+1) |
password = '' |
for i in range(self.passwordSize): |
password = password + self.rand.choice(self.lettersReduced+self.digitsReduced) |
return password |
def passwordsForSize(self,pwSize): |
return (len(self.lettersReduced)+len(self.digitsReduced))**pwSize |
consonants_01 = 'bcdfghjklmnpqrstvwxz' |
vowels_01 = 'aeiouy' |
class PasswordFactoryReadable_01(PasswordFactory): |
""" Readable passwords created by alternating consonate/vowel/consonate ... etc. |
""" |
def getPassword(self, pwSeed): |
""" Create a new password. Also used to recover passwords by using same pwSeed """ |
#self.rand.seed( 'getPassword'+self.__factorySeed+pwSeed ) # reset prf sequence |
self.passwordSize = self.rand.randrange(self.minSize, self.maxSize+1) |
password = '' |
for i in range(self.passwordSize): |
if i == 0 : |
password = password + self.rand.choice(consonants_01) |
else: |
if password[-1] in consonants_01 : |
password = password + self.rand.choice(vowels_01) |
else: |
password = password + self.rand.choice(consonants_01) |
return password |
def passwordsForSize(self,pwSize): |
return (len(vowels_01)**(pwSize/2))*(len(consonants_01)**ceil(pwSize/2)) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/passwords/__init__.py |
---|
0,0 → 1,7 |
""" CryptoPy - a pure python cryptographic libraries |
crypto.passwords package |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/passwords |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto/__init__.py |
---|
0,0 → 1,6 |
""" crypto |
CryptoPy - pure python cryptographic libraries |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/__init__.py |
---|
0,0 → 1,8 |
""" crypto.cipher |
cipher package of CryptoPy |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/ccm_test.py |
---|
0,0 → 1,589 |
#! /usr/bin/env python |
""" crypto.cipher.ccm_test |
Tests for CCM encryption, uses AES for base algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
July 24, 2002 |
""" |
import unittest |
from crypto.cipher.ccm import CCM |
from crypto.cipher.aes import AES |
from crypto.cipher.base import noPadding |
from crypto.common import xor |
from binascii_plus import a2b_p, b2a_p |
class CCM_AES128_TestVectors(unittest.TestCase): |
""" Test CCM with AES128 algorithm using know values """ |
def testKnowValues(self): |
""" Test using vectors from...""" |
def CCMtestVector(testCase,macSize,key,nonce,addAuth,pt,kct): |
""" CCM test vectors using AES algorithm """ |
print '%s %s %s'%('='*((54-len(testCase))/2),testCase,'='*((54-len(testCase))/2)) |
key,nonce,pt,addAuth,kct = a2b_p(key),a2b_p(nonce),a2b_p(pt),a2b_p(addAuth),a2b_p(kct) |
alg = CCM(AES(key,keySize=len(key)),macSize=macSize, nonceSize=len(nonce)) |
print 'alg=%s%skeySize=%3d blockSize=%3d M=%2d L=%2d'%(alg.baseCipher.name, |
' '*(10-len(alg.baseCipher.name)), |
alg.keySize, alg.blockSize, alg.M, alg.L) |
print 'key: %s'%b2a_p(key)[9:] |
print 'nonce: %s'%b2a_p(nonce)[9:] |
print 'addAuth:%s'%b2a_p(addAuth)[9:] |
print 'pt: %s'%b2a_p(pt)[9:] |
ct = alg.encrypt(pt,nonce=nonce,addAuthData=addAuth) |
print 'ct: %s'%b2a_p(ct)[9:] |
print 'kct: %s'%b2a_p(kct)[9:] |
print '========================================================' |
self.assertEqual( ct, kct ) |
dct = alg.decrypt(ct,nonce=nonce,addAuthData=addAuth) |
self.assertEqual( dct, pt ) |
CCMtestVector( |
testCase = "CCM Packet Vector #1 (from D.W.)", |
macSize = 8, |
key = "C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF", |
nonce = "00 00 00 03 02 01 00 A0 A1 A2 A3 A4 A5", |
addAuth = "00 01 02 03 04 05 06 07", |
pt = """ 08 09 0A 0B 0C 0D 0E 0F |
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E """, |
kct = """ 58 8C 97 9A 61 C6 63 D2 |
F0 66 D0 C2 C0 F9 89 80 6D 5F 6B 61 DA C3 84 17 |
E8 D1 2C FD F9 26 E0 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet, no A4 and no QC", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "00 00 02 2d 49 97 b4 06 05 04 03 02 01", |
addAuth = """08 41 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00""", |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """1e e5 2d 13 b1 be 3f 20 42 5b 3f de dd d4 55 2b |
98 71 d8 7b 65 8c fd 57 f7 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet, no A4 and no QC, retry", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "00 00 02 2d 49 97 b4 06 05 04 03 02 01", |
addAuth = """08 41 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 """, |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """1e e5 2d 13 b1 be 3f 20 42 5b 3f de dd d4 55 2b |
98 71 d8 7b 65 8c fd 57 f7 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet,A4 with no QC ", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "00 00 02 2d 49 97 b4 00 00 00 00 00 01", |
addAuth = """08 43 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 41 42 43 44 45 46 """, |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """3b e9 b2 46 c6 fc 7a 51 55 1e 14 c6 a8 85 28 bc |
06 56 67 c8 ef 30 b3 12 69 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet,A4 and QC ", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "04 00 02 2d 49 97 b4 00 00 00 00 00 01", |
addAuth = """88 43 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 41 42 43 44 45 46 04 00""", |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """46 72 f2 9e 41 54 e9 11 58 47 c2 a9 ae dc 10 0c |
e8 82 53 bd a2 04 ae 1d 33 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet,QC no A4", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "04 00 02 2d 49 97 b4 00 00 00 00 00 01", |
addAuth = """88 41 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 04 00 """, |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """46 72 f2 9e 41 54 e9 11 58 47 c2 a9 ae dc 10 0c |
e8 dc 91 98 bf 6a 52 c8 03 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet,QC no A4", |
macSize = 8, |
key = "c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf", |
nonce = "04 00 02 2d 49 97 b4 00 00 00 00 00 01", |
addAuth = """88 41 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 04 00 """, |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """46 72 f2 9e 41 54 e9 11 58 47 c2 a9 ae dc 10 0c |
e8 dc 91 98 bf 6a 52 c8 03 """) |
CCMtestVector( |
testCase = "IEEE 802.11 Data Packet, no A4, No QC, WEP preset", |
macSize = 8, |
key = "00 01 02 03 04 05 06 07 08 c9 0a 0b 0c 0d 0e 0f", |
nonce = "00 00 02 2d 49 97 b4 06 05 04 03 02 01", |
addAuth = """08 41 00 06 25 a7 c4 36 00 02 2d 49 97 b4 00 06 |
25 a7 c4 36 e0 00 """, |
pt = """aa aa 03 00 00 00 88 8e 01 01 00 00 00 00 00 00 |
00""", |
kct = """de bf 2c c9 94 e6 5a 70 2c ee e3 19 84 21 39 c3 |
f2 9a 2e 12 63 11 74 5f 3c """) |
CCMtestVector( |
testCase = "KAT# 1 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "04 e5 1c f0 20 2d 4c 59 0f d2 e1 28 a5 7c 50 30", |
nonce = "f1 84 44 08 ab ae a5 b8 fc ba 33 2e 78", |
addAuth = """ """, |
pt = """ """, |
kct = """6f b0 8f 1f a0 ec e1 f0 """) |
CCMtestVector( |
testCase = "KAT# 2 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "c4 85 98 ee 34 6c 62 1e c9 7c 1f 67 ce 37 11 85", |
nonce = "51 4a 8a 19 f2 bd d5 2f 3a b5 03 97 76", |
addAuth = """0c """, |
pt = """e7 """, |
kct = """13 6d 5e af 39 d5 d3 6f 27 """) |
CCMtestVector( |
testCase = "KAT# 3 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "f8 ba 1a 55 d0 2f 85 ae 96 7b b6 2f b6 cd a8 eb", |
nonce = "7e 78 a0 50 68 dd e8 3a 11 40 85 a2 ea", |
addAuth = """10 """, |
pt = """ """, |
kct = """b8 01 6f 2e fc 56 b2 31 """) |
CCMtestVector( |
testCase = "KAT# 4 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "0c 84 68 50 ee c1 76 2c 88 de af 2e e9 f4 6a 07", |
nonce = "cc ee 9b fb 82 2d 5d 12 fe 9e 30 8f 7a", |
addAuth = """ """, |
pt = """05 """, |
kct = """7d d0 b5 77 e9 0c 1c de b5 """) |
CCMtestVector( |
testCase = "KAT# 5 - AES_CCM 128 M= 4 L= 2", |
macSize = 4, |
key = "77 a5 59 75 29 27 20 97 a6 03 d5 91 31 f3 cb ba", |
nonce = "97 ea 83 a0 63 4b 5e d7 62 7e b9 df 22", |
addAuth = """17 fc 89 c1 fc 0d 63 98 c3 d9 57 7d f7 63 c8 b6 |
a8 8a df 36 91 """, |
pt = """5e 05 74 03 42 de 19 41 """, |
kct = """0c 5f 95 1b 27 29 6a 16 a8 2a 32 d5 """) |
CCMtestVector( |
testCase = "KAT# 6 - AES_CCM 128 M= 6 L= 2", |
macSize = 6, |
key = "8b ca 94 dd 82 f4 ea 74 bf a2 1f 09 1e 67 85 40", |
nonce = "cf b7 a6 2e 88 01 3b d6 d3 af fc c1 91", |
addAuth = """ca 30 a0 e7 50 07 97 22 71 """, |
pt = """04 1e bc 2f dc a0 f3 a5 ae 2c 1b d0 36 83 1c 95 |
49 6c 5f 4d bf 3d 55 9e 72 de 80 2a 18 """, |
kct = """ad 81 34 7b 1f 61 6e b5 34 c0 e9 a0 7b ed 92 57 |
11 cf 4a 4b 2c 3f 9b 01 25 7a 9a e2 76 e6 c1 83 |
f0 2f ad """) |
CCMtestVector( |
testCase = "KAT# 7 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "df 11 db 8e f8 22 73 47 01 59 14 0d d6 46 a2 2f", |
nonce = "c5 d6 81 5d 5a 6d 72 40 ee a5 8c 89 a2", |
addAuth = """70 7f cf 24 b3 2d 38 33 0c f6 70 a5 5a 0f e3 4f |
ad 2b 1c 29 """, |
pt = """eb c9 6c 76 02 """, |
kct = """55 17 b7 c5 78 27 3c dd 6a 15 43 9c a0 """) |
CCMtestVector( |
testCase = "KAT# 8 - AES_CCM 128 M=10 L= 2", |
macSize = 10, |
key = "eb d8 72 fb c3 f3 a0 74 89 8f 8b 2f bb 90 96 66", |
nonce = "d6 c6 38 d6 82 45 de c6 9a 74 80 f3 51", |
addAuth = """c9 6b e2 76 fb e6 c1 27 f2 8a 8c 8e 58 32 f8 b3 |
41 a2 19 a5 74 """, |
pt = """94 6b """, |
kct = """55 cd b0 f0 72 a0 b4 31 37 85 31 55 """) |
CCMtestVector( |
testCase = "KAT# 9 - AES_CCM 128 M=12 L= 2", |
macSize = 12, |
key = "3b b2 5e fd de ff 30 12 2f df d0 66 9d a7 ff e0", |
nonce = "3c 0e 37 28 96 9b 95 4f 26 3a 80 18 a9", |
addAuth = """f9 a6 """, |
pt = """ef 70 a8 b0 51 46 24 81 92 2e 93 fa 94 71 ac 65 |
77 3f 5a f2 84 30 fd ab bf f9 43 b9 """, |
kct = """aa 27 4b a3 37 2e f5 d6 cc ae fe 16 8f de 14 63 |
37 83 e7 d3 0b cc 4a 8f dc f0 18 c9 c6 79 e8 b9 |
10 95 43 3b bf f2 89 f0 """) |
CCMtestVector( |
testCase = "KAT# 10 - AES_CCM 128 M=14 L= 2", |
macSize = 14, |
key = "98 c7 fe 73 71 62 4c 9f fd 3c b3 d9 fb 77 6a f7", |
nonce = "1e ea 4e 1f 58 80 4b 97 17 23 0a d0 61", |
addAuth = """c2 fc a1 """, |
pt = """46 41 5c 6b 81 ec a4 89 89 ab fd a2 2d 3a 0b fc |
9c c1 fc 07 93 63 """, |
kct = """64 e2 0b 0c ef d8 2a 00 27 ed 0f f2 90 1b d3 b7 |
b0 67 6c 1c 4a 4c b7 5c 40 0f db 9c 87 9e 99 c5 |
77 1a 9a 52 """) |
CCMtestVector( |
testCase = "KAT# 11 - AES_CCM 128 M=16 L= 2", |
macSize = 16, |
key = "eb 1d 3c 1d b4 a4 c5 e2 66 8d 9b 50 f4 fd 56 f6", |
nonce = "ef ec 95 20 16 91 83 57 0c 4c cd ee a0", |
addAuth = """48 1b db 34 98 0e 03 81 24 a1 db 1a 89 2b ec 36 |
6a ce 5e ec 40 73 e7 23 98 be ca 86 f4 b3 """, |
pt = """50 a4 20 b9 3c ef f4 e7 62 """, |
kct = """6f 55 64 96 29 95 40 49 34 84 5e 64 dc 68 3c 5f |
40 dc ec 0a 30 17 e5 df ee """) |
CCMtestVector( |
testCase = "KAT# 12 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "0c fd f2 47 24 c5 8e b8 35 66 53 39 e8 1c 37 c0", |
nonce = "95 68 e2 e4 55 2d 5f 72 bb 70 ca 3f 3a", |
addAuth = """5e 55 6e ac 1b f5 4b d5 4e db 23 21 75 43 03 02 |
4c 71 b0 ce fd """, |
pt = """ae 60 c4 8b a9 b5 f8 2c 2f eb 07 e2 9d 82 6b 95 |
a7 64 """, |
kct = """42 eb e1 dc be 9b 60 7b f8 d4 cb 21 6a 7b 5a 57 |
c7 1e 55 97 96 a1 a6 bf 33 2a """) |
CCMtestVector( |
testCase = "KAT# 13 - AES_CCM 128 M= 8 L= 3", |
macSize = 8, |
key = "cc dd 57 cb 5c 0e 5f cd 88 5e 9a 42 39 e9 b9 ca", |
nonce = "d6 0d 64 37 59 79 c2 fc 9a c5 f0 99", |
addAuth = """7d 86 5c 44 c0 6f 28 a6 46 b3 80 49 4b 50 """, |
pt = """f6 85 9a fb 79 8b 8a 4b a4 ad 6d 31 99 85 bc 42 |
9e 8f 0a fa """, |
kct = """fd f2 3f 1f c5 27 9e ec 06 b5 29 e7 69 96 da 50 |
f9 b3 16 5b 6b 27 2c c7 df 89 06 05 """) |
CCMtestVector( |
testCase = "KAT# 14 - AES_CCM 128 M= 8 L= 4", |
macSize = 8, |
key = "46 75 97 1a 48 d0 8c 5b c3 53 cb cd ba 82 e9 34", |
nonce = "37 b3 25 a9 8f 9c 1b d9 c9 3c f3", |
addAuth = """15 2d 76 """, |
pt = """83 ab 9d 98 """, |
kct = """db 12 ef 44 3e f0 a6 aa d4 2f 35 28 """) |
CCMtestVector( |
testCase = "KAT# 15 - AES_CCM 128 M= 8 L= 5", |
macSize = 8, |
key = "32 c6 33 dd 03 9e 4d 75 20 c7 40 ec 29 fa 75 9b", |
nonce = "53 f8 69 fe 27 9a f0 f9 f8 a6", |
addAuth = """2e e1 a3 04 cf 1d 3e 75 fe """, |
pt = """54 16 e3 52 bf d2 70 3d 24 2f 66 c1 ef 48 9e 49 |
bc 3c fe 3f ce 38 95 82 0e 87 """, |
kct = """11 62 22 64 5e 6c a0 d1 c9 95 3a 1b 00 04 59 4e |
3c 90 f0 56 c6 04 f5 37 7e 5a d3 c0 50 0b 33 3a |
4c 19 """) |
CCMtestVector( |
testCase = "KAT# 16 - AES_CCM 128 M= 8 L= 6", |
macSize = 8, |
key = "91 f2 47 2d 7a 12 1c 9c dd 4b 6c 90 80 67 5a 10", |
nonce = "20 aa 00 eb 1f ed cb c9 33", |
addAuth = """9d 52 4a e1 96 d8 ec 48 62 02 be 5c 45 45 67 2a """, |
pt = """e8 a8 29 8c 0b aa 91 90 34 7c eb 9a ab ff d8 3d |
48 86 e5 c2 53 e2 """, |
kct = """86 09 aa 4b 03 c5 67 99 a9 84 4d 4d 62 75 c0 bd |
09 43 f2 69 12 46 88 fa fd ae 6e 06 6a 73 """) |
CCMtestVector( |
testCase = "KAT# 17 - AES_CCM 128 M= 8 L= 7", |
macSize = 8, |
key = "e3 14 d7 0f 1f 9e 85 e7 d2 d6 59 6e 55 d4 f9 a8", |
nonce = "12 e4 a2 8a f7 f3 71 4d", |
addAuth = """f6 62 2e 59 32 f2 18 45 09 23 76 d4 a0 62 a1 5e |
4f aa 28 8b 84 35 bc d8 ac 5a 7e c4 44 e8 """, |
pt = """4b """, |
kct = """5a be a2 22 f4 13 94 50 27 """) |
CCMtestVector( |
testCase = "KAT# 18 - AES_CCM 128 M= 8 L= 8", |
macSize = 8, |
key = "50 53 8b 62 e8 14 02 c2 ee 11 8a 66 62 b4 77 07", |
nonce = "7e d7 94 53 e4 a1 8d", |
addAuth = """48 d5 42 89 16 be 95 29 35 37 b9 aa 08 """, |
pt = """60 43 8c c6 48 4d 6e d0 50 b0 1e 77 fd 8e 43 19 |
81 a2 33 6d 02 f8 cb 84 """, |
kct = """bf fa bd 07 33 ed 9f 6c 90 7c b6 32 0a bf 32 7e |
c3 a5 78 85 5b f2 e2 56 72 c9 3c cc a4 a3 f2 9c """) |
CCMtestVector( |
testCase = "KAT# 19 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "98 8a bd c2 3a 65 bb 5d cd 99 f9 42 67 d3 0b 45", |
nonce = "c7 8e 7d fa 21 24 5a 43 90 8f 80 b3 8b", |
addAuth = """ """, |
pt = """0a 33 d2 12 79 8c f1 32 c5 51 db fd 53 27 7e b4 |
c9 e5 cc 07 e3 c2 e8 1c 58 2e 7d a6 c4 b1 34 5a |
74 """, |
kct = """f3 1f 8e fa 43 b4 cf 36 1d 20 34 62 05 b0 cc fd |
c1 81 79 17 b4 99 c5 84 3e b6 6e c0 b9 6d 27 e5 |
85 9a a9 bd ae a8 00 d1 7a """) |
CCMtestVector( |
testCase = "KAT# 20 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "e0 d7 27 f8 10 5b 00 6d 88 22 96 89 5f 74 dc 0c", |
nonce = "e5 99 95 c7 ed 2a b0 35 7b 0e 7b fd b6", |
addAuth = """c5 """, |
pt = """d0 44 95 d5 24 bb a6 5e 87 f8 5b 00 d0 48 56 4f |
a2 04 df a9 9d 79 94 55 32 67 23 cd 7c 2f 7a 36 |
95 """, |
kct = """ee b1 9c c2 e1 a3 71 3a a0 eb 2f da 57 f3 d3 d8 |
e2 c8 2d e1 2f 39 49 5a ce 8e b0 5d 14 07 9a a2 |
04 e6 29 62 3b a3 a3 0b ea """) |
CCMtestVector( |
testCase = "KAT# 21 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "df 19 a2 25 47 cd 66 d8 75 16 de 8a 18 22 54 26", |
nonce = "c0 8c 9b 85 9a a1 86 50 89 59 2f 7c be", |
addAuth = """9e 27 """, |
pt = """16 5c 95 80 5b d4 ac a2 9d 4e 62 a2 84 31 1b 6f |
5f a9 b8 2d 27 23 88 f2 92 2d 9b 7e """, |
kct = """62 b3 51 dd bc e7 cd f5 80 e8 c8 fd 2b 79 e4 8e |
42 31 11 32 52 b8 6e 7e bd 7a 73 3f 0c 85 7f a6 |
5d 2e 14 4a """) |
CCMtestVector( |
testCase = "KAT# 22 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "b1 20 0c 9a 41 66 58 4d 08 1b 9d ee 30 9b 9e e7", |
nonce = "a7 89 88 53 2f 4c 75 0b 02 63 3f 1b d9", |
addAuth = """86 52 43 02 de 79 1d 5c 3e 3b 3f 93 b5 2c 75 """, |
pt = """92 0a a8 c6 d5 4e a8 d7 e6 c3 fb 9d 6d 9c 9f 8d |
bb 1c ab bb 41 59 d8 93 80 f5 53 40 89 """, |
kct = """2f 8c ac 1a b1 20 0c 0e 41 6c 95 91 b2 6e 89 07 |
75 9b 57 5a eb 90 76 14 f4 fe 64 bb 3c 45 ad 77 |
38 90 37 33 97 """) |
CCMtestVector( |
testCase = "KAT# 23 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "c1 56 c1 1d 02 ff 67 d7 72 bd d2 1f 33 59 12 be", |
nonce = "5b 1f e2 48 8e 6c fe 20 23 77 61 d9 d0", |
addAuth = """d9 da 29 4c d5 20 30 26 2e a0 10 25 e8 e4 20 1e """, |
pt = """ """, |
kct = """f1 22 23 f0 46 71 13 f1 """) |
CCMtestVector( |
testCase = "KAT# 24 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "1b 13 51 12 e0 2e 26 14 5a e5 55 0d 79 b1 5a fc", |
nonce = "70 00 f2 88 ef 21 d3 28 61 7a de da 5b", |
addAuth = """6b 27 87 7e cd 15 af 07 ea f3 06 4d c1 35 cd b9 |
64 """, |
pt = """2e 01 11 9a a1 e1 b6 95 cd 74 22 96 84 8d 0e f2 |
40 ba 3d 29 56 75 7b 43 """, |
kct = """b1 0d 5b a6 c6 9e bf 40 52 cc bf 5e 51 65 8c 95 |
3c 99 f3 9d 18 d8 34 f4 ed 7b b4 c9 7e 3a 6b 39 """) |
CCMtestVector( |
testCase = "KAT# 25 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "99 1c d1 06 71 c6 58 db fd 3e 86 b3 c2 51 ac 0f", |
nonce = "d8 ea cc b4 56 b7 ff 99 98 b4 59 bc b3", |
addAuth = """ed b9 79 05 b3 09 98 54 8f e1 05 d2 26 16 86 2d |
1d 2d dc c7 33 cd 71 fe b5 a7 53 ae ba eb b1 7d """, |
pt = """37 e6 72 ae 6a da 05 dd 88 9d """, |
kct = """db f0 80 9a 74 d3 c6 62 0b f4 c5 1c 91 6c 93 16 |
01 f2 """) |
CCMtestVector( |
testCase = "KAT# 26 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "5f c7 0b 97 11 75 ff bc 69 da e3 e8 bf 08 73 bd", |
nonce = "f8 bb 2c a4 db a6 59 98 d4 2a 28 56 c3", |
addAuth = """71 04 9a 00 2a 1b e2 5c 7b f2 85 8c 31 18 0d ce |
94 f1 8d 20 79 82 """, |
pt = """ """, |
kct = """0d 25 b4 0f 5a be 36 19 """) |
CCMtestVector( |
testCase = "KAT# 27 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "17 40 8b dc 9c 5e 13 94 29 35 dd 2e 7d bd 54 37", |
nonce = "14 7a 47 0d ff ab 27 4c ab a4 38 5d f2", |
addAuth = """ """, |
pt = """df """, |
kct = """dc 49 af 7a 17 61 ce e6 c7 """) |
CCMtestVector( |
testCase = "KAT# 28 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "96 c6 9e f0 99 fc e0 3d 12 fe 0d a0 67 71 6f 0c", |
nonce = "ed 65 37 be f8 08 79 83 78 53 5d 4a 4c", |
addAuth = """3a f1 fa c1 76 5a 19 29 cf 5c 5f 21 94 ac eb 3a |
6d 7e 07 ca 76 fd d7 2b 6f e4 51 f8 c9 b4 b4 c4 """, |
pt = """e0 35 """, |
kct = """d9 b4 34 ee cd 33 3a e8 6c 24 """) |
CCMtestVector( |
testCase = "KAT# 29 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "ca f7 8d 13 4b e2 09 8f 32 62 af 07 32 7c 9f c0", |
nonce = "88 f1 c3 89 76 70 b9 22 72 a1 ae 92 13", |
addAuth = """38 fa 4b bd ca 0b 8f bb 94 1d 23 a1 84 40 """, |
pt = """e2 16 5a """, |
kct = """36 59 64 75 bc a9 1f 8e a1 54 81 """) |
CCMtestVector( |
testCase = "KAT# 30 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "ea 76 e2 95 20 f6 cd 6a 7e 43 b1 5f e4 71 df 47", |
nonce = "68 1f 2c 11 7d 97 10 34 76 3c 3e c5 9b", |
addAuth = """d2 30 20 84 10 67 54 a5 82 32 75 """, |
pt = """4a 27 7e 05 """, |
kct = """88 cc 3d 7d 34 da 0b 2e ff 30 97 e5 """) |
CCMtestVector( |
testCase = "KAT# 31 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "f6 84 fd e0 d5 87 c9 24 66 e0 d3 d6 d6 05 7c ed", |
nonce = "aa 81 33 0b c8 f8 24 82 df 99 d7 57 6b", |
addAuth = """47 99 ee 5f 0c 60 6a 8a d5 1c 04 16 ce 19 63 """, |
pt = """49 7d 2b 08 01 """, |
kct = """c0 2c e4 d5 88 3e e5 36 4a d9 fc c0 ac """) |
CCMtestVector( |
testCase = "KAT# 32 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "75 29 fb 1c db d2 72 2f 14 89 d7 c8 48 29 72 d7", |
nonce = "17 35 b5 aa d2 90 97 28 2f e3 fa 11 37", |
addAuth = """7d 13 21 e4 5c 3c 79 a4 29 78 4c 5c 1f 8c c0 """, |
pt = """d8 94 34 c2 73 b7 """, |
kct = """09 b0 a7 5e 52 66 8c d3 6d 29 97 59 c7 ea """) |
CCMtestVector( |
testCase = "KAT# 33 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "63 9d ac 12 4a 9a 47 03 9c 2b 63 8f 66 48 0b b8", |
nonce = "2f 2d 59 97 8d 0e ef 44 3e 5a ce 50 9b", |
addAuth = """c4 35 4b f6 ca f3 48 4e 6f 2a f3 6f ed ff 1f dc |
0b """, |
pt = """0b 22 97 03 7c 02 9e """, |
kct = """b5 c3 f8 0f 56 b1 9d d8 2c f0 f0 cf dd 7a 22 """) |
CCMtestVector( |
testCase = "KAT# 34 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "25 69 2d 57 e1 de d4 f5 08 34 40 98 c8 fc 70 1e", |
nonce = "a2 db d6 96 04 25 2c 2f d6 3e e7 a9 6b", |
addAuth = """d4 fd 14 f8 18 57 """, |
pt = """69 12 08 9c 94 60 c1 25 """, |
kct = """81 58 32 b4 97 2d 35 e8 0e 9c 10 c0 e0 6b 58 64 """) |
CCMtestVector( |
testCase = "KAT# 35 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "f6 92 a4 95 3e b4 97 c1 cc f1 a1 47 ad 12 59 f1", |
nonce = "e6 cd 88 fd 72 96 90 68 02 24 9d 5c b8", |
addAuth = """db 1b f5 a4 56 93 74 fd cf 34 eb """, |
pt = """fc dc 43 ed 68 17 37 ac 8d """, |
kct = """ba d6 85 af 4c 35 15 03 26 6f 97 69 4f 54 62 7f |
ed """) |
CCMtestVector( |
testCase = "KAT# 36 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "94 c6 17 0a 9b d0 c6 dc e5 66 7b be 9f e9 4e 5d", |
nonce = "b2 bb 6a aa c5 88 ce fb 4e fc c6 2b 61", |
addAuth = """a4 d9 a5 be 4f ee d2 bc eb 0d 9e 59 75 19 72 98 |
f3 be 45 6a 23 ef a9 c7 ed 56 14 """, |
pt = """aa d9 7b 99 47 22 07 9a 25 30 """, |
kct = """11 d7 a8 6e 94 9c 06 d2 48 15 60 2d ca a1 a1 8c |
be 48 """) |
CCMtestVector( |
testCase = "KAT# 37 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "13 28 d8 ea cf 6f 77 da 12 24 72 5b bb 07 43 d2", |
nonce = "21 43 19 d3 f8 67 20 f6 53 3a f5 f1 6c", |
addAuth = """60 1b 7c aa d5 54 1e 9a 7e ea fa """, |
pt = """d5 87 65 96 de 32 a1 e7 85 83 78 """, |
kct = """22 1c f0 92 45 71 38 e7 00 21 af 45 d3 31 28 01 |
69 3a 47 """) |
CCMtestVector( |
testCase = "KAT# 38 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "54 7b 02 1b ef 8c 1c 0f f1 04 ba 1d bf 0e 2c 0b", |
nonce = "f7 a8 59 5b d6 5d 23 e9 cb 17 b1 e1 92", |
addAuth = """ """, |
pt = """64 8c ec 53 c4 79 fe 41 53 17 ba 8e """, |
kct = """6f 52 93 85 89 87 15 21 29 d5 dd 85 0d dc 3d 58 |
60 fb 8a b2 """) |
CCMtestVector( |
testCase = "KAT# 39 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "31 4b 5f 29 01 80 0f 0a 6a 4f ad 8d d1 9b b1 13", |
nonce = "2a a9 31 4e c4 ef 5b 71 b5 3b 2c da 17", |
addAuth = """92 52 e0 44 24 d5 29 f0 00 96 6b a8 87 90 0c 07 |
eb c1 a8 51 02 f0 d0 07 80 20 3d """, |
pt = """40 8d 60 be f0 3c b1 8a 1f 4f 40 5d 9f """, |
kct = """99 a7 5d db a3 72 9f c7 41 22 ba e0 25 4b 7f ba |
05 a1 4b cf 09 """) |
CCMtestVector( |
testCase = "KAT# 40 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "b7 32 3f 57 b7 e5 3d b7 4e bd e0 88 d2 d3 e1 61", |
nonce = "4e 78 a2 6b 45 93 d0 96 9c 8f 9f 63 c1", |
addAuth = """f6 fb 75 4a eb 40 7a 91 6a d8 2c 27 13 01 97 9f |
85 ff 01 80 8e 51 67 29 15 e5 72 """, |
pt = """46 64 14 a0 82 4e 25 9d ef 30 9d 9a 1b 54 """, |
kct = """f9 a1 27 c7 67 4b 39 ea 50 30 c3 eb 45 b1 ff b8 |
b4 5c 86 72 b2 7b """) |
CCMtestVector( |
testCase = "KAT# 41 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "48 28 39 bc 82 e9 4a d1 55 8f b6 79 0b 3e 36 6f", |
nonce = "b8 ed 08 17 e6 f6 df 07 5e f7 87 d2 ef", |
addAuth = """3c 16 89 0f 70 b2 1c ab ba 2b a7 84 35 b0 66 2a |
b6 1c db 78 42 """, |
pt = """52 13 fe 0f 90 8c c5 69 a1 6e 48 c8 c5 d3 92 """, |
kct = """c0 64 0e a7 0a d5 46 f7 3e 7e 44 5f 96 78 f5 57 |
36 22 d9 77 74 93 a4 """) |
CCMtestVector( |
testCase = "KAT# 42 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "73 62 b6 9c e4 dd 9f 02 75 36 9a 60 24 e5 96 69", |
nonce = "c0 a7 67 e3 ba 5c 5d 86 10 6e eb f4 9f", |
addAuth = """2e 37 47 00 22 cc 59 91 a4 a4 13 a0 d8 5a c1 ef |
eb 9a 4a """, |
pt = """16 6a 40 a6 70 60 b2 a6 58 af 1a d5 73 8f 7d 12 """, |
kct = """90 42 65 e5 35 01 bf dd 93 71 87 bd 4c 6c 29 bf |
85 b1 c2 7a 92 70 bb c1 """) |
CCMtestVector( |
testCase = "KAT# 43 - AES_CCM 128 M= 8 L= 2", |
macSize = 8, |
key = "63 de fa 62 5f 45 09 34 78 8f b4 1b 32 69 cc 94", |
nonce = "7f 9d 39 9d 87 26 be f8 10 71 92 90 30", |
addAuth = """ee 42 eb """, |
pt = """0f 3c 27 63 46 fe 7a 72 ad 46 6b 39 a5 62 d5 52 |
5a """, |
kct = """68 72 5d 02 05 49 78 34 6a 7b f5 4e df c6 e6 d8 |
e6 6c 5c 7e e0 3d f8 0a b0 """) |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/ccm.py |
---|
0,0 → 1,242 |
""" crypto.cipher.ccm |
CCM block cipher mode |
The CCM class can wrap any BlockCipher to create a 'CCM' mode |
that provides encryption with a strong integrity check. The |
integrity check can optionally include unencrypted 'addAuthData'. |
CCM requires a nonce that MUST NEVER repeat for a given key. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.base import BlockCipherWithIntegrity, noPadding |
from crypto.common import xor |
from struct import unpack, pack |
from crypto.errors import InitCryptoError, EncryptError, DecryptError, IntegrityCheckError |
class CCM(BlockCipherWithIntegrity): |
""" The CCM class wraps block ciphers to provide integrity and encryption. |
CCM provides both encryption and a strong integrity check. The |
integrity check can optionally include "additional authentication |
data" that is included in the message integrity check, but is not encrypted. |
CCM is composed of two passes of the same base cipher, first |
the instance calculates a CBC Message Authentication Check, |
and then the same algorithm instance is used for the CTR |
(counter) mode encryption. |
This algorithm mode does NOT support streams of data (moreData flag) |
since a full packet must be available for the two pass CBC_MAC |
and CTR encryption process. |
When decrypting, a 'DecryptIntegrityError' exception is raised |
if the integrity check fails. |
>> aes_ccm = CCM(AES(key)) |
>> cipherText = aes_ccm.encrypt(plainText, nonce) |
>> try: |
>> decryptedText = aes_ccm.decrypt(cipherText, nonce) |
>> except IntegrityCheckError: |
>> print 'failed integrity check' |
or ... |
>> cipherText = aes_ccm.encrypt(plainText, nonce, addAuthData=header) |
>> try: |
>> decryptedText = aes_ccm.decrypt(cipherText, nonce, addAuthData=header) |
>> except IntegrityCheckError: |
>> print 'failed integrity check' |
""" |
def __init__(self, blockCipherInstance, autoNonce=None, macSize=8, nonceSize=13): |
""" CCM algorithms are created by initializing with a BlockCipher instance |
blockCipherInstance -> typically AES_ECB |
autoNonce -> sets the intial value of a nonce for automatic nonce |
creation (not available yet) |
macSize -> size of MAC field can be = 4, 6, 8, 10, 12, 14, or 16 |
nonceSize -> size of nonce in bytes (default 13) |
the counter size is blockSize-nonceSize-1 |
""" |
self.baseCipher = blockCipherInstance |
self.name = self.baseCipher.name + '_CCM' |
self.blockSize = self.baseCipher.blockSize |
self.keySize = self.baseCipher.keySize |
self.baseCipher.padding = noPadding() # baseCipher should NOT pad!! |
self.M = macSize # Number of octets |
if not((3 < self.M < 17) and (macSize%2==0)) : |
raise InitCryptoError, 'CCM, M (size of auth field) is out of bounds' |
self.nonceSize = nonceSize |
self.L = self.baseCipher.blockSize - self.nonceSize - 1 |
if not(1 < self.L < 9) : |
raise InitCryptoError, 'CCM, L (size of length field) is out of bounds' |
self.reset() |
def setKey(self, key): |
self.baseCipher.setKey(key) |
self.reset() |
# Overload to reset both CCM state and the wrapped baseCipher |
def resetEncrypt(self): |
BlockCipherWithIntegrity.resetEncrypt(self) # reset CCM encrypt state (super class) |
self.baseCipher.resetEncrypt() # reset base cipher encrypt state |
def resetDecrypt(self): |
BlockCipherWithIntegrity.resetDecrypt(self) # reset CBC state (super class) |
self.baseCipher.resetEncrypt() # CCM uses encryption of base cipher to decrypt! |
def encrypt(self, plainText, nonce, addAuthData=''): |
""" CCM encryption of plainText |
nonce must be unique for each encryption, if set to none |
it will maintain it's own nonce creation |
addAuthData is optional """ |
# construct authentication block zero |
# flag byte fields |
Adata = ((len(addAuthData))>0) << 6 # bit 6 is 1 if auth |
Mfield = ((self.M-2)/2) << 3 # bits 5,4,3 encode macSize |
Lfield = self.L-1 # bits 2,1,0 encode L size = blockSize-nonceSize-1 |
flagsByte = chr(Adata^Mfield^Lfield) |
if len(nonce) != self.nonceSize : |
raise EncryptError, 'wrong sized nonce' |
lenMessage = len(plainText) |
if lenMessage >= 1L<<(8*self.L): |
raise EncryptError, 'CCM plainText too long for given L field size' |
packedLenMessage = pack('!Q', lenMessage)[-self.L:] # pack and truncate to L bytes |
blockZero = flagsByte+nonce+packedLenMessage |
if len(blockZero) != self.baseCipher.blockSize: |
raise EncryptError, 'CCM bad size of first block' |
authLengthField = self._encodeAuthLength(len(addAuthData)) |
cbcInput = blockZero+authLengthField+addAuthData |
authPadSize = self.baseCipher.blockSize-((len(cbcInput)-1)%self.baseCipher.blockSize)-1 |
cbcInput = cbcInput + authPadSize*chr(0) # pad to block size with zeros |
cbcInput = cbcInput + plainText |
cbcEndPad = chr(0x00)*((self.blockSize-((len(cbcInput))%self.blockSize))%self.blockSize) |
cbcInput = cbcInput + cbcEndPad |
# Calculate CBC_MAC |
numCbcBlocks,extra = divmod(len(cbcInput),self.blockSize) |
assert (extra==0), 'bad block size on cbc_mac calculation' |
cbcMicValue = self.blockSize*chr(0x00) |
for i in range(numCbcBlocks) : |
cbcBlock = cbcInput[i*self.blockSize:(i+1)*self.blockSize] |
cbcMicValue = self.baseCipher.encrypt( xor(cbcMicValue, cbcBlock) ) |
counter = 0L |
# the counter mode preload with counter starting at zero |
ctrModePl = chr(self.L-1)+ nonce + pack('>Q', counter)[-self.L:] |
ccmMIC = xor(self.baseCipher.encrypt(ctrModePl),cbcMicValue)[:self.M] # first M bytes of xor |
ct = '' |
numCtrBlocks,extra = divmod(len(plainText)+self.blockSize,self.blockSize) |
while counter < numCtrBlocks : |
counter = counter + 1L |
ctrModePl = chr(self.L-1) + nonce + pack('>Q', counter)[-self.L:] |
ct = ct + xor(self.baseCipher.encrypt(ctrModePl), plainText[(counter-1)*16:counter*16] ) |
ct = ct + ccmMIC |
return ct |
def decrypt(self, cipherText, nonce, addAuthData=''): |
""" CCM decryption of cipherText |
nonce must be unique for each encryption, if set to none |
it will maintain it's own nonce creation |
the nonce is then included in the cipher text |
addAuthData is option """ |
# construct authentication block zero |
# flag byte fields |
Adata = ((len(addAuthData))>0) << 6 # bit 6 is 1 if auth |
Mfield = ((self.M-2)/2) << 3 # bits 5,4,3 encode macSize |
Lfield = self.L-1 # bits 2,1,0 encode L size = blockSize-nonceSize-1 |
flagsByte = chr(Adata^Mfield^Lfield) |
if len(nonce) != self.nonceSize : |
raise DecryptError, 'wrong sized nonce' |
lenMessage = len(cipherText)-self.M |
if lenMessage >= 1L<<(8*self.L): |
raise DecryptError, 'CCM cipherText too long for given L field size' |
if lenMessage < 0 : |
raise DecryptError, 'Too small of cipherText for MIC size' |
packedLenMessage = pack('!Q', lenMessage)[-self.L:] # pack and truncate to L bytes |
pt = '' |
ct = cipherText[:-self.M] # trim of MIC field |
numCtrBlocks,extra = divmod(len(ct)+self.blockSize,self.blockSize) |
for counter in range(1, numCtrBlocks+1) : |
ctrModePl = chr(self.L-1) + nonce + pack('>Q', counter)[-self.L:] |
ctr = self.baseCipher.encrypt(ctrModePl) |
ctBlock = ct[(counter-1)*self.blockSize:counter*self.blockSize] |
pt = pt + xor( ctr, ctBlock ) |
#------- CBC Mac Calculation |
blockZero = flagsByte+nonce+packedLenMessage |
if len(blockZero) != self.baseCipher.blockSize: |
raise DecryptError, 'CCM bad size of first block' |
authLengthField = self._encodeAuthLength(len(addAuthData)) |
cbcInput = blockZero+authLengthField+addAuthData |
authPadSize = self.baseCipher.blockSize-((len(cbcInput)-1)%self.baseCipher.blockSize)-1 |
cbcInput = cbcInput + authPadSize*chr(0) # pad to block size with zeros |
cbcInput = cbcInput + pt |
cbcEndPad = chr(0x00)*((self.blockSize-((len(cbcInput))%self.blockSize))%self.blockSize) |
cbcInput = cbcInput + cbcEndPad |
# Calculate CBC_MAC |
numCbcBlocks,extra = divmod(len(cbcInput),self.blockSize) |
assert (extra==0), 'bad block size on cbc_mac calculation' |
cbcMicValue = self.blockSize*chr(0x00) |
for i in range(numCbcBlocks) : |
cbcBlock = cbcInput[i*self.blockSize:(i+1)*self.blockSize] |
cbcMicValue = self.baseCipher.encrypt( xor(cbcMicValue, cbcBlock) ) |
ctrModePl0 = chr(self.L-1)+ nonce + pack('>Q', 0)[-self.L:] |
ccmMIC = xor(self.baseCipher.encrypt(ctrModePl0),cbcMicValue)[:self.M] # first 8 bytes of xor |
if ccmMIC != cipherText[-self.M:] : |
raise IntegrityCheckError, 'CCM Integrity check failed on decrypt' |
return pt |
def _encodeAuthLength(self, length): |
""" construct byte string representing length, returns 2 to 10 bytes """ |
if length < 0 : |
raise EncryptError, 'CCM illegal length value' |
elif 0 <= length < 0xFF00: |
byteString = pack('!H', length) # pack into two bytes |
elif 0xFF00 <= length < 0x100000000L: |
byteString = pack('!HI',0xFFFE, length) # pack into 0xFFFE + four bytes |
elif 0x100000000L <= length < 0x10000000000000000L: |
byteString = pack('!HQ',0xFFFF, length) # pack into 0xFFFF + eigth bytes |
else: |
raise EncryptError, 'CCM length error' |
return byteString |
def _decodeAuthLength(self, byteString): |
""" decode byte string representing length, returns length |
Only the first 2 to 10 bytes of the byte string are examined """ |
firstTwoOctets == unpack('!H',bytesString[0:2]) # two bytes used for length |
if firstTwoOctets == 0: |
raise DecryptError, 'CCM auth length zero with auth bit set' |
elif 0 < firstTwoOctets < 0xFEFF: |
messageLength == firstTwoOctets |
elif 0xFEFF < firstTwoOctets < 0xFFFE: |
raise DecryptError, 'CCM auth length illegal values' |
elif firstTwoOctets == 0xFFFE: |
messageLength = unpack('!I',byteString[2:6]) # four bytes used for length |
elif firstTwoOctets == 0xFFFF: |
messageLength = unpack('!Q',byteString[2:10]) # eight bytes used for length |
else: |
raise DecryptError, 'CCM auth length error' |
return messageLength |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/aes_sbox_analysis.py |
---|
0,0 → 1,104 |
#! /usr/bin/env python |
""" crypto.cipher.aes_sbox_analysis |
AES Sbox Analysis - a simple analysis of the AES Sbox that determines |
the number and size of the permutation subgroups in the transformation. |
Could be extended to examine any Sbox ... |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-12-05 Added validation of equation form of AES |
2002-06-01 Original |
""" |
# The AES Sbox |
sbbytes = (0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5, |
0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, |
0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0, |
0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, |
0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc, |
0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, |
0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a, |
0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, |
0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0, |
0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, |
0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b, |
0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, |
0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85, |
0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, |
0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5, |
0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, |
0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17, |
0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, |
0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88, |
0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, |
0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c, |
0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, |
0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9, |
0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, |
0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6, |
0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, |
0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e, |
0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, |
0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94, |
0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, |
0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68, |
0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16) |
def groups(subbytes): |
gdict={} # a dictionary of the cycles indexed by the first cycle element |
touched=[0 for i in range(len(subbytes))] |
for i in range(len(sbbytes)): |
touched.append(0) |
for i in range(len(sbbytes)): |
element = i |
cycle = [] |
if not touched[element]: |
for j in range (i,len(sbbytes)): |
touched[element] = 1 |
cycle.append(element) |
element = sbbytes[element] |
if element == i: |
break |
gdict[cycle[1]]=cycle |
else: |
pass |
return gdict |
def grpv(subbytes): |
"""" Returns a list of tuples (cycle start, cycle size) """ |
v=[] |
z=groups(subbytes) |
for i in z.keys(): |
v.append( [i, len(z[i])] ) |
return v |
def sgv(subbytes): |
x = grpv(subbytes) |
sum = 0 |
for i in x: |
sum = sum + i[1] |
return sum |
def main(): |
cycles = grpv(sbbytes) |
print 'The AES sbox contains ', |
print len(cycles), |
print 'permutation subgroups' |
print 'The AES sbox subgroups (start, length) are:' |
print cycles |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/trolldoll.py |
---|
0,0 → 1,84 |
""" crypto.cipher.trolldoll |
Modification to Icedoll to take advantage of the better error extension |
and provide a IV for randomization of the output and integrity checking. |
IV is simply prepended to plaintext. |
Integrity check is appended to the end of the plain text as |
zeros with count of the blocks in the ciphertext. |
Note !!!! auto IV uses python default random :-( |
should not be 'too bad' (tm) for this applicaiton |
ALso ... currently just IV .... in test .. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.icedoll import Icedoll |
from crypto.errors import IntegrityCheckError |
from random import Random # should change to crypto.random!!! |
class Trolldoll(Icedoll): |
""" Trolldoll encryption algorithm |
based on Icedoll, which is based on Rijndael |
Trolldoll adds an 'IV' and integrity checking to Icedoll |
""" |
def __init__(self,key=None,keySize=32,blockSize=32,tapRound=6,extraRounds=6,micSize=16,ivSize=16): |
""" """ |
Icedoll.__init__(self,key=None,keySize=32,blockSize=32,tapRound=6,extraRounds=6) |
self.name = 'TROLLDOLL' |
self.micSize = micSize |
self.ivSize = ivSize |
self.r = Random() # for IV generation |
import time |
newSeed = time.ctime()+str(self.r) # seed with instance location |
self.r.seed(newSeed) # to make unique |
self.reset() |
def reset(self): |
Icedoll.reset(self) |
self.hasIV = None |
def _makeIV(self): |
return self.ivSize*'a' |
def _makeIC(self): |
""" Make the integrity check """ |
return self.micSize*chr(0x00) |
def _verifyIC(self,integrityCheck): |
""" Verify the integrity check """ |
if self.micSize*chr(0x00) == integrityCheck : |
return 1 # matches |
else: |
return 0 # fails |
def encrypt(self, plainText, more=None): |
""" """ |
if not(self.hasIV): # On first call to encrypt put in an IV |
plainText = self._makeIV() + plainText # add the 'IV' |
self.hasIV = 1 |
if more == None: # on last call to encrypt append integrity check |
plainText = plainText + self._makeIC() |
return Icedoll.encrypt(self, plainText, more=more) |
def decrypt(self, cipherText, more=None): |
""" Decrypt cipher text, Icedoll automatically removes |
prepended random bits used as IV. |
Note - typically IV is directly used as the first |
cipher text. Here the IV is prepended to the plaintext |
prior to encryption and removed on decryption. |
""" |
plainText = Icedoll.decrypt(self, cipherText, more=more) |
if not(self.hasIV): # on first call to decrypt remove IV |
plainText = plainText[self.ivSize:] # remove the IV |
self.hasIV = 1 |
if more == None: # on last call to encrypt append integrity check |
if not(self._verifyIC(plainText[-self.micSize:])) : |
raise IntegrityCheckError, 'Trolldoll MIC Failure, bad key or modified data' |
plainText = plainText[:-self.micSize] # trim off the integrity check |
return plainText |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/aes_test.py |
---|
0,0 → 1,1581 |
#! /usr/bin/env python |
""" crypto.cipher.aes_test |
Tests for AES encryption algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import unittest |
from crypto.cipher.aes import AES |
from crypto.cipher.base import noPadding |
from binascii import a2b_hex, b2a_hex |
class AES_TestVectors(unittest.TestCase): |
""" Test AES algorithm using know values.""" |
def testAES_KAT(self): |
""" Run AES know answer tests from hex input """ |
def AEStestVector(i, key, pt, ct): |
""" Test vectors provide test name(i), key, plain text (pt) and know cipher text (ct) """ |
bkey, plainText, knownCipherText = a2b_hex(key), a2b_hex(pt), a2b_hex(ct) |
kSize = len(bkey) |
alg = AES(bkey, keySize=kSize, padding=noPadding()) |
self.assertEqual( alg.encrypt(plainText), knownCipherText ) |
self.assertEqual( alg.decrypt(knownCipherText), plainText ) |
""" AES tests using FIPS example vectors """ |
AEStestVector( i = 'NIST Example', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '3925841d02dc09fbdc118597196a0b32') |
AEStestVector( i = 'NIST 128 bit encrypt decrypt example', |
key = '000102030405060708090a0b0c0d0e0f', |
pt = '00112233445566778899aabbccddeeff', |
ct = '69c4e0d86a7b0430d8cdb78070b4c55a') |
""" AES Known Answer Tests with Variable Text (block size only 128) from ecb_vt.txt""" |
AEStestVector( i = 'aes-ecb-vt-128-1', |
key = '00000000000000000000000000000000', |
pt = '80000000000000000000000000000000', |
ct = '3AD78E726C1EC02B7EBFE92B23D9EC34') |
AEStestVector( i = 'aes-ecb-vt-128-2', |
key = '00000000000000000000000000000000', |
pt = '40000000000000000000000000000000', |
ct = '45BC707D29E8204D88DFBA2F0B0CAD9B') |
AEStestVector( i = 'aes-ecb-vt-128-3', |
key = '00000000000000000000000000000000', |
pt = '20000000000000000000000000000000', |
ct = '161556838018F52805CDBD6202002E3F') |
AEStestVector( i = 'aes-ecb-vt-128-4', |
key = '00000000000000000000000000000000', |
pt = '10000000000000000000000000000000', |
ct = 'F5569B3AB6A6D11EFDE1BF0A64C6854A') |
AEStestVector( i = 'aes-ecb-vt-128-5', |
key = '00000000000000000000000000000000', |
pt = '08000000000000000000000000000000', |
ct = '64E82B50E501FBD7DD4116921159B83E') |
AEStestVector( i = 'aes-ecb-vt-128-6', |
key = '00000000000000000000000000000000', |
pt = '04000000000000000000000000000000', |
ct = 'BAAC12FB613A7DE11450375C74034041') |
AEStestVector( i = 'aes-ecb-vt-128-7', |
key = '00000000000000000000000000000000', |
pt = '02000000000000000000000000000000', |
ct = 'BCF176A7EAAD8085EBACEA362462A281') |
AEStestVector( i = 'aes-ecb-vt-128-8', |
key = '00000000000000000000000000000000', |
pt = '01000000000000000000000000000000', |
ct = '47711816E91D6FF059BBBF2BF58E0FD3') |
AEStestVector( i = 'aes-ecb-vt-128-9', |
key = '00000000000000000000000000000000', |
pt = '00800000000000000000000000000000', |
ct = 'B970DFBE40698AF1638FE38BD3DF3B2F') |
AEStestVector( i = 'aes-ecb-vt-128-10', |
key = '00000000000000000000000000000000', |
pt = '00400000000000000000000000000000', |
ct = 'F95B59A44F391E14CF20B74BDC32FCFF') |
AEStestVector( i = 'aes-ecb-vt-128-11', |
key = '00000000000000000000000000000000', |
pt = '00200000000000000000000000000000', |
ct = '720F74AE04A2A435B9A7256E49378F5B') |
AEStestVector( i = 'aes-ecb-vt-128-12', |
key = '00000000000000000000000000000000', |
pt = '00100000000000000000000000000000', |
ct = '2A0445F61D36BFA7E277070730CF76DA') |
AEStestVector( i = 'aes-ecb-vt-128-13', |
key = '00000000000000000000000000000000', |
pt = '00080000000000000000000000000000', |
ct = '8D0536B997AEFEC1D94011BAB6699A03') |
AEStestVector( i = 'aes-ecb-vt-128-14', |
key = '00000000000000000000000000000000', |
pt = '00040000000000000000000000000000', |
ct = '674F002E19F6ED47EFF319E51FAD4498') |
AEStestVector( i = 'aes-ecb-vt-128-15', |
key = '00000000000000000000000000000000', |
pt = '00020000000000000000000000000000', |
ct = '292C02C5CB9163C80AC0F6CF1DD8E92D') |
AEStestVector( i = 'aes-ecb-vt-128-16', |
key = '00000000000000000000000000000000', |
pt = '00010000000000000000000000000000', |
ct = 'FA321CF18EF5FE727DD82A5C1E945141') |
AEStestVector( i = 'aes-ecb-vt-128-17', |
key = '00000000000000000000000000000000', |
pt = '00008000000000000000000000000000', |
ct = 'A5A7AFE1034C39CCCEBE3C584BC0BE05') |
AEStestVector( i = 'aes-ecb-vt-128-18', |
key = '00000000000000000000000000000000', |
pt = '00004000000000000000000000000000', |
ct = '4FF5A52E697E77D081205DBDB21CEA39') |
AEStestVector( i = 'aes-ecb-vt-128-19', |
key = '00000000000000000000000000000000', |
pt = '00002000000000000000000000000000', |
ct = '209E88DC94C9003000CE0769AF7B7166') |
AEStestVector( i = 'aes-ecb-vt-128-20', |
key = '00000000000000000000000000000000', |
pt = '00001000000000000000000000000000', |
ct = '5DEE41AF864CB4B650E5F51551824D38') |
AEStestVector( i = 'aes-ecb-vt-128-21', |
key = '00000000000000000000000000000000', |
pt = '00000800000000000000000000000000', |
ct = 'A79A63FA7E4503AE6D6E09F5F9053030') |
AEStestVector( i = 'aes-ecb-vt-128-22', |
key = '00000000000000000000000000000000', |
pt = '00000400000000000000000000000000', |
ct = 'A48316749FAE7FAC7002031A6AFD8BA7') |
AEStestVector( i = 'aes-ecb-vt-128-23', |
key = '00000000000000000000000000000000', |
pt = '00000200000000000000000000000000', |
ct = 'D6EEE8A7357A0E1D64262CA9C337AC42') |
AEStestVector( i = 'aes-ecb-vt-128-24', |
key = '00000000000000000000000000000000', |
pt = '00000100000000000000000000000000', |
ct = 'B013CA8A62A858053E9FB667ED39829E') |
AEStestVector( i = 'aes-ecb-vt-128-25', |
key = '00000000000000000000000000000000', |
pt = '00000080000000000000000000000000', |
ct = 'DF6EA9E4538A45A52D5C1A43C88F4B55') |
AEStestVector( i = 'aes-ecb-vt-128-26', |
key = '00000000000000000000000000000000', |
pt = '00000040000000000000000000000000', |
ct = '7D03BA451371591D3FD5547D9165C73B') |
AEStestVector( i = 'aes-ecb-vt-128-27', |
key = '00000000000000000000000000000000', |
pt = '00000020000000000000000000000000', |
ct = '0E0426281A6277E186499D365D5F49FF') |
AEStestVector( i = 'aes-ecb-vt-128-28', |
key = '00000000000000000000000000000000', |
pt = '00000010000000000000000000000000', |
ct = 'DBC02169DD2059E6CC4C57C1FEDF5AB4') |
AEStestVector( i = 'aes-ecb-vt-128-29', |
key = '00000000000000000000000000000000', |
pt = '00000008000000000000000000000000', |
ct = '826590E05D167DA6F00DCC75E22788EB') |
AEStestVector( i = 'aes-ecb-vt-128-30', |
key = '00000000000000000000000000000000', |
pt = '00000004000000000000000000000000', |
ct = '34A73F21A04421D9786335FAAB49423A') |
AEStestVector( i = 'aes-ecb-vt-128-31', |
key = '00000000000000000000000000000000', |
pt = '00000002000000000000000000000000', |
ct = 'ED347D0E0128EE1A7392A1D36AB78AA9') |
AEStestVector( i = 'aes-ecb-vt-128-32', |
key = '00000000000000000000000000000000', |
pt = '00000001000000000000000000000000', |
ct = 'EE944B2FE6E9FC888042608DA9615F75') |
AEStestVector( i = 'aes-ecb-vt-128-33', |
key = '00000000000000000000000000000000', |
pt = '00000000800000000000000000000000', |
ct = '9E7C85A909EF7218BA7947CFB4718F46') |
AEStestVector( i = 'aes-ecb-vt-128-34', |
key = '00000000000000000000000000000000', |
pt = '00000000400000000000000000000000', |
ct = '811AE07A0B2B1F816587FA73699AE77D') |
AEStestVector( i = 'aes-ecb-vt-128-35', |
key = '00000000000000000000000000000000', |
pt = '00000000200000000000000000000000', |
ct = '68466FBF43C2FE13D4B18F7EC5EA745F') |
AEStestVector( i = 'aes-ecb-vt-128-36', |
key = '00000000000000000000000000000000', |
pt = '00000000100000000000000000000000', |
ct = 'D20B015C7191B219780956E6101F9354') |
AEStestVector( i = 'aes-ecb-vt-128-37', |
key = '00000000000000000000000000000000', |
pt = '00000000080000000000000000000000', |
ct = '5939D5C1BBF54EE1B3E326D757BDDE25') |
AEStestVector( i = 'aes-ecb-vt-128-38', |
key = '00000000000000000000000000000000', |
pt = '00000000040000000000000000000000', |
ct = 'B1FDAFE9A0240E8FFEA19CE94B5105D3') |
AEStestVector( i = 'aes-ecb-vt-128-39', |
key = '00000000000000000000000000000000', |
pt = '00000000020000000000000000000000', |
ct = 'D62962ECE02CDD68C06BDFEFB2F9495B') |
AEStestVector( i = 'aes-ecb-vt-128-40', |
key = '00000000000000000000000000000000', |
pt = '00000000010000000000000000000000', |
ct = 'B3BB2DE6F3C26587BA8BAC4F7AD9499A') |
AEStestVector( i = 'aes-ecb-vt-128-41', |
key = '00000000000000000000000000000000', |
pt = '00000000008000000000000000000000', |
ct = 'E0B1072D6D9FF703D6FBEF77852B0A6B') |
AEStestVector( i = 'aes-ecb-vt-128-42', |
key = '00000000000000000000000000000000', |
pt = '00000000004000000000000000000000', |
ct = 'D8DD51C907F478DE0228E83E61FD1758') |
AEStestVector( i = 'aes-ecb-vt-128-43', |
key = '00000000000000000000000000000000', |
pt = '00000000002000000000000000000000', |
ct = 'A42DFFE6E7C1671C06A25236FDD10017') |
AEStestVector( i = 'aes-ecb-vt-128-44', |
key = '00000000000000000000000000000000', |
pt = '00000000001000000000000000000000', |
ct = '25ACF141550BFAB9EF451B6C6A5B2163') |
AEStestVector( i = 'aes-ecb-vt-128-45', |
key = '00000000000000000000000000000000', |
pt = '00000000000800000000000000000000', |
ct = '4DA7FCA3949B16E821DBC84F19581018') |
AEStestVector( i = 'aes-ecb-vt-128-46', |
key = '00000000000000000000000000000000', |
pt = '00000000000400000000000000000000', |
ct = '7D49B6347CBCC8919C7FA96A37A7A215') |
AEStestVector( i = 'aes-ecb-vt-128-47', |
key = '00000000000000000000000000000000', |
pt = '00000000000200000000000000000000', |
ct = '900024B29A08C6721B95BA3B753DDB4D') |
AEStestVector( i = 'aes-ecb-vt-128-48', |
key = '00000000000000000000000000000000', |
pt = '00000000000100000000000000000000', |
ct = '6D2182FB283B6934D90BA7848CAB5E66') |
AEStestVector( i = 'aes-ecb-vt-128-49', |
key = '00000000000000000000000000000000', |
pt = '00000000000080000000000000000000', |
ct = 'F73EF01B448D23A4D90DE8B2F9666E7A') |
AEStestVector( i = 'aes-ecb-vt-128-50', |
key = '00000000000000000000000000000000', |
pt = '00000000000040000000000000000000', |
ct = '4AD9CDA2418643E9A3D926AF5E6B0412') |
AEStestVector( i = 'aes-ecb-vt-128-51', |
key = '00000000000000000000000000000000', |
pt = '00000000000020000000000000000000', |
ct = '7CAEC8E7E5953997D545B033201C8C5B') |
AEStestVector( i = 'aes-ecb-vt-128-52', |
key = '00000000000000000000000000000000', |
pt = '00000000000010000000000000000000', |
ct = '3C43CA1F6B6864503E27B48D88230CF5') |
AEStestVector( i = 'aes-ecb-vt-128-53', |
key = '00000000000000000000000000000000', |
pt = '00000000000008000000000000000000', |
ct = '44F779B93108FE9FEEC880D79BA74488') |
AEStestVector( i = 'aes-ecb-vt-128-54', |
key = '00000000000000000000000000000000', |
pt = '00000000000004000000000000000000', |
ct = '9E50E8D9CFD3A682A78E527C9072A1CF') |
AEStestVector( i = 'aes-ecb-vt-128-55', |
key = '00000000000000000000000000000000', |
pt = '00000000000002000000000000000000', |
ct = '68D000CBC838BBE3C505D6F814C01F28') |
AEStestVector( i = 'aes-ecb-vt-128-56', |
key = '00000000000000000000000000000000', |
pt = '00000000000001000000000000000000', |
ct = '2CB2A9FEC1ACD1D9B0FA05205E304F57') |
AEStestVector( i = 'aes-ecb-vt-128-57', |
key = '00000000000000000000000000000000', |
pt = '00000000000000800000000000000000', |
ct = '01EB2806606E46444520A5CC6180CD4B') |
AEStestVector( i = 'aes-ecb-vt-128-58', |
key = '00000000000000000000000000000000', |
pt = '00000000000000400000000000000000', |
ct = 'DAA9B25168CC702326F217F1A0C0B162') |
AEStestVector( i = 'aes-ecb-vt-128-59', |
key = '00000000000000000000000000000000', |
pt = '00000000000000200000000000000000', |
ct = '3E07E648975D9578D03555B1755807ED') |
AEStestVector( i = 'aes-ecb-vt-128-60', |
key = '00000000000000000000000000000000', |
pt = '00000000000000100000000000000000', |
ct = '0B45F52E802C8B8DE09579425B80B711') |
AEStestVector( i = 'aes-ecb-vt-128-61', |
key = '00000000000000000000000000000000', |
pt = '00000000000000080000000000000000', |
ct = '659595DA0B68F6DF0DD6CA77202986E1') |
AEStestVector( i = 'aes-ecb-vt-128-62', |
key = '00000000000000000000000000000000', |
pt = '00000000000000040000000000000000', |
ct = '05FF42873893536E58C8FA98A45C73C4') |
AEStestVector( i = 'aes-ecb-vt-128-63', |
key = '00000000000000000000000000000000', |
pt = '00000000000000020000000000000000', |
ct = 'B5B03421DE8BBFFC4EADEC767339A9BD') |
AEStestVector( i = 'aes-ecb-vt-128-64', |
key = '00000000000000000000000000000000', |
pt = '00000000000000010000000000000000', |
ct = '788BCD111ECF73D4E78D2E21BEF55460') |
AEStestVector( i = 'aes-ecb-vt-128-65', |
key = '00000000000000000000000000000000', |
pt = '00000000000000008000000000000000', |
ct = '909CD9EC6790359F982DC6F2393D5315') |
AEStestVector( i = 'aes-ecb-vt-128-66', |
key = '00000000000000000000000000000000', |
pt = '00000000000000004000000000000000', |
ct = '332950F361535FF24EFAC8C76293F12C') |
AEStestVector( i = 'aes-ecb-vt-128-67', |
key = '00000000000000000000000000000000', |
pt = '00000000000000002000000000000000', |
ct = 'A68CCD4E330FFDA9D576DA436DB53D75') |
AEStestVector( i = 'aes-ecb-vt-128-68', |
key = '00000000000000000000000000000000', |
pt = '00000000000000001000000000000000', |
ct = '27C8A1CCFDB0B015D1ED5B3E77143791') |
AEStestVector( i = 'aes-ecb-vt-128-69', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000800000000000000', |
ct = 'D76A4B95887A77DF610DD3E1D3B20325') |
AEStestVector( i = 'aes-ecb-vt-128-70', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000400000000000000', |
ct = 'C068AB0DE71C66DAE83C361EF4B2D989') |
AEStestVector( i = 'aes-ecb-vt-128-71', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000200000000000000', |
ct = 'C2120BCD49EDA9A288B3B4BE79AC8158') |
AEStestVector( i = 'aes-ecb-vt-128-72', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000100000000000000', |
ct = '0C546F62BF2773CD0F564FCECA7BA688') |
AEStestVector( i = 'aes-ecb-vt-128-73', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000080000000000000', |
ct = '18F3462BEDE4920213CCB66DAB1640AA') |
AEStestVector( i = 'aes-ecb-vt-128-74', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000040000000000000', |
ct = 'FE42F245EDD0E24B216AEBD8B392D690') |
AEStestVector( i = 'aes-ecb-vt-128-75', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000020000000000000', |
ct = '3D3EEBC8D3D1558A194C2D00C337FF2B') |
AEStestVector( i = 'aes-ecb-vt-128-76', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000010000000000000', |
ct = '29AAEDF043E785DB42836F79BE6CBA28') |
AEStestVector( i = 'aes-ecb-vt-128-77', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000008000000000000', |
ct = '215F90C6744E2944358E78619159A611') |
AEStestVector( i = 'aes-ecb-vt-128-78', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000004000000000000', |
ct = '8606B1AA9E1D548E5442B06551E2C6DC') |
AEStestVector( i = 'aes-ecb-vt-128-79', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000002000000000000', |
ct = '987BB4B8740EC0EDE7FEA97DF033B5B1') |
AEStestVector( i = 'aes-ecb-vt-128-80', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000001000000000000', |
ct = 'C0A3500DA5B0AE07D2F450930BEEDF1B') |
AEStestVector( i = 'aes-ecb-vt-128-81', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000800000000000', |
ct = '525FDF8312FE8F32C781481A8DAAAE37') |
AEStestVector( i = 'aes-ecb-vt-128-82', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000400000000000', |
ct = 'BFD2C56AE5FB9C9DE33A6944572A6487') |
AEStestVector( i = 'aes-ecb-vt-128-83', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000200000000000', |
ct = '7975A57A425CDF5AA1FA929101F650B0') |
AEStestVector( i = 'aes-ecb-vt-128-84', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000100000000000', |
ct = 'BF174BC49609A8709B2CD8366DAA79FE') |
AEStestVector( i = 'aes-ecb-vt-128-85', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000080000000000', |
ct = '06C50C43222F56C874B1704E9F44BF7D') |
AEStestVector( i = 'aes-ecb-vt-128-86', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000040000000000', |
ct = '0CEC48CD34043EA29CA3B8ED5278721E') |
AEStestVector( i = 'aes-ecb-vt-128-87', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000020000000000', |
ct = '9548EA34A1560197B304D0ACB8A1698D') |
AEStestVector( i = 'aes-ecb-vt-128-88', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000010000000000', |
ct = '22F9E9B1BD73B6B5B7D3062C986272F3') |
AEStestVector( i = 'aes-ecb-vt-128-89', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000008000000000', |
ct = 'FEE8E934BD0873295059002230E298D4') |
AEStestVector( i = 'aes-ecb-vt-128-90', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000004000000000', |
ct = '1B08E2E3EB820D139CB4ABBDBE81D00D') |
AEStestVector( i = 'aes-ecb-vt-128-91', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000002000000000', |
ct = '0021177681E4D90CEAF69DCED0145125') |
AEStestVector( i = 'aes-ecb-vt-128-92', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000001000000000', |
ct = '4A8E314452CA8A8A3619FC54BC423643') |
AEStestVector( i = 'aes-ecb-vt-128-93', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000800000000', |
ct = '65047474F7222C94C6965425FF1BFD0A') |
AEStestVector( i = 'aes-ecb-vt-128-94', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000400000000', |
ct = 'E123F551A9C4A8489622B16F961A9AA4') |
AEStestVector( i = 'aes-ecb-vt-128-95', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000200000000', |
ct = 'EF05530948B80915028BB2B6FE429380') |
AEStestVector( i = 'aes-ecb-vt-128-96', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000100000000', |
ct = '72535B7FE0F0F777CEDCD55CD77E2DDF') |
AEStestVector( i = 'aes-ecb-vt-128-97', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000080000000', |
ct = '3423D8EFC31FA2F4C365C77D8F3B5C63') |
AEStestVector( i = 'aes-ecb-vt-128-98', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000040000000', |
ct = 'DE0E51C264663F3C5DBC59580A98D8E4') |
AEStestVector( i = 'aes-ecb-vt-128-99', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000020000000', |
ct = 'B2D9391166680947AB09264156719679') |
AEStestVector( i = 'aes-ecb-vt-128-100', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000010000000', |
ct = '10DB79F23B06D263835C424AF749ADB7') |
AEStestVector( i = 'aes-ecb-vt-128-101', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000008000000', |
ct = 'DDF72D27E6B01EC107EA3E005B59563B') |
AEStestVector( i = 'aes-ecb-vt-128-102', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000004000000', |
ct = '8266B57485A5954A4236751DE07F6694') |
AEStestVector( i = 'aes-ecb-vt-128-103', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000002000000', |
ct = '669A501E1F1ADE6E5523DE01D6DBC987') |
AEStestVector( i = 'aes-ecb-vt-128-104', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000001000000', |
ct = 'C20C48F2989725D461D1DB589DC0896E') |
AEStestVector( i = 'aes-ecb-vt-128-105', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000800000', |
ct = 'DE35158E7810ED1191825D2AA98FA97D') |
AEStestVector( i = 'aes-ecb-vt-128-106', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000400000', |
ct = '4FE294F2C0F34D0671B693A237EBDDC8') |
AEStestVector( i = 'aes-ecb-vt-128-107', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000200000', |
ct = '087AE74B10CCBFDF6739FEB9559C01A4') |
AEStestVector( i = 'aes-ecb-vt-128-108', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000100000', |
ct = '5DC278970B7DEF77A5536C77AB59C207') |
AEStestVector( i = 'aes-ecb-vt-128-109', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000080000', |
ct = '7607F078C77085184EAA9B060C1FBFFF') |
AEStestVector( i = 'aes-ecb-vt-128-110', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000040000', |
ct = '9DB841531BCBE7998DAD19993FB3CC00') |
AEStestVector( i = 'aes-ecb-vt-128-111', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000020000', |
ct = 'D6A089B654854A94560BAE13298835B8') |
AEStestVector( i = 'aes-ecb-vt-128-112', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000010000', |
ct = 'E1E223C4CF90CC5D195B370D65114622') |
AEStestVector( i = 'aes-ecb-vt-128-113', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000008000', |
ct = '1CBED73C50D053BDAD372CEEE54836A1') |
AEStestVector( i = 'aes-ecb-vt-128-114', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000004000', |
ct = 'D309E69376D257ADF2BFDA152B26555F') |
AEStestVector( i = 'aes-ecb-vt-128-115', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000002000', |
ct = '740F7649117F0DEE6EAA7789A9994C36') |
AEStestVector( i = 'aes-ecb-vt-128-116', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000001000', |
ct = '76AE64417C297184D668C5FD908B3CE5') |
AEStestVector( i = 'aes-ecb-vt-128-117', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000800', |
ct = '6095FEA4AA8035591F1787A819C48787') |
AEStestVector( i = 'aes-ecb-vt-128-118', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000400', |
ct = 'D1FF4E7ACD1C79967FEBAB0F7465D450') |
AEStestVector( i = 'aes-ecb-vt-128-119', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000200', |
ct = '5F5AD3C42B9489557BB63BF49ECF5F8A') |
AEStestVector( i = 'aes-ecb-vt-128-120', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000100', |
ct = 'FB56CC09B680B1D07C5A52149E29F07C') |
AEStestVector( i = 'aes-ecb-vt-128-121', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000080', |
ct = 'FF49B8DF4A97CBE03833E66197620DAD') |
AEStestVector( i = 'aes-ecb-vt-128-122', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000040', |
ct = '5E070ADE533D2E090ED0F5BE13BC0983') |
AEStestVector( i = 'aes-ecb-vt-128-123', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000020', |
ct = '3AB4FB1D2B7BA376590A2C241D1F508D') |
AEStestVector( i = 'aes-ecb-vt-128-124', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000010', |
ct = '58B2431BC0BEDE02550F40238969EC78') |
AEStestVector( i = 'aes-ecb-vt-128-125', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000008', |
ct = '0253786E126504F0DAB90C48A30321DE') |
AEStestVector( i = 'aes-ecb-vt-128-126', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000004', |
ct = '200211214E7394DA2089B6ACD093ABE0') |
AEStestVector( i = 'aes-ecb-vt-128-127', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000002', |
ct = '0388DACE60B6A392F328C2B971B2FE78') |
AEStestVector( i = 'aes-ecb-vt-128-128', |
key = '00000000000000000000000000000000', |
pt = '00000000000000000000000000000001', |
ct = '58E2FCCEFA7E3061367F1D57A4E7455A') |
AEStestVector( i = 'aes-ecb-vt-192-1', |
key = '000000000000000000000000000000000000000000000000', |
pt = '80000000000000000000000000000000', |
ct = '6CD02513E8D4DC986B4AFE087A60BD0C') |
AEStestVector( i = 'aes-ecb-vt-192-2', |
key = '000000000000000000000000000000000000000000000000', |
pt = '40000000000000000000000000000000', |
ct = '423D2772A0CA56DAABB48D2129062987') |
AEStestVector( i = 'aes-ecb-vt-192-3', |
key = '000000000000000000000000000000000000000000000000', |
pt = '20000000000000000000000000000000', |
ct = '1021F2A8DA70EB2219DC16804445FF98') |
AEStestVector( i = 'aes-ecb-vt-192-4', |
key = '000000000000000000000000000000000000000000000000', |
pt = '10000000000000000000000000000000', |
ct = 'C636E35B402577F96974D8804295EBB8') |
AEStestVector( i = 'aes-ecb-vt-192-5', |
key = '000000000000000000000000000000000000000000000000', |
pt = '08000000000000000000000000000000', |
ct = '1566D2E57E8393C19E29F892EA28A9A7') |
AEStestVector( i = 'aes-ecb-vt-192-6', |
key = '000000000000000000000000000000000000000000000000', |
pt = '04000000000000000000000000000000', |
ct = '883C878FED70B36CC09D040F9619DD19') |
AEStestVector( i = 'aes-ecb-vt-192-7', |
key = '000000000000000000000000000000000000000000000000', |
pt = '02000000000000000000000000000000', |
ct = '06734593A974965790E715594FC34AA9') |
AEStestVector( i = 'aes-ecb-vt-192-8', |
key = '000000000000000000000000000000000000000000000000', |
pt = '01000000000000000000000000000000', |
ct = 'F19B389948D9A45534E5BD36C984134A') |
AEStestVector( i = 'aes-ecb-vt-192-9', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00800000000000000000000000000000', |
ct = 'D8410DFC14FA6D175EC968EA8CAC514C') |
AEStestVector( i = 'aes-ecb-vt-192-10', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00400000000000000000000000000000', |
ct = '7E6C6EBB4029A177CF7B2FDD9AC6BB7A') |
AEStestVector( i = 'aes-ecb-vt-192-11', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00200000000000000000000000000000', |
ct = '4B51DD4850DC0A6C3A46D924003D2C27') |
AEStestVector( i = 'aes-ecb-vt-192-12', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00100000000000000000000000000000', |
ct = '2E510A9D917B15BE32A192B12A668F23') |
AEStestVector( i = 'aes-ecb-vt-192-13', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00080000000000000000000000000000', |
ct = '88F6F79962B0FB77FEA8E7C632D3108E') |
AEStestVector( i = 'aes-ecb-vt-192-14', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00040000000000000000000000000000', |
ct = 'A3A35AB1D88DAF07B52794A0F065383A') |
AEStestVector( i = 'aes-ecb-vt-192-15', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00020000000000000000000000000000', |
ct = 'DC6CC878433E2B3BB193049A4ECBFC53') |
AEStestVector( i = 'aes-ecb-vt-192-16', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00010000000000000000000000000000', |
ct = 'EFCD3763EB7B1A415938248A9A5B4FD5') |
AEStestVector( i = 'aes-ecb-vt-192-17', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00008000000000000000000000000000', |
ct = 'AB7E9FB9A66DBE5BB44854F07D9015EE') |
AEStestVector( i = 'aes-ecb-vt-192-18', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00004000000000000000000000000000', |
ct = '8B8E9D3365F8F6743ECF7E33E99255A4') |
AEStestVector( i = 'aes-ecb-vt-192-19', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00002000000000000000000000000000', |
ct = '54D37B4F176FF3D8F6AFC866066D8572') |
AEStestVector( i = 'aes-ecb-vt-192-20', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00001000000000000000000000000000', |
ct = 'E83310889480FBF3C00342E3126D0D02') |
AEStestVector( i = 'aes-ecb-vt-192-21', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000800000000000000000000000000', |
ct = 'D321AB2511F92F098174AA2DE6E85DA2') |
AEStestVector( i = 'aes-ecb-vt-192-22', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000400000000000000000000000000', |
ct = 'D8E3F40B1112D5149D58C481DFA9983F') |
AEStestVector( i = 'aes-ecb-vt-192-23', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000200000000000000000000000000', |
ct = '2454C4E0806639DDF19854D6C68054AD') |
AEStestVector( i = 'aes-ecb-vt-192-24', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000100000000000000000000000000', |
ct = 'A5506D410F7CA32F3955DD79D9D09418') |
AEStestVector( i = 'aes-ecb-vt-192-25', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000080000000000000000000000000', |
ct = '7908EE40677699568A7DC1AA317C7E4E') |
AEStestVector( i = 'aes-ecb-vt-192-26', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000040000000000000000000000000', |
ct = 'B4B7B29DD43B2F5CF765E25192273982') |
AEStestVector( i = 'aes-ecb-vt-192-27', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000020000000000000000000000000', |
ct = '92AFE9668159BEFFE2A86F8503260164') |
AEStestVector( i = 'aes-ecb-vt-192-28', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000010000000000000000000000000', |
ct = '5C36A232FBA6D187A84657AD4028B18F') |
AEStestVector( i = 'aes-ecb-vt-192-29', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000008000000000000000000000000', |
ct = 'A2E994DFAB3A798DF8F54F6DA87E58E2') |
AEStestVector( i = 'aes-ecb-vt-192-30', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000004000000000000000000000000', |
ct = '6CDAB10A72ADF77D71D0765BAAE95631') |
AEStestVector( i = 'aes-ecb-vt-192-31', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000002000000000000000000000000', |
ct = '9FE3C801BCAAF7BB800F2E6BF3278E21') |
AEStestVector( i = 'aes-ecb-vt-192-32', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000001000000000000000000000000', |
ct = 'B459D90D9A6C392E5493BC91CF5A0863') |
AEStestVector( i = 'aes-ecb-vt-192-33', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000800000000000000000000000', |
ct = '0518A9FA5007F6787E0FB4E5AC27D758') |
AEStestVector( i = 'aes-ecb-vt-192-34', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000400000000000000000000000', |
ct = 'BED9795415D28599700ED7952384A963') |
AEStestVector( i = 'aes-ecb-vt-192-35', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000200000000000000000000000', |
ct = 'F0140421173D60251EF6CAB0229B1B50') |
AEStestVector( i = 'aes-ecb-vt-192-36', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000100000000000000000000000', |
ct = '460EB4652B3F6779EA28CB11B37529ED') |
AEStestVector( i = 'aes-ecb-vt-192-37', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000080000000000000000000000', |
ct = 'C4283D351C960A6AC13CD19CCF03AE38') |
AEStestVector( i = 'aes-ecb-vt-192-38', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000040000000000000000000000', |
ct = '6815A10047B2C834A798EBDCC6786C75') |
AEStestVector( i = 'aes-ecb-vt-192-39', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000020000000000000000000000', |
ct = '99BA19F0CDD5990D0386B32CE56C9C4C') |
AEStestVector( i = 'aes-ecb-vt-192-40', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000010000000000000000000000', |
ct = 'DE76F62C61E07915162DA13E79679DEC') |
AEStestVector( i = 'aes-ecb-vt-192-41', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000008000000000000000000000', |
ct = 'DD0325D6854803D06D1D2277D5FB8D67') |
AEStestVector( i = 'aes-ecb-vt-192-42', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000004000000000000000000000', |
ct = '580B71A41DE37D6FAC83CCB0B3BB1C97') |
AEStestVector( i = 'aes-ecb-vt-192-43', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000002000000000000000000000', |
ct = 'E9B1AB470A1B02EF0FF5E6754A092C96') |
AEStestVector( i = 'aes-ecb-vt-192-44', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000001000000000000000000000', |
ct = '8590620F5AF5993B7410282F4126BC1F') |
AEStestVector( i = 'aes-ecb-vt-192-45', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000800000000000000000000', |
ct = '8D4914D2F1B22B2E268E66E532D29D7C') |
AEStestVector( i = 'aes-ecb-vt-192-46', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000400000000000000000000', |
ct = 'FD826CE48E62C5E30867044B86BA4B56') |
AEStestVector( i = 'aes-ecb-vt-192-47', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000200000000000000000000', |
ct = '100E7B831C9F35FA1271F5F1316C6FCF') |
AEStestVector( i = 'aes-ecb-vt-192-48', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000100000000000000000000', |
ct = '0A2DD0C17F68B996AA96C007003D0B31') |
AEStestVector( i = 'aes-ecb-vt-192-49', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000080000000000000000000', |
ct = 'C95F68C57E06B0A2E1F623C83C5D80BF') |
AEStestVector( i = 'aes-ecb-vt-192-50', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000040000000000000000000', |
ct = '571CAFC92C7C8A5EC54C0741E186905C') |
AEStestVector( i = 'aes-ecb-vt-192-51', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000020000000000000000000', |
ct = '22514353E95312C112255E1EED0B2DF6') |
AEStestVector( i = 'aes-ecb-vt-192-52', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000010000000000000000000', |
ct = '791A8BF462BD17580BD9152C6D11C6C5') |
AEStestVector( i = 'aes-ecb-vt-192-53', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000008000000000000000000', |
ct = '5882A0178D548F84A165DB809C60DC28') |
AEStestVector( i = 'aes-ecb-vt-192-54', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000004000000000000000000', |
ct = '3CE4A90EED4458CA6039E42DDADB71C3') |
AEStestVector( i = 'aes-ecb-vt-192-55', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000002000000000000000000', |
ct = 'D3CBAB261207A16BE2751E77044FD7C9') |
AEStestVector( i = 'aes-ecb-vt-192-56', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000001000000000000000000', |
ct = '24E32B698A7B32217093628B01F424AB') |
AEStestVector( i = 'aes-ecb-vt-192-57', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000800000000000000000', |
ct = '9F6AFC0AF27CF565110C77E3C24F4F5B') |
AEStestVector( i = 'aes-ecb-vt-192-58', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000400000000000000000', |
ct = 'E088AA5CDA20EF267BB039B00C72C45B') |
AEStestVector( i = 'aes-ecb-vt-192-59', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000200000000000000000', |
ct = '5CF1018B7E0BA1775601C2E279900360') |
AEStestVector( i = 'aes-ecb-vt-192-60', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000100000000000000000', |
ct = '3B1A7388B89FB9416AD8753CF5AF35D2') |
AEStestVector( i = 'aes-ecb-vt-192-61', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000080000000000000000', |
ct = '137FA4ED00AFCD9F5D8BC0D14BD5837A') |
AEStestVector( i = 'aes-ecb-vt-192-62', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000040000000000000000', |
ct = '806F5C9B663559BB56F234881E4A3E60') |
AEStestVector( i = 'aes-ecb-vt-192-63', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000020000000000000000', |
ct = '8069A449152292DF2DE8642992C632B6') |
AEStestVector( i = 'aes-ecb-vt-192-64', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000010000000000000000', |
ct = '37C6CF2A1ABD1B1F1922B46C7B4A280D') |
AEStestVector( i = 'aes-ecb-vt-192-65', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000008000000000000000', |
ct = '7A2835260E5A0AA2B5DC301800EC8438') |
AEStestVector( i = 'aes-ecb-vt-192-66', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000004000000000000000', |
ct = 'EE81FAF2F9058213FFCACF281CB8509E') |
AEStestVector( i = 'aes-ecb-vt-192-67', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000002000000000000000', |
ct = '57F22D93C37129BA331FDBA38E005A1E') |
AEStestVector( i = 'aes-ecb-vt-192-68', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000001000000000000000', |
ct = 'EC798782E87B7D9F780CC3C3A46519B5') |
AEStestVector( i = 'aes-ecb-vt-192-69', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000800000000000000', |
ct = '43EA28497F5D40E3A4744FA2EDAA42DE') |
AEStestVector( i = 'aes-ecb-vt-192-70', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000400000000000000', |
ct = '91F004E7DEBF41B3414DD8C5C317372C') |
AEStestVector( i = 'aes-ecb-vt-192-71', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000200000000000000', |
ct = 'C249EAE54E7B4DF43B938C1B4CC28314') |
AEStestVector( i = 'aes-ecb-vt-192-72', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000100000000000000', |
ct = '32C289D7EEFB99D2F17AD7B7D45FE1EC') |
AEStestVector( i = 'aes-ecb-vt-192-73', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000080000000000000', |
ct = 'A675FB2E8DDBF810CEF01CF2B728CD2B') |
AEStestVector( i = 'aes-ecb-vt-192-74', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000040000000000000', |
ct = 'A418AAAB6E6921CC731AA8A349386080') |
AEStestVector( i = 'aes-ecb-vt-192-75', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000020000000000000', |
ct = '2E2B0F44863E67D9B0215C4ABD60417F') |
AEStestVector( i = 'aes-ecb-vt-192-76', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000010000000000000', |
ct = 'F0AF7CB19E911D481F6426DAEFDD2240') |
AEStestVector( i = 'aes-ecb-vt-192-77', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000008000000000000', |
ct = 'CB1304DAAA2DF6878F56AC2E0F887E04') |
AEStestVector( i = 'aes-ecb-vt-192-78', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000004000000000000', |
ct = 'B1B70A7E6A0CD1916D9B78BEA19084AE') |
AEStestVector( i = 'aes-ecb-vt-192-79', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000002000000000000', |
ct = '0CDE9F9BE646A5FCE3436B794A9CFC65') |
AEStestVector( i = 'aes-ecb-vt-192-80', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000001000000000000', |
ct = '68C7946D476A0A36674B36AFD7E5DF33') |
AEStestVector( i = 'aes-ecb-vt-192-81', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000800000000000', |
ct = '48770159A07DD8DFFF06C80105F8D57C') |
AEStestVector( i = 'aes-ecb-vt-192-82', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000400000000000', |
ct = '665E62801B3260E3C45BD3BE34DFDEBE') |
AEStestVector( i = 'aes-ecb-vt-192-83', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000200000000000', |
ct = '4159C1F686BFBE5B0E50BDB0DA532B69') |
AEStestVector( i = 'aes-ecb-vt-192-84', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000100000000000', |
ct = '6333100A5A4AD917DC2D4E78A04869A3') |
AEStestVector( i = 'aes-ecb-vt-192-85', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000080000000000', |
ct = '866A4519AB1D199F25886B89D0539ACC') |
AEStestVector( i = 'aes-ecb-vt-192-86', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000040000000000', |
ct = 'EC0CFD37E4CBC7E8BE385283F7AEA75A') |
AEStestVector( i = 'aes-ecb-vt-192-87', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000020000000000', |
ct = 'CA2F383AACCA0810AA13F3E710621422') |
AEStestVector( i = 'aes-ecb-vt-192-88', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000010000000000', |
ct = '1D0EEF6870444F950937831EC0A55D98') |
AEStestVector( i = 'aes-ecb-vt-192-89', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000008000000000', |
ct = '37839B35ED6801E7670496D479A95017') |
AEStestVector( i = 'aes-ecb-vt-192-90', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000004000000000', |
ct = '02317C8C7098C4F94AB867AC7A49DD8D') |
AEStestVector( i = 'aes-ecb-vt-192-91', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000002000000000', |
ct = 'FFB4CB4E3F7F8BF3367EBD43236518B4') |
AEStestVector( i = 'aes-ecb-vt-192-92', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000001000000000', |
ct = '36BEDEF1E4AA3E4A40A305741713FCBF') |
AEStestVector( i = 'aes-ecb-vt-192-93', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000800000000', |
ct = 'B2DFE3C4870269C1E3FEEC39161540D9') |
AEStestVector( i = 'aes-ecb-vt-192-94', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000400000000', |
ct = '147EF2518AD45DA0026056ECBF6A3DFA') |
AEStestVector( i = 'aes-ecb-vt-192-95', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000200000000', |
ct = '027A75E4DE635790E47ACE90D7928804') |
AEStestVector( i = 'aes-ecb-vt-192-96', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000100000000', |
ct = 'C4CF3CCB59BF87D0AFBD629F48CFBB7B') |
AEStestVector( i = 'aes-ecb-vt-192-97', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000080000000', |
ct = '35165C93F564C97E1C32EF97E8151A87') |
AEStestVector( i = 'aes-ecb-vt-192-98', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000040000000', |
ct = '449DE37F7D5A1BBD628ABBE7E061701D') |
AEStestVector( i = 'aes-ecb-vt-192-99', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000020000000', |
ct = 'B1D45EAF218F1799B149BAD677FE129F') |
AEStestVector( i = 'aes-ecb-vt-192-100', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000010000000', |
ct = 'BE08AC6DB6BD0583AA9D2ABC71C73DCD') |
AEStestVector( i = 'aes-ecb-vt-192-101', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000008000000', |
ct = 'BCC835BD3DF1A79E4C7C145B899A5C25') |
AEStestVector( i = 'aes-ecb-vt-192-102', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000004000000', |
ct = '3D311EA611FF5AF371301C58A8E9912D') |
AEStestVector( i = 'aes-ecb-vt-192-103', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000002000000', |
ct = 'A5A1BEA594ACC7CA80F09EA5ADDB5C71') |
AEStestVector( i = 'aes-ecb-vt-192-104', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000001000000', |
ct = '0F09492429FE7222D6CD8190D9F2FFBF') |
AEStestVector( i = 'aes-ecb-vt-192-105', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000800000', |
ct = '816D2220A16B8AAEE71364FD43636C6F') |
AEStestVector( i = 'aes-ecb-vt-192-106', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000400000', |
ct = 'D7E8702408419ED73191B107EAF75A0B') |
AEStestVector( i = 'aes-ecb-vt-192-107', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000200000', |
ct = '9B170EFB1E235B433C78E276BEA082F0') |
AEStestVector( i = 'aes-ecb-vt-192-108', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000100000', |
ct = '03BBECC5598AE974430F29395522F096') |
AEStestVector( i = 'aes-ecb-vt-192-109', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000080000', |
ct = 'DB53517766C0E8CF42059607CBA89380') |
AEStestVector( i = 'aes-ecb-vt-192-110', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000040000', |
ct = '2E2AF4B7931F0AEFFAC5471148A5BB97') |
AEStestVector( i = 'aes-ecb-vt-192-111', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000020000', |
ct = 'C872C0408266403B984F635FF5683DE4') |
AEStestVector( i = 'aes-ecb-vt-192-112', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000010000', |
ct = '15DCF750B0E3A68AD1F4EFD07E8967B4') |
AEStestVector( i = 'aes-ecb-vt-192-113', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000008000', |
ct = 'B41092048E9E6A749F6FD8CE515A23A3') |
AEStestVector( i = 'aes-ecb-vt-192-114', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000004000', |
ct = '4DA9267D62507994312BD5C99ADDE730') |
AEStestVector( i = 'aes-ecb-vt-192-115', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000002000', |
ct = '9E2FCA6D1D626E9C6A924EBF7DBF618A') |
AEStestVector( i = 'aes-ecb-vt-192-116', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000001000', |
ct = 'E092E8D7EF2C2465AEFB2493C3063590') |
AEStestVector( i = 'aes-ecb-vt-192-117', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000800', |
ct = '1C0E58DA37D1068378A88DBE2EDE4E10') |
AEStestVector( i = 'aes-ecb-vt-192-118', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000400', |
ct = '19063F854232B8509A6A3A6D46809959') |
AEStestVector( i = 'aes-ecb-vt-192-119', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000200', |
ct = '447FB09E54EFA285F7530F25C4EA0022') |
AEStestVector( i = 'aes-ecb-vt-192-120', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000100', |
ct = 'F6ABE86321BE40E1FBFDAFED37CC1D9B') |
AEStestVector( i = 'aes-ecb-vt-192-121', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000080', |
ct = '4E8506CD006666341D6CF51F98B41F35') |
AEStestVector( i = 'aes-ecb-vt-192-122', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000040', |
ct = '53995DE0009CA18BECAFB8307C54C14C') |
AEStestVector( i = 'aes-ecb-vt-192-123', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000020', |
ct = '2006BF99F4C58B6CC2627856593FAEEA') |
AEStestVector( i = 'aes-ecb-vt-192-124', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000010', |
ct = '2DA697D2737CB30B744A4644FA1CBC6E') |
AEStestVector( i = 'aes-ecb-vt-192-125', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000008', |
ct = '47A22ACDB60C3A986A8F76ECD0EA3433') |
AEStestVector( i = 'aes-ecb-vt-192-126', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000004', |
ct = 'FDAA17C2CDE20268FE36E164EA532151') |
AEStestVector( i = 'aes-ecb-vt-192-127', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000002', |
ct = '98E7247C07F0FE411C267E4384B0F600') |
AEStestVector( i = 'aes-ecb-vt-192-128', |
key = '000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000001', |
ct = 'CD33B28AC773F74BA00ED1F312572435') |
AEStestVector( i = 'aes-ecb-vt-256-1', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '80000000000000000000000000000000', |
ct = 'DDC6BF790C15760D8D9AEB6F9A75FD4E') |
AEStestVector( i = 'aes-ecb-vt-256-2', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '40000000000000000000000000000000', |
ct = 'C7098C217C334D0C9BDF37EA13B0822C') |
AEStestVector( i = 'aes-ecb-vt-256-3', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '20000000000000000000000000000000', |
ct = '60F0FB0D4C56A8D4EEFEC5264204042D') |
AEStestVector( i = 'aes-ecb-vt-256-4', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '10000000000000000000000000000000', |
ct = '73376FBBF654D0686E0E84001477106B') |
AEStestVector( i = 'aes-ecb-vt-256-5', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '08000000000000000000000000000000', |
ct = '2F443B52BA5F0C6EA0602C7C4FD259B6') |
AEStestVector( i = 'aes-ecb-vt-256-6', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '04000000000000000000000000000000', |
ct = '75D11B0E3A68C4223D88DBF017977DD7') |
AEStestVector( i = 'aes-ecb-vt-256-7', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '02000000000000000000000000000000', |
ct = '779B38D15BFFB63D8D609D551A5CC98E') |
AEStestVector( i = 'aes-ecb-vt-256-8', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '01000000000000000000000000000000', |
ct = '5275F3D86B4FB8684593133EBFA53CD3') |
AEStestVector( i = 'aes-ecb-vt-256-9', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00800000000000000000000000000000', |
ct = '1CEF2074B336CEC62F12DEA2F6AB1481') |
AEStestVector( i = 'aes-ecb-vt-256-10', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00400000000000000000000000000000', |
ct = '1AEF5ABBAD9D7160874578DCD8BAE172') |
AEStestVector( i = 'aes-ecb-vt-256-11', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00200000000000000000000000000000', |
ct = '46C525DB17E72F26BF03216846B6F609') |
AEStestVector( i = 'aes-ecb-vt-256-12', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00100000000000000000000000000000', |
ct = 'E24411F941BBE08788781E3EC52CBAA4') |
AEStestVector( i = 'aes-ecb-vt-256-13', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00080000000000000000000000000000', |
ct = '83A3DEDD1DD27018F6A6477E40527581') |
AEStestVector( i = 'aes-ecb-vt-256-14', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00040000000000000000000000000000', |
ct = 'B68F8A2CDBAB0C923C67FC8F0F1087DE') |
AEStestVector( i = 'aes-ecb-vt-256-15', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00020000000000000000000000000000', |
ct = '649944A70C32BF87A7409E7AE128FDE8') |
AEStestVector( i = 'aes-ecb-vt-256-16', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00010000000000000000000000000000', |
ct = '2846526D67387539C89314DE9E0C2D02') |
AEStestVector( i = 'aes-ecb-vt-256-17', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00008000000000000000000000000000', |
ct = 'A9A0B8402E53C70DD1688054BA58DDFD') |
AEStestVector( i = 'aes-ecb-vt-256-18', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00004000000000000000000000000000', |
ct = '4A72E6E1B79C83AC4BE3EBA5699EED48') |
AEStestVector( i = 'aes-ecb-vt-256-19', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00002000000000000000000000000000', |
ct = 'B0E36B867BA4FF2B77D0614B0E364E4C') |
AEStestVector( i = 'aes-ecb-vt-256-20', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00001000000000000000000000000000', |
ct = '49B57DE141F6418E3090F24DDD4014B6') |
AEStestVector( i = 'aes-ecb-vt-256-21', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000800000000000000000000000000', |
ct = 'A6C0D5B9797258E1987AC5F6CD20146D') |
AEStestVector( i = 'aes-ecb-vt-256-22', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000400000000000000000000000000', |
ct = '426CF4BDCAA369175965D26E7C71EEA2') |
AEStestVector( i = 'aes-ecb-vt-256-23', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000200000000000000000000000000', |
ct = 'E27F484CE54BC99BC1A52BDA3B518A26') |
AEStestVector( i = 'aes-ecb-vt-256-24', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000100000000000000000000000000', |
ct = 'D16D186284C7E6EE64B8104E0EF20BA5') |
AEStestVector( i = 'aes-ecb-vt-256-25', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000080000000000000000000000000', |
ct = '6431F8538AD54E1E044A9F71F8EF556B') |
AEStestVector( i = 'aes-ecb-vt-256-26', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000040000000000000000000000000', |
ct = 'ECD57CEB451D27EB96C55B2042257E8E') |
AEStestVector( i = 'aes-ecb-vt-256-27', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000020000000000000000000000000', |
ct = '4F0F188DC911B1954AFBC734C9F68872') |
AEStestVector( i = 'aes-ecb-vt-256-28', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000010000000000000000000000000', |
ct = 'B54DEF0337626B65614E81EDFDE620F3') |
AEStestVector( i = 'aes-ecb-vt-256-29', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000008000000000000000000000000', |
ct = '6655D8074CAE0B90B0D3A3FE72D4D9DB') |
AEStestVector( i = 'aes-ecb-vt-256-30', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000004000000000000000000000000', |
ct = 'C6B74B6B9EB4FC0C9A237DB1B616D09A') |
AEStestVector( i = 'aes-ecb-vt-256-31', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000002000000000000000000000000', |
ct = 'D7B5D076EA56EC2B20791D7AD51CCF8F') |
AEStestVector( i = 'aes-ecb-vt-256-32', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000001000000000000000000000000', |
ct = 'FE160C224BF003CE3BDDC90CB52ED22C') |
AEStestVector( i = 'aes-ecb-vt-256-33', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000800000000000000000000000', |
ct = '5E00DA9BA94B5EC0D258D8A8002E0F6A') |
AEStestVector( i = 'aes-ecb-vt-256-34', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000400000000000000000000000', |
ct = '09AC6DCFF4DACFF1651E2BA212A292A3') |
AEStestVector( i = 'aes-ecb-vt-256-35', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000200000000000000000000000', |
ct = 'B283617E318D99AF83A05D9810BA89F7') |
AEStestVector( i = 'aes-ecb-vt-256-36', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000100000000000000000000000', |
ct = '0B5F70CCB40B0EF2538AE9B4A9770B35') |
AEStestVector( i = 'aes-ecb-vt-256-37', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000080000000000000000000000', |
ct = '43282BF180248FB517839B37F4DDAAE4') |
AEStestVector( i = 'aes-ecb-vt-256-38', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000040000000000000000000000', |
ct = 'DDBD534C8B2E6D30A268F88C55AD765B') |
AEStestVector( i = 'aes-ecb-vt-256-39', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000020000000000000000000000', |
ct = 'A41A164E50EC2D9F175E752B755E0B5C') |
AEStestVector( i = 'aes-ecb-vt-256-40', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000010000000000000000000000', |
ct = '37BFF99FF2F7AA97779E4ADF6F13FB10') |
AEStestVector( i = 'aes-ecb-vt-256-41', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000008000000000000000000000', |
ct = '9BA4F7BD298152903A683C4CEC669216') |
AEStestVector( i = 'aes-ecb-vt-256-42', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000004000000000000000000000', |
ct = '5FB750C7CE10DE7B4504248914D0DA06') |
AEStestVector( i = 'aes-ecb-vt-256-43', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000002000000000000000000000', |
ct = '3E748BFA108E086F51D56EC74A9E0FB9') |
AEStestVector( i = 'aes-ecb-vt-256-44', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000001000000000000000000000', |
ct = '31D4E56B99F5B73C1B8437DF332AFB98') |
AEStestVector( i = 'aes-ecb-vt-256-45', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000800000000000000000000', |
ct = '9DC6717B84FC55D266E7B1D9B5C52A5F') |
AEStestVector( i = 'aes-ecb-vt-256-46', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000400000000000000000000', |
ct = '8EF8BA007F23C0A50FC120E07041BCCD') |
AEStestVector( i = 'aes-ecb-vt-256-47', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000200000000000000000000', |
ct = 'C58F38E1839FC1918A12B8C9E88C66B6') |
AEStestVector( i = 'aes-ecb-vt-256-48', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000100000000000000000000', |
ct = 'B695D72A3FCF508C4050E12E40061C2D') |
AEStestVector( i = 'aes-ecb-vt-256-49', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000080000000000000000000', |
ct = '5D2736AD478A50583BC8C11BEFF16D7A') |
AEStestVector( i = 'aes-ecb-vt-256-50', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000040000000000000000000', |
ct = 'DF0EACA8F17847AD41F9578F14C7B56B') |
AEStestVector( i = 'aes-ecb-vt-256-51', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000020000000000000000000', |
ct = 'E5AA14AD48AD0A3C47CC35D5F8020E51') |
AEStestVector( i = 'aes-ecb-vt-256-52', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000010000000000000000000', |
ct = '11BE6C8F58EBD8CEF1A53F591A68E8CE') |
AEStestVector( i = 'aes-ecb-vt-256-53', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000008000000000000000000', |
ct = 'ECFE7BAFCBF42C1FEE015488770B3053') |
AEStestVector( i = 'aes-ecb-vt-256-54', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000004000000000000000000', |
ct = 'E552649F8D8EC4A1E1CD6DF50B6E6777') |
AEStestVector( i = 'aes-ecb-vt-256-55', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000002000000000000000000', |
ct = '521C0629DE93B9119CDB1DDC5809DDEA') |
AEStestVector( i = 'aes-ecb-vt-256-56', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000001000000000000000000', |
ct = 'CB38A62A0BAB1784156BA038CBA99BF6') |
AEStestVector( i = 'aes-ecb-vt-256-57', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000800000000000000000', |
ct = '76CCEE8AAACD394DE1EEF3DDA10CB54B') |
AEStestVector( i = 'aes-ecb-vt-256-58', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000400000000000000000', |
ct = '6AFF910FA1D5673140E2DB59B8416049') |
AEStestVector( i = 'aes-ecb-vt-256-59', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000200000000000000000', |
ct = '064A12C0EF73FB386801BF4F35F3120D') |
AEStestVector( i = 'aes-ecb-vt-256-60', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000100000000000000000', |
ct = '2240E374929D5B1BB8FF0FFDDDF640EC') |
AEStestVector( i = 'aes-ecb-vt-256-61', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000080000000000000000', |
ct = 'D4BA15C904C7692185DE85C02052E180') |
AEStestVector( i = 'aes-ecb-vt-256-62', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000040000000000000000', |
ct = '1714A315AB0166728A44CD91D4AE9018') |
AEStestVector( i = 'aes-ecb-vt-256-63', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000020000000000000000', |
ct = '6C970BDD9F0E222722EA31A1D12DD0AD') |
AEStestVector( i = 'aes-ecb-vt-256-64', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000010000000000000000', |
ct = 'F5956EDF02BD36A401BBB6CE77C3D3FB') |
AEStestVector( i = 'aes-ecb-vt-256-65', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000008000000000000000', |
ct = '0CA11F122CCD7C259DC597EED3DF9BC4') |
AEStestVector( i = 'aes-ecb-vt-256-66', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000004000000000000000', |
ct = '50109AB4912AD2560B206F331B62EB6C') |
AEStestVector( i = 'aes-ecb-vt-256-67', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000002000000000000000', |
ct = 'DBE7C91A4175614889A2D4BEFD64845E') |
AEStestVector( i = 'aes-ecb-vt-256-68', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000001000000000000000', |
ct = '0D3322853A571A6B46B79C0228E0DD25') |
AEStestVector( i = 'aes-ecb-vt-256-69', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000800000000000000', |
ct = '96E4EE0BB9A11C6FB8522F285BADDEB6') |
AEStestVector( i = 'aes-ecb-vt-256-70', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000400000000000000', |
ct = '96705C52D2CFCE82E630C93477C79C49') |
AEStestVector( i = 'aes-ecb-vt-256-71', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000200000000000000', |
ct = 'C50130AED6A126149D71F3888C83C232') |
AEStestVector( i = 'aes-ecb-vt-256-72', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000100000000000000', |
ct = '4816EFE3DEB380566EBA0C17BF582090') |
AEStestVector( i = 'aes-ecb-vt-256-73', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000080000000000000', |
ct = '0390857B4C8C98E4CF7A2B6F3394C507') |
AEStestVector( i = 'aes-ecb-vt-256-74', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000040000000000000', |
ct = '422E73A02025EBE8B8B5D6E0FA24FCB2') |
AEStestVector( i = 'aes-ecb-vt-256-75', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000020000000000000', |
ct = '3271AA7F4BF1D7C38050A43076D4FF76') |
AEStestVector( i = 'aes-ecb-vt-256-76', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000010000000000000', |
ct = 'D2074946F0D37B8975607BFC2E70234C') |
AEStestVector( i = 'aes-ecb-vt-256-77', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000008000000000000', |
ct = '1A509194C1270AB92E5A42D3A9F8D98B') |
AEStestVector( i = 'aes-ecb-vt-256-78', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000004000000000000', |
ct = '512438946360CCC4A5C6D73F6EED7130') |
AEStestVector( i = 'aes-ecb-vt-256-79', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000002000000000000', |
ct = '98CFCDEC46EBEA1A286B3004F2746A0D') |
AEStestVector( i = 'aes-ecb-vt-256-80', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000001000000000000', |
ct = 'A1CF369949677A3AF3D58E3EABF2741B') |
AEStestVector( i = 'aes-ecb-vt-256-81', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000800000000000', |
ct = 'D84C2E1A0E4A52166FA8FF6889D1E5E2') |
AEStestVector( i = 'aes-ecb-vt-256-82', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000400000000000', |
ct = '4AD91CCEEF60119B5078FD162D2735DE') |
AEStestVector( i = 'aes-ecb-vt-256-83', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000200000000000', |
ct = '2860793D818E97AAFF1D339D7702438D') |
AEStestVector( i = 'aes-ecb-vt-256-84', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000100000000000', |
ct = '6F9068BE73364AE250D89D78A6C9CE6F') |
AEStestVector( i = 'aes-ecb-vt-256-85', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000080000000000', |
ct = '024FC3FEF4883FEB1A8DD005305FECCE') |
AEStestVector( i = 'aes-ecb-vt-256-86', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000040000000000', |
ct = '08A61FE0816D75EA15EB3C9FB9CCDED6') |
AEStestVector( i = 'aes-ecb-vt-256-87', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000020000000000', |
ct = '449C86DFA13F260175CE39797686FFA4') |
AEStestVector( i = 'aes-ecb-vt-256-88', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000010000000000', |
ct = '4FFFFC29A59858E1133F2BFB1A8A4817') |
AEStestVector( i = 'aes-ecb-vt-256-89', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000008000000000', |
ct = '19425D1F6480B25096561295697DC2B7') |
AEStestVector( i = 'aes-ecb-vt-256-90', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000004000000000', |
ct = '31974727ECDD2C77C3A428FC3A8CB3FC') |
AEStestVector( i = 'aes-ecb-vt-256-91', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000002000000000', |
ct = 'A57CD704B3C95E744D08DF443458F2F5') |
AEStestVector( i = 'aes-ecb-vt-256-92', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000001000000000', |
ct = '486D8C193DB1ED73ACB17990442FC40B') |
AEStestVector( i = 'aes-ecb-vt-256-93', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000800000000', |
ct = '5E4DBF4E83AB3BC055B9FCC7A6B3A763') |
AEStestVector( i = 'aes-ecb-vt-256-94', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000400000000', |
ct = 'ACF2E0A693FBBCBA4D41B861E0D89E37') |
AEStestVector( i = 'aes-ecb-vt-256-95', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000200000000', |
ct = '32A7CB2AE066A51D2B78FC4B4CFCB608') |
AEStestVector( i = 'aes-ecb-vt-256-96', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000100000000', |
ct = '677D494DBB73CAF55C1990158DA12F14') |
AEStestVector( i = 'aes-ecb-vt-256-97', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000080000000', |
ct = '082A0D2367512ADF0D75A151BFBE0A17') |
AEStestVector( i = 'aes-ecb-vt-256-98', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000040000000', |
ct = '5E5BB7337923C482CE8CBA249E6A8C7D') |
AEStestVector( i = 'aes-ecb-vt-256-99', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000020000000', |
ct = 'D3001BA7C7026EE3E5003179530AFCFC') |
AEStestVector( i = 'aes-ecb-vt-256-100', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000010000000', |
ct = '46EC44F8931E629FE8FD8961312EDDE1') |
AEStestVector( i = 'aes-ecb-vt-256-101', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000008000000', |
ct = 'C5F8ECD79C7B30E81D17E32079969310') |
AEStestVector( i = 'aes-ecb-vt-256-102', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000004000000', |
ct = '5B8AD6919E24CAEBCC55401AEE0C9802') |
AEStestVector( i = 'aes-ecb-vt-256-103', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000002000000', |
ct = 'C2302B7E701B5CC7F8B29E3516DBBFA6') |
AEStestVector( i = 'aes-ecb-vt-256-104', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000001000000', |
ct = 'A1D04D6A76F9F7A94D49FAA64A87F244') |
AEStestVector( i = 'aes-ecb-vt-256-105', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000800000', |
ct = '7FB6F92D35B5CB6C631600EDB9E860BA') |
AEStestVector( i = 'aes-ecb-vt-256-106', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000400000', |
ct = 'B2EF7078BCFACE07AEEC3F9B48830EB3') |
AEStestVector( i = 'aes-ecb-vt-256-107', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000200000', |
ct = 'F475A7493D24C7036E53390374C378B3') |
AEStestVector( i = 'aes-ecb-vt-256-108', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000100000', |
ct = 'B36802AC987377A37BD8EADC97C57D60') |
AEStestVector( i = 'aes-ecb-vt-256-109', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000080000', |
ct = 'ADDCD3D19689C4DDC738CE5F69DC9505') |
AEStestVector( i = 'aes-ecb-vt-256-110', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000040000', |
ct = '0DAF8CA22884915403C0F0BB1F4BD74F') |
AEStestVector( i = 'aes-ecb-vt-256-111', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000020000', |
ct = '4AF36BAE2660503B3248E4685059FD05') |
AEStestVector( i = 'aes-ecb-vt-256-112', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000010000', |
ct = '7D5631814DD8E917D97A0D514C743971') |
AEStestVector( i = 'aes-ecb-vt-256-113', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000008000', |
ct = 'BC3352500FC0CBB9DB5B5F6B491C1BE8') |
AEStestVector( i = 'aes-ecb-vt-256-114', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000004000', |
ct = '6A4A30BA87E87AF65C90AEB7AFEDC76B') |
AEStestVector( i = 'aes-ecb-vt-256-115', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000002000', |
ct = '77E6125897668AC8E73E8C79A6FF8336') |
AEStestVector( i = 'aes-ecb-vt-256-116', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000001000', |
ct = '3FA9D39104EBB323C7AAAA248960DD1E') |
AEStestVector( i = 'aes-ecb-vt-256-117', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000800', |
ct = 'FAD75AD76AB10ADC49036B250E229D39') |
AEStestVector( i = 'aes-ecb-vt-256-118', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000400', |
ct = '2FACAA5FE35B228A16AC74088D702EC4') |
AEStestVector( i = 'aes-ecb-vt-256-119', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000200', |
ct = '88B6CBCFDFEF8AD91720A1BB69A1F33E') |
AEStestVector( i = 'aes-ecb-vt-256-120', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000100', |
ct = 'C7E9D250998632D444356242EF04058D') |
AEStestVector( i = 'aes-ecb-vt-256-121', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000080', |
ct = 'B14DAD8D3D9153F46C0D3A1AD63C7A05') |
AEStestVector( i = 'aes-ecb-vt-256-122', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000040', |
ct = '60ABA678A506608D0845966D29B5F790') |
AEStestVector( i = 'aes-ecb-vt-256-123', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000020', |
ct = '482DC43F2388EF25D24144E144BD834E') |
AEStestVector( i = 'aes-ecb-vt-256-124', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000010', |
ct = '1490A05A7CEE43BDE98B56E309DC0126') |
AEStestVector( i = 'aes-ecb-vt-256-125', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000008', |
ct = 'ABFA77CD6E85DA245FB0BDC5E52CFC29') |
AEStestVector( i = 'aes-ecb-vt-256-126', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000004', |
ct = 'DD4AB1284D4AE17B41E85924470C36F7') |
AEStestVector( i = 'aes-ecb-vt-256-127', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000002', |
ct = 'CEA7403D4D606B6E074EC5D3BAF39D18') |
AEStestVector( i = 'aes-ecb-vt-256-128', |
key = '0000000000000000000000000000000000000000000000000000000000000000', |
pt = '00000000000000000000000000000001', |
ct = '530F8AFBC74536B9A963B4F1C4CB738B') |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/aes.py |
---|
0,0 → 1,33 |
""" crypto.aes |
AES Encryption Algorithm |
The AES algorithm is just Rijndael algorithm restricted to the default |
blockSize of 128 bits. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-06-01 |
""" |
from crypto.cipher.rijndael import Rijndael |
from crypto.cipher.base import BlockCipher, padWithPadLen, noPadding |
from crypto.errors import BadKeySizeError |
class AES(Rijndael): |
""" The AES algorithm is the Rijndael block cipher restricted to block |
sizes of 128 bits and key sizes of 128, 192 or 256 bits |
""" |
def __init__(self, key = None, padding = padWithPadLen(), keySize=16): |
""" Initialize AES, keySize is in bytes """ |
if not (keySize == 16 or keySize == 24 or keySize == 32) : |
raise BadKeySizeError, 'Illegal AES key size, must be 16, 24, or 32 bytes' |
Rijndael.__init__( self, key, padding=padding, keySize=keySize, blockSize=16 ) |
self.name = 'AES' |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/icedoll_test.py |
---|
0,0 → 1,91 |
#! /usr/bin/env python |
""" crypto.cipher.icedoll_test |
Tests for icedoll encryption algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.icedoll import Icedoll |
from crypto.cipher.base import noPadding |
from binascii import a2b_hex |
from binascii_plus import b2a_p, a2b_p |
import unittest |
class Icedoll_Basic_Tests(unittest.TestCase): |
""" Test Icedoll algorithm """ |
def testDctEqPt(self): |
""" test of plaintext = decrypt(encrypt(plaintext)) """ |
alg = Icedoll( 16*chr(0), padding=noPadding()) |
pt = 16*4*'a' # block aligned |
ct = alg.encrypt(pt) |
print 'ct = ',b2a_p(ct) |
dct = alg.decrypt(ct) |
print 'dct = ',b2a_p(dct) |
assert(pt == dct), 'pt != dct' |
alg = Icedoll( 16*chr(0)) # autoPad |
pt = 17*4*'a' # non-block aligned |
ct = alg.encrypt(pt) |
print 'ct = ',b2a_p(ct) |
dct = alg.decrypt(ct) |
print 'dct = ',b2a_p(dct) |
assert(pt == dct), 'pt != dct' |
def xxxtestGladman_dev_vec(self): |
""" All 25 combinations of block and key size. |
These test vectors were generated by Dr Brian Gladman |
using the program aes_vec.cpp <brg@gladman.uk.net> 24th May 2001. |
vectors in file: dev_vec.txt |
http://fp.gladman.plus.com/cryptography_technology/rijndael/index.htm |
note -> ket, pt the same .. ct different |
""" |
def IcedollTestVec(i, key, pt, ct): |
""" Run single AES test vector with any legal blockSize |
and any legal key size. """ |
bkey, plainText, cipherText = a2b_hex(key), a2b_hex(pt), a2b_hex(ct) |
kSize = len(bkey) |
bSize = len(cipherText) # set block size to length of block |
alg = Icedoll(bkey, keySize=kSize, blockSize=bSize, padding=noPadding()) |
cct = alg.encrypt(plainText) |
print 'pt =',b2a_p(plainText) |
print 'ct =',b2a_p(cct) |
dcct = alg.decrypt(cct) |
#print '_dcct',b2a_p(dcct) |
self.assertEqual( dcct, plainText ) |
self.assertEqual( alg.encrypt(plainText), cipherText ) |
self.assertEqual( alg.decrypt(cipherText), plainText ) |
IcedollTestVec( i = 'dev_vec.txt 16 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '3925841d02dc09fbdc118597196a0b32') |
IcedollTestVec( i = 'dev_vec.txt 16 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '231d844639b31b412211cfe93712b880') |
IcedollTestVec( i = 'dev_vec.txt 16 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = 'f9fb29aefc384a250340d833b87ebc00') |
IcedollTestVec( i = 'dev_vec.txt 16 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '8faa8fe4dee9eb17caa4797502fc9d3f') |
IcedollTestVec( i = 'dev_vec.txt 16 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '1a6e6c2c662e7da6501ffb62bc9e93f3') |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/base.py |
---|
0,0 → 1,140 |
""" crypto.cipher.base |
Base 'BlockCipher' and Pad classes for cipher instances. |
BlockCipher supports automatic padding and type conversion. The BlockCipher |
class was written to make the actual algorithm code more readable and |
not for performance. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-04-25 changed block input |
""" |
from crypto.errors import DecryptNotBlockAlignedError |
from crypto.keyedHash.pbkdf2 import pbkdf2 |
class BlockCipher: |
""" Block ciphers """ |
def __init__(self): |
self.reset() |
def reset(self): |
self.resetEncrypt() |
self.resetDecrypt() |
def resetEncrypt(self): |
self.encryptBlockCount = 0 |
self.bytesToEncrypt = '' |
def resetDecrypt(self): |
self.decryptBlockCount = 0 |
self.bytesToDecrypt = '' |
def setPassphrase(self,passphrase): |
""" Use pbkdf2 to hash passphrase into a key """ |
self.setKey( pbkdf2( passphrase, self.name, 4096, self.keySize) ) |
def encrypt(self, plainText, more = None): |
""" Encrypt a string and return a binary string """ |
self.bytesToEncrypt += plainText # append plainText to any bytes from prior encrypt |
numBlocks, numExtraBytes = divmod(len(self.bytesToEncrypt), self.blockSize) |
cipherText = '' |
for i in range(numBlocks): |
bStart = i*self.blockSize |
ctBlock = self.encryptBlock(self.bytesToEncrypt[bStart:bStart+self.blockSize]) |
self.encryptBlockCount += 1 |
cipherText += ctBlock |
if numExtraBytes > 0: # save any bytes that are not block aligned |
self.bytesToEncrypt = self.bytesToEncrypt[-numExtraBytes:] |
else: |
self.bytesToEncrypt = '' |
if more == None: # no more data expected from caller |
finalBytes = self.padding.addPad(self.bytesToEncrypt,self.blockSize) |
if len(finalBytes) > 0: |
ctBlock = self.encryptBlock(finalBytes) |
self.encryptBlockCount += 1 |
cipherText += ctBlock |
self.resetEncrypt() |
return cipherText |
def decrypt(self, cipherText, more = None): |
""" Decrypt a string and return a string """ |
self.bytesToDecrypt += cipherText # append to any bytes from prior decrypt |
numBlocks, numExtraBytes = divmod(len(self.bytesToDecrypt), self.blockSize) |
if more == None: # no more calls to decrypt, should have all the data |
if numExtraBytes != 0: |
raise DecryptNotBlockAlignedError, 'Data not block aligned on decrypt' |
# hold back some bytes in case last decrypt has zero len |
if (more != None) and (numExtraBytes == 0) and (numBlocks >0) : |
numBlocks -= 1 |
numExtraBytes = self.blockSize |
plainText = '' |
for i in range(numBlocks): |
bStart = i*self.blockSize |
ptBlock = self.decryptBlock(self.bytesToDecrypt[bStart : bStart+self.blockSize]) |
self.decryptBlockCount += 1 |
plainText += ptBlock |
if numExtraBytes > 0: # save any bytes that are not block aligned |
self.bytesToEncrypt = self.bytesToEncrypt[-numExtraBytes:] |
else: |
self.bytesToEncrypt = '' |
if more == None: # last decrypt remove padding |
plainText = self.padding.removePad(plainText, self.blockSize) |
self.resetDecrypt() |
return plainText |
class BlockCipherWithIntegrity(BlockCipher): |
""" Base class for encryption with integrity checking |
just a holding place for now ... """ |
def __init__(self, authData, plainText): |
self.reset() |
class Pad: |
def __init__(self): |
pass # eventually could put in calculation of min and max size extension |
class padWithPadLen(Pad): |
""" Pad a binary string with the length of the padding """ |
def addPad(self, extraBytes, blockSize): |
""" Add padding to a binary string to make it an even multiple |
of the block size """ |
blocks, numExtraBytes = divmod(len(extraBytes), blockSize) |
padLength = blockSize - numExtraBytes |
return extraBytes + padLength*chr(padLength) |
def removePad(self, paddedBinaryString, blockSize): |
""" Remove padding from a binary string """ |
if not(0<len(paddedBinaryString)): |
raise DecryptNotBlockAlignedError, 'Expected More Data' |
return paddedBinaryString[:-ord(paddedBinaryString[-1])] |
class noPadding(Pad): |
""" No padding. Use this to get ECB behavior from encrypt/decrypt """ |
def addPad(self, extraBytes, blockSize): |
""" Add no padding """ |
return extraBytes |
def removePad(self, paddedBinaryString, blockSize): |
""" Remove no padding """ |
return paddedBinaryString |
class padWithZeros(Pad): |
""" Zero padding. Used in CBC_MAC processing """ |
def addPad(self, extraBytes, blockSize): |
""" Add padding to a binary string to make it an even multiple |
of the block size """ |
blocks, numExtraBytes = divmod(len(extraBytes), blockSize) |
padLength = blockSize - numExtraBytes |
return extraBytes + padLength*chr(0x00) |
def removePad(self, paddedBinaryString, blockSize): |
""" Remove no padding, you really should, but no way to tell padding size """ |
return paddedBinaryString |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/icedoll.py |
---|
0,0 → 1,102 |
""" crypto.cipher.icedoll |
Modification of Rijndael to provide infinite error extension. |
The ith round of Rijndael is tapped and used to process the |
subsequent block. |
Changes to base Rijndael are marked with: '# --------------------------' |
For Rijndael with N rounds, normally ECB mode is C[i] = Ek(N,P[i]) |
Modification is: |
Fi = Ek(t,P[i-1]) ; Fi, with i=0 is nonce or a fixed value |
C[i] = Fi^Ek(N,P[i]^Fi) |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
June 2002 |
February 2003 -> discovered Ron Rivest's "Tweakable Block Ciphers" |
http://theory.lcs.mit.edu/~rivest/publications.html |
These are about the same concept .... |
""" |
from crypto.cipher.base import BlockCipherWithIntegrity, padWithPadLen, noPadding |
from crypto.cipher.rijndael import * |
from binascii_plus import b2a_hex |
from copy import deepcopy |
class Icedoll(Rijndael): |
""" IceDoll encryption algorithm |
based on Rijndael, with added feedback for better integrity processing. |
Note - no integrity check is built into Icedoll directly |
""" |
def __init__(self,key=None,padding=padWithPadLen(),keySize=16,blockSize=16,tapRound=6,extraRounds=6): |
""" key, keysize, blockSize same as Rijndael, tapROund is feedback tap, """ |
self.tapRound = tapRound # <------- !!! change from Rijndael !!! |
self.extraRounds = extraRounds # <------- !!! change from Rijndael !!! |
self.name = 'ICEDOLL' |
self.keySize = keySize |
self.strength = keySize |
self.blockSize = blockSize # blockSize is in bytes |
self.padding = padding # change default to noPadding() to get normal ECB behavior |
assert( keySize%4==0 and NrTable[4].has_key(keySize/4)),'key size must be 16,20,24,29 or 32 bytes' |
assert( blockSize%4==0 and NrTable.has_key(blockSize/4)), 'block size must be 16,20,24,29 or 32 bytes' |
self.Nb = self.blockSize/4 # Nb is number of columns of 32 bit words |
self.Nk = keySize/4 # Nk is the key length in 32-bit words |
self.Nr = NrTable[self.Nb][self.Nk]+extraRounds # <------- !!! change from Rijndael !!! |
if key != None: |
self.setKey(key) |
def setKey(self, key): |
""" Set a key and generate the expanded key """ |
assert( len(key) == (self.Nk*4) ), 'Key length must be same as keySize parameter' |
self.__expandedKey = keyExpansion(self, key) |
self.reset() # BlockCipher.reset() |
def encryptBlock(self, plainTextBlock): |
""" Encrypt a block, plainTextBlock must be a array of bytes [Nb by 4] """ |
self.state = self._toBlock(plainTextBlock) |
if self.encryptBlockCount == 0: # first call, set frdd back |
self.priorFeedBack = self._toBlock(chr(0)*(4*self.Nb)) # <------- !!! change from Rijndael !!! |
AddRoundKey(self, self.priorFeedBack) # <------- !!! change from Rijndael !!! |
AddRoundKey(self, self.__expandedKey[0:self.Nb]) |
for round in range(1,self.Nr): #for round = 1 step 1 to Nr1 |
SubBytes(self) |
ShiftRows(self) |
MixColumns(self) |
if round == self.tapRound: |
nextFeedBack = deepcopy(self.state) # <------- !!! change from Rijndael !!! |
AddRoundKey(self, self.__expandedKey[round*self.Nb:(round+1)*self.Nb]) |
SubBytes(self) |
ShiftRows(self) |
AddRoundKey(self, self.__expandedKey[self.Nr*self.Nb:(self.Nr+1)*self.Nb]) |
AddRoundKey(self, self.priorFeedBack) # <------- !!! change from Rijndael !!! |
self.priorFeedBack = nextFeedBack # <------- !!! change from Rijndael !!! |
return self._toBString(self.state) |
def decryptBlock(self, encryptedBlock): |
""" decrypt a block (array of bytes) """ |
self.state = self._toBlock(encryptedBlock) |
if self.decryptBlockCount == 0: # first call, set frdd back |
self.priorFeedBack = self._toBlock( chr(0)*(4*self.Nb) ) # <------- !!! change from Rijndael !!! |
AddRoundKey(self, self.priorFeedBack) # <------- !!! change from Rijndael !!! |
AddRoundKey(self, self.__expandedKey[self.Nr*self.Nb:(self.Nr+1)*self.Nb]) |
for round in range(self.Nr-1,0,-1): |
InvShiftRows(self) |
InvSubBytes(self) |
AddRoundKey(self, self.__expandedKey[round*self.Nb:(round+1)*self.Nb]) |
if round == self.tapRound: |
nextFeedBack = deepcopy(self.state) # <------- !!! change from Rijndael !!! |
InvMixColumns(self) |
InvShiftRows(self) |
InvSubBytes(self) |
AddRoundKey(self, self.__expandedKey[0:self.Nb]) |
AddRoundKey(self, self.priorFeedBack) # <------- !!! change from Rijndael !!! |
self.priorFeedBack = nextFeedBack # <------- !!! change from Rijndael !!! |
return self._toBString(self.state) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/tkip_encr_test.py |
---|
0,0 → 1,97 |
#! /usr/bin/env python |
""" crypto.cipher.tkip_encr_test |
Tests for tkip encryption (mpdu only, no Michael) |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
January 2003 May have broken key mixing ...need to validate |
November 21, 2002 |
""" |
import unittest |
from crypto.cipher.tkip_encr import TKIP_encr |
from crypto.keyedHash.tkip_key_mixing import TKIP_Mixer |
from binascii_plus import a2b_p, b2a_p |
from struct import pack |
class TKIP_encr_TestVectors(unittest.TestCase): |
""" Test TKIP_encr algorithm using know values """ |
def checkTKIPtestVector(self, description, key, ta, iv, plainText, cipherText): |
""" Process TKIP encryption test vectors (no MIC) """ |
print '%s %s %s'%('='*((54-len(description))/2),description,'='*((54-len(description))/2)) |
# Convert from octet lists to string |
key = a2b_p(key) |
ta = a2b_p(ta) |
iv = a2b_p(iv) |
pt = a2b_p(plainText) |
kct = a2b_p(cipherText) |
mixer = TKIP_Mixer(key,ta) |
rc4key = mixer.newKey(iv) |
alg = TKIP_encr(key) |
alg.setTA(ta) |
print 'key: %s'%b2a_p(key)[9:] |
print 'rc4Key %s'%b2a_p(rc4key)[9:] # calculated |
print 'ta: %s'%b2a_p(ta)[9:] |
print 'iv: %s'%b2a_p(iv)[9:] |
print 'pt: %s'%b2a_p(pt)[9:] |
print 'kct: %s'%b2a_p(kct)[9:] |
ct = alg.encrypt(pt, iv) |
print 'ct: %s'%b2a_p(ct)[9:] |
cpt = alg.decrypt(kct) |
print 'cpt: %s'%b2a_p(cpt)[9:] |
print '========================================================' |
self.assertEqual( ct, kct ) |
alg.setKey(key) |
dct = alg.decrypt( ct ) |
self.assertEqual( dct, pt ) |
def testTKIP_KnownAnswer_01(self): |
""" TKIP Known Answer #1 |
Hand created from GC example 1 to include MIC in plaintext |
note - iv==0 """ |
description = "TKIP encr test 1 - all zero pn " |
key = "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f" |
ta = "10 22 33 44 55 66" |
iv = "00 00 00 00 00 00" |
plainText = """08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 |
18 19 1a 1b |
9c 12 11 62 08 e9 a0 83""" |
cipherText = """00 20 00 20 00 00 00 00 |
06 60 91 dc 37 82 31 ca 75 84 82 b6 54 b7 c5 3a |
81 4a cb bd 31 1e cc 3b 5c f7 df 69 53 0f c5 1b""" |
self.checkTKIPtestVector(description, key, ta, iv, plainText, cipherText) |
def XtestTKIP_KnownAnswer_02(self): |
""" TKIP Known Answer #2 """ |
description = "TKIP encr test 2" |
key = "36 23 0f 41 40 20 c9 e3 02 cb 5d 5d 28 d5 ff bf" |
ta = "01 02 03 04 05 06" |
iv = b2a_p(pack('<Q',0x123456785BA0)[:6]) |
rc4key = "5b 7b a0 31 a1 b0 60 55 f3" |
plainText = """aa aa 03 00 00 00 08 00 45 00 00 4e 66 1a 00 00 |
80 11 be 64 0a 00 01 22 0a ff ff ff 00 89 00 89 |
00 3a 00 00 80 a6 01 10 00 01 00 00 00 00 00""" |
cipherText = """58 11 A0 20 78 56 34 12 |
12 86 13 90 94 44 88 49 a3 9f e1 48 e0 f4 f3 8f |
78 ee de 66 c4 a2 8c a1 bd 39 00 7f 88 9b 95 c6 |
e6 9d cd 19 31 dc 25 61 c3 e1 9a d4 a6 4d 22 |
13 9b fa 26""" |
protectedMPDU = """08 41 23 01 01 02 03 04 05 06 01 02 03 04 05 06 |
01 22 33 44 55 66 00 00 a0 7b 5b 20 78 56 34 12 |
b8 2c 10 90 94 44 80 49 e6 9f e1 06 86 ee f3 8f |
f8 ff 60 02 ce a2 8d 83 b7 c6 ff 80 88 12 95 4f |
e6 a7 cd 19 b1 7a 24 71 c3 e0 9a d4 a6 4d 22 13 |
9b fa 26""" |
self.checkTKIPtestVector(description, key, ta, iv, plainText, cipherText) |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/aes_cbc_test.py |
---|
0,0 → 1,75 |
#! /usr/bin/env python |
""" crypto.cipher.cbc_test |
Tests for cbc encryption, uses AES for base algorithm |
Copyright (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.aes_cbc import AES_CBC |
from crypto.cipher.base import noPadding, padWithPadLen |
import unittest |
from binascii_plus import a2b_hex, b2a_hex, a2b_p |
class AES_CBC_autoIV(unittest.TestCase): |
def testAutoIV(self): |
k = a2b_hex('2b7e151628aed2a6abf7158809cf4f3c') |
alg = AES_CBC(key=k, padding=noPadding()) |
pt = a2b_hex('6bc1bee22e409f96e93d7e117393172a') |
ct = alg.encrypt(pt) |
dct = alg.decrypt(ct) |
self.assertEqual( dct, pt ) # 'AES_CBC auto IV error' |
def testAutoIVandPadding(self): |
k = a2b_hex('2b7e151628aed2a6abf7158809cf4f3c') |
alg = AES_CBC(key=k) # should default to padWithPadLen |
pt = a2b_hex('6bc1bee22e409f96e93d7e117393172a') |
ct = alg.encrypt(pt) |
dct = alg.decrypt(ct) |
self.assertEqual( dct, pt ) # 'AES_CBC auto IV and pad error' |
def testNonDupIV(self): |
""" Test to ensure that two instances of CBC don't get duplicate IV """ |
k = a2b_hex('2b7e151628aed2a6abf7158809cf4f3c') |
alg1 = AES_CBC(k) |
alg2 = AES_CBC(k) |
pt = a2b_hex('6bc1bee22e409f96e93d7e117393172a') |
ct1 = alg1.encrypt(pt) |
ct2 = alg2.encrypt(pt) |
assert( ct1!= ct2 ), 'AES_CBC dup IV error' |
class AES_CBC128_TestVectors(unittest.TestCase): |
""" Test AES_CBC128 algorithm using know values """ |
def testKnowValues(self): |
""" Test using vectors from NIST """ |
def CBCtestVector(key,iv,pt,kct): |
""" CBC test vectors using AES algorithm """ |
key,iv,pt,kct = a2b_hex(key),a2b_hex(iv),a2b_p(pt),a2b_p(kct) |
alg = AES_CBC(key, padding=noPadding()) |
self.assertEqual( alg.encrypt(pt,iv=iv), kct ) |
self.assertEqual( alg.decrypt(iv+kct), pt ) |
# http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf page 34 |
CBCtestVector( key = '2b7e151628aed2a6abf7158809cf4f3c', |
iv = '000102030405060708090a0b0c0d0e0f', |
pt = '6bc1bee22e409f96e93d7e117393172a', |
kct = '7649abac8119b246cee98e9b12e9197d') |
# four blocks of data |
CBCtestVector( key = '2b7e151628aed2a6abf7158809cf4f3c', |
iv = '000102030405060708090a0b0c0d0e0f', |
pt = """6bc1bee22e409f96e93d7e117393172a |
ae2d8a571e03ac9c9eb76fac45af8e51 |
30c81c46a35ce411e5fbc1191a0a52ef |
f69f2445df4f9b17ad2b417be66c3710""", |
kct = """7649abac8119b246cee98e9b12e9197d |
5086cb9b507219ee95db113a917678b2 |
73bed6b8e3c1743b7116e69e22229516 |
3ff1caa1681fac09120eca307586e1a7""") |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/tkip_encr.py |
---|
0,0 → 1,94 |
""" crypto.cipher.tkip_encr |
TKIP encryption from IEEE 802.11 TGi |
TKIP uses WEP (ARC4 with crc32) and key mixing |
This is only the encryption and not the Michael integrity check! |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
November 2002 |
""" |
from crypto.cipher.arc4 import ARC4 |
from zlib import crc32 |
from struct import pack |
from crypto.keyedHash.tkip_key_mixing import TKIP_Mixer |
from crypto.errors import BadKeySizeError, IntegrityCheckError |
from binascii_plus import * |
class TKIP_encr: |
""" TKIP Stream Cipher Algorithm without the Michael integrity check |
TKIP encryption on an MPDU using WEP with a longer 'iv' |
and the TKIP key mixing algorithm . This does NOT include |
the Michael integrity algorithm that operates on the MSDU data. |
""" |
def __init__(self, key=None, transmitterAddress=None, keyID=None): |
""" Initialize TKIP_encr, key -> octet string for key """ |
assert(keyID==0 or keyID==None), 'keyID should be zero in TKIP' |
self.keyId = 0 |
self.name = 'TKIP_encr' |
self.strength = 128 |
self.encryptHeaderSize = 8 # used to skip octets on decrypt |
self.arc4 = ARC4() # base algorithm |
self.keyMixer = TKIP_Mixer(key,transmitterAddress) |
if key != None: # normally in base init, uses adjusted keySize |
self.setKey(key) |
if transmitterAddress!=None: |
self.setTA(transmitterAddress) |
def setKey(self, key, ta=None): |
""" Set key, key string is 16 octets long """ |
self.keyMixer.setKey(key) |
if ta!=None: |
self.setTA(ta) |
def setTA(self, transmitterAddress): |
""" Set the transmitter address """ |
self.keyMixer.setTA(transmitterAddress) |
def _getIVandKeyID(self, cipherText): |
""" Parse the TKIP header to get iv and set KeyID |
iv is returned as octet string and is little-endian!!! |
""" |
assert(ord(cipherText[3])& 0x20),'extIV SHOULD be set in TKIP header' |
self.setCurrentKeyID = (ord(cipherText[3])&0xC0)>>6 |
return cipherText[:3] + cipherText[5:9] # note iv octets are little-endian!!! |
def _makeARC4key(self, tscOctets, keyID=0): |
""" Make an ARC4 key from TKIP Sequence Counter Octets (little-endian) """ |
if keyID!=0 : |
raise 'TKIP expects keyID of zero' |
print "tscOctets in tkmixer=",b2a_p(tscOctets) |
newKey = self.keyMixer.newKey(tscOctets) |
print "newKey=", b2a_p(newKey) |
return newKey |
def encrypt(self, plainText, iv): |
""" Encrypt a string and return a binary string |
iv is 6 octets of little-endian encoded pn |
""" |
assert(len(iv)==6),'TKIP bad IV size on encryption' |
self.pnField = iv |
self.arc4.setKey( self._makeARC4key(iv) ) |
eh1 = chr((ord(iv[0])|0x20)&0x7f) |
encryptionHeader = iv[0] + eh1 + iv[1] + chr((self.keyId<<6)|0x20) + iv[2:] |
crc = pack('<I', crc32(plainText) ) |
cipherText = encryptionHeader + self.arc4.encrypt(plainText+crc) |
return cipherText |
def decrypt(self, cipherText): |
""" Decrypt a WEP packet, assumes WEP 4 byte header on packet """ |
assert(ord(cipherText[3])& 0x20),'extIV SHOULD be set in TKIP header' |
self.setCurrentKeyID = (ord(cipherText[3])&0xC0)>>6 |
iv = cipherText[0]+cipherText[2]+cipherText[4:8] |
self.pnField = iv |
self.arc4.setKey( self._makeARC4key(iv) ) |
plainText = self.arc4.decrypt(cipherText[self.encryptHeaderSize:]) |
if plainText[-4:] != pack('<I',crc32(plainText[:-4])): # check data integrity |
raise IntegrityCheckError, 'WEP CRC Integrity Check Error' |
return plainText[:-4] |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/aes_cbc.py |
---|
0,0 → 1,20 |
""" crypto.cipher.aes_cbc |
AES_CBC Encryption Algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-06-14 |
""" |
from crypto.cipher.aes import AES |
from crypto.cipher.cbc import CBC |
from crypto.cipher.base import BlockCipher, padWithPadLen, noPadding |
class AES_CBC(CBC): |
""" AES encryption in CBC feedback mode """ |
def __init__(self, key=None, padding=padWithPadLen(), keySize=16): |
CBC.__init__( self, AES(key, noPadding(), keySize), padding) |
self.name = 'AES_CBC' |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/tkip_fake_crc_test.py |
---|
0,0 → 1,89 |
#! /usr/bin/env python |
""" crypto.cipher.tkip_fake_crc_test |
This module tests the creation of TKIP data that passes |
the WEP crc, but would fail the Michael MIC check. |
The IEEE TGi specification mandates a 60 second |
dissassociation of all sessions when two of these |
malicious packets are recieved in a 60 second period. |
Copyright © (c) 2003 by Paul A. Lambert. |
See LICENSE.txt for license terms of this software. |
""" |
import unittest |
from crypto.cipher.tkip_encr import TKIP_encr |
from crypto.common import xor |
from binascii_plus import * |
from zlib import crc32 |
from struct import pack, unpack |
class TKIP_tkip_fake_crc_test(unittest.TestCase): |
""" Create TKIP encrypted data, modifiy it and patch the crc32 """ |
def testTKIP_crc_modify(self): |
""" TKIP crc modification test """ |
key = a2b_p( "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f" ) # the PMK |
ta = a2b_p( "10 22 33 44 55 66" ) # the TK (key) is created from the iv and ta |
keyID = 0 |
alg = TKIP_encr(key, ta, keyID) # this is just the encryption algorithm with no Michael MIC |
plainText = ''.join([chr(i) for i in range(20)]) # 20 octets (0 t 19) |
iv = a2b_p( "01 00 00 00 00 00" ) # the little-endian encoded PacketNumber |
cipherText = alg.encrypt(plainText, iv) |
ctHeader = cipherText[0:8] # encoded iv and keyId |
ctData = cipherText[8:-4] |
ctCrcEncrypted = cipherText[-4:] # just the encrypted crc fields |
# lets change the first octet of the data from 0x00 to 0x01 |
base = (len(ctData))*chr(0) |
baseCrc = crc32(base) |
bitMask = chr(1)+(len(ctData)-1)*chr(0) |
maskCrc = crc32(bitMask) |
maskedCt = xor(bitMask,ctData) |
maskedCtCrc = crc32(maskedCt) |
print "--------------- make a modified packet and MIC ------------" |
print "plainText = %s " % b2a_hex(plainText) |
print "cipherText= %s " % b2a_hex(cipherText) |
print "ctData = %s " % b2a_hex(ctData) |
print "ctxtCrc = %s " % b2a_hex(ctCrcEncrypted) |
print "base = %s " % b2a_hex(base) |
print "baseCrc = %0X" % baseCrc |
print "mask = %s " % b2a_hex(bitMask) |
print "maskCrc = %0X" % maskCrc |
print "maskedCt = %s " % b2a_hex(maskedCt) |
print "maskCtCrc= %0X" % maskedCtCrc |
maskDiff = maskCrc ^ baseCrc |
newCtCrc = pack('<I', (maskDiff ^ unpack('<I',ctCrcEncrypted)[0]) ) |
newCt = ctHeader + maskedCt + newCtCrc |
newPt = alg.decrypt(newCt) # this will raise an exception if the crc is 'bad'! |
print "newPt = %s " % b2a_hex(newPt) |
def test_TKIP_MIC_Analysis(self): |
""" Simple analysis of TKIP CRC attacks based on |
given Michael strength of 2^20 |
""" |
michaelStrength = 2.**20 # probability of MIC attack from N.F. |
secondsPerHour = 60.*60. |
secondsPerDay = 24.*secondsPerHour |
secondsPerYear = 365.*secondsPerDay |
attacksPerSecond = 1. |
attacksPerYear = attacksPerSecond * secondsPerYear |
print "\n\n---- Michael Attack Analysis w/wo Countermeasures ----" |
print "%s"%"Attacks Number Counter Mean" |
print "%s"%" per of Measure Success" |
print "%s"%"Second STAs Type Time" |
print "------------------------------------" |
print " 1 1 none %3d days" % (michaelStrength/secondsPerDay/attacksPerSecond) |
attacksPerSecond = 100 |
print " 100 1 none %3d hours" % (michaelStrength/secondsPerHour/attacksPerSecond) |
print " .016 1 60sec/session %3d year" % (michaelStrength/secondsPerYear/(1/60.)) |
print " 100/60 100 60sec/session %3d days" % (michaelStrength/secondsPerDay/(100./60.) ) |
print " 100 1 none %3d hours" % (michaelStrength/secondsPerHour/attacksPerSecond) |
if __name__ == '__main__': |
# Run the tests from the command line |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/test_all_ciphers.py |
---|
0,0 → 1,26 |
#! /usr/bin/env python |
""" crypto.cipher.test_all_ciphers |
All unit tests in the cipher package |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
import unittest |
import crypto.cipher.aes_cbc_test |
import crypto.cipher.aes_test |
import crypto.cipher.arc4_test |
import crypto.cipher.cbc_test |
import crypto.cipher.ccm_test |
import crypto.cipher.icedoll_test |
import crypto.cipher.rijndael_test |
import crypto.cipher.tkip_encr_test |
import crypto.cipher.tkip_fake_crc_test |
import crypto.cipher.wep_test |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/cbc_test.py |
---|
0,0 → 1,127 |
#! /usr/bin/env python |
""" crypto.cipher.cbc_test |
Tests for cbc encryption, uses AES for base algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.cbc import CBC |
from crypto.cipher.aes import AES |
from crypto.cipher.rijndael import Rijndael |
from crypto.cipher.base import noPadding |
import unittest |
from binascii_plus import b2a_hex, a2b_p, b2a_p |
class CBC_AES128_TestVectors(unittest.TestCase): |
""" Test CBC with AES128 algorithm using know values """ |
def testKnowValues(self): |
""" Test using vectors from NIST cbc_e_m.txt""" |
def CBCtestVector(key,iv,pt,kct): |
""" CBC test vectors using AES algorithm """ |
key,iv,pt,kct = a2b_p(key),a2b_p(iv),a2b_p(pt),a2b_p(kct) |
alg = CBC(AES(key), padding=noPadding()) |
self.assertEqual( alg.encrypt(pt,iv=iv), kct ) |
self.assertEqual( alg.decrypt(iv+kct), pt ) |
# http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf page 34 |
CBCtestVector( key = '2b7e151628aed2a6abf7158809cf4f3c', |
iv = '000102030405060708090a0b0c0d0e0f', |
pt = '6bc1bee22e409f96e93d7e117393172a', |
kct = '7649abac8119b246cee98e9b12e9197d') |
# four blocks of data |
CBCtestVector( key = '2b7e151628aed2a6abf7158809cf4f3c', |
iv = '000102030405060708090a0b0c0d0e0f', |
pt = """6bc1bee22e409f96e93d7e117393172a |
ae2d8a571e03ac9c9eb76fac45af8e51 |
30c81c46a35ce411e5fbc1191a0a52ef |
f69f2445df4f9b17ad2b417be66c3710""", |
kct = """7649abac8119b246cee98e9b12e9197d |
5086cb9b507219ee95db113a917678b2 |
73bed6b8e3c1743b7116e69e22229516 |
3ff1caa1681fac09120eca307586e1a7""") |
class CBC_Rijndael_Test(unittest.TestCase): |
""" CBC test with Rijndael """ |
def testCBC_Rijndael_256(self): |
""" Rijndael CBC 256 """ |
key = '2b7e151628aed2a6abf7158809cf4f3c' |
iv = '000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f' |
pt = """6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e51 |
30c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be66c3710""" |
key,iv,pt = a2b_p(key),a2b_p(iv),a2b_p(pt) |
alg = CBC(Rijndael(key, blockSize=32)) |
ct = alg.encrypt(pt,iv=iv) |
self.assertEqual( alg.decrypt(iv+ct), pt ) |
def testCBC_Rijndael_variable_data(self): |
""" Rijndael CBC 256 """ |
key = '2b7e151628aed2a6abf7158809cf4f3c' |
iv = '000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f' |
key,iv = a2b_p(key),a2b_p(iv) |
alg = CBC(Rijndael(key, blockSize=32)) |
for i in range(100): |
pt = i*'a' |
ct = alg.encrypt(pt,iv=iv) |
self.assertEqual( alg.decrypt(iv+ct), pt ) |
class CBC_Auto_IV_Test(unittest.TestCase): |
""" CBC IV tests""" |
def testIVuniqueness(self): |
""" Test that two different instances have different IVs """ |
key = a2b_p('2b7e151628aed2a6abf7158809cf4f3c') |
pt = "This is a test case" |
alg1 = CBC(Rijndael(key, blockSize=32)) |
alg2 = CBC(Rijndael(key, blockSize=32)) |
ct1 = alg1.encrypt(pt) |
ct2 = alg2.encrypt(pt) |
self.assertNotEqual( ct1,ct2 ) |
def testIVmultencryptUnique(self): |
""" Test that two different encrypts have different IVs """ |
key = a2b_p('2b7e151628aed2a6abf7158809cf4f3c') |
pt = "This is yet another test case" |
alg1 = CBC(Rijndael(key, blockSize=32)) |
ct1 = alg1.encrypt(pt) |
ct2 = alg1.encrypt(pt) |
self.assertNotEqual( ct1, ct2 ) |
self.assertEqual( alg1.decrypt(ct1), pt ) |
self.assertEqual( alg1.decrypt(ct1), alg1.decrypt(ct2) ) |
class CBC_multipart_tests(unittest.TestCase): |
""" Test mulitple calls to encrypt/decrypt with moreData set """ |
def testMultipassEncrypt(self): |
""" Test moreData usage """ |
alg = CBC(Rijndael(16*chr(0), blockSize=32)) |
ct1 = '' |
for i in range(129): |
ct1 += alg.encrypt('a',more=1) |
ct1 += alg.encrypt('') # flush any remaining |
ct2 = alg.encrypt(129*'a') |
self.assertNotEqual( ct1, ct2 ) |
pt1 = alg.decrypt(ct1) |
pt2 = alg.decrypt(ct2) |
self.assertEqual(pt1,pt2) |
pt3 = alg.decrypt('',more=1) |
for i in range(len(ct2)): |
pt3 += alg.decrypt(ct2[i], more=1) |
pt3 += alg.decrypt('') |
class CBC_another_Simple_Test(unittest.TestCase): |
""" Test simple encrypt decrypt """ |
def test(self): |
aes_cbc = CBC(AES()) |
aes_cbc.setKey('aaaaaaaaaaaaaaaa') |
ct1 = aes_cbc.encrypt('test') |
ct2 = aes_cbc.encrypt('test') # note - auto iv, reslt is different ths time |
# text below from cli usage that failed :-( ... bad sized message |
#aes_cbc.decrypt('U+f)f\xfb\x96\xc8vu\xbb\xff7BJ}') |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/rijndael_test.py |
---|
0,0 → 1,164 |
#! /usr/bin/env python |
""" crypto.cipher.rijndael_test |
Tests for the rijndael encryption algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.rijndael import Rijndael |
from crypto.cipher.base import noPadding |
from binascii import a2b_hex |
import unittest |
class Rijndael_TestVectors(unittest.TestCase): |
""" Test Rijndael algorithm using know values.""" |
def testGladman_dev_vec(self): |
""" All 25 combinations of block and key size. |
These test vectors were generated by Dr Brian Gladman |
using the program aes_vec.cpp <brg@gladman.uk.net> 24th May 2001. |
vectors in file: dev_vec.txt |
http://fp.gladman.plus.com/cryptography_technology/rijndael/index.htm |
""" |
def RijndaelTestVec(i, key, pt, ct): |
""" Run single AES test vector with any legal blockSize |
and any legal key size. """ |
bkey, plainText, cipherText = a2b_hex(key), a2b_hex(pt), a2b_hex(ct) |
kSize = len(bkey) |
bSize = len(cipherText) # set block size to length of block |
alg = Rijndael(bkey, keySize=kSize, blockSize=bSize, padding=noPadding()) |
self.assertEqual( alg.encrypt(plainText), cipherText ) |
self.assertEqual( alg.decrypt(cipherText), plainText ) |
RijndaelTestVec( i = 'dev_vec.txt 16 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '3925841d02dc09fbdc118597196a0b32') |
RijndaelTestVec( i = 'dev_vec.txt 16 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '231d844639b31b412211cfe93712b880') |
RijndaelTestVec( i = 'dev_vec.txt 16 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = 'f9fb29aefc384a250340d833b87ebc00') |
RijndaelTestVec( i = 'dev_vec.txt 16 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '8faa8fe4dee9eb17caa4797502fc9d3f') |
RijndaelTestVec( i = 'dev_vec.txt 16 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e0370734', |
ct = '1a6e6c2c662e7da6501ffb62bc9e93f3') |
RijndaelTestVec( i = 'dev_vec.txt 20 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e03707344a409382', |
ct = '16e73aec921314c29df905432bc8968ab64b1f51') |
RijndaelTestVec( i = 'dev_vec.txt 20 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e03707344a409382', |
ct = '0553eb691670dd8a5a5b5addf1aa7450f7a0e587') |
RijndaelTestVec( i = 'dev_vec.txt 20 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e03707344a409382', |
ct = '73cd6f3423036790463aa9e19cfcde894ea16623') |
RijndaelTestVec( i = 'dev_vec.txt 20 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e03707344a409382', |
ct = '601b5dcd1cf4ece954c740445340bf0afdc048df') |
RijndaelTestVec( i = 'dev_vec.txt 20 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e03707344a409382', |
ct = '579e930b36c1529aa3e86628bacfe146942882cf') |
RijndaelTestVec( i = 'dev_vec.txt 24 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d', |
ct = 'b24d275489e82bb8f7375e0d5fcdb1f481757c538b65148a') |
RijndaelTestVec( i = 'dev_vec.txt 24 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d', |
ct = '738dae25620d3d3beff4a037a04290d73eb33521a63ea568') |
RijndaelTestVec( i = 'dev_vec.txt 24 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d', |
ct = '725ae43b5f3161de806a7c93e0bca93c967ec1ae1b71e1cf') |
RijndaelTestVec( i = 'dev_vec.txt 24 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d', |
ct = 'bbfc14180afbf6a36382a061843f0b63e769acdc98769130') |
RijndaelTestVec( i = 'dev_vec.txt 24 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d', |
ct = '0ebacf199e3315c2e34b24fcc7c46ef4388aa475d66c194c') |
RijndaelTestVec( i = 'dev_vec.txt 28 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa9', |
ct = 'b0a8f78f6b3c66213f792ffd2a61631f79331407a5e5c8d3793aceb1') |
RijndaelTestVec( i = 'dev_vec.txt 28 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa9', |
ct = '08b99944edfce33a2acb131183ab0168446b2d15e958480010f545e3') |
RijndaelTestVec( i = 'dev_vec.txt 28 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa9', |
ct = 'be4c597d8f7efe22a2f7e5b1938e2564d452a5bfe72399c7af1101e2') |
RijndaelTestVec( i = 'dev_vec.txt 28 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa9', |
ct = 'ef529598ecbce297811b49bbed2c33bbe1241d6e1a833dbe119569e8') |
RijndaelTestVec( i = 'dev_vec.txt 28 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa9', |
ct = '02fafc200176ed05deb8edb82a3555b0b10d47a388dfd59cab2f6c11') |
RijndaelTestVec( i = 'dev_vec.txt 32 byte block, 16 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8', |
ct = '7d15479076b69a46ffb3b3beae97ad8313f622f67fedb487de9f06b9ed9c8f19') |
RijndaelTestVec( i = 'dev_vec.txt 32 byte block, 20 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8', |
ct = '514f93fb296b5ad16aa7df8b577abcbd484decacccc7fb1f18dc567309ceeffd') |
RijndaelTestVec( i = 'dev_vec.txt 32 byte block, 24 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da5', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8', |
ct = '5d7101727bb25781bf6715b0e6955282b9610e23a43c2eb062699f0ebf5887b2') |
RijndaelTestVec( i = 'dev_vec.txt 32 byte block, 28 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d90', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8', |
ct = 'd56c5a63627432579e1dd308b2c8f157b40a4bfb56fea1377b25d3ed3d6dbf80') |
RijndaelTestVec( i = 'dev_vec.txt 32 byte block, 32 byte key', |
key = '2b7e151628aed2a6abf7158809cf4f3c762e7160f38b4da56a784d9045190cfe', |
pt = '3243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c8', |
ct = 'a49406115dfb30a40418aafa4869b7c6a886ff31602a7dd19c889dc64f7e4e7a') |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/cbc.py |
---|
0,0 → 1,109 |
""" crypto.cipher.cbc |
CBC mode of encryption for block ciphers. |
This algorithm mode wraps any BlockCipher to make a |
Cipher Block Chaining mode. |
Note !!!! auto IV uses python default random :-( |
should not be 'too bad' (tm) for this cbc applicaiton |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from crypto.cipher.base import BlockCipher, padWithPadLen, noPadding |
from crypto.errors import EncryptError |
from crypto.common import xor |
from random import Random # should change to crypto.random!!! |
class CBC(BlockCipher): |
""" The CBC class wraps block ciphers to make cipher block chaining (CBC) mode |
algorithms. The initialization (IV) is automatic if set to None. Padding |
is also automatic based on the Pad class used to initialize the algorithm |
""" |
def __init__(self, blockCipherInstance, padding = padWithPadLen()): |
""" CBC algorithms are created by initializing with a BlockCipher instance """ |
self.baseCipher = blockCipherInstance |
self.name = self.baseCipher.name + '_CBC' |
self.blockSize = self.baseCipher.blockSize |
self.keySize = self.baseCipher.keySize |
self.padding = padding |
self.baseCipher.padding = noPadding() # baseCipher should NOT pad!! |
self.r = Random() # for IV generation, currently uses |
# mediocre standard distro version <---------------- |
import time |
newSeed = time.ctime()+str(self.r) # seed with instance location |
self.r.seed(newSeed) # to make unique |
self.reset() |
def setKey(self, key): |
self.baseCipher.setKey(key) |
# Overload to reset both CBC state and the wrapped baseCipher |
def resetEncrypt(self): |
BlockCipher.resetEncrypt(self) # reset CBC encrypt state (super class) |
self.baseCipher.resetEncrypt() # reset base cipher encrypt state |
def resetDecrypt(self): |
BlockCipher.resetDecrypt(self) # reset CBC state (super class) |
self.baseCipher.resetDecrypt() # reset base cipher decrypt state |
def encrypt(self, plainText, iv=None, more=None): |
""" CBC encryption - overloads baseCipher to allow optional explicit IV |
when iv=None, iv is auto generated! |
""" |
if self.encryptBlockCount == 0: |
self.iv = iv |
else: |
assert(iv==None), 'IV used only on first call to encrypt' |
return BlockCipher.encrypt(self,plainText, more=more) |
def decrypt(self, cipherText, iv=None, more=None): |
""" CBC decryption - overloads baseCipher to allow optional explicit IV |
when iv=None, iv is auto generated! |
""" |
if self.decryptBlockCount == 0: |
self.iv = iv |
else: |
assert(iv==None), 'IV used only on first call to decrypt' |
return BlockCipher.decrypt(self, cipherText, more=more) |
def encryptBlock(self, plainTextBlock): |
""" CBC block encryption, IV is set with 'encrypt' """ |
auto_IV = '' |
if self.encryptBlockCount == 0: |
if self.iv == None: |
# generate IV and use |
self.iv = ''.join([chr(self.r.randrange(256)) for i in range(self.blockSize)]) |
self.prior_encr_CT_block = self.iv |
auto_IV = self.prior_encr_CT_block # prepend IV if it's automatic |
else: # application provided IV |
assert(len(self.iv) == self.blockSize ),'IV must be same length as block' |
self.prior_encr_CT_block = self.iv |
""" encrypt the prior CT XORed with the PT """ |
ct = self.baseCipher.encryptBlock( xor(self.prior_encr_CT_block, plainTextBlock) ) |
self.prior_encr_CT_block = ct |
return auto_IV+ct |
def decryptBlock(self, encryptedBlock): |
""" Decrypt a single block """ |
if self.decryptBlockCount == 0: # first call, process IV |
if self.iv == None: # auto decrypt IV? |
self.prior_CT_block = encryptedBlock |
return '' |
else: |
assert(len(self.iv)==self.blockSize),"Bad IV size on CBC decryption" |
self.prior_CT_block = self.iv |
dct = self.baseCipher.decryptBlock(encryptedBlock) |
""" XOR the prior decrypted CT with the prior CT """ |
dct_XOR_priorCT = xor( self.prior_CT_block, dct ) |
self.prior_CT_block = encryptedBlock |
return dct_XOR_priorCT |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/arc4_test.py |
---|
0,0 → 1,140 |
#! /usr/bin/env python |
""" crypto.cipher.arc4_test |
Tests for arc4 encryption, uses AES for base algorithm |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
July 24, 2002 |
""" |
import unittest |
from crypto.cipher.arc4 import ARC4 |
from binascii_plus import b2a_p |
class ARC4_TestVectors(unittest.TestCase): |
""" Test ARC4 algorithm using know values """ |
def testKnowValues(self): |
""" Test using vectors from...""" |
def ARC4testVector(testCase,plainText,key,cipherText): |
""" Process ARC4 test vectors from RFCxxxx""" |
print '%s %s %s'%('='*((54-len(testCase))/2),testCase,'='*((54-len(testCase))/2)) |
# Convert from octet lists to string |
pt = ''.join([chr(i) for i in plainText]) |
key = ''.join([chr(i) for i in key]) |
kct = ''.join([chr(i) for i in cipherText]) |
alg = ARC4(key) |
print 'key: %s'%b2a_p(key)[9:] |
print 'pt: %s'%b2a_p(pt)[9:] |
ct = alg.encrypt(pt) |
print 'ct: %s'%b2a_p(ct)[9:] |
print 'kct: %s'%b2a_p(kct)[9:] |
print '========================================================' |
self.assertEqual( ct, kct ) |
alg.setKey(key) |
dct = alg.decrypt( ct ) |
self.assertEqual( dct, pt ) |
ARC4testVector( |
testCase = "Test Vectors from [CRYPTLIB]", |
plainText = (0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00), |
key = (0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF), |
cipherText = (0x74, 0x94, 0xC2, 0xE7, 0x10, 0x4B, 0x08, 0x79)) |
ARC4testVector( |
testCase = "Test Vectors from [COMMERCE]", |
plainText = (0xdc, 0xee, 0x4c, 0xf9, 0x2c), |
key = (0x61, 0x8a, 0x63, 0xd2, 0xfb), |
cipherText = (0xf1, 0x38, 0x29, 0xc9, 0xde)) |
ARC4testVector( |
testCase = "Test Vectors from [SSH ARCFOUR]", |
plainText = (0x52, 0x75, 0x69, 0x73, 0x6c, 0x69, 0x6e, 0x6e, |
0x75, 0x6e, 0x20, 0x6c, 0x61, 0x75, 0x6c, 0x75, |
0x20, 0x6b, 0x6f, 0x72, 0x76, 0x69, 0x73, 0x73, |
0x73, 0x61, 0x6e, 0x69, 0x2c, 0x20, 0x74, 0xe4, |
0x68, 0x6b, 0xe4, 0x70, 0xe4, 0x69, 0x64, 0x65, |
0x6e, 0x20, 0x70, 0xe4, 0xe4, 0x6c, 0x6c, 0xe4, |
0x20, 0x74, 0xe4, 0x79, 0x73, 0x69, 0x6b, 0x75, |
0x75, 0x2e, 0x20, 0x4b, 0x65, 0x73, 0xe4, 0x79, |
0xf6, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x6f, 0x6e, |
0x6e, 0x69, 0x20, 0x6f, 0x6d, 0x61, 0x6e, 0x61, |
0x6e, 0x69, 0x2c, 0x20, 0x6b, 0x61, 0x73, 0x6b, |
0x69, 0x73, 0x61, 0x76, 0x75, 0x75, 0x6e, 0x20, |
0x6c, 0x61, 0x61, 0x6b, 0x73, 0x6f, 0x74, 0x20, |
0x76, 0x65, 0x72, 0x68, 0x6f, 0x75, 0x75, 0x2e, |
0x20, 0x45, 0x6e, 0x20, 0x6d, 0x61, 0x20, 0x69, |
0x6c, 0x6f, 0x69, 0x74, 0x73, 0x65, 0x2c, 0x20, |
0x73, 0x75, 0x72, 0x65, 0x20, 0x68, 0x75, 0x6f, |
0x6b, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x75, 0x74, |
0x74, 0x61, 0x20, 0x6d, 0x65, 0x74, 0x73, 0xe4, |
0x6e, 0x20, 0x74, 0x75, 0x6d, 0x6d, 0x75, 0x75, |
0x73, 0x20, 0x6d, 0x75, 0x6c, 0x6c, 0x65, 0x20, |
0x74, 0x75, 0x6f, 0x6b, 0x61, 0x61, 0x2e, 0x20, |
0x50, 0x75, 0x75, 0x6e, 0x74, 0x6f, 0x20, 0x70, |
0x69, 0x6c, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x6d, |
0x69, 0x20, 0x68, 0x75, 0x6b, 0x6b, 0x75, 0x75, |
0x2c, 0x20, 0x73, 0x69, 0x69, 0x6e, 0x74, 0x6f, |
0x20, 0x76, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x74, |
0x75, 0x75, 0x6c, 0x69, 0x73, 0x65, 0x6e, 0x2c, |
0x20, 0x6d, 0x69, 0x20, 0x6e, 0x75, 0x6b, 0x6b, |
0x75, 0x75, 0x2e, 0x20, 0x54, 0x75, 0x6f, 0x6b, |
0x73, 0x75, 0x74, 0x20, 0x76, 0x61, 0x6e, 0x61, |
0x6d, 0x6f, 0x6e, 0x20, 0x6a, 0x61, 0x20, 0x76, |
0x61, 0x72, 0x6a, 0x6f, 0x74, 0x20, 0x76, 0x65, |
0x65, 0x6e, 0x2c, 0x20, 0x6e, 0x69, 0x69, 0x73, |
0x74, 0xe4, 0x20, 0x73, 0x79, 0x64, 0xe4, 0x6d, |
0x65, 0x6e, 0x69, 0x20, 0x6c, 0x61, 0x75, 0x6c, |
0x75, 0x6e, 0x20, 0x74, 0x65, 0x65, 0x6e, 0x2e, |
0x20, 0x2d, 0x20, 0x45, 0x69, 0x6e, 0x6f, 0x20, |
0x4c, 0x65, 0x69, 0x6e, 0x6f), |
key = (0x29, 0x04, 0x19, 0x72, 0xfb, 0x42, 0xba, 0x5f, |
0xc7, 0x12, 0x77, 0x12, 0xf1, 0x38, 0x29, 0xc9), |
cipherText = (0x35, 0x81, 0x86, 0x99, 0x90, 0x01, 0xe6, 0xb5, |
0xda, 0xf0, 0x5e, 0xce, 0xeb, 0x7e, 0xee, 0x21, |
0xe0, 0x68, 0x9c, 0x1f, 0x00, 0xee, 0xa8, 0x1f, |
0x7d, 0xd2, 0xca, 0xae, 0xe1, 0xd2, 0x76, 0x3e, |
0x68, 0xaf, 0x0e, 0xad, 0x33, 0xd6, 0x6c, 0x26, |
0x8b, 0xc9, 0x46, 0xc4, 0x84, 0xfb, 0xe9, 0x4c, |
0x5f, 0x5e, 0x0b, 0x86, 0xa5, 0x92, 0x79, 0xe4, |
0xf8, 0x24, 0xe7, 0xa6, 0x40, 0xbd, 0x22, 0x32, |
0x10, 0xb0, 0xa6, 0x11, 0x60, 0xb7, 0xbc, 0xe9, |
0x86, 0xea, 0x65, 0x68, 0x80, 0x03, 0x59, 0x6b, |
0x63, 0x0a, 0x6b, 0x90, 0xf8, 0xe0, 0xca, 0xf6, |
0x91, 0x2a, 0x98, 0xeb, 0x87, 0x21, 0x76, 0xe8, |
0x3c, 0x20, 0x2c, 0xaa, 0x64, 0x16, 0x6d, 0x2c, |
0xce, 0x57, 0xff, 0x1b, 0xca, 0x57, 0xb2, 0x13, |
0xf0, 0xed, 0x1a, 0xa7, 0x2f, 0xb8, 0xea, 0x52, |
0xb0, 0xbe, 0x01, 0xcd, 0x1e, 0x41, 0x28, 0x67, |
0x72, 0x0b, 0x32, 0x6e, 0xb3, 0x89, 0xd0, 0x11, |
0xbd, 0x70, 0xd8, 0xaf, 0x03, 0x5f, 0xb0, 0xd8, |
0x58, 0x9d, 0xbc, 0xe3, 0xc6, 0x66, 0xf5, 0xea, |
0x8d, 0x4c, 0x79, 0x54, 0xc5, 0x0c, 0x3f, 0x34, |
0x0b, 0x04, 0x67, 0xf8, 0x1b, 0x42, 0x59, 0x61, |
0xc1, 0x18, 0x43, 0x07, 0x4d, 0xf6, 0x20, 0xf2, |
0x08, 0x40, 0x4b, 0x39, 0x4c, 0xf9, 0xd3, 0x7f, |
0xf5, 0x4b, 0x5f, 0x1a, 0xd8, 0xf6, 0xea, 0x7d, |
0xa3, 0xc5, 0x61, 0xdf, 0xa7, 0x28, 0x1f, 0x96, |
0x44, 0x63, 0xd2, 0xcc, 0x35, 0xa4, 0xd1, 0xb0, |
0x34, 0x90, 0xde, 0xc5, 0x1b, 0x07, 0x11, 0xfb, |
0xd6, 0xf5, 0x5f, 0x79, 0x23, 0x4d, 0x5b, 0x7c, |
0x76, 0x66, 0x22, 0xa6, 0x6d, 0xe9, 0x2b, 0xe9, |
0x96, 0x46, 0x1d, 0x5e, 0x4d, 0xc8, 0x78, 0xef, |
0x9b, 0xca, 0x03, 0x05, 0x21, 0xe8, 0x35, 0x1e, |
0x4b, 0xae, 0xd2, 0xfd, 0x04, 0xf9, 0x46, 0x73, |
0x68, 0xc4, 0xad, 0x6a, 0xc1, 0x86, 0xd0, 0x82, |
0x45, 0xb2, 0x63, 0xa2, 0x66, 0x6d, 0x1f, 0x6c, |
0x54, 0x20, 0xf1, 0x59, 0x9d, 0xfd, 0x9f, 0x43, |
0x89, 0x21, 0xc2, 0xf5, 0xa4, 0x63, 0x93, 0x8c, |
0xe0, 0x98, 0x22, 0x65, 0xee, 0xf7, 0x01, 0x79, |
0xbc, 0x55, 0x3f, 0x33, 0x9e, 0xb1, 0xa4, 0xc1, |
0xaf, 0x5f, 0x6a, 0x54, 0x7f)) |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/rijndael.py |
---|
0,0 → 1,288 |
""" crypto.cipher.rijndael |
Rijndael encryption algorithm |
This byte oriented implementation is intended to closely |
match FIPS specification for readability. It is not implemented |
for performance. |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-06-01 |
""" |
from crypto.cipher.base import BlockCipher, padWithPadLen, noPadding |
class Rijndael(BlockCipher): |
""" Rijndael encryption algorithm """ |
def __init__(self, key = None, padding = padWithPadLen(), keySize=16, blockSize=16 ): |
self.name = 'RIJNDAEL' |
self.keySize = keySize |
self.strength = keySize*8 |
self.blockSize = blockSize # blockSize is in bytes |
self.padding = padding # change default to noPadding() to get normal ECB behavior |
assert( keySize%4==0 and NrTable[4].has_key(keySize/4)),'key size must be 16,20,24,29 or 32 bytes' |
assert( blockSize%4==0 and NrTable.has_key(blockSize/4)), 'block size must be 16,20,24,29 or 32 bytes' |
self.Nb = self.blockSize/4 # Nb is number of columns of 32 bit words |
self.Nk = keySize/4 # Nk is the key length in 32-bit words |
self.Nr = NrTable[self.Nb][self.Nk] # The number of rounds (Nr) is a function of |
# the block (Nb) and key (Nk) sizes. |
if key != None: |
self.setKey(key) |
def setKey(self, key): |
""" Set a key and generate the expanded key """ |
assert( len(key) == (self.Nk*4) ), 'Key length must be same as keySize parameter' |
self.__expandedKey = keyExpansion(self, key) |
self.reset() # BlockCipher.reset() |
def encryptBlock(self, plainTextBlock): |
""" Encrypt a block, plainTextBlock must be a array of bytes [Nb by 4] """ |
self.state = self._toBlock(plainTextBlock) |
AddRoundKey(self, self.__expandedKey[0:self.Nb]) |
for round in range(1,self.Nr): #for round = 1 step 1 to Nr1 |
SubBytes(self) |
ShiftRows(self) |
MixColumns(self) |
AddRoundKey(self, self.__expandedKey[round*self.Nb:(round+1)*self.Nb]) |
SubBytes(self) |
ShiftRows(self) |
AddRoundKey(self, self.__expandedKey[self.Nr*self.Nb:(self.Nr+1)*self.Nb]) |
return self._toBString(self.state) |
def decryptBlock(self, encryptedBlock): |
""" decrypt a block (array of bytes) """ |
self.state = self._toBlock(encryptedBlock) |
AddRoundKey(self, self.__expandedKey[self.Nr*self.Nb:(self.Nr+1)*self.Nb]) |
for round in range(self.Nr-1,0,-1): |
InvShiftRows(self) |
InvSubBytes(self) |
AddRoundKey(self, self.__expandedKey[round*self.Nb:(round+1)*self.Nb]) |
InvMixColumns(self) |
InvShiftRows(self) |
InvSubBytes(self) |
AddRoundKey(self, self.__expandedKey[0:self.Nb]) |
return self._toBString(self.state) |
def _toBlock(self, bs): |
""" Convert binary string to array of bytes, state[col][row]""" |
assert ( len(bs) == 4*self.Nb ), 'Rijndarl blocks must be of size blockSize' |
return [[ord(bs[4*i]),ord(bs[4*i+1]),ord(bs[4*i+2]),ord(bs[4*i+3])] for i in range(self.Nb)] |
def _toBString(self, block): |
""" Convert block (array of bytes) to binary string """ |
l = [] |
for col in block: |
for rowElement in col: |
l.append(chr(rowElement)) |
return ''.join(l) |
#------------------------------------- |
""" Number of rounds Nr = NrTable[Nb][Nk] |
Nb Nk=4 Nk=5 Nk=6 Nk=7 Nk=8 |
------------------------------------- """ |
NrTable = {4: {4:10, 5:11, 6:12, 7:13, 8:14}, |
5: {4:11, 5:11, 6:12, 7:13, 8:14}, |
6: {4:12, 5:12, 6:12, 7:13, 8:14}, |
7: {4:13, 5:13, 6:13, 7:13, 8:14}, |
8: {4:14, 5:14, 6:14, 7:14, 8:14}} |
#------------------------------------- |
def keyExpansion(algInstance, keyString): |
""" Expand a string of size keySize into a larger array """ |
Nk, Nb, Nr = algInstance.Nk, algInstance.Nb, algInstance.Nr # for readability |
key = [ord(byte) for byte in keyString] # convert string to list |
w = [[key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]] for i in range(Nk)] |
for i in range(Nk,Nb*(Nr+1)): |
temp = w[i-1] # a four byte column |
if (i%Nk) == 0 : |
temp = temp[1:]+[temp[0]] # RotWord(temp) |
temp = [ Sbox[byte] for byte in temp ] |
temp[0] ^= Rcon[i/Nk] |
elif Nk > 6 and i%Nk == 4 : |
temp = [ Sbox[byte] for byte in temp ] # SubWord(temp) |
w.append( [ w[i-Nk][byte]^temp[byte] for byte in range(4) ] ) |
return w |
Rcon = (0,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x1b,0x36, # note extra '0' !!! |
0x6c,0xd8,0xab,0x4d,0x9a,0x2f,0x5e,0xbc,0x63,0xc6, |
0x97,0x35,0x6a,0xd4,0xb3,0x7d,0xfa,0xef,0xc5,0x91) |
#------------------------------------- |
def AddRoundKey(algInstance, keyBlock): |
""" XOR the algorithm state with a block of key material """ |
for column in range(algInstance.Nb): |
for row in range(4): |
algInstance.state[column][row] ^= keyBlock[column][row] |
#------------------------------------- |
def SubBytes(algInstance): |
for column in range(algInstance.Nb): |
for row in range(4): |
algInstance.state[column][row] = Sbox[algInstance.state[column][row]] |
def InvSubBytes(algInstance): |
for column in range(algInstance.Nb): |
for row in range(4): |
algInstance.state[column][row] = InvSbox[algInstance.state[column][row]] |
Sbox = (0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5, |
0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, |
0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0, |
0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, |
0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc, |
0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, |
0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a, |
0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, |
0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0, |
0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, |
0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b, |
0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, |
0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85, |
0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, |
0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5, |
0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, |
0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17, |
0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, |
0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88, |
0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, |
0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c, |
0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, |
0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9, |
0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, |
0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6, |
0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, |
0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e, |
0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, |
0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94, |
0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, |
0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68, |
0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16) |
InvSbox = (0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38, |
0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb, |
0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87, |
0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb, |
0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d, |
0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e, |
0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2, |
0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25, |
0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16, |
0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92, |
0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda, |
0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84, |
0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a, |
0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06, |
0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02, |
0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b, |
0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea, |
0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73, |
0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85, |
0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e, |
0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89, |
0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b, |
0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20, |
0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4, |
0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31, |
0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f, |
0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d, |
0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef, |
0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0, |
0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61, |
0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26, |
0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d) |
#------------------------------------- |
""" For each block size (Nb), the ShiftRow operation shifts row i |
by the amount Ci. Note that row 0 is not shifted. |
Nb C1 C2 C3 |
------------------- """ |
shiftOffset = { 4 : ( 0, 1, 2, 3), |
5 : ( 0, 1, 2, 3), |
6 : ( 0, 1, 2, 3), |
7 : ( 0, 1, 2, 4), |
8 : ( 0, 1, 3, 4) } |
def ShiftRows(algInstance): |
tmp = [0]*algInstance.Nb # list of size Nb |
for r in range(1,4): # row 0 reamains unchanged and can be skipped |
for c in range(algInstance.Nb): |
tmp[c] = algInstance.state[(c+shiftOffset[algInstance.Nb][r]) % algInstance.Nb][r] |
for c in range(algInstance.Nb): |
algInstance.state[c][r] = tmp[c] |
def InvShiftRows(algInstance): |
tmp = [0]*algInstance.Nb # list of size Nb |
for r in range(1,4): # row 0 reamains unchanged and can be skipped |
for c in range(algInstance.Nb): |
tmp[c] = algInstance.state[(c+algInstance.Nb-shiftOffset[algInstance.Nb][r]) % algInstance.Nb][r] |
for c in range(algInstance.Nb): |
algInstance.state[c][r] = tmp[c] |
#------------------------------------- |
def MixColumns(a): |
Sprime = [0,0,0,0] |
for j in range(a.Nb): # for each column |
Sprime[0] = mul(2,a.state[j][0])^mul(3,a.state[j][1])^mul(1,a.state[j][2])^mul(1,a.state[j][3]) |
Sprime[1] = mul(1,a.state[j][0])^mul(2,a.state[j][1])^mul(3,a.state[j][2])^mul(1,a.state[j][3]) |
Sprime[2] = mul(1,a.state[j][0])^mul(1,a.state[j][1])^mul(2,a.state[j][2])^mul(3,a.state[j][3]) |
Sprime[3] = mul(3,a.state[j][0])^mul(1,a.state[j][1])^mul(1,a.state[j][2])^mul(2,a.state[j][3]) |
for i in range(4): |
a.state[j][i] = Sprime[i] |
def InvMixColumns(a): |
""" Mix the four bytes of every column in a linear way |
This is the opposite operation of Mixcolumn """ |
Sprime = [0,0,0,0] |
for j in range(a.Nb): # for each column |
Sprime[0] = mul(0x0E,a.state[j][0])^mul(0x0B,a.state[j][1])^mul(0x0D,a.state[j][2])^mul(0x09,a.state[j][3]) |
Sprime[1] = mul(0x09,a.state[j][0])^mul(0x0E,a.state[j][1])^mul(0x0B,a.state[j][2])^mul(0x0D,a.state[j][3]) |
Sprime[2] = mul(0x0D,a.state[j][0])^mul(0x09,a.state[j][1])^mul(0x0E,a.state[j][2])^mul(0x0B,a.state[j][3]) |
Sprime[3] = mul(0x0B,a.state[j][0])^mul(0x0D,a.state[j][1])^mul(0x09,a.state[j][2])^mul(0x0E,a.state[j][3]) |
for i in range(4): |
a.state[j][i] = Sprime[i] |
#------------------------------------- |
def mul(a, b): |
""" Multiply two elements of GF(2^m) |
needed for MixColumn and InvMixColumn """ |
if (a !=0 and b!=0): |
return Alogtable[(Logtable[a] + Logtable[b])%255] |
else: |
return 0 |
Logtable = ( 0, 0, 25, 1, 50, 2, 26, 198, 75, 199, 27, 104, 51, 238, 223, 3, |
100, 4, 224, 14, 52, 141, 129, 239, 76, 113, 8, 200, 248, 105, 28, 193, |
125, 194, 29, 181, 249, 185, 39, 106, 77, 228, 166, 114, 154, 201, 9, 120, |
101, 47, 138, 5, 33, 15, 225, 36, 18, 240, 130, 69, 53, 147, 218, 142, |
150, 143, 219, 189, 54, 208, 206, 148, 19, 92, 210, 241, 64, 70, 131, 56, |
102, 221, 253, 48, 191, 6, 139, 98, 179, 37, 226, 152, 34, 136, 145, 16, |
126, 110, 72, 195, 163, 182, 30, 66, 58, 107, 40, 84, 250, 133, 61, 186, |
43, 121, 10, 21, 155, 159, 94, 202, 78, 212, 172, 229, 243, 115, 167, 87, |
175, 88, 168, 80, 244, 234, 214, 116, 79, 174, 233, 213, 231, 230, 173, 232, |
44, 215, 117, 122, 235, 22, 11, 245, 89, 203, 95, 176, 156, 169, 81, 160, |
127, 12, 246, 111, 23, 196, 73, 236, 216, 67, 31, 45, 164, 118, 123, 183, |
204, 187, 62, 90, 251, 96, 177, 134, 59, 82, 161, 108, 170, 85, 41, 157, |
151, 178, 135, 144, 97, 190, 220, 252, 188, 149, 207, 205, 55, 63, 91, 209, |
83, 57, 132, 60, 65, 162, 109, 71, 20, 42, 158, 93, 86, 242, 211, 171, |
68, 17, 146, 217, 35, 32, 46, 137, 180, 124, 184, 38, 119, 153, 227, 165, |
103, 74, 237, 222, 197, 49, 254, 24, 13, 99, 140, 128, 192, 247, 112, 7) |
Alogtable= ( 1, 3, 5, 15, 17, 51, 85, 255, 26, 46, 114, 150, 161, 248, 19, 53, |
95, 225, 56, 72, 216, 115, 149, 164, 247, 2, 6, 10, 30, 34, 102, 170, |
229, 52, 92, 228, 55, 89, 235, 38, 106, 190, 217, 112, 144, 171, 230, 49, |
83, 245, 4, 12, 20, 60, 68, 204, 79, 209, 104, 184, 211, 110, 178, 205, |
76, 212, 103, 169, 224, 59, 77, 215, 98, 166, 241, 8, 24, 40, 120, 136, |
131, 158, 185, 208, 107, 189, 220, 127, 129, 152, 179, 206, 73, 219, 118, 154, |
181, 196, 87, 249, 16, 48, 80, 240, 11, 29, 39, 105, 187, 214, 97, 163, |
254, 25, 43, 125, 135, 146, 173, 236, 47, 113, 147, 174, 233, 32, 96, 160, |
251, 22, 58, 78, 210, 109, 183, 194, 93, 231, 50, 86, 250, 21, 63, 65, |
195, 94, 226, 61, 71, 201, 64, 192, 91, 237, 44, 116, 156, 191, 218, 117, |
159, 186, 213, 100, 172, 239, 42, 126, 130, 157, 188, 223, 122, 142, 137, 128, |
155, 182, 193, 88, 232, 35, 101, 175, 234, 37, 111, 177, 200, 67, 197, 84, |
252, 31, 33, 99, 165, 244, 7, 9, 27, 45, 119, 153, 176, 203, 70, 202, |
69, 207, 74, 222, 121, 139, 134, 145, 168, 227, 62, 66, 198, 81, 243, 14, |
18, 54, 90, 238, 41, 123, 141, 140, 143, 138, 133, 148, 167, 242, 13, 23, |
57, 75, 221, 124, 132, 151, 162, 253, 28, 36, 108, 180, 199, 82, 246, 1) |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/arc4.py |
---|
0,0 → 1,75 |
""" crypto.cipher.arc4 |
A Stream Cipher Encryption Algorithm 'Arcfour' |
A few lines of code/ideas borrowed from [PING] |
[PING] CipherSaber implementation by Ka-Ping Yee <ping@lfw.org>, 5 May 2000. |
Some documentation text and test vectors taken from [IDARC4] |
[IDARCH4] K.Kaukonen, R.Thayer, "A Stream Cipher Encryption Algorithm 'Arcfour'", |
ftp://ietf.org/draft-kaukonen-cipher-arcfour-03.txt |
Generally munged to map to crypto.cipher calling conventions |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
November 5, 2002 |
""" |
class ARC4: |
""" ARC4 Stream Cipher Algorithm |
""" |
def __init__(self,key=None): |
""" key -> octet string for key """ |
self.name = 'ARC4' |
self.strength = None # depends on keySize |
self.blockSize = 1 # blockSize is in bytes |
if key != None: |
self.setKey(key) |
def setKey(self, key): |
""" Set initial state from key. Never use the same key more than once! |
""" |
self.keySize = len(key) |
self.strength = self.keySize # this does not include subtracting IV size :-( |
i, j, self.state = 0, 0, range(256) |
for i in range(256): |
j = (j + self.state[i] + ord(key[i % len(key)])) % 256 |
self.state[i], self.state[j] = self.state[j], self.state[i] |
self.keyReady = 1 # Ready |
def encrypt(self, plainText, more = None): |
""" Encrypt a string and return a binary string |
multiple sequential calls can be made using more =1, |
this continues the encryption |
New sessions of encrypt can NOT be called twice with the same key!!!! |
""" |
if self.keyReady != 1 : raise 'Error, ARC4 key already used once!' |
if more != 1: |
self.keyReady = None |
cipherText = arcfourBlock(self.state, plainText) |
return cipherText |
def decrypt(self, cipherText, more = None): |
""" Decrypt a string and return a string """ |
if self.keyReady != 1 : |
raise 'set for decryption required' |
if more != 1: |
self.keyReady = None |
plainText = arcfourBlock(self.state, cipherText) |
return plainText |
def arcfourBlock(state, input): |
""" Use state to encrypt input string, returns string """ |
i, j, output = 0, 0, [] |
for byte in input: |
i = (i + 1) % 256 |
j = (j + state[i]) % 256 |
state[i], state[j] = state[j], state[i] |
n = (state[i] + state[j]) % 256 |
output.append(chr(ord(byte) ^ state[n])) |
output = ''.join(output) # convert to string |
return output |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/wep_test.py |
---|
0,0 → 1,71 |
#! /usr/bin/env python |
""" crypto.cipher.wep_test |
Tests for wep encryption |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
2002-11-05 |
""" |
import unittest |
from crypto.cipher.wep import WEP |
from binascii_plus import a2b_p, b2a_p |
from zlib import crc32 |
from struct import pack |
class WEP_TestVectors(unittest.TestCase): |
""" Test WEP algorithm using know values """ |
def testKnowValues(self): |
""" Test using vectors from...""" |
def WEPtestVector(testCase,plainText,iv,key,keyId,cipherText): |
""" Process WEP test vectors from RFCxxxx""" |
print '%s %s %s'%('='*((54-len(testCase))/2),testCase,'='*((54-len(testCase))/2)) |
# Convert from octet lists to string |
pt = a2b_p(plainText) |
iv = a2b_p(iv) |
key = a2b_p(key) |
kct = a2b_p(cipherText) |
alg = WEP(key,keyId=keyId) |
print 'key: %s'%b2a_p(key)[9:] |
print 'keyId: %x'%keyId |
print 'iv: %s'%b2a_p(iv)[9:] |
print 'pt: %s'%b2a_p(pt)[9:] |
print 'kct: %s'%b2a_p(kct)[9:] |
ct = alg.encrypt(pt, iv, keyId) |
print 'ct: %s'%b2a_p(ct)[9:] |
print 'crc: %s'%b2a_p(pack('<I',crc32(plainText)))[9:] |
print '========================================================' |
self.assertEqual( ct, kct ) |
alg.setKey(key,keyId=keyId) |
dct = alg.decrypt( ct ) |
self.assertEqual( dct, pt ) |
WEPtestVector( |
testCase = "Test Vectors from IEEE 802.11 TGi D2.x", |
plainText = """aa aa 03 00 00 00 08 00 45 00 00 4e 66 1a 00 00 |
80 11 be 64 0a 00 01 22 0a ff ff ff 00 89 00 89 |
00 3a 00 00 80 a6 01 10 00 01 00 00 00 00 00 00 |
20 45 43 45 4a 45 48 45 43 46 43 45 50 46 45 45 |
49 45 46 46 43 43 41 43 41 43 41 43 41 43 41 41 |
41 00 00 20 00 01 """, |
iv = "fb 02 9e", |
key = "30 31 32 33 34", |
keyId = 2, |
cipherText = """fb 02 9e 80 |
f6 9c 58 06 bd 6c e8 46 26 bc be fb 94 74 65 0a |
ad 1f 79 09 b0 f6 4d 5f 58 a5 03 a2 58 b7 ed 22 |
eb 0e a6 49 30 d3 a0 56 a5 57 42 fc ce 14 1d 48 |
5f 8a a8 36 de a1 8d f4 2c 53 80 80 5a d0 c6 1a |
5d 6f 58 f4 10 40 b2 4b 7d 1a 69 38 56 ed 0d 43 |
98 e7 ae e3 bf 0e 2a 2c a8 f7 """) |
# Make this test module runnable from the command prompt |
if __name__ == "__main__": |
unittest.main() |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher/wep.py |
---|
0,0 → 1,75 |
""" crypto.cipher.wep |
The WEP encryption algorithm used in IEEE 802.11 |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
September 2002 |
""" |
from crypto.cipher.arc4 import ARC4 |
from crypto.errors import IntegrityCheckError, BadKeySizeError |
from zlib import crc32 |
from struct import pack |
class WEP: |
""" WEP Stream Cipher Algorithm |
Automatically adds and removes IV and KeyId |
""" |
def __init__(self, key=None, keyId=None): |
""" key -> octet string for key """ |
self.name = 'WEP' |
self.strength = None # depends on keySize |
self.arc4 = ARC4() # base algorithm |
self.__key = [None,None,None,None] # four possible keys, initialize to invalid keys |
self.encryptHeaderSize = 4 |
self.setCurrentKeyId(keyId) |
if key != None: |
self.setKey(key) |
def setKey(self, key, keyId=None): |
""" Set key, key string is typically 5 or 13 octets long |
""" |
if not(len(key) in (5,13)): |
raise BadKeySizeError,'Key not valid size of 5 or 13 octets' |
if keyId != None : |
self.setCurrentKeyId(keyId) |
self.__key[self.currentKeyId] = key |
self.keySize = len(key) |
self.strength = self.keySize * 8 |
def setCurrentKeyId(self, keyId): |
if keyId == None : |
self.currentKeyId = 0 |
elif (0<=keyId<4): |
self.currentKeyId = keyId |
else: |
raise 'WEP keyId must be value 0, 1, 2 or 3' |
def encrypt(self, plainText, iv, keyId=None): |
""" Encrypt a string and return a binary string |
Adds WEP encryption header and crc |
""" |
assert(len(iv)==3),'Wrong size WEP IV' |
if keyId != None : |
self.setCurrentKeyId(keyId) |
assert(self.__key[self.currentKeyId]!=None), 'Must set key for specific keyId before encryption' |
self.arc4.setKey( iv + self.__key[self.currentKeyId] ) |
crc = pack('<I',crc32(plainText)) |
cipherText = self.arc4.encrypt(plainText+crc) |
# add header that contains IV |
cipherText = iv + chr((self.currentKeyId<<6)) + cipherText |
return cipherText |
def decrypt(self, cipherText): |
""" Decrypt a WEP packet, assumes WEP 4 byte header on packet """ |
iv = cipherText[:3] |
self.currentKeyId = (ord(cipherText[3])&0xC0)>>6 |
assert(self.__key[self.currentKeyId]!=None), 'Must set key for specific keyId before encryption' |
self.arc4.setKey( iv + self.__key[self.currentKeyId] ) |
plainText = self.arc4.decrypt(cipherText[self.encryptHeaderSize:]) |
if plainText[-self.encryptHeaderSize:] == pack('<I',crc32(plainText)): # check data integrity |
raise IntegrityCheckError, 'WEP Integrity Check Error' |
return plainText[:-4] |
/relevation/ext/cryptopy-1.2.5.patched/crypto/cipher |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/crypto |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/doc/cryptopy-1.ppt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/doc |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/relevation/ext/cryptopy-1.2.5.patched/CHANGES.txt |
---|
0,0 → 1,35 |
CryptoPy Version 1.1.0 (2003-02-21) |
------------------------------------- |
First full published distribution since 1.0 |
Added: full IEEE 802.11 suite of algorithms (WEP, TKIP) |
Version 1.0.2 |
------------------------------------- |
- added in binascii_plus.py (enhanced binascii for hex input and diplay) |
2002-07-29 |
Version 1.0.0 (2002-07-29) |
------------------------ |
- added a README and a few comments |
- release only includes the following algorithms |
- rijndael |
- aes |
- ccm (only tested for AES) |
- cbc |
- aes_cbc |
- also inlcudes 802.11 specific: |
_ ieee_802/ccm_examples.py |
Sat July 27, 2002 |
Changes to version 0.9.1 |
------------------------ |
- added CCM algorithm |
- Distutils support added |
/relevation/ext/cryptopy-1.2.5.patched/__init__.py |
---|
0,0 → 1,6 |
""" cryptopy |
CryptoPy - pure python cryptographic libraries |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
/relevation/ext/cryptopy-1.2.5.patched/setup.py |
---|
0,0 → 1,48 |
#!/usr/bin/env python |
""" cryptopy setup |
Distribution and install script for CryptoPy |
Install: |
>> python setup.py install |
Make the source distribution: |
>> python setup.py sdist --formats=gztar --force-manifest |
See http://software-carpentry.codesourcery.com/entries/build/Distutils/Distutils.html |
for more information about this file |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from distutils.core import setup |
#import sys |
#assert sys.version >= '2', "Error -> Please install Python 2.0 or greater." |
setup( |
# Distribution meta-data |
name = "cryptopy", |
version = "1.2.5", |
description = "CryptoPy - a cryptographic framework for Python", |
author = "Paul A. Lambert", |
author_email = "nymble@users.sourceforge.net", |
url = "https://sourceforge.net/projects/cryptopy/", |
license = "Released under 'artistic license', read LICENSE.txt for license information", |
# Definition of the modules and packages in the distribution |
# Note - MANIFEST.in adds additional text files |
packages = ['', |
'crypto', |
'crypto.app', |
'crypto.cipher', |
'crypto.entropy', |
'crypto.hash', |
'crypto.keyedHash', |
'crypto.passwords', |
'fmath'], |
data_files = [ ('fmath', ['fmath/primes_1st_50k.txt']) ] ) |
/relevation/ext/cryptopy-1.2.5.patched/PKG-INFO |
---|
0,0 → 1,10 |
Metadata-Version: 1.0 |
Name: cryptopy |
Version: 1.2.5 |
Summary: CryptoPy - a cryptographic framework for Python |
Home-page: https://sourceforge.net/projects/cryptopy/ |
Author: Paul A. Lambert |
Author-email: nymble@users.sourceforge.net |
License: Released under 'artistic license', read LICENSE.txt for license information |
Description: UNKNOWN |
Platform: UNKNOWN |
/relevation/ext/cryptopy-1.2.5.patched/README.txt |
---|
0,0 → 1,51 |
CryptoPy |
-------- |
This is a pure Python implementation of various cryptographic algorithms. |
The goal of the package is to provide human readable code for the algorithms |
that closely matches the style and content of the technicla specifications. |
The is intended as a reference implementation and is likely much slower than |
speed optimized versions. |
INSTALLATION |
------------ |
You can use distutils to install CryptoPy by just typing: |
$ setup.py install |
This should work on Unix and Microsoft Windows. Alternatively you can |
install by hand: |
SOurce distribution is created by: |
$ setup.py sdist --formats=gztar --force-manifest |
OPERATION |
--------- |
The test rountines can be run from the command line. |
From the installed directory (typically .../python/Lib/site-packages |
-> ./ieee_802/ccm_examples.py |
-> ./crypto/cipher/ccm_test.py |
Just run the scripts: |
>>python ccm_examples.py |
>>python ccm_test.py |
etc. |
CHANGES |
--------- |
See CHANGES.txt |
FEED BACK |
--------- |
send to nymble@users.sourceforge.net |
/relevation/ext/cryptopy-1.2.5.patched/binascii_plus.py |
---|
0,0 → 1,73 |
""" binascii_plus |
Enhanced hex packet input and display |
Copyright © (c) 2002 by Paul A. Lambert |
Read LICENSE.txt for license information. |
""" |
from binascii import a2b_hex, b2a_hex |
import string |
viewable = string.letters+string.digits+string.punctuation+' ' |
def a2b_p(s): |
""" Convert ascii string of hex bytes to a binary string |
this conversion allows any type of white space""" |
s= ''.join(string.split(s)) |
return a2b_hex(s) |
#--------------- |
def b2a(bString, separator=' '): |
""" Simple conversion of binary string to |
hex digits with default space separator """ |
return string.join(['%.2x'%ord(c) for c in bString], separator) |
def b2a_p(binary_string, frnt=' '): |
""" convert a binary string to formatted ascii hex output """ |
return b2a_pt(binary_string, frnt=frnt, text_trailer=None) |
def b2a_pt(binary_string, frnt=' ', gap=' ', text_trailer=1): |
""" convert a binary string to pretty ascii hex output |
Optional display of ascii text provided at end of hex dump """ |
ascii_byte_list =['%.2x'%ord(c) for c in binary_string] |
pretty_list = [] |
trailer = [] |
for i in range(len(ascii_byte_list)): |
if i != 0: |
if i % 16 == 0: # add trailer + \n every 16 bytes |
if text_trailer != None: |
pretty_list += [gap] + trailer |
trailer = [] |
pretty_list += '\n'+frnt |
elif i % 8 == 0: pretty_list += ' ' # add an extra space every 8 bytes |
else: pretty_list += ' ' # space between bytes |
else: |
pretty_list += '\n'+frnt |
pretty_list += ascii_byte_list[i] |
if string.find(viewable,chr(int(ascii_byte_list[i],16))) >= 0: # if printable and not white space |
trailer += chr(int(ascii_byte_list[i],16)) |
else: |
trailer += '.' |
if text_trailer != None: |
nabs = (16-(len(ascii_byte_list)%16))%16 |
if nabs>7 : pretty_list += ' ' |
pretty_list += nabs*' '+gap+''.join(trailer) |
return ''.join(pretty_list) |
def b2a_pter(s, frnt=' ', gap=' ', text_trailer=None): |
""" convert to pretty display or leave as string if printable and short """ |
if len(s)>50: return b2a_pt(s,' ',gap=gap,text_trailer=text_trailer) |
for char in s: |
if string.find(viewable,char) >= 0: # viewable? |
pass |
else: |
return b2a_pt(s,frnt,gap=gap,text_trailer=text_trailer) |
return '\n'+frnt+'"'+s+'"' |
/relevation/ext/cryptopy-1.2.5.patched |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |