forked from orchid-hybrid/usokoban
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.c
666 lines (561 loc) · 70.1 KB
/
solution.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
#include <stdio.h>
#include <sqlite3.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <gtk/gtk.h>
#include "solution.h"
#include "zlib.h"
ZOBRIST_KEY zob3k[3000]={0x1790e4262c8d622aLL,0x3eca267823be8f72LL,0xe8df33b0487c0062LL,0x63264969b4531d56LL,0x60ffcde2120497c7LL,0xf1d4aeb30690232cLL,0x4aea3d456336caaLL,0xcd866711bd0f99dfLL,0x5fe4e94b39f0776aLL,0x12a6c8cf0d4dd505LL,
0x433ada0ab813d863LL,0xaa2dad7ff151411fLL,0xbe0e093c4d4a68eaLL,0x69d0045c02c887eeLL,0x4ada7c734442227fLL,0x996dc44418ad1577LL,0xc746524c3b5fc88aLL,0x924c5c7006f9dc48LL,0x744679e712cfdd2eLL,0x19f23b7507d9dd42LL,
0x38f37c7fcc817dbeLL,0x3593404c41c67853LL,0xaf58a6c543632c96LL,0x2de5d9208bb788dcLL,0x157e5d517d0cf57dLL,0x3e9e98d399051a01LL,0x4185ac91576a0f18LL,0xf4654b467e7de191LL,0xe0f916204c88d358LL,0xaa25af77e26c521eLL,
0x49e17539955eceb7LL,0xa36816ed11bd36b7LL,0x561dced51eb0054dLL,0x8899110c597ec8d4LL,0x5a0b7c26c405fb26LL,0x69d455ef7a1ee5daLL,0xc4cce9839951bb07LL,0x9cecdd6b779dd2daLL,0x61daff449f240c52LL,0x1d53a0c2e10b927eLL,
0xa426a74396d42d38LL,0x34f29bb09560f193LL,0x5c79a6dc929d5bf4LL,0x64c1a34c31951efaLL,0x27c81ebaef773537LL,0xe689fe92c665ba3bLL,0x1273b7a5a5765e2fLL,0x43ea7f1a6433c7faLL,0x3ebdc87f221ef7e2LL,0x6777c78e21c69f62LL,
0xbcdaccf99f389245LL,0x58bfee500243511eLL,0x7693c25276200343LL,0xa1a82c6db4bd441dLL,0xeba9e49fb4326ec9LL,0x2e06da75c547ad69LL,0x91c35c357049d56cLL,0x796d0d1ee1d4a9e4LL,0xd3649bfc3fde0d7aLL,0x8ac1ae2603751a4bLL,
0x480c81b407e6f738LL,0x7f435651878d0b2cLL,0x4dd09f77431099deLL,0x349193361d1a3aeeLL,0x1c6cd9fc9dd096b7LL,0xd7e1a6553eddfccaLL,0x67a85034de44bbbeLL,0xb1549f5b4d6a0025LL,0x432f4e10b86809ccLL,0x9ea5c91cd49b2b0dLL,
0x32dd9b0ce6f0ea6dLL,0x8f265ed12017a60fLL,0x97840af8105b94adLL,0x2f000615db6a0d6bLL,0xf68540bd4ec6aa9eLL,0x3b06e0cc523acef3LL,0x6c4c688dcd5d2148LL,0x3057a4e0b059d6a4LL,0x34b123cf737c1e03LL,0x7d161aa8e74d052bLL,
0x408be0da7016120LL,0xac78930bf5cf245eLL,0xbfacb63b9a7c85a1LL,0xa0156a9c3aff0949LL,0xb762a2d24dda4f30LL,0x929f0716923f11ffLL,0xc096150b8ac88fddLL,0xb2fc5874c86968cLL,0x475c2b76d245b247LL,0xfd698881a88fc98LL,
0x4604373ac62e8330LL,0x374b734242966dfeLL,0x157720c42bdab291LL,0x851dac65278361aeLL,0x8d294bee62aa2f15LL,0x2831620f4cbad92cLL,0x62363e1828ba084bLL,0xd8ee42ea4adf68c0LL,0x94b335fdd448c541LL,0x7cd032af63ff0a60LL,
0x1ad6088079620161LL,0x45f306561c2a167cLL,0x9cf6845476198ad5LL,0x59618e68684c64dcLL,0xf47eff3110287855LL,0x3b76b4f89685be0bLL,0x1580d9a4a589fb7dLL,0x92ab5dd53ed9b9ebLL,0x3aefeba7a56fdc70LL,0x1302d01bf17ab866LL,
0xdd3959b5eb088105LL,0x65637db3fb611324LL,0xf6075a0bac156d50LL,0x4c64414ed50bc6c2LL,0xcebe44b6fee47b4fLL,0x1b8f65ac02b21445LL,0x449ca7b42bfd2040LL,0xb4dbe34691e203d6LL,0xa22df11cd6ffe922LL,0x726e83e222da1dafLL,
0xf02e10b24316c498LL,0xcd80725019b9e4cLL,0x927fdc43974f9138LL,0x618e6b5e9398669dLL,0x63f36a91edf601efLL,0x7617d7cd2fcef60cLL,0x329847063c90b13dLL,0xc0c91a7bf690a30LL,0x9b8e70b579d9e20LL,0x5e8fe3c274d5323dLL,
0x6da77f8af160ffd9LL,0x37393a7665fe2e3eLL,0xd4700f5de512e9cfLL,0x9fa89dc25fa32e2LL,0xcdcbccb7052925cdLL,0x61ac31aa26d96e2fLL,0x5dd3d769549308a1LL,0xafdf2b0098b02926LL,0x6711c0388ba4fa93LL,0xa9db497f26d0477dLL,
0xa54f9cb84099a88aLL,0xa6cd4bf76aa791a5LL,0x6d07b711042b17d3LL,0x27f568cee5d34102LL,0xdc6f6524e48b6dc4LL,0xd1529c9cf7def6f0LL,0x78c63e62e0a43b96LL,0xf74c77e4ec67b276LL,0xa918854f0f007165LL,0xb2165de673c92816LL,
0xfa3de41c9f8d1805LL,0xe46e5fa4097364ebLL,0x5e63ca3dae3251aaLL,0x5de85e06d139c9a2LL,0x63dd7b499586cfb0LL,0xb7fe9e1e4f0b4908LL,0x694958e9492e3eb6LL,0x5f148e898bc37132LL,0x3dd9b0e30393a101LL,0x450b521bb343025dLL,
0xea17bbfb859dbb11LL,0x4e851c9cd61ccb00LL,0xea06c601c7d60c7aLL,0xb9b251fe13ad9024LL,0xdd1b3dc09942320aLL,0xeb2c4c1ceecf0393LL,0x26264a3a628f1685LL,0x8779932359c857eeLL,0xc578b71baed1473bLL,0xa44552950ab044a6LL,
0x9edcff5c229d18c7LL,0xc0865eb863b2e584LL,0x75d169d873f1de51LL,0x3638dd636ceaeed1LL,0xafd8c6bde4e48f1fLL,0x9c10939009b4520LL,0x8366a3feb1451aa1LL,0x2f7c534c79471f28LL,0x333c77784422885bLL,0xade2718e9f927a33LL,
0x540b9e9bf1b9597bLL,0x17f53e8c6e5eae9eLL,0x36e2cd54d6f001fdLL,0x7d849041d00780abLL,0x4982262828737bf9LL,0xd54777d48e99c80aLL,0x44d153a894591d8fLL,0x770161487f5ec4eLL,0x95b4a87d6045345LL,0x8b79edc3b622afceLL,
0x4c5908554c519765LL,0xe73baa2340773b75LL,0x2ef47ef674604eafLL,0x4ff3b0d15c74e7aLL,0xf0d2d4abe1c0cd7fLL,0xc3ac284268232d33LL,0x928ccb1642d675c0LL,0x3fe780041d43c1ecLL,0x734a38390884654cLL,0xb44975ae99be7f12LL,
0x7421b74d15a62f89LL,0xd9ebd0fac621a6d4LL,0xe2511f1774e8da1cLL,0xba0d111d0fe0e7d2LL,0x7111f77f439610aeLL,0x3c76ddba3206bc47LL,0x1d3e56b427fbafd5LL,0x2e060cc35e5caf26LL,0x2f68c55203fb01bLL,0x6ed7d78198f8ca14LL,
0x8703175cd8d13884LL,0x39b815208bf58e2fLL,0xc19733f1da044a72LL,0xb0e04a561624da94LL,0x8b0de7cd0290c227LL,0xdccab161a2d677b8LL,0x373ad1621561a041LL,0xaf714378e5b92681LL,0x359d0f67e1042f03LL,0x7363b48f6f1f2b9dLL,
0x68f9f14635c3b64cLL,0x8529c6103d4c80d5LL,0xbc1e18bc3949273cLL,0xaf6da76146b762dLL,0x3ee2ff29f9cab785LL,0x6219bffc59c02a7dLL,0x4f14406a505bd653LL,0x49aad50cf510d71eLL,0x7ed9eac73209d282LL,0xf051eb61f646e112LL,
0x17c214c3a9dddde1LL,0x35deb0e712de3bfbLL,0x459dbb7b48f9f993LL,0x7172a5a76c5d1cecLL,0x95205f6ae708d898LL,0x539dd3e4f4550703LL,0xdefd5b91feae44a1LL,0x9e6548dcbf5f8362LL,0xe2ec8466e4cae2ffLL,0x7ab39cfd8f125345LL,
0x59aa6f838e9365ebLL,0x9b6f6bead59ec8afLL,0x4fa62520ed9c81c9LL,0xb420ac3c7f9b2dd2LL,0xb49c721d43852b54LL,0xcec41fa219eebabcLL,0xb6caae63383ca526LL,0x3afbae8b2773a9e9LL,0x609db1240e3806e6LL,0x50879f3abec419bcLL,
0x5499058af77ef462LL,0x3cdd121b39ff134aLL,0xc241add119091891LL,0x5ae066017b57c1e6LL,0xe2f6ed9893b6b1a2LL,0xb651ccd3fc24ac92LL,0xa4b1f5649a39f6fbLL,0x4bbe01bb6f82e345LL,0xb0d1573e485cf24bLL,0x65d0a0a3877168b0LL,
0x2e43b7eb283a90baLL,0x7209dcc02209bf2bLL,0x1d278daeb6b89d84LL,0xaa778b3fb366b516LL,0x4b44a5e433891273LL,0xf844d6da4880644dLL,0xb8900de5fa444613LL,0x1624c522b9ffdab3LL,0x8d9433713dbc1f2eLL,0xd272a828c66bad3LL,
0x1d522c33083eb7ebLL,0x2fab8c6f3724cd01LL,0x9dfdf41488eceb33LL,0xada3172da98205d7LL,0x38d04bea44491b09LL,0x53150147000f749fLL,0x94a36e46f921e7e8LL,0xa9b38951bc39c28dLL,0x7a03bb13bb40aba0LL,0xfe6ca193fe675332LL,
0x7ee6c29cc9a2bcccLL,0xf6b132b936f95c1eLL,0x991c0150cbd894c8LL,0xf32a50510c35b612LL,0xa71cfbc6a3b4ac92LL,0x6289dde4b953ad2fLL,0x6fbcb36c802cdcfcLL,0xdffa91a38b63ccb4LL,0xc82f311599548a91LL,0xd9362cab39142968LL,
0x93db6370bb33ed10LL,0x98599dfaa6e109c7LL,0x86ee98b085afea67LL,0x983390a880be9f81LL,0xc2f7a577ee07e164LL,0x2fa69b596d6be649LL,0x3939eb0284f24bfdLL,0xfd267b17b83d555cLL,0x15c52428ee12c73cLL,0x6f3bb3f685f6efffLL,
0x8cdc773c9a09a6bbLL,0x95071592f8b45481LL,0xabc9d99280a9f301LL,0x7c6263c3ee18b4aeLL,0x5a88d62f7d5c072fLL,0x790185e3fa954fdbLL,0x35556b2618412e01LL,0x6a2c809a3a790609LL,0x51416aa05c1dd67dLL,0xb69ca4a2c7c5fd1aLL,
0x3547c87e5567c90cLL,0x2aef5361729a03deLL,0x1e2505160f612d21LL,0x6bb7b971885e2ec4LL,0x91eb22cc539e497cLL,0xb310433b5ac7bbe5LL,0xd2761d4f34c296cbLL,0x5761b7532d7a3be8LL,0xfa795a4af620061fLL,0x7bff820704641db7LL,
0xda2efef057d16a23LL,0xbf326f95a7c00d77LL,0xfefd002eb43d886fLL,0x6ad5cf40ce6ef03fLL,0xca61af2e6d50b245LL,0x8d95d235d28e7c03LL,0x196fca46b452defaLL,0x492d4dd12a4f0243LL,0x4cf916a587cb9487LL,0x877eabe770f2dc80LL,
0xe84095d018dcc9f8LL,0xd45e5a99f8a30b1aLL,0xfc6ab483a22f40eeLL,0x9ae2839ded693eb7LL,0x8bebde2e331a60fdLL,0x3fc30eb0f84cfd9aLL,0xaaed857d17292973LL,0x5aa40ec1a2ad59daLL,0x771f14e6cbe0648aLL,0x2136a684d4149756LL,
0xed343e0ee8eda6ebLL,0x33b0deb2eb5552ccLL,0xad3a2951faf0d0aaLL,0xd369f726ce22bce6LL,0x9be6779b42b08a54LL,0xf26a1b7c26e1200fLL,0x6080b1f6475fac10LL,0xd008a9679b5dfdc3LL,0xaa9d5109ba829393LL,0xb410ff32c9fa1f6aLL,
0xf35d4252b3ddf210LL,0xf97909bd9466a4e8LL,0xa4d60367e396d736LL,0x50720033b7286064LL,0x4945aa4c60618f76LL,0xe1874e34c076949eLL,0x542db95eb4f36ec6LL,0x72884499540ec229LL,0xa79aef0c3083f67fLL,0x6309780687a19b2aLL,
0xc2624e8c3fccca86LL,0xf72a188f01ba844aLL,0x2a16209e541413aaLL,0x6744d33327a4aedfLL,0x965168b7ddeb286cLL,0xaad863d19d6d7882LL,0x7f468c20a64f5eebLL,0x9ec89855fd292a04LL,0x390e7ed6c16bae15LL,0x6f1f37ad039885caLL,
0x4f1634f119f0f07aLL,0xf09e861fe32792dcLL,0x196781a6ab3ac89LL,0x1e74d79867061351LL,0x143d32b6797ec4ceLL,0x9d4077a439b6c45LL,0x327c8b461b3e0a29LL,0xff484292875d9efLL,0x3b83aab173d47bf7LL,0xc92b6138518589fLL,
0x65de518df9c32d1dLL,0xe46e1ab171ee3a0aLL,0x16ddd1450af67380LL,0xc748018f311cd710LL,0xe467eee3a115ab8aLL,0xb7d86561cb28a84eLL,0xeaa6d83637da3a19LL,0x5ca7b134ceffb074LL,0x58dce4a2d2136a64LL,0x84d90198aa3e889dLL,
0x81ca516057c1d0c9LL,0xa9368ef0ca98d410LL,0x30e84f786ae126b7LL,0x4071012a0471128dLL,0x1be59c2b432dcca3LL,0x88d641940a9e03e7LL,0xc006272b1cfd256LL,0xa96e58b6e2223351LL,0xc7cb69b1b65c9064LL,0xa863608dff80ca3bLL,
0xdc5d90cb0721eff2LL,0x9566982100e6f193LL,0x3cb9790385c60a59LL,0x1314e62b5db7c6f0LL,0x3ded22aad5fd47e2LL,0x14a5f32b005a9652LL,0xc6177f6f475a61ebLL,0x45d69b10bea44964LL,0x9e9a912e81953383LL,0x289c8c01b8c3b66fLL,
0x5130e749cb4ad95bLL,0xcadd6d8bdfbe1546LL,0x8c9cb3ced628500dLL,0x9d1ecb5c7bb5ec31LL,0x5b98e2687a2190cdLL,0xfdd60516cd54a14dLL,0xcd65827c23617bc1LL,0x46f020fc7bc1c57eLL,0xd7b0789596948322LL,0xfb090405b8f23d1dLL,
0x680c2af20e015252LL,0x41a96aae0cff772LL,0xb949388902087559LL,0x241915ce7402e351LL,0xbdd5c3fc74e4e427LL,0xf6f1fb2d5ecab0b3LL,0x74ff281e5a1616daLL,0xfb012297a61abd0fLL,0x9dcd4010899da922LL,0x544b8b92a56eec40LL,
0xa485c1c29a8ead7dLL,0xe51d9552c5b79b56LL,0x60d883d0b898727LL,0xbc3575e44055c6f4LL,0x55b5b0edc9f0acc5LL,0xc971f00c2a36cb11LL,0x9a5b116db4d91e8aLL,0x76773aa794ee22b3LL,0x189f38ce479bee68LL,0x7b8351535575d002LL,
0xa45b99cdc5e72e30LL,0xabde296384adfb36LL,0x9867e962e211e264LL,0x56d14428f3eadf06LL,0xc656b402e5398bcdLL,0xe295973efe8ac776LL,0x7cd12fbde8fd1024LL,0xa9d9bd44259c7876LL,0x4e8be77eaae2703eLL,0xb3a04ce81f35170bLL,
0x6f3cf2fdb190d40bLL,0xe3ca8147e28ac7b9LL,0xfc7a412574dc8aLL,0x4b3d1fc689d317a5LL,0x5353d2bb7ae7e9cfLL,0xa1b7c7f40c489f8LL,0xfd01f23d02a354acLL,0x2a267c6f6b2c30e1LL,0x1e395143d76b508fLL,0xfddd25ea05ee3a20LL,
0x54a3191907f4c626LL,0xc3aeb4607988a87bLL,0x85be55ecce3bdab8LL,0xb96ccbc4cf2b2361LL,0x63e469dd33ca026bLL,0xb325554b6b56cc9aLL,0x12306e805f9efa77LL,0x943051856cd4d7a0LL,0x355776d6be382e8LL,0xee4265e19419dda5LL,
0xff2dbd24e157e3a5LL,0x5df11ee3f2bff7cbLL,0x82e559a7b9640d92LL,0x3e804a8003e6a9ccLL,0xe21d8e712474088bLL,0xcae55065c5f4151cLL,0xd0dfae38a9bfb5b4LL,0x79b0c96974ea7dffLL,0x705ee55c6afc03ceLL,0xd013552d7081e63eLL,
0x20bceab1d33c0f09LL,0xa8c81e7acb82ba60LL,0xc5c01a156dd72feaLL,0x141725a83d2dcc5bLL,0x5e16bcd063d73882LL,0x880297a55048d593LL,0x888f8e71a861bd56LL,0x560f2026cf4b3721LL,0x4c52b88ab968c132LL,0x870f5b394a1c3e49LL,
0x111db3884304d9d0LL,0x374586388a309d28LL,0x3191688d69658089LL,0xe29991a9c2dc3097LL,0x676a2e9d1cd81818LL,0xa07f7113cee0892bLL,0xf7d1bb74ff23c3f7LL,0x735a934e623d6488LL,0x324fb6fd9c39d2bdLL,0xba52963467e90e58LL,
0x87c0a0b311cddb7fLL,0x1c1a652aeaea7254LL,0x40a1e4c95d71b709LL,0x2b62ce8a4afdafbLL,0x4611748d1d7c06c0LL,0x5b5c5b837c173aecLL,0xb6276712461403beLL,0xbfa1795c5f017ea6LL,0x1e4dfb51546eb340LL,0xa276b0bc35d1a06LL,
0x13a2237f0df1f1bcLL,0xc828587f6c3e27e4LL,0x34e63c4ba9dc3fe0LL,0x48f42a27414596c0LL,0xf78b77559e69429cLL,0x944ccbd9bbf687d0LL,0x760f09696f27367cLL,0x91375ec0ab0ba3d0LL,0x1557668dbd6fa13cLL,0xb9effc4c242cd1dbLL,
0xdeeb43c3217f9fbcLL,0x2ac152ef6cf9f00cLL,0x79b2eaed173e412eLL,0xd828578d7c6f8006LL,0x446c4c2678d0f886LL,0x3fb09f46dc9dd0b8LL,0x5021992ac4dd211dLL,0x33a5c6c644e625d3LL,0x73237e279229fdffLL,0x26801d652dbfb487LL,
0x248b4adcf840b022LL,0x9e63d365455682c9LL,0x3a65e9cd29a41dc5LL,0x7e3a1cdc4c459c71LL,0x7889c52633cb594LL,0x632ed3db13d9298cLL,0xd213a36b915f5079LL,0xd44e1020ea271f96LL,0x97fbdded1b362f77LL,0x18fbbd0d98d23a37LL,
0x84ad6d10563c8e96LL,0x62730701015b2569LL,0xc74f332459fe79a2LL,0xe035c073bc9f13dfLL,0xddbc82bc7430dc73LL,0x85d0a1fdb62f205LL,0x639170bc7e059a3dLL,0x765fc7834fa4c4e6LL,0xa0e1ab7698dd3184LL,0xff8aaa6b191c8ae3LL,
0xba6091a5c89096daLL,0x58c6849c718a26f3LL,0x7be43acb4728ef41LL,0x75474f0157ec5b11LL,0x8f03b15deadf6837LL,0x74bb6a35902f2072LL,0xba7086595ffa89bbLL,0x31882ad0f23f9402LL,0xf616ba5888d9f5a1LL,0x5b4b4cbc1ff34fabLL,
0x135dd1409206cd51LL,0x8970660db51067aeLL,0xc274e990793896f6LL,0xb950a356776e8494LL,0x67be35b498ed7a88LL,0xad197f737b82dddbLL,0x3556a1726f2d479dLL,0xcd5acd24e06f676bLL,0x29e5b4e190b9a743LL,0xa0b51adf739a3127LL,
0xaa486f1892a07a7aLL,0x9b98725b68659de5LL,0x52582995915f4c91LL,0x33eab241304f4efbLL,0x35afd64d5a392140LL,0xff22bbdac5dd23ecLL,0xac56f2fb34802135LL,0x4383d76d16ea15ebLL,0xaa6d279a5c32a480LL,0x61e4fff4033ed046LL,
0x6189517de91325bfLL,0xb9e039ef69f60d90LL,0xeaa3b8ef79ee963eLL,0xac865f8a6ab02f01LL,0x16d4819fd2642726LL,0x66f0eddeae3fede4LL,0xf8fa8609b96e13ddLL,0x472ab53c85bb6d82LL,0xfbd659eb8b31f23dLL,0xee259d765a99f65cLL,
0x93ad0ca79f01ffdLL,0x41f34be5ffa8e715LL,0x533307e3bbde3929LL,0x3612f52d67cb1c22LL,0x798c2c19280f17cdLL,0x33fbe1f4d323cb76LL,0x2cf99270b0b8a533LL,0xc7c5e3f9f837f7f7LL,0x3232e4e97c867a47LL,0x7d865e7fdeea3633LL,
0x6c52af7bb3d86d78LL,0x56085f00ce183f9cLL,0x9f993ca854a31fe7LL,0x70bf534cc69b534bLL,0x3492e57370524c04LL,0x5c262cccb35039caLL,0xf93e509982106944LL,0x3447896ac7b5f63cLL,0xc135d86bed286d5eLL,0xb2b4abeb585788d4LL,
0x9b08298c4b3f42ddLL,0x517ac0f925e498f7LL,0x6713b6194e7f247aLL,0xf0082ce7c8fc2068LL,0x8a648b0521601a5aLL,0x214e12182ea3bd55LL,0xd0c2f2e47a0fd299LL,0x7c766e746225b74LL,0x3c5ff413ad31a01fLL,0xc23721accd0ad4fdLL,
0x7eb53eef8fc8da63LL,0xbbcede02b5db86fdLL,0x35aafec62d4ceefeLL,0x7f96ed0aad191989LL,0x1d1754053d6cbff1LL,0x598038e13c838b76LL,0x919bf1694f26aaa7LL,0x4919c36f163c13ddLL,0x4154ae83ecdb8008LL,0x82abe957bb45e7dfLL,
0xf9dd19d0b652c14cLL,0x597b4117e42b8fcbLL,0xb53d11d13db41326LL,0xd2832a0d8876e376LL,0xcd52200143d1de4cLL,0x63a83f4e7fb37072LL,0x7343de273d8e2018LL,0x655fa16c215f8ea3LL,0xb8c16333059de87dLL,0xcbeb3018ab54b4b2LL,
0xfc7f61b9d68dd89LL,0xb70144179b7a1fd3LL,0x2d581d504cb22c83LL,0x4a7368517a08fbbcLL,0xa6c408bc0d1bb5abLL,0x3ccaa58cc97772cdLL,0xa419ba2def17b9d2LL,0x75b8092332ef673fLL,0x5c01505a1275728LL,0xb3d555fc59759e8bLL,
0x95856081a657e8fbLL,0x1480cb8caf37a9abLL,0xad124ea8a9853a5cLL,0x4a08669156066ca7LL,0xdba1adf4912a0872LL,0x79785ef0e51cdf1aLL,0x348c0ea51a7e9694LL,0xb23d777ae1295b2aLL,0xde203ea7aa65c0dfLL,0x90e5584f1ee70b12LL,
0x62d915ce6ab96b13LL,0xe6e6be6a349d5539LL,0x37b32a9f1830e2d3LL,0x630ae2dce1b56ba2LL,0xa6a829f42da37cecLL,0xe18fa8551171acc0LL,0x8f7b59c76385c1b2LL,0x388f246fdb88019dLL,0x148790004200b144LL,0xd17c3dcb74b24b31LL,
0x162b7d0b65a4ef46LL,0xea24aa321bf17055LL,0x1e4009330ee315ffLL,0x998f4f0f9f2e95eaLL,0x84860b7f8eace3aaLL,0x764f9ab7de9e46dfLL,0x2c342eec1b379b3aLL,0x154c968a9748910LL,0xc2afdbbf64febc3fLL,0x12195752b9b4f188LL,
0xe735018f9703a0adLL,0x3ea5140df1480c25LL,0xd4a20e5379cb887dLL,0xd2ac438b95dbe9c4LL,0xf86cb736db1eb79aLL,0xce2ad64ea4adaf40LL,0x195f76090fe066b0LL,0x9e11b176df8b7e2dLL,0xd3fbd732d2069229LL,0x8dbe021378c7726fLL,
0xdcc73c6f2eb2e305LL,0xa1a2077a230a4050LL,0xa94106af958a1a55LL,0x9f599bea715f587aLL,0x3cc11b4a0a8eef20LL,0xd6ceb9801e0b996LL,0xc23446750a4076deLL,0x6b12910491938602LL,0x9cb9eabe7e4e998fLL,0x7dc048044ad97025LL,
0x212d6493cfb1cebdLL,0x7392a35934f32304LL,0x5c610207777acb4aLL,0xd271b267d179f5c6LL,0x804ef615b6984ed4LL,0x4689830ac9bcd6aaLL,0x7523eb6ade80f9d3LL,0x51091287fcd9cc6aLL,0x30dddb4a8b10095cLL,0x44b656b37f84b77cLL,
0x4866479463d95971LL,0xc3ec6d9ab0ff79b4LL,0xf9a71fc3f8058481LL,0xa396d9ffdcce1cf4LL,0x222978f9a822f4acLL,0x55273ac798ce35a2LL,0x824ff24cd030cce1LL,0x94a5ebf046947ff1LL,0x3de8ddda5c48a658LL,0xf39d849b6fb9a3afLL,
0x17d3668287bb86fdLL,0x40f7a04092544ef0LL,0x97a21675590a43caLL,0x54d8f4fe8c8b6fb3LL,0xbf8219b109a60d56LL,0x1be468c59ca04c29LL,0x49c473daabddfecaLL,0xee9b4f8f8b3580fdLL,0xa7dd1cbcd0e48447LL,0xb6e338dc96c92671LL,
0x49c5a010f42ac8ccLL,0xa6d21b8c2cbac640LL,0xaa14eeb4aa9ac390LL,0x28c22b7ea171b9d6LL,0x2ef02efab53543aeLL,0x4998dee5d671ed4aLL,0xdeda8531be5e5965LL,0xf40d332cb5e24364LL,0x16f79c1fa7462780LL,0x42ab2a7d846d40f8LL,
0xb4353db5427a51a6LL,0xf27b4ade46ceba85LL,0x83b79cd03164d047LL,0xeb5d74e2f956798LL,0xb272c593bb1a78b5LL,0xbc8a3b303bfae7baLL,0x227cf4af33fb03edLL,0xecccf53aab77e1d4LL,0x4636b5277f32a560LL,0x77145f5aaa250ddaLL,
0xb74304c91f94eaddLL,0x1a6d58503937f8daLL,0x81a22e70fa20002eLL,0x82a675b970ee538aLL,0x582289922bb420cdLL,0xf3bd9e5b54158d10LL,0x472a19ca7776e390LL,0x718c351751cfc367LL,0xa55e2b4aa91d3003LL,0x9f9d3502ea5a57bfLL,
0xd09b1dd0249356e7LL,0x5b77a03fcdecd864LL,0xd284dc31c4530d45LL,0x51b5b8b89185771eLL,0x6c2d8441e2c8e051LL,0xc15cfad8f53c25e1LL,0x63643bb66a30f82cLL,0x21c9c05d8f6f9975LL,0xb26d6db066cdf1dLL,0x2782f9896c6cce73LL,
0xb8c9bf4c028df0ceLL,0x92c087a46e15776bLL,0xd4f5e1bf34eda64dLL,0x1658d467b5003202LL,0xdbc12a423644f6d4LL,0x4cef34a392d862a7LL,0x23355c7ce8b9cbe6LL,0xe0b09267764e6798LL,0x9c7c4b179542b8e9LL,0x3825616ba14ea43cLL,
0x29831ad3f64ab73fLL,0xfb40a5ae5dfafc67LL,0xe2e569b507ff7a79LL,0xc7c20a755b6b5db9LL,0xbb38e9200f5a388LL,0x4746b6088be4e0c2LL,0xb9aac24ca2cf8465LL,0x365cdec02e519369LL,0x90ef4f78b6728aaLL,0xf75776732d77a0eaLL,
0xa7e57ed410365580LL,0x4ee13987e360f3beLL,0xa60ac2a326bee324LL,0xae58ebd4df7c5dcaLL,0xa934f7ab78dff0daLL,0x9084af32192008e2LL,0x83c960cc56d7259bLL,0x9bcdc8f8cb364043LL,0x5e2a73deb51ab7a1LL,0xb9b120d17c3c5e6aLL,
0x115ae774e0f85f79LL,0xabf894a84e1d4bb6LL,0x6f2c4c0d2a09b1acLL,0x63ab526498e2b3LL,0xdfaaeb38263afe75LL,0x942c2d5b1a1d5985LL,0xbe3397ade66b077LL,0x715abe24588459b2LL,0x9e3b2e8472e8cde9LL,0x172c4c5d2c72a2f5LL,
0xe065852d4418b799LL,0x20866051e9b888d1LL,0x1137a9bcb6c272baLL,0xfeeed5713387d20dLL,0xff976ef7a3bad56bLL,0x7f8ce8c7c4844f18LL,0xdf52482f74f825e0LL,0x8b7743b2e3ee85e8LL,0xfcc342b349e63d1aLL,0x46753da3e9006ff5LL,
0xfa6c00b5dcd27eeLL,0x367dd1d71a52b36dLL,0x87289c565d45c298LL,0x156e25772f9e318aLL,0x641486aed3447cb1LL,0x3fc4b5b05b9f949cLL,0x106dcb62bbe78932LL,0x461bc384e9c7032fLL,0xa79446c7d2702a00LL,0xdba8be613d788157LL,
0xdceb4304ac0bd119LL,0x93e736929301b5adLL,0xdc50a72338f3714dLL,0xd93057bc753a3179LL,0xf6e5ef86a6bdc77cLL,0xbe526f2542714fa6LL,0x9e6c21d619a257b1LL,0xc17a814dd8da731dLL,0x3f1f04d24151a5e3LL,0xf25454a6971a5ff8LL,
0x84c56074b2f65f81LL,0xa35f2117ebc329dcLL,0xafa7987e75e556e8LL,0x9e330186922b78f6LL,0x1deeab15fe813ec2LL,0xc438cf2ff2aaa86bLL,0x174db716e76cffe0LL,0x8b68462728b22ae6LL,0x9f261d67a1a29f18LL,0x5d07c3f1cc51c7bbLL,
0x789014c1b7491f9LL,0x1647a2ba0e16648LL,0xe4d813f6d2b197caLL,0x7ba9085bb4e27f30LL,0xbc32d51070736d7eLL,0x7038f1613eeea086LL,0xee2c563113889117LL,0xb375ca9ba27f1c21LL,0xb11d45506f54c9acLL,0x113b0f468f86bfe2LL,
0xc05fca11c8ed6bebLL,0x94154424cbfa372fLL,0x234a40e2d26484afLL,0x737a2c95c5d3dcb8LL,0x9b18aa30474b4289LL,0x13b487454315d1c4LL,0x91ac1e95bd599daaLL,0x3caa3fb760d1801cLL,0x4829af52433d8419LL,0xdc12a4155c3b32f1LL,
0x60bf4b5340600627LL,0x3e546447fff2691LL,0xdd14e27ffa1b6be4LL,0x34cb7887f258947dLL,0xdee2337240cdcccaLL,0xdacc0d9878adc29fLL,0xa3380fbe925a2102LL,0x4a09ede3d9e11b0cLL,0x2c77efbd32b22a1fLL,0x2e37246ae6ba9846LL,
0x27cb5a6becd37fc9LL,0x24cbb5cbda163a09LL,0x5664cf3818cf0036LL,0xb65c297fdccd0874LL,0xe406eb37eab9221bLL,0x562f333dad311364LL,0x8ce621ba54f36709LL,0x13b373b743f1b285LL,0x969982ef4b387e93LL,0x2615c13fe279fceeLL,
0xc716b00a90e8ffb1LL,0xc51d48b361a4ea5fLL,0x95615092c5bbde05LL,0xe04531bc65676646LL,0x3112296612aaee74LL,0x42f4c4f25ccba135LL,0xf4c715adf09bde2dLL,0xf54d24d452092d4eLL,0x91fb7211f41f82bdLL,0x57035623c4d4f951LL,
0x1ec81a5d5eab32f4LL,0xc51642bfa7a20721LL,0xeafaf248e92bdd2LL,0xae17c4ccfd4dc358LL,0x9b59102fb53e895fLL,0xa2fb2a9d463ec440LL,0x442602eeb59e1809LL,0x66fc1a9cfd1d363fLL,0x55b7738e4975041bLL,0x11f12a53e186bfb4LL,
0xa92360e746e66928LL,0x3de1dfd7ed6de553LL,0x728b5e3f1e008a32LL,0x485c0786184c3e62LL,0xa267e3419c7d8b9eLL,0xa2ee3840c32a76a5LL,0xb197d40ba74d3a0bLL,0x91bfa80be34c6308LL,0x333b639148d80e34LL,0xd25941dba1c4ae6cLL,
0x77794297cd5e2731LL,0x10b2fa7f42875d5bLL,0x1d33cbfa79821666LL,0x89338cf6c56e673aLL,0x1e5aacae0f996077LL,0x63ba0fd592b0aa01LL,0x361ae65a07f28962LL,0xdae8f8f1378563d9LL,0x5d0a98693764ee7eLL,0x138adf270d3e0220LL,
0x9cae8f33cc62bd53LL,0xa9fbe0ec5d766f9aLL,0xc214796abb855b6LL,0x735f59fd3b3f9422LL,0xba1a0879cf28b6a9LL,0x800aabe0d61c4553LL,0x158fbc79f1a506faLL,0xf7b9c41094fbbeaaLL,0x6912602bae9d803bLL,0xcbba92693626eb06LL,
0xcdead8e66ba242cLL,0x24467a12b2bf7984LL,0xdd57765f1966f49LL,0x8f043131313abb9fLL,0x2a5b1218d6950bcdLL,0xc38712ef519d65c9LL,0x2788bd05b99b17LL,0xf9166a9618707345LL,0x95d378a6651cd84dLL,0xd4907b0c048830c2LL,
0x673a5444db130973LL,0xe5bb100e11b630c2LL,0x33ab289806bc633fLL,0x966be033ee4dd4a5LL,0x2513289371830106LL,0xf49d3d32487a307fLL,0x325e3ebef0b66742LL,0x55c3cda84109bc33LL,0xa54eb72a5f76c689LL,0x8cd5d01e9d4d5102LL,
0xc9128b34ea2aeeeaLL,0x1f3d011e4cefe697LL,0x970260acc8febe85LL,0xa06827a347aa6c5dLL,0xb1be01a945372d2LL,0x80433668ff08156aLL,0xcb1947daa2a0b998LL,0x9a3af591500d19f6LL,0x2c6b61fe11407724LL,0x4c32e3580580c213LL,
0x85d16d2338606f97LL,0x95dce8913ba599d1LL,0x68334a08b06913beLL,0x253a99cb7f8f989LL,0xb88e039e9ab6795dLL,0x88bd095304395cf4LL,0xc5fce9b34631d1daLL,0xed3fd917a1981ef0LL,0xa039a224b1b96e44LL,0x409e517282b34b37LL,
0xcdf28ea2286f3739LL,0xf12fac707aeeae1dLL,0x3e2160523580a52eLL,0xca64030a5e2f9c34LL,0x52de247972769d1cLL,0x8e70b4874109a99dLL,0x6bc2b686b728d6b6LL,0xe31d088ff643dd45LL,0x95a074fbe1614db4LL,0xa4f15962dc471d18LL,
0x48d673c2471008e2LL,0x73c3351e9b1c70f6LL,0x259fa39c730d904eLL,0x2dc9a13f1f702e95LL,0x64e94995dd3f7577LL,0xd6ef8c1fe23a9461LL,0x8e202cc9dc4fd588LL,0x71083398999d214LL,0xa58f48a35acb2ad5LL,0x182ba78208eab60dLL,
0x7ef13fed1db4bb06LL,0x7c7122ed974608dcLL,0x5f4bbbef64342eacLL,0x60006629c94e418LL,0x88383414245c67deLL,0x774cfe3c6e3596f3LL,0x2f761da203f70224LL,0x3f9c50c169641652LL,0x11ec52158f7c45ecLL,0x4894ad8779ecb5eLL,
0xadb0211226a49LL,0xb9aa68d50ccecacbLL,0x97abbdb754f41118LL,0xd61f0258237aa59LL,0x5f962b2a7332a001LL,0x5119e22cb670a2aLL,0x9371dc859f9c260dLL,0x8b21d9d1364379e9LL,0x3ce7e1eebe64f09dLL,0x36b76ed254e0766cLL,
0x6477780c4a435e13LL,0xa2471dd9ddfbaadbLL,0x1f17f08306140342LL,0x23a774e18c0337a0LL,0x519f96dd5b878da9LL,0x3203adc21b6932bfLL,0xee0698e5b14fd2d4LL,0xcf42c3172036d854LL,0x48c21d68115a1104LL,0xa03242e900151334LL,
0xba8edbbe56d7033bLL,0xaa7d8ce4231c953eLL,0x4658ff430963327aLL,0xa43d3ba376d0b01LL,0x1ff22050c2df0c6LL,0xf656b25d6d35ea4bLL,0x1f9face8b8781029LL,0x6a90fd065a34173eLL,0xd4d031a391dd1082LL,0x2c20386dee156371LL,
0x5b2690a621d51da5LL,0xf3fc40d28ee60ce6LL,0x90c21767b8334223LL,0x674d136b4b0cd360LL,0xf3f35076db04f443LL,0xe4e92d049d5d57bdLL,0x47c7496304eb6c1bLL,0x6e016f3a5df2bf68LL,0x877e53689ed9fc58LL,0xe6bbcef92829ee06LL,
0xd5741350edcf7bbLL,0x188ba1c0b9b1d0d5LL,0xa96496cbf3ab5168LL,0x6cbfe30d50ef4be8LL,0xe703492ea8cf657fLL,0x74d3cb553df3e9cbLL,0x48be91767ddd8d41LL,0x1a72fbc66a0ca6c3LL,0x7f59b28b3b4e547aLL,0xf31f458f484bcffaLL,
0x2fa4dad0823b130aLL,0xff1f9d9b4118c0f8LL,0x225746bd804a06d6LL,0x80d315c58bb2b025LL,0x6fd76fe78e55a56cLL,0x778f44a1e114d379LL,0x93a8319fb61ebe5aLL,0x522662067c5ac0f7LL,0x987bfee57c33dae2LL,0xcfd34c1a02ce5bfcLL,
0xae3d65077e248b6bLL,0xf482f69e010f12a2LL,0xb2a315be42e1b5e5LL,0x8306982ba6e74e20LL,0x39b992afa036679fLL,0xed0a30068d21972eLL,0xe67dab846bc86002LL,0xbfd60798fadaddc5LL,0x980d6d10c733310aLL,0x96d3c4a39e8a764cLL,
0x3e7daae85f35231cLL,0x2ef41e9c059cf8d2LL,0x5f1cbfd607571b28LL,0x704b28fd8b402184LL,0x62b628d776c184f3LL,0x27a983864d565fcLL,0xec858b81efba8a24LL,0x3e38ecef2e636accLL,0xf69757aa6c96b037LL,0x5717adb0e2039dc7LL,
0x4c1693ac81aa196aLL,0xcff99ec38b12650cLL,0xb5ea6ab10d9b46fcLL,0xb346a80cd62dcebdLL,0xda2e851f617da602LL,0x38703674a8988d2fLL,0x2d43edf90e76bce0LL,0x8ed9e3e8d37b1301LL,0x9369f1f3a573ce27LL,0x743dbdbaf0b144b5LL,
0xa35ce3260248e9e7LL,0x12fcd411f171d459LL,0xdf1dafea4348ad44LL,0xec9e688a1879e6ccLL,0x838a86f180bcf17LL,0x70af489bc8f3d9d7LL,0x3b1a97140fc69074LL,0xf6d09f351ebec6adLL,0xfb854eba1a39100fLL,0x946bcb5cd6869d9bLL,
0x337dc3762f20fe54LL,0xba2dba16af17bdefLL,0xb1ae64ca87d7f96cLL,0x76d5dd922eaaef35LL,0x30eef8d64071dd75LL,0xc20e16be68c3c517LL,0x820705a01102277bLL,0x2cab4454590e8718LL,0x3523bf066f956abdLL,0xc307f0a337f364a4LL,
0x4e4083837c06ea5eLL,0x3d02ab2f5db3837dLL,0x6dc76165b5e53103LL,0xcfe5afbe011f0577LL,0x9d4d8d4ef464d252LL,0x9fb7b31ffbe35c9bLL,0xe434702fc0fa5963LL,0x8e6407a65cd8dcafLL,0x801e18554756dceaLL,0x32cbd22f8ffa8467LL,
0x6e00005984fbcebLL,0x3caa21d0fd28fad6LL,0xa77617fe5f28708eLL,0xbda3f21b32ecf11LL,0x4f5d8fb52f083705LL,0x1c8a4a2cd4ef8920LL,0xc9aee1a667517d0LL,0x9afa7fc454b07c18LL,0xd454649cd8b0d26dLL,0xac791357b75ed1fcLL,
0x3cab64da5740a0e7LL,0x43a8dae26c7132aeLL,0xf174b3e9a18a3c0aLL,0x1f6db81f0157fb8bLL,0x28d4050f0d358221LL,0xee97200be53bbdc2LL,0xc2637f14a57ced1dLL,0x160738721e3fd9a2LL,0x594ccd001b401bffLL,0x88d9288bb396cd50LL,
0x173ea7f9255ad9f2LL,0x6a57dfadd9751138LL,0x705b4cbce831f561LL,0xdd52a0db89b0e745LL,0x58794e3f343db7a9LL,0xb31974541b8a350fLL,0xd8ad6c98148dbc95LL,0xb510217239359f46LL,0xdeaae0932d570845LL,0xb8715cb8d6a1942dLL,
0x7cc0a8a696c30bfLL,0xf6a584627e5dd586LL,0xdbb94efedaf32ae3LL,0xa2f5ab0d0d10ed57LL,0x5199bee1579daa9bLL,0x6632019c31074c2dLL,0x6b70f9e3752b2729LL,0x32cc81d474723f9cLL,0x27a477bc1e8ac84eLL,0xcc6590642c78d720LL,
0x333544df10a20465LL,0xec7314b999d33844LL,0x4245f24b002643bbLL,0xca9fb30cb670b40dLL,0x76534137dcdb263fLL,0xb3b489fb1a59dc58LL,0xae3cff8775b6fe0dLL,0xceb0c9a816c89c09LL,0xc8c1205480ea4bd6LL,0x3efd93995bf0f733LL,
0xa0e433d3115bfd0fLL,0x9b559b37cf2f9395LL,0x76ee87d4640afb4bLL,0x93d306ced07c5b21LL,0x7e161f5826968a74LL,0xa4367f518af614cbLL,0x27d2178700d08fa5LL,0xe155b085d722da45LL,0x8042d2c79ebbf514LL,0x76577a5686a87116LL,
0x75dfa2ad93e66519LL,0xd6f61f019f2e6babLL,0x1e60fa6f91aecee0LL,0x2b1e7060fc76e93eLL,0xc9af44c83c400c24LL,0xa94dd2171133a550LL,0x75c030eb599acb77LL,0xfb473c1293a61d02LL,0x5e8bfbe71ff74963LL,0x974c364e98228156LL,
0x463f20c3cc3a43deLL,0x6aa90e91b89aab64LL,0x43df862080832bc1LL,0x246a57e805e7c0acLL,0xb4d7ccbc4afb781eLL,0xba7dd4641809f06dLL,0x88747b4f2e6ba02bLL,0x47fb32b4e6a43b90LL,0x36edd9d581fa1f61LL,0xb34455138a61404eLL,
0xc2bd8f4b2769a197LL,0x66a22db450b453bbLL,0xcb4afd01492bb629LL,0xbd5adf6800c9a45fLL,0xba086267245129adLL,0x4aa3603f38c4a37LL,0x2a48d56a332e1e6dLL,0x6a62a07dcff65670LL,0xd82955f687f1fe96LL,0xd5fb7345cd8bda04LL,
0x41188765c5b38229LL,0x93741456a9ae3b72LL,0x4f7025b056395a96LL,0x448358e2de31ed14LL,0x932a12d3b994657dLL,0x25827a749026a5bdLL,0xd96832d21b10c42dLL,0x59006d9f4c82466cLL,0x7d99e896c20ec3a2LL,0x6ca3be7e8b55d3eeLL,
0x116c7ed2a3963fe5LL,0xd339ef968cffa1d2LL,0x650a680d6793bfdcLL,0xd6530d36515f3825LL,0x17ef2ac86aa2639cLL,0xe41492d5e03f5f0aLL,0xdb63a4788ab19c20LL,0x1f663a31f1a125e1LL,0x3eb821f0c99919c7LL,0x7179a95554febc82LL,
0x88df39260076859cLL,0x2515fb3dd22da941LL,0x6ef7e36bf38f2befLL,0x1fad0af45cd15973LL,0x4b813c70c970885fLL,0xbf32ed1155edd250LL,0x8d8dab3a573c4246LL,0x24d43370bac64d63LL,0x4a5784fb8971a4feLL,0xe8151bbfaf8f9dc6LL,
0xc2a7b74a8246c07aLL,0xe36beb590f3b6a49LL,0xac6ea8f4f16a37a0LL,0xfa6e97900876d5acLL,0x25200212bc84f105LL,0x22982b9412acfbbaLL,0xb207e0b497ec74a1LL,0x79ea56b49878f1LL,0x84dc4bff98392218LL,0x647fb82cda579713LL,
0x836df3ce9ce5e5eeLL,0xee24588f9559ca55LL,0x79c3b96083c005e1LL,0x62b9c8b66d3f55ceLL,0xafb8df8b2a865d0eLL,0x723e42212c75dc52LL,0xc343cbddf0ee90b1LL,0x3b38a242a786a2a9LL,0xcfc697c20bf86d7bLL,0xa2d989221cece646LL,
0x8fe6fd2b1644d948LL,0x5e95b5f927cb4d9aLL,0xad0b76790770562fLL,0x4b3f6cc878a1d57aLL,0xf54a750ea40b702eLL,0x817afb1ba9472a46LL,0x86f7b9b72ca8783cLL,0x9fb7282b6089061dLL,0x310be98db1b608adLL,0x7a8cc664b1c077b6LL,
0x11203c167af08321LL,0x7ad2b48d4b011af3LL,0x56ae25b205d89446LL,0x1478bbef2a1cce87LL,0xf102788ef9bfd0d0LL,0x7b99bc7a4a3f55cdLL,0x248a93af90832406LL,0x523e7f82beaccee7LL,0xd91c37cbb3f331c1LL,0x325c05057f0f290aLL,
0x6b6ba0218ef6ceeLL,0x382563889bfa4eb5LL,0xba4b1655eded5dffLL,0xc01e4b3776a1af76LL,0xb7b39471d2d1df63LL,0xb6a22de76f13aff4LL,0xd64acc7ff9699030LL,0x2bce53b71fcc5157LL,0x7d6d9e1906842047LL,0x7580b76063da3b58LL,
0x8d58c7169bbe1b20LL,0xb7e275771b460a2LL,0x6662ebb0250db316LL,0xed22c29f4b3f04bcLL,0x9eec024ed54e909aLL,0x5a2b6f810dba92f4LL,0x225d494c66463fb3LL,0x7e8349f13598f7fLL,0xcdcddea2a45e9278LL,0x3c537412af96fc7dLL,
0x5d6bb5879d5f1f57LL,0xf3c27b503821d1abLL,0x1d43468a1869162aLL,0x39b1eb3072961b06LL,0x6d8368f59a26c4ddLL,0x35c0dfa5ac3033e6LL,0xdbfe4af4eaeb66dcLL,0x5a4b4a8e432aaf59LL,0x9df31655c25d8147LL,0x23b757d136e9f276LL,
0xc681b4e31d0a14b5LL,0xca273d7a4e1753b0LL,0xad118984439c09f2LL,0x60abb29efac414e6LL,0x9908e609f40020ccLL,0xba8e71716056c4eaLL,0xcd866526729bd35dLL,0xc57a72e982c0459eLL,0x53a9a9d86e46824aLL,0x9b2a96a16309d65LL,
0x5fcacda708812172LL,0x5a1bdc34bbaf8e4cLL,0xc4f48305de7a5e51LL,0xcb7d77ff207417a5LL,0xbda3c8f8ca70594eLL,0x209970fa13997fbeLL,0x2b5435533b63a08cLL,0xdaddc0863ad52f9LL,0xac405f13332d9409LL,0x3f4c573ec73e1e54LL,
0xfe281ac9f96c8624LL,0xa5703dd01a31b610LL,0x17bf8b7de289c483LL,0x9d61187a9e5fc73fLL,0x7a527ba8e027c051LL,0x226ace39477a01d8LL,0x29d42a7b6cb85790LL,0xc702e3b4a37e805dLL,0x167e519f4bc5d19eLL,0xdb9dfb80db018ce8LL,
0xa5d93f21b97ee844LL,0xcd23d9440094b0beLL,0xc5e15500ee163cd6LL,0xf5ccd23ac19b9d25LL,0x3a2790da1dee0cc6LL,0x38b364858041b605LL,0xb3b6d2aa34b15e60LL,0x3562474eb8586243LL,0x678096b807de902fLL,0xda3c0cbdc57e0f30LL,
0x7f888b42a671b2aaLL,0x84c1959e5349dc70LL,0xa135a1b95ddba0e5LL,0x9d393f09a5b22869LL,0xd48567427e1f44abLL,0xc729f63e687818b5LL,0x1054babf28b38dcbLL,0x65caac10aa9f760bLL,0xee027faa8da8771cLL,0x56f11fb883cc4ae4LL,
0xd60f0df8e0e3aa2aLL,0x83ccc33c6aeb9d39LL,0x66279e8b7010a741LL,0x4f4a1df80dff678dLL,0x8aa06a067543799fLL,0x837e1d267a9fdf42LL,0xa9dda0b4d6408a01LL,0x8dc6b3e7eb96a1ffLL,0xdc9b936d8ceb2dfdLL,0xa503643a042534b3LL,
0x652220f34c08c463LL,0x34f0e437d0b46f93LL,0x59fdea36620bc202LL,0x6ac24c1003b2b058LL,0xf1026a5d82fd0daLL,0x57d19451ca3e4009LL,0x7eeea68c8a8c5211LL,0xb0f9fd8eebee9bd4LL,0x98538ea263e1d488LL,0x407651e1d536c224LL,
0x92101d663598a20cLL,0xfcaf7656dd6ddedbLL,0xc99c1adc762abd55LL,0x640844fb82d75a0dLL,0x1d4366b5cb66d07bLL,0x54fd84f9fa2fd931LL,0xba9f8035713b0d22LL,0x3b37791ad71e403eLL,0x4c2e24a22404bca5LL,0x12b88dd306cc7be0LL,
0xf71c106bc56b4bf2LL,0x900954b0068b52b8LL,0x6b25ea0694cdf836LL,0x6086d5d6246b6067LL,0x73dec1e61ddc5b3cLL,0xdeab6608c7f66b9LL,0xd5170313615ab326LL,0x8daaa7c80f1e6304LL,0x182e51c6b622c56cLL,0x26febafa452ac36aLL,
0xf280fa24aee2b500LL,0x5cd9d6146c5e1d0eLL,0xfce4ab514d2e6689LL,0xe59f445d2a86f45eLL,0xc13dd3f27791edbeLL,0xe807a97cd8fe0187LL,0x98f89cbdb98df189LL,0x467ee7e27147d90eLL,0x9b1e17266dda28fbLL,0x2aff64a3a20edc15LL,
0xbbc156c293fe8af3LL,0x22321fbf06c46bfeLL,0xb0dca419af3231bbLL,0x4a0aa0c6b191dbeeLL,0x53589f53c73d11feLL,0x9f1166d232e84029LL,0x22b76c52a5aa47dfLL,0x2b28397638a21342LL,0xd365e2c2afa43ceLL,0x16bbbd660b4ddb28LL,
0x12ae0035e1d0c50fLL,0x7e1983bb0d86a850LL,0x1e7da3692059d73fLL,0x43f21ca4d923b7d4LL,0xb72d14ea101e910bLL,0xde76b620c55c8b6cLL,0x61ec9463461bd3eLL,0x1ea8e49c0e32e8efLL,0x64df600fbc180888LL,0xc26049516a7e359bLL,
0xb5e5ecf4104c40e0LL,0xed293b48ff90a7b5LL,0x24c5b872dffd72a8LL,0x6881a673a15d39d3LL,0x67df7eacf3a697deLL,0x17c632fcc052214fLL,0x1ca0baf86485fd29LL,0xe09aef11924a6ca5LL,0xc41547c6dde5f7deLL,0x782267e856221ee5LL,
0x5cc462fc5b4e15adLL,0x82bb3c1ac52fcf9bLL,0xed926b9fb3a39143LL,0x11ffa34d1d9a3556LL,0x7db728a4eb37e5dfLL,0xdbcb4f88b64b04c4LL,0x9000ae444cd56ff4LL,0x8077126601d0c293LL,0x4da6f3dff9102ff5LL,0x3a04dad0485eb696LL,
0x9e1314436ac49945LL,0x8ebd06fb4466da08LL,0x55d2dcf1caa7bc0LL,0x57603345e31cf9bfLL,0x305d327df7a4d1a7LL,0x62bab755b811b4f9LL,0x1419d9cb19d281a2LL,0x4d258a8e2dfda033LL,0x62c08d6d6b95b61aLL,0x12aec01b2c19ff17LL,
0xacad1268b0e9106dLL,0x51cdbca148c5ca7eLL,0x13c03b6c6bc251ffLL,0xd57ac2d73f1c0a4eLL,0x687f4376c144d0a6LL,0x982dd0ecd4b4759fLL,0x8fe4b85388eb9ddaLL,0xd45838ed5889e485LL,0xc5d22eb373e9be45LL,0x517fecb8d3ce155dLL,
0x30f87ab9af6bc169LL,0xbbbca18324b09afbLL,0xbc20372e3bdaf6a9LL,0x76d1d5847f25f3edLL,0xb6398b18dac6dd0bLL,0xc252230ffc92f21fLL,0x5b1bd9c0348de693LL,0xe837274d10fdd00eLL,0x3088ae359307cddfLL,0xa2ea8cd211ae38b1LL,
0xf496afa5bf57d18bLL,0xfdcb558e3d1ae423LL,0x58446766bf02d0c4LL,0xba687063b7fed3f5LL,0x47666f23de706aabLL,0x3e58efcc36e48700LL,0xe1e437d8caf553edLL,0x1931bc04968f59feLL,0x1e0914e69077fc86LL,0x8129304aeeda059aLL,
0xee4e4221d2af8232LL,0xe16a3c4c3882361aLL,0x668d5435e83c02e7LL,0xbf98478d9f91ebLL,0x95543f239ff45dbaLL,0x65f45c6555dac59LL,0xd32401a8cca619f4LL,0x1009921e2b572fedLL,0x39fe745b5dccc1dbLL,0x697f7114d1ea8d5cLL,
0x6044cc7b791f18c6LL,0x84e1d07ca3ae4c79LL,0x95b0bcc1c0a51bfeLL,0xe3caa7b57d3dfb28LL,0x827bd9483ca0d3adLL,0x9cd94402fd4efc30LL,0x4bd188f592ee9325LL,0xd7b9a1262a8b54b3LL,0x644439b16bfaadcLL,0xb478cee1d79f6328LL,
0x374535dbd82c0afeLL,0xfc97e149d4f3078LL,0x4e2915c35d732d7bLL,0x11d6d3be7584790LL,0xddb0aaaee6636289LL,0x38a3d9f153dbcb9dLL,0xd1c1721882340fa7LL,0xd259a85a969acb9fLL,0xf66e744f15d74c84LL,0x39d0263003e5de43LL,
0x10f1eab32d725c21LL,0x9a5a7a35f008fd5LL,0xf607bfd0f278f3d2LL,0x27110aea71d79514LL,0xf2196e4b0a336460LL,0xadec3405d6b62f0fLL,0x32db56b392628d7LL,0x3ac0014cea49c552LL,0x2de59a5a889428b7LL,0x62ca9717cfd0b20LL,
0x8e2578b869970fe6LL,0x21aae0f8a820ac7aLL,0xe69ede516729a9cbLL,0x5e2fcc983f07e6d7LL,0x459557f61e2545ffLL,0x5cfd7a2df39b1e31LL,0xa3dcc8f7a0769d03LL,0xeac6d49655070ba7LL,0x6112778a5fabb2b0LL,0xe25e79829d9b7776LL,
0xc6167f0e43ec9f65LL,0xd4c6ada79de70e77LL,0xecf1fc1c4299408cLL,0x2bee504df35db658LL,0xb18ce9957036c87bLL,0x619c20d155f33052LL,0xa0defd6be0bb819bLL,0xcb12710b9d308e6eLL,0x635924d68234b2e1LL,0xf27f3fd82e692784LL,
0x3b7d26bb9737e9b3LL,0xb54e75c04ed61c2dLL,0x5fbcd3f65285fa13LL,0x7802036a8b0ff119LL,0x289c570c39da849eLL,0xe9ebdf8c3bac695aLL,0xf25100252da22f47LL,0xe005d91c0c236073LL,0xb62b461ac7d0b6c8LL,0x4f19d85c240f6fe9LL,
0x3c3b5819b7b4161bLL,0x8d148615f3c1fd93LL,0x784d2a4cd5877c10LL,0x5de4d3533d58652aLL,0xb1621da821265db3LL,0x7cace01e4cfe86adLL,0x21c0ba174f5bccc0LL,0x2bcc51aa9731c15eLL,0xa633c87262ea149dLL,0xffd34e4856015fb5LL,
0x47c857389d258766LL,0x509a43a440a93fbcLL,0xd706c8834df5723bLL,0x5140ea6e773bdaddLL,0xe6b7d3d503a0ecb6LL,0xbd15196bddca6ddfLL,0xc75a139d6e806c14LL,0xfda16af4b826245bLL,0xde6f9cac8db245afLL,0xe67e2b1e40d36267LL,
0x7e412b2f605650dfLL,0x6f32bd4ce7addcc7LL,0x1c82c8f14fd9ffaeLL,0x7650b05a99911a4dLL,0xdef9727ede932ef5LL,0xec681fd3a841773fLL,0xceadaf6b6de92666LL,0xd35769626280ebceLL,0xf51acdf46b0b946bLL,0x15940816e4a44e7aLL,
0xa528c23bae930fe7LL,0xd91823b167138a77LL,0x7dfe9ebff56d25dbLL,0xb2c36092af147790LL,0x6c5f149bd0620484LL,0xdea6350d125c1efaLL,0x4887b3bd932467d8LL,0xd4e5af1f6fd84772LL,0xe2436d80dbb98919LL,0xb59998c09f00f5c6LL,
0x6b68a413fd810277LL,0x716228dc7b824d66LL,0x8ff5e76168ccd97bLL,0xd5763f001027651aLL,0x6ac245f7d5d8e5ceLL,0x15253d9166cbebb7LL,0x7baddacba3fad947LL,0x5bf63964714b3859LL,0x50fe427ee46bc4dLL,0xfbb2457c7af4a92cLL,
0xbabd52876d5e4566LL,0x99f5eb58ea06b62dLL,0xcae59e42ae8d2daLL,0xda0801b3b2bbedffLL,0x3196acffa10e91dcLL,0x8740ec42cbf95ff9LL,0xb12ceced3270d44LL,0x8c13b122fe8626LL,0x6a0825225350415dLL,0x6c5df97e843d70f6LL,
0xa156783594aa0fa4LL,0x6aa8e22826f0a7c2LL,0x27e5581b77612597LL,0x694e4ee7a8cf705dLL,0xd694e30507e9f38cLL,0x566a8e224d47ea21LL,0x1c44441fd9698226LL,0xb4e7d539558b6e7eLL,0xf645b11aa05462a7LL,0xcb2fa474979c9762LL,
0xb4bb06f8786ac3fbLL,0x8261175c8a75e3c3LL,0x8b501a62cfe6dd55LL,0x1b778d11caf28352LL,0x7a7712441c631c6aLL,0x46163f82265eaa91LL,0x8e8448ae9f749320LL,0x9ef9916d5e01ac5cLL,0xd9c9e16bf42a4c76LL,0xaccbf2c5811a4cfcLL,
0x5bc580741431d3aaLL,0xed3d695079eb14baLL,0x2303ed36ef22892bLL,0x4e8cb8ba590ed141LL,0x9bbdc8bb7e3e5828LL,0xa80c71c6f5bdd17eLL,0x201649ee609b4524LL,0xeb212db764dd7970LL,0x51e741c43d93d1ceLL,0xf4e4660a32ccd3c3LL,
0x21739ded6ad1fc0bLL,0x3cee38b6d4607b08LL,0xca3def34567bba3fLL,0x5c75acac13e65b70LL,0xe8dc83da41d5b2beLL,0xe78a56e28265bfd2LL,0x55221cc5d26077deLL,0x584c2fd510771281LL,0x8bf1f61e3ac53203LL,0x1c7d589dfba4a166LL,
0x2e54626550d1b14eLL,0xa87ea2c74a98db36LL,0xf3a6fe704d4825b3LL,0xe699c257c2d43cf9LL,0x9e46d84a5755220bLL,0x9ad0a8656c6946deLL,0xb6b9accef291b0c9LL,0x478eed4faa2f5ae4LL,0x2726563bea832edfLL,0x4a8c77af79d9fa9LL,
0x701c436f0006c3e7LL,0x3fa9eefc72b73278LL,0x97ba2353106c889dLL,0x80dae31ca1522af1LL,0x6a5132227d9dbfb9LL,0x5b86834de40363bdLL,0x6da94e42f9c81aacLL,0xb91298ec68f9d064LL,0xfd4647a8e7131609LL,0x8f8197fc31ce5cc5LL,
0xa64cea540d715afLL,0x66bc81cf0d15d627LL,0xf74d2ec9505cb7baLL,0x4ecd9b0a0b859927LL,0x25d15cb8bf7db350LL,0xf4295de0f1372980LL,0xacf9c3c537eba3dcLL,0xdc10681b7efdbca7LL,0x4a0aa374b9f5a122LL,0xdee7464215098a00LL,
0x6a6da5c5995909a6LL,0x74c170d647c7c363LL,0x1205ac941620b8a0LL,0x56dbfdd1e0ed7047LL,0x3deb8c15e3a3636bLL,0xd1237455fa3f2390LL,0x6de6dbaf28c1dd94LL,0xc3d6448fcdc4bc7LL,0x71a76f67d9428033LL,0x3db4b5f711c612afLL,
0xb754912fde1737d3LL,0x645d4b8dfb89b27LL,0xd793d285fdeeb43LL,0x78e2b30cd07fa281LL,0xf467b2f233bbedeeLL,0xf17c29b3c70c102LL,0xbef954fdd775bba0LL,0xcc3048f578965a1fLL,0x7281f3a35f1f5d5bLL,0x11d8cb068f03055LL,
0xdc4206aafa0cca1bLL,0x9199ea0ef0c7268eLL,0xe266180f51920e8dLL,0xb3add4ebcf146303LL,0x3aa153299037769eLL,0x488790e0cb5b1dcaLL,0x40d0f1bb2e6b90cfLL,0xb330d29cd77fb6cbLL,0xbd5662dcdacc9504LL,0x1dba4cebd1919fdcLL,
0x7b08fb765f554f2aLL,0xe6b2f26adb2b6280LL,0x3d331b03771fab00LL,0x44fb9948507e8f43LL,0x59a4b8acd8186a9bLL,0x6711baf4a81eee29LL,0x4b34a2881c258af9LL,0x1533245e9caba91LL,0xc521d9f0fa6f5db7LL,0x26f832d255dd1baLL,
0x70fb8a5e04b0bc3cLL,0x881253d931014df2LL,0x5d8f71ded56da134LL,0xe8fa561c89d6df21LL,0xfa7aec23d61698d5LL,0xa97a3be6dc090fcLL,0xaaa5d3d4bcf04408LL,0x5d9e96220dd831fLL,0x8f09c5d246654117LL,0x3d88955b9dd4e0ffLL,
0x6166a6c845ea8352LL,0x51d5b7c155d63b6cLL,0xbfb52980f7e21e5bLL,0xadad246953b314fdLL,0x831ad114caa47856LL,0xeb6641ed57964d9bLL,0x4e463c73b03dd5e1LL,0x5bfd48503caa6d4eLL,0x3a8e072e316d6cf1LL,0xfa06d5c1e8eaeb2fLL,
0xd583712989fd378fLL,0xe52a92cc933f6d80LL,0x23edc5e0ce780f5dLL,0x92b9143894a0fc33LL,0x4ab46e1e82225949LL,0x81034a32d4f394aLL,0x82f6271ed6657704LL,0x793d0562019d8deLL,0x4df861dd7efb90aeLL,0x494e8a51a2472aa3LL,
0x9999875fd241bf4LL,0xc15b74bc61f75fa1LL,0x290930096a8dcef0LL,0xbb0f43d7e712f268LL,0x32fbe9f37c06ba59LL,0xfd0889bce97df1f1LL,0xa91f350336e745caLL,0x41ae15f7ef099400LL,0x5b36721e5e9f214bLL,0x8dc3039f171cbb1cLL,
0xf246ac31c226bf08LL,0x69c1527022d5350eLL,0x4d0cfeb9047d7275LL,0x532a7e303b3625e1LL,0x2bd6c41972e18722LL,0x65bdacd58f19df7bLL,0xadeac96bef48d900LL,0xbdda206882d3ab4fLL,0x6e4a814c2600c1a9LL,0xc6de73de6164af2cLL,
0x818a5c1e2d61bbc7LL,0x2bb09ffb312a6019LL,0x4c0c68c4a69e6ce7LL,0xdd8cdba1121fe3b6LL,0xb4c9bd032064a297LL,0x4d45ef8bcd566007LL,0x2ce50a2ea581a5b8LL,0x7549787a1c2e2c27LL,0xd93de8221bdc4435LL,0x3ae67610c6c353e8LL,
0x70182f2f8db0d5ddLL,0xde0e4db6b1a3a009LL,0x668a5bb631ae4e5dLL,0x232f5709ddda34d8LL,0x5408dfe0ca17af89LL,0xe031aae3fbb70afeLL,0xb22eb196ad47f163LL,0xab97914884c9c8d1LL,0xd4b6598531e4af75LL,0x442857af3fa67276LL,
0x847c39592136ee81LL,0xb51e3f95d49ecebeLL,0x7893555bb6c5babcLL,0xe2ff787654bbc840LL,0x597ab6c7ea70cdbeLL,0xff13396e39ffbbc4LL,0x203a959a3290223cLL,0x5913080a7653bcLL,0xb4574d09cd7c4994LL,0x1305c9456212a48bLL,
0xfc0e861a15a899a9LL,0xcc6f3f941c035ee4LL,0x52e2af9665b748a8LL,0xd9eaaac3845d59efLL,0x54b9c226520ff77fLL,0x644bf2894c483698LL,0x9be071d1fccf141aLL,0xa01f4a187628dda4LL,0x4140a7acf6c60de5LL,0x947180dd218fddf4LL,
0xfb3288c1edd03f83LL,0x78a3aadf1db91851LL,0x793c85add7e58f32LL,0x43853ea98937a027LL,0x2562f5e877af8c24LL,0xc52c1fbed5f013dLL,0xab92043e6ca1b74aLL,0xe56b75106719abcbLL,0x1564393e14a51b95LL,0xe6df6ab9a33245d8LL,
0x2860d9212d0b4374LL,0x31bdef45b5d17355LL,0x3d24faac76102911LL,0xc68f20322bbd46f0LL,0xc9cad1503e584b9cLL,0xefe894ab9b8020c2LL,0x82302e267b0fb063LL,0xa750499877548ac7LL,0x77c62cc52a09cef3LL,0x8914bac574cdd112LL,
0x67263e8cab3b5a9eLL,0xbf96f01101a15a36LL,0x48d6250d78890a3dLL,0x337b11a6fbae9a57LL,0x1d252b6ffa6566bdLL,0x93d7390b6d9587f4LL,0xcf740281f4dd4160LL,0xd764d6b0f6f80f3dLL,0xe744a13f456cd17bLL,0xd996bdc45b1a8442LL,
0x9c93fc4847ddd646LL,0x3abc5d9a6fda2273LL,0x915ce3ae24d6b89eLL,0xfcc8d46e9bddd355LL,0xc978d624c98ccc8bLL,0x57e340ce4a0cc727LL,0x8ed810e8cec7f2aeLL,0xc6b6e5e661b11fd2LL,0xaf68bc813c6c4d16LL,0xd72fa733db030165LL,
0xb95cf17e0ff051f7LL,0xcc0a5e894feec89dLL,0xb83df905c81e0bbdLL,0x3cd39a9cdf989429LL,0x28223c834d97934LL,0xba6cb6c02722968eLL,0x9b38176348b5705LL,0xa80041a666ba3247LL,0xb7faf955e069a3ebLL,0x47e5d7f4f82cce72LL,
0x2bdfd38c2c96e029LL,0x3c5367f797bd64c7LL,0xc7faba71491c92a7LL,0xb7a4bfcd38817a02LL,0x9c83d59d29d3a048LL,0x465808c02dbe307dLL,0x1388d917e6221c5dLL,0xe003bf507fd04ce9LL,0x9d3891ea475a9453LL,0xd8ef857e29009dd4LL,
0x697fe68d4a22acd6LL,0xe7ed29e18bd0033cLL,0x89bec373c2deeee9LL,0x35ef1735b2a5b9b8LL,0x7400411e1d106145LL,0x9b2c7661f9121e47LL,0x3625ed9a7bfec888LL,0xce1a16128a008f82LL,0xd118884a322793bdLL,0xcedbb6faf22ab69eLL,
0x3613c79cb274c104LL,0xaa3f436c24196cebLL,0x9b93749420717cbdLL,0x5b090ceca9ac955LL,0x7d72d176aabefdebLL,0xd552557d55ad710dLL,0xe344e10de9c2e62fLL,0xd56da96a2b74cd61LL,0x13944c9e960d04ccLL,0xfd394e846aa8985cLL,
0x2dbc32a3f7dddc11LL,0xf15e19a43274bb52LL,0x37105db492f686d0LL,0xaeb5fd18e9a86e10LL,0x6c948ed23048d7d8LL,0x89c454d384a9cb0LL,0xf364d579fab0aa32LL,0xe57504530171e898LL,0x77e9aac63bd66e32LL,0xb7cc4c624f266b0aLL,
0x7cda29ed628d2e64LL,0x2cdeffe784865f54LL,0xb0ba457461b0a24dLL,0x1651c31816397c15LL,0x5a9dc1b798ea19a3LL,0x3352ee38e4ce359dLL,0x729b7fd5cac8eda6LL,0xc6a3f5581217339aLL,0x9cbc2e717508c189LL,0x6504b0077906b407LL,
0x846a9c3673eea2b6LL,0x19f798e741d01af2LL,0x6b52b7f72572ba56LL,0x90dc070a792c167dLL,0x3d0ba36698fa662eLL,0x3d9e2eea131be6c6LL,0x657410370726bea3LL,0xde7b3ab4dc7150afLL,0x29bf89fffa42efc9LL,0xb7ea5586dc30f16cLL,
0x55886ac3dcd091bbLL,0xbb71458e992a06f8LL,0xd39a0d55e8ac30c9LL,0xd6c43e9b12fecafaLL,0xe7410f40efa7b9f4LL,0xb1355701a26e44bdLL,0x8466d81a8c778d0bLL,0x23733ee234331d2bLL,0x7669dabcd3818ae0LL,0xa0c82ebfe9e3da46LL,
0xd5abeff6dcf01292LL,0x75d46e30785c6416LL,0xe980231069a8977bLL,0x281d7c46badfe83dLL,0xcb5fc417cabec53dLL,0x97625fdd92f238e4LL,0x5d55e636a031cd1cLL,0x662a75f155439a08LL,0x6fb50ea1e4240eLL,0x5d39f11f2d61474aLL,
0xbf00db46399d84dLL,0x9d8000d75dba0655LL,0x13f9c4bc76607fceLL,0x188ad250b87910f6LL,0x4e2ea963d1b218cfLL,0x5f5662acc9fce08cLL,0x20ec74ea1b693536LL,0xfea140ae317a1617LL,0x6e6cbeb8f72d8a33LL,0x30da7d2c8b4c4c39LL,
0x993c399987e48eb4LL,0x40d9cade17d12805LL,0xc55544cb1fda33b1LL,0x8536765154875bbaLL,0x4fbad1bc888321b8LL,0x999ed1d56c8e023LL,0xd9421f066539aa45LL,0xcf4de927e5f7a7eeLL,0x7ec355b24692a8eLL,0x3888b528b8df0a4cLL,
0x43e5b0436680f621LL,0x1fc8ad05fbe6bac4LL,0xb144ace7144b971cLL,0x5b9411e4a992b9d2LL,0x4a7038bea7fec173LL,0xe3d6543afc23a876LL,0x34a1cb2099399323LL,0x51173e700f1e6da6LL,0x4d7bdc0e83de74d7LL,0x1244faeaa0c2b561LL,
0x31311ada9fd2f223LL,0xcaed4c04ed63c607LL,0x3ea21c44e2d6b674LL,0x8bd4748c036f8de9LL,0x98c74960f815f85LL,0x989ad9dbe5a0e710LL,0x3879797c30a35cc5LL,0xfa0166ce16b3e6e4LL,0x5fc2f4a2ee0827LL,0x24b4a9f348e8a4ccLL,
0xf9772701dbcfeaa4LL,0x582c0d164f5ba9a0LL,0x70a31e54520e3552LL,0xafc8aedc16ed6155LL,0xee665defba09b556LL,0xdb8cfd703a4b6fc5LL,0x7669b0002d8f32cbLL,0xaeea13a4d9587833LL,0x53666eee7773339LL,0xd19103bbd1f67f52LL,
0x7ca8e0789e08148dLL,0xb9e9cdc7ef4438c7LL,0x50dbd6315c9e02c6LL,0x5702c11d20df6fb8LL,0x1e698c9f097240b0LL,0xb90e87cddda32cd2LL,0xc3d67fce94fcfff7LL,0x92debc1b5eafe020LL,0xc3319a4b26663213LL,0x82f3cdc3a9018ea9LL,
0xa40246b30d45ff5fLL,0x417e7adf6fed55f0LL,0xfdc4690ddf7419bcLL,0x6f356ad65a77ffb1LL,0x4214f1d788a60092LL,0xf9f736a5177ceac2LL,0x8ad48b39a47714baLL,0x21602e41358e6f14LL,0x454a237644c1ae9dLL,0xa5dbb211dff9cd67LL,
0x19458e86352dfb31LL,0xbac6e12024eb9516LL,0x5734fbb1a79b452eLL,0x9fc69d94bf0dc328LL,0xe82e2cf9a1d110bfLL,0x615449afcab4ac97LL,0x1d36085157c9d76LL,0x664c0f075a804967LL,0xf06a36aea369a28bLL,0xe314e3b36be423c2LL,
0x12c561047e4c5304LL,0xe663dadbd483f5f6LL,0x633189b06421b349LL,0xc8a06dc3da5c9cb4LL,0x6c6a61b0996e626bLL,0x351ccaf07820bfe5LL,0xd29e17e0a457cb0bLL,0xa891305f72fa6beaLL,0xc7b599043d8a10cLL,0x1ee6568fdcc3df3cLL,
0x1af6783cd528ed08LL,0x4db1530045fde1abLL,0x6ddfa8e56752d90dLL,0x80243b1384c06a51LL,0x59f37805fcc0a964LL,0xeac13a8d238a78a1LL,0x23a4545c334a8ed8LL,0x1d5c1a8270360964LL,0x1c8035b2db8c4b56LL,0xa7c8c368bbba306LL,
0xb36d06eb93b531a0LL,0x74dfa86b7bbc845dLL,0xa183f4c37040e33fLL,0x27367c9096d1741bLL,0x4b5188cf193a7f1aLL,0x41e16e45c7c16236LL,0x17bdf8234308aef8LL,0x4357fc0159299aa4LL,0x3f10c12b368001e5LL,0x82bb9bbbd19ab491LL,
0xe0d02995a7635e95LL,0xa4659d03f0a31220LL,0x16285cb2def0582aLL,0xe87fb3ed4d6fa0fLL,0x2c1a2b9484deb280LL,0x7adf70bce7763307LL,0xc306f85a4f9208f7LL,0x4f9f7ad3f6385e5LL,0xd0e716e3862b64eaLL,0x7c35b8ad95ca747eLL,
0x636287c2b4ab252cLL,0xefd6b9af140740b9LL,0xb4146ec30c2d5f83LL,0x1bb0b1446640d748LL,0xf51cdc9659d43580LL,0x15b70a2920915f35LL,0x639b427d50d72fcbLL,0xe251a3c292718c51LL,0xa5d7c2a1d71239aLL,0xfe6feedc1e61eb91LL,
0x8a172cad1802aa62LL,0xdcc167e1cf43853aLL,0xa9ec7fa0483ac3e5LL,0x91a798b32772688LL,0x25304d4e5e6e2becLL,0x653c610a7a91e125LL,0x8943487d0cb4722dLL,0x7ead3cb1fa85813bLL,0x479bed3b6ea2aebdLL,0x8a21d98263bcff2eLL,
0x3ea185d89180cbdbLL,0x89c5e15b25928301LL,0xe0a8225dc47089c2LL,0x16f2421cd5ae2abLL,0x96624a7246465516LL,0x57c3f80b171398e5LL,0xfe1143f5a54430dLL,0x46040360e0b03a8fLL,0x1018efaa12d984ccLL,0xbff57958dbe771e3LL,
0x9ee414db314ee901LL,0xe0b2cabdf37b8701LL,0xd26264cc42025af2LL,0x42f6f69108674544LL,0xfca6c404d9433c94LL,0x88dc7b1b557f680aLL,0x305460340a01aecfLL,0x8ffcd7775504513fLL,0xbc795cdd51e080d9LL,0xed96b2d0ac86c4b2LL,
0x88704b3820e6285bLL,0xe5de863272292090LL,0xf968cb0485a5b541LL,0x792017288b288477LL,0x441cd2f818155428LL,0x8a774228d7374127LL,0x5b8e965b49214730LL,0xe0976c1bc1c0cfb6LL,0xdfa1da7aa1b9995cLL,0x1228ff97a49d05c8LL,
0x19b56f0d6ad2f469LL,0x2a41a1f1046785c7LL,0x9472fb5aa13f0a0eLL,0x58e1d04c87d993b8LL,0xf2d551da7a3b7432LL,0x6cd755efcc88fafcLL,0x6c6eff8b7f57c6bcLL,0x32157ee8840e7df2LL,0xe7bc4b5df76f4661LL,0x999c06b715e34f5bLL,
0xbb3d7991cefb33abLL,0xa136b39df89e12c6LL,0x1349e4b4239e3d3eLL,0xae6334cea5cb3e9cLL,0xd5a24ea113c6d999LL,0x70978887b76b26d3LL,0xfa58b63ef7b9e923LL,0x4430e52fee655f2cLL,0xc8fcea859607645aLL,0x7b0e8f6c216caf86LL,
0xca3888ce150d0d0LL,0xc00c339ec91726a6LL,0xd293cd8e3eb9fdfLL,0xe135590f86f6508aLL,0xc2f7da9805f99baaLL,0x86ae00445615051cLL,0x408bb4dd094dc382LL,0x31fec534591f9178LL,0xd96bbe489384b004LL,0xc4249f2b6f1caeceLL,
0x5aeaecfb19529277LL,0xc619fbbe8f4f2fe6LL,0xa487d1adb886ae87LL,0x4ff091ec4f93cd23LL,0xa1f3d473b323566bLL,0x532129cbe3fd1a6cLL,0x61eb59942089cae8LL,0xb1f3b34d7bf09482LL,0xed2e48729514913dLL,0xeae7957d130cd256LL,
0xfc2d27f06a1826dbLL,0xf737500ad38f39aeLL,0x8a9a8ab4b6f0003cLL,0x75b1fd088047c78bLL,0x6db72c77e8986055LL,0x10a4edbe510e2b05LL,0x97e446eb2f01c943LL,0xa859746a3f451842LL,0xe15f6a1a45e0d096LL,0x9e8f7f0c09884790LL,
0x522db6e0df17af7eLL,0xdc62cb8d12025e51LL,0x19b47bf2bcd97093LL,0x1f725d226ac4ebbdLL,0x892213eb25d0bd93LL,0x5b6e4f2791e289b6LL,0x59735f939fa5eb81LL,0x70e205ce9c4ca94LL,0xfb8bc776dbc264bfLL,0x784177b1783f616bLL,
0x95776e58457f288dLL,0xda8f17a16853a7daLL,0x84d0cfc3f44eab06LL,0x9e0e5a2eb2e9f81bLL,0xb7b07fb13031e91aLL,0x4a92afc4688c2c34LL,0x7828b977f78ea4f9LL,0xa08a10d5e70e51feLL,0x3103928f99673c08LL,0xe964d2f6b4861900LL,
0x46cdd4f6d07c7556LL,0xad33603a4cdd332aLL,0x505573f2524eca4cLL,0xb19bf33aeda81d5cLL,0x407cef412c937ad6LL,0x78d47fed03ba1eb6LL,0xcd957f2f3c4f4e13LL,0x7dccd0f4532d509eLL,0x78130a7ee02d61afLL,0x69c2e6c4584e5758LL,
0xd0b9e469fb8a25a3LL,0xb75add556296d324LL,0x178f7be7cfd09bdaLL,0xa89a8751dd797d74LL,0xbcba9586fb404513LL,0x275ae6d3310de202LL,0x5470c81af48c8466LL,0x696b9f36b34f4e7fLL,0x1e2ffbe1172a0553LL,0x68b25b2b6ad28f3bLL,
0xcc7c1635da845145LL,0x5708becd90f18995LL,0x3b35bc3f4f0482fLL,0xa9b4dc28adcb2786LL,0xb013512ff7913a67LL,0x404ee20f34c1c509LL,0xd63e18eddd8de4a3LL,0xe35dbaa3ed8006e9LL,0xa40b609155ae196dLL,0xe0a2cb88926e6b94LL,
0xee61737deb441251LL,0xd256ea3d7ef97505LL,0x89b3070b4b4190edLL,0xfeacbe4989f44c26LL,0xe65711211521bc7aLL,0xcd85e455e4099a3eLL,0x7c44eada9f0fb49eLL,0x77c9de903724879LL,0xb4c5600dd7561fa3LL,0x3f4002b2cde6d698LL,
0x1291ca9bf78d9c02LL,0x33195b3b310c4428LL,0x597cadd8f6547205LL,0x55a67c29d3e596acLL,0x64be890424b691ceLL,0xec2579237b1cf818LL,0xfe3bf72deb6996a1LL,0xf52031c40873f68eLL,0xb6098113f86258daLL,0x945cd7813227ad2LL,
0xc2b204b4d42b2a40LL,0xb69ce0de2b143eafLL,0x944743d8612c1165LL,0x3ff8b0b786725bf4LL,0x56fcd592e732b122LL,0xcd6af11552a756aeLL,0xbab580fb389ed19eLL,0x53521b6edc02d9e8LL,0x9afc1ef54c910f52LL,0xe6fb16ca7ec7189bLL,
0x62f9b2817e947040LL,0xd76808eb3201aba9LL,0x9a9fabc0616d6e69LL,0x3d3a83008bf58ad6LL,0x8caeae762e784951LL,0x6f198c2a87ec867LL,0x518975370f134073LL,0x3ecbb425cb68f1a2LL,0x8063639c4221f58bLL,0x60df85c57b8ed57cLL,
0x23c299c3cc8433d2LL,0x4c055786f4539757LL,0xd64d39c30ed80640LL,0xed63af0063dc11cLL,0x6e6248da8da3cd92LL,0xfa241fc613bf784aLL,0x2f10342287d2411cLL,0x10684232cb320134LL,0x44c94a2ae5445ef5LL,0x78e3326a9137d2ebLL,
0x8329b134a19c5473LL,0x539be49d234e1f7bLL,0x3bca1969ea4c43e2LL,0xacf3923ee41ac765LL,0xfaff4da29680b8b3LL,0x9452574a93b31d4bLL,0x1c7c175cd04fc16dLL,0xba11b2f9e96cb1c4LL,0x5a2d059dfa81f9e7LL,0x44d53010f487b6b5LL,
0x1e0b1155f3ab26d2LL,0xf5d781b167f72becLL,0xdfaa34c06d272174LL,0x2e19648fdfa7cdf7LL,0xe38c6e17b608214dLL,0xb9a5de2b3e3c3a08LL,0xd8abf0a261395edaLL,0x743cd4517c4a90c8LL,0xf4459a712e7f8041LL,0xb4b2cf863cc2fd24LL,
0x55c55f3b28be8b61LL,0x4164429abdd69c69LL,0xca9fbada05e8cc86LL,0xe286c405b11e78e8LL,0x58cd35abb20c1863LL,0x5c812e8fa2c81b47LL,0x883dad40ba57b4aLL,0x1191ae3f7d8f1b7LL,0xba00224270e4fc8bLL,0xcfa221b08c3ec48eLL,
0xb448152c94119d28LL,0xef27a94a709931cbLL,0x66c09dc6d99e52b1LL,0x6b75710978022453LL,0x8da64b3744236fafLL,0x5c5914a2e4eac898LL,0xe6c46bdb5c98fddLL,0x744f16604bef87d7LL,0x6a5b1846609a148aLL,0x3ef1de759d86eb30LL,
0xc063de4957ce9999LL,0x43b38799e0c8e4b2LL,0x731fdae176f2152LL,0xf3366197a1e6b7d0LL,0x65af9a5480617af6LL,0xb20d6d08893c8a49LL,0xd9efead41b331429LL,0xbd5457d5c9f4a32eLL,0x35fefb7c35260606LL,0xe8d6897d3a90de3aLL,
0x5b8e09a1f790f11fLL,0x5fa0388cea6b9529LL,0xe160a48c0df77b64LL,0x62673a1962b17112LL,0x5658b53b0778ec5dLL,0x10ce03ca26f67047LL,0x8cf7358a38b94689LL,0xe77b3fa5b9df289cLL,0x55f2ed83a2d5cb0cLL,0xe6c605b545b792b3LL,
0xd0a44d407dba8b05LL,0x43c0a9cae1fc0afLL,0x11dae5958084bb77LL,0xd53529a37002c5b9LL,0xea49f1d55dd3281LL,0xbcba4462bda6229LL,0xcb52ffd9f096bfe7LL,0xceab890a8d9b40b3LL,0xe758cbdeaf43d57eLL,0xbad5664d373fd8cLL,
0x6c499f2a4f18a245LL,0x7f871aed655244f3LL,0x1a74921b3e27bf45LL,0x41ac507ab6736b7dLL,0x808aac53a0ce82b3LL,0xe2c4530e852e2a10LL,0xa281068edc12fddeLL,0xde10e0310a978c1eLL,0x78837897b5e4e964LL,0x4ec5836f3ec91f29LL,
0x5489eee8bffa6d33LL,0x212e8cf62a0a1f6dLL,0xeb7dc795ee813a90LL,0xc131cb92f358eb40LL,0x2dc068fdd3b8e196LL,0x1c71b4cee1b6a4ddLL,0x74ef3bbab80903ecLL,0xc7490a5a6a695471LL,0x18743b4bf562c4c8LL,0x1d53065779766272LL,
0x9dda52740d9cca8dLL,0x9a25ce5c1537a01LL,0x902b2c19842326e1LL,0x649e6921b697e354LL,0x4d6d6f801bbaf27aLL,0x9cb460e816952569LL,0x30a9af446e1eb8a7LL,0x901f9a078e41068cLL,0xedd8dbed0d4982fLL,0x90d8f2c2fc3406ccLL,
0xd1137d308a736fb2LL,0x6c85e20d7bd58602LL,0x261fd768cb7ef75dLL,0x90500e17fd97e1c8LL,0x51a9ead79f85f0ccLL,0x4821dee448456234LL,0x3481318aa7e47867LL,0x4b88d9b77346d00bLL,0x4b199291f809dadeLL,0x3eef7d3cef919e1dLL,
0x298e11d9f2d4e6c7LL,0xbb838ab0c022ace4LL,0x4cac5b3ca4409584LL,0x131823d97ef53fdaLL,0xa1d636be66209334LL,0xb2b7b85c31db5c28LL,0x7895fafbacd699f8LL,0x69c4f76469a264b0LL,0xb27274f143cb2282LL,0x411ee26eaa631b3aLL,
0x200500d8bfc4f2LL,0xa741d57f246678acLL,0x2e9d403f98318bd0LL,0x5da9a2aa9459407eLL,0x905fd7fd7be1be4fLL,0xc424ae4f95b6451LL,0xd612fd0978b056b8LL,0x2fd501a63c92e21cLL,0x9a9b94bbbcaa1660LL,0x428992edfb94c1eLL,
0x3a9a079ec1ea9e6bLL,0xbc3c0675ffd67815LL,0x882a9b5c1ae716cdLL,0x9ea5ea00a7f7691aLL,0xbf362db70ee266d6LL,0x3210cc356246323bLL,0x40205ce6854f7da4LL,0x5a62921f00cf165eLL,0x5fe5bd7dfdf012f5LL,0x66c6fe7557fe6386LL,
0xb1539ceb25c4940dLL,0xa7bb480a67ed771eLL,0x7325ea1fc12e912fLL,0x9d5697cc7efc3fcfLL,0x28a0dab500a28698LL,0x1c10147b1de093cLL,0x48ca14a16e600842LL,0xdf28af8e2fe3175eLL,0x5c8102cf43b94f54LL,0x28740c8545df891LL,
0x23f2fd38a43c7d59LL,0xceccb0400d19b31dLL,0xf6cc4f9bb3ee05d6LL,0x51f9d0f8f2a01c99LL,0x5f112146d0f6757dLL,0x22b42480652b11e9LL,0xbf711de5b9884f9fLL,0x8ce823c2f2af4a05LL,0xf0d1c27d04797f3LL,0x4ffe09085f9310dcLL,
0x3edab541c5802b2cLL,0xb20bc4b121f45504LL,0xf42ef64b1a14af3cLL,0xa84777388f701346LL,0x97e9336eab15cbcaLL,0xc5ede15bea0cab5eLL,0x3f78e391c041cf42LL,0xc352dfe0a317ec31LL,0x81b33454035f628LL,0xd6d00d0207a41969LL,
0x2f8e5d1d3aeb3301LL,0x4e142e114493e457LL,0x8611805f24dfe2caLL,0xba9db5d169dcf4e7LL,0x23038cac2ea1d989LL,0x443d866e57647585LL,0x2e49878f29fc2d4cLL,0x156a60fe1aa55ccdLL,0x6ed26ad9401ee4c4LL,0x4e8e5f0e85e401a0LL,
0x6e6fe82d6e06046LL,0xe05df30736bcfc6bLL,0xfe798c33225b767aLL,0x40af3bd8e65fb0bfLL,0xa02e4ca2d2307636LL,0x66f5104930f229edLL,0xb29300ae9d780602LL,0x177902ac125912a7LL,0x6b91c9c38afba0ecLL,0x8ae6fe45d160718bLL,
0xcaec2aab22f543e9LL,0x17f5bc7f90f7baaaLL,0x66a49a68abc120c0LL,0xe467e7f36426a724LL,0x1ef2f1424575dc11LL,0xec4c16b25e609a2fLL,0x79a625e04fdefdcLL,0xb5d7475eb7913519LL,0xa90597d6a4fdad8eLL,0x45fc388ad68ab60LL,
0x33d6247f5b84f85LL,0xe874ec868b974be2LL,0x23b49cc2643119c6LL,0x1d69a3f6a1468ac9LL,0xc0e0ba2ae345956aLL,0x55240dd58371a08cLL,0x24caa8d8a663aaceLL,0x9fc847b04b9c6df1LL,0x9842c735c2968de0LL,0xc3e79ba8396fba4dLL,
0xae1217625c51f9ecLL,0x7f54f03c78ce0cdeLL,0x7e88802fc393ffafLL,0xe6765127dc8223beLL,0x8242937259149010LL,0x70253f0d04ce1c78LL,0x59c8775000c5cdfdLL,0x4cbb3fbf061827a8LL,0x97aff94d75f9387cLL,0x79fbbc7c27bd0847LL,
0xef3322e3a36fbd53LL,0xdc3b9acc3469f77dLL,0x70c16380154d36c5LL,0xecede9f6b4d15109LL,0xfe3686fe7875e6ebLL,0x806936c4b22d789LL,0xcffd7272af9ab85bLL,0xf3067704818ed080LL,0x1a953ffacbec5099LL,0x7156257de88414eLL,
0xaad668c837f25501LL,0x34e89118179c4fbaLL,0x48849dc48b203c2fLL,0x22aa119945035c16LL,0xaf6df44aacfc49beLL,0xfc4c9a8260b4f8f3LL,0x9d5beda74c2c24d1LL,0xeeb4aad18659c2abLL,0x1a67ccb9bbbe479bLL,0x4e1bc394f2d7dc1bLL,
0xdc54ace6ff39bf66LL,0xfab7f881ecc0a1f5LL,0x5e01e3fb253fa535LL,0x9e8c3a0c3e1544dbLL,0xfc823fe9bc2d0e6cLL,0x746460dd55b9328dLL,0xc009cd38c6ad95c8LL,0xc9fd4c135c1c9ca6LL,0x7c4581adbb7af3f2LL,0xd019c355d949b325LL,
0x438ad10e5ddbb153LL,0x83941ecc00d7295LL,0xa16e6b96f8d14148LL,0xc7ebf5e49be9a1d7LL,0x9aee8588f60adc52LL,0x67a361dcf819747fLL,0x560ab17246e09564LL,0x69f906b710fa5f85LL,0xf259cf7dfb93b95fLL,0xd9f0b9a8b47612d3LL,
0xa29fd65182af97bLL,0x72288d216882fb4eLL,0x2600361c58bc31e3LL,0x2a9896c65117f4c7LL,0x6c28dd94502c8143LL,0x8e71636eb6b5a2a2LL,0x4a4089b52744b5cbLL,0xd1e004b8f0e254d3LL,0x362ae80d0e678e34LL,0x4da88ccf4ff4d3e0LL,
0x6fd9f46e744e0af6LL,0xa33a124a0cfeb75dLL,0xa6e17585d3e75d48LL,0x48e5bc0a23f1bfbfLL,0x6fd4bb0699fa73b6LL,0x7ac8579900301242LL,0xa11d1688d72b8638LL,0xd0f599348151b930LL,0x3c4058feb36215e1LL,0x40c89fb017f79df4LL,
0x7cd63cc3b290e8dcLL,0x7b21de028cff4ef5LL,0x7c73c5cc69b17b78LL,0xb37420fff1ddbf3eLL,0x18c39b031dbc24b8LL,0x6e9112fa89dcc922LL,0x34d7ea8a9e9d60deLL,0xe1df8e87de5a1870LL,0xaea57bfe189f1540LL,0xb46b7c3f0f074621LL,
0xbedf223329e3348cLL,0x6757d95c6b0c3a59LL,0x664fad61041213cdLL,0xfde5e485b0c5e367LL,0x81cdd7639633a142LL,0x2a192f193c7b7b9bLL,0xf6d9d56d9beeaf82LL,0x4df9d4629d4e734aLL,0xdf29bb353020c7d7LL,0x39f20dfddaa648c9LL,
0x48e8abed9622760LL,0xadc00dbb936db112LL,0x6c4a40f3a1ce8a16LL,0x384514c1ad25fa6dLL,0x4d9e30385a460718LL,0x618e8150e2ada441LL,0x845b878511dd69e8LL,0x9978402765b5248aLL,0x9bc6ba3bd1588f5bLL,0x779fccd1b20d65b0LL,
0xfd95468a393eb85eLL,0x8dc203d5d650468dLL,0x1892606247ad470fLL,0x7897c6a54f4430feLL,0xbbc00c9882a58fb3LL,0x4e22fdec8afed7e7LL,0xb61e095d19fab0bLL,0x4ad1e752dee7107bLL,0xbb2f23af4f8c178LL,0x949b925873263499LL,
0xf97202c050dd709cLL,0xb06c15d441f0b8c1LL,0x7cd6a9c4e5b63ae1LL,0x5a5b84f4aa2356c7LL,0x2c07ebf13a695423LL,0x6f98e3323ccf91daLL,0x99ebceebbbd591b1LL,0xb4abda132355dc21LL,0xa37b37f5256b72b5LL,0x2418d632cdcb4c84LL,
0xd4e73a07550e9eb9LL,0x264f95231a5f1553LL,0x9506575fc508ae42LL,0xce667637bb3e3a1dLL,0xd2491da53c6783faLL,0x5a2f184ccc8b2b65LL,0x2522a59cabb8cecfLL,0xe743ecdff74f1726LL,0x4a2a67968b9a44ceLL,0x213d126ac1ba33eLL,
0x4f5e2ef0333835c7LL,0x1271284282c6049LL,0x5fbf15b5356d0144LL,0xd361267b22eb6f6dLL,0x72fdfdead5ed07f3LL,0x88f2f68f65cc6f02LL,0x1c58f6f19029c6ebLL,0x243085fdb2217c1bLL,0x2387be95c387655cLL,0xe77fff50a89f73deLL,
0x1bdaa3c184f72dc9LL,0xb0b1052ffd035e1fLL,0xe1431ef9f4c08999LL,0xd2498785e7c6a099LL,0x9e8d36f240d678edLL,0xa0f891eb34f8569cLL,0x9470600e24d45b60LL,0xfcef7583f56c7ab5LL,0xda8ec94ee2245b4LL,0x391b83ab8c24874aLL,
0xbc4b808c05a6e8c0LL,0xafa701281bba0438LL,0x7dae261a35d13f94LL,0x1705fcd6c5e2ffbLL,0x57b370950034ded3LL,0x26f6a734851fdc17LL,0xbb5c3a21667adde4LL,0xb321b8422cd4aeb8LL,0x608e6ce8a18d3209LL,0x59fc07c7b4e303afLL,
0x9a4c1201312af568LL,0x7b6d18c6994ab73eLL,0x2f2fdc0a1ace628bLL,0x6a546b7a9c7cd1e2LL,0xe5e0e632c743933aLL,0x16402f455dfe11fdLL,0x5d3ee01ac7e52ffdLL,0xfaa7b2f2e0e4c6afLL,0x80bdd0d41f96a899LL,0x12b3bbba8a4a7f06LL,
0xcdc29544efb591dfLL,0x9303ab08dac1effeLL,0x82b4e3cff40fd2b2LL,0xa1c5f8a1b0464576LL,0xa0a90cf5287917c3LL,0x727962359f661bc6LL,0xda1ab41811a0057bLL,0x90009427e516d364LL,0xe3772c701959cccaLL,0x9913d5dead08ee19LL,
0xbbe987a41a025b96LL,0xcc5698c92e5460d5LL,0xc98abff4c697e741LL,0xfac1ffa59b610263LL,0xef5fd1bd38a15f30LL,0xfec986e3048e0482LL,0xbbe75d3410a63bbbLL,0xcb6bf7014aa95a62LL,0x19d9cde5506e0d06LL,0x5cac4705f1fe7357LL,
0x6524215a59f9034aLL,0xb40b95389410e52LL,0x25aa1d907a1af02LL,0x39d643040d9b494eLL,0x1ecd6f42e0a5f504LL,0x510e97dba5308d6eLL,0x3721f30106a5a85bLL,0xf84548ac7daf44a5LL,0x3f5a8ffd5ebb7e1cLL,0x9ba8b07a27c2c935LL,
0x8fd9fd29a375f7a4LL,0x2f8f755224a2bf9fLL,0x980be8f11fbdc2fcLL,0x2187fa839358a2f0LL,0x1d424699246d9c76LL,0x9dd68900e2ce9f05LL,0xf1f477425072a6c8LL,0x9bab15e4601c5911LL,0x1261033fb32b10c3LL,0xd6e1a95342378074LL,
0x655e35620496d51LL,0x32b7bb6987921798LL,0xbfcd917eed80dea0LL,0x34533fa0863b4ae2LL,0x550b56f66c601f01LL,0xb1bfdce52567cd14LL,0xb6a937566b5bd6e8LL,0x55a45fca7e3fee50LL,0xb208ee9cff896a29LL,0x87de801773e49ed0LL,
0xfbad6abf74517a1fLL,0xf8b05adb78823dafLL,0xeebe365b661ecd6eLL,0x16734a445869501dLL,0xc16b58a0c4c6317dLL,0x78c6598c618ac327LL,0x674ec6551a746cc4LL,0xc91a7ae6acc68ff0LL,0xd42a8471dfd86dcbLL,0x136a2ccd6c8b54d6LL,
0xbab0179f4a6603ddLL,0x4e719a81bb120ed0LL,0xb167d936ac8728fbLL,0x18fbd40c1773fb3aLL,0x4ff2b6792d410604LL,0x65e5941a2f6f9847LL,0xcbe8631d939055caLL,0xea11c560f4504f6eLL,0x82dfde59eb41d471LL,0x6b08468e725dd074LL,
0x258090c3750c6d7aLL,0x2af8f927e00c54e0LL,0x8e8ef057faf0b151LL,0x883b79dec3b958d1LL,0xe30e29e4ef7396c7LL,0x6cfc5e448b892c61LL,0x45484f4076b1393eLL,0xc09e4edff8eca40cLL,0xfb9ef46340383777LL,0x49b6883b3849f8bfLL,
0x239fd9139918489aLL,0xaed8953d1f7696e0LL,0x48d5915819e63f98LL,0xeecdb91782261a51LL,0x7692c50c2993ae98LL,0x961fa38d22001ce6LL,0xfada376f776bb0e1LL,0x3db502028abeedfaLL,0x324830aa85effac0LL,0x93abae57460b3245LL,
0x620e64556bb704LL,0x11629319c2d9988LL,0x2388c8be6a7688c8LL,0xd28ad33d296fde82LL,0x6a8ef91d260d0187LL,0x14305cf8cef675a9LL,0x5ddcf6a6014fe020LL,0xe9ad9babe7bcbda3LL,0x6ecd18109864ebaeLL,0x4c6eb521ce932d9eLL,
0xbae953ffa42be0e4LL,0xac6ebadc7a539772LL,0x6e8c710f4b1d887dLL,0xb055daaad50c7398LL,0xf6e51ed5186528eLL,0x13a90d8c5596825bLL,0xe40bcef4a9bf93ecLL,0xe7ab04eb8f5d7a8aLL,0xdfcad0c70e31d728LL,0x93293764542e2142LL,
0xea85c952c5efd4ecLL,0x9f1a6504ca83ff25LL,0x8d516bef14273f01LL,0xbc38bfe4c0a504c1LL,0x604ecbb7010ef252LL,0xb2fcfbe58224fcc1LL,0xa2fe39ab52dc9a6dLL,0x81cadbdb502eb45LL,0xe79b2cc316889f21LL,0xe5066b389e217487LL,
0x64ba0e5c2ca6be44LL,0xf4128982f629a4b7LL,0x27732071648372f5LL,0x9bceae34ff885f6dLL,0x9119f2b0327f8316LL,0x7d2c9770f86649ddLL,0x6322a57582680a82LL,0xc9a079844fc46573LL,0xdd6ce364ca1eaf99LL,0xc5428aeb87f231e7LL,
0x83e1b2971dfc6d39LL,0xa966fa3edca18943LL,0xc0579955956d9f6bLL,0xdbeddd28225e205eLL,0xdc6bec50c8b6bfeLL,0x85296a12ec5d2d06LL,0xcdc2c037e838eddaLL,0x21a4ff46da848adeLL,0x7218dda6ebad3d01LL,0xec3fae84519faae0LL,
0xe6a5116ea8acc779LL,0x7b64e83ad01024c2LL,0xaa89017d8299c181LL,0xa12b09aef09909b5LL,0xb6ccaef68fc8017LL,0x74c3c64133638c40LL,0x5a4c29a1b8fbde51LL,0x108b240792b38cddLL,0x17e6db06d19e4101LL,0xafab1da2e8f4dd80LL,
0xf2789193826f8441LL,0xdcf6eb92cba965d3LL,0x7a1e8266042e5910LL,0xe2f8e575334a9ed6LL,0xa53a6f19f872d7a1LL,0xb2a1adaf213565feLL,0x7d7cf17576c86342LL,0xafd81ae89496b61cLL,0x8071dadf7e1e20fcLL,0xef35bae1d8236c8fLL,
0x2a6fe2fa0ef766a4LL,0xeab14d6534a7ef6aLL,0xc118f04f9bce7f7dLL,0x244ab61fd6a29c4fLL,0x8adef7b4a33f0331LL,0xa0b3bf2024393a57LL,0x9a8c605a3a0e8872LL,0x3ed305589e6a4900LL,0x93ae0db66fa2c764LL,0x958b75427eee67d1LL,
0xdfcae8f7e20904deLL,0xb204f21cc0184156LL,0xf35ad5f237efbe59LL,0x20610f9e498eb49LL,0x6d64de055a44a55aLL,0xfe64eb2ac40b2ae4LL,0x8ea7a7e8f75a6b0bLL,0x69c623fcbe269dbaLL,0x916d54a8f60af3caLL,0xa5661b422bbf9ff6LL,
0x9458889556e09ffaLL,0xf06afdae1da4f86cLL,0x110e223b356a4ca3LL,0xe5692ca89976ead4LL,0x96c1e141662ff72aLL,0x7ef71807c51f3a3LL,0xf94a53857fe0b131LL,0x72362c19fb0fb7ffLL,0x957c4c2d1789a515LL,0x7518e7d566fec383LL,
0x4792c393150dbe5fLL,0x121b3140740d67d0LL,0x8c92a0497554a992LL,0x161093d1d0de22f0LL,0x46ef7bde5e4f5635LL,0xa7c69da40afac8eeLL,0x9d3faa1e6a1d2ed6LL,0x1cc248269a47890bLL,0xf42129e000468bfdLL,0xe9e8ce309d667642LL,
0x2c39b8d74b2edeb4LL,0xadaaedcf6c587bf7LL,0xc81830cd38053d33LL,0x4c5372dea34c4390LL,0x1c7844a427c65b80LL,0x42894ffe059e5a0LL,0xfdb20f017d11dc18LL,0x1f5c5b5589adc6e1LL,0x11efe5e8cd53cc84LL,0x85b3d7d1a36b28e5LL,
0xbd08505a50f24b0dLL,0x688e7ab4d6137f44LL,0x160530239af33a1eLL,0xbffe744ae00b6e57LL,0x26c894717ea12563LL,0x320ccc13c9a74badLL,0x1f3e9caf0f80b463LL,0x4af1f4c0767e6f93LL,0xea3570f3bb39fa12LL,0xb3fb15e946c52847LL,
0x4af0137214a73d13LL,0xcb7374083328debbLL,0xa48861fa65131984LL,0x2ed3f658f00db4aLL,0x8883facbffef08f3LL,0x504a134c9a9cc331LL,0x7dbc54c5a259af45LL,0x6b97f532c50dbc20LL,0xddff35130c6ffaffLL,0x8758d1356ff21ddbLL,
0x82e172092c4be2d8LL,0x2be8de2ccac50781LL,0xe37f0f903dd28ff7LL,0xd31e6192d0a82664LL,0xe62c3c0d999e1114LL,0xd0988794b8401cb0LL,0xbbe7bc71ba394074LL,0xb32ac394c618b035LL,0x8fccfb17247f24c1LL,0x1e129f93a9299edbLL,
0xc452b2b477ea5890LL,0xc269bc31c6ef1bbdLL,0xaa3659152f130bd0LL,0x7bb9bfec899f9059LL,0x97ab3933ff7f4e0LL,0xc2508cbdc14f720fLL,0x9c5fd9529d0e56bfLL,0x3def97e61d641df3LL,0xf5daa1ec28a72be5LL,0xfe2a2377de1722c8LL,
0x44cfbc1fae06f554LL,0x7a70d8ef23e7f57aLL,0x8f5c363f9ee9e62dLL,0xa85d8d3313e06f6LL,0x574e00eaa6de1033LL,0x209ae3729d31c4f1LL,0x12b7d3db473c7c5dLL,0xfb4087e45f8335c3LL,0xafd0c1760ef28903LL,0x62cb80b6987cf77cLL,
0x85145cd3fd016d41LL,0xb494983efcb96d22LL,0x3a0e134c7c0f00e9LL,0x63a706beb2f4a394LL,0xc97c5646e51ad1beLL,0xd54b840a8dd3a2b0LL,0xd7f08f42ac2a9224LL,0x27e498dbdc1e3ea0LL,0xc4e306fe56ef52e4LL,0x4c3c22dda47a4965LL,
0xd081bddf4f25f1dcLL,0xea8d1f3b98628d6aLL,0xec0d0effdf605847LL,0xbe967a48b4655266LL,0xa4e5a22f6e791d23LL,0xdf441d57d83a8ad6LL,0xcb9b483a272a97d0LL,0xade055353b70fd94LL,0x5a347ccbc681928bLL,0x8deed1212698647bLL,
0x8fbf3ef5430315dfLL,0x30663cd12d30c756LL,0x3e087f4ea9415ba0LL,0x8df7bb4926d26e8bLL,0x49ba19749c358b70LL,0x96f6f2c056391e1bLL,0x2a8af0242a89b134LL,0x5a982ae14ccc92e9LL,0x3d46c5a7bdf67a6cLL,0x46644753df481bf8LL,
0xd8f04e275cc74b6bLL,0x4b36b8645da0f01eLL,0x3148f27d2a0a3ab7LL,0x548956ffd7085239LL,0x75929b6fc73cf367LL,0x75e81932dd6cb625LL,0x220cdcbfdccb84c2LL,0x1e1f0d1d5cdecb98LL,0xcd4df49638920665LL,0x33b6a9e95c930445LL,
0x25be40d4538b1b1dLL,0xf6e0bf3df0b4fc80LL,0x4a1a34fab591e08dLL,0x9c065416d5f47c36LL,0xd7c69eb9493a9d49LL,0xfc05d2afc698203bLL,0xa480695bfc38c728LL,0xf1d4be3223760e78LL,0xb427e907f6e23719LL,0xfb55ef1ac63fe5fdLL,
0x88de564ca641d2acLL,0x528b105d828bdc05LL,0xe5329498b076d51bLL,0xefb9b5b252345907LL,0x696995a6ca0321d8LL,0x5a9569ef89d40ea5LL,0x1795558ca8a3f8b2LL,0x3386c96dc1f4646bLL,0x4da060c2f6e56016LL,0xa8187ad46071a800LL,
0xad0faab844dff445LL,0x59f9c40dc1207e26LL,0x6b0dc8ff0f64c24aLL,0xcf99dd63df5c9693LL,0xc1281720f01afaf5LL,0xdc3e368e92bed851LL,0x784762e3aa4aec4cLL,0xbac043c9a13376f2LL,0xa09328f27926b57bLL,0xfd61568073b647eeLL,
0x75a475314873ec0LL,0xd8761c0c7bfda1e8LL,0x8287ed89772c793aLL,0x7ff7df2e8035243eLL,0xfbeb0deeb0c375bLL,0x9751cb2db36336afLL,0xacdd4e100160c0c4LL,0x6cedbc635a5b52f7LL,0x7b22fac59b37bd81LL,0x74b7af4cb7b0c3e2LL};
sqlite3 *db; //database handle
sqlite3_stmt *stmt; //statment handle
char sql[450000+1024]; //sql statement string
int rc;
//zlib buffer
char z_blob[100000];
void sokoban_load_solution(SOKOBAN *skb, int t){
int len;
//for zlib
z_stream strm;
int z_size;
if(!sokoban_lookup_solution(skb, NULL)) return; // no solution in database
sokoban_restart(skb);
//select
if(t==LS_MOVE)
sprintf(sql, "SELECT mslt FROM solutions WHERE key='%llx' AND key2='%llx'", skb->key, skb->key2);
else if(t==LS_PUSH)
sprintf(sql, "SELECT pslt FROM solutions WHERE key='%llx' AND key2='%llx'", skb->key, skb->key2);
if( (rc=sqlite3_prepare(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
while((rc=sqlite3_step(stmt) )== SQLITE_ROW ){
//printf("(%d/%d)-(%d,%d)\n",n4[0],n4[1],n4[2],n4[3]);
strm.avail_in =sqlite3_column_bytes(stmt,0) ; //get the #bytes of the blob
memcpy(z_blob,sqlite3_column_blob(stmt,0), strm.avail_in );
//len = strlen(z_blob);
//do the zlib decompression
strm.zalloc=Z_NULL;
strm.zfree=Z_NULL;
strm.opaque= Z_NULL;
inflateInit( &strm);
strm.next_out = sql;
strm.avail_out = 450000+1024;
strm.next_in=z_blob;
//strm.avail_in is already set 10 lines up
if( inflate(&strm,Z_FINISH)==Z_STREAM_END){
len = (char *)strm.next_out - sql;
sql[len]='\0';
//g_message("unzlib : %d ", len);
//z_blob[(char *)strm.next_out - z_blob]='\0';
//g_message("zlibed:%s", z_blob);
}
else g_message("uh-oh: zlib inflate error! ");
inflateEnd(&strm);
if(len > skb->solution_len){ //request for more memory
skb->solution_len = len+10;
skb->solution=realloc(skb->solution, skb->solution_len);
}
strcpy(skb->solution, sql);
skb->solution_head=len;
//printf("%s\n", temp);
}
if(rc!=SQLITE_DONE){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
//return 1 if solution found, otherwise 0
//the #move/#push are saved in m4
// m4 can be NULL if you don't want to retrieve the numbers
int sokoban_lookup_solution(SOKOBAN *skb, int *m4){
//char temp[5555];
int n4[4];
int found=0;
int i;
//select
sprintf(sql, "SELECT mm, mp, pm, pp FROM solutions WHERE key='%llx' AND key2='%llx'", skb->key, skb->key2);
if( (rc=sqlite3_prepare(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
while((rc=sqlite3_step(stmt) )== SQLITE_ROW ){
//printf("sqlite3_step():%d\n", rc);
n4[0]=sqlite3_column_int(stmt,0);
n4[1]=sqlite3_column_int(stmt,1);
n4[2]=sqlite3_column_int(stmt,2);
n4[3]=sqlite3_column_int(stmt,3);
if(m4!=NULL){
for(i=0;i<4;i++) m4[i]=n4[i];
}
//printf("(%d/%d)-(%d,%d)\n",n4[0],n4[1],n4[2],n4[3]);
//strcpy(temp,sqlite3_column_text(stmt,4) );
//printf("%s\n", temp);
found=1;
}
if(rc!=SQLITE_DONE){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
return found;
}
void sokoban_save_solution(SOKOBAN *skb){
int m4[4];
//for zlib
z_stream strm;
int z_size;
//do the zlib compression
strm.zalloc=Z_NULL;
strm.zfree=Z_NULL;
strm.opaque= Z_NULL;
deflateInit( &strm, 9);
strm.next_in=skb->solution;
strm.avail_in=skb->solution_tail;
strm.next_out=z_blob;
strm.avail_out =100000;
if( deflate(&strm,Z_NO_FLUSH)==Z_OK){
if(deflate(&strm, Z_FINISH)==Z_STREAM_END){
z_size= (char *)strm.next_out - z_blob;
//g_message("zlib : %d",z_size);
//z_blob[(char *)strm.next_out - z_blob]='\0';
//g_message("zlibed:%s", z_blob);
}
}
deflateEnd(&strm);
skb->solution[skb->solution_tail]='\0';
if(!sokoban_lookup_solution(skb,m4)){
//insert an entry
sprintf(sql, "INSERT INTO solutions (key,key2, mm,mp, mslt, pm, pp, pslt) VALUES ('%llx','%llx','%d','%d',?,'%d','%d',? )",
skb->key, skb->key2, skb->solution_tail, skb->n_push, skb->solution_tail, skb->n_push );
if( (rc=sqlite3_prepare_v2(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
sqlite3_bind_blob(stmt,1,z_blob, z_size , SQLITE_TRANSIENT);
sqlite3_bind_blob(stmt,2,z_blob, z_size , SQLITE_TRANSIENT);
if((rc=sqlite3_step(stmt) )!= SQLITE_DONE ){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
else{
if( skb->solution_tail<m4[0] || (skb->solution_tail==m4[0] && skb->n_push <m4[1] ) ){ //a better solution for #moves
//insert an entry
sprintf(sql, "UPDATE solutions SET mm='%d', mp='%d', mslt=? WHERE key='%llx' AND key2='%llx'",
skb->solution_tail, skb->n_push, skb->key, skb->key2 );
if( (rc=sqlite3_prepare_v2(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
sqlite3_bind_blob(stmt,1,z_blob, z_size , SQLITE_TRANSIENT);
if((rc=sqlite3_step(stmt) )!= SQLITE_DONE ){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
if( skb->n_push < m4[3] || (skb->solution_tail < m4[2] && skb->n_push == m4[3] ) ){ //a better solution for #pushes
//insert an entry
sprintf(sql, "UPDATE solutions SET pm='%d', pp='%d', pslt=? WHERE key='%llx' AND key2='%llx'",
skb->solution_tail, skb->n_push, skb->key, skb->key2 );
if( (rc=sqlite3_prepare_v2(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
sqlite3_bind_blob(stmt,1,z_blob, z_size , SQLITE_TRANSIENT);
if((rc=sqlite3_step(stmt) )!= SQLITE_DONE ){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
}
return;
}
//open the solution database if exist
//otherwise, create it
void sokoban_open_solution_db(){
char solution_filename[1024]; //database filename
const gchar *home_path=g_get_home_dir();
strcpy(solution_filename, home_path);
strcat(solution_filename,"/.usokoban.solutions");
//open database
if( (rc=sqlite3_open(solution_filename, &db) )!=SQLITE_OK){
printf("sqlite3_open():%d\n", rc);
}
//printf("\nsqlite:%d\n",rc);
//create table
strcpy(sql, "CREATE TABLE IF NOT EXISTS solutions (key CHAR(16), key2 CHAR(16), mm INTEGER, mp INTEGER, mslt BLOB, pm INTEGER, pp INTEGER, pslt BLOB )");
if( (rc=sqlite3_prepare(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
if((rc=sqlite3_step(stmt) )!= SQLITE_DONE ){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
//close
void sokoban_close_solution_db(){
//close database
sqlite3_close(db);
}
//find zobrist key using the target map
unsigned long long sokoban_find_zobrist_key_2(SOKOBAN *skb, ZOBRIST_KEY *zob, int boardsize){
ZOBRIST_KEY zkey=0;
int i,bi=0;
for(i=0;i<skb->w*skb->h;i++){
switch(skb->level[i]){
case '$':
case '@':
case '-':
if(skb->target[i]=='.') zkey^=zob[bi];
bi++;
break;
default:
break;
}
if (bi>=boardsize) return zkey;
}
//printf("zkey=%llX,hash_value= %llu [%u], (%u)\n",zkey, (zkey % (1024*1024) ),(int) (zkey % (1024*1024)), bi );
//level_2_bitstring(skb->level, skb->w, skb->h);
return zkey;
}
/* following two functions test() and test2() are beta testing with SQLite before actually coding the solution database
int test2(SOKOBAN *level_set[], int level_count){
int i;
ZOBRIST_KEY rc,rc2;
//zobrist_init(zob3k, 3000);
for(i=0;i<3000;i++){
if(i%10==0) printf("\n");
printf("0x%llx,", zob3k[i]);
}
printf("\n%d\n",sizeof(ZOBRIST_KEY));
for(i=0;i<level_count;i++) {
rc=sokoban_find_zobrist_key(level_set[i],zob3k, 3000);
rc2=sokoban_find_zobrist_key_2(level_set[i],zob3k, 3000);
//if(i%10==0) printf("\n");
printf("%d = 0x%llxLL,0x%llxLL\n", i,rc,rc2);
}
}
int test(SOKOBAN *skb){
//insert an entry
sprintf(sql, "INSERT INTO solutions (key, mslt) VALUES ('%llx','lurdlllDddd')", zob3k[1] );
if( (rc=sqlite3_prepare(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
if((rc=sqlite3_step(stmt) )!= SQLITE_DONE ){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
//insert another entry
sokoban_save_solution(skb);
//lookup solution
sokoban_lookup_solution(skb, NULL);
//select
sprintf(sql, "SELECT mslt FROM solutions WHERE key='%llx'", zob3k[0]);
if( (rc=sqlite3_prepare(db,sql,-1, &stmt, NULL ) )!= SQLITE_OK) {
printf("sqlite3_prepare():%d\n", rc);
}
while((rc=sqlite3_step(stmt) )== SQLITE_ROW ){
//printf("sqlite3_step():%d\n", rc);
strcpy(temp,sqlite3_column_text(stmt,0) );
printf("%s\n", temp);
}
if(rc!=SQLITE_DONE){
printf("sqlite3_step():%d\n", rc);
}
sqlite3_finalize(stmt);
}
*/