-
Notifications
You must be signed in to change notification settings - Fork 1
/
WarrantyCard.json
897 lines (897 loc) · 107 KB
/
WarrantyCard.json
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
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
{
"_format": "hh-sol-artifact-1",
"contractName": "WarrantyCard",
"sourceName": "contracts/WarrantyCard.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ADMIN",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SERVICE_PROVIDER",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SERVICE_PROVIDER_ADMIN",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "activeTokenIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_serialNo",
"type": "string"
}
],
"name": "checkAuthenticity",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "customerToWarrantyCards",
"outputs": [
{
"internalType": "string",
"name": "serialNo",
"type": "string"
},
{
"internalType": "uint256",
"name": "warrantyEnd",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "serviceCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getActiveTokenIdsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getExpiryDate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "getTokenId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_serialNo",
"type": "string"
}
],
"name": "getTokenIdBySerialNo",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "incServiceCount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "string",
"name": "_tokenUri",
"type": "string"
},
{
"internalType": "string",
"name": "_serialNo",
"type": "string"
},
{
"internalType": "uint64",
"name": "_warrantyEnd",
"type": "uint64"
}
],
"name": "issueWarrantyCard",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenOwner",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f57617272616e74794361726400000000000000000000000000000000000000008152506040518060400160405280600381526020017f57524300000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000969291906200051e565b508060019080519060200190620000af9291906200051e565b505050620000d2620000c66200025960201b60201c565b6200026160201b60201c565b620000e76000801b336200032760201b60201c565b620001197f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200032760201b60201c565b6200016b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a67f498a9dae57f391d8efcc7bb3e7440ad6a25b1261044ef1b555c5484cb9f676596200033d60201b60201c565b6200019d7f498a9dae57f391d8efcc7bb3e7440ad6a25b1261044ef1b555c5484cb9f67659336200032760201b60201c565b620001cf7fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc9336200032760201b60201c565b620002217fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc97fbfe570353e6a166c757d0b3e7e9b5b64f04ddc367c01f15d18b6af14295fc10b6200033d60201b60201c565b620002537fbfe570353e6a166c757d0b3e7e9b5b64f04ddc367c01f15d18b6af14295fc10b336200032760201b60201c565b62000633565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003398282620003a160201b60201c565b5050565b600062000350836200049360201b60201c565b905081600c6000858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b620003b38282620004b360201b60201c565b6200048f576001600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004346200025960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000600c6000838152602001908152602001600020600101549050919050565b6000600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b8280546200052c90620005ce565b90600052602060002090601f0160209004810192826200055057600085556200059c565b82601f106200056b57805160ff19168380011785556200059c565b828001600101855582156200059c579182015b828111156200059b5782518255916020019190600101906200057e565b5b509050620005ab9190620005af565b5090565b5b80821115620005ca576000816000905550600101620005b0565b5090565b60006002820490506001821680620005e757607f821691505b60208210811415620005fe57620005fd62000604565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61556c80620006436000396000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c80636352211e1161013b578063a22cb465116100b8578063d53913931161007c578063d539139314610712578063d547741f14610730578063e33bfee01461074c578063e985e9c51461077e578063f2fde38b146107ae5761023d565b8063a22cb4651461065e578063b7bf44a31461067a578063b88d4fde14610696578063bdf1fbaa146106b2578063c87b56dd146106e25761023d565b80638c1178a1116100ff5780638c1178a1146105b65780638da5cb5b146105d457806391d14854146105f257806395d89b4114610622578063a217fddf146106405761023d565b80636352211e146104fe5780636833f2001461052e57806368fe338d1461055e57806370a082311461057c578063715018a6146105ac5761023d565b806323b872dd116101c957806336568abe1161018d57806336568abe1461045e57806342842e0e1461047a57806342966c68146104965780634f6ccce7146104b25780635a3289ea146104e25761023d565b806323b872dd146103a8578063248a9ca3146103c45780632625832c146103f45780632f2ff15d146104125780632f745c591461042e5761023d565b80630ccc89c7116102105780630ccc89c7146102dc57806314ff5ea31461030c57806318160ddd1461033c5780631973a5fc1461035a5780631d7d1104146103785761023d565b806301ffc9a71461024257806306fdde0314610272578063081812fc14610290578063095ea7b3146102c0575b600080fd5b61025c60048036038101906102579190613edb565b6107ca565b604051610269919061458a565b60405180910390f35b61027a6107dc565b60405161028791906145c0565b60405180910390f35b6102aa60048036038101906102a59190613f7e565b61086e565b6040516102b79190614523565b60405180910390f35b6102da60048036038101906102d59190613dbf565b6108b4565b005b6102f660048036038101906102f19190613dff565b6109cc565b60405161030391906145c0565b60405180910390f35b61032660048036038101906103219190613f7e565b610ad2565b6040516103339190614920565b60405180910390f35b610344610afa565b6040516103519190614920565b60405180910390f35b610362610b07565b60405161036f91906145a5565b60405180910390f35b610392600480360381019061038d9190613f7e565b610b2b565b60405161039f9190614920565b60405180910390f35b6103c260048036038101906103bd9190613c0a565b610b4f565b005b6103de60048036038101906103d99190613e6e565b610d44565b6040516103eb91906145a5565b60405180910390f35b6103fc610d64565b60405161040991906145a5565b60405180910390f35b61042c60048036038101906104279190613e9b565b610d88565b005b61044860048036038101906104439190613dbf565b610da9565b6040516104559190614920565b60405180910390f35b61047860048036038101906104739190613e9b565b610e4e565b005b610494600480360381019061048f9190613c0a565b610ed1565b005b6104b060048036038101906104ab9190613f7e565b610ef1565b005b6104cc60048036038101906104c79190613f7e565b6110d7565b6040516104d99190614920565b60405180910390f35b6104fc60048036038101906104f79190613d20565b611148565b005b61051860048036038101906105139190613f7e565b611327565b6040516105259190614523565b60405180910390f35b61054860048036038101906105439190613f7e565b6113d9565b6040516105559190614920565b60405180910390f35b61056661143e565b6040516105739190614920565b60405180910390f35b61059660048036038101906105919190613b9d565b61144b565b6040516105a39190614920565b60405180910390f35b6105b4611503565b005b6105be611517565b6040516105cb91906145a5565b60405180910390f35b6105dc61153b565b6040516105e99190614523565b60405180910390f35b61060c60048036038101906106079190613e9b565b611565565b604051610619919061458a565b60405180910390f35b61062a6115d0565b60405161063791906145c0565b60405180910390f35b610648611662565b60405161065591906145a5565b60405180910390f35b61067860048036038101906106739190613ce0565b611669565b005b610694600480360381019061068f9190613f7e565b61167f565b005b6106b060048036038101906106ab9190613c5d565b611728565b005b6106cc60048036038101906106c79190613f35565b61191f565b6040516106d99190614920565b60405180910390f35b6106fc60048036038101906106f79190613f7e565b611947565b60405161070991906145c0565b60405180910390f35b61071a611959565b60405161072791906145a5565b60405180910390f35b61074a60048036038101906107459190613e9b565b61197d565b005b61076660048036038101906107619190613dbf565b61199e565b604051610775939291906145e2565b60405180910390f35b61079860048036038101906107939190613bca565b611a5d565b6040516107a5919061458a565b60405180910390f35b6107c860048036038101906107c39190613b9d565b611af1565b005b60006107d582611b75565b9050919050565b6060600080546107eb90614c2d565b80601f016020809104026020016040519081016040528092919081815260200182805461081790614c2d565b80156108645780601f1061083957610100808354040283529160200191610864565b820191906000526020600020905b81548152906001019060200180831161084757829003601f168201915b5050505050905090565b600061087982611bef565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108bf82611327565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790614840565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661094f611c3a565b73ffffffffffffffffffffffffffffffffffffffff16148061097e575061097d81610978611c3a565b611a5d565b5b6109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906147c0565b60405180910390fd5b6109c78383611c42565b505050565b60606109d88484611cfb565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90614720565b60405180910390fd5b42610a21846113d9565b1015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a59906148a0565b60405180910390fd5b610a6d848484611d3c565b15610a925760405180606001604052806029815260200161550e602991399050610acb565b6040518060400160405280601981526020017f53657269616c204e756d62657220446f6e2774206d617463680000000000000081525090505b9392505050565b6000600f8281548110610ae857610ae7614dc6565b5b90600052602060002001549050919050565b6000600880549050905090565b7fbfe570353e6a166c757d0b3e7e9b5b64f04ddc367c01f15d18b6af14295fc10b81565b600f8181548110610b3b57600080fd5b906000526020600020016000915090505481565b610b60610b5a611c3a565b82611de8565b610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906148e0565b60405180910390fd5b42610ba9826113d9565b1015610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190614860565b60405180910390fd5b610bf5838383611e7d565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000820181600001908054610ca990614c2d565b610cb49291906138ba565b506001820154816001015560028201548160020155905050600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008082016000610d2d9190613947565b600182016000905560028201600090555050505050565b6000600c6000838152602001908152602001600020600101549050919050565b7fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc981565b610d9182610d44565b610d9a816120e4565b610da483836120f8565b505050565b6000610db48361144b565b8210610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614640565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e56611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90614900565b60405180910390fd5b610ecd82826121d9565b5050565b610eec83838360405180602001604052806000815250611728565b505050565b610f02610efc611c3a565b82611de8565b610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906148e0565b60405180910390fd5b42610f4b826113d9565b10610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290614740565b60405180910390fd5b600e6000610f9883611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008082016000610ff49190613947565b60018201600090556002820160009055505060005b600f805490508110156110ca5781600f828154811061102b5761102a614dc6565b5b906000526020600020015414156110b757600f6001600f805490506110509190614afb565b8154811061106157611060614dc6565b5b9060005260206000200154600f82815481106110805761107f614dc6565b5b9060005260206000200181905550600f8054806110a05761109f614d97565b5b600190038181906000526020600020016000905590555b80806110c290614c90565b915050611009565b506110d4816122bb565b50565b60006110e1610afa565b8210611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990614880565b60405180910390fd5b6008828154811061113657611135614dc6565b5b90600052602060002001549050919050565b6111727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611565565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614780565b60405180910390fd5b60006010836040516111c39190614497565b9081526020016040518091039020541115611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a906148c0565b60405180910390fd5b600061121d6122c7565b905061122a8582866122e2565b60405180606001604052808481526020018367ffffffffffffffff1681526020016000815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008201518160000190805190602001906112bc929190613987565b506020820151816001015560408201518160020155905050600f8190806001815401808255809150506001900390600052602060002001600090919091909150558060108460405161130e9190614497565b9081526020016040518091039020819055505050505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790614820565b60405180910390fd5b80915050919050565b6000600e60006113e884611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101549050919050565b6000600f80549050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390614760565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b61235d565b61151560006123db565b565b7f498a9dae57f391d8efcc7bb3e7440ad6a25b1261044ef1b555c5484cb9f6765981565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600180546115df90614c2d565b80601f016020809104026020016040519081016040528092919081815260200182805461160b90614c2d565b80156116585780601f1061162d57610100808354040283529160200191611658565b820191906000526020600020905b81548152906001019060200180831161163b57829003601f168201915b5050505050905090565b6000801b81565b61167b8261167561153b565b836124a1565b5050565b6116a97fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc933611565565b6116b257600080fd5b6001600e60006116c184611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600201600082825461171e9190614a1a565b9250508190555050565b611739611733611c3a565b83611de8565b611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f906148e0565b60405180910390fd5b42611782836113d9565b10156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614860565b60405180910390fd5b6117cf8484848461260e565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600082018160000190805461188390614c2d565b61188e9291906138ba565b506001820154816001015560028201548160020155905050600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600080820160006119079190613947565b60018201600090556002820160009055505050505050565b60006010826040516119319190614497565b9081526020016040518091039020549050919050565b60606119528261266a565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61198682610d44565b61198f816120e4565b61199983836121d9565b505050565b600e602052816000526040600020602052806000526040600020600091509150508060000180546119ce90614c2d565b80601f01602080910402602001604051908101604052809291908181526020018280546119fa90614c2d565b8015611a475780601f10611a1c57610100808354040283529160200191611a47565b820191906000526020600020905b815481529060010190602001808311611a2a57829003601f168201915b5050505050908060010154908060020154905083565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611af961235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614680565b60405180910390fd5b611b72816123db565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611be85750611be78261277d565b5b9050919050565b611bf8816127f7565b611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614820565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611cb583611327565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611d0682611327565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600081604051602001611d4f9190614497565b60405160208183030381529060405280519060200120600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600001604051602001611dc891906144d2565b604051602081830303815290604052805190602001201490509392505050565b600080611df483611327565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e365750611e358185611a5d565b5b80611e7457508373ffffffffffffffffffffffffffffffffffffffff16611e5c8461086e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e9d82611327565b73ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906146e0565b60405180910390fd5b611f6e838383612863565b611f79600082611c42565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fc99190614afb565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120209190614a1a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120df838383612873565b505050565b6120f5816120f0611c3a565b612878565b50565b6121028282611565565b6121d5576001600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061217a611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6121e38282611565565b156122b7576000600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061225c611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6122c481612915565b50565b60006122d3600d612968565b6122dd600d61297e565b905090565b6122f3836122ee61153b565b611a5d565b158015612333575061230361153b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561234457612343836001611669565b5b61234e838361298c565b61235882826129aa565b505050565b612365611c3a565b73ffffffffffffffffffffffffffffffffffffffff1661238361153b565b73ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090614800565b60405180910390fd5b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790614700565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612601919061458a565b60405180910390a3505050565b612619848484611e7d565b61262584848484612a1e565b612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614660565b60405180910390fd5b50505050565b606061267582611bef565b6000600a6000848152602001908152602001600020805461269590614c2d565b80601f01602080910402602001604051908101604052809291908181526020018280546126c190614c2d565b801561270e5780601f106126e35761010080835404028352916020019161270e565b820191906000526020600020905b8154815290600101906020018083116126f157829003601f168201915b50505050509050600061271f612bb5565b9050600081511415612735578192505050612778565b60008251111561276a5780826040516020016127529291906144ae565b60405160208183030381529060405292505050612778565b61277384612bd5565b925050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127f057506127ef82612c3d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61286e838383612d1f565b505050565b505050565b6128828282611565565b612911576128a78173ffffffffffffffffffffffffffffffffffffffff166014612e33565b6128b58360001c6020612e33565b6040516020016128c69291906144e9565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290891906145c0565b60405180910390fd5b5050565b61291e8161306f565b6000600a6000838152602001908152602001600020805461293e90614c2d565b90501461296557600a600082815260200190815260200160002060006129649190613947565b5b50565b6001816000016000828254019250508190555050565b600081600001549050919050565b6129a682826040518060200160405280600081525061318c565b5050565b6129b3826127f7565b6129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906147a0565b60405180910390fd5b80600a60008481526020019081526020016000209080519060200190612a19929190613987565b505050565b6000612a3f8473ffffffffffffffffffffffffffffffffffffffff166131e7565b15612ba8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a68611c3a565b8786866040518563ffffffff1660e01b8152600401612a8a949392919061453e565b602060405180830381600087803b158015612aa457600080fd5b505af1925050508015612ad557506040513d601f19601f82011682018060405250810190612ad29190613f08565b60015b612b58573d8060008114612b05576040519150601f19603f3d011682016040523d82523d6000602084013e612b0a565b606091505b50600081511415612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4790614660565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612bad565b600190505b949350505050565b60606040518060600160405280602281526020016154ec60229139905090565b6060612be082611bef565b6000612bea612bb5565b90506000815111612c0a5760405180602001604052806000815250612c35565b80612c148461320a565b604051602001612c259291906144ae565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d0857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612d185750612d178261336b565b5b9050919050565b612d2a8383836133d5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d6d57612d68816133da565b612dac565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612dab57612daa8382613423565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612def57612dea81613590565b612e2e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e2d57612e2c8282613661565b5b5b505050565b606060006002836002612e469190614aa1565b612e509190614a1a565b67ffffffffffffffff811115612e6957612e68614df5565b5b6040519080825280601f01601f191660200182016040528015612e9b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612ed357612ed2614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612f3757612f36614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612f779190614aa1565b612f819190614a1a565b90505b6001811115613021577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612fc357612fc2614dc6565b5b1a60f81b828281518110612fda57612fd9614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061301a90614c03565b9050612f84565b5060008414613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c90614620565b60405180910390fd5b8091505092915050565b600061307a82611327565b905061308881600084612863565b613093600083611c42565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130e39190614afb565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461318881600084612873565b5050565b61319683836136e0565b6131a36000848484612a1e565b6131e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d990614660565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000821415613252576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613366565b600082905060005b6000821461328457808061326d90614c90565b915050600a8261327d9190614a70565b915061325a565b60008167ffffffffffffffff8111156132a05761329f614df5565b5b6040519080825280601f01601f1916602001820160405280156132d25781602001600182028036833780820191505090505b5090505b6000851461335f576001826132eb9190614afb565b9150600a856132fa9190614cd9565b60306133069190614a1a565b60f81b81838151811061331c5761331b614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133589190614a70565b94506132d6565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016134308461144b565b61343a9190614afb565b905060006007600084815260200190815260200160002054905081811461351f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506135a49190614afb565b90506000600960008481526020019081526020016000205490506000600883815481106135d4576135d3614dc6565b5b9060005260206000200154905080600883815481106135f6576135f5614dc6565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061364557613644614d97565b5b6001900381819060005260206000200160009055905550505050565b600061366c8361144b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613747906147e0565b60405180910390fd5b613759816127f7565b15613799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613790906146c0565b60405180910390fd5b6137a560008383612863565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137f59190614a1a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46138b660008383612873565b5050565b8280546138c690614c2d565b90600052602060002090601f0160209004810192826138e85760008555613936565b82601f106138f95780548555613936565b8280016001018555821561393657600052602060002091601f016020900482015b8281111561393557825482559160010191906001019061391a565b5b5090506139439190613a0d565b5090565b50805461395390614c2d565b6000825580601f106139655750613984565b601f0160209004906000526020600020908101906139839190613a0d565b5b50565b82805461399390614c2d565b90600052602060002090601f0160209004810192826139b557600085556139fc565b82601f106139ce57805160ff19168380011785556139fc565b828001600101855582156139fc579182015b828111156139fb5782518255916020019190600101906139e0565b5b509050613a099190613a0d565b5090565b5b80821115613a26576000816000905550600101613a0e565b5090565b6000613a3d613a3884614960565b61493b565b905082815260208101848484011115613a5957613a58614e29565b5b613a64848285614bc1565b509392505050565b6000613a7f613a7a84614991565b61493b565b905082815260208101848484011115613a9b57613a9a614e29565b5b613aa6848285614bc1565b509392505050565b600081359050613abd81615461565b92915050565b600081359050613ad281615478565b92915050565b600081359050613ae78161548f565b92915050565b600081359050613afc816154a6565b92915050565b600081519050613b11816154a6565b92915050565b600082601f830112613b2c57613b2b614e24565b5b8135613b3c848260208601613a2a565b91505092915050565b600082601f830112613b5a57613b59614e24565b5b8135613b6a848260208601613a6c565b91505092915050565b600081359050613b82816154bd565b92915050565b600081359050613b97816154d4565b92915050565b600060208284031215613bb357613bb2614e33565b5b6000613bc184828501613aae565b91505092915050565b60008060408385031215613be157613be0614e33565b5b6000613bef85828601613aae565b9250506020613c0085828601613aae565b9150509250929050565b600080600060608486031215613c2357613c22614e33565b5b6000613c3186828701613aae565b9350506020613c4286828701613aae565b9250506040613c5386828701613b73565b9150509250925092565b60008060008060808587031215613c7757613c76614e33565b5b6000613c8587828801613aae565b9450506020613c9687828801613aae565b9350506040613ca787828801613b73565b925050606085013567ffffffffffffffff811115613cc857613cc7614e2e565b5b613cd487828801613b17565b91505092959194509250565b60008060408385031215613cf757613cf6614e33565b5b6000613d0585828601613aae565b9250506020613d1685828601613ac3565b9150509250929050565b60008060008060808587031215613d3a57613d39614e33565b5b6000613d4887828801613aae565b945050602085013567ffffffffffffffff811115613d6957613d68614e2e565b5b613d7587828801613b45565b935050604085013567ffffffffffffffff811115613d9657613d95614e2e565b5b613da287828801613b45565b9250506060613db387828801613b88565b91505092959194509250565b60008060408385031215613dd657613dd5614e33565b5b6000613de485828601613aae565b9250506020613df585828601613b73565b9150509250929050565b600080600060608486031215613e1857613e17614e33565b5b6000613e2686828701613aae565b9350506020613e3786828701613b73565b925050604084013567ffffffffffffffff811115613e5857613e57614e2e565b5b613e6486828701613b45565b9150509250925092565b600060208284031215613e8457613e83614e33565b5b6000613e9284828501613ad8565b91505092915050565b60008060408385031215613eb257613eb1614e33565b5b6000613ec085828601613ad8565b9250506020613ed185828601613aae565b9150509250929050565b600060208284031215613ef157613ef0614e33565b5b6000613eff84828501613aed565b91505092915050565b600060208284031215613f1e57613f1d614e33565b5b6000613f2c84828501613b02565b91505092915050565b600060208284031215613f4b57613f4a614e33565b5b600082013567ffffffffffffffff811115613f6957613f68614e2e565b5b613f7584828501613b45565b91505092915050565b600060208284031215613f9457613f93614e33565b5b6000613fa284828501613b73565b91505092915050565b613fb481614b2f565b82525050565b613fc381614b41565b82525050565b613fd281614b4d565b82525050565b6000613fe3826149d7565b613fed81856149ed565b9350613ffd818560208601614bd0565b61400681614e38565b840191505092915050565b600061401c826149e2565b61402681856149fe565b9350614036818560208601614bd0565b61403f81614e38565b840191505092915050565b6000614055826149e2565b61405f8185614a0f565b935061406f818560208601614bd0565b80840191505092915050565b6000815461408881614c2d565b6140928186614a0f565b945060018216600081146140ad57600181146140be576140f1565b60ff198316865281860193506140f1565b6140c7856149c2565b60005b838110156140e9578154818901526001820191506020810190506140ca565b838801955050505b50505092915050565b60006141076020836149fe565b915061411282614e49565b602082019050919050565b600061412a602b836149fe565b915061413582614e72565b604082019050919050565b600061414d6032836149fe565b915061415882614ec1565b604082019050919050565b60006141706026836149fe565b915061417b82614f10565b604082019050919050565b60006141936025836149fe565b915061419e82614f5f565b604082019050919050565b60006141b6601c836149fe565b91506141c182614fae565b602082019050919050565b60006141d96024836149fe565b91506141e482614fd7565b604082019050919050565b60006141fc6019836149fe565b915061420782615026565b602082019050919050565b600061421f6021836149fe565b915061422a8261504f565b604082019050919050565b60006142426014836149fe565b915061424d8261509e565b602082019050919050565b60006142656029836149fe565b9150614270826150c7565b604082019050919050565b60006142886016836149fe565b915061429382615116565b602082019050919050565b60006142ab602e836149fe565b91506142b68261513f565b604082019050919050565b60006142ce603e836149fe565b91506142d98261518e565b604082019050919050565b60006142f16020836149fe565b91506142fc826151dd565b602082019050919050565b60006143146020836149fe565b915061431f82615206565b602082019050919050565b60006143376018836149fe565b91506143428261522f565b602082019050919050565b600061435a6021836149fe565b915061436582615258565b604082019050919050565b600061437d6011836149fe565b9150614388826152a7565b602082019050919050565b60006143a0602c836149fe565b91506143ab826152d0565b604082019050919050565b60006143c36010836149fe565b91506143ce8261531f565b602082019050919050565b60006143e6601c836149fe565b91506143f182615348565b602082019050919050565b6000614409601783614a0f565b915061441482615371565b601782019050919050565b600061442c602e836149fe565b91506144378261539a565b604082019050919050565b600061444f601183614a0f565b915061445a826153e9565b601182019050919050565b6000614472602f836149fe565b915061447d82615412565b604082019050919050565b61449181614ba3565b82525050565b60006144a3828461404a565b915081905092915050565b60006144ba828561404a565b91506144c6828461404a565b91508190509392505050565b60006144de828461407b565b915081905092915050565b60006144f4826143fc565b9150614500828561404a565b915061450b82614442565b9150614517828461404a565b91508190509392505050565b60006020820190506145386000830184613fab565b92915050565b60006080820190506145536000830187613fab565b6145606020830186613fab565b61456d6040830185614488565b818103606083015261457f8184613fd8565b905095945050505050565b600060208201905061459f6000830184613fba565b92915050565b60006020820190506145ba6000830184613fc9565b92915050565b600060208201905081810360008301526145da8184614011565b905092915050565b600060608201905081810360008301526145fc8186614011565b905061460b6020830185614488565b6146186040830184614488565b949350505050565b60006020820190508181036000830152614639816140fa565b9050919050565b600060208201905081810360008301526146598161411d565b9050919050565b6000602082019050818103600083015261467981614140565b9050919050565b6000602082019050818103600083015261469981614163565b9050919050565b600060208201905081810360008301526146b981614186565b9050919050565b600060208201905081810360008301526146d9816141a9565b9050919050565b600060208201905081810360008301526146f9816141cc565b9050919050565b60006020820190508181036000830152614719816141ef565b9050919050565b6000602082019050818103600083015261473981614212565b9050919050565b6000602082019050818103600083015261475981614235565b9050919050565b6000602082019050818103600083015261477981614258565b9050919050565b600060208201905081810360008301526147998161427b565b9050919050565b600060208201905081810360008301526147b98161429e565b9050919050565b600060208201905081810360008301526147d9816142c1565b9050919050565b600060208201905081810360008301526147f9816142e4565b9050919050565b6000602082019050818103600083015261481981614307565b9050919050565b600060208201905081810360008301526148398161432a565b9050919050565b600060208201905081810360008301526148598161434d565b9050919050565b6000602082019050818103600083015261487981614370565b9050919050565b6000602082019050818103600083015261489981614393565b9050919050565b600060208201905081810360008301526148b9816143b6565b9050919050565b600060208201905081810360008301526148d9816143d9565b9050919050565b600060208201905081810360008301526148f98161441f565b9050919050565b6000602082019050818103600083015261491981614465565b9050919050565b60006020820190506149356000830184614488565b92915050565b6000614945614956565b90506149518282614c5f565b919050565b6000604051905090565b600067ffffffffffffffff82111561497b5761497a614df5565b5b61498482614e38565b9050602081019050919050565b600067ffffffffffffffff8211156149ac576149ab614df5565b5b6149b582614e38565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614a2582614ba3565b9150614a3083614ba3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6557614a64614d0a565b5b828201905092915050565b6000614a7b82614ba3565b9150614a8683614ba3565b925082614a9657614a95614d39565b5b828204905092915050565b6000614aac82614ba3565b9150614ab783614ba3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614af057614aef614d0a565b5b828202905092915050565b6000614b0682614ba3565b9150614b1183614ba3565b925082821015614b2457614b23614d0a565b5b828203905092915050565b6000614b3a82614b83565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614bee578082015181840152602081019050614bd3565b83811115614bfd576000848401525b50505050565b6000614c0e82614ba3565b91506000821415614c2257614c21614d0a565b5b600182039050919050565b60006002820490506001821680614c4557607f821691505b60208210811415614c5957614c58614d68565b5b50919050565b614c6882614e38565b810181811067ffffffffffffffff82111715614c8757614c86614df5565b5b80604052505050565b6000614c9b82614ba3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cce57614ccd614d0a565b5b600182019050919050565b6000614ce482614ba3565b9150614cef83614ba3565b925082614cff57614cfe614d39565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f41646472657373206973206e6f7420746865204f776e6572206f6620746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206e6f742065787069726564000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206973206e6f742061206d696e74657200000000000000000000600082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973207265717569726564000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206578706972656400000000000000000000000000000000600082015250565b7f53657269616c204e756d62657220416c72656164792045786973747300000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61546a81614b2f565b811461547557600080fd5b50565b61548181614b41565b811461548c57600080fd5b50565b61549881614b4d565b81146154a357600080fd5b50565b6154af81614b57565b81146154ba57600080fd5b50565b6154c681614ba3565b81146154d157600080fd5b50565b6154dd81614bad565b81146154e857600080fd5b5056fe68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f5573657220616e642050726f647563742056657269666965642c2057617272616e74792076616c6964a26469706673582212208c02baee8a036c9428b82e6a876c4b290e586cdd84a7cb1dafe5c20876aedd7964736f6c63430008070033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061023d5760003560e01c80636352211e1161013b578063a22cb465116100b8578063d53913931161007c578063d539139314610712578063d547741f14610730578063e33bfee01461074c578063e985e9c51461077e578063f2fde38b146107ae5761023d565b8063a22cb4651461065e578063b7bf44a31461067a578063b88d4fde14610696578063bdf1fbaa146106b2578063c87b56dd146106e25761023d565b80638c1178a1116100ff5780638c1178a1146105b65780638da5cb5b146105d457806391d14854146105f257806395d89b4114610622578063a217fddf146106405761023d565b80636352211e146104fe5780636833f2001461052e57806368fe338d1461055e57806370a082311461057c578063715018a6146105ac5761023d565b806323b872dd116101c957806336568abe1161018d57806336568abe1461045e57806342842e0e1461047a57806342966c68146104965780634f6ccce7146104b25780635a3289ea146104e25761023d565b806323b872dd146103a8578063248a9ca3146103c45780632625832c146103f45780632f2ff15d146104125780632f745c591461042e5761023d565b80630ccc89c7116102105780630ccc89c7146102dc57806314ff5ea31461030c57806318160ddd1461033c5780631973a5fc1461035a5780631d7d1104146103785761023d565b806301ffc9a71461024257806306fdde0314610272578063081812fc14610290578063095ea7b3146102c0575b600080fd5b61025c60048036038101906102579190613edb565b6107ca565b604051610269919061458a565b60405180910390f35b61027a6107dc565b60405161028791906145c0565b60405180910390f35b6102aa60048036038101906102a59190613f7e565b61086e565b6040516102b79190614523565b60405180910390f35b6102da60048036038101906102d59190613dbf565b6108b4565b005b6102f660048036038101906102f19190613dff565b6109cc565b60405161030391906145c0565b60405180910390f35b61032660048036038101906103219190613f7e565b610ad2565b6040516103339190614920565b60405180910390f35b610344610afa565b6040516103519190614920565b60405180910390f35b610362610b07565b60405161036f91906145a5565b60405180910390f35b610392600480360381019061038d9190613f7e565b610b2b565b60405161039f9190614920565b60405180910390f35b6103c260048036038101906103bd9190613c0a565b610b4f565b005b6103de60048036038101906103d99190613e6e565b610d44565b6040516103eb91906145a5565b60405180910390f35b6103fc610d64565b60405161040991906145a5565b60405180910390f35b61042c60048036038101906104279190613e9b565b610d88565b005b61044860048036038101906104439190613dbf565b610da9565b6040516104559190614920565b60405180910390f35b61047860048036038101906104739190613e9b565b610e4e565b005b610494600480360381019061048f9190613c0a565b610ed1565b005b6104b060048036038101906104ab9190613f7e565b610ef1565b005b6104cc60048036038101906104c79190613f7e565b6110d7565b6040516104d99190614920565b60405180910390f35b6104fc60048036038101906104f79190613d20565b611148565b005b61051860048036038101906105139190613f7e565b611327565b6040516105259190614523565b60405180910390f35b61054860048036038101906105439190613f7e565b6113d9565b6040516105559190614920565b60405180910390f35b61056661143e565b6040516105739190614920565b60405180910390f35b61059660048036038101906105919190613b9d565b61144b565b6040516105a39190614920565b60405180910390f35b6105b4611503565b005b6105be611517565b6040516105cb91906145a5565b60405180910390f35b6105dc61153b565b6040516105e99190614523565b60405180910390f35b61060c60048036038101906106079190613e9b565b611565565b604051610619919061458a565b60405180910390f35b61062a6115d0565b60405161063791906145c0565b60405180910390f35b610648611662565b60405161065591906145a5565b60405180910390f35b61067860048036038101906106739190613ce0565b611669565b005b610694600480360381019061068f9190613f7e565b61167f565b005b6106b060048036038101906106ab9190613c5d565b611728565b005b6106cc60048036038101906106c79190613f35565b61191f565b6040516106d99190614920565b60405180910390f35b6106fc60048036038101906106f79190613f7e565b611947565b60405161070991906145c0565b60405180910390f35b61071a611959565b60405161072791906145a5565b60405180910390f35b61074a60048036038101906107459190613e9b565b61197d565b005b61076660048036038101906107619190613dbf565b61199e565b604051610775939291906145e2565b60405180910390f35b61079860048036038101906107939190613bca565b611a5d565b6040516107a5919061458a565b60405180910390f35b6107c860048036038101906107c39190613b9d565b611af1565b005b60006107d582611b75565b9050919050565b6060600080546107eb90614c2d565b80601f016020809104026020016040519081016040528092919081815260200182805461081790614c2d565b80156108645780601f1061083957610100808354040283529160200191610864565b820191906000526020600020905b81548152906001019060200180831161084757829003601f168201915b5050505050905090565b600061087982611bef565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108bf82611327565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790614840565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661094f611c3a565b73ffffffffffffffffffffffffffffffffffffffff16148061097e575061097d81610978611c3a565b611a5d565b5b6109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b4906147c0565b60405180910390fd5b6109c78383611c42565b505050565b60606109d88484611cfb565b610a17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0e90614720565b60405180910390fd5b42610a21846113d9565b1015610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a59906148a0565b60405180910390fd5b610a6d848484611d3c565b15610a925760405180606001604052806029815260200161550e602991399050610acb565b6040518060400160405280601981526020017f53657269616c204e756d62657220446f6e2774206d617463680000000000000081525090505b9392505050565b6000600f8281548110610ae857610ae7614dc6565b5b90600052602060002001549050919050565b6000600880549050905090565b7fbfe570353e6a166c757d0b3e7e9b5b64f04ddc367c01f15d18b6af14295fc10b81565b600f8181548110610b3b57600080fd5b906000526020600020016000915090505481565b610b60610b5a611c3a565b82611de8565b610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906148e0565b60405180910390fd5b42610ba9826113d9565b1015610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be190614860565b60405180910390fd5b610bf5838383611e7d565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828152602001908152602001600020600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000820181600001908054610ca990614c2d565b610cb49291906138ba565b506001820154816001015560028201548160020155905050600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008082016000610d2d9190613947565b600182016000905560028201600090555050505050565b6000600c6000838152602001908152602001600020600101549050919050565b7fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc981565b610d9182610d44565b610d9a816120e4565b610da483836120f8565b505050565b6000610db48361144b565b8210610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614640565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610e56611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eba90614900565b60405180910390fd5b610ecd82826121d9565b5050565b610eec83838360405180602001604052806000815250611728565b505050565b610f02610efc611c3a565b82611de8565b610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f38906148e0565b60405180910390fd5b42610f4b826113d9565b10610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290614740565b60405180910390fd5b600e6000610f9883611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008082016000610ff49190613947565b60018201600090556002820160009055505060005b600f805490508110156110ca5781600f828154811061102b5761102a614dc6565b5b906000526020600020015414156110b757600f6001600f805490506110509190614afb565b8154811061106157611060614dc6565b5b9060005260206000200154600f82815481106110805761107f614dc6565b5b9060005260206000200181905550600f8054806110a05761109f614d97565b5b600190038181906000526020600020016000905590555b80806110c290614c90565b915050611009565b506110d4816122bb565b50565b60006110e1610afa565b8210611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990614880565b60405180910390fd5b6008828154811061113657611135614dc6565b5b90600052602060002001549050919050565b6111727f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611565565b6111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a890614780565b60405180910390fd5b60006010836040516111c39190614497565b9081526020016040518091039020541115611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a906148c0565b60405180910390fd5b600061121d6122c7565b905061122a8582866122e2565b60405180606001604052808481526020018367ffffffffffffffff1681526020016000815250600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008201518160000190805190602001906112bc929190613987565b506020820151816001015560408201518160020155905050600f8190806001815401808255809150506001900390600052602060002001600090919091909150558060108460405161130e9190614497565b9081526020016040518091039020819055505050505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790614820565b60405180910390fd5b80915050919050565b6000600e60006113e884611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101549050919050565b6000600f80549050905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b390614760565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150b61235d565b61151560006123db565b565b7f498a9dae57f391d8efcc7bb3e7440ad6a25b1261044ef1b555c5484cb9f6765981565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600180546115df90614c2d565b80601f016020809104026020016040519081016040528092919081815260200182805461160b90614c2d565b80156116585780601f1061162d57610100808354040283529160200191611658565b820191906000526020600020905b81548152906001019060200180831161163b57829003601f168201915b5050505050905090565b6000801b81565b61167b8261167561153b565b836124a1565b5050565b6116a97fb1295e226936bc270b4829acc516f69e4a4f6a5589c7ea15c4ab1eeff4153cc933611565565b6116b257600080fd5b6001600e60006116c184611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600201600082825461171e9190614a1a565b9250508190555050565b611739611733611c3a565b83611de8565b611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f906148e0565b60405180910390fd5b42611782836113d9565b10156117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614860565b60405180910390fd5b6117cf8484848461260e565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600082018160000190805461188390614c2d565b61188e9291906138ba565b506001820154816001015560028201548160020155905050600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600080820160006119079190613947565b60018201600090556002820160009055505050505050565b60006010826040516119319190614497565b9081526020016040518091039020549050919050565b60606119528261266a565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61198682610d44565b61198f816120e4565b61199983836121d9565b505050565b600e602052816000526040600020602052806000526040600020600091509150508060000180546119ce90614c2d565b80601f01602080910402602001604051908101604052809291908181526020018280546119fa90614c2d565b8015611a475780601f10611a1c57610100808354040283529160200191611a47565b820191906000526020600020905b815481529060010190602001808311611a2a57829003601f168201915b5050505050908060010154908060020154905083565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611af961235d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6090614680565b60405180910390fd5b611b72816123db565b50565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611be85750611be78261277d565b5b9050919050565b611bf8816127f7565b611c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2e90614820565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611cb583611327565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611d0682611327565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600081604051602001611d4f9190614497565b60405160208183030381529060405280519060200120600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600001604051602001611dc891906144d2565b604051602081830303815290604052805190602001201490509392505050565b600080611df483611327565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e365750611e358185611a5d565b5b80611e7457508373ffffffffffffffffffffffffffffffffffffffff16611e5c8461086e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611e9d82611327565b73ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea906146a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906146e0565b60405180910390fd5b611f6e838383612863565b611f79600082611c42565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fc99190614afb565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120209190614a1a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120df838383612873565b505050565b6120f5816120f0611c3a565b612878565b50565b6121028282611565565b6121d5576001600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061217a611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6121e38282611565565b156122b7576000600c600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061225c611c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6122c481612915565b50565b60006122d3600d612968565b6122dd600d61297e565b905090565b6122f3836122ee61153b565b611a5d565b158015612333575061230361153b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561234457612343836001611669565b5b61234e838361298c565b61235882826129aa565b505050565b612365611c3a565b73ffffffffffffffffffffffffffffffffffffffff1661238361153b565b73ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d090614800565b60405180910390fd5b565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250790614700565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612601919061458a565b60405180910390a3505050565b612619848484611e7d565b61262584848484612a1e565b612664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265b90614660565b60405180910390fd5b50505050565b606061267582611bef565b6000600a6000848152602001908152602001600020805461269590614c2d565b80601f01602080910402602001604051908101604052809291908181526020018280546126c190614c2d565b801561270e5780601f106126e35761010080835404028352916020019161270e565b820191906000526020600020905b8154815290600101906020018083116126f157829003601f168201915b50505050509050600061271f612bb5565b9050600081511415612735578192505050612778565b60008251111561276a5780826040516020016127529291906144ae565b60405160208183030381529060405292505050612778565b61277384612bd5565b925050505b919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127f057506127ef82612c3d565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61286e838383612d1f565b505050565b505050565b6128828282611565565b612911576128a78173ffffffffffffffffffffffffffffffffffffffff166014612e33565b6128b58360001c6020612e33565b6040516020016128c69291906144e9565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290891906145c0565b60405180910390fd5b5050565b61291e8161306f565b6000600a6000838152602001908152602001600020805461293e90614c2d565b90501461296557600a600082815260200190815260200160002060006129649190613947565b5b50565b6001816000016000828254019250508190555050565b600081600001549050919050565b6129a682826040518060200160405280600081525061318c565b5050565b6129b3826127f7565b6129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906147a0565b60405180910390fd5b80600a60008481526020019081526020016000209080519060200190612a19929190613987565b505050565b6000612a3f8473ffffffffffffffffffffffffffffffffffffffff166131e7565b15612ba8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a68611c3a565b8786866040518563ffffffff1660e01b8152600401612a8a949392919061453e565b602060405180830381600087803b158015612aa457600080fd5b505af1925050508015612ad557506040513d601f19601f82011682018060405250810190612ad29190613f08565b60015b612b58573d8060008114612b05576040519150601f19603f3d011682016040523d82523d6000602084013e612b0a565b606091505b50600081511415612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4790614660565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612bad565b600190505b949350505050565b60606040518060600160405280602281526020016154ec60229139905090565b6060612be082611bef565b6000612bea612bb5565b90506000815111612c0a5760405180602001604052806000815250612c35565b80612c148461320a565b604051602001612c259291906144ae565b6040516020818303038152906040525b915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d0857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612d185750612d178261336b565b5b9050919050565b612d2a8383836133d5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d6d57612d68816133da565b612dac565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612dab57612daa8382613423565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612def57612dea81613590565b612e2e565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612e2d57612e2c8282613661565b5b5b505050565b606060006002836002612e469190614aa1565b612e509190614a1a565b67ffffffffffffffff811115612e6957612e68614df5565b5b6040519080825280601f01601f191660200182016040528015612e9b5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612ed357612ed2614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612f3757612f36614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612f779190614aa1565b612f819190614a1a565b90505b6001811115613021577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612fc357612fc2614dc6565b5b1a60f81b828281518110612fda57612fd9614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061301a90614c03565b9050612f84565b5060008414613065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305c90614620565b60405180910390fd5b8091505092915050565b600061307a82611327565b905061308881600084612863565b613093600083611c42565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130e39190614afb565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461318881600084612873565b5050565b61319683836136e0565b6131a36000848484612a1e565b6131e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d990614660565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000821415613252576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613366565b600082905060005b6000821461328457808061326d90614c90565b915050600a8261327d9190614a70565b915061325a565b60008167ffffffffffffffff8111156132a05761329f614df5565b5b6040519080825280601f01601f1916602001820160405280156132d25781602001600182028036833780820191505090505b5090505b6000851461335f576001826132eb9190614afb565b9150600a856132fa9190614cd9565b60306133069190614a1a565b60f81b81838151811061331c5761331b614dc6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133589190614a70565b94506132d6565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016134308461144b565b61343a9190614afb565b905060006007600084815260200190815260200160002054905081811461351f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506135a49190614afb565b90506000600960008481526020019081526020016000205490506000600883815481106135d4576135d3614dc6565b5b9060005260206000200154905080600883815481106135f6576135f5614dc6565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061364557613644614d97565b5b6001900381819060005260206000200160009055905550505050565b600061366c8361144b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613750576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613747906147e0565b60405180910390fd5b613759816127f7565b15613799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613790906146c0565b60405180910390fd5b6137a560008383612863565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137f59190614a1a565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46138b660008383612873565b5050565b8280546138c690614c2d565b90600052602060002090601f0160209004810192826138e85760008555613936565b82601f106138f95780548555613936565b8280016001018555821561393657600052602060002091601f016020900482015b8281111561393557825482559160010191906001019061391a565b5b5090506139439190613a0d565b5090565b50805461395390614c2d565b6000825580601f106139655750613984565b601f0160209004906000526020600020908101906139839190613a0d565b5b50565b82805461399390614c2d565b90600052602060002090601f0160209004810192826139b557600085556139fc565b82601f106139ce57805160ff19168380011785556139fc565b828001600101855582156139fc579182015b828111156139fb5782518255916020019190600101906139e0565b5b509050613a099190613a0d565b5090565b5b80821115613a26576000816000905550600101613a0e565b5090565b6000613a3d613a3884614960565b61493b565b905082815260208101848484011115613a5957613a58614e29565b5b613a64848285614bc1565b509392505050565b6000613a7f613a7a84614991565b61493b565b905082815260208101848484011115613a9b57613a9a614e29565b5b613aa6848285614bc1565b509392505050565b600081359050613abd81615461565b92915050565b600081359050613ad281615478565b92915050565b600081359050613ae78161548f565b92915050565b600081359050613afc816154a6565b92915050565b600081519050613b11816154a6565b92915050565b600082601f830112613b2c57613b2b614e24565b5b8135613b3c848260208601613a2a565b91505092915050565b600082601f830112613b5a57613b59614e24565b5b8135613b6a848260208601613a6c565b91505092915050565b600081359050613b82816154bd565b92915050565b600081359050613b97816154d4565b92915050565b600060208284031215613bb357613bb2614e33565b5b6000613bc184828501613aae565b91505092915050565b60008060408385031215613be157613be0614e33565b5b6000613bef85828601613aae565b9250506020613c0085828601613aae565b9150509250929050565b600080600060608486031215613c2357613c22614e33565b5b6000613c3186828701613aae565b9350506020613c4286828701613aae565b9250506040613c5386828701613b73565b9150509250925092565b60008060008060808587031215613c7757613c76614e33565b5b6000613c8587828801613aae565b9450506020613c9687828801613aae565b9350506040613ca787828801613b73565b925050606085013567ffffffffffffffff811115613cc857613cc7614e2e565b5b613cd487828801613b17565b91505092959194509250565b60008060408385031215613cf757613cf6614e33565b5b6000613d0585828601613aae565b9250506020613d1685828601613ac3565b9150509250929050565b60008060008060808587031215613d3a57613d39614e33565b5b6000613d4887828801613aae565b945050602085013567ffffffffffffffff811115613d6957613d68614e2e565b5b613d7587828801613b45565b935050604085013567ffffffffffffffff811115613d9657613d95614e2e565b5b613da287828801613b45565b9250506060613db387828801613b88565b91505092959194509250565b60008060408385031215613dd657613dd5614e33565b5b6000613de485828601613aae565b9250506020613df585828601613b73565b9150509250929050565b600080600060608486031215613e1857613e17614e33565b5b6000613e2686828701613aae565b9350506020613e3786828701613b73565b925050604084013567ffffffffffffffff811115613e5857613e57614e2e565b5b613e6486828701613b45565b9150509250925092565b600060208284031215613e8457613e83614e33565b5b6000613e9284828501613ad8565b91505092915050565b60008060408385031215613eb257613eb1614e33565b5b6000613ec085828601613ad8565b9250506020613ed185828601613aae565b9150509250929050565b600060208284031215613ef157613ef0614e33565b5b6000613eff84828501613aed565b91505092915050565b600060208284031215613f1e57613f1d614e33565b5b6000613f2c84828501613b02565b91505092915050565b600060208284031215613f4b57613f4a614e33565b5b600082013567ffffffffffffffff811115613f6957613f68614e2e565b5b613f7584828501613b45565b91505092915050565b600060208284031215613f9457613f93614e33565b5b6000613fa284828501613b73565b91505092915050565b613fb481614b2f565b82525050565b613fc381614b41565b82525050565b613fd281614b4d565b82525050565b6000613fe3826149d7565b613fed81856149ed565b9350613ffd818560208601614bd0565b61400681614e38565b840191505092915050565b600061401c826149e2565b61402681856149fe565b9350614036818560208601614bd0565b61403f81614e38565b840191505092915050565b6000614055826149e2565b61405f8185614a0f565b935061406f818560208601614bd0565b80840191505092915050565b6000815461408881614c2d565b6140928186614a0f565b945060018216600081146140ad57600181146140be576140f1565b60ff198316865281860193506140f1565b6140c7856149c2565b60005b838110156140e9578154818901526001820191506020810190506140ca565b838801955050505b50505092915050565b60006141076020836149fe565b915061411282614e49565b602082019050919050565b600061412a602b836149fe565b915061413582614e72565b604082019050919050565b600061414d6032836149fe565b915061415882614ec1565b604082019050919050565b60006141706026836149fe565b915061417b82614f10565b604082019050919050565b60006141936025836149fe565b915061419e82614f5f565b604082019050919050565b60006141b6601c836149fe565b91506141c182614fae565b602082019050919050565b60006141d96024836149fe565b91506141e482614fd7565b604082019050919050565b60006141fc6019836149fe565b915061420782615026565b602082019050919050565b600061421f6021836149fe565b915061422a8261504f565b604082019050919050565b60006142426014836149fe565b915061424d8261509e565b602082019050919050565b60006142656029836149fe565b9150614270826150c7565b604082019050919050565b60006142886016836149fe565b915061429382615116565b602082019050919050565b60006142ab602e836149fe565b91506142b68261513f565b604082019050919050565b60006142ce603e836149fe565b91506142d98261518e565b604082019050919050565b60006142f16020836149fe565b91506142fc826151dd565b602082019050919050565b60006143146020836149fe565b915061431f82615206565b602082019050919050565b60006143376018836149fe565b91506143428261522f565b602082019050919050565b600061435a6021836149fe565b915061436582615258565b604082019050919050565b600061437d6011836149fe565b9150614388826152a7565b602082019050919050565b60006143a0602c836149fe565b91506143ab826152d0565b604082019050919050565b60006143c36010836149fe565b91506143ce8261531f565b602082019050919050565b60006143e6601c836149fe565b91506143f182615348565b602082019050919050565b6000614409601783614a0f565b915061441482615371565b601782019050919050565b600061442c602e836149fe565b91506144378261539a565b604082019050919050565b600061444f601183614a0f565b915061445a826153e9565b601182019050919050565b6000614472602f836149fe565b915061447d82615412565b604082019050919050565b61449181614ba3565b82525050565b60006144a3828461404a565b915081905092915050565b60006144ba828561404a565b91506144c6828461404a565b91508190509392505050565b60006144de828461407b565b915081905092915050565b60006144f4826143fc565b9150614500828561404a565b915061450b82614442565b9150614517828461404a565b91508190509392505050565b60006020820190506145386000830184613fab565b92915050565b60006080820190506145536000830187613fab565b6145606020830186613fab565b61456d6040830185614488565b818103606083015261457f8184613fd8565b905095945050505050565b600060208201905061459f6000830184613fba565b92915050565b60006020820190506145ba6000830184613fc9565b92915050565b600060208201905081810360008301526145da8184614011565b905092915050565b600060608201905081810360008301526145fc8186614011565b905061460b6020830185614488565b6146186040830184614488565b949350505050565b60006020820190508181036000830152614639816140fa565b9050919050565b600060208201905081810360008301526146598161411d565b9050919050565b6000602082019050818103600083015261467981614140565b9050919050565b6000602082019050818103600083015261469981614163565b9050919050565b600060208201905081810360008301526146b981614186565b9050919050565b600060208201905081810360008301526146d9816141a9565b9050919050565b600060208201905081810360008301526146f9816141cc565b9050919050565b60006020820190508181036000830152614719816141ef565b9050919050565b6000602082019050818103600083015261473981614212565b9050919050565b6000602082019050818103600083015261475981614235565b9050919050565b6000602082019050818103600083015261477981614258565b9050919050565b600060208201905081810360008301526147998161427b565b9050919050565b600060208201905081810360008301526147b98161429e565b9050919050565b600060208201905081810360008301526147d9816142c1565b9050919050565b600060208201905081810360008301526147f9816142e4565b9050919050565b6000602082019050818103600083015261481981614307565b9050919050565b600060208201905081810360008301526148398161432a565b9050919050565b600060208201905081810360008301526148598161434d565b9050919050565b6000602082019050818103600083015261487981614370565b9050919050565b6000602082019050818103600083015261489981614393565b9050919050565b600060208201905081810360008301526148b9816143b6565b9050919050565b600060208201905081810360008301526148d9816143d9565b9050919050565b600060208201905081810360008301526148f98161441f565b9050919050565b6000602082019050818103600083015261491981614465565b9050919050565b60006020820190506149356000830184614488565b92915050565b6000614945614956565b90506149518282614c5f565b919050565b6000604051905090565b600067ffffffffffffffff82111561497b5761497a614df5565b5b61498482614e38565b9050602081019050919050565b600067ffffffffffffffff8211156149ac576149ab614df5565b5b6149b582614e38565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614a2582614ba3565b9150614a3083614ba3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6557614a64614d0a565b5b828201905092915050565b6000614a7b82614ba3565b9150614a8683614ba3565b925082614a9657614a95614d39565b5b828204905092915050565b6000614aac82614ba3565b9150614ab783614ba3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614af057614aef614d0a565b5b828202905092915050565b6000614b0682614ba3565b9150614b1183614ba3565b925082821015614b2457614b23614d0a565b5b828203905092915050565b6000614b3a82614b83565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614bee578082015181840152602081019050614bd3565b83811115614bfd576000848401525b50505050565b6000614c0e82614ba3565b91506000821415614c2257614c21614d0a565b5b600182039050919050565b60006002820490506001821680614c4557607f821691505b60208210811415614c5957614c58614d68565b5b50919050565b614c6882614e38565b810181811067ffffffffffffffff82111715614c8757614c86614df5565b5b80604052505050565b6000614c9b82614ba3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cce57614ccd614d0a565b5b600182019050919050565b6000614ce482614ba3565b9150614cef83614ba3565b925082614cff57614cfe614d39565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f41646472657373206973206e6f7420746865204f776e6572206f6620746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206e6f742065787069726564000000000000000000000000600082015250565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b7f43616c6c6572206973206e6f742061206d696e74657200000000000000000000600082015250565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f546f6b656e206973207265717569726564000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f546f6b656e206973206578706972656400000000000000000000000000000000600082015250565b7f53657269616c204e756d62657220416c72656164792045786973747300000000600082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61546a81614b2f565b811461547557600080fd5b50565b61548181614b41565b811461548c57600080fd5b50565b61549881614b4d565b81146154a357600080fd5b50565b6154af81614b57565b81146154ba57600080fd5b50565b6154c681614ba3565b81146154d157600080fd5b50565b6154dd81614bad565b81146154e857600080fd5b5056fe68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f5573657220616e642050726f647563742056657269666965642c2057617272616e74792076616c6964a26469706673582212208c02baee8a036c9428b82e6a876c4b290e586cdd84a7cb1dafe5c20876aedd7964736f6c63430008070033",
"linkReferences": {},
"deployedLinkReferences": {}
}