@keep-network/tbtc-v2 0.1.1-dev.3 → 0.1.1-dev.32

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.
Files changed (42) hide show
  1. package/README.adoc +12 -0
  2. package/artifacts/TBTC.json +19 -18
  3. package/artifacts/TBTCToken.json +19 -18
  4. package/artifacts/VendingMachine.json +20 -19
  5. package/artifacts/solcInputs/590fbe282bf8b630b15f2da419b402f1.json +197 -0
  6. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  7. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  8. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  9. package/build/contracts/bank/Bank.sol/Bank.json +43 -2
  10. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
  11. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +96 -0
  12. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  13. package/build/contracts/bridge/Bridge.sol/Bridge.json +1727 -63
  14. package/build/contracts/bridge/Bridge.sol/IRelay.dbg.json +4 -0
  15. package/build/contracts/bridge/Bridge.sol/IRelay.json +37 -0
  16. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +4 -0
  17. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +10 -0
  18. package/build/contracts/bridge/Frauds.sol/Frauds.dbg.json +4 -0
  19. package/build/contracts/bridge/Frauds.sol/Frauds.json +138 -0
  20. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  21. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  22. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +4 -0
  23. package/build/contracts/bridge/Wallets.sol/Wallets.json +138 -0
  24. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  25. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  26. package/build/contracts/vault/IVault.sol/IVault.dbg.json +4 -0
  27. package/build/contracts/vault/IVault.sol/IVault.json +47 -0
  28. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  29. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +38 -2
  30. package/contracts/GovernanceUtils.sol +1 -1
  31. package/contracts/bank/Bank.sol +69 -18
  32. package/contracts/bridge/BitcoinTx.sol +241 -0
  33. package/contracts/bridge/Bridge.sol +2234 -104
  34. package/contracts/bridge/EcdsaLib.sol +30 -0
  35. package/contracts/bridge/Frauds.sol +529 -0
  36. package/contracts/bridge/VendingMachine.sol +1 -1
  37. package/contracts/bridge/Wallets.sol +591 -0
  38. package/contracts/token/TBTC.sol +1 -1
  39. package/contracts/vault/IVault.sol +60 -0
  40. package/contracts/vault/TBTCVault.sol +50 -8
  41. package/package.json +28 -24
  42. package/artifacts/solcInputs/cebfa5efa019cb9c8c5e23e38703b883.json +0 -113
@@ -4,14 +4,39 @@
4
4
  "sourceName": "contracts/bridge/Bridge.sol",
