forked from balancer/balancer-deployments
-
Notifications
You must be signed in to change notification settings - Fork 0
/
OmniVotingEscrow.json
903 lines (903 loc) · 65.8 KB
/
OmniVotingEscrow.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
{
"_format": "hh-sol-artifact-1",
"contractName": "OmniVotingEscrow",
"sourceName": "contracts/OmniVotingEscrow.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_lzEndpoint",
"type": "address"
},
{
"internalType": "address",
"name": "_votingEscrowRemapper",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_reason",
"type": "bytes"
}
],
"name": "MessageFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "_payloadHash",
"type": "bytes32"
}
],
"name": "RetryMessageSuccess",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "uint16",
"name": "_type",
"type": "uint16"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_minDstGas",
"type": "uint256"
}
],
"name": "SetMinDstGas",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "precrime",
"type": "address"
}
],
"name": "SetPrecrime",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "_remoteChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_path",
"type": "bytes"
}
],
"name": "SetTrustedRemote",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "_remoteChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "_remoteAddress",
"type": "bytes"
}
],
"name": "SetTrustedRemoteAddress",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "dstChainId",
"type": "uint16"
},
{
"components": [
{
"internalType": "int128",
"name": "bias",
"type": "int128"
},
{
"internalType": "int128",
"name": "slope",
"type": "int128"
},
{
"internalType": "uint256",
"name": "ts",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blk",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct IVotingEscrow.Point",
"name": "totalSupplyPoint",
"type": "tuple"
}
],
"name": "TotalSupplyToChain",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "dstChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "address",
"name": "localUser",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "remoteUser",
"type": "address"
},
{
"components": [
{
"internalType": "int128",
"name": "bias",
"type": "int128"
},
{
"internalType": "int128",
"name": "slope",
"type": "int128"
},
{
"internalType": "uint256",
"name": "ts",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blk",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct IVotingEscrow.Point",
"name": "userPoint",
"type": "tuple"
},
{
"components": [
{
"internalType": "int128",
"name": "bias",
"type": "int128"
},
{
"internalType": "int128",
"name": "slope",
"type": "int128"
},
{
"internalType": "uint256",
"name": "ts",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blk",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct IVotingEscrow.Point",
"name": "totalSupplyPoint",
"type": "tuple"
}
],
"name": "UserBalToChain",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "bool",
"name": "_useZro",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "estimateSendTotalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "zroFee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "bool",
"name": "_useZro",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "estimateSendUserBalance",
"outputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "zroFee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
},
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"name": "failedMessages",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
}
],
"name": "forceResumeReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_version",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "_chainId",
"type": "uint16"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "_configType",
"type": "uint256"
}
],
"name": "getConfig",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_remoteChainId",
"type": "uint16"
}
],
"name": "getTrustedRemoteAddress",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
}
],
"name": "isTrustedRemote",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lzEndpoint",
"outputs": [
{
"internalType": "contract ILayerZeroEndpoint",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
},
{
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
}
],
"name": "lzReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"name": "minDstGasLookup",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
},
{
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
}
],
"name": "nonblockingLzReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "precrime",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
},
{
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
}
],
"name": "retryMessage",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "address payable",
"name": "_refundAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_zroPaymentAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "sendTotalSupply",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_localUser",
"type": "address"
},
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "address payable",
"name": "_refundAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_zroPaymentAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "sendUserBalance",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_version",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "_chainId",
"type": "uint16"
},
{
"internalType": "uint256",
"name": "_configType",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_config",
"type": "bytes"
}
],
"name": "setConfig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "_packetType",
"type": "uint16"
},
{
"internalType": "uint256",
"name": "_minGas",
"type": "uint256"
}
],
"name": "setMinDstGas",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_precrime",
"type": "address"
}
],
"name": "setPrecrime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_version",
"type": "uint16"
}
],
"name": "setReceiveVersion",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_version",
"type": "uint16"
}
],
"name": "setSendVersion",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
}
],
"name": "setTrustedRemote",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_remoteChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_remoteAddress",
"type": "bytes"
}
],
"name": "setTrustedRemoteAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"name": "trustedRemoteLookup",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingEscrow",
"outputs": [
{
"internalType": "contract IVotingEscrow",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingEscrowRemapper",
"outputs": [
{
"internalType": "contract IVotingEscrowRemapper",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60e06040526005805463ffffffff1916620100001790553480156200002357600080fd5b5060405162002fef38038062002fef8339810160408190526200004691620001b8565b818062000053336200014f565b6001600160a01b03908116608052821615159050620000c95760405162461bcd60e51b815260206004820152602860248201527f4f6d6e69566f74696e67457363726f773a2072656d61707065722063616e6e6f604482015267074206265203078360c41b606482015260840160405180910390fd5b6001600160a01b03811660c081905260408051630458184560e11b815290516308b0308a916004808201926020929091908290030181865afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a9190620001f7565b6001600160a01b031660a052506200021e9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620001b557600080fd5b50565b60008060408385031215620001cc57600080fd5b8251620001d9816200019f565b6020840151909250620001ec816200019f565b809150509250929050565b6000602082840312156200020a57600080fd5b815162000217816200019f565b9392505050565b60805160a05160c051612d1c620002d360003960008181610269015261118901526000818161032b01528181610ad201528181610b7601528181610bf901528181610c6c01528181610d0501528181610eab01528181610f4601528181610fd80152818161104901526110ed0152600081816104f4015281816105ec0152818161083b015281816108c40152818161097401528181610e22015281816116ab01528181611adc0152611e100152612d1c6000f3fe6080604052600436106101b65760003560e01c80637533d788116100ec578063baf3292d1161008a578063df2a5b3b11610064578063df2a5b3b14610569578063eb8d72b714610589578063f2fde38b146105a9578063f5ecbdbc146105c957600080fd5b8063baf3292d14610516578063cbed8b9c14610536578063d1deba1f1461055657600080fd5b8063950c8a74116100c6578063950c8a74146104825780639f38369a146104a2578063a6c3d165146104c2578063b353aaa7146104e257600080fd5b80637533d788146103ff5780638cfd8f5c1461042c5780638da5cb5b1461046457600080fd5b806342d65a8d116101595780635b8c41e6116101335780635b8c41e61461034d57806365d092d0146103aa57806366ad5c8a146103ca578063715018a6146103ea57600080fd5b806342d65a8d146102e65780634a759489146103065780634f2bfe5b1461031957600080fd5b806316334c8f1161019557806316334c8f1461021d578063363bf0de146102575780633d8b38f6146102a3578063416b154a146102d357600080fd5b80621d3567146101bb57806307e0db17146101dd57806310ddb137146101fd575b600080fd5b3480156101c757600080fd5b506101db6101d636600461224e565b6105e9565b005b3480156101e957600080fd5b506101db6101f83660046122e1565b61081a565b34801561020957600080fd5b506101db6102183660046122e1565b6108a3565b34801561022957600080fd5b5061023d6102383660046122fc565b6108fb565b604080519283526020830191909152015b60405180910390f35b34801561026357600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b3480156102af57600080fd5b506102c36102be366004612363565b610a01565b604051901515815260200161024e565b6101db6102e136600461248d565b610ace565b3480156102f257600080fd5b506101db610301366004612363565b610e03565b6101db6103143660046124ff565b610e89565b34801561032557600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561035957600080fd5b5061039c610368366004612584565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b60405190815260200161024e565b3480156103b657600080fd5b5061023d6103c53660046122fc565b6112a0565b3480156103d657600080fd5b506101db6103e536600461224e565b611303565b3480156103f657600080fd5b506101db6113df565b34801561040b57600080fd5b5061041f61041a3660046122e1565b6113f3565b60405161024e919061263d565b34801561043857600080fd5b5061039c610447366004612650565b600260209081526000928352604080842090915290825290205481565b34801561047057600080fd5b506000546001600160a01b031661028b565b34801561048e57600080fd5b5060035461028b906001600160a01b031681565b3480156104ae57600080fd5b5061041f6104bd3660046122e1565b61148d565b3480156104ce57600080fd5b506101db6104dd366004612363565b61159d565b3480156104ee57600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b506101db610531366004612683565b611630565b34801561054257600080fd5b506101db6105513660046126a0565b61168c565b6101db61056436600461224e565b611721565b34801561057557600080fd5b506101db61058436600461270e565b611926565b34801561059557600080fd5b506101db6105a4366004612363565b6119d8565b3480156105b557600080fd5b506101db6105c4366004612683565b611a32565b3480156105d557600080fd5b5061041f6105e436600461274a565b611aab565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106665760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152600160205260408120805461068490612797565b80601f01602080910402602001604051908101604052809291908181526020018280546106b090612797565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b50505050509050805186869050148015610718575060008151115b801561074057508051602082012060405161073690889088906127d2565b6040518091039020145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b606482015260840161065d565b6108118787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b5c92505050565b50505050505050565b610822611c66565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050505050565b6108ab611c66565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb1379060240161086e565b6000806000600560029054906101000a900461ffff1660405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525060405160200161094d92919061280e565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906109b3908a90309086908c908c908c9060040161284f565b6040805180830381865afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f391906128a5565b925092505094509492505050565b61ffff831660009081526001602052604081208054829190610a2290612797565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612797565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b505050505090508383604051610ab29291906127d2565b60405180910390208180519060200120149150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906128f4565b9050610bf28160400151611cc0565b15610d7d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906128c9565b60405163d1febfb960e01b8152600481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1febfb9906024016080604051808303816000875af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a91906128f4565b90505b6000600560029054906101000a900461ffff1682604051602001610da292919061280e565b6040516020818303038152906040529050610dc1878288888834611cf1565b7fd76af77f4ffbd9969fdb15b1c1268d40cd4bf1093905e67639f369cb9f44c1728783604051610df292919061280e565b60405180910390a150505050505050565b610e0b611c66565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610e5b90869086908690600401612965565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610811573d6000803e3d6000fd5b60405163010ae75760e01b81526001600160a01b0386811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063010ae757906024016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128c9565b6040516328d09d4760e01b81526001600160a01b038881166004830152602482018390529192506000917f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906044016080604051808303816000875af1158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb391906128f4565b60405163adc6358960e01b81526001600160a01b0389811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063adc6358990602401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104391906128c9565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c991906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906128f4565b6040516317b4eb8760e31b81526001600160a01b038c8116600483015261ffff8c1660248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bda75c3890604401602060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190612983565b905060006001600160a01b03821661120c578b61120e565b815b6005546040519192506000916112339161ffff1690849089908b9089906020016129a0565b60405160208183030381529060405290506112528c828d8d8d34611cf1565b7f3689d0fa90a175cc766502dc62c2abdee9ca4b276d4315adf98339a8354755808c8e848a886040516112899594939291906129e6565b60405180910390a150505050505050505050505050565b6005546040805160808082018352600080835260208084018290528385018290526060808501839052855193840186528284528382018390528386018390528301829052935190948594859461094d9461ffff9093169386938493909101612a16565b3330146113615760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b606482015260840161065d565b6113d78686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611e8c92505050565b505050505050565b6113e7611c66565b6113f16000611ee4565b565b6001602052600090815260409020805461140c90612797565b80601f016020809104026020016040519081016040528092919081815260200182805461143890612797565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b505050505081565b61ffff81166000908152600160205260408120805460609291906114b090612797565b80601f01602080910402602001604051908101604052809291908181526020018280546114dc90612797565b80156115295780601f106114fe57610100808354040283529160200191611529565b820191906000526020600020905b81548152906001019060200180831161150c57829003601f168201915b505050505090508051600014156115825760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161065d565b610ac76000601483516115959190612a5d565b839190611f34565b6115a5611c66565b8181306040516020016115ba93929190612a74565b60408051601f1981840301815291815261ffff851660009081526001602090815291902082516115ef939192909101906120cb565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161162393929190612965565b60405180910390a1505050565b611638611c66565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611694611c66565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906116e89088908890889088908890600401612a9a565b600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505050505050565b61ffff8616600090815260046020526040808220905161174490889088906127d2565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806117c45760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b606482015260840161065d565b8083836040516117d59291906127d2565b6040518091039020146118345760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b606482015260840161065d565b61ffff8716600090815260046020526040808220905161185790899089906127d2565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f880182900482028301820190528682526118ef918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e8c92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051610df2959493929190612ad3565b61192e611c66565b600081116119765760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b604482015260640161065d565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611623565b6119e0611c66565b61ffff831660009081526001602052604090206119fe90838361214f565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161162393929190612965565b611a3a611c66565b6001600160a01b038116611a9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065d565b611aa881611ee4565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611b2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b539190810190612b0e565b95945050505050565b600080611bbf5a60966366ad5c8a60e01b89898989604051602401611b849493929190612b7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612041565b91509150816113d7578280519060200120600460008861ffff1661ffff16815260200190815260200160002086604051611bf99190612bb9565b9081526040805191829003602090810183206001600160401b0389166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90611c569088908890889088908790612bd5565b60405180910390a1505050505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b600042611cd062093a8084612c33565b611cdd9062093a80612c55565b611cea9062093a80612c74565b1092915050565b61ffff861660009081526001602052604081208054611d0f90612797565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3b90612797565b8015611d885780601f10611d5d57610100808354040283529160200191611d88565b820191906000526020600020905b815481529060010190602001808311611d6b57829003601f168201915b50505050509050805160001415611dfa5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b606482015260840161065d565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490611e51908b9086908c908c908c908c90600401612c8c565b6000604051808303818588803b158015611e6a57600080fd5b505af1158015611e7e573d6000803e3d6000fd5b505050505050505050505050565b60405162461bcd60e51b815260206004820152602760248201527f4f6d6e69566f74696e67457363726f773a2063616e6e6f742072656365697665604482015266206c7a4d73677360c81b606482015260840161065d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081611f4281601f612c74565b1015611f815760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161065d565b611f8b8284612c74565b84511015611fcf5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161065d565b606082158015611fee5760405191506000825260208201604052612038565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561202757805183526020928301920161200f565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b03811115612066576120666123ca565b6040519080825280601f01601f191660200182016040528015612090576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156120b2578692505b828152826000602083013e909890975095505050505050565b8280546120d790612797565b90600052602060002090601f0160209004810192826120f9576000855561213f565b82601f1061211257805160ff191683800117855561213f565b8280016001018555821561213f579182015b8281111561213f578251825591602001919060010190612124565b5061214b9291506121c3565b5090565b82805461215b90612797565b90600052602060002090601f01602090048101928261217d576000855561213f565b82601f106121965782800160ff1982351617855561213f565b8280016001018555821561213f579182015b8281111561213f5782358255916020019190600101906121a8565b5b8082111561214b57600081556001016121c4565b803561ffff811681146121ea57600080fd5b919050565b60008083601f84011261220157600080fd5b5081356001600160401b0381111561221857600080fd5b60208301915083602082850101111561223057600080fd5b9250929050565b80356001600160401b03811681146121ea57600080fd5b6000806000806000806080878903121561226757600080fd5b612270876121d8565b955060208701356001600160401b038082111561228c57600080fd5b6122988a838b016121ef565b90975095508591506122ac60408a01612237565b945060608901359150808211156122c257600080fd5b506122cf89828a016121ef565b979a9699509497509295939492505050565b6000602082840312156122f357600080fd5b610ac7826121d8565b6000806000806060858703121561231257600080fd5b61231b856121d8565b93506020850135801515811461233057600080fd5b925060408501356001600160401b0381111561234b57600080fd5b612357878288016121ef565b95989497509550505050565b60008060006040848603121561237857600080fd5b612381846121d8565b925060208401356001600160401b0381111561239c57600080fd5b6123a8868287016121ef565b9497909650939450505050565b6001600160a01b0381168114611aa857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612408576124086123ca565b604052919050565b60006001600160401b03821115612429576124296123ca565b50601f01601f191660200190565b600082601f83011261244857600080fd5b813561245b61245682612410565b6123e0565b81815284602083860101111561247057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156124a357600080fd5b6124ac856121d8565b935060208501356124bc816123b5565b925060408501356124cc816123b5565b915060608501356001600160401b038111156124e757600080fd5b6124f387828801612437565b91505092959194509250565b600080600080600060a0868803121561251757600080fd5b8535612522816123b5565b9450612530602087016121d8565b93506040860135612540816123b5565b92506060860135612550816123b5565b915060808601356001600160401b0381111561256b57600080fd5b61257788828901612437565b9150509295509295909350565b60008060006060848603121561259957600080fd5b6125a2846121d8565b925060208401356001600160401b038111156125bd57600080fd5b6125c986828701612437565b9250506125d860408501612237565b90509250925092565b60005b838110156125fc5781810151838201526020016125e4565b8381111561260b576000848401525b50505050565b600081518084526126298160208601602086016125e1565b601f01601f19169290920160200192915050565b602081526000610ac76020830184612611565b6000806040838503121561266357600080fd5b61266c836121d8565b915061267a602084016121d8565b90509250929050565b60006020828403121561269557600080fd5b8135610ac7816123b5565b6000806000806000608086880312156126b857600080fd5b6126c1866121d8565b94506126cf602087016121d8565b93506040860135925060608601356001600160401b038111156126f157600080fd5b6126fd888289016121ef565b969995985093965092949392505050565b60008060006060848603121561272357600080fd5b61272c846121d8565b925061273a602085016121d8565b9150604084013590509250925092565b6000806000806080858703121561276057600080fd5b612769856121d8565b9350612777602086016121d8565b92506040850135612787816123b5565b9396929550929360600135925050565b600181811c908216806127ab57607f821691505b602082108114156127cc57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b8051600f0b82526020810151600f0b602083015260408101516040830152606081015160608301525050565b61ffff8316815260a08101610ac760208301846127e2565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff871681526001600160a01b038616602082015260a06040820181905260009061287d90830187612611565b85151560608401528281036080840152612898818587612826565b9998505050505050505050565b600080604083850312156128b857600080fd5b505080516020909101519092909150565b6000602082840312156128db57600080fd5b5051919050565b8051600f81900b81146121ea57600080fd5b60006080828403121561290657600080fd5b604051608081018181106001600160401b0382111715612928576129286123ca565b604052612934836128e2565b8152612942602084016128e2565b602082015260408301516040820152606083015160608201528091505092915050565b61ffff84168152604060208201526000611b53604083018486612826565b60006020828403121561299557600080fd5b8151610ac7816123b5565b61ffff861681526001600160a01b03851660208201526040810184905261016081016129cf60608301856127e2565b6129dc60e08301846127e2565b9695505050505050565b61ffff861681526001600160a01b0385811660208301528416604082015261016081016129cf60608301856127e2565b61ffff861681526001600160a01b038516602082015260ff8416604082015261016081016129cf60608301856127e2565b634e487b7160e01b600052601160045260246000fd5b600082821015612a6f57612a6f612a47565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152612ac8608083018486612826565b979650505050505050565b61ffff86168152608060208201526000612af1608083018688612826565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215612b2057600080fd5b81516001600160401b03811115612b3657600080fd5b8201601f81018413612b4757600080fd5b8051612b5561245682612410565b818152856020838501011115612b6a57600080fd5b611b538260208301602086016125e1565b61ffff85168152608060208201526000612b986080830186612611565b6001600160401b03851660408401528281036060840152612ac88185612611565b60008251612bcb8184602087016125e1565b9190910192915050565b61ffff8616815260a060208201526000612bf260a0830187612611565b6001600160401b03861660408401528281036060840152612c138186612611565b90508281036080840152612c278185612611565b98975050505050505050565b600082612c5057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c6f57612c6f612a47565b500290565b60008219821115612c8757612c87612a47565b500190565b61ffff8716815260c060208201526000612ca960c0830188612611565b8281036040840152612cbb8188612611565b6001600160a01b0387811660608601528616608085015283810360a08501529050612898818561261156fea2646970667358221220b85af53a2a319ccabd0aabf707afce404bbc10fcde62f9d2c0840fa8d9e9f31364736f6c634300080a0033",
"deployedBytecode": "0x6080604052600436106101b65760003560e01c80637533d788116100ec578063baf3292d1161008a578063df2a5b3b11610064578063df2a5b3b14610569578063eb8d72b714610589578063f2fde38b146105a9578063f5ecbdbc146105c957600080fd5b8063baf3292d14610516578063cbed8b9c14610536578063d1deba1f1461055657600080fd5b8063950c8a74116100c6578063950c8a74146104825780639f38369a146104a2578063a6c3d165146104c2578063b353aaa7146104e257600080fd5b80637533d788146103ff5780638cfd8f5c1461042c5780638da5cb5b1461046457600080fd5b806342d65a8d116101595780635b8c41e6116101335780635b8c41e61461034d57806365d092d0146103aa57806366ad5c8a146103ca578063715018a6146103ea57600080fd5b806342d65a8d146102e65780634a759489146103065780634f2bfe5b1461031957600080fd5b806316334c8f1161019557806316334c8f1461021d578063363bf0de146102575780633d8b38f6146102a3578063416b154a146102d357600080fd5b80621d3567146101bb57806307e0db17146101dd57806310ddb137146101fd575b600080fd5b3480156101c757600080fd5b506101db6101d636600461224e565b6105e9565b005b3480156101e957600080fd5b506101db6101f83660046122e1565b61081a565b34801561020957600080fd5b506101db6102183660046122e1565b6108a3565b34801561022957600080fd5b5061023d6102383660046122fc565b6108fb565b604080519283526020830191909152015b60405180910390f35b34801561026357600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024e565b3480156102af57600080fd5b506102c36102be366004612363565b610a01565b604051901515815260200161024e565b6101db6102e136600461248d565b610ace565b3480156102f257600080fd5b506101db610301366004612363565b610e03565b6101db6103143660046124ff565b610e89565b34801561032557600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561035957600080fd5b5061039c610368366004612584565b6004602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b60405190815260200161024e565b3480156103b657600080fd5b5061023d6103c53660046122fc565b6112a0565b3480156103d657600080fd5b506101db6103e536600461224e565b611303565b3480156103f657600080fd5b506101db6113df565b34801561040b57600080fd5b5061041f61041a3660046122e1565b6113f3565b60405161024e919061263d565b34801561043857600080fd5b5061039c610447366004612650565b600260209081526000928352604080842090915290825290205481565b34801561047057600080fd5b506000546001600160a01b031661028b565b34801561048e57600080fd5b5060035461028b906001600160a01b031681565b3480156104ae57600080fd5b5061041f6104bd3660046122e1565b61148d565b3480156104ce57600080fd5b506101db6104dd366004612363565b61159d565b3480156104ee57600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b506101db610531366004612683565b611630565b34801561054257600080fd5b506101db6105513660046126a0565b61168c565b6101db61056436600461224e565b611721565b34801561057557600080fd5b506101db61058436600461270e565b611926565b34801561059557600080fd5b506101db6105a4366004612363565b6119d8565b3480156105b557600080fd5b506101db6105c4366004612683565b611a32565b3480156105d557600080fd5b5061041f6105e436600461274a565b611aab565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146106665760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152600160205260408120805461068490612797565b80601f01602080910402602001604051908101604052809291908181526020018280546106b090612797565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b50505050509050805186869050148015610718575060008151115b801561074057508051602082012060405161073690889088906127d2565b6040518091039020145b61079b5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b606482015260840161065d565b6108118787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b5c92505050565b50505050505050565b610822611c66565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050505050565b6108ab611c66565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb1379060240161086e565b6000806000600560029054906101000a900461ffff1660405180608001604052806000600f0b81526020016000600f0b815260200160008152602001600081525060405160200161094d92919061280e565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906109b3908a90309086908c908c908c9060040161284f565b6040805180830381865afa1580156109cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f391906128a5565b925092505094509492505050565b61ffff831660009081526001602052604081208054829190610a2290612797565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612797565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b505050505090508383604051610ab29291906127d2565b60405180910390208180519060200120149150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5291906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906128f4565b9050610bf28160400151611cc0565b15610d7d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610c5257600080fd5b505af1158015610c66573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec91906128c9565b60405163d1febfb960e01b8152600481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1febfb9906024016080604051808303816000875af1158015610d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7a91906128f4565b90505b6000600560029054906101000a900461ffff1682604051602001610da292919061280e565b6040516020818303038152906040529050610dc1878288888834611cf1565b7fd76af77f4ffbd9969fdb15b1c1268d40cd4bf1093905e67639f369cb9f44c1728783604051610df292919061280e565b60405180910390a150505050505050565b610e0b611c66565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610e5b90869086908690600401612965565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610811573d6000803e3d6000fd5b60405163010ae75760e01b81526001600160a01b0386811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063010ae757906024016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a91906128c9565b6040516328d09d4760e01b81526001600160a01b038881166004830152602482018390529192506000917f000000000000000000000000000000000000000000000000000000000000000016906328d09d47906044016080604051808303816000875af1158015610f8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb391906128f4565b60405163adc6358960e01b81526001600160a01b0389811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063adc6358990602401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104391906128c9565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c991906128c9565b60405163d1febfb960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1febfb9906024016080604051808303816000875af1158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906128f4565b6040516317b4eb8760e31b81526001600160a01b038c8116600483015261ffff8c1660248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063bda75c3890604401602060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190612983565b905060006001600160a01b03821661120c578b61120e565b815b6005546040519192506000916112339161ffff1690849089908b9089906020016129a0565b60405160208183030381529060405290506112528c828d8d8d34611cf1565b7f3689d0fa90a175cc766502dc62c2abdee9ca4b276d4315adf98339a8354755808c8e848a886040516112899594939291906129e6565b60405180910390a150505050505050505050505050565b6005546040805160808082018352600080835260208084018290528385018290526060808501839052855193840186528284528382018390528386018390528301829052935190948594859461094d9461ffff9093169386938493909101612a16565b3330146113615760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b606482015260840161065d565b6113d78686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611e8c92505050565b505050505050565b6113e7611c66565b6113f16000611ee4565b565b6001602052600090815260409020805461140c90612797565b80601f016020809104026020016040519081016040528092919081815260200182805461143890612797565b80156114855780601f1061145a57610100808354040283529160200191611485565b820191906000526020600020905b81548152906001019060200180831161146857829003601f168201915b505050505081565b61ffff81166000908152600160205260408120805460609291906114b090612797565b80601f01602080910402602001604051908101604052809291908181526020018280546114dc90612797565b80156115295780601f106114fe57610100808354040283529160200191611529565b820191906000526020600020905b81548152906001019060200180831161150c57829003601f168201915b505050505090508051600014156115825760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161065d565b610ac76000601483516115959190612a5d565b839190611f34565b6115a5611c66565b8181306040516020016115ba93929190612a74565b60408051601f1981840301815291815261ffff851660009081526001602090815291902082516115ef939192909101906120cb565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161162393929190612965565b60405180910390a1505050565b611638611c66565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b611694611c66565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906116e89088908890889088908890600401612a9a565b600060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050505050505050565b61ffff8616600090815260046020526040808220905161174490889088906127d2565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806117c45760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b606482015260840161065d565b8083836040516117d59291906127d2565b6040518091039020146118345760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b606482015260840161065d565b61ffff8716600090815260046020526040808220905161185790899089906127d2565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f880182900482028301820190528682526118ef918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611e8c92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051610df2959493929190612ad3565b61192e611c66565b600081116119765760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b604482015260640161065d565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611623565b6119e0611c66565b61ffff831660009081526001602052604090206119fe90838361214f565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161162393929190612965565b611a3a611c66565b6001600160a01b038116611a9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065d565b611aa881611ee4565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611b2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b539190810190612b0e565b95945050505050565b600080611bbf5a60966366ad5c8a60e01b89898989604051602401611b849493929190612b7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915230929190612041565b91509150816113d7578280519060200120600460008861ffff1661ffff16815260200190815260200160002086604051611bf99190612bb9565b9081526040805191829003602090810183206001600160401b0389166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90611c569088908890889088908790612bd5565b60405180910390a1505050505050565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b600042611cd062093a8084612c33565b611cdd9062093a80612c55565b611cea9062093a80612c74565b1092915050565b61ffff861660009081526001602052604081208054611d0f90612797565b80601f0160208091040260200160405190810160405280929190818152602001828054611d3b90612797565b8015611d885780601f10611d5d57610100808354040283529160200191611d88565b820191906000526020600020905b815481529060010190602001808311611d6b57829003601f168201915b50505050509050805160001415611dfa5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b606482015260840161065d565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490611e51908b9086908c908c908c908c90600401612c8c565b6000604051808303818588803b158015611e6a57600080fd5b505af1158015611e7e573d6000803e3d6000fd5b505050505050505050505050565b60405162461bcd60e51b815260206004820152602760248201527f4f6d6e69566f74696e67457363726f773a2063616e6e6f742072656365697665604482015266206c7a4d73677360c81b606482015260840161065d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606081611f4281601f612c74565b1015611f815760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161065d565b611f8b8284612c74565b84511015611fcf5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161065d565b606082158015611fee5760405191506000825260208201604052612038565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561202757805183526020928301920161200f565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b03811115612066576120666123ca565b6040519080825280601f01601f191660200182016040528015612090576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156120b2578692505b828152826000602083013e909890975095505050505050565b8280546120d790612797565b90600052602060002090601f0160209004810192826120f9576000855561213f565b82601f1061211257805160ff191683800117855561213f565b8280016001018555821561213f579182015b8281111561213f578251825591602001919060010190612124565b5061214b9291506121c3565b5090565b82805461215b90612797565b90600052602060002090601f01602090048101928261217d576000855561213f565b82601f106121965782800160ff1982351617855561213f565b8280016001018555821561213f579182015b8281111561213f5782358255916020019190600101906121a8565b5b8082111561214b57600081556001016121c4565b803561ffff811681146121ea57600080fd5b919050565b60008083601f84011261220157600080fd5b5081356001600160401b0381111561221857600080fd5b60208301915083602082850101111561223057600080fd5b9250929050565b80356001600160401b03811681146121ea57600080fd5b6000806000806000806080878903121561226757600080fd5b612270876121d8565b955060208701356001600160401b038082111561228c57600080fd5b6122988a838b016121ef565b90975095508591506122ac60408a01612237565b945060608901359150808211156122c257600080fd5b506122cf89828a016121ef565b979a9699509497509295939492505050565b6000602082840312156122f357600080fd5b610ac7826121d8565b6000806000806060858703121561231257600080fd5b61231b856121d8565b93506020850135801515811461233057600080fd5b925060408501356001600160401b0381111561234b57600080fd5b612357878288016121ef565b95989497509550505050565b60008060006040848603121561237857600080fd5b612381846121d8565b925060208401356001600160401b0381111561239c57600080fd5b6123a8868287016121ef565b9497909650939450505050565b6001600160a01b0381168114611aa857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612408576124086123ca565b604052919050565b60006001600160401b03821115612429576124296123ca565b50601f01601f191660200190565b600082601f83011261244857600080fd5b813561245b61245682612410565b6123e0565b81815284602083860101111561247057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156124a357600080fd5b6124ac856121d8565b935060208501356124bc816123b5565b925060408501356124cc816123b5565b915060608501356001600160401b038111156124e757600080fd5b6124f387828801612437565b91505092959194509250565b600080600080600060a0868803121561251757600080fd5b8535612522816123b5565b9450612530602087016121d8565b93506040860135612540816123b5565b92506060860135612550816123b5565b915060808601356001600160401b0381111561256b57600080fd5b61257788828901612437565b9150509295509295909350565b60008060006060848603121561259957600080fd5b6125a2846121d8565b925060208401356001600160401b038111156125bd57600080fd5b6125c986828701612437565b9250506125d860408501612237565b90509250925092565b60005b838110156125fc5781810151838201526020016125e4565b8381111561260b576000848401525b50505050565b600081518084526126298160208601602086016125e1565b601f01601f19169290920160200192915050565b602081526000610ac76020830184612611565b6000806040838503121561266357600080fd5b61266c836121d8565b915061267a602084016121d8565b90509250929050565b60006020828403121561269557600080fd5b8135610ac7816123b5565b6000806000806000608086880312156126b857600080fd5b6126c1866121d8565b94506126cf602087016121d8565b93506040860135925060608601356001600160401b038111156126f157600080fd5b6126fd888289016121ef565b969995985093965092949392505050565b60008060006060848603121561272357600080fd5b61272c846121d8565b925061273a602085016121d8565b9150604084013590509250925092565b6000806000806080858703121561276057600080fd5b612769856121d8565b9350612777602086016121d8565b92506040850135612787816123b5565b9396929550929360600135925050565b600181811c908216806127ab57607f821691505b602082108114156127cc57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b8051600f0b82526020810151600f0b602083015260408101516040830152606081015160608301525050565b61ffff8316815260a08101610ac760208301846127e2565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff871681526001600160a01b038616602082015260a06040820181905260009061287d90830187612611565b85151560608401528281036080840152612898818587612826565b9998505050505050505050565b600080604083850312156128b857600080fd5b505080516020909101519092909150565b6000602082840312156128db57600080fd5b5051919050565b8051600f81900b81146121ea57600080fd5b60006080828403121561290657600080fd5b604051608081018181106001600160401b0382111715612928576129286123ca565b604052612934836128e2565b8152612942602084016128e2565b602082015260408301516040820152606083015160608201528091505092915050565b61ffff84168152604060208201526000611b53604083018486612826565b60006020828403121561299557600080fd5b8151610ac7816123b5565b61ffff861681526001600160a01b03851660208201526040810184905261016081016129cf60608301856127e2565b6129dc60e08301846127e2565b9695505050505050565b61ffff861681526001600160a01b0385811660208301528416604082015261016081016129cf60608301856127e2565b61ffff861681526001600160a01b038516602082015260ff8416604082015261016081016129cf60608301856127e2565b634e487b7160e01b600052601160045260246000fd5b600082821015612a6f57612a6f612a47565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152612ac8608083018486612826565b979650505050505050565b61ffff86168152608060208201526000612af1608083018688612826565b6001600160401b0394909416604083015250606001529392505050565b600060208284031215612b2057600080fd5b81516001600160401b03811115612b3657600080fd5b8201601f81018413612b4757600080fd5b8051612b5561245682612410565b818152856020838501011115612b6a57600080fd5b611b538260208301602086016125e1565b61ffff85168152608060208201526000612b986080830186612611565b6001600160401b03851660408401528281036060840152612ac88185612611565b60008251612bcb8184602087016125e1565b9190910192915050565b61ffff8616815260a060208201526000612bf260a0830187612611565b6001600160401b03861660408401528281036060840152612c138186612611565b90508281036080840152612c278185612611565b98975050505050505050565b600082612c5057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612c6f57612c6f612a47565b500290565b60008219821115612c8757612c87612a47565b500190565b61ffff8716815260c060208201526000612ca960c0830188612611565b8281036040840152612cbb8188612611565b6001600160a01b0387811660608601528616608085015283810360a08501529050612898818561261156fea2646970667358221220b85af53a2a319ccabd0aabf707afce404bbc10fcde62f9d2c0840fa8d9e9f31364736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}