h-agent-swap 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,967 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TokenMarket",
4
+ "sourceName": "contracts/TokenMarket.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_signer",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_route",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "address",
28
+ "name": "user",
29
+ "type": "address"
30
+ },
31
+ {
32
+ "indexed": false,
33
+ "internalType": "uint256",
34
+ "name": "amount",
35
+ "type": "uint256"
36
+ },
37
+ {
38
+ "indexed": false,
39
+ "internalType": "uint256",
40
+ "name": "inAmount",
41
+ "type": "uint256"
42
+ },
43
+ {
44
+ "indexed": false,
45
+ "internalType": "uint256",
46
+ "name": "outAmount",
47
+ "type": "uint256"
48
+ }
49
+ ],
50
+ "name": "Compensate",
51
+ "type": "event"
52
+ },
53
+ {
54
+ "anonymous": false,
55
+ "inputs": [
56
+ {
57
+ "indexed": false,
58
+ "internalType": "address",
59
+ "name": "player",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "indexed": false,
64
+ "internalType": "uint256",
65
+ "name": "signType",
66
+ "type": "uint256"
67
+ },
68
+ {
69
+ "indexed": false,
70
+ "internalType": "address",
71
+ "name": "token",
72
+ "type": "address"
73
+ },
74
+ {
75
+ "indexed": false,
76
+ "internalType": "uint256",
77
+ "name": "amount",
78
+ "type": "uint256"
79
+ },
80
+ {
81
+ "indexed": false,
82
+ "internalType": "uint256",
83
+ "name": "time",
84
+ "type": "uint256"
85
+ },
86
+ {
87
+ "indexed": false,
88
+ "internalType": "bytes",
89
+ "name": "signature",
90
+ "type": "bytes"
91
+ }
92
+ ],
93
+ "name": "Expend",
94
+ "type": "event"
95
+ },
96
+ {
97
+ "anonymous": false,
98
+ "inputs": [
99
+ {
100
+ "indexed": true,
101
+ "internalType": "address",
102
+ "name": "previousOwner",
103
+ "type": "address"
104
+ },
105
+ {
106
+ "indexed": true,
107
+ "internalType": "address",
108
+ "name": "newOwner",
109
+ "type": "address"
110
+ }
111
+ ],
112
+ "name": "OwnershipTransferred",
113
+ "type": "event"
114
+ },
115
+ {
116
+ "stateMutability": "payable",
117
+ "type": "fallback"
118
+ },
119
+ {
120
+ "inputs": [
121
+ {
122
+ "internalType": "uint256",
123
+ "name": "amount",
124
+ "type": "uint256"
125
+ },
126
+ {
127
+ "internalType": "address[]",
128
+ "name": "path",
129
+ "type": "address[]"
130
+ },
131
+ {
132
+ "internalType": "uint256",
133
+ "name": "side",
134
+ "type": "uint256"
135
+ },
136
+ {
137
+ "internalType": "uint256",
138
+ "name": "point",
139
+ "type": "uint256"
140
+ }
141
+ ],
142
+ "name": "computeAmount",
143
+ "outputs": [
144
+ {
145
+ "internalType": "uint256",
146
+ "name": "result",
147
+ "type": "uint256"
148
+ }
149
+ ],
150
+ "stateMutability": "view",
151
+ "type": "function"
152
+ },
153
+ {
154
+ "inputs": [
155
+ {
156
+ "internalType": "bytes",
157
+ "name": "",
158
+ "type": "bytes"
159
+ }
160
+ ],
161
+ "name": "expired",
162
+ "outputs": [
163
+ {
164
+ "internalType": "bool",
165
+ "name": "",
166
+ "type": "bool"
167
+ }
168
+ ],
169
+ "stateMutability": "view",
170
+ "type": "function"
171
+ },
172
+ {
173
+ "inputs": [
174
+ {
175
+ "internalType": "address",
176
+ "name": "inToken",
177
+ "type": "address"
178
+ },
179
+ {
180
+ "internalType": "address",
181
+ "name": "outToken",
182
+ "type": "address"
183
+ },
184
+ {
185
+ "internalType": "address[]",
186
+ "name": "path",
187
+ "type": "address[]"
188
+ },
189
+ {
190
+ "internalType": "uint256",
191
+ "name": "outAmount",
192
+ "type": "uint256"
193
+ },
194
+ {
195
+ "internalType": "address",
196
+ "name": "target",
197
+ "type": "address"
198
+ }
199
+ ],
200
+ "name": "fundRead",
201
+ "outputs": [
202
+ {
203
+ "components": [
204
+ {
205
+ "internalType": "address",
206
+ "name": "feeReceipt",
207
+ "type": "address"
208
+ },
209
+ {
210
+ "internalType": "int256",
211
+ "name": "feeRate",
212
+ "type": "int256"
213
+ },
214
+ {
215
+ "internalType": "address",
216
+ "name": "rewardToken",
217
+ "type": "address"
218
+ },
219
+ {
220
+ "internalType": "int256",
221
+ "name": "reward",
222
+ "type": "int256"
223
+ },
224
+ {
225
+ "internalType": "uint256",
226
+ "name": "price",
227
+ "type": "uint256"
228
+ },
229
+ {
230
+ "internalType": "int256",
231
+ "name": "feeMin",
232
+ "type": "int256"
233
+ },
234
+ {
235
+ "internalType": "int256",
236
+ "name": "feeMax",
237
+ "type": "int256"
238
+ },
239
+ {
240
+ "internalType": "int256",
241
+ "name": "rewardMin",
242
+ "type": "int256"
243
+ },
244
+ {
245
+ "internalType": "int256",
246
+ "name": "rewardMax",
247
+ "type": "int256"
248
+ },
249
+ {
250
+ "internalType": "uint256",
251
+ "name": "range",
252
+ "type": "uint256"
253
+ },
254
+ {
255
+ "internalType": "int256",
256
+ "name": "feeChange",
257
+ "type": "int256"
258
+ },
259
+ {
260
+ "internalType": "int256",
261
+ "name": "rewardChange",
262
+ "type": "int256"
263
+ }
264
+ ],
265
+ "internalType": "struct TokenMarket.TradeConfig",
266
+ "name": "config",
267
+ "type": "tuple"
268
+ },
269
+ {
270
+ "internalType": "uint256",
271
+ "name": "taxAmount",
272
+ "type": "uint256"
273
+ },
274
+ {
275
+ "internalType": "uint256",
276
+ "name": "backAmount",
277
+ "type": "uint256"
278
+ },
279
+ {
280
+ "internalType": "uint256",
281
+ "name": "outReal",
282
+ "type": "uint256"
283
+ },
284
+ {
285
+ "internalType": "uint256",
286
+ "name": "feeAmount",
287
+ "type": "uint256"
288
+ }
289
+ ],
290
+ "stateMutability": "view",
291
+ "type": "function"
292
+ },
293
+ {
294
+ "inputs": [
295
+ {
296
+ "internalType": "uint256",
297
+ "name": "outAmount",
298
+ "type": "uint256"
299
+ },
300
+ {
301
+ "internalType": "address[]",
302
+ "name": "path",
303
+ "type": "address[]"
304
+ }
305
+ ],
306
+ "name": "inCompute",
307
+ "outputs": [
308
+ {
309
+ "internalType": "uint256",
310
+ "name": "result",
311
+ "type": "uint256"
312
+ }
313
+ ],
314
+ "stateMutability": "view",
315
+ "type": "function"
316
+ },
317
+ {
318
+ "inputs": [
319
+ {
320
+ "internalType": "address",
321
+ "name": "inToken",
322
+ "type": "address"
323
+ },
324
+ {
325
+ "internalType": "address",
326
+ "name": "outToken",
327
+ "type": "address"
328
+ },
329
+ {
330
+ "internalType": "address[]",
331
+ "name": "path",
332
+ "type": "address[]"
333
+ }
334
+ ],
335
+ "name": "onlyRate",
336
+ "outputs": [
337
+ {
338
+ "components": [
339
+ {
340
+ "internalType": "address",
341
+ "name": "feeReceipt",
342
+ "type": "address"
343
+ },
344
+ {
345
+ "internalType": "int256",
346
+ "name": "feeRate",
347
+ "type": "int256"
348
+ },
349
+ {
350
+ "internalType": "address",
351
+ "name": "rewardToken",
352
+ "type": "address"
353
+ },
354
+ {
355
+ "internalType": "int256",
356
+ "name": "reward",
357
+ "type": "int256"
358
+ },
359
+ {
360
+ "internalType": "uint256",
361
+ "name": "price",
362
+ "type": "uint256"
363
+ },
364
+ {
365
+ "internalType": "int256",
366
+ "name": "feeMin",
367
+ "type": "int256"
368
+ },
369
+ {
370
+ "internalType": "int256",
371
+ "name": "feeMax",
372
+ "type": "int256"
373
+ },
374
+ {
375
+ "internalType": "int256",
376
+ "name": "rewardMin",
377
+ "type": "int256"
378
+ },
379
+ {
380
+ "internalType": "int256",
381
+ "name": "rewardMax",
382
+ "type": "int256"
383
+ },
384
+ {
385
+ "internalType": "uint256",
386
+ "name": "range",
387
+ "type": "uint256"
388
+ },
389
+ {
390
+ "internalType": "int256",
391
+ "name": "feeChange",
392
+ "type": "int256"
393
+ },
394
+ {
395
+ "internalType": "int256",
396
+ "name": "rewardChange",
397
+ "type": "int256"
398
+ }
399
+ ],
400
+ "internalType": "struct TokenMarket.TradeConfig",
401
+ "name": "config",
402
+ "type": "tuple"
403
+ },
404
+ {
405
+ "internalType": "uint256",
406
+ "name": "decimals",
407
+ "type": "uint256"
408
+ },
409
+ {
410
+ "internalType": "uint256",
411
+ "name": "price",
412
+ "type": "uint256"
413
+ }
414
+ ],
415
+ "stateMutability": "view",
416
+ "type": "function"
417
+ },
418
+ {
419
+ "inputs": [
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "inAmount",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "address[]",
427
+ "name": "path",
428
+ "type": "address[]"
429
+ }
430
+ ],
431
+ "name": "outCompute",
432
+ "outputs": [
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "result",
436
+ "type": "uint256"
437
+ }
438
+ ],
439
+ "stateMutability": "view",
440
+ "type": "function"
441
+ },
442
+ {
443
+ "inputs": [],
444
+ "name": "owner",
445
+ "outputs": [
446
+ {
447
+ "internalType": "address",
448
+ "name": "",
449
+ "type": "address"
450
+ }
451
+ ],
452
+ "stateMutability": "view",
453
+ "type": "function"
454
+ },
455
+ {
456
+ "inputs": [
457
+ {
458
+ "internalType": "uint256",
459
+ "name": "amount",
460
+ "type": "uint256"
461
+ },
462
+ {
463
+ "internalType": "uint256",
464
+ "name": "rate",
465
+ "type": "uint256"
466
+ }
467
+ ],
468
+ "name": "percentage",
469
+ "outputs": [
470
+ {
471
+ "internalType": "uint256",
472
+ "name": "result",
473
+ "type": "uint256"
474
+ }
475
+ ],
476
+ "stateMutability": "view",
477
+ "type": "function"
478
+ },
479
+ {
480
+ "inputs": [
481
+ {
482
+ "internalType": "uint256",
483
+ "name": "point",
484
+ "type": "uint256"
485
+ },
486
+ {
487
+ "internalType": "uint256",
488
+ "name": "amount",
489
+ "type": "uint256"
490
+ },
491
+ {
492
+ "internalType": "bool",
493
+ "name": "isplus",
494
+ "type": "bool"
495
+ }
496
+ ],
497
+ "name": "pointHandle",
498
+ "outputs": [
499
+ {
500
+ "internalType": "uint256",
501
+ "name": "result",
502
+ "type": "uint256"
503
+ }
504
+ ],
505
+ "stateMutability": "view",
506
+ "type": "function"
507
+ },
508
+ {
509
+ "inputs": [],
510
+ "name": "pointMax",
511
+ "outputs": [
512
+ {
513
+ "internalType": "uint256",
514
+ "name": "",
515
+ "type": "uint256"
516
+ }
517
+ ],
518
+ "stateMutability": "view",
519
+ "type": "function"
520
+ },
521
+ {
522
+ "inputs": [],
523
+ "name": "renounceOwnership",
524
+ "outputs": [],
525
+ "stateMutability": "nonpayable",
526
+ "type": "function"
527
+ },
528
+ {
529
+ "inputs": [
530
+ {
531
+ "internalType": "address[]",
532
+ "name": "_array",
533
+ "type": "address[]"
534
+ }
535
+ ],
536
+ "name": "reverseArray",
537
+ "outputs": [
538
+ {
539
+ "internalType": "address[]",
540
+ "name": "",
541
+ "type": "address[]"
542
+ }
543
+ ],
544
+ "stateMutability": "pure",
545
+ "type": "function"
546
+ },
547
+ {
548
+ "inputs": [],
549
+ "name": "route",
550
+ "outputs": [
551
+ {
552
+ "internalType": "address",
553
+ "name": "",
554
+ "type": "address"
555
+ }
556
+ ],
557
+ "stateMutability": "view",
558
+ "type": "function"
559
+ },
560
+ {
561
+ "inputs": [
562
+ {
563
+ "internalType": "address",
564
+ "name": "",
565
+ "type": "address"
566
+ },
567
+ {
568
+ "internalType": "address",
569
+ "name": "",
570
+ "type": "address"
571
+ }
572
+ ],
573
+ "name": "runConfig",
574
+ "outputs": [
575
+ {
576
+ "internalType": "address",
577
+ "name": "feeReceipt",
578
+ "type": "address"
579
+ },
580
+ {
581
+ "internalType": "int256",
582
+ "name": "feeRate",
583
+ "type": "int256"
584
+ },
585
+ {
586
+ "internalType": "address",
587
+ "name": "rewardToken",
588
+ "type": "address"
589
+ },
590
+ {
591
+ "internalType": "int256",
592
+ "name": "reward",
593
+ "type": "int256"
594
+ },
595
+ {
596
+ "internalType": "uint256",
597
+ "name": "price",
598
+ "type": "uint256"
599
+ },
600
+ {
601
+ "internalType": "int256",
602
+ "name": "feeMin",
603
+ "type": "int256"
604
+ },
605
+ {
606
+ "internalType": "int256",
607
+ "name": "feeMax",
608
+ "type": "int256"
609
+ },
610
+ {
611
+ "internalType": "int256",
612
+ "name": "rewardMin",
613
+ "type": "int256"
614
+ },
615
+ {
616
+ "internalType": "int256",
617
+ "name": "rewardMax",
618
+ "type": "int256"
619
+ },
620
+ {
621
+ "internalType": "uint256",
622
+ "name": "range",
623
+ "type": "uint256"
624
+ },
625
+ {
626
+ "internalType": "int256",
627
+ "name": "feeChange",
628
+ "type": "int256"
629
+ },
630
+ {
631
+ "internalType": "int256",
632
+ "name": "rewardChange",
633
+ "type": "int256"
634
+ }
635
+ ],
636
+ "stateMutability": "view",
637
+ "type": "function"
638
+ },
639
+ {
640
+ "inputs": [
641
+ {
642
+ "internalType": "address",
643
+ "name": "_route",
644
+ "type": "address"
645
+ }
646
+ ],
647
+ "name": "setting",
648
+ "outputs": [],
649
+ "stateMutability": "nonpayable",
650
+ "type": "function"
651
+ },
652
+ {
653
+ "inputs": [],
654
+ "name": "signer",
655
+ "outputs": [
656
+ {
657
+ "internalType": "address",
658
+ "name": "",
659
+ "type": "address"
660
+ }
661
+ ],
662
+ "stateMutability": "view",
663
+ "type": "function"
664
+ },
665
+ {
666
+ "inputs": [
667
+ {
668
+ "internalType": "address[]",
669
+ "name": "path",
670
+ "type": "address[]"
671
+ },
672
+ {
673
+ "internalType": "uint256",
674
+ "name": "inAmount",
675
+ "type": "uint256"
676
+ },
677
+ {
678
+ "internalType": "uint256",
679
+ "name": "outAmount",
680
+ "type": "uint256"
681
+ },
682
+ {
683
+ "internalType": "uint256",
684
+ "name": "side",
685
+ "type": "uint256"
686
+ },
687
+ {
688
+ "internalType": "uint256",
689
+ "name": "deadline",
690
+ "type": "uint256"
691
+ },
692
+ {
693
+ "internalType": "uint256",
694
+ "name": "point",
695
+ "type": "uint256"
696
+ }
697
+ ],
698
+ "name": "swapToken",
699
+ "outputs": [],
700
+ "stateMutability": "payable",
701
+ "type": "function"
702
+ },
703
+ {
704
+ "inputs": [
705
+ {
706
+ "internalType": "address",
707
+ "name": "",
708
+ "type": "address"
709
+ },
710
+ {
711
+ "internalType": "address",
712
+ "name": "",
713
+ "type": "address"
714
+ }
715
+ ],
716
+ "name": "taxConfig",
717
+ "outputs": [
718
+ {
719
+ "internalType": "address",
720
+ "name": "taxReceipt",
721
+ "type": "address"
722
+ },
723
+ {
724
+ "internalType": "uint256",
725
+ "name": "tax",
726
+ "type": "uint256"
727
+ }
728
+ ],
729
+ "stateMutability": "view",
730
+ "type": "function"
731
+ },
732
+ {
733
+ "inputs": [
734
+ {
735
+ "internalType": "address",
736
+ "name": "",
737
+ "type": "address"
738
+ },
739
+ {
740
+ "internalType": "address",
741
+ "name": "",
742
+ "type": "address"
743
+ }
744
+ ],
745
+ "name": "tokenAmounts",
746
+ "outputs": [
747
+ {
748
+ "internalType": "uint256",
749
+ "name": "outAmount",
750
+ "type": "uint256"
751
+ },
752
+ {
753
+ "internalType": "uint256",
754
+ "name": "inAmount",
755
+ "type": "uint256"
756
+ }
757
+ ],
758
+ "stateMutability": "view",
759
+ "type": "function"
760
+ },
761
+ {
762
+ "inputs": [
763
+ {
764
+ "internalType": "address",
765
+ "name": "_token",
766
+ "type": "address"
767
+ },
768
+ {
769
+ "internalType": "address",
770
+ "name": "_recipient",
771
+ "type": "address"
772
+ },
773
+ {
774
+ "internalType": "uint256",
775
+ "name": "_amount",
776
+ "type": "uint256"
777
+ }
778
+ ],
779
+ "name": "tokenSend",
780
+ "outputs": [],
781
+ "stateMutability": "nonpayable",
782
+ "type": "function"
783
+ },
784
+ {
785
+ "inputs": [
786
+ {
787
+ "internalType": "address",
788
+ "name": "newOwner",
789
+ "type": "address"
790
+ }
791
+ ],
792
+ "name": "transferOwnership",
793
+ "outputs": [],
794
+ "stateMutability": "nonpayable",
795
+ "type": "function"
796
+ },
797
+ {
798
+ "inputs": [
799
+ {
800
+ "internalType": "address",
801
+ "name": "tokenIn",
802
+ "type": "address"
803
+ },
804
+ {
805
+ "internalType": "address",
806
+ "name": "tokenOut",
807
+ "type": "address"
808
+ },
809
+ {
810
+ "components": [
811
+ {
812
+ "internalType": "address",
813
+ "name": "feeReceipt",
814
+ "type": "address"
815
+ },
816
+ {
817
+ "internalType": "int256",
818
+ "name": "feeRate",
819
+ "type": "int256"
820
+ },
821
+ {
822
+ "internalType": "address",
823
+ "name": "rewardToken",
824
+ "type": "address"
825
+ },
826
+ {
827
+ "internalType": "int256",
828
+ "name": "reward",
829
+ "type": "int256"
830
+ },
831
+ {
832
+ "internalType": "uint256",
833
+ "name": "price",
834
+ "type": "uint256"
835
+ },
836
+ {
837
+ "internalType": "int256",
838
+ "name": "feeMin",
839
+ "type": "int256"
840
+ },
841
+ {
842
+ "internalType": "int256",
843
+ "name": "feeMax",
844
+ "type": "int256"
845
+ },
846
+ {
847
+ "internalType": "int256",
848
+ "name": "rewardMin",
849
+ "type": "int256"
850
+ },
851
+ {
852
+ "internalType": "int256",
853
+ "name": "rewardMax",
854
+ "type": "int256"
855
+ },
856
+ {
857
+ "internalType": "uint256",
858
+ "name": "range",
859
+ "type": "uint256"
860
+ },
861
+ {
862
+ "internalType": "int256",
863
+ "name": "feeChange",
864
+ "type": "int256"
865
+ },
866
+ {
867
+ "internalType": "int256",
868
+ "name": "rewardChange",
869
+ "type": "int256"
870
+ }
871
+ ],
872
+ "internalType": "struct TokenMarket.TradeConfig",
873
+ "name": "_config",
874
+ "type": "tuple"
875
+ },
876
+ {
877
+ "components": [
878
+ {
879
+ "internalType": "address",
880
+ "name": "taxReceipt",
881
+ "type": "address"
882
+ },
883
+ {
884
+ "internalType": "uint256",
885
+ "name": "tax",
886
+ "type": "uint256"
887
+ }
888
+ ],
889
+ "internalType": "struct TokenMarket.TaxConfig",
890
+ "name": "_tax",
891
+ "type": "tuple"
892
+ }
893
+ ],
894
+ "name": "updateConfig",
895
+ "outputs": [],
896
+ "stateMutability": "nonpayable",
897
+ "type": "function"
898
+ },
899
+ {
900
+ "inputs": [
901
+ {
902
+ "internalType": "address",
903
+ "name": "_signer",
904
+ "type": "address"
905
+ }
906
+ ],
907
+ "name": "verifySign",
908
+ "outputs": [],
909
+ "stateMutability": "nonpayable",
910
+ "type": "function"
911
+ },
912
+ {
913
+ "inputs": [],
914
+ "name": "weth",
915
+ "outputs": [
916
+ {
917
+ "internalType": "address",
918
+ "name": "",
919
+ "type": "address"
920
+ }
921
+ ],
922
+ "stateMutability": "view",
923
+ "type": "function"
924
+ },
925
+ {
926
+ "inputs": [
927
+ {
928
+ "internalType": "uint256",
929
+ "name": "signType",
930
+ "type": "uint256"
931
+ },
932
+ {
933
+ "internalType": "address",
934
+ "name": "_token",
935
+ "type": "address"
936
+ },
937
+ {
938
+ "internalType": "uint256",
939
+ "name": "amount",
940
+ "type": "uint256"
941
+ },
942
+ {
943
+ "internalType": "uint256",
944
+ "name": "deadline",
945
+ "type": "uint256"
946
+ },
947
+ {
948
+ "internalType": "bytes",
949
+ "name": "signature",
950
+ "type": "bytes"
951
+ }
952
+ ],
953
+ "name": "withdrawal",
954
+ "outputs": [],
955
+ "stateMutability": "nonpayable",
956
+ "type": "function"
957
+ },
958
+ {
959
+ "stateMutability": "payable",
960
+ "type": "receive"
961
+ }
962
+ ],
963
+ "bytecode": "0x60806040526305f5e1006009553480156200001957600080fd5b5060405162004d9538038062004d958339810160408190526200003c91620001ef565b620000473362000079565b60018055600280546001600160a01b0319166001600160a01b0384161790556200007181620000c9565b50506200024c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166200012f5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f757465206164647265604482015261737360f01b606482015260840160405180910390fd5b600580546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af919062000227565b600480546001600160a01b0319166001600160a01b039290921691909117905550565b80516001600160a01b0381168114620001ea57600080fd5b919050565b600080604083850312156200020357600080fd5b6200020e83620001d2565b91506200021e60208401620001d2565b90509250929050565b6000602082840312156200023a57600080fd5b6200024582620001d2565b9392505050565b614b39806200025c6000396000f3fe6080604052600436106101825760003560e01c80635ff530f2116100d557806381f3fdc311610084578063aa5d448f11610061578063aa5d448f146105ad578063d96661ef146105cd578063f2fde38b146105ed578063fe8691b41461060d57005b806381f3fdc31461054d5780638da5cb5b1461057c578063a6a3694a1461059a57005b80636f151a38116100b25780636f151a38146104f8578063715018a614610518578063744cfdd91461052d57005b80635ff530f21461048757806362a76603146104a757806363c102b4146104d857005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146103fc5780633fc8cef3146104475780635c8181211461046757005b8063238ac933146102ab5780632926e5de146102e35780632bd2c18d146103dc57005b80630fcc40c41161015f5780630fcc40c41461023e5780631b1534011461026b5780631f8c24de1461028b57005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461022857005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613cf5565b610661565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b506102096101d9366004613d3c565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101b5565b34801561023457600080fd5b506101ab60095481565b34801561024a57600080fd5b5061025e610259366004613e97565b610682565b6040516101b59190613f18565b34801561027757600080fd5b50610189610286366004613f2b565b610752565b34801561029757600080fd5b506101896102a6366004613fdc565b61080d565b3480156102b757600080fd5b506002546102cb906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102ef57600080fd5b506103726102fe366004613d3c565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103e857600080fd5b506101ab6103f7366004614049565b61088d565b34801561040857600080fd5b506104376104173660046140a0565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045357600080fd5b506004546102cb906001600160a01b031681565b34801561047357600080fd5b506101ab6104823660046140e3565b6108e2565b34801561049357600080fd5b506101ab6104a236600461411c565b61092a565b3480156104b357600080fd5b506104c76104c2366004614163565b610a6e565b6040516101b5959493929190614275565b3480156104e457600080fd5b506101896104f3366004614303565b610b34565b34801561050457600080fd5b5061018961051336600461441e565b610d45565b34801561052457600080fd5b50610189610dab565b34801561053957600080fd5b506101ab61054836600461411c565b610e11565b34801561055957600080fd5b5061056d61056836600461443b565b610f3b565b6040516101b59392919061449d565b34801561058857600080fd5b506000546001600160a01b03166102cb565b6101896105a83660046144bf565b61130b565b3480156105b957600080fd5b506101896105c836600461441e565b6115d2565b3480156105d957600080fd5b506005546102cb906001600160a01b031681565b3480156105f957600080fd5b5061018961060836600461441e565b611635565b34801561061957600080fd5b5061064c610628366004613d3c565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b60095460009061067b906106758585611714565b90611726565b9392505050565b805160609060008167ffffffffffffffff8111156106a2576106a2613d75565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b5090506000825b6001811061074857856106e6600183614553565b815181106106f6576106f661456a565b60200260200101518383815181106107105761071061456a565b6001600160a01b03909216602092830291909101909101528161073281614599565b9250508080610740906145b3565b9150506106d2565b5090949350505050565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107bc838383611732565b6108085760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107a8565b505050565b610815611769565b61082285858585856117c2565b61082e858585846119ae565b81421061087d5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107a8565b61088660018055565b5050505050565b600080808481036108ba576108a2878761092a565b91506108b0848360006108e2565b91508192506108d8565b6108c48787610e11565b90506108d2848260016108e2565b90508092505b5050949350505050565b600060018215610900576009546108f99086611a1d565b9050610910565b60095461090d9086611a29565b90505b600954610921906106758684611714565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061097a90879087906004016145ca565b600060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109bf91908101906145e3565b9050806109d760018351611a2990919063ffffffff16565b815181106109e7576109e761456a565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107a8565b5092915050565b610ae460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610af98c8c8c8c611a35565b92995090945092509050610b0d8984611a29565b9850610b1d8c8c8b8b8686611e19565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b600082606001511215610be35760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107a8565b600082602001511215610c385760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107a8565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a0151600284018054918e1691841691909117905560608a0151600384015560808a0151600484015560a08a0151600584015560c08a0151600684015560e08a0151958301959095556101008901516008808401919091556101208a015160098401556101408a0151600a84015561016090990151600b909201919091559484529581528583209683529586529390208251815496169590911694909417845590910151910155565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da88161209f565b50565b6000546001600160a01b03163314610e055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610e0f6000612154565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610e6190879087906004016145ca565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea691908101906145e3565b905080600081518110610ebb57610ebb61456a565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107a8565b610fb160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d19190614674565b60ff1691506110ea6110e483600a61477b565b8561092a565b9050600080828560800151111561113c5761012085015160808601516009546111138683614553565b61111d9190614787565b61112791906147a6565b61113191906147a6565b905060009150611185565b84608001518311156111855761012085015160808601516009546111608287614553565b61116a9190614787565b61117491906147a6565b61117e91906147a6565b9050600191505b60008113156113005760808501839052610140850151610160860151836111bd576111af826147e1565b91506111ba816147e1565b90505b600082126112005760208701516111d48484614819565b6111de91906148d5565b6020880181905260c088015112156111fb5760c087015160208801525b61125c565b86602001518760a0015184611214856121bc565b61121e9190614819565b61122891906148d5565b131561123d5760a0870151602088015261125c565b602087015161124c8484614819565b61125691906148d5565b60208801525b600081126112a15760608701516112738483614819565b61127d91906148d5565b60608801819052610100880151121561129c5761010087015160608801525b6112fd565b86606001518760e00151846112b5846121bc565b6112bf9190614819565b6112c991906148d5565b13156112de5760e087015160608801526112fd565b60608701516112ed8483614819565b6112f791906148d5565b60608801525b50505b505093509350939050565b611313611769565b3332146113625760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107a8565b333b156113d65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b826000036113fd576113e8858761092a565b93506113f6818560006108e2565b9350611418565b6114078487610e11565b9450611415818660016108e2565b94505b60008660008151811061142d5761142d61456a565b60200260200101519050600087600189516114489190614553565b815181106114585761145861456a565b6020908102919091018101513360009081526006835260408082206001600160a01b038716835290935291822060010180549193508992909161149c908490614949565b92505081905550600060405180604001604052806114b9856121d8565b8152602001846001600160a01b03168152509050600060405180604001604052806114e3856121d8565b81526001600160a01b03851660209091015282519091506003036115125761150d8433308c612211565b611587565b8834146115875760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107a8565b61159284848c612381565b50506115a382828b8b8e8c8c612612565b6115ae84848a6128bb565b6115ba84848c8b6129eb565b505050505050506115ca60018055565b505050505050565b6000546001600160a01b0316331461162c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612dff565b6000546001600160a01b0316331461168f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b6001600160a01b03811661170b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107a8565b610da881612154565b600061067b8284614787565b92915050565b600061067b82846147a6565b60006001600160a01b0384166117545761174c8383612f64565b50600161067b565b61175f84848461307d565b5060019392505050565b6002600154036117bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107a8565b6002600155565b6003816040516117d29190614991565b9081526040519081900360200190205460ff16156118325760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107a8565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906118f690836131e5565b6002549091506001600160a01b038083169116146119565760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107a8565b60016003836040516119689190614991565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b0383166119cb576119c63383612f64565b6119d6565b6119d683338461307d565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a0f969594939291906149ad565b60405180910390a150505050565b600061067b8284614949565b600061067b8284614553565b611aab60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614674565b60ff169150611be6611be083600a61477b565b8761092a565b90506000808286608001511115611c38576101208601516080870151600954611c0f8683614553565b611c199190614787565b611c2391906147a6565b611c2d91906147a6565b905060009150611c81565b8560800151831115611c81576101208601516080870151600954611c5c8287614553565b611c669190614787565b611c7091906147a6565b611c7a91906147a6565b9050600191505b6000811315611dfc576080860183905261014086015161016087015183611cb957611cab826147e1565b9150611cb6816147e1565b90505b60008212611cfc576020880151611cd08484614819565b611cda91906148d5565b6020890181905260c08901511215611cf75760c088015160208901525b611d58565b87602001518860a0015184611d10856121bc565b611d1a9190614819565b611d2491906148d5565b1315611d395760a08801516020890152611d58565b6020880151611d488484614819565b611d5291906148d5565b60208901525b60008112611d9d576060880151611d6f8483614819565b611d7991906148d5565b606089018190526101008901511215611d985761010088015160608901525b611df9565b87606001518860e0015184611db1846121bc565b611dbb9190614819565b611dc591906148d5565b1315611dda5760e08801516060890152611df9565b6060880151611de98483614819565b611df391906148d5565b60608901525b50505b611e0a878760200151610661565b94505050945094509450949050565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082518084018452815487168152600191820154818601529589168552600684528285209185529252822090810154905491928392839211611e9157611e8a888260200151610661565b9350612086565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611ec8908a90614949565b10611f1d576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611e8a9190611f09908b90614949565b611f139190614553565b8260200151610661565b6000611f2a87600a61477b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015611f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb09190614a10565b611fba9190614787565b611fc491906147a6565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612001908c90614949565b61200b9190614949565b1015612084576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612044908b90614949565b61204e9190614949565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546120819190614553565b93505b505b6120908885611a29565b91505096509650969350505050565b6001600160a01b03811661211a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156121d4576121cf826147e1565b611720565b5090565b600060036001600160a01b0383166121f257506001611720565b6004546001600160a01b03908116908416036117205750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916122a39190614991565b6000604051808303816000865af19150503d80600081146122e0576040519150601f19603f3d011682016040523d82523d6000602084013e6122e5565b606091505b509150915081801561230f57508051158061230f57508080602001905181019061230f9190614a29565b6115ca5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107a8565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a49190614674565b60ff16905060006124b9611be083600a61477b565b90506000836101200151116125105760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107a8565b60008360800151116125645760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107a8565b80836080015111156125b15761012083015160808401516009546125888483614553565b6125929190614787565b61259c91906147a6565b6125a691906147a6565b9450600093506125fa565b82608001518111156125fa5761012083015160808401516009546125d58285614553565b6125df9190614787565b6125e991906147a6565b6125f391906147a6565b9450600193505b6126078888838888613209565b505050935093915050565b865160030361263757602087015160055461263791906001600160a01b0316876135af565b86516003148015612649575085516003145b8015612653575081155b156126f6576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906126a99088908890889030908890600401614a46565b6000604051808303816000875af11580156126c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126f091908101906145e3565b506128b2565b86516003148015612708575085516003145b80156127145750816001145b1561276a576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906126a99087908990889030908890600401614a46565b865160031480156127875750855160021480612787575085516001145b80156127935750816001145b156127e9576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906126a99087908990889030908890600401614a46565b8651600214806127fa575086516001145b8015612807575085516003145b80156128135750816001145b156128b2576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612869908890889030908890600401614a82565b60006040518083038185885af1158015612887573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526128b091908101906145e3565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b90910154610160840152612973908490610661565b90506000604051806040016040528061298b876121d8565b81526001600160a01b03871660209091015280519091506003036129ce5782516001600160a01b031630146129c9576129c98584600001518461307d565b6115ca565b82516001600160a01b031630146115ca5782516115ca9083613717565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151808301909252805490941681526001909301549083015290819081908180612a3d8a8a8a8a6137fa565b80935081945082995050505060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206001015460066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000015410612afb57612af4878460200151610661565b9550612d8c565b3360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612b30908990614949565b10612b83573360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612af49190612b6f908a90614949565b612b799190614553565b8460200151610661565b6000612b9082600a61477b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038e16906370a0823190602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190614a10565b612c1d9190614787565b612c2791906147a6565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054919250908290612c62908b90614949565b612c6c9190614949565b1015612d8a573360009081526006602090815260408083206001600160a01b038e1684529091529020548190612ca3908a90614949565b612cad9190614949565b3360009081526006602090815260408083206001600160a01b038f168452909152902060010154612cde9190614553565b95508515612d1f573360009081526006602090815260408083206001600160a01b038e16845290915281208054889290612d19908490614949565b90915550505b3360008181526006602090815260408083206001600160a01b038f1684528252918290206001810154905483519485529184018a9052838301526060830152517fc930abf5e8abe924a0cf504756701d8e56d8a1be02e18a08c502c484de6690d49181900360800190a15b505b612d968787611a29565b93508515612dad57612dad8984600001518861307d565b612db889338661307d565b3360009081526006602090815260408083206001600160a01b038d16845290915281208054869290612deb908490614949565b925050819055505050509450945094915050565b6001600160a01b038116612e7b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f299190614ab7565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612fb45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613001576040519150601f19603f3d011682016040523d82523d6000602084013e613006565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a8565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916131079190614991565b6000604051808303816000865af19150503d8060008114613144576040519150601f19603f3d011682016040523d82523d6000602084013e613149565b606091505b50915091508180156131735750805115806131735750808060200190518101906131739190614a29565b6108865760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107a8565b60008060006131f48585613a87565b9150915061320181613acc565b509392505050565b6000821315610886576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261326557613257826147e1565b9150613262816147e1565b90505b60008212613316576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132a08584614819565b6132aa91906148d5565b6001600160a01b038881166000908152600760209081526040808320938b1683529290522060018101829055600601541215613311576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b613406565b6001600160a01b038781166000908152600760209081526040808320938a16835292905220600181015460059091015485613350856121bc565b61335a9190614819565b61336491906148d5565b131561339f576001600160a01b038781166000908152600760209081526040808320938a168352929052206005810154600190910155613406565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546133d28584614819565b6133dc91906148d5565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b600081126134b7576001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546134418583614819565b61344b91906148d5565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600381018290556008015412156134b2576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b6128b2565b6001600160a01b038781166000908152600760208181526040808420948b1684529390529190206003810154910154856134f0846121bc565b6134fa9190614819565b61350491906148d5565b1315613540576001600160a01b038781166000908152600760208181526040808420948b168452939052919020908101546003909101556128b2565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546135738583614819565b61357d91906148d5565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916136399190614991565b6000604051808303816000865af19150503d8060008114613676576040519150601f19603f3d011682016040523d82523d6000602084013e61367b565b606091505b50915091508180156136a55750805115806136a55750808060200190518101906136a59190614a29565b6108865760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107a8565b604080516000808252602082019092526001600160a01b0384169083906040516137419190614991565b60006040518083038185875af1925050503d806000811461377e576040519150601f19603f3d011682016040523d82523d6000602084013e613783565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107a8565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b90930154610160840152909182918291906138b9908690610661565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561391c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139409190614a10565b10156139b45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107a8565b60006139c4868360600151610661565b11156139e6576139e68160400151336139e1888560600151610661565b61307d565b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a489190614674565b60ff169150613a5b611be083600a61477b565b92506000613a6d868360200151610661565b9050613a798682611a29565b945050509450945094915050565b6000808251604103613abd5760208301516040840151606085015160001a613ab187828585613c31565b94509450505050613ac5565b506000905060025b9250929050565b6000816004811115613ae057613ae0614ad4565b03613ae85750565b6001816004811115613afc57613afc614ad4565b03613b495760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107a8565b6002816004811115613b5d57613b5d614ad4565b03613baa5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107a8565b6003816004811115613bbe57613bbe614ad4565b03610da85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613c685750600090506003613cec565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613cbc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce557600060019250925050613cec565b9150600090505b94509492505050565b60008060408385031215613d0857600080fd5b50508035926020909101359150565b6001600160a01b0381168114610da857600080fd5b8035613d3781613d17565b919050565b60008060408385031215613d4f57600080fd5b8235613d5a81613d17565b91506020830135613d6a81613d17565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613dc857613dc8613d75565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613df757613df7613d75565b604052919050565b600067ffffffffffffffff821115613e1957613e19613d75565b5060051b60200190565b600082601f830112613e3457600080fd5b81356020613e49613e4483613dff565b613dce565b82815260059290921b84018101918181019086841115613e6857600080fd5b8286015b84811015613e8c578035613e7f81613d17565b8352918301918301613e6c565b509695505050505050565b600060208284031215613ea957600080fd5b813567ffffffffffffffff811115613ec057600080fd5b613ecc84828501613e23565b949350505050565b600081518084526020808501945080840160005b83811015613f0d5781516001600160a01b031687529582019590820190600101613ee8565b509495945050505050565b60208152600061067b6020830184613ed4565b600080600060608486031215613f4057600080fd5b8335613f4b81613d17565b92506020840135613f5b81613d17565b929592945050506040919091013590565b600082601f830112613f7d57600080fd5b813567ffffffffffffffff811115613f9757613f97613d75565b613faa6020601f19601f84011601613dce565b818152846020838601011115613fbf57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215613ff457600080fd5b85359450602086013561400681613d17565b93506040860135925060608601359150608086013567ffffffffffffffff81111561403057600080fd5b61403c88828901613f6c565b9150509295509295909350565b6000806000806080858703121561405f57600080fd5b84359350602085013567ffffffffffffffff81111561407d57600080fd5b61408987828801613e23565b949794965050505060408301359260600135919050565b6000602082840312156140b257600080fd5b813567ffffffffffffffff8111156140c957600080fd5b613ecc84828501613f6c565b8015158114610da857600080fd5b6000806000606084860312156140f857600080fd5b83359250602084013591506040840135614111816140d5565b809150509250925092565b6000806040838503121561412f57600080fd5b82359150602083013567ffffffffffffffff81111561414d57600080fd5b61415985828601613e23565b9150509250929050565b600080600080600060a0868803121561417b57600080fd5b853561418681613d17565b9450602086013561419681613d17565b9350604086013567ffffffffffffffff8111156141b257600080fd5b6141be88828901613e23565b9350506060860135915060808601356141d681613d17565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161421560408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161428482886141e4565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000604082840312156142bc57600080fd5b6040516040810181811067ffffffffffffffff821117156142df576142df613d75565b60405290508082356142f081613d17565b8152602092830135920191909152919050565b60008060008084860361020081121561431b57600080fd5b853561432681613d17565b9450602086013561433681613d17565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561436a57600080fd5b614372613da4565b915061438060408801613d2c565b82526060870135602083015261439860808801613d2c565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614413866101c087016142aa565b905092959194509250565b60006020828403121561443057600080fd5b813561067b81613d17565b60008060006060848603121561445057600080fd5b833561445b81613d17565b9250602084013561446b81613d17565b9150604084013567ffffffffffffffff81111561448757600080fd5b61449386828701613e23565b9150509250925092565b6101c081016144ac82866141e4565b6101808201939093526101a00152919050565b60008060008060008060c087890312156144d857600080fd5b863567ffffffffffffffff8111156144ef57600080fd5b6144fb89828a01613e23565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561456557614565614524565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036145ac576145ac614524565b5060010190565b6000816145c2576145c2614524565b506000190190565b828152604060208201526000613ecc6040830184613ed4565b600060208083850312156145f657600080fd5b825167ffffffffffffffff81111561460d57600080fd5b8301601f8101851361461e57600080fd5b805161462c613e4482613dff565b81815260059190911b8201830190838101908783111561464b57600080fd5b928401925b8284101561466957835182529284019290840190614650565b979650505050505050565b60006020828403121561468657600080fd5b815160ff8116811461067b57600080fd5b600181815b808511156146d25781600019048211156146b8576146b8614524565b808516156146c557918102915b93841c939080029061469c565b509250929050565b6000826146e957506001611720565b816146f657506000611720565b816001811461470c576002811461471657614732565b6001915050611720565b60ff84111561472757614727614524565b50506001821b611720565b5060208310610133831016604e8410600b8410161715614755575081810a611720565b61475f8383614697565b806000190482111561477357614773614524565b029392505050565b600061067b83836146da565b60008160001904831182151516156147a1576147a1614524565b500290565b6000826147dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f8000000000000000000000000000000000000000000000000000000000000000820361481257614812614524565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561485a5761485a614524565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561489557614895614524565b600087129250878205871284841616156148b1576148b1614524565b878505871281841616156148c7576148c7614524565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561490f5761490f614524565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561494357614943614524565b50500190565b6000821982111561495c5761495c614524565b500190565b60005b8381101561497c578181015183820152602001614964565b8381111561498b576000848401525b50505050565b600082516149a3818460208701614961565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526149f78160e0850160208701614961565b601f01601f19169190910160e001979650505050505050565b600060208284031215614a2257600080fd5b5051919050565b600060208284031215614a3b57600080fd5b815161067b816140d5565b85815284602082015260a060408201526000614a6560a0830186613ed4565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614a9b6080830186613ed4565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614ac957600080fd5b815161067b81613d17565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220a903ba213389a456badca00d829fa846cdae0e2e7c99636c715536ee657a122764736f6c634300080e0033",
964
+ "deployedBytecode": "0x6080604052600436106101825760003560e01c80635ff530f2116100d557806381f3fdc311610084578063aa5d448f11610061578063aa5d448f146105ad578063d96661ef146105cd578063f2fde38b146105ed578063fe8691b41461060d57005b806381f3fdc31461054d5780638da5cb5b1461057c578063a6a3694a1461059a57005b80636f151a38116100b25780636f151a38146104f8578063715018a614610518578063744cfdd91461052d57005b80635ff530f21461048757806362a76603146104a757806363c102b4146104d857005b8063238ac9331161013157806334e3f92d1161010e57806334e3f92d146103fc5780633fc8cef3146104475780635c8181211461046757005b8063238ac933146102ab5780632926e5de146102e35780632bd2c18d146103dc57005b80630fcc40c41161015f5780630fcc40c41461023e5780631b1534011461026b5780631f8c24de1461028b57005b8063016eb8a81461018b578063089afeae146101be5780630d83b1e41461022857005b3661018957005b005b34801561019757600080fd5b506101ab6101a6366004613cf5565b610661565b6040519081526020015b60405180910390f35b3480156101ca57600080fd5b506102096101d9366004613d3c565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016101b5565b34801561023457600080fd5b506101ab60095481565b34801561024a57600080fd5b5061025e610259366004613e97565b610682565b6040516101b59190613f18565b34801561027757600080fd5b50610189610286366004613f2b565b610752565b34801561029757600080fd5b506101896102a6366004613fdc565b61080d565b3480156102b757600080fd5b506002546102cb906001600160a01b031681565b6040516001600160a01b0390911681526020016101b5565b3480156102ef57600080fd5b506103726102fe366004613d3c565b6007602081815260009384526040808520909152918352912080546001820154600283015460038401546004850154600586015460068701549787015460088801546009890154600a8a0154600b909a01546001600160a01b03998a169b989a99909716989597949693959293919290918c565b604080516001600160a01b039d8e168152602081019c909c5299909b16988a01989098526060890196909652608088019490945260a087019290925260c086015260e0850152610100840152610120830152610140820152610160810191909152610180016101b5565b3480156103e857600080fd5b506101ab6103f7366004614049565b61088d565b34801561040857600080fd5b506104376104173660046140a0565b805160208183018101805160038252928201919093012091525460ff1681565b60405190151581526020016101b5565b34801561045357600080fd5b506004546102cb906001600160a01b031681565b34801561047357600080fd5b506101ab6104823660046140e3565b6108e2565b34801561049357600080fd5b506101ab6104a236600461411c565b61092a565b3480156104b357600080fd5b506104c76104c2366004614163565b610a6e565b6040516101b5959493929190614275565b3480156104e457600080fd5b506101896104f3366004614303565b610b34565b34801561050457600080fd5b5061018961051336600461441e565b610d45565b34801561052457600080fd5b50610189610dab565b34801561053957600080fd5b506101ab61054836600461411c565b610e11565b34801561055957600080fd5b5061056d61056836600461443b565b610f3b565b6040516101b59392919061449d565b34801561058857600080fd5b506000546001600160a01b03166102cb565b6101896105a83660046144bf565b61130b565b3480156105b957600080fd5b506101896105c836600461441e565b6115d2565b3480156105d957600080fd5b506005546102cb906001600160a01b031681565b3480156105f957600080fd5b5061018961060836600461441e565b611635565b34801561061957600080fd5b5061064c610628366004613d3c565b60066020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152016101b5565b60095460009061067b906106758585611714565b90611726565b9392505050565b805160609060008167ffffffffffffffff8111156106a2576106a2613d75565b6040519080825280602002602001820160405280156106cb578160200160208202803683370190505b5090506000825b6001811061074857856106e6600183614553565b815181106106f6576106f661456a565b60200260200101518383815181106107105761071061456a565b6001600160a01b03909216602092830291909101909101528161073281614599565b9250508080610740906145b3565b9150506106d2565b5090949350505050565b6000546001600160a01b031633146107b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107bc838383611732565b6108085760405162461bcd60e51b815260206004820152601660248201527f546f6b656e4d61726b65743a3a73656e64206661696c0000000000000000000060448201526064016107a8565b505050565b610815611769565b61082285858585856117c2565b61082e858585846119ae565b81421061087d5760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a4f726465722045787069726174696f6e00000060448201526064016107a8565b61088660018055565b5050505050565b600080808481036108ba576108a2878761092a565b91506108b0848360006108e2565b91508192506108d8565b6108c48787610e11565b90506108d2848260016108e2565b90508092505b5050949350505050565b600060018215610900576009546108f99086611a1d565b9050610910565b60095461090d9086611a29565b90505b600954610921906106758684611714565b95945050505050565b6005546040517fd06ca61f00000000000000000000000000000000000000000000000000000000815260009182916001600160a01b039091169063d06ca61f9061097a90879087906004016145ca565b600060405180830381865afa158015610997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109bf91908101906145e3565b9050806109d760018351611a2990919063ffffffff16565b815181106109e7576109e761456a565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e4d61726b65743a3a6f7574416d6f756e742073686f756c6420626560448201527f2067726561746572207468616e2030000000000000000000000000000000000060648201526084016107a8565b5092915050565b610ae460405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600080600080600080610af98c8c8c8c611a35565b92995090945092509050610b0d8984611a29565b9850610b1d8c8c8b8b8686611e19565b989e919d509b509699509197509495505050505050565b6000546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b600082606001511215610be35760405162461bcd60e51b815260206004820152601860248201527f546f6b656e4d61726b65743a3a726577617264203e3d2030000000000000000060448201526064016107a8565b600082602001511215610c385760405162461bcd60e51b815260206004820152601960248201527f546f6b656e4d61726b65743a3a66656552617465203e3d20300000000000000060448201526064016107a8565b6001600160a01b03938416600081815260076020818152604080842097891680855297825280842087518154908b167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825583890151600180840191909155838a0151600284018054918e1691841691909117905560608a0151600384015560808a0151600484015560a08a0151600584015560c08a0151600684015560e08a0151958301959095556101008901516008808401919091556101208a015160098401556101408a0151600a84015561016090990151600b909201919091559484529581528583209683529586529390208251815496169590911694909417845590910151910155565b6000546001600160a01b03163314610d9f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da88161209f565b50565b6000546001600160a01b03163314610e055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610e0f6000612154565b565b6005546040517f1f00ca7400000000000000000000000000000000000000000000000000000000815260009182916001600160a01b0390911690631f00ca7490610e6190879087906004016145ca565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ea691908101906145e3565b905080600081518110610ebb57610ebb61456a565b6020026020010151915060008211610a675760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a696e416d6f756e742073686f756c642062652060448201527f67726561746572207468616e203000000000000000000000000000000000000060648201526084016107a8565b610fb160405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce567000000000000000000000000000000000000000000000000000000008152905193948594909363313ce5679383820193909291908290030181865afa1580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d19190614674565b60ff1691506110ea6110e483600a61477b565b8561092a565b9050600080828560800151111561113c5761012085015160808601516009546111138683614553565b61111d9190614787565b61112791906147a6565b61113191906147a6565b905060009150611185565b84608001518311156111855761012085015160808601516009546111608287614553565b61116a9190614787565b61117491906147a6565b61117e91906147a6565b9050600191505b60008113156113005760808501839052610140850151610160860151836111bd576111af826147e1565b91506111ba816147e1565b90505b600082126112005760208701516111d48484614819565b6111de91906148d5565b6020880181905260c088015112156111fb5760c087015160208801525b61125c565b86602001518760a0015184611214856121bc565b61121e9190614819565b61122891906148d5565b131561123d5760a0870151602088015261125c565b602087015161124c8484614819565b61125691906148d5565b60208801525b600081126112a15760608701516112738483614819565b61127d91906148d5565b60608801819052610100880151121561129c5761010087015160608801525b6112fd565b86606001518760e00151846112b5846121bc565b6112bf9190614819565b6112c991906148d5565b13156112de5760e087015160608801526112fd565b60608701516112ed8483614819565b6112f791906148d5565b60608801525b50505b505093509350939050565b611313611769565b3332146113625760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e4d61726b65743a3a496c6c6567616c2063616c6c6572000000000060448201526064016107a8565b333b156113d65760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a50726f686962697420636f6e7472616374206360448201527f616c6c730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b826000036113fd576113e8858761092a565b93506113f6818560006108e2565b9350611418565b6114078487610e11565b9450611415818660016108e2565b94505b60008660008151811061142d5761142d61456a565b60200260200101519050600087600189516114489190614553565b815181106114585761145861456a565b6020908102919091018101513360009081526006835260408082206001600160a01b038716835290935291822060010180549193508992909161149c908490614949565b92505081905550600060405180604001604052806114b9856121d8565b8152602001846001600160a01b03168152509050600060405180604001604052806114e3856121d8565b81526001600160a01b03851660209091015282519091506003036115125761150d8433308c612211565b611587565b8834146115875760405162461bcd60e51b815260206004820152602660248201527f546f6b656e4d61726b65743a3a696e70757420657468206973206e6f7420616360448201527f637572617465000000000000000000000000000000000000000000000000000060648201526084016107a8565b61159284848c612381565b50506115a382828b8b8e8c8c612612565b6115ae84848a6128bb565b6115ba84848c8b6129eb565b505050505050506115ca60018055565b505050505050565b6000546001600160a01b0316331461162c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b610da881612dff565b6000546001600160a01b0316331461168f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a8565b6001600160a01b03811661170b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107a8565b610da881612154565b600061067b8284614787565b92915050565b600061067b82846147a6565b60006001600160a01b0384166117545761174c8383612f64565b50600161067b565b61175f84848461307d565b5060019392505050565b6002600154036117bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107a8565b6002600155565b6003816040516117d29190614991565b9081526040519081900360200190205460ff16156118325760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a6365727469666963617465206578706972656460448201526064016107a8565b60408051466020808301919091528183018890527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b82168185015288901b1660748301526088820186905260a88083018690528351808403909101815260c8830184528051908201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e8840152610104808401919091528351808403909101815261012490920190925280519101206000906118f690836131e5565b6002549091506001600160a01b038083169116146119565760405162461bcd60e51b815260206004820181905260248201527f546f6b656e4d61726b65743a3a696e76616c696420636572746966696361746560448201526064016107a8565b60016003836040516119689190614991565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b6001600160a01b0383166119cb576119c63383612f64565b6119d6565b6119d683338461307d565b7f620ad9fc50d4bd40a79cb189cc547554eb4619554627f5ff4b98002f3269211d338585854286604051611a0f969594939291906149ad565b60405180910390a150505050565b600061067b8284614949565b600061067b8284614553565b611aab60405180610180016040528060006001600160a01b031681526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506001600160a01b03808516600081815260076020818152604080842089871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce5670000000000000000000000000000000000000000000000000000000081529051939485948594919363313ce5679380840193919291908290030181865afa158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190614674565b60ff169150611be6611be083600a61477b565b8761092a565b90506000808286608001511115611c38576101208601516080870151600954611c0f8683614553565b611c199190614787565b611c2391906147a6565b611c2d91906147a6565b905060009150611c81565b8560800151831115611c81576101208601516080870151600954611c5c8287614553565b611c669190614787565b611c7091906147a6565b611c7a91906147a6565b9050600191505b6000811315611dfc576080860183905261014086015161016087015183611cb957611cab826147e1565b9150611cb6816147e1565b90505b60008212611cfc576020880151611cd08484614819565b611cda91906148d5565b6020890181905260c08901511215611cf75760c088015160208901525b611d58565b87602001518860a0015184611d10856121bc565b611d1a9190614819565b611d2491906148d5565b1315611d395760a08801516020890152611d58565b6020880151611d488484614819565b611d5291906148d5565b60208901525b60008112611d9d576060880151611d6f8483614819565b611d7991906148d5565b606089018190526101008901511215611d985761010088015160608901525b611df9565b87606001518860e0015184611db1846121bc565b611dbb9190614819565b611dc591906148d5565b1315611dda5760e08801516060890152611df9565b6060880151611de98483614819565b611df391906148d5565b60608901525b50505b611e0a878760200151610661565b94505050945094509450949050565b6001600160a01b03868116600090815260086020908152604080832089851680855290835281842082518084018452815487168152600191820154818601529589168552600684528285209185529252822090810154905491928392839211611e9157611e8a888260200151610661565b9350612086565b6001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611ec8908a90614949565b10611f1d576001600160a01b038781166000908152600660209081526040808320938d1683529290522060018101549054611e8a9190611f09908b90614949565b611f139190614553565b8260200151610661565b6000611f2a87600a61477b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528891908e16906370a0823190602401602060405180830381865afa158015611f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb09190614a10565b611fba9190614787565b611fc491906147a6565b6001600160a01b038981166000908152600660209081526040808320938f1683529290522060018101549054919250908290612001908c90614949565b61200b9190614949565b1015612084576001600160a01b038089166000908152600660209081526040808320938e16835292905220548190612044908b90614949565b61204e9190614949565b6001600160a01b03808a166000908152600660209081526040808320938f16835292905220600101546120819190614553565b93505b505b6120908885611a29565b91505096509650969350505050565b6001600160a01b03811661211a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e4d61726b65743a3a696e76616c6964207369676e696e672061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808212156121d4576121cf826147e1565b611720565b5090565b600060036001600160a01b0383166121f257506001611720565b6004546001600160a01b03908116908416036117205750600292915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916122a39190614991565b6000604051808303816000865af19150503d80600081146122e0576040519150601f19603f3d011682016040523d82523d6000602084013e6122e5565b606091505b509150915081801561230f57508051158061230f57508080602001905181019061230f9190614a29565b6115ca5760405162461bcd60e51b815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c656400000000000000000000000000000060648201526084016107a8565b6001600160a01b03808416600081815260076020818152604080842088871685528252808420815161018081018352815488168152600182015481850152600282015490971687830152600381015460608801526004808201546080890152600582015460a0890152600682015460c08901529381015460e088015260088101546101008801526009810154610120880152600a810154610140880152600b015461016087015280517f313ce56700000000000000000000000000000000000000000000000000000000815290519395869590948694919363313ce5679380840193919291908290030181865afa158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a49190614674565b60ff16905060006124b9611be083600a61477b565b90506000836101200151116125105760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e72616e6765203e203000000060448201526064016107a8565b60008360800151116125645760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d61726b65743a3a636f6e6669672e7072696365203e203000000060448201526064016107a8565b80836080015111156125b15761012083015160808401516009546125888483614553565b6125929190614787565b61259c91906147a6565b6125a691906147a6565b9450600093506125fa565b82608001518111156125fa5761012083015160808401516009546125d58285614553565b6125df9190614787565b6125e991906147a6565b6125f391906147a6565b9450600193505b6126078888838888613209565b505050935093915050565b865160030361263757602087015160055461263791906001600160a01b0316876135af565b86516003148015612649575085516003145b8015612653575081155b156126f6576005546040517f38ed17390000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906338ed1739906126a99088908890889030908890600401614a46565b6000604051808303816000875af11580156126c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126f091908101906145e3565b506128b2565b86516003148015612708575085516003145b80156127145750816001145b1561276a576005546040517f8803dbee0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638803dbee906126a99087908990889030908890600401614a46565b865160031480156127875750855160021480612787575085516001145b80156127935750816001145b156127e9576005546040517f4a25d94a0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690634a25d94a906126a99087908990889030908890600401614a46565b8651600214806127fa575086516001145b8015612807575085516003145b80156128135750816001145b156128b2576005546040517ffb3bdb410000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063fb3bdb41908790612869908890889030908890600401614a82565b60006040518083038185885af1158015612887573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526128b091908101906145e3565b505b50505050505050565b6001600160a01b0380841660009081526007602081815260408084208786168552825280842081516101808101835281548716815260018201549381018490526002820154909616918601919091526003810154606086015260048101546080860152600581015460a0860152600681015460c08601529182015460e085015260088201546101008501526009820154610120850152600a820154610140850152600b90910154610160840152612973908490610661565b90506000604051806040016040528061298b876121d8565b81526001600160a01b03871660209091015280519091506003036129ce5782516001600160a01b031630146129c9576129c98584600001518461307d565b6115ca565b82516001600160a01b031630146115ca5782516115ca9083613717565b6001600160a01b038085166000908152600860209081526040808320878516845282528083208151808301909252805490941681526001909301549083015290819081908180612a3d8a8a8a8a6137fa565b80935081945082995050505060066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206001015460066000336001600160a01b03166001600160a01b0316815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206000015410612afb57612af4878460200151610661565b9550612d8c565b3360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612b30908990614949565b10612b83573360009081526006602090815260408083206001600160a01b038d168452909152902060018101549054612af49190612b6f908a90614949565b612b799190614553565b8460200151610661565b6000612b9082600a61477b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015284906001600160a01b038e16906370a0823190602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190614a10565b612c1d9190614787565b612c2791906147a6565b3360009081526006602090815260408083206001600160a01b038f168452909152902060018101549054919250908290612c62908b90614949565b612c6c9190614949565b1015612d8a573360009081526006602090815260408083206001600160a01b038e1684529091529020548190612ca3908a90614949565b612cad9190614949565b3360009081526006602090815260408083206001600160a01b038f168452909152902060010154612cde9190614553565b95508515612d1f573360009081526006602090815260408083206001600160a01b038e16845290915281208054889290612d19908490614949565b90915550505b3360008181526006602090815260408083206001600160a01b038f1684528252918290206001810154905483519485529184018a9052838301526060830152517fc930abf5e8abe924a0cf504756701d8e56d8a1be02e18a08c502c484de6690d49181900360800190a15b505b612d968787611a29565b93508515612dad57612dad8984600001518861307d565b612db889338661307d565b3360009081526006602090815260408083206001600160a01b038d16845290915281208054869290612deb908490614949565b925050819055505050509450945094915050565b6001600160a01b038116612e7b5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e4d61726b65743a3a696e76616c696420726f75746520616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517fad5c4648000000000000000000000000000000000000000000000000000000008152905163ad5c4648916004808201926020929091908290030181865afa158015612f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f299190614ab7565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b80471015612fb45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613001576040519150601f19603f3d011682016040523d82523d6000602084013e613006565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107a8565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916131079190614991565b6000604051808303816000865af19150503d8060008114613144576040519150601f19603f3d011682016040523d82523d6000602084013e613149565b606091505b50915091508180156131735750805115806131735750808060200190518101906131739190614a29565b6108865760405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c65640000000000000000000000000000000000000060648201526084016107a8565b60008060006131f48585613a87565b9150915061320181613acc565b509392505050565b6000821315610886576001600160a01b03858116600090815260076020908152604080832093881683529290522060048101849055600a810154600b909101548261326557613257826147e1565b9150613262816147e1565b90505b60008212613316576001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546132a08584614819565b6132aa91906148d5565b6001600160a01b038881166000908152600760209081526040808320938b1683529290522060018101829055600601541215613311576001600160a01b038781166000908152600760209081526040808320938a1683529290522060068101546001909101555b613406565b6001600160a01b038781166000908152600760209081526040808320938a16835292905220600181015460059091015485613350856121bc565b61335a9190614819565b61336491906148d5565b131561339f576001600160a01b038781166000908152600760209081526040808320938a168352929052206005810154600190910155613406565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600101546133d28584614819565b6133dc91906148d5565b6001600160a01b038089166000908152600760209081526040808320938b16835292905220600101555b600081126134b7576001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546134418583614819565b61344b91906148d5565b6001600160a01b038881166000908152600760209081526040808320938b16835292905220600381018290556008015412156134b2576001600160a01b038781166000908152600760209081526040808320938a1683529290522060088101546003909101555b6128b2565b6001600160a01b038781166000908152600760208181526040808420948b1684529390529190206003810154910154856134f0846121bc565b6134fa9190614819565b61350491906148d5565b1315613540576001600160a01b038781166000908152600760208181526040808420948b168452939052919020908101546003909101556128b2565b6001600160a01b038088166000908152600760209081526040808320938a16835292905220600301546135738583614819565b61357d91906148d5565b6001600160a01b038089166000908152600760209081526040808320938b168352929052206003015550505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916136399190614991565b6000604051808303816000865af19150503d8060008114613676576040519150601f19603f3d011682016040523d82523d6000602084013e61367b565b606091505b50915091508180156136a55750805115806136a55750808060200190518101906136a59190614a29565b6108865760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c656400000000000000000000000000000000000000000060648201526084016107a8565b604080516000808252602082019092526001600160a01b0384169083906040516137419190614991565b60006040518083038185875af1925050503d806000811461377e576040519150601f19603f3d011682016040523d82523d6000602084013e613783565b606091505b50509050806108085760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016107a8565b6001600160a01b0380851660009081526007602081815260408084208886168552825280842081516101808101835281548716815260018201549381019390935260028101549095169082015260038401546060820181905260048501546080830152600585015460a0830152600685015460c08301529184015460e082015260088401546101008201526009840154610120820152600a840154610140820152600b90930154610160840152909182918291906138b9908690610661565b60408083015190517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561391c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139409190614a10565b10156139b45760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e4d61726b65743a3a52657761726420546f6b656e20496e7375666660448201527f696369656e742042616c616e636500000000000000000000000000000000000060648201526084016107a8565b60006139c4868360600151610661565b11156139e6576139e68160400151336139e1888560600151610661565b61307d565b876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a489190614674565b60ff169150613a5b611be083600a61477b565b92506000613a6d868360200151610661565b9050613a798682611a29565b945050509450945094915050565b6000808251604103613abd5760208301516040840151606085015160001a613ab187828585613c31565b94509450505050613ac5565b506000905060025b9250929050565b6000816004811115613ae057613ae0614ad4565b03613ae85750565b6001816004811115613afc57613afc614ad4565b03613b495760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016107a8565b6002816004811115613b5d57613b5d614ad4565b03613baa5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016107a8565b6003816004811115613bbe57613bbe614ad4565b03610da85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016107a8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613c685750600090506003613cec565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613cbc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ce557600060019250925050613cec565b9150600090505b94509492505050565b60008060408385031215613d0857600080fd5b50508035926020909101359150565b6001600160a01b0381168114610da857600080fd5b8035613d3781613d17565b919050565b60008060408385031215613d4f57600080fd5b8235613d5a81613d17565b91506020830135613d6a81613d17565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613dc857613dc8613d75565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613df757613df7613d75565b604052919050565b600067ffffffffffffffff821115613e1957613e19613d75565b5060051b60200190565b600082601f830112613e3457600080fd5b81356020613e49613e4483613dff565b613dce565b82815260059290921b84018101918181019086841115613e6857600080fd5b8286015b84811015613e8c578035613e7f81613d17565b8352918301918301613e6c565b509695505050505050565b600060208284031215613ea957600080fd5b813567ffffffffffffffff811115613ec057600080fd5b613ecc84828501613e23565b949350505050565b600081518084526020808501945080840160005b83811015613f0d5781516001600160a01b031687529582019590820190600101613ee8565b509495945050505050565b60208152600061067b6020830184613ed4565b600080600060608486031215613f4057600080fd5b8335613f4b81613d17565b92506020840135613f5b81613d17565b929592945050506040919091013590565b600082601f830112613f7d57600080fd5b813567ffffffffffffffff811115613f9757613f97613d75565b613faa6020601f19601f84011601613dce565b818152846020838601011115613fbf57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215613ff457600080fd5b85359450602086013561400681613d17565b93506040860135925060608601359150608086013567ffffffffffffffff81111561403057600080fd5b61403c88828901613f6c565b9150509295509295909350565b6000806000806080858703121561405f57600080fd5b84359350602085013567ffffffffffffffff81111561407d57600080fd5b61408987828801613e23565b949794965050505060408301359260600135919050565b6000602082840312156140b257600080fd5b813567ffffffffffffffff8111156140c957600080fd5b613ecc84828501613f6c565b8015158114610da857600080fd5b6000806000606084860312156140f857600080fd5b83359250602084013591506040840135614111816140d5565b809150509250925092565b6000806040838503121561412f57600080fd5b82359150602083013567ffffffffffffffff81111561414d57600080fd5b61415985828601613e23565b9150509250929050565b600080600080600060a0868803121561417b57600080fd5b853561418681613d17565b9450602086013561419681613d17565b9350604086013567ffffffffffffffff8111156141b257600080fd5b6141be88828901613e23565b9350506060860135915060808601356141d681613d17565b809150509295509295909350565b80516001600160a01b0316825260208101516020830152604081015161421560408401826001600160a01b03169052565b50606081810151908301526080808201519083015260a0808201519083015260c0808201519083015260e0808201519083015261010080820151908301526101208082015190830152610140808201519083015261016090810151910152565b610200810161428482886141e4565b85610180830152846101a0830152836101c0830152826101e08301529695505050505050565b6000604082840312156142bc57600080fd5b6040516040810181811067ffffffffffffffff821117156142df576142df613d75565b60405290508082356142f081613d17565b8152602092830135920191909152919050565b60008060008084860361020081121561431b57600080fd5b853561432681613d17565b9450602086013561433681613d17565b93506101807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820181131561436a57600080fd5b614372613da4565b915061438060408801613d2c565b82526060870135602083015261439860808801613d2c565b604083015260a0870135606083015260c0870135608083015260e087013560a08301526101008088013560c08401526101208089013560e0850152610140808a0135838601526101609250828a013582860152838a01358186015250506101a088013581840152505080925050614413866101c087016142aa565b905092959194509250565b60006020828403121561443057600080fd5b813561067b81613d17565b60008060006060848603121561445057600080fd5b833561445b81613d17565b9250602084013561446b81613d17565b9150604084013567ffffffffffffffff81111561448757600080fd5b61449386828701613e23565b9150509250925092565b6101c081016144ac82866141e4565b6101808201939093526101a00152919050565b60008060008060008060c087890312156144d857600080fd5b863567ffffffffffffffff8111156144ef57600080fd5b6144fb89828a01613e23565b9960208901359950604089013598606081013598506080810135975060a0013595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561456557614565614524565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060001982036145ac576145ac614524565b5060010190565b6000816145c2576145c2614524565b506000190190565b828152604060208201526000613ecc6040830184613ed4565b600060208083850312156145f657600080fd5b825167ffffffffffffffff81111561460d57600080fd5b8301601f8101851361461e57600080fd5b805161462c613e4482613dff565b81815260059190911b8201830190838101908783111561464b57600080fd5b928401925b8284101561466957835182529284019290840190614650565b979650505050505050565b60006020828403121561468657600080fd5b815160ff8116811461067b57600080fd5b600181815b808511156146d25781600019048211156146b8576146b8614524565b808516156146c557918102915b93841c939080029061469c565b509250929050565b6000826146e957506001611720565b816146f657506000611720565b816001811461470c576002811461471657614732565b6001915050611720565b60ff84111561472757614727614524565b50506001821b611720565b5060208310610133831016604e8410600b8410161715614755575081810a611720565b61475f8383614697565b806000190482111561477357614773614524565b029392505050565b600061067b83836146da565b60008160001904831182151516156147a1576147a1614524565b500290565b6000826147dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f8000000000000000000000000000000000000000000000000000000000000000820361481257614812614524565b5060000390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561485a5761485a614524565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561489557614895614524565b600087129250878205871284841616156148b1576148b1614524565b878505871281841616156148c7576148c7614524565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561490f5761490f614524565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561494357614943614524565b50500190565b6000821982111561495c5761495c614524565b500190565b60005b8381101561497c578181015183820152602001614964565b8381111561498b576000848401525b50505050565b600082516149a3818460208701614961565b9190910192915050565b60006001600160a01b03808916835287602084015280871660408401525084606083015283608083015260c060a083015282518060c08401526149f78160e0850160208701614961565b601f01601f19169190910160e001979650505050505050565b600060208284031215614a2257600080fd5b5051919050565b600060208284031215614a3b57600080fd5b815161067b816140d5565b85815284602082015260a060408201526000614a6560a0830186613ed4565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000614a9b6080830186613ed4565b6001600160a01b03949094166040830152506060015292915050565b600060208284031215614ac957600080fd5b815161067b81613d17565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220a903ba213389a456badca00d829fa846cdae0e2e7c99636c715536ee657a122764736f6c634300080e0033",
965
+ "linkReferences": {},
966
+ "deployedLinkReferences": {}
967
+ }