5
5
  "abi": [
6
6
  {
7
- "anonymous": false,
8
7
  "inputs": [
9
8
  {
10
- "indexed": false,
9
+ "internalType": "address",
10
+ "name": "_bank",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_relay",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_treasury",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "address",
25
+ "name": "_ecdsaWalletRegistry",
26
+ "type": "address"
27
+ },
28
+ {
11
29
  "internalType": "uint256",
12
- "name": "depositId",
30
+ "name": "_txProofDifficultyFactor",
13
31
  "type": "uint256"
14
- },
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "anonymous": false,
39
+ "inputs": [
15
40
  {
16
41
  "indexed": false,
17
42
  "internalType": "bytes32",
@@ -20,9 +45,9 @@
20
45
  },
21
46
  {
22
47
  "indexed": false,
23
- "internalType": "uint8",
48
+ "internalType": "uint32",
24
49
  "name": "fundingOutputIndex",
25
- "type": "uint8"
50
+ "type": "uint32"
26
51
  },
27
52
  {
28
53
  "indexed": false,
@@ -33,20 +58,32 @@
33
58
  {
34
59
  "indexed": false,
35
60
  "internalType": "uint64",
36
- "name": "blindingFactor",
61
+ "name": "amount",
37
62
  "type": "uint64"
38
63
  },
39
64
  {
40
65
  "indexed": false,
41
- "internalType": "bytes",
42
- "name": "refundPubKey",
43
- "type": "bytes"
66
+ "internalType": "bytes8",
67
+ "name": "blindingFactor",
68
+ "type": "bytes8"
44
69
  },
45
70
  {
46
71
  "indexed": false,
47
- "internalType": "uint64",
48
- "name": "amount",
49
- "type": "uint64"
72
+ "internalType": "bytes20",
73
+ "name": "walletPubKeyHash",
74
+ "type": "bytes20"
75
+ },
76
+ {
77
+ "indexed": false,
78
+ "internalType": "bytes20",
79
+ "name": "refundPubKeyHash",
80
+ "type": "bytes20"
81
+ },
82
+ {
83
+ "indexed": false,
84
+ "internalType": "bytes4",
85
+ "name": "refundLocktime",
86
+ "type": "bytes4"
50
87
  },
51
88
  {
52
89
  "indexed": false,
@@ -59,118 +96,1745 @@
59
96
  "type": "event"
60
97
  },
61
98
  {
99
+ "anonymous": false,
62
100
  "inputs": [
63
101
  {
102
+ "indexed": false,
103
+ "internalType": "bytes20",
104
+ "name": "walletPubKeyHash",
105
+ "type": "bytes20"
106
+ },
107
+ {
108
+ "indexed": false,
64
109
  "internalType": "bytes32",
65
- "name": "fundingTxHash",
110
+ "name": "sweepTxHash",
111
+ "type": "bytes32"
112
+ }
113
+ ],
114
+ "name": "DepositsSwept",
115
+ "type": "event"
116
+ },
117
+ {
118
+ "anonymous": false,
119
+ "inputs": [
120
+ {
121
+ "indexed": false,
122
+ "internalType": "bytes20",
123
+ "name": "walletPublicKeyHash",
124
+ "type": "bytes20"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "bytes32",
129
+ "name": "sighash",
130
+ "type": "bytes32"
131
+ }
132
+ ],
133
+ "name": "FraudChallengeDefeatTimedOut",
134
+ "type": "event"
135
+ },
136
+ {
137
+ "anonymous": false,
138
+ "inputs": [
139
+ {
140
+ "indexed": false,
141
+ "internalType": "uint256",
142
+ "name": "newFraudChallengeDefeatTimeout",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "name": "FraudChallengeDefeatTimeoutUpdated",
147
+ "type": "event"
148
+ },
149
+ {
150
+ "anonymous": false,
151
+ "inputs": [
152
+ {
153
+ "indexed": false,
154
+ "internalType": "bytes20",
155
+ "name": "walletPublicKeyHash",
156
+ "type": "bytes20"
157
+ },
158
+ {
159
+ "indexed": false,
160
+ "internalType": "bytes32",
161
+ "name": "sighash",
162
+ "type": "bytes32"
163
+ }
164
+ ],
165
+ "name": "FraudChallengeDefeated",
166
+ "type": "event"
167
+ },
168
+ {
169
+ "anonymous": false,
170
+ "inputs": [
171
+ {
172
+ "indexed": false,
173
+ "internalType": "uint256",
174
+ "name": "newFraudChallengeDepositAmount",
175
+ "type": "uint256"
176
+ }
177
+ ],
178
+ "name": "FraudChallengeDepositAmountUpdated",
179
+ "type": "event"
180
+ },
181
+ {
182
+ "anonymous": false,
183
+ "inputs": [
184
+ {
185
+ "indexed": false,
186
+ "internalType": "bytes20",
187
+ "name": "walletPublicKeyHash",
188
+ "type": "bytes20"
189
+ },
190
+ {
191
+ "indexed": false,
192
+ "internalType": "bytes32",
193
+ "name": "sighash",
66
194
  "type": "bytes32"
67
195
  },
68
196
  {
197
+ "indexed": false,
69
198
  "internalType": "uint8",
70
- "name": "fundingOutputIndex",
199
+ "name": "v",
71
200
  "type": "uint8"
72
201
  },
73
202
  {
74
- "internalType": "uint64",
75
- "name": "blindingFactor",
76
- "type": "uint64"
203
+ "indexed": false,
204
+ "internalType": "bytes32",
205
+ "name": "r",
206
+ "type": "bytes32"
77
207
  },
78
208
  {
79
- "internalType": "bytes",
80
- "name": "refundPubKey",
81
- "type": "bytes"
209
+ "indexed": false,
210
+ "internalType": "bytes32",
211
+ "name": "s",
212
+ "type": "bytes32"
213
+ }
214
+ ],
215
+ "name": "FraudChallengeSubmitted",
216
+ "type": "event"
217
+ },
218
+ {
219
+ "anonymous": false,
220
+ "inputs": [
221
+ {
222
+ "indexed": false,
223
+ "internalType": "uint256",
224
+ "name": "newFraudNotifierRewardMultiplier",
225
+ "type": "uint256"
226
+ }
227
+ ],
228
+ "name": "FraudNotifierRewardMultiplierUpdated",
229
+ "type": "event"
230
+ },
231
+ {
232
+ "anonymous": false,
233
+ "inputs": [
234
+ {
235
+ "indexed": false,
236
+ "internalType": "uint256",
237
+ "name": "newFraudSlashingAmount",
238
+ "type": "uint256"
239
+ }
240
+ ],
241
+ "name": "FraudSlashingAmountUpdated",
242
+ "type": "event"
243
+ },
244
+ {
245
+ "anonymous": false,
246
+ "inputs": [
247
+ {
248
+ "indexed": false,
249
+ "internalType": "bytes20",
250
+ "name": "walletPubKeyHash",
251
+ "type": "bytes20"
82
252
  },
83
253
  {
84
- "internalType": "uint64",
85
- "name": "amount",
86
- "type": "uint64"
254
+ "indexed": false,
255
+ "internalType": "bytes32",
256
+ "name": "movingFundsTxHash",
257
+ "type": "bytes32"
258
+ }
259
+ ],
260
+ "name": "MovingFundsCompleted",
261
+ "type": "event"
262
+ },
263
+ {
264
+ "anonymous": false,
265
+ "inputs": [
266
+ {
267
+ "indexed": true,
268
+ "internalType": "bytes32",
269
+ "name": "ecdsaWalletID",
270
+ "type": "bytes32"
87
271
  },
88
272
  {
273
+ "indexed": true,
274
+ "internalType": "bytes20",
275
+ "name": "walletPubKeyHash",
276
+ "type": "bytes20"
277
+ }
278
+ ],
279
+ "name": "NewWalletRegistered",
280
+ "type": "event"
281
+ },
282
+ {
283
+ "anonymous": false,
284
+ "inputs": [],
285
+ "name": "NewWalletRequested",
286
+ "type": "event"
287
+ },
288
+ {
289
+ "anonymous": false,
290
+ "inputs": [
291
+ {
292
+ "indexed": true,
89
293
  "internalType": "address",
90
- "name": "vault",
294
+ "name": "previousOwner",
295
+ "type": "address"
296
+ },
297
+ {
298
+ "indexed": true,
299
+ "internalType": "address",
300
+ "name": "newOwner",
91
301
  "type": "address"
92
302
  }
93
303
  ],
94
- "name": "revealDeposit",
95
- "outputs": [],
96
- "stateMutability": "nonpayable",
97
- "type": "function"
304
+ "name": "OwnershipTransferred",
305
+ "type": "event"
98
306
  },
99
307
  {
308
+ "anonymous": false,
100
309
  "inputs": [
101
310
  {
102
- "internalType": "bytes4",
103
- "name": "txVersion",
104
- "type": "bytes4"
311
+ "indexed": false,
312
+ "internalType": "bytes20",
313
+ "name": "walletPubKeyHash",
314
+ "type": "bytes20"
105
315
  },
106
316
  {
317
+ "indexed": false,
107
318
  "internalType": "bytes",
108
- "name": "txInputVector",
319
+ "name": "redeemerOutputScript",
109
320
  "type": "bytes"
110
321
  },
111
322
  {
112
- "internalType": "bytes",
113
- "name": "txOutput",
114
- "type": "bytes"
323
+ "indexed": false,
324
+ "internalType": "address",
325
+ "name": "redeemer",
326
+ "type": "address"
115
327
  },
116
328
  {
117
- "internalType": "bytes4",
118
- "name": "txLocktime",
119
- "type": "bytes4"
329
+ "indexed": false,
330
+ "internalType": "uint64",
331
+ "name": "requestedAmount",
332
+ "type": "uint64"
120
333
  },
121
334
  {
122
- "internalType": "bytes",
123
- "name": "merkleProof",
124
- "type": "bytes"
335
+ "indexed": false,
336
+ "internalType": "uint64",
337
+ "name": "treasuryFee",
338
+ "type": "uint64"
125
339
  },
126
340
  {
127
- "internalType": "uint256",
128
- "name": "txIndexInBlock",
129
- "type": "uint256"
341
+ "indexed": false,
342
+ "internalType": "uint64",
343
+ "name": "txMaxFee",
344
+ "type": "uint64"
345
+ }
346
+ ],
347
+ "name": "RedemptionRequested",
348
+ "type": "event"
349
+ },
350
+ {
351
+ "anonymous": false,
352
+ "inputs": [
353
+ {
354
+ "indexed": false,
355
+ "internalType": "bytes20",
356
+ "name": "walletPubKeyHash",
357
+ "type": "bytes20"
130
358
  },
131
359
  {
360
+ "indexed": false,
132
361
  "internalType": "bytes",
133
- "name": "bitcoinHeaders",
362
+ "name": "redeemerOutputScript",
134
363
  "type": "bytes"
135
364
  }
136
365
  ],
137
- "name": "sweep",
138
- "outputs": [],
139
- "stateMutability": "nonpayable",
140
- "type": "function"
366
+ "name": "RedemptionTimedOut",
367
+ "type": "event"
141
368
  },
142
369
  {
370
+ "anonymous": false,
143
371
  "inputs": [
144
372
  {
145
- "internalType": "uint256",
146
- "name": "",
147
- "type": "uint256"
373
+ "indexed": false,
374
+ "internalType": "bytes20",
375
+ "name": "walletPubKeyHash",
376
+ "type": "bytes20"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "bytes32",
381
+ "name": "redemptionTxHash",
382
+ "type": "bytes32"
148
383
  }
149
384
  ],
150
- "name": "unswept",
151
- "outputs": [
385
+ "name": "RedemptionsCompleted",
386
+ "type": "event"
387
+ },
388
+ {
389
+ "anonymous": false,
390
+ "inputs": [
152
391
  {
153
- "internalType": "uint64",
154
- "name": "amount",
155
- "type": "uint64"
392
+ "indexed": true,
393
+ "internalType": "address",
394
+ "name": "vault",
395
+ "type": "address"
396
+ },
397
+ {
398
+ "indexed": false,
399
+ "internalType": "bool",
400
+ "name": "isTrusted",
401
+ "type": "bool"
402
+ }
403
+ ],
404
+ "name": "VaultStatusUpdated",
405
+ "type": "event"
406
+ },
407
+ {
408
+ "anonymous": false,
409
+ "inputs": [
410
+ {
411
+ "indexed": false,
412
+ "internalType": "uint64",
413
+ "name": "newMinBtcBalance",
414
+ "type": "uint64"
415
+ },
416
+ {
417
+ "indexed": false,
418
+ "internalType": "uint64",
419
+ "name": "newMaxBtcBalance",
420
+ "type": "uint64"
421
+ }
422
+ ],
423
+ "name": "WalletBtcBalanceRangeUpdated",
424
+ "type": "event"
425
+ },
426
+ {
427
+ "anonymous": false,
428
+ "inputs": [
429
+ {
430
+ "indexed": true,
431
+ "internalType": "bytes32",
432
+ "name": "ecdsaWalletID",
433
+ "type": "bytes32"
434
+ },
435
+ {
436
+ "indexed": true,
437
+ "internalType": "bytes20",
438
+ "name": "walletPubKeyHash",
439
+ "type": "bytes20"
440
+ }
441
+ ],
442
+ "name": "WalletClosed",
443
+ "type": "event"
444
+ },
445
+ {
446
+ "anonymous": false,
447
+ "inputs": [
448
+ {
449
+ "indexed": false,
450
+ "internalType": "uint32",
451
+ "name": "newCreationPeriod",
452
+ "type": "uint32"
453
+ }
454
+ ],
455
+ "name": "WalletCreationPeriodUpdated",
456
+ "type": "event"
457
+ },
458
+ {
459
+ "anonymous": false,
460
+ "inputs": [
461
+ {
462
+ "indexed": false,
463
+ "internalType": "uint32",
464
+ "name": "newMaxAge",
465
+ "type": "uint32"
466
+ }
467
+ ],
468
+ "name": "WalletMaxAgeUpdated",
469
+ "type": "event"
470
+ },
471
+ {
472
+ "anonymous": false,
473
+ "inputs": [
474
+ {
475
+ "indexed": true,
476
+ "internalType": "bytes32",
477
+ "name": "ecdsaWalletID",
478
+ "type": "bytes32"
479
+ },
480
+ {
481
+ "indexed": true,
482
+ "internalType": "bytes20",
483
+ "name": "walletPubKeyHash",
484
+ "type": "bytes20"
485
+ }
486
+ ],
487
+ "name": "WalletMovingFunds",
488
+ "type": "event"
489
+ },
490
+ {
491
+ "anonymous": false,
492
+ "inputs": [
493
+ {
494
+ "indexed": true,
495
+ "internalType": "bytes32",
496
+ "name": "ecdsaWalletID",
497
+ "type": "bytes32"
498
+ },
499
+ {
500
+ "indexed": true,
501
+ "internalType": "bytes20",
502
+ "name": "walletPubKeyHash",
503
+ "type": "bytes20"
504
+ }
505
+ ],
506
+ "name": "WalletTerminated",
507
+ "type": "event"
508
+ },
509
+ {
510
+ "inputs": [
511
+ {
512
+ "internalType": "bytes32",
513
+ "name": "ecdsaWalletID",
514
+ "type": "bytes32"
515
+ },
516
+ {
517
+ "internalType": "bytes32",
518
+ "name": "publicKeyX",
519
+ "type": "bytes32"
520
+ },
521
+ {
522
+ "internalType": "bytes32",
523
+ "name": "publicKeyY",
524
+ "type": "bytes32"
525
+ }
526
+ ],
527
+ "name": "__ecdsaWalletCreatedCallback",
528
+ "outputs": [],
529
+ "stateMutability": "nonpayable",
530
+ "type": "function"
531
+ },
532
+ {
533
+ "inputs": [
534
+ {
535
+ "internalType": "bytes32",
536
+ "name": "",
537
+ "type": "bytes32"
538
+ },
539
+ {
540
+ "internalType": "bytes32",
541
+ "name": "publicKeyX",
542
+ "type": "bytes32"
543
+ },
544
+ {
545
+ "internalType": "bytes32",
546
+ "name": "publicKeyY",
547
+ "type": "bytes32"
548
+ }
549
+ ],
550
+ "name": "__ecdsaWalletHeartbeatFailedCallback",
551
+ "outputs": [],
552
+ "stateMutability": "nonpayable",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [],
557
+ "name": "bank",
558
+ "outputs": [
559
+ {
560
+ "internalType": "contract Bank",
561
+ "name": "",
562
+ "type": "address"
563
+ }
564
+ ],
565
+ "stateMutability": "view",
566
+ "type": "function"
567
+ },
568
+ {
569
+ "inputs": [
570
+ {
571
+ "internalType": "bytes",
572
+ "name": "walletPublicKey",
573
+ "type": "bytes"
574
+ },
575
+ {
576
+ "internalType": "bytes",
577
+ "name": "preimage",
578
+ "type": "bytes"
579
+ },
580
+ {
581
+ "internalType": "bool",
582
+ "name": "witness",
583
+ "type": "bool"
584
+ }
585
+ ],
586
+ "name": "defeatFraudChallenge",
587
+ "outputs": [],
588
+ "stateMutability": "nonpayable",
589
+ "type": "function"
590
+ },
591
+ {
592
+ "inputs": [],
593
+ "name": "depositDustThreshold",
594
+ "outputs": [
595
+ {
596
+ "internalType": "uint64",
597
+ "name": "",
598
+ "type": "uint64"
599
+ }
600
+ ],
601
+ "stateMutability": "view",
602
+ "type": "function"
603
+ },
604
+ {
605
+ "inputs": [],
606
+ "name": "depositTreasuryFeeDivisor",
607
+ "outputs": [
608
+ {
609
+ "internalType": "uint64",
610
+ "name": "",
611
+ "type": "uint64"
612
+ }
613
+ ],
614
+ "stateMutability": "view",
615
+ "type": "function"
616
+ },
617
+ {
618
+ "inputs": [],
619
+ "name": "depositTxMaxFee",
620
+ "outputs": [
621
+ {
622
+ "internalType": "uint64",
623
+ "name": "",
624
+ "type": "uint64"
625
+ }
626
+ ],
627
+ "stateMutability": "view",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "uint256",
634
+ "name": "",
635
+ "type": "uint256"
636
+ }
637
+ ],
638
+ "name": "deposits",
639
+ "outputs": [
640
+ {
641
+ "internalType": "address",
642
+ "name": "depositor",
643
+ "type": "address"
644
+ },
645
+ {
646
+ "internalType": "uint64",
647
+ "name": "amount",
648
+ "type": "uint64"
649
+ },
650
+ {
651
+ "internalType": "uint32",
652
+ "name": "revealedAt",
653
+ "type": "uint32"
654
+ },
655
+ {
656
+ "internalType": "address",
657
+ "name": "vault",
658
+ "type": "address"
659
+ },
660
+ {
661
+ "internalType": "uint64",
662
+ "name": "treasuryFee",
663
+ "type": "uint64"
664
+ },
665
+ {
666
+ "internalType": "uint32",
667
+ "name": "sweptAt",
668
+ "type": "uint32"
669
+ }
670
+ ],
671
+ "stateMutability": "view",
672
+ "type": "function"
673
+ },
674
+ {
675
+ "inputs": [
676
+ {
677
+ "internalType": "uint256",
678
+ "name": "challengeKey",
679
+ "type": "uint256"
680
+ }
681
+ ],
682
+ "name": "fraudChallenges",
683
+ "outputs": [
684
+ {
685
+ "components": [
686
+ {
687
+ "internalType": "address",
688
+ "name": "challenger",
689
+ "type": "address"
690
+ },
691
+ {
692
+ "internalType": "uint256",
693
+ "name": "depositAmount",
694
+ "type": "uint256"
695
+ },
696
+ {
697
+ "internalType": "uint32",
698
+ "name": "reportedAt",
699
+ "type": "uint32"
700
+ },
701
+ {
702
+ "internalType": "bool",
703
+ "name": "resolved",
704
+ "type": "bool"
705
+ }
706
+ ],
707
+ "internalType": "struct Frauds.FraudChallenge",
708
+ "name": "",
709
+ "type": "tuple"
710
+ }
711
+ ],
712
+ "stateMutability": "view",
713
+ "type": "function"
714
+ },
715
+ {
716
+ "inputs": [],
717
+ "name": "getActiveWalletPubKeyHash",
718
+ "outputs": [
719
+ {
720
+ "internalType": "bytes20",
721
+ "name": "",
722
+ "type": "bytes20"
723
+ }
724
+ ],
725
+ "stateMutability": "view",
726
+ "type": "function"
727
+ },
728
+ {
729
+ "inputs": [],
730
+ "name": "getFraudParameters",
731
+ "outputs": [
732
+ {
733
+ "internalType": "uint256",
734
+ "name": "slashingAmount",
735
+ "type": "uint256"
736
+ },
737
+ {
738
+ "internalType": "uint256",
739
+ "name": "notifierRewardMultiplier",
740
+ "type": "uint256"
741
+ },
742
+ {
743
+ "internalType": "uint256",
744
+ "name": "challengeDefeatTimeout",
745
+ "type": "uint256"
746
+ },
747
+ {
748
+ "internalType": "uint256",
749
+ "name": "challengeDepositAmount",
750
+ "type": "uint256"
751
+ }
752
+ ],
753
+ "stateMutability": "view",
754
+ "type": "function"
755
+ },
756
+ {
757
+ "inputs": [
758
+ {
759
+ "internalType": "bytes20",
760
+ "name": "walletPubKeyHash",
761
+ "type": "bytes20"
762
+ }
763
+ ],
764
+ "name": "getWallet",
765
+ "outputs": [
766
+ {
767
+ "components": [
768
+ {
769
+ "internalType": "bytes32",
770
+ "name": "ecdsaWalletID",
771
+ "type": "bytes32"
772
+ },
773
+ {
774
+ "internalType": "bytes32",
775
+ "name": "mainUtxoHash",
776
+ "type": "bytes32"
777
+ },
778
+ {
779
+ "internalType": "uint64",
780
+ "name": "pendingRedemptionsValue",
781
+ "type": "uint64"
782
+ },
783
+ {
784
+ "internalType": "uint32",
785
+ "name": "createdAt",
786
+ "type": "uint32"
787
+ },
788
+ {
789
+ "internalType": "uint32",
790
+ "name": "movingFundsRequestedAt",
791
+ "type": "uint32"
792
+ },
793
+ {
794
+ "internalType": "enum Wallets.WalletState",
795
+ "name": "state",
796
+ "type": "uint8"
797
+ },
798
+ {
799
+ "internalType": "bytes32",
800
+ "name": "movingFundsTargetWalletsCommitmentHash",
801
+ "type": "bytes32"
802
+ }
803
+ ],
804
+ "internalType": "struct Wallets.Wallet",
805
+ "name": "",
806
+ "type": "tuple"
807
+ }
808
+ ],
809
+ "stateMutability": "view",
810
+ "type": "function"
811
+ },
812
+ {
813
+ "inputs": [],
814
+ "name": "getWalletsParameters",
815
+ "outputs": [
816
+ {
817
+ "internalType": "uint32",
818
+ "name": "creationPeriod",
819
+ "type": "uint32"
820
+ },
821
+ {
822
+ "internalType": "uint64",
823
+ "name": "minBtcBalance",
824
+ "type": "uint64"
825
+ },
826
+ {
827
+ "internalType": "uint64",
828
+ "name": "maxBtcBalance",
829
+ "type": "uint64"
830
+ },
831
+ {
832
+ "internalType": "uint32",
833
+ "name": "maxAge",
834
+ "type": "uint32"
835
+ }
836
+ ],
837
+ "stateMutability": "view",
838
+ "type": "function"
839
+ },
840
+ {
841
+ "inputs": [
842
+ {
843
+ "internalType": "address",
844
+ "name": "",
845
+ "type": "address"
846
+ }
847
+ ],
848
+ "name": "isVaultTrusted",
849
+ "outputs": [
850
+ {
851
+ "internalType": "bool",
852
+ "name": "",
853
+ "type": "bool"
854
+ }
855
+ ],
856
+ "stateMutability": "view",
857
+ "type": "function"
858
+ },
859
+ {
860
+ "inputs": [],
861
+ "name": "movingFundsTxMaxTotalFee",
862
+ "outputs": [
863
+ {
864
+ "internalType": "uint64",
865
+ "name": "",
866
+ "type": "uint64"
867
+ }
868
+ ],
869
+ "stateMutability": "view",
870
+ "type": "function"
871
+ },
872
+ {
873
+ "inputs": [
874
+ {
875
+ "internalType": "bytes20",
876
+ "name": "walletPubKeyHash",
877
+ "type": "bytes20"
878
+ },
879
+ {
880
+ "components": [
881
+ {
882
+ "internalType": "bytes32",
883
+ "name": "txHash",
884
+ "type": "bytes32"
885
+ },
886
+ {
887
+ "internalType": "uint32",
888
+ "name": "txOutputIndex",
889
+ "type": "uint32"
890
+ },
891
+ {
892
+ "internalType": "uint64",
893
+ "name": "txOutputValue",
894
+ "type": "uint64"
895
+ }
896
+ ],
897
+ "internalType": "struct BitcoinTx.UTXO",
898
+ "name": "walletMainUtxo",
899
+ "type": "tuple"
900
+ }
901
+ ],
902
+ "name": "notifyCloseableWallet",
903
+ "outputs": [],
904
+ "stateMutability": "nonpayable",
905
+ "type": "function"
906
+ },
907
+ {
908
+ "inputs": [
909
+ {
910
+ "internalType": "bytes",
911
+ "name": "walletPublicKey",
912
+ "type": "bytes"
913
+ },
914
+ {
915
+ "internalType": "bytes32",
916
+ "name": "sighash",
917
+ "type": "bytes32"
918
+ }
919
+ ],
920
+ "name": "notifyFraudChallengeDefeatTimeout",
921
+ "outputs": [],
922
+ "stateMutability": "nonpayable",
923
+ "type": "function"
924
+ },
925
+ {
926
+ "inputs": [
927
+ {
928
+ "internalType": "bytes20",
929
+ "name": "walletPubKeyHash",
930
+ "type": "bytes20"
156
931
  },
932
+ {
933
+ "internalType": "bytes",
934
+ "name": "redeemerOutputScript",
935
+ "type": "bytes"
936
+ }
937
+ ],
938
+ "name": "notifyRedemptionTimeout",
939
+ "outputs": [],
940
+ "stateMutability": "nonpayable",
941
+ "type": "function"
942
+ },
943
+ {
944
+ "inputs": [],
945
+ "name": "owner",
946
+ "outputs": [
947
+ {
948
+ "internalType": "address",
949
+ "name": "",
950
+ "type": "address"
951
+ }
952
+ ],
953
+ "stateMutability": "view",
954
+ "type": "function"
955
+ },
956
+ {
957
+ "inputs": [
958
+ {
959
+ "internalType": "uint256",
960
+ "name": "",
961
+ "type": "uint256"
962
+ }
963
+ ],
964
+ "name": "pendingRedemptions",
965
+ "outputs": [
966
+ {
967
+ "internalType": "address",
968
+ "name": "redeemer",
969
+ "type": "address"
970
+ },
971
+ {
972
+ "internalType": "uint64",
973
+ "name": "requestedAmount",
974
+ "type": "uint64"
975
+ },
976
+ {
977
+ "internalType": "uint64",
978
+ "name": "treasuryFee",
979
+ "type": "uint64"
980
+ },
981
+ {
982
+ "internalType": "uint64",
983
+ "name": "txMaxFee",
984
+ "type": "uint64"
985
+ },
986
+ {
987
+ "internalType": "uint32",
988
+ "name": "requestedAt",
989
+ "type": "uint32"
990
+ }
991
+ ],
992
+ "stateMutability": "view",
993
+ "type": "function"
994
+ },
995
+ {
996
+ "inputs": [],
997
+ "name": "redemptionDustThreshold",
998
+ "outputs": [
999
+ {
1000
+ "internalType": "uint64",
1001
+ "name": "",
1002
+ "type": "uint64"
1003
+ }
1004
+ ],
1005
+ "stateMutability": "view",
1006
+ "type": "function"
1007
+ },
1008
+ {
1009
+ "inputs": [],
1010
+ "name": "redemptionTimeout",
1011
+ "outputs": [
1012
+ {
1013
+ "internalType": "uint256",
1014
+ "name": "",
1015
+ "type": "uint256"
1016
+ }
1017
+ ],
1018
+ "stateMutability": "view",
1019
+ "type": "function"
1020
+ },
1021
+ {
1022
+ "inputs": [],
1023
+ "name": "redemptionTreasuryFeeDivisor",
1024
+ "outputs": [
1025
+ {
1026
+ "internalType": "uint64",
1027
+ "name": "",
1028
+ "type": "uint64"
1029
+ }
1030
+ ],
1031
+ "stateMutability": "view",
1032
+ "type": "function"
1033
+ },
1034
+ {
1035
+ "inputs": [],
1036
+ "name": "redemptionTxMaxFee",
1037
+ "outputs": [
1038
+ {
1039
+ "internalType": "uint64",
1040
+ "name": "",
1041
+ "type": "uint64"
1042
+ }
1043
+ ],
1044
+ "stateMutability": "view",
1045
+ "type": "function"
1046
+ },
1047
+ {
1048
+ "inputs": [],
1049
+ "name": "relay",
1050
+ "outputs": [
1051
+ {
1052
+ "internalType": "contract IRelay",
1053
+ "name": "",
1054
+ "type": "address"
1055
+ }
1056
+ ],
1057
+ "stateMutability": "view",
1058
+ "type": "function"
1059
+ },
1060
+ {
1061
+ "inputs": [],
1062
+ "name": "renounceOwnership",
1063
+ "outputs": [],
1064
+ "stateMutability": "nonpayable",
1065
+ "type": "function"
1066
+ },
1067
+ {
1068
+ "inputs": [
1069
+ {
1070
+ "components": [
1071
+ {
1072
+ "internalType": "bytes32",
1073
+ "name": "txHash",
1074
+ "type": "bytes32"
1075
+ },
1076
+ {
1077
+ "internalType": "uint32",
1078
+ "name": "txOutputIndex",
1079
+ "type": "uint32"
1080
+ },
1081
+ {
1082
+ "internalType": "uint64",
1083
+ "name": "txOutputValue",
1084
+ "type": "uint64"
1085
+ }
1086
+ ],
1087
+ "internalType": "struct BitcoinTx.UTXO",
1088
+ "name": "activeWalletMainUtxo",
1089
+ "type": "tuple"
1090
+ }
1091
+ ],
1092
+ "name": "requestNewWallet",
1093
+ "outputs": [],
1094
+ "stateMutability": "nonpayable",
1095
+ "type": "function"
1096
+ },
1097
+ {
1098
+ "inputs": [
1099
+ {
1100
+ "internalType": "bytes20",
1101
+ "name": "walletPubKeyHash",
1102
+ "type": "bytes20"
1103
+ },
1104
+ {
1105
+ "components": [
1106
+ {
1107
+ "internalType": "bytes32",
1108
+ "name": "txHash",
1109
+ "type": "bytes32"
1110
+ },
1111
+ {
1112
+ "internalType": "uint32",
1113
+ "name": "txOutputIndex",
1114
+ "type": "uint32"
1115
+ },
1116
+ {
1117
+ "internalType": "uint64",
1118
+ "name": "txOutputValue",
1119
+ "type": "uint64"
1120
+ }
1121
+ ],
1122
+ "internalType": "struct BitcoinTx.UTXO",
1123
+ "name": "mainUtxo",
1124
+ "type": "tuple"
1125
+ },
1126
+ {
1127
+ "internalType": "bytes",
1128
+ "name": "redeemerOutputScript",
1129
+ "type": "bytes"
1130
+ },
1131
+ {
1132
+ "internalType": "uint64",
1133
+ "name": "amount",
1134
+ "type": "uint64"
1135
+ }
1136
+ ],
1137
+ "name": "requestRedemption",
1138
+ "outputs": [],
1139
+ "stateMutability": "nonpayable",
1140
+ "type": "function"
1141
+ },
1142
+ {
1143
+ "inputs": [
1144
+ {
1145
+ "components": [
1146
+ {
1147
+ "internalType": "bytes4",
1148
+ "name": "version",
1149
+ "type": "bytes4"
1150
+ },
1151
+ {
1152
+ "internalType": "bytes",
1153
+ "name": "inputVector",
1154
+ "type": "bytes"
1155
+ },
1156
+ {
1157
+ "internalType": "bytes",
1158
+ "name": "outputVector",
1159
+ "type": "bytes"
1160
+ },
1161
+ {
1162
+ "internalType": "bytes4",
1163
+ "name": "locktime",
1164
+ "type": "bytes4"
1165
+ }
1166
+ ],
1167
+ "internalType": "struct BitcoinTx.Info",
1168
+ "name": "fundingTx",
1169
+ "type": "tuple"
1170
+ },
1171
+ {
1172
+ "components": [
1173
+ {
1174
+ "internalType": "uint32",
1175
+ "name": "fundingOutputIndex",
1176
+ "type": "uint32"
1177
+ },
1178
+ {
1179
+ "internalType": "address",
1180
+ "name": "depositor",
1181
+ "type": "address"
1182
+ },
1183
+ {
1184
+ "internalType": "bytes8",
1185
+ "name": "blindingFactor",
1186
+ "type": "bytes8"
1187
+ },
1188
+ {
1189
+ "internalType": "bytes20",
1190
+ "name": "walletPubKeyHash",
1191
+ "type": "bytes20"
1192
+ },
1193
+ {
1194
+ "internalType": "bytes20",
1195
+ "name": "refundPubKeyHash",
1196
+ "type": "bytes20"
1197
+ },
1198
+ {
1199
+ "internalType": "bytes4",
1200
+ "name": "refundLocktime",
1201
+ "type": "bytes4"
1202
+ },
1203
+ {
1204
+ "internalType": "address",
1205
+ "name": "vault",
1206
+ "type": "address"
1207
+ }
1208
+ ],
1209
+ "internalType": "struct Bridge.RevealInfo",
1210
+ "name": "reveal",
1211
+ "type": "tuple"
1212
+ }
1213
+ ],
1214
+ "name": "revealDeposit",
1215
+ "outputs": [],
1216
+ "stateMutability": "nonpayable",
1217
+ "type": "function"
1218
+ },
1219
+ {
1220
+ "inputs": [
157
1221
  {
158
1222
  "internalType": "address",
159
1223
  "name": "vault",
160
1224
  "type": "address"
161
1225
  },
1226
+ {
1227
+ "internalType": "bool",
1228
+ "name": "isTrusted",
1229
+ "type": "bool"
1230
+ }
1231
+ ],
1232
+ "name": "setVaultStatus",
1233
+ "outputs": [],
1234
+ "stateMutability": "nonpayable",
1235
+ "type": "function"
1236
+ },
1237
+ {
1238
+ "inputs": [
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "",
1242
+ "type": "uint256"
1243
+ }
1244
+ ],
1245
+ "name": "spentMainUTXOs",
1246
+ "outputs": [
1247
+ {
1248
+ "internalType": "bool",
1249
+ "name": "",
1250
+ "type": "bool"
1251
+ }
1252
+ ],
1253
+ "stateMutability": "view",
1254
+ "type": "function"
1255
+ },
1256
+ {
1257
+ "inputs": [
1258
+ {
1259
+ "internalType": "bytes",
1260
+ "name": "walletPublicKey",
1261
+ "type": "bytes"
1262
+ },
1263
+ {
1264
+ "internalType": "bytes32",
1265
+ "name": "sighash",
1266
+ "type": "bytes32"
1267
+ },
1268
+ {
1269
+ "components": [
1270
+ {
1271
+ "internalType": "bytes32",
1272
+ "name": "r",
1273
+ "type": "bytes32"
1274
+ },
1275
+ {
1276
+ "internalType": "bytes32",
1277
+ "name": "s",
1278
+ "type": "bytes32"
1279
+ },
1280
+ {
1281
+ "internalType": "uint8",
1282
+ "name": "v",
1283
+ "type": "uint8"
1284
+ }
1285
+ ],
1286
+ "internalType": "struct BitcoinTx.RSVSignature",
1287
+ "name": "signature",
1288
+ "type": "tuple"
1289
+ }
1290
+ ],
1291
+ "name": "submitFraudChallenge",
1292
+ "outputs": [],
1293
+ "stateMutability": "payable",
1294
+ "type": "function"
1295
+ },
1296
+ {
1297
+ "inputs": [
1298
+ {
1299
+ "components": [
1300
+ {
1301
+ "internalType": "bytes4",
1302
+ "name": "version",
1303
+ "type": "bytes4"
1304
+ },
1305
+ {
1306
+ "internalType": "bytes",
1307
+ "name": "inputVector",
1308
+ "type": "bytes"
1309
+ },
1310
+ {
1311
+ "internalType": "bytes",
1312
+ "name": "outputVector",
1313
+ "type": "bytes"
1314
+ },
1315
+ {
1316
+ "internalType": "bytes4",
1317
+ "name": "locktime",
1318
+ "type": "bytes4"
1319
+ }
1320
+ ],
1321
+ "internalType": "struct BitcoinTx.Info",
1322
+ "name": "movingFundsTx",
1323
+ "type": "tuple"
1324
+ },
1325
+ {
1326
+ "components": [
1327
+ {
1328
+ "internalType": "bytes",
1329
+ "name": "merkleProof",
1330
+ "type": "bytes"
1331
+ },
1332
+ {
1333
+ "internalType": "uint256",
1334
+ "name": "txIndexInBlock",
1335
+ "type": "uint256"
1336
+ },
1337
+ {
1338
+ "internalType": "bytes",
1339
+ "name": "bitcoinHeaders",
1340
+ "type": "bytes"
1341
+ }
1342
+ ],
1343
+ "internalType": "struct BitcoinTx.Proof",
1344
+ "name": "movingFundsProof",
1345
+ "type": "tuple"
1346
+ },
1347
+ {
1348
+ "components": [
1349
+ {
1350
+ "internalType": "bytes32",
1351
+ "name": "txHash",
1352
+ "type": "bytes32"
1353
+ },
1354
+ {
1355
+ "internalType": "uint32",
1356
+ "name": "txOutputIndex",
1357
+ "type": "uint32"
1358
+ },
1359
+ {
1360
+ "internalType": "uint64",
1361
+ "name": "txOutputValue",
1362
+ "type": "uint64"
1363
+ }
1364
+ ],
1365
+ "internalType": "struct BitcoinTx.UTXO",
1366
+ "name": "mainUtxo",
1367
+ "type": "tuple"
1368
+ },
1369
+ {
1370
+ "internalType": "bytes20",
1371
+ "name": "walletPubKeyHash",
1372
+ "type": "bytes20"
1373
+ }
1374
+ ],
1375
+ "name": "submitMovingFundsProof",
1376
+ "outputs": [],
1377
+ "stateMutability": "nonpayable",
1378
+ "type": "function"
1379
+ },
1380
+ {
1381
+ "inputs": [
1382
+ {
1383
+ "components": [
1384
+ {
1385
+ "internalType": "bytes4",
1386
+ "name": "version",
1387
+ "type": "bytes4"
1388
+ },
1389
+ {
1390
+ "internalType": "bytes",
1391
+ "name": "inputVector",
1392
+ "type": "bytes"
1393
+ },
1394
+ {
1395
+ "internalType": "bytes",
1396
+ "name": "outputVector",
1397
+ "type": "bytes"
1398
+ },
1399
+ {
1400
+ "internalType": "bytes4",
1401
+ "name": "locktime",
1402
+ "type": "bytes4"
1403
+ }
1404
+ ],
1405
+ "internalType": "struct BitcoinTx.Info",
1406
+ "name": "redemptionTx",
1407
+ "type": "tuple"
1408
+ },
1409
+ {
1410
+ "components": [
1411
+ {
1412
+ "internalType": "bytes",
1413
+ "name": "merkleProof",
1414
+ "type": "bytes"
1415
+ },
1416
+ {
1417
+ "internalType": "uint256",
1418
+ "name": "txIndexInBlock",
1419
+ "type": "uint256"
1420
+ },
1421
+ {
1422
+ "internalType": "bytes",
1423
+ "name": "bitcoinHeaders",
1424
+ "type": "bytes"
1425
+ }
1426
+ ],
1427
+ "internalType": "struct BitcoinTx.Proof",
1428
+ "name": "redemptionProof",
1429
+ "type": "tuple"
1430
+ },
1431
+ {
1432
+ "components": [
1433
+ {
1434
+ "internalType": "bytes32",
1435
+ "name": "txHash",
1436
+ "type": "bytes32"
1437
+ },
1438
+ {
1439
+ "internalType": "uint32",
1440
+ "name": "txOutputIndex",
1441
+ "type": "uint32"
1442
+ },
1443
+ {
1444
+ "internalType": "uint64",
1445
+ "name": "txOutputValue",
1446
+ "type": "uint64"
1447
+ }
1448
+ ],
1449
+ "internalType": "struct BitcoinTx.UTXO",
1450
+ "name": "mainUtxo",
1451
+ "type": "tuple"
1452
+ },
1453
+ {
1454
+ "internalType": "bytes20",
1455
+ "name": "walletPubKeyHash",
1456
+ "type": "bytes20"
1457
+ }
1458
+ ],
1459
+ "name": "submitRedemptionProof",
1460
+ "outputs": [],
1461
+ "stateMutability": "nonpayable",
1462
+ "type": "function"
1463
+ },
1464
+ {
1465
+ "inputs": [
1466
+ {
1467
+ "components": [
1468
+ {
1469
+ "internalType": "bytes4",
1470
+ "name": "version",
1471
+ "type": "bytes4"
1472
+ },
1473
+ {
1474
+ "internalType": "bytes",
1475
+ "name": "inputVector",
1476
+ "type": "bytes"
1477
+ },
1478
+ {
1479
+ "internalType": "bytes",
1480
+ "name": "outputVector",
1481
+ "type": "bytes"
1482
+ },
1483
+ {
1484
+ "internalType": "bytes4",
1485
+ "name": "locktime",
1486
+ "type": "bytes4"
1487
+ }
1488
+ ],
1489
+ "internalType": "struct BitcoinTx.Info",
1490
+ "name": "sweepTx",
1491
+ "type": "tuple"
1492
+ },
1493
+ {
1494
+ "components": [
1495
+ {
1496
+ "internalType": "bytes",
1497
+ "name": "merkleProof",
1498
+ "type": "bytes"
1499
+ },
1500
+ {
1501
+ "internalType": "uint256",
1502
+ "name": "txIndexInBlock",
1503
+ "type": "uint256"
1504
+ },
1505
+ {
1506
+ "internalType": "bytes",
1507
+ "name": "bitcoinHeaders",
1508
+ "type": "bytes"
1509
+ }
1510
+ ],
1511
+ "internalType": "struct BitcoinTx.Proof",
1512
+ "name": "sweepProof",
1513
+ "type": "tuple"
1514
+ },
1515
+ {
1516
+ "components": [
1517
+ {
1518
+ "internalType": "bytes32",
1519
+ "name": "txHash",
1520
+ "type": "bytes32"
1521
+ },
1522
+ {
1523
+ "internalType": "uint32",
1524
+ "name": "txOutputIndex",
1525
+ "type": "uint32"
1526
+ },
1527
+ {
1528
+ "internalType": "uint64",
1529
+ "name": "txOutputValue",
1530
+ "type": "uint64"
1531
+ }
1532
+ ],
1533
+ "internalType": "struct BitcoinTx.UTXO",
1534
+ "name": "mainUtxo",
1535
+ "type": "tuple"
1536
+ }
1537
+ ],
1538
+ "name": "submitSweepProof",
1539
+ "outputs": [],
1540
+ "stateMutability": "nonpayable",
1541
+ "type": "function"
1542
+ },
1543
+ {
1544
+ "inputs": [
1545
+ {
1546
+ "internalType": "uint256",
1547
+ "name": "",
1548
+ "type": "uint256"
1549
+ }
1550
+ ],
1551
+ "name": "timedOutRedemptions",
1552
+ "outputs": [
1553
+ {
1554
+ "internalType": "address",
1555
+ "name": "redeemer",
1556
+ "type": "address"
1557
+ },
1558
+ {
1559
+ "internalType": "uint64",
1560
+ "name": "requestedAmount",
1561
+ "type": "uint64"
1562
+ },
1563
+ {
1564
+ "internalType": "uint64",
1565
+ "name": "treasuryFee",
1566
+ "type": "uint64"
1567
+ },
1568
+ {
1569
+ "internalType": "uint64",
1570
+ "name": "txMaxFee",
1571
+ "type": "uint64"
1572
+ },
162
1573
  {
163
1574
  "internalType": "uint32",
164
- "name": "revealedAt",
1575
+ "name": "requestedAt",
165
1576
  "type": "uint32"
166
1577
  }
167
1578
  ],
168
1579
  "stateMutability": "view",
169
1580
  "type": "function"
1581
+ },
1582
+ {
1583
+ "inputs": [
1584
+ {
1585
+ "internalType": "address",
1586
+ "name": "newOwner",
1587
+ "type": "address"
1588
+ }
1589
+ ],
1590
+ "name": "transferOwnership",
1591
+ "outputs": [],
1592
+ "stateMutability": "nonpayable",
1593
+ "type": "function"
1594
+ },
1595
+ {
1596
+ "inputs": [],
1597
+ "name": "treasury",
1598
+ "outputs": [
1599
+ {
1600
+ "internalType": "address",
1601
+ "name": "",
1602
+ "type": "address"
1603
+ }
1604
+ ],
1605
+ "stateMutability": "view",
1606
+ "type": "function"
1607
+ },
1608
+ {
1609
+ "inputs": [],
1610
+ "name": "txProofDifficultyFactor",
1611
+ "outputs": [
1612
+ {
1613
+ "internalType": "uint256",
1614
+ "name": "",
1615
+ "type": "uint256"
1616
+ }
1617
+ ],
1618
+ "stateMutability": "view",
1619
+ "type": "function"
1620
+ },
1621
+ {
1622
+ "inputs": [
1623
+ {
1624
+ "internalType": "uint32",
1625
+ "name": "creationPeriod",
1626
+ "type": "uint32"
1627
+ },
1628
+ {
1629
+ "internalType": "uint64",
1630
+ "name": "minBtcBalance",
1631
+ "type": "uint64"
1632
+ },
1633
+ {
1634
+ "internalType": "uint64",
1635
+ "name": "maxBtcBalance",
1636
+ "type": "uint64"
1637
+ },
1638
+ {
1639
+ "internalType": "uint32",
1640
+ "name": "maxAge",
1641
+ "type": "uint32"
1642
+ }
1643
+ ],
1644
+ "name": "updateWalletsParameters",
1645
+ "outputs": [],
1646
+ "stateMutability": "nonpayable",
1647
+ "type": "function"
170
1648
  }
171
1649
  ],
172
- "bytecode": "0x608060405234801561001057600080fd5b506109f0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea2646970667358221220bca337d7cb05b6b689ca49ecdd85c75dc9cdde9d5b5a54318aba5449dda2e35064736f6c63430008040033",
173
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80632c3e1d121461004657806342b1f1a41461006257806343c6de291461007e575b600080fd5b610060600480360381019061005b91906103df565b6100b0565b005b61007c60048036038101906100779190610486565b610238565b005b61009860048036038101906100939190610584565b610241565b6040516100a793929190610735565b60405180910390f35b60008787336040516020016100c793929190610657565b6040516020818303038152906040528051906020012060001c905060008060008381526020019081526020016000209050600081600001601c9054906101000a900463ffffffff1663ffffffff1614610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9061068e565b60405180910390fd5b838160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550828160000160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600001601c6101000a81548163ffffffff021916908363ffffffff1602179055507fed7e2a3180a53ccf8540bf67f1679359557837b4c2350f3c7f1d1409eaac3739828a8a338b8b8b8b8b604051610225999897969594939291906106ae565b60405180910390a1505050505050505050565b50505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900467ffffffffffffffff16908060000160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600001601c9054906101000a900463ffffffff16905083565b60006102c26102bd84610791565b61076c565b9050828152602081018484840111156102da57600080fd5b6102e5848285610887565b509392505050565b6000813590506102fc81610930565b92915050565b60008135905061031181610947565b92915050565b6000813590506103268161095e565b92915050565b60008083601f84011261033e57600080fd5b8235905067ffffffffffffffff81111561035757600080fd5b60208301915083600182028301111561036f57600080fd5b9250929050565b600082601f83011261038757600080fd5b81356103978482602086016102af565b91505092915050565b6000813590506103af81610975565b92915050565b6000813590506103c48161098c565b92915050565b6000813590506103d9816109a3565b92915050565b600080600080600080600060c0888a0312156103fa57600080fd5b60006104088a828b01610302565b97505060206104198a828b016103ca565b965050604061042a8a828b016103b5565b955050606088013567ffffffffffffffff81111561044757600080fd5b6104538a828b0161032c565b945094505060806104668a828b016103b5565b92505060a06104778a828b016102ed565b91505092959891949750929550565b600080600080600080600060e0888a0312156104a157600080fd5b60006104af8a828b01610317565b975050602088013567ffffffffffffffff8111156104cc57600080fd5b6104d88a828b01610376565b965050604088013567ffffffffffffffff8111156104f557600080fd5b6105018a828b01610376565b95505060606105128a828b01610317565b945050608088013567ffffffffffffffff81111561052f57600080fd5b61053b8a828b01610376565b93505060a061054c8a828b016103a0565b92505060c088013567ffffffffffffffff81111561056957600080fd5b6105758a828b01610376565b91505092959891949750929550565b60006020828403121561059657600080fd5b60006105a4848285016103a0565b91505092915050565b6105b6816107e4565b82525050565b6105c5816107f6565b82525050565b60006105d783856107c2565b93506105e4838584610887565b6105ed836108f6565b840190509392505050565b60006106056018836107d3565b915061061082610907565b602082019050919050565b6106248161084c565b82525050565b61063381610856565b82525050565b61064281610866565b82525050565b6106518161087a565b82525050565b600060608201905061066c60008301866105bc565b6106796020830185610648565b61068660408301846105ad565b949350505050565b600060208201905081810360008301526106a7816105f8565b9050919050565b6000610100820190506106c4600083018c61061b565b6106d1602083018b6105bc565b6106de604083018a610648565b6106eb60608301896105ad565b6106f86080830188610639565b81810360a083015261070b8186886105cb565b905061071a60c0830185610639565b61072760e08301846105ad565b9a9950505050505050505050565b600060608201905061074a6000830186610639565b61075760208301856105ad565b610764604083018461062a565b949350505050565b6000610776610787565b90506107828282610896565b919050565b6000604051905090565b600067ffffffffffffffff8211156107ac576107ab6108c7565b5b6107b5826108f6565b9050602081019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006107ef8261082c565b9050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600067ffffffffffffffff82169050919050565b600060ff82169050919050565b82818337600083830152505050565b61089f826108f6565b810181811067ffffffffffffffff821117156108be576108bd6108c7565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4465706f73697420616c72656164792072657665616c65640000000000000000600082015250565b610939816107e4565b811461094457600080fd5b50565b610950816107f6565b811461095b57600080fd5b50565b61096781610800565b811461097257600080fd5b50565b61097e8161084c565b811461098957600080fd5b50565b61099581610866565b81146109a057600080fd5b50565b6109ac8161087a565b81146109b757600080fd5b5056fea2646970667358221220bca337d7cb05b6b689ca49ecdd85c75dc9cdde9d5b5a54318aba5449dda2e35064736f6c63430008040033",
174
- "linkReferences": {},
175
- "deployedLinkReferences": {}
1650
+ "bytecode": "0x6101006040523480156200001257600080fd5b506040516200724f3803806200724f8339810160408190526200003591620005d2565b620000403362000565565b6001600160a01b0385166200009c5760405162461bcd60e51b815260206004820152601b60248201527f42616e6b20616464726573732063616e6e6f74206265207a65726f000000000060448201526064015b60405180910390fd5b6001600160a01b0380861660a0528416620000fa5760405162461bcd60e51b815260206004820152601c60248201527f52656c617920616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000093565b6001600160a01b0380851660c0528316620001585760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000093565b6001600160a01b03831660e052608081905260008054600160a01b600160e01b031916613d0960a61b1790557907d000000000000f4240000000000000271000000000000007d0600155600280546127106001600160401b031991821681179092556202a300600355600480549091169091178155604051630848fc7160e21b8152600a9181019190915269021e19e0c9bab2400000602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90632123f1c49060440160006040518083038186803b1580156200022b57600080fd5b505af415801562000240573d6000803e3d6000fd5b5050604051635452278760e01b8152600a60048201526064602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__92506354522787915060440160006040518083038186803b1580156200029757600080fd5b505af4158015620002ac573d6000803e3d6000fd5b5050604051634039940360e01b8152600a600482015262093a80602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__92506340399403915060440160006040518083038186803b1580156200030557600080fd5b505af41580156200031a573d6000803e3d6000fd5b505060405163e6d20d4560e01b8152600a6004820152671bc16d674ec80000602482015273__$d790fbbb73aa5f15b682a7376a512ac8e4$__925063e6d20d45915060440160006040518083038186803b1580156200037857600080fd5b505af41580156200038d573d6000803e3d6000fd5b505060405163f832341d60e01b8152600f60048201526001600160a01b038516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063f832341d915060440160006040518083038186803b158015620003ec57600080fd5b505af415801562000401573d6000803e3d6000fd5b505060405163041aee9960e01b8152600f600482015262093a80602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063041aee99915060440160006040518083038186803b1580156200045a57600080fd5b505af41580156200046f573d6000803e3d6000fd5b5050604051632662d59360e21b8152600f60048201526305f5e1006024820152633b9aca00604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b158015620004d357600080fd5b505af4158015620004e8573d6000803e3d6000fd5b505060405163117665a760e21b8152600f600482015262eff100602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b1580156200054157600080fd5b505af415801562000556573d6000803e3d6000fd5b50505050505050505062000639565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620005cd57600080fd5b919050565b600080600080600060a08688031215620005eb57600080fd5b620005f686620005b5565b94506200060660208701620005b5565b93506200061660408701620005b5565b92506200062660608701620005b5565b9150608086015190509295509295909350565b60805160a05160c05160e051616b88620006c760003960008181610687015281816114c50152818161274b0152612d130152600081816109d80152818161383d01526138d701526000818161071b01528181611432015281816114f4015281816122a301528181612c9301528181612d4b015261346a015260008181610452015261396d0152616b886000f3fe6080604052600436106102bb5760003560e01c8063793bb4731161016e578063b59589d1116100cb578063e53c0b551161007f578063e95eb7a811610064578063e95eb7a814610ad8578063f2fde38b14610aff578063fd56208014610b1f57600080fd5b8063e53c0b5514610a88578063e8f3db4314610ab857600080fd5b8063cb7f3a09116100b0578063cb7f3a0914610a21578063d6eccdf014610a48578063d95027b714610a6857600080fd5b8063b59589d1146109c6578063bdf9fca9146109fa57600080fd5b8063a588f05911610122578063b02c43d011610107578063b02c43d0146108a4578063b2146cd614610966578063b34b3216146109a657600080fd5b8063a588f05914610864578063a8fa0f421461088457600080fd5b80638dd0f79a116101535780638dd0f79a146107b75780638fa4ad2814610817578063a145e2d51461084457600080fd5b8063793bb4731461075d5780638da5cb5b1461079957600080fd5b806359a9d90a1161021c57806367f27247116101d0578063715018a6116101b5578063715018a6146106f457806376cdb03b1461070957806377145f211461073d57600080fd5b806367f27247146106c15780636d02b43c146106e157600080fd5b80635c0b4812116102015780635c0b48121461063557806360d712fc1461065557806361d027b31461067557600080fd5b806359a9d90a146105ee5780635afb143c1461060e57600080fd5b80632f429b64116102735780633dce9812116102585780633dce981214610575578063575e427914610595578063595ff9ff146105b557600080fd5b80632f429b641461047457806333e957cb1461049657600080fd5b80630b6ba19d116102a45780630b6ba19d146103b05780631fff4e701461041c5780632bb818c21461044057600080fd5b806303d952f7146102c0578063079bf52c14610378575b600080fd5b3480156102cc57600080fd5b5061032c6102db366004615adb565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b34801561038457600080fd5b50600154610398906001600160401b031681565b6040516001600160401b03909116815260200161036f565b3480156103bc57600080fd5b5061032c6103cb366004615adb565b600960205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b34801561042857600080fd5b5061043260035481565b60405190815260200161036f565b34801561044c57600080fd5b506104327f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5061049461048f366004615b3b565b610b3f565b005b3480156104a257600080fd5b506105316104b1366004615adb565b604080516080810182526000808252602082018190529181018290526060810191909152506000908152600e6020908152604091829020825160808101845281546001600160a01b031681526001820154928101929092526002015463ffffffff81169282019290925264010000000090910460ff161515606082015290565b60405161036f919081516001600160a01b031681526020808301519082015260408083015163ffffffff169082015260609182015115159181019190915260800190565b34801561058157600080fd5b50610494610590366004615bc0565b610dd8565b3480156105a157600080fd5b506104946105b0366004615bec565b610e68565b3480156105c157600080fd5b50600a54600b54600c54600d5460408051948552602085019390935291830152606082015260800161036f565b3480156105fa57600080fd5b50610494610609366004615c20565b610ef1565b34801561061a57600080fd5b5060005461039890600160a01b90046001600160401b031681565b34801561064157600080fd5b50610494610650366004615c8b565b611562565b34801561066157600080fd5b50610494610670366004615d0c565b611cf3565b34801561068157600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161036f565b3480156106cd57600080fd5b506104946106dc366004615d77565b611dac565b6104946106ef366004615dc9565b61232d565b34801561070057600080fd5b50610494612535565b34801561071557600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b34801561074957600080fd5b50610494610758366004615e1b565b61259b565b34801561076957600080fd5b506010546c01000000000000000000000000900460601b6040516001600160601b0319909116815260200161036f565b3480156107a557600080fd5b506000546001600160a01b03166106a9565b3480156107c357600080fd5b50600f546010546040805163ffffffff600160a01b8504811682526001600160401b03600160c01b9095048516602083015293831691810191909152600160401b909104909116606082015260800161036f565b34801561082357600080fd5b50610837610832366004615e9b565b61279f565b60405161036f9190615ecc565b34801561085057600080fd5b5061049461085f366004615f4f565b612895565b34801561087057600080fd5b50600254610398906001600160401b031681565b34801561089057600080fd5b5061049461089f366004615bc0565b61291b565b3480156108b057600080fd5b506109166108bf366004615adb565b600660205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161036f565b34801561097257600080fd5b50610996610981366004615adb565b60076020526000908152604090205460ff1681565b604051901515815260200161036f565b3480156109b257600080fd5b506104946109c1366004615b3b565b612981565b3480156109d257600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b348015610a0657600080fd5b5060015461039890600160801b90046001600160401b031681565b348015610a2d57600080fd5b5060015461039890600160401b90046001600160401b031681565b348015610a5457600080fd5b50610494610a63366004615f82565b612db3565b348015610a7457600080fd5b50610494610a83366004615fec565b6134db565b348015610a9457600080fd5b50610996610aa3366004616037565b60056020526000908152604090205460ff1681565b348015610ac457600080fd5b50600454610398906001600160401b031681565b348015610ae457600080fd5b5060015461039890600160c01b90046001600160401b031681565b348015610b0b57600080fd5b50610494610b1a366004616037565b613532565b348015610b2b57600080fd5b50610494610b3a366004616066565b613614565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348686610b65613817565b6040518463ffffffff1660e01b8152600401610b8393929190616135565b60206040518083038186803b158015610b9b57600080fd5b505af4158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190616230565b9050610c23610be56020870187616249565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691506139949050565b600080610c70610c366040890189616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613be992505050565b60045491935091506001600160401b031681610c92606088016040890161628f565b6001600160401b0316610ca591906162c0565b1115610cf85760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b6040517f35e741c9000000000000000000000000000000000000000000000000000000008152600f60048201526001600160601b0319851660248201526044810183905273__$0f118c52967a3847a37f0a2ef02ffcee04$__906335e741c99060640160006040518083038186803b158015610d7357600080fd5b505af4158015610d87573d6000803e3d6000fd5b5050604080516001600160601b031988168152602081018790527fc635af1892551655b9dbb3256a0eed3e35baf4fcc5392b80e6a907b6f44a2838935001905060405180910390a150505050505050565b6040517f1803c09e000000000000000000000000000000000000000000000000000000008152600f6004820152602481018390526044810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90631803c09e906064015b60006040518083038186803b158015610e4b57600080fd5b505af4158015610e5f573d6000803e3d6000fd5b50505050505050565b6040517f9655f02b00000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__90639655f02b90610ebd90600f9086908690600401616310565b60006040518083038186803b158015610ed557600080fd5b505af4158015610ee9573d6000803e3d6000fd5b505050505050565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610f17613817565b6040518463ffffffff1660e01b8152600401610f3593929190616135565b60206040518083038186803b158015610f4d57600080fd5b505af4158015610f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f859190616230565b9050600080610fd4610f9a6040880188616249565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061405092505050565b6001600160601b031982166000908152601160205260409020600281015492945090925090600160801b900460ff16600181600481111561101757611017615eb6565b14806110345750600281600481111561103257611032615eb6565b145b6110a65760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e64732073746174650000000000000000000000000000000000000000006064820152608401610cef565b6040805160608101825260008082526020820181905291810191909152600183015480156111a3578088356110e160408b0160208c01616334565b6110f160608c0160408d0161628f565b60405160200161112e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146111915760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b6111a036899003890189616365565b91505b60006111f16111b560208d018d616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250614183915050565b90506000808061121484600001518a6001600160401b0316866040015151614763565b6001549193509150600160401b90046001600160401b031661123682846163d7565b11156112845760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f206869676800000000006044820152606401610cef565b60005b84604001515181101561137257600060018660400151516112a891906162c0565b82146112b457836112be565b6112be83856163d7565b905080866060015183815181106112d7576112d76163ef565b6020026020010151876040015184815181106112f5576112f56163ef565b602002602001015161130791906162c0565b61131191906162c0565b86604001518381518110611327576113276163ef565b60200260200101818152505085606001518281518110611349576113496163ef565b60200260200101518561135c91906163d7565b945050808061136a90616405565b915050611287565b5060408051602081018d90526000918101919091526001600160c01b031960c08b901b166044820152604c0160408051808303601f19018152828252805160209182012060018c01556001600160601b03198d16835282018d90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a9261146592600401616420565b600060405180830381600087803b15801561147f57600080fd5b505af1158015611493573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b15801561153a57600080fd5b505af115801561154e573d6000803e3d6000fd5b505050505050505050505050505050505050565b6001601160006115786080850160608601615e9b565b6001600160601b0319168152602081019190915260400160002060020154600160801b900460ff1660048111156115b1576115b1615eb6565b146115fe5760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c69766520737461746500000000006044820152606401610cef565b600061161060e0830160c08401616037565b6001600160a01b0316148061165257506005600061163460e0840160c08501616037565b6001600160a01b0316815260208101919091526040016000205460ff165b61169e5760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610cef565b60006116b06040830160208401616037565b6116c060608401604085016164a4565b6116d06080850160608601615e9b565b6116e060a0860160808701615e9b565b6116f060c0870160a088016164ce565b6040516020016117049594939291906164e9565b60408051601f19818403018152919052905060006117786117286020850185616334565b63ffffffff1661173b6040870187616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061479f9050565b905060006117858261496a565b905080516014141561180b5761179a83614c10565b6001600160601b0319166117af826000614c37565b6001600160601b031916146118065760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610cef565b611903565b8051602014156118bb576002836040516118259190616799565b602060405180830381855afa158015611842573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906118659190616230565b61186e82614c4d565b146118065760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610cef565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610cef565b600061196861191560208801886164ce565b6119226020890189616249565b61192f60408b018b616249565b61193f60808d0160608e016164ce565b604051602001611954969594939291906167a5565b604051602081830303815290604052614c69565b905060006006818361197d60208a018a616334565b6040516020016119a492919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615611a285760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610cef565b6000611a3385614c90565b6000549091506001600160401b03600160a01b90910481169082161015611a9c5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c00000000000000006044820152606401610cef565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b03831602178255611ae36040880160208901616037565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255611b3260e0880160c08901616037565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b0316611b78576000611b8e565b600154611b8e906001600160401b0316826167fd565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583611bff60208a018a616334565b611c0f60408b0160208c01616037565b84611c2060608d0160408e016164a4565b611c3060808e0160608f01615e9b565b8d6080016020810190611c439190615e9b565b8e60a0016020810190611c5691906164ce565b8f60c0016020810190611c699190616037565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314611d4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000838383604051602001611dc393929190616823565b60408051808303601f19018152828252805160209182012060008181526008835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b03908116938601939093526001015480831693850193909352600160401b83049091166060840152600160801b90910463ffffffff1660808301819052909250611e9f5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b6064820152608401610cef565b42600354826080015163ffffffff16611eb891906163d7565b10611f2a5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f7574000000000000000000000000000000000000000000000000000000006064820152608401610cef565b6001600160601b031985166000908152601160209081526040918290209183015190830151611f599190616847565b600282018054600090611f769084906001600160401b0316616847565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555060016004811115611fad57611fad615eb6565b6002820154600160801b900460ff166004811115611fcd57611fcd615eb6565b1480611ff75750600280820154600160801b900460ff166004811115611ff557611ff5615eb6565b145b80612021575060046002820154600160801b900460ff16600481111561201f5761201f615eb6565b145b6120935760405162461bcd60e51b815260206004820152603b60248201527f5468652077616c6c6574206d75737420626520696e204c6976652c204d6f766960448201527f6e6746756e6473206f72205465726d696e6174656420737461746500000000006064820152608401610cef565b600083815260096020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386166fffffffffffffffffffffffffffffffff1990921691909117600160401b91909516029390931773ffffffff000000000000000000000000000000001916600160801b63ffffffff909216919091021790915560089093529220805490911681558101805473ffffffffffffffffffffffffffffffffffffffff191690556002820154600160801b900460ff16600481111561218e5761218e615eb6565b14806121b85750600280820154600160801b900460ff1660048111156121b6576121b6615eb6565b145b1561224a576040517f65951fcf000000000000000000000000000000000000000000000000000000008152600f60048201526001600160601b03198716602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__906365951fcf9060440160006040518083038186803b15801561223157600080fd5b505af4158015612245573d6000803e3d6000fd5b505050505b7f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d586868660405161227d9392919061686f565b60405180910390a1815160208301516040516356a6d9ef60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926356a6d9ef926122f3926004016001600160a01b039290921682526001600160401b0316602082015260400190565b600060405180830381600087803b15801561230d57600080fd5b505af1158015612321573d6000803e3d6000fd5b50505050505050505050565b60006123ba612376600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050614d069050565b604080516020601f89018190048102820181019092528781526123b591908989808385018382808284376000920191909152509293925050614d069050565b614d0e565b905060006123c782614c10565b6001600160601b03198116600090815260116020526040902090915060016002820154600160801b900460ff16600481111561240557612405615eb6565b148061242f5750600280820154600160801b900460ff16600481111561242d5761242d615eb6565b145b6124a15760405162461bcd60e51b815260206004820152602f60248201527f57616c6c6574206973206e65697468657220696e204c697665206e6f72204d6f60448201527f76696e6746756e647320737461746500000000000000000000000000000000006064820152608401610cef565b6040517f9a08b74000000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90639a08b740906124fc90600a908b908b9088908c908c90600401616898565b60006040518083038186803b15801561251457600080fd5b505af4158015612528573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b0316331461258f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6125996000614db8565b565b6040517fc945968600000000000000000000000000000000000000000000000000000000815260009073__$d790fbbb73aa5f15b682a7376a512ac8e4$__9063c9459686906125f990600a908a908a908a908a908a90600401616908565b60206040518083038186803b15801561261157600080fd5b505af4158015612625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126499190616230565b600081815260066020526040902060010154909150600160e01b900463ffffffff16151580612686575060008181526007602052604090205460ff165b6126f85760405162461bcd60e51b815260206004820152603060248201527f5370656e74205554584f206e6f7420666f756e6420616d6f6e6720636f72726560448201527f63746c79207370656e74205554584f73000000000000000000000000000000006064820152608401610cef565b6040517f3f31f49f00000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90633f31f49f9061277390600a908a908a908a908a907f00000000000000000000000000000000000000000000000000000000000000009060040161694b565b60006040518083038186803b15801561278b57600080fd5b505af4158015612321573d6000803e3d6000fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526001600160601b03198216600090815260116020908152604091829020825160e0810184528154815260018201549281019290925260028101546001600160401b0381169383019390935263ffffffff600160401b8404811660608401526c010000000000000000000000008404166080830152909160a083019060ff600160801b90910416600481111561286f5761286f615eb6565b600481111561288057612880615eb6565b81526020016003820154815250509050919050565b6040517fb4e671f400000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063b4e671f4906128e890600f908590600401616995565b60006040518083038186803b15801561290057600080fd5b505af4158015612914573d6000803e3d6000fd5b5050505050565b6040517f4fd7d486000000000000000000000000000000000000000000000000000000008152600f600482015260248101849052604481018390526064810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90634fd7d48690608401610e33565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae13486866129a7613817565b6040518463ffffffff1660e01b81526004016129c593929190616135565b60206040518083038186803b1580156129dd57600080fd5b505af41580156129f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a159190616230565b9050612a27610be56020870187616249565b6001600160601b0319821660009081526011602052604090206002810154600160801b900460ff166001816004811115612a6357612a63615eb6565b1480612a8057506002816004811115612a7e57612a7e615eb6565b145b612af25760405162461bcd60e51b815260206004820152602a60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756473207374617465000000000000000000000000000000000000000000006064820152608401610cef565b6000612b40612b0460408a018a616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250614e15915050565b60608101519091506001600160401b031615612bc0578381604001518260600151604051602001612b9e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291905280516020909101206001840155612bc8565b600060018401555b8051600284018054600090612be79084906001600160401b0316616847565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe8585604051612c519291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b158015612cdf57600080fd5b505af1158015612cf3573d6000803e3d6000fd5b5050505060208101516040516356a6d9ef60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b158015612d9157600080fd5b505af1158015612da5573d6000803e3d6000fd5b505050505050505050505050565b6001600160601b03198516600090815260116020526040902060016002820154600160801b900460ff166004811115612dee57612dee615eb6565b14612e3b5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610cef565b600181015480612e975760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b6064820152608401610cef565b808635612eaa6040890160208a01616334565b612eba60608a0160408b0161628f565b604051602001612ef79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612f5a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b6000612f8c600060c01b8787604051602001612f78939291906169a9565b60405160208183030381529060405261496a565b905060008151116130055760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e6461726420747970650000000000000000000000000000000000006064820152608401610cef565b80805190602001208860405160200161302e91906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156130b85760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b480000000000000000006064820152608401610cef565b6001546001600160401b03600160801b9091048116908516101561311e5760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c00000000006044820152606401610cef565b600088878760405160200161313593929190616823565b60408051808303601f19018152918152815160209283012060008181526008909352912060010154909150600160801b900463ffffffff16156132065760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a401610cef565b600154600090600160c01b90046001600160401b0316613227576000613244565b60015461324490600160c01b90046001600160401b0316876167fd565b6002549091506001600160401b031661325d8288616847565b60028701805460009061327a9084906001600160401b03166169cd565b82546101009290920a6001600160401b0381810219909316918316021790915560028801541690506132b260608c0160408d0161628f565b6001600160401b031610156133095760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e6473000000000000006044820152606401610cef565b6040805160a081018252338082526001600160401b03808b1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526008909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b0273ffffffff0000000000000000000000000000000019928516600160401b026fffffffffffffffffffffffffffffffff19909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d959161341f918e918d918d91908d90899089906169f8565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03881660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b1580156134b657600080fd5b505af11580156134ca573d6000803e3d6000fd5b505050505050505050505050505050565b6040517f21e76ee800000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__906321e76ee890610e3390600a90879087908790600401616a5b565b6000546001600160a01b0316331461358c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6001600160a01b0381166136085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cef565b61361181614db8565b50565b6000546001600160a01b0316331461366e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6040517f041aee99000000000000000000000000000000000000000000000000000000008152600f600482015263ffffffff8516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063041aee999060440160006040518083038186803b1580156136de57600080fd5b505af41580156136f2573d6000803e3d6000fd5b50506040517f998b564c000000000000000000000000000000000000000000000000000000008152600f60048201526001600160401b0380871660248301528516604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b15801561377157600080fd5b505af4158015613785573d6000803e3d6000fd5b50506040517f45d9969c000000000000000000000000000000000000000000000000000000008152600f600482015263ffffffff8416602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b1580156137f957600080fd5b505af415801561380d573d6000803e3d6000fd5b5050505050505050565b61383b60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b505afa1580156138a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cc9190616230565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561392e57600080fd5b505afa158015613942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139669190616230565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b6001600160601b03198116600090815260116020526040902060010154806139fe5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c65740000006044820152606401610cef565b808335613a116040860160208701616334565b613a21606087016040880161628f565b604051602001613a5e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014613ac15760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b600080613acd866153f7565b9092509050843582148015613afc575063ffffffff8116613af46040870160208801616334565b63ffffffff16145b613b6e5760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f006064820152608401610cef565b6001600760008735613b8660408a0160208b01616334565b604051602001613bad92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055505050505050565b600080600080613bf8856154d2565b90925090506000613c0a8360016163d7565b90506000826001600160401b03811115613c2657613c2661634f565b604051908082528060200260200182016040528015613c4f578160200160208202803683370190505b5090506000836001600160401b03811115613c6c57613c6c61634f565b604051908082528060200260200182016040528015613c95578160200160208202803683370190505b50905060005b84811015613f00576000613caf8a866154e9565b90506000613cbe8b8784615558565b90506000613ccb8261496a565b90508051601414613d445760405162461bcd60e51b815260206004820152603060248201527f5461726765742077616c6c6574207075626c6963206b65792068617368206d7560448201527f73742068617665203230206279746573000000000000000000000000000000006064820152608401610cef565b6000613d508282614c37565b90506000613d6e6008808651613d6691906162c0565b869190615558565b80516020918201206040805163065daa4560e21b818501526001600160601b031986166024820181905261222b60f21b60388301528251601a818403018152603a830184528051908601206205800560ea1b605a840152605d830191909152825160518184030181526071909201909252805193019290922090925081831480613df757508083145b613e435760405162461bcd60e51b815260206004820152601e60248201527f4f7574707574206d757374206265205032504b48206f7220503257504b4800006044820152606401610cef565b838a8981518110613e5657613e566163ef565b6001600160601b031990921660209283029190910190910152613e7886614c90565b898981518110613e8a57613e8a6163ef565b60200260200101906001600160401b031690816001600160401b031681525050888881518110613ebc57613ebc6163ef565b60200260200101516001600160401b03168e613ed891906163d7565b9d50613ee4878c6163d7565b9a50505050505050508080613ef890616405565b915050613c9b565b506000613f0d8588616a86565b9050600085613f1c838a6162c0565b613f269190616a9a565b90506000613f3483836163d7565b905060005b8781101561401957848181518110613f5357613f536163ef565b60200260200101516001600160401b03168311158015613f95575081858281518110613f8157613f816163ef565b60200260200101516001600160401b031611155b6140075760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206973206e6f742064697374726960448201527f6275746564206576656e6c7900000000000000000000000000000000000000006064820152608401610cef565b8061401181616405565b915050613f39565b508460405160200161402b9190616aae565b6040516020818303038152906040528051906020012099505050505050505050915091565b600080600061405e846154d2565b915050806001146140d75760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610cef565b60006140e3858261479f565b90506140ee81614c90565b925060006140fb8261496a565b905080516014146141745760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610cef565b60208101519450505050915091565b6141ae6040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806141bf876154d2565b909250905060006141d18360016163d7565b905084156141e9576141e46001836162c0565b6141eb565b815b6001600160401b038111156142025761420261634f565b60405190808252806020026020018201604052801561422b578160200160208202803683370190505b5060208701819052516001600160401b0381111561424b5761424b61634f565b604051908082528060200260200182016040528015614274578160200160208202803683370190505b5060408701526020860151516001600160401b038111156142975761429761634f565b6040519080825280602002602001820160405280156142c0578160200160208202803683370190505b5060608701526000805b838110156146665760008060006142e18d87615622565b925092509250600060066000858560405160200161431692919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615614552576001810154600160e01b900463ffffffff16156143b15760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610cef565b8b602001515186141561442c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610cef565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110614485576144856163ef565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b031691889081106144c9576144c96163ef565b6020026020010181815250508b6040015186815181106144eb576144eb6163ef565b60200260200101518c60000181815161450491906163d7565b905250600181015460608d01518051600160a01b9092046001600160401b03169188908110614535576145356163ef565b60209081029190910101528561454a81616405565b965050614643565b8915158b15151415801561456657508c5184145b156145fb578c604001516001600160401b03168c60000181815161458a91906163d7565b90525060405160019a508a906007906000906145c2908890889060200191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055614643565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610cef565b61464d82886163d7565b965050505050808061465e90616405565b9150506142ca565b50600081116146dd5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610cef565b841515861515146147565760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610cef565b5050505050505b92915050565b6000808061477185876162c0565b905061477d8482616a86565b91508361478a83836162c0565b6147949190616a9a565b925050935093915050565b60606000806147ad856154d2565b909250905060001982141561480f5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610cef565b80841061485e5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610cef565b60008061486c8460016163d7565b905060005b868110156148f55761488388836154e9565b92506000198314156148d75760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610cef565b6148e183836163d7565b9150806148ed81616405565b915050614871565b5061490087826154e9565b91506000198214156149545760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610cef565b61495f878284615558565b979650505050505050565b6060600082600881518110614981576149816163ef565b0160200151835160f89190911c915061499b826009616aee565b60ff16146149b9575050604080516020810190915260008152919050565b826009815181106149cc576149cc6163ef565b016020015160f81c614a725760028160ff1610156149fa575050604080516020810190915260008152919050565b600083600a81518110614a0f57614a0f6163ef565b016020015160f81c9050614a24600283616b13565b60ff1681141580614a42575080602014158015614a42575080601414155b15614a5e57505060408051602081019091526000815292915050565b614a6a84600b83615558565b949350505050565b6000614a7f846008614c37565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415614b5c5783600b81518110614ade57614ade6163ef565b60209101015160f81c6014141580614b335750614b0960028551614b0291906162c0565b8590614c37565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15614b4f57505060408051602081019091526000815292915050565b614a6a84600c6014615558565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415614bf9578360018551614bb591906162c0565b81518110614bc557614bc56163ef565b60209101015160f81c608714614bec57505060408051602081019091526000815292915050565b614a6a84600b6014615558565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000614c468383016020015190565b9392505050565b6000815160001415614c6157506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080614c9c83615654565b60c01c90506000614a6a8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b016020015190565b60606000614d1d600284616a86565b614d4857507f0200000000000000000000000000000000000000000000000000000000000000614d6b565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051608081018252600080825260208201819052918101829052606081018290529080614e43856154d2565b90925090506000614e558360016163d7565b6040805163065daa4560e21b6020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301206205800560ea1b605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b85811015615380576000614ee48b876154e9565b90506000614ef38c8884615558565b90506000614f0082614c90565b90506000614f1e6008808551614f1691906162c0565b859190615558565b90508b606001516001600160401b03166000148015614f51575080516020820120881480614f5157508051602082012087145b8015614f6657506000826001600160401b0316115b15614f8b5763ffffffff851660408d01526001600160401b03821660608d015261535d565b60008d82604051602001614fa0929190616b36565b60408051808303601f19018152918152815160209283012060008181526008909352912060010154909150600160801b900463ffffffff16156151aa57600081815260086020526040812060018101548154919291615012916001600160401b0390811691600160a01b900416616847565b60018301549091506001600160401b038087169161503991600160401b9091041683616847565b6001600160401b0316111580156150625750806001600160401b0316856001600160401b031611155b6150fa5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a401610cef565b808f60000181815161510c91906169cd565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f60200181815161515091906169cd565b6001600160401b0316905250600083815260086020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886151a081616405565b995050505061535b565b60008181526009602052604090206001810154600160801b900463ffffffff1661523b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610cef565b60018101548154600091615263916001600160401b0391821691600160a01b90910416616847565b60018301549091506001600160401b038087169161528a91600160401b9091041683616847565b6001600160401b0316111580156152b35750806001600160401b0316856001600160401b031611155b61534b5760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a401610cef565b8861535581616405565b99505050505b505b615367848a6163d7565b985050505050808061537890616405565b915050614ed0565b50600081116147565760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e00000000006064820152608401610cef565b6000806000615405846154d2565b9150508060011461547e5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e707574000000000000000000000000000000000000006064820152608401610cef565b600061548a8582615660565b905061549581615815565b93506154c96154a382615822565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b6000806154e083600061582f565b91509150915091565b60006154f68260096163d7565b83511015615507575060001961475d565b60008061551e856155198660086163d7565b61582f565b9092509050600019821415615539576000199250505061475d565b806155458360096163d7565b61554f91906163d7565b95945050505050565b6060816155745750604080516020810190915260008152614c46565b600061558083856163d7565b90508381118015615592575080855110155b6155de5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610cef565b604051915082604083010160405282825283850182038460208701018481015b80821015615617578151838301526020820191506155fe565b505050509392505050565b600080806156308585614c37565b925061563f6154a386866159ab565b915061564b85856159c2565b90509250925092565b600061475d8282614c37565b606060008061566e856154d2565b90925090506000198214156156d05760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610cef565b80841061571f5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610cef565b60008061572d8460016163d7565b905060005b868110156157b65761574488836159c2565b92506000198314156157985760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610cef565b6157a283836163d7565b9150806157ae81616405565b915050615732565b506157c187826159c2565b91506000198214156149545760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610cef565b602081015160009061475d565b600061475d826020614c37565b600080600061583e8585615a0d565b905060ff811661587057600085858151811061585c5761585c6163ef565b016020015190935060f81c91506159a49050565b8361587c826001616aee565b60ff1661588991906163d7565b855110156158a057600019600092509250506159a4565b60008160ff16600214156158e5576158da6158c66158bf8760016163d7565b8890614c37565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061599a565b8160ff166004141561590f576159026154a36158bf8760016163d7565b63ffffffff16905061599a565b8160ff166008141561599a5761598e61592c6158bf8760016163d7565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000614c466159bb8360206163d7565b8490614c37565b60008060006159d18585615a99565b90925090506000198214156159ec576000199250505061475d565b806159f88360256163d7565b615a0291906163d7565b61554f9060046163d7565b6000828281518110615a2157615a216163ef565b60209101015160f81c60ff1415615a3a5750600861475d565b828281518110615a4c57615a4c6163ef565b60209101015160f81c60fe1415615a655750600461475d565b828281518110615a7757615a776163ef565b60209101015160f81c60fd1415615a905750600261475d565b50600092915050565b600080615aa78360256163d7565b84511015615abc5750600019905060006159a4565b600080615ace866155198760246163d7565b9097909650945050505050565b600060208284031215615aed57600080fd5b5035919050565b600060808284031215615b0657600080fd5b50919050565b600060608284031215615b0657600080fd5b80356001600160601b031981168114615b3657600080fd5b919050565b60008060008060c08587031215615b5157600080fd5b84356001600160401b0380821115615b6857600080fd5b615b7488838901615af4565b95506020870135915080821115615b8a57600080fd5b50615b9787828801615b0c565b935050615ba78660408701615b0c565b9150615bb560a08601615b1e565b905092959194509250565b600080600060608486031215615bd557600080fd5b505081359360208301359350604090920135919050565b60008060808385031215615bff57600080fd5b615c0883615b1e565b9150615c178460208501615b0c565b90509250929050565b600080600060a08486031215615c3557600080fd5b83356001600160401b0380821115615c4c57600080fd5b615c5887838801615af4565b94506020860135915080821115615c6e57600080fd5b50615c7b86828701615b0c565b92505061564b8560408601615b0c565b600080828403610100811215615ca057600080fd5b83356001600160401b03811115615cb657600080fd5b615cc286828701615af4565b93505060e0601f1982011215615cd757600080fd5b506020830190509250929050565b80356001600160a01b0381168114615b3657600080fd5b80358015158114615b3657600080fd5b60008060408385031215615d1f57600080fd5b615d2883615ce5565b9150615c1760208401615cfc565b60008083601f840112615d4857600080fd5b5081356001600160401b03811115615d5f57600080fd5b6020830191508360208285010111156159a457600080fd5b600080600060408486031215615d8c57600080fd5b615d9584615b1e565b925060208401356001600160401b03811115615db057600080fd5b615dbc86828701615d36565b9497909650939450505050565b60008060008060a08587031215615ddf57600080fd5b84356001600160401b03811115615df557600080fd5b615e0187828801615d36565b90955093505060208501359150615bb58660408701615b0c565b600080600080600060608688031215615e3357600080fd5b85356001600160401b0380821115615e4a57600080fd5b615e5689838a01615d36565b90975095506020880135915080821115615e6f57600080fd5b50615e7c88828901615d36565b9094509250615e8f905060408701615cfc565b90509295509295909350565b600060208284031215615ead57600080fd5b614c4682615b1e565b634e487b7160e01b600052602160045260246000fd5b600060e08201905082518252602083015160208301526001600160401b036040840151166040830152606083015163ffffffff8082166060850152806080860151166080850152505060a083015160058110615f3857634e487b7160e01b600052602160045260246000fd5b8060a08401525060c083015160c083015292915050565b600060608284031215615f6157600080fd5b614c468383615b0c565b80356001600160401b0381168114615b3657600080fd5b600080600080600060c08688031215615f9a57600080fd5b615fa386615b1e565b9450615fb28760208801615b0c565b935060808601356001600160401b03811115615fcd57600080fd5b615fd988828901615d36565b9094509250615e8f905060a08701615f6b565b60008060006040848603121561600157600080fd5b83356001600160401b0381111561601757600080fd5b61602386828701615d36565b909790965060209590950135949350505050565b60006020828403121561604957600080fd5b614c4682615ce5565b803563ffffffff81168114615b3657600080fd5b6000806000806080858703121561607c57600080fd5b61608585616052565b935061609360208601615f6b565b92506160a160408601615f6b565b9150615bb560608601616052565b80356001600160e01b031981168114615b3657600080fd5b6000808335601e198436030181126160de57600080fd5b83016020810192503590506001600160401b038111156160fd57600080fd5b8036038313156159a457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b03198061614e876160af565b1660a084015261616160208701876160c7565b608060c08601526161776101208601828461610c565b91505061618760408801886160c7565b858303609f190160e087015261619e83828461610c565b92505050816161af606089016160af565b1661010085015283810360208501526161c886876160c7565b9250606082526161dc60608301848361610c565b925050602086013560208201526161f660408701876160c7565b828403604084015261620984828461610c565b945050505050614a6a60408301848051825260208082015190830152604090810151910152565b60006020828403121561624257600080fd5b5051919050565b6000808335601e1984360301811261626057600080fd5b8301803591506001600160401b0382111561627a57600080fd5b6020019150368190038213156159a457600080fd5b6000602082840312156162a157600080fd5b614c4682615f6b565b634e487b7160e01b600052601160045260246000fd5b6000828210156162d2576162d26162aa565b500390565b8035825263ffffffff6162ec60208301616052565b1660208301526001600160401b0361630660408301615f6b565b1660408301525050565b8381526001600160601b03198316602082015260a08101614a6a60408301846162d7565b60006020828403121561634657600080fd5b614c4682616052565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561637757600080fd5b604051606081018181106001600160401b03821117156163a757634e487b7160e01b600052604160045260246000fd5b604052823581526163ba60208401616052565b60208201526163cb60408401615f6b565b60408201529392505050565b600082198211156163ea576163ea6162aa565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415616419576164196162aa565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156164625781516001600160a01b03168452928401929084019060010161643d565b5050508381038285015284518082528583019183019060005b818110156164975783518352928401929184019160010161647b565b5090979650505050505050565b6000602082840312156164b657600080fd5b81356001600160c01b031981168114614c4657600080fd5b6000602082840312156164e057600080fd5b614c46826160af565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006165bd6165b0616587602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f6300000000000000000000000000000000000000000000000000000000000000601582015261667c6165b061658761655e616653601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506167526167296006830161662a565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b8181101561677f5760208185018101518683015201616765565b8181111561678e576000828601525b509290920192915050565b6000614c46828461675e565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680616817576168176167e7565b92169190910492915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b0383811690831681811015616867576168676162aa565b039392505050565b6bffffffffffffffffffffffff198416815260406020820152600061554f60408301848661610c565b86815260e0602082015260006168b260e08301878961610c565b90506bffffffffffffffffffffffff198516604083015283606083015282356080830152602083013560a0830152604083013560ff81168082146168f557600080fd5b8060c08501525050979650505050505050565b86815260806020820152600061692260808301878961610c565b828103604084015261693581868861610c565b9150508215156060830152979650505050505050565b86815260806020820152600061696560808301878961610c565b828103604084015261697881868861610c565b9150506001600160a01b0383166060830152979650505050505050565b82815260808101614c4660208301846162d7565b6001600160c01b031984168152818360088301376000910160080190815292915050565b60006001600160401b038083168185168083038211156169ef576169ef6162aa565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201526000616a2160c08301888a61610c565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b848152606060208201526000616a7560608301858761610c565b905082604083015295945050505050565b600082616a9557616a956167e7565b500690565b600082616aa957616aa96167e7565b500490565b815160009082906020808601845b83811015616ae25781516001600160601b03191685529382019390820190600101616abc565b50929695505050505050565b600060ff821660ff84168060ff03821115616b0b57616b0b6162aa565b019392505050565b600060ff821660ff841680821015616b2d57616b2d6162aa565b90039392505050565b6001600160601b0319831681526000614a6a601483018461675e56fea2646970667358221220e197b7f4039a223d293bd6ed64a5862c583c457e9d49a7a23a4305be71d9c0e364736f6c63430008090033",
1651
+ "deployedBytecode": "0x6080604052600436106102bb5760003560e01c8063793bb4731161016e578063b59589d1116100cb578063e53c0b551161007f578063e95eb7a811610064578063e95eb7a814610ad8578063f2fde38b14610aff578063fd56208014610b1f57600080fd5b8063e53c0b5514610a88578063e8f3db4314610ab857600080fd5b8063cb7f3a09116100b0578063cb7f3a0914610a21578063d6eccdf014610a48578063d95027b714610a6857600080fd5b8063b59589d1146109c6578063bdf9fca9146109fa57600080fd5b8063a588f05911610122578063b02c43d011610107578063b02c43d0146108a4578063b2146cd614610966578063b34b3216146109a657600080fd5b8063a588f05914610864578063a8fa0f421461088457600080fd5b80638dd0f79a116101535780638dd0f79a146107b75780638fa4ad2814610817578063a145e2d51461084457600080fd5b8063793bb4731461075d5780638da5cb5b1461079957600080fd5b806359a9d90a1161021c57806367f27247116101d0578063715018a6116101b5578063715018a6146106f457806376cdb03b1461070957806377145f211461073d57600080fd5b806367f27247146106c15780636d02b43c146106e157600080fd5b80635c0b4812116102015780635c0b48121461063557806360d712fc1461065557806361d027b31461067557600080fd5b806359a9d90a146105ee5780635afb143c1461060e57600080fd5b80632f429b64116102735780633dce9812116102585780633dce981214610575578063575e427914610595578063595ff9ff146105b557600080fd5b80632f429b641461047457806333e957cb1461049657600080fd5b80630b6ba19d116102a45780630b6ba19d146103b05780631fff4e701461041c5780632bb818c21461044057600080fd5b806303d952f7146102c0578063079bf52c14610378575b600080fd5b3480156102cc57600080fd5b5061032c6102db366004615adb565b600860205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b604080516001600160a01b0390961686526001600160401b0394851660208701529284169285019290925291909116606083015263ffffffff16608082015260a0015b60405180910390f35b34801561038457600080fd5b50600154610398906001600160401b031681565b6040516001600160401b03909116815260200161036f565b3480156103bc57600080fd5b5061032c6103cb366004615adb565b600960205260009081526040902080546001909101546001600160a01b03821691600160a01b90046001600160401b039081169181811691600160401b82041690600160801b900463ffffffff1685565b34801561042857600080fd5b5061043260035481565b60405190815260200161036f565b34801561044c57600080fd5b506104327f000000000000000000000000000000000000000000000000000000000000000081565b34801561048057600080fd5b5061049461048f366004615b3b565b610b3f565b005b3480156104a257600080fd5b506105316104b1366004615adb565b604080516080810182526000808252602082018190529181018290526060810191909152506000908152600e6020908152604091829020825160808101845281546001600160a01b031681526001820154928101929092526002015463ffffffff81169282019290925264010000000090910460ff161515606082015290565b60405161036f919081516001600160a01b031681526020808301519082015260408083015163ffffffff169082015260609182015115159181019190915260800190565b34801561058157600080fd5b50610494610590366004615bc0565b610dd8565b3480156105a157600080fd5b506104946105b0366004615bec565b610e68565b3480156105c157600080fd5b50600a54600b54600c54600d5460408051948552602085019390935291830152606082015260800161036f565b3480156105fa57600080fd5b50610494610609366004615c20565b610ef1565b34801561061a57600080fd5b5060005461039890600160a01b90046001600160401b031681565b34801561064157600080fd5b50610494610650366004615c8b565b611562565b34801561066157600080fd5b50610494610670366004615d0c565b611cf3565b34801561068157600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161036f565b3480156106cd57600080fd5b506104946106dc366004615d77565b611dac565b6104946106ef366004615dc9565b61232d565b34801561070057600080fd5b50610494612535565b34801561071557600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b34801561074957600080fd5b50610494610758366004615e1b565b61259b565b34801561076957600080fd5b506010546c01000000000000000000000000900460601b6040516001600160601b0319909116815260200161036f565b3480156107a557600080fd5b506000546001600160a01b03166106a9565b3480156107c357600080fd5b50600f546010546040805163ffffffff600160a01b8504811682526001600160401b03600160c01b9095048516602083015293831691810191909152600160401b909104909116606082015260800161036f565b34801561082357600080fd5b50610837610832366004615e9b565b61279f565b60405161036f9190615ecc565b34801561085057600080fd5b5061049461085f366004615f4f565b612895565b34801561087057600080fd5b50600254610398906001600160401b031681565b34801561089057600080fd5b5061049461089f366004615bc0565b61291b565b3480156108b057600080fd5b506109166108bf366004615adb565b600660205260009081526040902080546001909101546001600160a01b03808316926001600160401b03600160a01b80830482169463ffffffff600160e01b94859004811695821694928204909316929190041686565b604080516001600160a01b0397881681526001600160401b03968716602082015263ffffffff958616918101919091529590921660608601529290921660808401521660a082015260c00161036f565b34801561097257600080fd5b50610996610981366004615adb565b60076020526000908152604090205460ff1681565b604051901515815260200161036f565b3480156109b257600080fd5b506104946109c1366004615b3b565b612981565b3480156109d257600080fd5b506106a97f000000000000000000000000000000000000000000000000000000000000000081565b348015610a0657600080fd5b5060015461039890600160801b90046001600160401b031681565b348015610a2d57600080fd5b5060015461039890600160401b90046001600160401b031681565b348015610a5457600080fd5b50610494610a63366004615f82565b612db3565b348015610a7457600080fd5b50610494610a83366004615fec565b6134db565b348015610a9457600080fd5b50610996610aa3366004616037565b60056020526000908152604090205460ff1681565b348015610ac457600080fd5b50600454610398906001600160401b031681565b348015610ae457600080fd5b5060015461039890600160c01b90046001600160401b031681565b348015610b0b57600080fd5b50610494610b1a366004616037565b613532565b348015610b2b57600080fd5b50610494610b3a366004616066565b613614565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348686610b65613817565b6040518463ffffffff1660e01b8152600401610b8393929190616135565b60206040518083038186803b158015610b9b57600080fd5b505af4158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190616230565b9050610c23610be56020870187616249565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691506139949050565b600080610c70610c366040890189616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613be992505050565b60045491935091506001600160401b031681610c92606088016040890161628f565b6001600160401b0316610ca591906162c0565b1115610cf85760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f2068696768000000000060448201526064015b60405180910390fd5b6040517f35e741c9000000000000000000000000000000000000000000000000000000008152600f60048201526001600160601b0319851660248201526044810183905273__$0f118c52967a3847a37f0a2ef02ffcee04$__906335e741c99060640160006040518083038186803b158015610d7357600080fd5b505af4158015610d87573d6000803e3d6000fd5b5050604080516001600160601b031988168152602081018790527fc635af1892551655b9dbb3256a0eed3e35baf4fcc5392b80e6a907b6f44a2838935001905060405180910390a150505050505050565b6040517f1803c09e000000000000000000000000000000000000000000000000000000008152600f6004820152602481018390526044810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90631803c09e906064015b60006040518083038186803b158015610e4b57600080fd5b505af4158015610e5f573d6000803e3d6000fd5b50505050505050565b6040517f9655f02b00000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__90639655f02b90610ebd90600f9086908690600401616310565b60006040518083038186803b158015610ed557600080fd5b505af4158015610ee9573d6000803e3d6000fd5b505050505050565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae1348585610f17613817565b6040518463ffffffff1660e01b8152600401610f3593929190616135565b60206040518083038186803b158015610f4d57600080fd5b505af4158015610f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f859190616230565b9050600080610fd4610f9a6040880188616249565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061405092505050565b6001600160601b031982166000908152601160205260409020600281015492945090925090600160801b900460ff16600181600481111561101757611017615eb6565b14806110345750600281600481111561103257611032615eb6565b145b6110a65760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e64732073746174650000000000000000000000000000000000000000006064820152608401610cef565b6040805160608101825260008082526020820181905291810191909152600183015480156111a3578088356110e160408b0160208c01616334565b6110f160608c0160408d0161628f565b60405160200161112e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146111915760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b6111a036899003890189616365565b91505b60006111f16111b560208d018d616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250614183915050565b90506000808061121484600001518a6001600160401b0316866040015151614763565b6001549193509150600160401b90046001600160401b031661123682846163d7565b11156112845760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e2066656520697320746f6f206869676800000000006044820152606401610cef565b60005b84604001515181101561137257600060018660400151516112a891906162c0565b82146112b457836112be565b6112be83856163d7565b905080866060015183815181106112d7576112d76163ef565b6020026020010151876040015184815181106112f5576112f56163ef565b602002602001015161130791906162c0565b61131191906162c0565b86604001518381518110611327576113276163ef565b60200260200101818152505085606001518281518110611349576113496163ef565b60200260200101518561135c91906163d7565b945050808061136a90616405565b915050611287565b5060408051602081018d90526000918101919091526001600160c01b031960c08b901b166044820152604c0160408051808303601f19018152828252805160209182012060018c01556001600160601b03198d16835282018d90527fe50ffdcc0a5f2c1ede5c122b9414ffd7b2c6bc870d2d775194049dc30da95e6a910160405180910390a1602084015160408086015190517f266a123a0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263266a123a9261146592600401616420565b600060405180830381600087803b15801561147f57600080fd5b505af1158015611493573d6000803e3d6000fd5b50506040517f5b86f5990000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169250635b86f5999150604401600060405180830381600087803b15801561153a57600080fd5b505af115801561154e573d6000803e3d6000fd5b505050505050505050505050505050505050565b6001601160006115786080850160608601615e9b565b6001600160601b0319168152602081019190915260400160002060020154600160801b900460ff1660048111156115b1576115b1615eb6565b146115fe5760405162461bcd60e51b815260206004820152601b60248201527f57616c6c6574206973206e6f7420696e204c69766520737461746500000000006044820152606401610cef565b600061161060e0830160c08401616037565b6001600160a01b0316148061165257506005600061163460e0840160c08501616037565b6001600160a01b0316815260208101919091526040016000205460ff165b61169e5760405162461bcd60e51b815260206004820152601460248201527f5661756c74206973206e6f7420747275737465640000000000000000000000006044820152606401610cef565b60006116b06040830160208401616037565b6116c060608401604085016164a4565b6116d06080850160608601615e9b565b6116e060a0860160808701615e9b565b6116f060c0870160a088016164ce565b6040516020016117049594939291906164e9565b60408051601f19818403018152919052905060006117786117286020850185616334565b63ffffffff1661173b6040870187616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061479f9050565b905060006117858261496a565b905080516014141561180b5761179a83614c10565b6001600160601b0319166117af826000614c37565b6001600160601b031916146118065760405162461bcd60e51b815260206004820152601960248201527f57726f6e672032302d62797465207363726970742068617368000000000000006044820152606401610cef565b611903565b8051602014156118bb576002836040516118259190616799565b602060405180830381855afa158015611842573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906118659190616230565b61186e82614c4d565b146118065760405162461bcd60e51b815260206004820152601960248201527f57726f6e672033322d62797465207363726970742068617368000000000000006044820152606401610cef565b60405162461bcd60e51b815260206004820152601860248201527f57726f6e67207363726970742068617368206c656e67746800000000000000006044820152606401610cef565b600061196861191560208801886164ce565b6119226020890189616249565b61192f60408b018b616249565b61193f60808d0160608e016164ce565b604051602001611954969594939291906167a5565b604051602081830303815290604052614c69565b905060006006818361197d60208a018a616334565b6040516020016119a492919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615611a285760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616c72656164792072657665616c656400000000000000006044820152606401610cef565b6000611a3385614c90565b6000549091506001600160401b03600160a01b90910481169082161015611a9c5760405162461bcd60e51b815260206004820152601860248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c00000000000000006044820152606401610cef565b81547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b6001600160401b03831602178255611ae36040880160208901616037565b82546001600160a01b03919091167bffffffffffffffff000000000000000000000000000000000000000090911617600160e01b4263ffffffff1602178255611b3260e0880160c08901616037565b6001838101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039390931692909217909155546001600160401b0316611b78576000611b8e565b600154611b8e906001600160401b0316826167fd565b6001830180546001600160401b0392909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9092169190911790557fa7382159a693ed317a024daf0fd1ba30805cdf9928ee09550af517c516e2ef0583611bff60208a018a616334565b611c0f60408b0160208c01616037565b84611c2060608d0160408e016164a4565b611c3060808e0160608f01615e9b565b8d6080016020810190611c439190615e9b565b8e60a0016020810190611c5691906164ce565b8f60c0016020810190611c699190616037565b60408051998a5263ffffffff90981660208a01526001600160a01b03968716978901979097526001600160401b0390941660608801526001600160c01b031990921660808701526001600160601b031990811660a08701521660c08501526001600160e01b03191660e0840152166101008201526101200160405180910390a15050505050505050565b6000546001600160a01b03163314611d4d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527f9065599c12c4294d9e2201638226d0d0beb95c228f468c4e7c2bdb8322b6066f910160405180910390a25050565b6000838383604051602001611dc393929190616823565b60408051808303601f19018152828252805160209182012060008181526008835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b03908116938601939093526001015480831693850193909352600160401b83049091166060840152600160801b90910463ffffffff1660808301819052909250611e9f5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b6064820152608401610cef565b42600354826080015163ffffffff16611eb891906163d7565b10611f2a5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f7574000000000000000000000000000000000000000000000000000000006064820152608401610cef565b6001600160601b031985166000908152601160209081526040918290209183015190830151611f599190616847565b600282018054600090611f769084906001600160401b0316616847565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555060016004811115611fad57611fad615eb6565b6002820154600160801b900460ff166004811115611fcd57611fcd615eb6565b1480611ff75750600280820154600160801b900460ff166004811115611ff557611ff5615eb6565b145b80612021575060046002820154600160801b900460ff16600481111561201f5761201f615eb6565b145b6120935760405162461bcd60e51b815260206004820152603b60248201527f5468652077616c6c6574206d75737420626520696e204c6976652c204d6f766960448201527f6e6746756e6473206f72205465726d696e6174656420737461746500000000006064820152608401610cef565b600083815260096020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386166fffffffffffffffffffffffffffffffff1990921691909117600160401b91909516029390931773ffffffff000000000000000000000000000000001916600160801b63ffffffff909216919091021790915560089093529220805490911681558101805473ffffffffffffffffffffffffffffffffffffffff191690556002820154600160801b900460ff16600481111561218e5761218e615eb6565b14806121b85750600280820154600160801b900460ff1660048111156121b6576121b6615eb6565b145b1561224a576040517f65951fcf000000000000000000000000000000000000000000000000000000008152600f60048201526001600160601b03198716602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__906365951fcf9060440160006040518083038186803b15801561223157600080fd5b505af4158015612245573d6000803e3d6000fd5b505050505b7f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d586868660405161227d9392919061686f565b60405180910390a1815160208301516040516356a6d9ef60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926356a6d9ef926122f3926004016001600160a01b039290921682526001600160401b0316602082015260400190565b600060405180830381600087803b15801561230d57600080fd5b505af1158015612321573d6000803e3d6000fd5b50505050505050505050565b60006123ba612376600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050614d069050565b604080516020601f89018190048102820181019092528781526123b591908989808385018382808284376000920191909152509293925050614d069050565b614d0e565b905060006123c782614c10565b6001600160601b03198116600090815260116020526040902090915060016002820154600160801b900460ff16600481111561240557612405615eb6565b148061242f5750600280820154600160801b900460ff16600481111561242d5761242d615eb6565b145b6124a15760405162461bcd60e51b815260206004820152602f60248201527f57616c6c6574206973206e65697468657220696e204c697665206e6f72204d6f60448201527f76696e6746756e647320737461746500000000000000000000000000000000006064820152608401610cef565b6040517f9a08b74000000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90639a08b740906124fc90600a908b908b9088908c908c90600401616898565b60006040518083038186803b15801561251457600080fd5b505af4158015612528573d6000803e3d6000fd5b5050505050505050505050565b6000546001600160a01b0316331461258f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6125996000614db8565b565b6040517fc945968600000000000000000000000000000000000000000000000000000000815260009073__$d790fbbb73aa5f15b682a7376a512ac8e4$__9063c9459686906125f990600a908a908a908a908a908a90600401616908565b60206040518083038186803b15801561261157600080fd5b505af4158015612625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126499190616230565b600081815260066020526040902060010154909150600160e01b900463ffffffff16151580612686575060008181526007602052604090205460ff165b6126f85760405162461bcd60e51b815260206004820152603060248201527f5370656e74205554584f206e6f7420666f756e6420616d6f6e6720636f72726560448201527f63746c79207370656e74205554584f73000000000000000000000000000000006064820152608401610cef565b6040517f3f31f49f00000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__90633f31f49f9061277390600a908a908a908a908a907f00000000000000000000000000000000000000000000000000000000000000009060040161694b565b60006040518083038186803b15801561278b57600080fd5b505af4158015612321573d6000803e3d6000fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526001600160601b03198216600090815260116020908152604091829020825160e0810184528154815260018201549281019290925260028101546001600160401b0381169383019390935263ffffffff600160401b8404811660608401526c010000000000000000000000008404166080830152909160a083019060ff600160801b90910416600481111561286f5761286f615eb6565b600481111561288057612880615eb6565b81526020016003820154815250509050919050565b6040517fb4e671f400000000000000000000000000000000000000000000000000000000815273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063b4e671f4906128e890600f908590600401616995565b60006040518083038186803b15801561290057600080fd5b505af4158015612914573d6000803e3d6000fd5b5050505050565b6040517f4fd7d486000000000000000000000000000000000000000000000000000000008152600f600482015260248101849052604481018390526064810182905273__$0f118c52967a3847a37f0a2ef02ffcee04$__90634fd7d48690608401610e33565b600073__$a0a90fa014aeccc935ad103f88ed15a604$__639d7ae13486866129a7613817565b6040518463ffffffff1660e01b81526004016129c593929190616135565b60206040518083038186803b1580156129dd57600080fd5b505af41580156129f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a159190616230565b9050612a27610be56020870187616249565b6001600160601b0319821660009081526011602052604090206002810154600160801b900460ff166001816004811115612a6357612a63615eb6565b1480612a8057506002816004811115612a7e57612a7e615eb6565b145b612af25760405162461bcd60e51b815260206004820152602a60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756473207374617465000000000000000000000000000000000000000000006064820152608401610cef565b6000612b40612b0460408a018a616249565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250614e15915050565b60608101519091506001600160401b031615612bc0578381604001518260600151604051602001612b9e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f1981840301815291905280516020909101206001840155612bc8565b600060018401555b8051600284018054600090612be79084906001600160401b0316616847565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe8585604051612c519291906001600160601b0319929092168252602082015260400190565b60405180910390a180516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063392aee4390602401600060405180830381600087803b158015612cdf57600080fd5b505af1158015612cf3573d6000803e3d6000fd5b5050505060208101516040516356a6d9ef60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160401b0390921660248201527f0000000000000000000000000000000000000000000000000000000000000000909116906356a6d9ef90604401600060405180830381600087803b158015612d9157600080fd5b505af1158015612da5573d6000803e3d6000fd5b505050505050505050505050565b6001600160601b03198516600090815260116020526040902060016002820154600160801b900460ff166004811115612dee57612dee615eb6565b14612e3b5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610cef565b600181015480612e975760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b6064820152608401610cef565b808635612eaa6040890160208a01616334565b612eba60608a0160408b0161628f565b604051602001612ef79392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014612f5a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b6000612f8c600060c01b8787604051602001612f78939291906169a9565b60405160208183030381529060405261496a565b905060008151116130055760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e6461726420747970650000000000000000000000000000000000006064820152608401610cef565b80805190602001208860405160200161302e91906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156130b85760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b480000000000000000006064820152608401610cef565b6001546001600160401b03600160801b9091048116908516101561311e5760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c00000000006044820152606401610cef565b600088878760405160200161313593929190616823565b60408051808303601f19018152918152815160209283012060008181526008909352912060010154909150600160801b900463ffffffff16156132065760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a401610cef565b600154600090600160c01b90046001600160401b0316613227576000613244565b60015461324490600160c01b90046001600160401b0316876167fd565b6002549091506001600160401b031661325d8288616847565b60028701805460009061327a9084906001600160401b03166169cd565b82546101009290920a6001600160401b0381810219909316918316021790915560028801541690506132b260608c0160408d0161628f565b6001600160401b031610156133095760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e6473000000000000006044820152606401610cef565b6040805160a081018252338082526001600160401b03808b1660208085019182528783168587019081528784166060870190815263ffffffff4281166080890190815260008d81526008909552938990209751885495518716600160a01b026001600160e01b03199096166001600160a01b03919091161794909417875590516001909601805491519251909316600160801b0273ffffffff0000000000000000000000000000000019928516600160401b026fffffffffffffffffffffffffffffffff19909216969094169590951794909417939093161790915590517f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d959161341f918e918d918d91908d90899089906169f8565b60405180910390a16040517f7c6db49c0000000000000000000000000000000000000000000000000000000081523360048201523060248201526001600160401b03881660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c6db49c90606401600060405180830381600087803b1580156134b657600080fd5b505af11580156134ca573d6000803e3d6000fd5b505050505050505050505050505050565b6040517f21e76ee800000000000000000000000000000000000000000000000000000000815273__$d790fbbb73aa5f15b682a7376a512ac8e4$__906321e76ee890610e3390600a90879087908790600401616a5b565b6000546001600160a01b0316331461358c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6001600160a01b0381166136085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610cef565b61361181614db8565b50565b6000546001600160a01b0316331461366e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cef565b6040517f041aee99000000000000000000000000000000000000000000000000000000008152600f600482015263ffffffff8516602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__9063041aee999060440160006040518083038186803b1580156136de57600080fd5b505af41580156136f2573d6000803e3d6000fd5b50506040517f998b564c000000000000000000000000000000000000000000000000000000008152600f60048201526001600160401b0380871660248301528516604482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__925063998b564c915060640160006040518083038186803b15801561377157600080fd5b505af4158015613785573d6000803e3d6000fd5b50506040517f45d9969c000000000000000000000000000000000000000000000000000000008152600f600482015263ffffffff8416602482015273__$0f118c52967a3847a37f0a2ef02ffcee04$__92506345d9969c915060440160006040518083038186803b1580156137f957600080fd5b505af415801561380d573d6000803e3d6000fd5b5050505050505050565b61383b60405180606001604052806000815260200160008152602001600081525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663113764be6040518163ffffffff1660e01b815260040160206040518083038186803b15801561389457600080fd5b505afa1580156138a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cc9190616230565b8160000181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b15801561392e57600080fd5b505afa158015613942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139669190616230565b60208201527f0000000000000000000000000000000000000000000000000000000000000000604082015290565b6001600160601b03198116600090815260116020526040902060010154806139fe5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c65740000006044820152606401610cef565b808335613a116040860160208701616334565b613a21606087016040880161628f565b604051602001613a5e9392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014613ac15760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f2064617461000000000000000000006044820152606401610cef565b600080613acd866153f7565b9092509050843582148015613afc575063ffffffff8116613af46040870160208801616334565b63ffffffff16145b613b6e5760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f006064820152608401610cef565b6001600760008735613b8660408a0160208b01616334565b604051602001613bad92919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055505050505050565b600080600080613bf8856154d2565b90925090506000613c0a8360016163d7565b90506000826001600160401b03811115613c2657613c2661634f565b604051908082528060200260200182016040528015613c4f578160200160208202803683370190505b5090506000836001600160401b03811115613c6c57613c6c61634f565b604051908082528060200260200182016040528015613c95578160200160208202803683370190505b50905060005b84811015613f00576000613caf8a866154e9565b90506000613cbe8b8784615558565b90506000613ccb8261496a565b90508051601414613d445760405162461bcd60e51b815260206004820152603060248201527f5461726765742077616c6c6574207075626c6963206b65792068617368206d7560448201527f73742068617665203230206279746573000000000000000000000000000000006064820152608401610cef565b6000613d508282614c37565b90506000613d6e6008808651613d6691906162c0565b869190615558565b80516020918201206040805163065daa4560e21b818501526001600160601b031986166024820181905261222b60f21b60388301528251601a818403018152603a830184528051908601206205800560ea1b605a840152605d830191909152825160518184030181526071909201909252805193019290922090925081831480613df757508083145b613e435760405162461bcd60e51b815260206004820152601e60248201527f4f7574707574206d757374206265205032504b48206f7220503257504b4800006044820152606401610cef565b838a8981518110613e5657613e566163ef565b6001600160601b031990921660209283029190910190910152613e7886614c90565b898981518110613e8a57613e8a6163ef565b60200260200101906001600160401b031690816001600160401b031681525050888881518110613ebc57613ebc6163ef565b60200260200101516001600160401b03168e613ed891906163d7565b9d50613ee4878c6163d7565b9a50505050505050508080613ef890616405565b915050613c9b565b506000613f0d8588616a86565b9050600085613f1c838a6162c0565b613f269190616a9a565b90506000613f3483836163d7565b905060005b8781101561401957848181518110613f5357613f536163ef565b60200260200101516001600160401b03168311158015613f95575081858281518110613f8157613f816163ef565b60200260200101516001600160401b031611155b6140075760405162461bcd60e51b815260206004820152602c60248201527f5472616e73616374696f6e20616d6f756e74206973206e6f742064697374726960448201527f6275746564206576656e6c7900000000000000000000000000000000000000006064820152608401610cef565b8061401181616405565b915050613f39565b508460405160200161402b9190616aae565b6040516020818303038152906040528051906020012099505050505050505050915091565b600080600061405e846154d2565b915050806001146140d75760405162461bcd60e51b815260206004820152602b60248201527f5377656570207472616e73616374696f6e206d7573742068617665206120736960448201527f6e676c65206f75747075740000000000000000000000000000000000000000006064820152608401610cef565b60006140e3858261479f565b90506140ee81614c90565b925060006140fb8261496a565b905080516014146141745760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574207075626c6963206b657920686173682073686f756c6420686160448201527f76652032302062797465730000000000000000000000000000000000000000006064820152608401610cef565b60208101519450505050915091565b6141ae6040518060800160405280600081526020016060815260200160608152602001606081525090565b81511515600080806141bf876154d2565b909250905060006141d18360016163d7565b905084156141e9576141e46001836162c0565b6141eb565b815b6001600160401b038111156142025761420261634f565b60405190808252806020026020018201604052801561422b578160200160208202803683370190505b5060208701819052516001600160401b0381111561424b5761424b61634f565b604051908082528060200260200182016040528015614274578160200160208202803683370190505b5060408701526020860151516001600160401b038111156142975761429761634f565b6040519080825280602002602001820160405280156142c0578160200160208202803683370190505b5060608701526000805b838110156146665760008060006142e18d87615622565b925092509250600060066000858560405160200161431692919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f190181529181528151602092830120835290820192909252016000208054909150600160e01b900463ffffffff1615614552576001810154600160e01b900463ffffffff16156143b15760405162461bcd60e51b815260206004820152601560248201527f4465706f73697420616c726561647920737765707400000000000000000000006044820152606401610cef565b8b602001515186141561442c5760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610cef565b6001810180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e01b4263ffffffff1602179055805460208d015180516001600160a01b039092169188908110614485576144856163ef565b6001600160a01b039290921660209283029190910190910152805460408d01518051600160a01b9092046001600160401b031691889081106144c9576144c96163ef565b6020026020010181815250508b6040015186815181106144eb576144eb6163ef565b60200260200101518c60000181815161450491906163d7565b905250600181015460608d01518051600160a01b9092046001600160401b03169188908110614535576145356163ef565b60209081029190910101528561454a81616405565b965050614643565b8915158b15151415801561456657508c5184145b156145fb578c604001516001600160401b03168c60000181815161458a91906163d7565b90525060405160019a508a906007906000906145c2908890889060200191825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff1916911515919091179055614643565b60405162461bcd60e51b815260206004820152601260248201527f556e6b6e6f776e20696e707574207479706500000000000000000000000000006044820152606401610cef565b61464d82886163d7565b965050505050808061465e90616405565b9150506142ca565b50600081116146dd5760405162461bcd60e51b815260206004820152603360248201527f5377656570207472616e73616374696f6e206d7573742070726f63657373206160448201527f74206c65617374206f6e65206465706f736974000000000000000000000000006064820152608401610cef565b841515861515146147565760405162461bcd60e51b815260206004820152603a60248201527f4578706563746564206d61696e205554584f206e6f742070726573656e74206960448201527f6e207377656570207472616e73616374696f6e20696e707574730000000000006064820152608401610cef565b5050505050505b92915050565b6000808061477185876162c0565b905061477d8482616a86565b91508361478a83836162c0565b6147949190616a9a565b925050935093915050565b60606000806147ad856154d2565b909250905060001982141561480f5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610cef565b80841061485e5760405162461bcd60e51b815260206004820152601160248201527f566f75742072656164206f76657272756e0000000000000000000000000000006044820152606401610cef565b60008061486c8460016163d7565b905060005b868110156148f55761488388836154e9565b92506000198314156148d75760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610cef565b6148e183836163d7565b9150806148ed81616405565b915050614871565b5061490087826154e9565b91506000198214156149545760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610cef565b61495f878284615558565b979650505050505050565b6060600082600881518110614981576149816163ef565b0160200151835160f89190911c915061499b826009616aee565b60ff16146149b9575050604080516020810190915260008152919050565b826009815181106149cc576149cc6163ef565b016020015160f81c614a725760028160ff1610156149fa575050604080516020810190915260008152919050565b600083600a81518110614a0f57614a0f6163ef565b016020015160f81c9050614a24600283616b13565b60ff1681141580614a42575080602014158015614a42575080601414155b15614a5e57505060408051602081019091526000815292915050565b614a6a84600b83615558565b949350505050565b6000614a7f846008614c37565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415614b5c5783600b81518110614ade57614ade6163ef565b60209101015160f81c6014141580614b335750614b0960028551614b0291906162c0565b8590614c37565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b15614b4f57505060408051602081019091526000815292915050565b614a6a84600c6014615558565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000082161415614bf9578360018551614bb591906162c0565b81518110614bc557614bc56163ef565b60209101015160f81c608714614bec57505060408051602081019091526000815292915050565b614a6a84600b6014615558565b505050604080516020810190915260008152919050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6000614c468383016020015190565b9392505050565b6000815160001415614c6157506000919050565b506020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600080614c9c83615654565b60c01c90506000614a6a8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b016020015190565b60606000614d1d600284616a86565b614d4857507f0200000000000000000000000000000000000000000000000000000000000000614d6b565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051608081018252600080825260208201819052918101829052606081018290529080614e43856154d2565b90925090506000614e558360016163d7565b6040805163065daa4560e21b6020808301919091526001600160601b031989166024830181905261222b60f21b60388401528351601a818503018152603a840185528051908301206205800560ea1b605a850152605d8401919091528351605181850301815260719093019093528151910120919250906000805b85811015615380576000614ee48b876154e9565b90506000614ef38c8884615558565b90506000614f0082614c90565b90506000614f1e6008808551614f1691906162c0565b859190615558565b90508b606001516001600160401b03166000148015614f51575080516020820120881480614f5157508051602082012087145b8015614f6657506000826001600160401b0316115b15614f8b5763ffffffff851660408d01526001600160401b03821660608d015261535d565b60008d82604051602001614fa0929190616b36565b60408051808303601f19018152918152815160209283012060008181526008909352912060010154909150600160801b900463ffffffff16156151aa57600081815260086020526040812060018101548154919291615012916001600160401b0390811691600160a01b900416616847565b60018301549091506001600160401b038087169161503991600160401b9091041683616847565b6001600160401b0316111580156150625750806001600160401b0316856001600160401b031611155b6150fa5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a401610cef565b808f60000181815161510c91906169cd565b9150906001600160401b031690816001600160401b0316815250508160010160009054906101000a90046001600160401b03168f60200181815161515091906169cd565b6001600160401b0316905250600083815260086020526040902080546001600160e01b0319168155600101805473ffffffffffffffffffffffffffffffffffffffff19169055886151a081616405565b995050505061535b565b60008181526009602052604090206001810154600160801b900463ffffffff1661523b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610cef565b60018101548154600091615263916001600160401b0391821691600160a01b90910416616847565b60018301549091506001600160401b038087169161528a91600160401b9091041683616847565b6001600160401b0316111580156152b35750806001600160401b0316856001600160401b031611155b61534b5760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a401610cef565b8861535581616405565b99505050505b505b615367848a6163d7565b985050505050808061537890616405565b915050614ed0565b50600081116147565760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e00000000006064820152608401610cef565b6000806000615405846154d2565b9150508060011461547e5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e707574000000000000000000000000000000000000006064820152608401610cef565b600061548a8582615660565b905061549581615815565b93506154c96154a382615822565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b6000806154e083600061582f565b91509150915091565b60006154f68260096163d7565b83511015615507575060001961475d565b60008061551e856155198660086163d7565b61582f565b9092509050600019821415615539576000199250505061475d565b806155458360096163d7565b61554f91906163d7565b95945050505050565b6060816155745750604080516020810190915260008152614c46565b600061558083856163d7565b90508381118015615592575080855110155b6155de5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e6473000000000000000000000000006044820152606401610cef565b604051915082604083010160405282825283850182038460208701018481015b80821015615617578151838301526020820191506155fe565b505050509392505050565b600080806156308585614c37565b925061563f6154a386866159ab565b915061564b85856159c2565b90509250925092565b600061475d8282614c37565b606060008061566e856154d2565b90925090506000198214156156d05760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e742070617273696044820152616e6760f01b6064820152608401610cef565b80841061571f5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e000000000000000000000000000000006044820152606401610cef565b60008061572d8460016163d7565b905060005b868110156157b65761574488836159c2565b92506000198314156157985760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610cef565b6157a283836163d7565b9150806157ae81616405565b915050615732565b506157c187826159c2565b91506000198214156149545760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e207363726970745369670000000000000000006044820152606401610cef565b602081015160009061475d565b600061475d826020614c37565b600080600061583e8585615a0d565b905060ff811661587057600085858151811061585c5761585c6163ef565b016020015190935060f81c91506159a49050565b8361587c826001616aee565b60ff1661588991906163d7565b855110156158a057600019600092509250506159a4565b60008160ff16600214156158e5576158da6158c66158bf8760016163d7565b8890614c37565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061599a565b8160ff166004141561590f576159026154a36158bf8760016163d7565b63ffffffff16905061599a565b8160ff166008141561599a5761598e61592c6158bf8760016163d7565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b6000614c466159bb8360206163d7565b8490614c37565b60008060006159d18585615a99565b90925090506000198214156159ec576000199250505061475d565b806159f88360256163d7565b615a0291906163d7565b61554f9060046163d7565b6000828281518110615a2157615a216163ef565b60209101015160f81c60ff1415615a3a5750600861475d565b828281518110615a4c57615a4c6163ef565b60209101015160f81c60fe1415615a655750600461475d565b828281518110615a7757615a776163ef565b60209101015160f81c60fd1415615a905750600261475d565b50600092915050565b600080615aa78360256163d7565b84511015615abc5750600019905060006159a4565b600080615ace866155198760246163d7565b9097909650945050505050565b600060208284031215615aed57600080fd5b5035919050565b600060808284031215615b0657600080fd5b50919050565b600060608284031215615b0657600080fd5b80356001600160601b031981168114615b3657600080fd5b919050565b60008060008060c08587031215615b5157600080fd5b84356001600160401b0380821115615b6857600080fd5b615b7488838901615af4565b95506020870135915080821115615b8a57600080fd5b50615b9787828801615b0c565b935050615ba78660408701615b0c565b9150615bb560a08601615b1e565b905092959194509250565b600080600060608486031215615bd557600080fd5b505081359360208301359350604090920135919050565b60008060808385031215615bff57600080fd5b615c0883615b1e565b9150615c178460208501615b0c565b90509250929050565b600080600060a08486031215615c3557600080fd5b83356001600160401b0380821115615c4c57600080fd5b615c5887838801615af4565b94506020860135915080821115615c6e57600080fd5b50615c7b86828701615b0c565b92505061564b8560408601615b0c565b600080828403610100811215615ca057600080fd5b83356001600160401b03811115615cb657600080fd5b615cc286828701615af4565b93505060e0601f1982011215615cd757600080fd5b506020830190509250929050565b80356001600160a01b0381168114615b3657600080fd5b80358015158114615b3657600080fd5b60008060408385031215615d1f57600080fd5b615d2883615ce5565b9150615c1760208401615cfc565b60008083601f840112615d4857600080fd5b5081356001600160401b03811115615d5f57600080fd5b6020830191508360208285010111156159a457600080fd5b600080600060408486031215615d8c57600080fd5b615d9584615b1e565b925060208401356001600160401b03811115615db057600080fd5b615dbc86828701615d36565b9497909650939450505050565b60008060008060a08587031215615ddf57600080fd5b84356001600160401b03811115615df557600080fd5b615e0187828801615d36565b90955093505060208501359150615bb58660408701615b0c565b600080600080600060608688031215615e3357600080fd5b85356001600160401b0380821115615e4a57600080fd5b615e5689838a01615d36565b90975095506020880135915080821115615e6f57600080fd5b50615e7c88828901615d36565b9094509250615e8f905060408701615cfc565b90509295509295909350565b600060208284031215615ead57600080fd5b614c4682615b1e565b634e487b7160e01b600052602160045260246000fd5b600060e08201905082518252602083015160208301526001600160401b036040840151166040830152606083015163ffffffff8082166060850152806080860151166080850152505060a083015160058110615f3857634e487b7160e01b600052602160045260246000fd5b8060a08401525060c083015160c083015292915050565b600060608284031215615f6157600080fd5b614c468383615b0c565b80356001600160401b0381168114615b3657600080fd5b600080600080600060c08688031215615f9a57600080fd5b615fa386615b1e565b9450615fb28760208801615b0c565b935060808601356001600160401b03811115615fcd57600080fd5b615fd988828901615d36565b9094509250615e8f905060a08701615f6b565b60008060006040848603121561600157600080fd5b83356001600160401b0381111561601757600080fd5b61602386828701615d36565b909790965060209590950135949350505050565b60006020828403121561604957600080fd5b614c4682615ce5565b803563ffffffff81168114615b3657600080fd5b6000806000806080858703121561607c57600080fd5b61608585616052565b935061609360208601615f6b565b92506160a160408601615f6b565b9150615bb560608601616052565b80356001600160e01b031981168114615b3657600080fd5b6000808335601e198436030181126160de57600080fd5b83016020810192503590506001600160401b038111156160fd57600080fd5b8036038313156159a457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a0815260006001600160e01b03198061614e876160af565b1660a084015261616160208701876160c7565b608060c08601526161776101208601828461610c565b91505061618760408801886160c7565b858303609f190160e087015261619e83828461610c565b92505050816161af606089016160af565b1661010085015283810360208501526161c886876160c7565b9250606082526161dc60608301848361610c565b925050602086013560208201526161f660408701876160c7565b828403604084015261620984828461610c565b945050505050614a6a60408301848051825260208082015190830152604090810151910152565b60006020828403121561624257600080fd5b5051919050565b6000808335601e1984360301811261626057600080fd5b8301803591506001600160401b0382111561627a57600080fd5b6020019150368190038213156159a457600080fd5b6000602082840312156162a157600080fd5b614c4682615f6b565b634e487b7160e01b600052601160045260246000fd5b6000828210156162d2576162d26162aa565b500390565b8035825263ffffffff6162ec60208301616052565b1660208301526001600160401b0361630660408301615f6b565b1660408301525050565b8381526001600160601b03198316602082015260a08101614a6a60408301846162d7565b60006020828403121561634657600080fd5b614c4682616052565b634e487b7160e01b600052604160045260246000fd5b60006060828403121561637757600080fd5b604051606081018181106001600160401b03821117156163a757634e487b7160e01b600052604160045260246000fd5b604052823581526163ba60208401616052565b60208201526163cb60408401615f6b565b60408201529392505050565b600082198211156163ea576163ea6162aa565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415616419576164196162aa565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156164625781516001600160a01b03168452928401929084019060010161643d565b5050508381038285015284518082528583019183019060005b818110156164975783518352928401929184019160010161647b565b5090979650505050505050565b6000602082840312156164b657600080fd5b81356001600160c01b031981168114614c4657600080fd5b6000602082840312156164e057600080fd5b614c46826160af565b600560fa1b8152606086901b6001600160601b0319166001820152607560f81b60158201527f080000000000000000000000000000000000000000000000000000000000000060168201526001600160c01b031985166017820152607560f81b601f82015260006165bd6165b0616587602085015b7f7600000000000000000000000000000000000000000000000000000000000000815260010190565b7fa900000000000000000000000000000000000000000000000000000000000000815260010190565b600560fa1b815260010190565b6001600160601b0319861681527f870000000000000000000000000000000000000000000000000000000000000060148201527f6300000000000000000000000000000000000000000000000000000000000000601582015261667c6165b061658761655e616653601686015b7fac00000000000000000000000000000000000000000000000000000000000000815260010190565b7f6700000000000000000000000000000000000000000000000000000000000000815260010190565b6001600160601b0319861681527f880000000000000000000000000000000000000000000000000000000000000060148201527f040000000000000000000000000000000000000000000000000000000000000060158201529050601681016001600160e01b0319851681527fb1000000000000000000000000000000000000000000000000000000000000006004820152607560f81b600582015290506167526167296006830161662a565b7f6800000000000000000000000000000000000000000000000000000000000000815260010190565b98975050505050505050565b6000815160005b8181101561677f5760208185018101518683015201616765565b8181111561678e576000828601525b509290920192915050565b6000614c46828461675e565b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680616817576168176167e7565b92169190910492915050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60006001600160401b0383811690831681811015616867576168676162aa565b039392505050565b6bffffffffffffffffffffffff198416815260406020820152600061554f60408301848661610c565b86815260e0602082015260006168b260e08301878961610c565b90506bffffffffffffffffffffffff198516604083015283606083015282356080830152602083013560a0830152604083013560ff81168082146168f557600080fd5b8060c08501525050979650505050505050565b86815260806020820152600061692260808301878961610c565b828103604084015261693581868861610c565b9150508215156060830152979650505050505050565b86815260806020820152600061696560808301878961610c565b828103604084015261697881868861610c565b9150506001600160a01b0383166060830152979650505050505050565b82815260808101614c4660208301846162d7565b6001600160c01b031984168152818360088301376000910160080190815292915050565b60006001600160401b038083168185168083038211156169ef576169ef6162aa565b01949350505050565b6bffffffffffffffffffffffff198816815260c060208201526000616a2160c08301888a61610c565b6001600160a01b03969096166040830152506001600160401b039384166060820152918316608083015290911660a0909101529392505050565b848152606060208201526000616a7560608301858761610c565b905082604083015295945050505050565b600082616a9557616a956167e7565b500690565b600082616aa957616aa96167e7565b500490565b815160009082906020808601845b83811015616ae25781516001600160601b03191685529382019390820190600101616abc565b50929695505050505050565b600060ff821660ff84168060ff03821115616b0b57616b0b6162aa565b019392505050565b600060ff821660ff841680821015616b2d57616b2d6162aa565b90039392505050565b6001600160601b0319831681526000614a6a601483018461675e56fea2646970667358221220e197b7f4039a223d293bd6ed64a5862c583c457e9d49a7a23a4305be71d9c0e364736f6c63430008090033",
1652
+ "linkReferences": {
1653
+ "contracts/bridge/BitcoinTx.sol": {
1654
+ "BitcoinTx": [
1655
+ {
1656
+ "length": 20,
1657
+ "start": 4618
1658
+ },
1659
+ {
1660
+ "length": 20,
1661
+ "start": 5564
1662
+ },
1663
+ {
1664
+ "length": 20,
1665
+ "start": 12364
1666
+ }
1667
+ ]
1668
+ },
1669
+ "contracts/bridge/Frauds.sol": {
1670
+ "Frauds": [
1671
+ {
1672
+ "length": 20,
1673
+ "start": 501
1674
+ },
1675
+ {
1676
+ "length": 20,
1677
+ "start": 607
1678
+ },
1679
+ {
1680
+ "length": 20,
1681
+ "start": 717
1682
+ },
1683
+ {
1684
+ "length": 20,
1685
+ "start": 832
1686
+ },
1687
+ {
1688
+ "length": 20,
1689
+ "start": 11152
1690
+ },
1691
+ {
1692
+ "length": 20,
1693
+ "start": 11405
1694
+ },
1695
+ {
1696
+ "length": 20,
1697
+ "start": 11751
1698
+ },
1699
+ {
1700
+ "length": 20,
1701
+ "start": 15306
1702
+ }
1703
+ ]
1704
+ },
1705
+ "contracts/bridge/Wallets.sol": {
1706
+ "Wallets": [
1707
+ {
1708
+ "length": 20,
1709
+ "start": 948
1710
+ },
1711
+ {
1712
+ "length": 20,
1713
+ "start": 1058
1714
+ },
1715
+ {
1716
+ "length": 20,
1717
+ "start": 1179
1718
+ },
1719
+ {
1720
+ "length": 20,
1721
+ "start": 1289
1722
+ },
1723
+ {
1724
+ "length": 20,
1725
+ "start": 5125
1726
+ },
1727
+ {
1728
+ "length": 20,
1729
+ "start": 5340
1730
+ },
1731
+ {
1732
+ "length": 20,
1733
+ "start": 5463
1734
+ },
1735
+ {
1736
+ "length": 20,
1737
+ "start": 10435
1738
+ },
1739
+ {
1740
+ "length": 20,
1741
+ "start": 12164
1742
+ },
1743
+ {
1744
+ "length": 20,
1745
+ "start": 12326
1746
+ },
1747
+ {
1748
+ "length": 20,
1749
+ "start": 15728
1750
+ },
1751
+ {
1752
+ "length": 20,
1753
+ "start": 15873
1754
+ },
1755
+ {
1756
+ "length": 20,
1757
+ "start": 16009
1758
+ }
1759
+ ]
1760
+ }
1761
+ },
1762
+ "deployedLinkReferences": {
1763
+ "contracts/bridge/BitcoinTx.sol": {
1764
+ "BitcoinTx": [
1765
+ {
1766
+ "length": 20,
1767
+ "start": 2883
1768
+ },
1769
+ {
1770
+ "length": 20,
1771
+ "start": 3829
1772
+ },
1773
+ {
1774
+ "length": 20,
1775
+ "start": 10629
1776
+ }
1777
+ ]
1778
+ },
1779
+ "contracts/bridge/Frauds.sol": {
1780
+ "Frauds": [
1781
+ {
1782
+ "length": 20,
1783
+ "start": 9417
1784
+ },
1785
+ {
1786
+ "length": 20,
1787
+ "start": 9670
1788
+ },
1789
+ {
1790
+ "length": 20,
1791
+ "start": 10016
1792
+ },
1793
+ {
1794
+ "length": 20,
1795
+ "start": 13571
1796
+ }
1797
+ ]
1798
+ },
1799
+ "contracts/bridge/Wallets.sol": {
1800
+ "Wallets": [
1801
+ {
1802
+ "length": 20,
1803
+ "start": 3390
1804
+ },
1805
+ {
1806
+ "length": 20,
1807
+ "start": 3605
1808
+ },
1809
+ {
1810
+ "length": 20,
1811
+ "start": 3728
1812
+ },
1813
+ {
1814
+ "length": 20,
1815
+ "start": 8700
1816
+ },
1817
+ {
1818
+ "length": 20,
1819
+ "start": 10429
1820
+ },
1821
+ {
1822
+ "length": 20,
1823
+ "start": 10591
1824
+ },
1825
+ {
1826
+ "length": 20,
1827
+ "start": 13993
1828
+ },
1829
+ {
1830
+ "length": 20,
1831
+ "start": 14138
1832
+ },
1833
+ {
1834
+ "length": 20,
1835
+ "start": 14274
1836
+ }
1837
+ ]
1838
+ }
1839
+ }
176
1840
  }