@ercworldio/blockchain-shared 1.0.3-dev.1-PROJ-1296.0 → 1.0.3-dev.3

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 (96) hide show
  1. package/build/chains/networks_prod-bu.json +5 -2
  2. package/build/chains/networks_prod-dz.json +10 -9
  3. package/build/chains/networks_stg-bu.json +2 -1
  4. package/build/chains/networks_stg-dz.json +2 -1
  5. package/build/chains/networks_stg-sh.json +2 -1
  6. package/build/chains/networks_stg-yb.json +2 -1
  7. package/build/contracts/artifacts/Escrow.json +490 -1979
  8. package/build/contracts/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  9. package/build/contracts/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
  10. package/build/contracts/typechain-types/@openzeppelin/contracts/utils/index.d.ts +6 -0
  11. package/build/contracts/typechain-types/@openzeppelin/contracts/utils/index.d.ts.map +1 -1
  12. package/build/contracts/typechain-types/contracts/escrow/Escrow.d.ts +76 -761
  13. package/build/contracts/typechain-types/contracts/escrow/Escrow.d.ts.map +1 -1
  14. package/build/contracts/typechain-types/contracts/escrow/EscrowAccessControl.d.ts +17 -65
  15. package/build/contracts/typechain-types/contracts/escrow/EscrowAccessControl.d.ts.map +1 -1
  16. package/build/contracts/typechain-types/contracts/index.d.ts +0 -2
  17. package/build/contracts/typechain-types/contracts/index.d.ts.map +1 -1
  18. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +1 -0
  19. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -1
  20. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +3 -1
  21. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.d.ts +1 -1
  22. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.d.ts.map +1 -1
  23. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.js +1 -1
  24. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +4 -0
  25. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts.map +1 -1
  26. package/build/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.js +7 -1
  27. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowAccessControl__factory.d.ts +12 -286
  28. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowAccessControl__factory.d.ts.map +1 -1
  29. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowAccessControl__factory.js +12 -374
  30. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowErrors__factory.d.ts +1 -137
  31. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowErrors__factory.d.ts.map +1 -1
  32. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowErrors__factory.js +1 -182
  33. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowSignature__factory.d.ts +1 -1
  34. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowSignature__factory.d.ts.map +1 -1
  35. package/build/contracts/typechain-types/factories/contracts/escrow/EscrowSignature__factory.js +1 -1
  36. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.d.ts +96 -1245
  37. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.d.ts.map +1 -1
  38. package/build/contracts/typechain-types/factories/contracts/escrow/Escrow__factory.js +241 -1730
  39. package/build/contracts/typechain-types/factories/contracts/escrow/TokensWhitelist__factory.d.ts +1 -1
  40. package/build/contracts/typechain-types/factories/contracts/escrow/TokensWhitelist__factory.d.ts.map +1 -1
  41. package/build/contracts/typechain-types/factories/contracts/escrow/TokensWhitelist__factory.js +1 -1
  42. package/build/contracts/typechain-types/factories/contracts/index.d.ts +0 -1
  43. package/build/contracts/typechain-types/factories/contracts/index.d.ts.map +1 -1
  44. package/build/contracts/typechain-types/factories/contracts/index.js +1 -2
  45. package/build/contracts/typechain-types/factories/contracts/mock/erc20/ERC20Mock__factory.d.ts +1 -1
  46. package/build/contracts/typechain-types/factories/contracts/mock/erc20/ERC20Mock__factory.d.ts.map +1 -1
  47. package/build/contracts/typechain-types/factories/contracts/mock/erc20/ERC20Mock__factory.js +1 -1
  48. package/build/contracts/typechain-types/index.d.ts +10 -4
  49. package/build/contracts/typechain-types/index.d.ts.map +1 -1
  50. package/build/contracts/typechain-types/index.js +11 -5
  51. package/build/errors/errors.d.ts +3 -0
  52. package/build/errors/errors.d.ts.map +1 -1
  53. package/build/errors/errors.js +6 -0
  54. package/package.json +1 -1
  55. package/build/contracts/typechain-types/contracts/lib/Events.d.ts +0 -386
  56. package/build/contracts/typechain-types/contracts/lib/Events.d.ts.map +0 -1
  57. package/build/contracts/typechain-types/contracts/lib/Events.js +0 -2
  58. package/build/contracts/typechain-types/contracts/lib/MultisigLib.d.ts +0 -21
  59. package/build/contracts/typechain-types/contracts/lib/MultisigLib.d.ts.map +0 -1
  60. package/build/contracts/typechain-types/contracts/lib/MultisigLib.js +0 -2
  61. package/build/contracts/typechain-types/contracts/lib/index.d.ts +0 -3
  62. package/build/contracts/typechain-types/contracts/lib/index.d.ts.map +0 -1
  63. package/build/contracts/typechain-types/contracts/lib/index.js +0 -2
  64. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.d.ts +0 -373
  65. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.d.ts.map +0 -1
  66. package/build/contracts/typechain-types/factories/contracts/lib/Events__factory.js +0 -473
  67. package/build/contracts/typechain-types/factories/contracts/lib/MultisigLib__factory.d.ts +0 -55
  68. package/build/contracts/typechain-types/factories/contracts/lib/MultisigLib__factory.d.ts.map +0 -1
  69. package/build/contracts/typechain-types/factories/contracts/lib/MultisigLib__factory.js +0 -82
  70. package/build/contracts/typechain-types/factories/contracts/lib/index.d.ts +0 -3
  71. package/build/contracts/typechain-types/factories/contracts/lib/index.d.ts.map +0 -1
  72. package/build/contracts/typechain-types/factories/contracts/lib/index.js +0 -10
  73. package/build/entities/AdminOperationThresholds.d.ts +0 -12
  74. package/build/entities/AdminOperationThresholds.d.ts.map +0 -1
  75. package/build/entities/AdminOperationThresholds.js +0 -56
  76. package/build/entities/EscrowRoles.d.ts +0 -12
  77. package/build/entities/EscrowRoles.d.ts.map +0 -1
  78. package/build/entities/EscrowRoles.js +0 -57
  79. package/build/entities/GlobalTimelock.d.ts +0 -14
  80. package/build/entities/GlobalTimelock.d.ts.map +0 -1
  81. package/build/entities/GlobalTimelock.js +0 -64
  82. package/build/entities/GranularTimelock .d.ts +0 -12
  83. package/build/entities/GranularTimelock .d.ts.map +0 -1
  84. package/build/entities/GranularTimelock .js +0 -56
  85. package/build/entities/OperationType.d.ts +0 -18
  86. package/build/entities/OperationType.d.ts.map +0 -1
  87. package/build/entities/OperationType.js +0 -50
  88. package/build/entities/RoleHash.d.ts +0 -11
  89. package/build/entities/RoleHash.d.ts.map +0 -1
  90. package/build/entities/RoleHash.js +0 -52
  91. package/build/entities/Signatures.d.ts +0 -16
  92. package/build/entities/Signatures.d.ts.map +0 -1
  93. package/build/entities/Signatures.js +0 -72
  94. package/build/entities/TokenExecutionThresholds.d.ts +0 -16
  95. package/build/entities/TokenExecutionThresholds.d.ts.map +0 -1
  96. package/build/entities/TokenExecutionThresholds.js +0 -72
@@ -27,49 +27,6 @@ const _abi = [
27
27
  name: "AccessControlUnauthorizedAccount",
28
28
  type: "error",
29
29
  },
30
- {
31
- inputs: [
32
- {
33
- internalType: "address",
34
- name: "account",
35
- type: "address",
36
- },
37
- ],
38
- name: "AccountAlreadyHasSignerRole",
39
- type: "error",
40
- },
41
- {
42
- inputs: [],
43
- name: "AdminMultisigConfigNotSet",
44
- type: "error",
45
- },
46
- {
47
- inputs: [
48
- {
49
- internalType: "uint256",
50
- name: "requestId",
51
- type: "uint256",
52
- },
53
- ],
54
- name: "AlreadyCreatedTransaction",
55
- type: "error",
56
- },
57
- {
58
- inputs: [
59
- {
60
- internalType: "bytes32",
61
- name: "commitmentHash",
62
- type: "bytes32",
63
- },
64
- ],
65
- name: "CommitmentNotFound",
66
- type: "error",
67
- },
68
- {
69
- inputs: [],
70
- name: "ConfigGroupNotSet",
71
- type: "error",
72
- },
73
30
  {
74
31
  inputs: [],
75
32
  name: "ContractBusy",
@@ -106,11 +63,6 @@ const _abi = [
106
63
  name: "ExceedsLimit",
107
64
  type: "error",
108
65
  },
109
- {
110
- inputs: [],
111
- name: "ExceedsMax",
112
- type: "error",
113
- },
114
66
  {
115
67
  inputs: [],
116
68
  name: "ExceedsMaxBatch",
@@ -142,149 +94,21 @@ const _abi = [
142
94
  name: "InsufficientBalance",
143
95
  type: "error",
144
96
  },
145
- {
146
- inputs: [
147
- {
148
- internalType: "uint256",
149
- name: "required",
150
- type: "uint256",
151
- },
152
- {
153
- internalType: "uint256",
154
- name: "provided",
155
- type: "uint256",
156
- },
157
- ],
158
- name: "InsufficientExecutiveSigs",
159
- type: "error",
160
- },
161
- {
162
- inputs: [
163
- {
164
- internalType: "uint256",
165
- name: "required",
166
- type: "uint256",
167
- },
168
- {
169
- internalType: "uint256",
170
- name: "provided",
171
- type: "uint256",
172
- },
173
- ],
174
- name: "InsufficientExecutiveSigs",
175
- type: "error",
176
- },
177
- {
178
- inputs: [
179
- {
180
- internalType: "uint256",
181
- name: "required",
182
- type: "uint256",
183
- },
184
- {
185
- internalType: "uint256",
186
- name: "provided",
187
- type: "uint256",
188
- },
189
- ],
190
- name: "InsufficientManagerSigs",
191
- type: "error",
192
- },
193
- {
194
- inputs: [
195
- {
196
- internalType: "uint256",
197
- name: "required",
198
- type: "uint256",
199
- },
200
- {
201
- internalType: "uint256",
202
- name: "provided",
203
- type: "uint256",
204
- },
205
- ],
206
- name: "InsufficientManagerSigs",
207
- type: "error",
208
- },
209
97
  {
210
98
  inputs: [],
211
99
  name: "InsufficientReserves",
212
100
  type: "error",
213
101
  },
214
- {
215
- inputs: [],
216
- name: "InvalidConfig",
217
- type: "error",
218
- },
219
102
  {
220
103
  inputs: [],
221
104
  name: "InvalidInitialization",
222
105
  type: "error",
223
106
  },
224
- {
225
- inputs: [
226
- {
227
- internalType: "uint256",
228
- name: "sig_idx",
229
- type: "uint256",
230
- },
231
- ],
232
- name: "InvalidMultiSig",
233
- type: "error",
234
- },
235
- {
236
- inputs: [
237
- {
238
- internalType: "uint256",
239
- name: "sig_idx",
240
- type: "uint256",
241
- },
242
- ],
243
- name: "InvalidMultiSig",
244
- type: "error",
245
- },
246
- {
247
- inputs: [
248
- {
249
- internalType: "uint256",
250
- name: "expected",
251
- type: "uint256",
252
- },
253
- {
254
- internalType: "uint256",
255
- name: "provided",
256
- type: "uint256",
257
- },
258
- ],
259
- name: "InvalidNonce",
260
- type: "error",
261
- },
262
- {
263
- inputs: [],
264
- name: "InvalidOperation",
265
- type: "error",
266
- },
267
107
  {
268
108
  inputs: [],
269
109
  name: "InvalidSignature",
270
110
  type: "error",
271
111
  },
272
- {
273
- inputs: [],
274
- name: "InvalidSignatures",
275
- type: "error",
276
- },
277
- {
278
- inputs: [
279
- {
280
- internalType: "address",
281
- name: "tokenAddress",
282
- type: "address",
283
- },
284
- ],
285
- name: "MultisigConfigNotSet",
286
- type: "error",
287
- },
288
112
  {
289
113
  inputs: [],
290
114
  name: "NotAdmin",
@@ -321,22 +145,6 @@ const _abi = [
321
145
  name: "RequestAlreadyFulfilled",
322
146
  type: "error",
323
147
  },
324
- {
325
- inputs: [
326
- {
327
- internalType: "uint8",
328
- name: "required_number",
329
- type: "uint8",
330
- },
331
- ],
332
- name: "RequireMultiSig",
333
- type: "error",
334
- },
335
- {
336
- inputs: [],
337
- name: "RequireTreasuryReceiverRole",
338
- type: "error",
339
- },
340
148
  {
341
149
  inputs: [
342
150
  {
@@ -353,38 +161,6 @@ const _abi = [
353
161
  name: "SignatureAlreadyUsed",
354
162
  type: "error",
355
163
  },
356
- {
357
- inputs: [],
358
- name: "TimelockConfigGroupNotSet",
359
- type: "error",
360
- },
361
- {
362
- inputs: [
363
- {
364
- internalType: "address",
365
- name: "tokenAddress",
366
- type: "address",
367
- },
368
- ],
369
- name: "TimelockConfigNotSet",
370
- type: "error",
371
- },
372
- {
373
- inputs: [
374
- {
375
- internalType: "uint256",
376
- name: "executeAt",
377
- type: "uint256",
378
- },
379
- {
380
- internalType: "uint256",
381
- name: "currentTime",
382
- type: "uint256",
383
- },
384
- ],
385
- name: "TimelockNotExpired",
386
- type: "error",
387
- },
388
164
  {
389
165
  inputs: [
390
166
  {
@@ -465,12 +241,6 @@ const _abi = [
465
241
  name: "tokenAddress",
466
242
  type: "address",
467
243
  },
468
- {
469
- indexed: false,
470
- internalType: "uint256",
471
- name: "requestId",
472
- type: "uint256",
473
- },
474
244
  ],
475
245
  name: "AdminWithdraw",
476
246
  type: "event",
@@ -480,24 +250,36 @@ const _abi = [
480
250
  inputs: [
481
251
  {
482
252
  indexed: false,
483
- internalType: "enum Types.OperationType",
484
- name: "opType",
485
- type: "uint8",
253
+ internalType: "address",
254
+ name: "payer",
255
+ type: "address",
486
256
  },
487
257
  {
488
258
  indexed: false,
489
- internalType: "uint256",
490
- name: "sigsManagerRequired",
491
- type: "uint256",
259
+ internalType: "address",
260
+ name: "tokenAddress",
261
+ type: "address",
492
262
  },
493
263
  {
494
264
  indexed: false,
495
265
  internalType: "uint256",
496
- name: "sigsExecutiveRequired",
266
+ name: "amount",
497
267
  type: "uint256",
498
268
  },
269
+ {
270
+ indexed: false,
271
+ internalType: "string",
272
+ name: "bonusCode",
273
+ type: "string",
274
+ },
499
275
  ],
500
- name: "ConfigureAdminMultisig",
276
+ name: "Deposit",
277
+ type: "event",
278
+ },
279
+ {
280
+ anonymous: false,
281
+ inputs: [],
282
+ name: "FundWallets",
501
283
  type: "event",
502
284
  },
503
285
  {
@@ -505,123 +287,37 @@ const _abi = [
505
287
  inputs: [
506
288
  {
507
289
  indexed: false,
508
- internalType: "enum Types.OperationType",
509
- name: "opType",
510
- type: "uint8",
290
+ internalType: "address",
291
+ name: "funder",
292
+ type: "address",
511
293
  },
512
294
  {
513
- indexed: true,
295
+ indexed: false,
514
296
  internalType: "address",
515
- name: "tokenAddress",
297
+ name: "token",
516
298
  type: "address",
517
299
  },
518
300
  {
519
301
  indexed: false,
520
302
  internalType: "uint256",
521
- name: "thresholdAmount",
303
+ name: "amount",
522
304
  type: "uint256",
523
305
  },
306
+ ],
307
+ name: "FundedContract",
308
+ type: "event",
309
+ },
310
+ {
311
+ anonymous: false,
312
+ inputs: [
524
313
  {
525
314
  indexed: false,
526
- internalType: "uint8",
527
- name: "sigsExecutiveBelow",
528
- type: "uint8",
529
- },
530
- {
531
- indexed: false,
532
- internalType: "uint8",
533
- name: "sigsExecutiveAbove",
534
- type: "uint8",
535
- },
536
- {
537
- indexed: false,
538
- internalType: "uint8",
539
- name: "sigsManagerBelow",
540
- type: "uint8",
541
- },
542
- {
543
- indexed: false,
544
- internalType: "uint8",
545
- name: "sigsManagerAbove",
546
- type: "uint8",
315
+ internalType: "uint64",
316
+ name: "version",
317
+ type: "uint64",
547
318
  },
548
319
  ],
549
- name: "ConfigureTokenMultisig",
550
- type: "event",
551
- },
552
- {
553
- anonymous: false,
554
- inputs: [
555
- {
556
- indexed: false,
557
- internalType: "address",
558
- name: "payer",
559
- type: "address",
560
- },
561
- {
562
- indexed: false,
563
- internalType: "address",
564
- name: "tokenAddress",
565
- type: "address",
566
- },
567
- {
568
- indexed: false,
569
- internalType: "uint256",
570
- name: "amount",
571
- type: "uint256",
572
- },
573
- {
574
- indexed: false,
575
- internalType: "string",
576
- name: "bonusCode",
577
- type: "string",
578
- },
579
- ],
580
- name: "Deposit",
581
- type: "event",
582
- },
583
- {
584
- anonymous: false,
585
- inputs: [],
586
- name: "FundWallets",
587
- type: "event",
588
- },
589
- {
590
- anonymous: false,
591
- inputs: [
592
- {
593
- indexed: false,
594
- internalType: "address",
595
- name: "funder",
596
- type: "address",
597
- },
598
- {
599
- indexed: false,
600
- internalType: "address",
601
- name: "token",
602
- type: "address",
603
- },
604
- {
605
- indexed: false,
606
- internalType: "uint256",
607
- name: "amount",
608
- type: "uint256",
609
- },
610
- ],
611
- name: "FundedContract",
612
- type: "event",
613
- },
614
- {
615
- anonymous: false,
616
- inputs: [
617
- {
618
- indexed: false,
619
- internalType: "uint64",
620
- name: "version",
621
- type: "uint64",
622
- },
623
- ],
624
- name: "Initialized",
320
+ name: "Initialized",
625
321
  type: "event",
626
322
  },
627
323
  {
@@ -730,56 +426,6 @@ const _abi = [
730
426
  name: "RoleRevoked",
731
427
  type: "event",
732
428
  },
733
- {
734
- anonymous: false,
735
- inputs: [
736
- {
737
- indexed: true,
738
- internalType: "address",
739
- name: "receiverAddress",
740
- type: "address",
741
- },
742
- {
743
- indexed: false,
744
- internalType: "uint256",
745
- name: "duration",
746
- type: "uint256",
747
- },
748
- ],
749
- name: "SetTimelockGranular",
750
- type: "event",
751
- },
752
- {
753
- anonymous: false,
754
- inputs: [
755
- {
756
- indexed: true,
757
- internalType: "address",
758
- name: "tokenAddress",
759
- type: "address",
760
- },
761
- {
762
- indexed: false,
763
- internalType: "uint256",
764
- name: "thresholdAmount",
765
- type: "uint256",
766
- },
767
- {
768
- indexed: false,
769
- internalType: "uint256",
770
- name: "durationBelow",
771
- type: "uint256",
772
- },
773
- {
774
- indexed: false,
775
- internalType: "uint256",
776
- name: "durationAbove",
777
- type: "uint256",
778
- },
779
- ],
780
- name: "SetTokenTimelock",
781
- type: "event",
782
- },
783
429
  {
784
430
  anonymous: false,
785
431
  inputs: [
@@ -843,6 +489,25 @@ const _abi = [
843
489
  name: "TokenRemoved",
844
490
  type: "event",
845
491
  },
492
+ {
493
+ anonymous: false,
494
+ inputs: [
495
+ {
496
+ indexed: false,
497
+ internalType: "uint256",
498
+ name: "amount",
499
+ type: "uint256",
500
+ },
501
+ {
502
+ indexed: false,
503
+ internalType: "uint256",
504
+ name: "blockNumber",
505
+ type: "uint256",
506
+ },
507
+ ],
508
+ name: "TransactionCount",
509
+ type: "event",
510
+ },
846
511
  {
847
512
  anonymous: false,
848
513
  inputs: [
@@ -886,90 +551,9 @@ const _abi = [
886
551
  name: "Withdrawal",
887
552
  type: "event",
888
553
  },
889
- {
890
- anonymous: false,
891
- inputs: [
892
- {
893
- indexed: true,
894
- internalType: "bytes32",
895
- name: "commitmentHash",
896
- type: "bytes32",
897
- },
898
- {
899
- indexed: true,
900
- internalType: "uint256",
901
- name: "requestId",
902
- type: "uint256",
903
- },
904
- ],
905
- name: "WithdrawalCancelled",
906
- type: "event",
907
- },
908
- {
909
- anonymous: false,
910
- inputs: [
911
- {
912
- indexed: true,
913
- internalType: "bytes32",
914
- name: "commitmentHash",
915
- type: "bytes32",
916
- },
917
- {
918
- indexed: true,
919
- internalType: "uint256",
920
- name: "requestId",
921
- type: "uint256",
922
- },
923
- ],
924
- name: "WithdrawalExecuted",
925
- type: "event",
926
- },
927
- {
928
- anonymous: false,
929
- inputs: [
930
- {
931
- indexed: true,
932
- internalType: "bytes32",
933
- name: "commitmentHash",
934
- type: "bytes32",
935
- },
936
- {
937
- indexed: true,
938
- internalType: "uint256",
939
- name: "requestId",
940
- type: "uint256",
941
- },
942
- {
943
- indexed: false,
944
- internalType: "uint256",
945
- name: "amount",
946
- type: "uint256",
947
- },
948
- {
949
- indexed: false,
950
- internalType: "address",
951
- name: "tokenAddress",
952
- type: "address",
953
- },
954
- {
955
- indexed: false,
956
- internalType: "address",
957
- name: "receiverAddress",
958
- type: "address",
959
- },
960
- {
961
- indexed: false,
962
- internalType: "uint256",
963
- name: "executeAt",
964
- type: "uint256",
965
- },
966
- ],
967
- name: "WithdrawalScheduled",
968
- type: "event",
969
- },
970
554
  {
971
555
  inputs: [],
972
- name: "ADMIN_TREASURY_EXECUTIVE_ROLE",
556
+ name: "DEFAULT_ADMIN_ROLE",
973
557
  outputs: [
974
558
  {
975
559
  internalType: "bytes32",
@@ -982,7 +566,7 @@ const _abi = [
982
566
  },
983
567
  {
984
568
  inputs: [],
985
- name: "ADMIN_TREASURY_MANAGER_ROLE",
569
+ name: "DOMAIN_SEPARATOR",
986
570
  outputs: [
987
571
  {
988
572
  internalType: "bytes32",
@@ -995,7 +579,7 @@ const _abi = [
995
579
  },
996
580
  {
997
581
  inputs: [],
998
- name: "CONFIG_EXECUTIVE_ROLE",
582
+ name: "FUNDS_MANAGER_ROLE",
999
583
  outputs: [
1000
584
  {
1001
585
  internalType: "bytes32",
@@ -1008,7 +592,7 @@ const _abi = [
1008
592
  },
1009
593
  {
1010
594
  inputs: [],
1011
- name: "CONFIG_MANAGER_ROLE",
595
+ name: "OPERATOR_ROLE",
1012
596
  outputs: [
1013
597
  {
1014
598
  internalType: "bytes32",
@@ -1020,169 +604,26 @@ const _abi = [
1020
604
  type: "function",
1021
605
  },
1022
606
  {
1023
- inputs: [],
1024
- name: "DEFAULT_ADMIN_ROLE",
1025
- outputs: [
607
+ inputs: [
1026
608
  {
1027
- internalType: "bytes32",
1028
- name: "",
1029
- type: "bytes32",
609
+ internalType: "address",
610
+ name: "_operator",
611
+ type: "address",
1030
612
  },
1031
- ],
1032
- stateMutability: "view",
1033
- type: "function",
1034
- },
1035
- {
1036
- inputs: [],
1037
- name: "DOMAIN_SEPARATOR",
1038
- outputs: [
1039
613
  {
1040
- internalType: "bytes32",
1041
- name: "",
1042
- type: "bytes32",
614
+ internalType: "address",
615
+ name: "_owner",
616
+ type: "address",
1043
617
  },
1044
- ],
1045
- stateMutability: "view",
1046
- type: "function",
1047
- },
1048
- {
1049
- inputs: [],
1050
- name: "FUNDS_MANAGER_ROLE",
1051
- outputs: [
1052
618
  {
1053
- internalType: "bytes32",
1054
- name: "",
1055
- type: "bytes32",
619
+ internalType: "address",
620
+ name: "_fundsManager",
621
+ type: "address",
1056
622
  },
1057
623
  ],
1058
- stateMutability: "view",
1059
- type: "function",
1060
- },
1061
- {
1062
- inputs: [],
1063
- name: "OPERATOR_ROLE",
1064
- outputs: [
1065
- {
1066
- internalType: "bytes32",
1067
- name: "",
1068
- type: "bytes32",
1069
- },
1070
- ],
1071
- stateMutability: "view",
1072
- type: "function",
1073
- },
1074
- {
1075
- inputs: [],
1076
- name: "TIMELOCK_CONFIG_EXECUTIVE_ROLE",
1077
- outputs: [
1078
- {
1079
- internalType: "bytes32",
1080
- name: "",
1081
- type: "bytes32",
1082
- },
1083
- ],
1084
- stateMutability: "view",
1085
- type: "function",
1086
- },
1087
- {
1088
- inputs: [],
1089
- name: "TIMELOCK_CONFIG_MANAGER_ROLE",
1090
- outputs: [
1091
- {
1092
- internalType: "bytes32",
1093
- name: "",
1094
- type: "bytes32",
1095
- },
1096
- ],
1097
- stateMutability: "view",
1098
- type: "function",
1099
- },
1100
- {
1101
- inputs: [],
1102
- name: "TIMELOCK_DELAY",
1103
- outputs: [
1104
- {
1105
- internalType: "uint256",
1106
- name: "",
1107
- type: "uint256",
1108
- },
1109
- ],
1110
- stateMutability: "view",
1111
- type: "function",
1112
- },
1113
- {
1114
- inputs: [],
1115
- name: "TREASURY_DISPATCH_ROLE",
1116
- outputs: [
1117
- {
1118
- internalType: "bytes32",
1119
- name: "",
1120
- type: "bytes32",
1121
- },
1122
- ],
1123
- stateMutability: "view",
1124
- type: "function",
1125
- },
1126
- {
1127
- inputs: [],
1128
- name: "TREASURY_EXECUTIVE_ROLE",
1129
- outputs: [
1130
- {
1131
- internalType: "bytes32",
1132
- name: "",
1133
- type: "bytes32",
1134
- },
1135
- ],
1136
- stateMutability: "view",
1137
- type: "function",
1138
- },
1139
- {
1140
- inputs: [],
1141
- name: "TREASURY_MANAGER_ROLE",
1142
- outputs: [
1143
- {
1144
- internalType: "bytes32",
1145
- name: "",
1146
- type: "bytes32",
1147
- },
1148
- ],
1149
- stateMutability: "view",
1150
- type: "function",
1151
- },
1152
- {
1153
- inputs: [],
1154
- name: "TREASURY_RECEIVER_ROLE",
1155
- outputs: [
1156
- {
1157
- internalType: "bytes32",
1158
- name: "",
1159
- type: "bytes32",
1160
- },
1161
- ],
1162
- stateMutability: "view",
1163
- type: "function",
1164
- },
1165
- {
1166
- inputs: [
1167
- {
1168
- internalType: "address",
1169
- name: "_operator",
1170
- type: "address",
1171
- },
1172
- {
1173
- internalType: "address",
1174
- name: "_owner",
1175
- type: "address",
1176
- },
1177
- {
1178
- internalType: "address",
1179
- name: "_fundsManager",
1180
- type: "address",
1181
- },
1182
- ],
1183
- name: "__AccessControl_init",
1184
- outputs: [],
1185
- stateMutability: "nonpayable",
624
+ name: "__AccessControl_init",
625
+ outputs: [],
626
+ stateMutability: "nonpayable",
1186
627
  type: "function",
1187
628
  },
1188
629
  {
@@ -1219,41 +660,9 @@ const _abi = [
1219
660
  {
1220
661
  inputs: [
1221
662
  {
1222
- components: [
1223
- {
1224
- internalType: "address",
1225
- name: "tokenAddress",
1226
- type: "address",
1227
- },
1228
- {
1229
- internalType: "uint256",
1230
- name: "thresholdAmount",
1231
- type: "uint256",
1232
- },
1233
- {
1234
- internalType: "uint8",
1235
- name: "sigsExecutiveBelow",
1236
- type: "uint8",
1237
- },
1238
- {
1239
- internalType: "uint8",
1240
- name: "sigsExecutiveAbove",
1241
- type: "uint8",
1242
- },
1243
- {
1244
- internalType: "uint8",
1245
- name: "sigsBelow",
1246
- type: "uint8",
1247
- },
1248
- {
1249
- internalType: "uint8",
1250
- name: "sigsAbove",
1251
- type: "uint8",
1252
- },
1253
- ],
1254
- internalType: "struct Types.MultisigConfigInput[]",
1255
- name: "configs",
1256
- type: "tuple[]",
663
+ internalType: "address[]",
664
+ name: "tokens",
665
+ type: "address[]",
1257
666
  },
1258
667
  ],
1259
668
  name: "addTokens",
@@ -1261,26 +670,8 @@ const _abi = [
1261
670
  stateMutability: "nonpayable",
1262
671
  type: "function",
1263
672
  },
1264
- {
1265
- inputs: [],
1266
- name: "adminTokenThresholdSettings",
1267
- outputs: [
1268
- {
1269
- internalType: "uint256",
1270
- name: "",
1271
- type: "uint256",
1272
- },
1273
- ],
1274
- stateMutability: "view",
1275
- type: "function",
1276
- },
1277
673
  {
1278
674
  inputs: [
1279
- {
1280
- internalType: "uint256",
1281
- name: "requestId",
1282
- type: "uint256",
1283
- },
1284
675
  {
1285
676
  internalType: "uint256",
1286
677
  name: "amount",
@@ -1296,28 +687,6 @@ const _abi = [
1296
687
  name: "receiver",
1297
688
  type: "address",
1298
689
  },
1299
- {
1300
- components: [
1301
- {
1302
- internalType: "uint8",
1303
- name: "v",
1304
- type: "uint8",
1305
- },
1306
- {
1307
- internalType: "bytes32",
1308
- name: "r",
1309
- type: "bytes32",
1310
- },
1311
- {
1312
- internalType: "bytes32",
1313
- name: "s",
1314
- type: "bytes32",
1315
- },
1316
- ],
1317
- internalType: "struct Types.Signature[]",
1318
- name: "signatures",
1319
- type: "tuple[]",
1320
- },
1321
690
  ],
1322
691
  name: "adminWithdraw",
1323
692
  outputs: [],
@@ -1384,72 +753,63 @@ const _abi = [
1384
753
  name: "receiverAddress",
1385
754
  type: "address",
1386
755
  },
1387
- {
1388
- components: [
1389
- {
1390
- internalType: "uint8",
1391
- name: "v",
1392
- type: "uint8",
1393
- },
1394
- {
1395
- internalType: "bytes32",
1396
- name: "r",
1397
- type: "bytes32",
1398
- },
1399
- {
1400
- internalType: "bytes32",
1401
- name: "s",
1402
- type: "bytes32",
1403
- },
1404
- ],
1405
- internalType: "struct Types.Signature[]",
1406
- name: "signatures",
1407
- type: "tuple[]",
1408
- },
1409
756
  ],
1410
- internalType: "struct Types.BatchWithdrawWithTimelock[]",
757
+ internalType: "struct Types.BatchWithdraw[]",
1411
758
  name: "requests",
1412
759
  type: "tuple[]",
1413
760
  },
1414
761
  ],
1415
- name: "batchWithdrawWithTimelock",
762
+ name: "batch_withdraw",
763
+ outputs: [],
764
+ stateMutability: "nonpayable",
765
+ type: "function",
766
+ },
767
+ {
768
+ inputs: [
769
+ {
770
+ internalType: "address",
771
+ name: "newAdmin",
772
+ type: "address",
773
+ },
774
+ ],
775
+ name: "changeAdmin",
1416
776
  outputs: [],
1417
777
  stateMutability: "nonpayable",
1418
778
  type: "function",
1419
779
  },
1420
780
  {
1421
781
  inputs: [
782
+ {
783
+ internalType: "string",
784
+ name: "bonusCode",
785
+ type: "string",
786
+ },
1422
787
  {
1423
788
  components: [
1424
789
  {
1425
- internalType: "uint256",
1426
- name: "amount",
1427
- type: "uint256",
1428
- },
1429
- {
1430
- internalType: "uint256",
1431
- name: "requestId",
1432
- type: "uint256",
790
+ internalType: "uint8",
791
+ name: "v",
792
+ type: "uint8",
1433
793
  },
1434
794
  {
1435
- internalType: "address",
1436
- name: "tokenAddress",
1437
- type: "address",
795
+ internalType: "bytes32",
796
+ name: "r",
797
+ type: "bytes32",
1438
798
  },
1439
799
  {
1440
- internalType: "address",
1441
- name: "receiverAddress",
1442
- type: "address",
800
+ internalType: "bytes32",
801
+ name: "s",
802
+ type: "bytes32",
1443
803
  },
1444
804
  ],
1445
- internalType: "struct Types.BatchWithdraw[]",
1446
- name: "requests",
1447
- type: "tuple[]",
805
+ internalType: "struct Types.Signature",
806
+ name: "signature",
807
+ type: "tuple",
1448
808
  },
1449
809
  ],
1450
- name: "batch_withdraw",
810
+ name: "deposit",
1451
811
  outputs: [],
1452
- stateMutability: "nonpayable",
812
+ stateMutability: "payable",
1453
813
  type: "function",
1454
814
  },
1455
815
  {
@@ -1459,109 +819,15 @@ const _abi = [
1459
819
  name: "amount",
1460
820
  type: "uint256",
1461
821
  },
1462
- {
1463
- internalType: "uint256",
1464
- name: "requestId",
1465
- type: "uint256",
1466
- },
1467
822
  {
1468
823
  internalType: "address",
1469
824
  name: "tokenAddress",
1470
825
  type: "address",
1471
826
  },
1472
827
  {
1473
- internalType: "address",
1474
- name: "receiverAddress",
1475
- type: "address",
1476
- },
1477
- {
1478
- internalType: "uint256",
1479
- name: "executeAt",
1480
- type: "uint256",
1481
- },
1482
- ],
1483
- name: "cancelWithdrawal",
1484
- outputs: [],
1485
- stateMutability: "nonpayable",
1486
- type: "function",
1487
- },
1488
- {
1489
- inputs: [],
1490
- name: "configNonce",
1491
- outputs: [
1492
- {
1493
- internalType: "uint256",
1494
- name: "",
1495
- type: "uint256",
1496
- },
1497
- ],
1498
- stateMutability: "view",
1499
- type: "function",
1500
- },
1501
- {
1502
- inputs: [],
1503
- name: "configThresholdSettings",
1504
- outputs: [
1505
- {
1506
- internalType: "uint256",
1507
- name: "",
1508
- type: "uint256",
1509
- },
1510
- ],
1511
- stateMutability: "view",
1512
- type: "function",
1513
- },
1514
- {
1515
- inputs: [
1516
- {
1517
- internalType: "string",
1518
- name: "bonusCode",
1519
- type: "string",
1520
- },
1521
- {
1522
- components: [
1523
- {
1524
- internalType: "uint8",
1525
- name: "v",
1526
- type: "uint8",
1527
- },
1528
- {
1529
- internalType: "bytes32",
1530
- name: "r",
1531
- type: "bytes32",
1532
- },
1533
- {
1534
- internalType: "bytes32",
1535
- name: "s",
1536
- type: "bytes32",
1537
- },
1538
- ],
1539
- internalType: "struct Types.Signature",
1540
- name: "signature",
1541
- type: "tuple",
1542
- },
1543
- ],
1544
- name: "deposit",
1545
- outputs: [],
1546
- stateMutability: "payable",
1547
- type: "function",
1548
- },
1549
- {
1550
- inputs: [
1551
- {
1552
- internalType: "uint256",
1553
- name: "amount",
1554
- type: "uint256",
1555
- },
1556
- {
1557
- internalType: "address",
1558
- name: "tokenAddress",
1559
- type: "address",
1560
- },
1561
- {
1562
- internalType: "string",
1563
- name: "bonusCode",
1564
- type: "string",
828
+ internalType: "string",
829
+ name: "bonusCode",
830
+ type: "string",
1565
831
  },
1566
832
  {
1567
833
  components: [
@@ -1591,39 +857,6 @@ const _abi = [
1591
857
  stateMutability: "nonpayable",
1592
858
  type: "function",
1593
859
  },
1594
- {
1595
- inputs: [
1596
- {
1597
- internalType: "uint256",
1598
- name: "amount",
1599
- type: "uint256",
1600
- },
1601
- {
1602
- internalType: "uint256",
1603
- name: "requestId",
1604
- type: "uint256",
1605
- },
1606
- {
1607
- internalType: "address",
1608
- name: "tokenAddress",
1609
- type: "address",
1610
- },
1611
- {
1612
- internalType: "address",
1613
- name: "receiverAddress",
1614
- type: "address",
1615
- },
1616
- {
1617
- internalType: "uint256",
1618
- name: "executeAt",
1619
- type: "uint256",
1620
- },
1621
- ],
1622
- name: "executeWithdrawal",
1623
- outputs: [],
1624
- stateMutability: "nonpayable",
1625
- type: "function",
1626
- },
1627
860
  {
1628
861
  inputs: [
1629
862
  {
@@ -1642,36 +875,6 @@ const _abi = [
1642
875
  stateMutability: "nonpayable",
1643
876
  type: "function",
1644
877
  },
1645
- {
1646
- inputs: [],
1647
- name: "getAdminMultisigConfig",
1648
- outputs: [
1649
- {
1650
- components: [
1651
- {
1652
- internalType: "uint8",
1653
- name: "sigsManagerRequired",
1654
- type: "uint8",
1655
- },
1656
- {
1657
- internalType: "uint8",
1658
- name: "sigsExecutiveRequired",
1659
- type: "uint8",
1660
- },
1661
- {
1662
- internalType: "bool",
1663
- name: "configured",
1664
- type: "bool",
1665
- },
1666
- ],
1667
- internalType: "struct Types.AdminMultisigConfig",
1668
- name: "",
1669
- type: "tuple",
1670
- },
1671
- ],
1672
- stateMutability: "view",
1673
- type: "function",
1674
- },
1675
878
  {
1676
879
  inputs: [],
1677
880
  name: "getBalance",
@@ -1761,36 +964,13 @@ const _abi = [
1761
964
  type: "function",
1762
965
  },
1763
966
  {
1764
- inputs: [
1765
- {
1766
- internalType: "enum Types.OperationType",
1767
- name: "opType",
1768
- type: "uint8",
1769
- },
1770
- ],
1771
- name: "getGroupConfig",
967
+ inputs: [],
968
+ name: "getLastBlockNumber",
1772
969
  outputs: [
1773
970
  {
1774
- components: [
1775
- {
1776
- internalType: "uint8",
1777
- name: "sigsManagerRequired",
1778
- type: "uint8",
1779
- },
1780
- {
1781
- internalType: "uint8",
1782
- name: "sigsExecutiveRequired",
1783
- type: "uint8",
1784
- },
1785
- {
1786
- internalType: "bool",
1787
- name: "configured",
1788
- type: "bool",
1789
- },
1790
- ],
1791
- internalType: "struct Types.AdminMultisigConfig",
971
+ internalType: "uint256",
1792
972
  name: "",
1793
- type: "tuple",
973
+ type: "uint256",
1794
974
  },
1795
975
  ],
1796
976
  stateMutability: "view",
@@ -1905,49 +1085,36 @@ const _abi = [
1905
1085
  type: "function",
1906
1086
  },
1907
1087
  {
1908
- inputs: [
1088
+ inputs: [],
1089
+ name: "getTotalTransactions",
1090
+ outputs: [
1909
1091
  {
1910
- internalType: "address",
1911
- name: "tokenAddress",
1912
- type: "address",
1092
+ internalType: "uint256",
1093
+ name: "",
1094
+ type: "uint256",
1913
1095
  },
1914
1096
  ],
1915
- name: "getTokenMultisigConfig",
1097
+ stateMutability: "view",
1098
+ type: "function",
1099
+ },
1100
+ {
1101
+ inputs: [],
1102
+ name: "getTransactionStatus",
1916
1103
  outputs: [
1917
1104
  {
1918
1105
  components: [
1919
1106
  {
1920
1107
  internalType: "uint256",
1921
- name: "thresholdAmount",
1108
+ name: "totalCount",
1922
1109
  type: "uint256",
1923
1110
  },
1924
1111
  {
1925
- internalType: "uint8",
1926
- name: "sigsExecutiveBelow",
1927
- type: "uint8",
1928
- },
1929
- {
1930
- internalType: "uint8",
1931
- name: "sigsExecutiveAbove",
1932
- type: "uint8",
1933
- },
1934
- {
1935
- internalType: "uint8",
1936
- name: "sigsBelow",
1937
- type: "uint8",
1938
- },
1939
- {
1940
- internalType: "uint8",
1941
- name: "sigsAbove",
1942
- type: "uint8",
1943
- },
1944
- {
1945
- internalType: "bool",
1946
- name: "configured",
1947
- type: "bool",
1112
+ internalType: "uint256",
1113
+ name: "lastBlockNumber",
1114
+ type: "uint256",
1948
1115
  },
1949
1116
  ],
1950
- internalType: "struct Types.MultisigConfig",
1117
+ internalType: "struct Types.TransactionStatus",
1951
1118
  name: "",
1952
1119
  type: "tuple",
1953
1120
  },
@@ -2011,25 +1178,6 @@ const _abi = [
2011
1178
  stateMutability: "view",
2012
1179
  type: "function",
2013
1180
  },
2014
- {
2015
- inputs: [
2016
- {
2017
- internalType: "uint256[]",
2018
- name: "ids",
2019
- type: "uint256[]",
2020
- },
2021
- ],
2022
- name: "get_admin_used_ids",
2023
- outputs: [
2024
- {
2025
- internalType: "uint256[]",
2026
- name: "used_ids",
2027
- type: "uint256[]",
2028
- },
2029
- ],
2030
- stateMutability: "view",
2031
- type: "function",
2032
- },
2033
1181
  {
2034
1182
  inputs: [
2035
1183
  {
@@ -2113,576 +1261,21 @@ const _abi = [
2113
1261
  name: "_tokens",
2114
1262
  type: "address[]",
2115
1263
  },
2116
- {
2117
- components: [
2118
- {
2119
- internalType: "address",
2120
- name: "tokenAddress",
2121
- type: "address",
2122
- },
2123
- {
2124
- internalType: "uint256",
2125
- name: "thresholdAmount",
2126
- type: "uint256",
2127
- },
2128
- {
2129
- internalType: "uint8",
2130
- name: "sigsExecutiveBelow",
2131
- type: "uint8",
2132
- },
2133
- {
2134
- internalType: "uint8",
2135
- name: "sigsExecutiveAbove",
2136
- type: "uint8",
2137
- },
2138
- {
2139
- internalType: "uint8",
2140
- name: "sigsBelow",
2141
- type: "uint8",
2142
- },
2143
- {
2144
- internalType: "uint8",
2145
- name: "sigsAbove",
2146
- type: "uint8",
2147
- },
2148
- ],
2149
- internalType: "struct Types.MultisigConfigInput[]",
2150
- name: "_multisigConfigs",
2151
- type: "tuple[]",
2152
- },
2153
- {
2154
- components: [
2155
- {
2156
- internalType: "enum Types.OperationType",
2157
- name: "opType",
2158
- type: "uint8",
2159
- },
2160
- {
2161
- internalType: "uint8",
2162
- name: "sigsManagerRequired",
2163
- type: "uint8",
2164
- },
2165
- {
2166
- internalType: "uint8",
2167
- name: "sigsExecutiveRequired",
2168
- type: "uint8",
2169
- },
2170
- {
2171
- internalType: "bool",
2172
- name: "configured",
2173
- type: "bool",
2174
- },
2175
- ],
2176
- internalType: "struct Types.AdminMultisigConfigSetup[]",
2177
- name: "_adminMultisigConfigs",
2178
- type: "tuple[]",
2179
- },
2180
- {
2181
- internalType: "uint256",
2182
- name: "_maxFundWalletAmount",
2183
- type: "uint256",
2184
- },
2185
1264
  ],
2186
1265
  name: "initialize",
2187
- outputs: [],
2188
- stateMutability: "nonpayable",
2189
- type: "function",
2190
- },
2191
- {
2192
- inputs: [
2193
- {
2194
- internalType: "address",
2195
- name: "caller",
2196
- type: "address",
2197
- },
2198
- ],
2199
- name: "isFundsManager",
2200
- outputs: [
2201
- {
2202
- internalType: "bool",
2203
- name: "",
2204
- type: "bool",
2205
- },
2206
- ],
2207
- stateMutability: "view",
2208
- type: "function",
2209
- },
2210
- {
2211
- inputs: [],
2212
- name: "isPaused",
2213
- outputs: [
2214
- {
2215
- internalType: "bool",
2216
- name: "",
2217
- type: "bool",
2218
- },
2219
- ],
2220
- stateMutability: "view",
2221
- type: "function",
2222
- },
2223
- {
2224
- inputs: [
2225
- {
2226
- internalType: "address",
2227
- name: "_token",
2228
- type: "address",
2229
- },
2230
- ],
2231
- name: "isWhitelisted",
2232
- outputs: [
2233
- {
2234
- internalType: "bool",
2235
- name: "",
2236
- type: "bool",
2237
- },
2238
- ],
2239
- stateMutability: "view",
2240
- type: "function",
2241
- },
2242
- {
2243
- inputs: [
2244
- {
2245
- internalType: "address",
2246
- name: "_owner",
2247
- type: "address",
2248
- },
2249
- ],
2250
- name: "nonces",
2251
- outputs: [
2252
- {
2253
- internalType: "uint256",
2254
- name: "depositNonce",
2255
- type: "uint256",
2256
- },
2257
- ],
2258
- stateMutability: "view",
2259
- type: "function",
2260
- },
2261
- {
2262
- inputs: [],
2263
- name: "pause",
2264
- outputs: [],
2265
- stateMutability: "nonpayable",
2266
- type: "function",
2267
- },
2268
- {
2269
- inputs: [
2270
- {
2271
- internalType: "address",
2272
- name: "",
2273
- type: "address",
2274
- },
2275
- ],
2276
- name: "receiverTimelockConfig",
2277
- outputs: [
2278
- {
2279
- internalType: "uint256",
2280
- name: "duration",
2281
- type: "uint256",
2282
- },
2283
- {
2284
- internalType: "bool",
2285
- name: "configured",
2286
- type: "bool",
2287
- },
2288
- ],
2289
- stateMutability: "view",
2290
- type: "function",
2291
- },
2292
- {
2293
- inputs: [
2294
- {
2295
- internalType: "address[]",
2296
- name: "tokens",
2297
- type: "address[]",
2298
- },
2299
- ],
2300
- name: "removeTokens",
2301
- outputs: [],
2302
- stateMutability: "nonpayable",
2303
- type: "function",
2304
- },
2305
- {
2306
- inputs: [
2307
- {
2308
- internalType: "bytes32",
2309
- name: "role",
2310
- type: "bytes32",
2311
- },
2312
- {
2313
- internalType: "address",
2314
- name: "callerConfirmation",
2315
- type: "address",
2316
- },
2317
- ],
2318
- name: "renounceRole",
2319
- outputs: [],
2320
- stateMutability: "nonpayable",
2321
- type: "function",
2322
- },
2323
- {
2324
- inputs: [
2325
- {
2326
- internalType: "uint256",
2327
- name: "start",
2328
- type: "uint256",
2329
- },
2330
- {
2331
- internalType: "uint256",
2332
- name: "end",
2333
- type: "uint256",
2334
- },
2335
- ],
2336
- name: "reset_admin_request_ids",
2337
- outputs: [],
2338
- stateMutability: "nonpayable",
2339
- type: "function",
2340
- },
2341
- {
2342
- inputs: [
2343
- {
2344
- internalType: "uint256",
2345
- name: "start",
2346
- type: "uint256",
2347
- },
2348
- {
2349
- internalType: "uint256",
2350
- name: "end",
2351
- type: "uint256",
2352
- },
2353
- ],
2354
- name: "reset_request_ids",
2355
- outputs: [],
2356
- stateMutability: "nonpayable",
2357
- type: "function",
2358
- },
2359
- {
2360
- inputs: [
2361
- {
2362
- internalType: "bytes32",
2363
- name: "role",
2364
- type: "bytes32",
2365
- },
2366
- {
2367
- internalType: "address",
2368
- name: "account",
2369
- type: "address",
2370
- },
2371
- ],
2372
- name: "revokeRole",
2373
- outputs: [],
2374
- stateMutability: "nonpayable",
2375
- type: "function",
2376
- },
2377
- {
2378
- inputs: [
2379
- {
2380
- components: [
2381
- {
2382
- internalType: "enum Types.OperationType",
2383
- name: "operationType",
2384
- type: "uint8",
2385
- },
2386
- {
2387
- internalType: "uint8",
2388
- name: "sigsManagerRequired",
2389
- type: "uint8",
2390
- },
2391
- {
2392
- internalType: "uint8",
2393
- name: "sigsExecutiveRequired",
2394
- type: "uint8",
2395
- },
2396
- {
2397
- internalType: "uint256",
2398
- name: "nonce",
2399
- type: "uint256",
2400
- },
2401
- ],
2402
- internalType: "struct Types.SetAdminMultisigConfigSignData",
2403
- name: "configData",
2404
- type: "tuple",
2405
- },
2406
- {
2407
- components: [
2408
- {
2409
- internalType: "uint8",
2410
- name: "v",
2411
- type: "uint8",
2412
- },
2413
- {
2414
- internalType: "bytes32",
2415
- name: "r",
2416
- type: "bytes32",
2417
- },
2418
- {
2419
- internalType: "bytes32",
2420
- name: "s",
2421
- type: "bytes32",
2422
- },
2423
- ],
2424
- internalType: "struct Types.Signature[]",
2425
- name: "signatures",
2426
- type: "tuple[]",
2427
- },
2428
- ],
2429
- name: "setAdminTokenMultisigThreshold",
2430
- outputs: [],
2431
- stateMutability: "nonpayable",
2432
- type: "function",
2433
- },
2434
- {
2435
- inputs: [
2436
- {
2437
- internalType: "enum Types.OperationType",
2438
- name: "opType",
2439
- type: "uint8",
2440
- },
2441
- {
2442
- internalType: "uint8",
2443
- name: "sigsManager",
2444
- type: "uint8",
2445
- },
2446
- {
2447
- internalType: "uint8",
2448
- name: "sigsExecutive",
2449
- type: "uint8",
2450
- },
2451
- ],
2452
- name: "setGroupConfig",
2453
- outputs: [],
2454
- stateMutability: "nonpayable",
2455
- type: "function",
2456
- },
2457
- {
2458
- inputs: [
2459
- {
2460
- components: [
2461
- {
2462
- internalType: "enum Types.OperationType",
2463
- name: "operationType",
2464
- type: "uint8",
2465
- },
2466
- {
2467
- internalType: "address",
2468
- name: "tokenAddress",
2469
- type: "address",
2470
- },
2471
- {
2472
- internalType: "uint256",
2473
- name: "thresholdAmount",
2474
- type: "uint256",
2475
- },
2476
- {
2477
- internalType: "uint256",
2478
- name: "durationBelow",
2479
- type: "uint256",
2480
- },
2481
- {
2482
- internalType: "uint256",
2483
- name: "durationAbove",
2484
- type: "uint256",
2485
- },
2486
- {
2487
- internalType: "uint256",
2488
- name: "nonce",
2489
- type: "uint256",
2490
- },
2491
- ],
2492
- internalType: "struct Types.SetTimelockConfigSignData",
2493
- name: "configData",
2494
- type: "tuple",
2495
- },
2496
- {
2497
- components: [
2498
- {
2499
- internalType: "uint8",
2500
- name: "v",
2501
- type: "uint8",
2502
- },
2503
- {
2504
- internalType: "bytes32",
2505
- name: "r",
2506
- type: "bytes32",
2507
- },
2508
- {
2509
- internalType: "bytes32",
2510
- name: "s",
2511
- type: "bytes32",
2512
- },
2513
- ],
2514
- internalType: "struct Types.Signature[]",
2515
- name: "signatures",
2516
- type: "tuple[]",
2517
- },
2518
- ],
2519
- name: "setTimelock",
2520
- outputs: [],
2521
- stateMutability: "nonpayable",
2522
- type: "function",
2523
- },
2524
- {
2525
- inputs: [
2526
- {
2527
- components: [
2528
- {
2529
- internalType: "enum Types.OperationType",
2530
- name: "operationType",
2531
- type: "uint8",
2532
- },
2533
- {
2534
- internalType: "address",
2535
- name: "receiverAddress",
2536
- type: "address",
2537
- },
2538
- {
2539
- internalType: "uint256",
2540
- name: "duration",
2541
- type: "uint256",
2542
- },
2543
- {
2544
- internalType: "uint256",
2545
- name: "nonce",
2546
- type: "uint256",
2547
- },
2548
- ],
2549
- internalType: "struct Types.SetReceiverTimelockConfigSignData",
2550
- name: "configData",
2551
- type: "tuple",
2552
- },
2553
- {
2554
- components: [
2555
- {
2556
- internalType: "uint8",
2557
- name: "v",
2558
- type: "uint8",
2559
- },
2560
- {
2561
- internalType: "bytes32",
2562
- name: "r",
2563
- type: "bytes32",
2564
- },
2565
- {
2566
- internalType: "bytes32",
2567
- name: "s",
2568
- type: "bytes32",
2569
- },
2570
- ],
2571
- internalType: "struct Types.Signature[]",
2572
- name: "signatures",
2573
- type: "tuple[]",
2574
- },
2575
- ],
2576
- name: "setTimelockGranular",
2577
- outputs: [],
2578
- stateMutability: "nonpayable",
2579
- type: "function",
2580
- },
2581
- {
2582
- inputs: [
2583
- {
2584
- components: [
2585
- {
2586
- internalType: "enum Types.OperationType",
2587
- name: "operationType",
2588
- type: "uint8",
2589
- },
2590
- {
2591
- internalType: "address",
2592
- name: "tokenAddress",
2593
- type: "address",
2594
- },
2595
- {
2596
- internalType: "uint256",
2597
- name: "thresholdAmount",
2598
- type: "uint256",
2599
- },
2600
- {
2601
- internalType: "uint8",
2602
- name: "sigsExecutiveBelow",
2603
- type: "uint8",
2604
- },
2605
- {
2606
- internalType: "uint8",
2607
- name: "sigsExecutiveAbove",
2608
- type: "uint8",
2609
- },
2610
- {
2611
- internalType: "uint8",
2612
- name: "sigsBelow",
2613
- type: "uint8",
2614
- },
2615
- {
2616
- internalType: "uint8",
2617
- name: "sigsAbove",
2618
- type: "uint8",
2619
- },
2620
- {
2621
- internalType: "uint256",
2622
- name: "nonce",
2623
- type: "uint256",
2624
- },
2625
- ],
2626
- internalType: "struct Types.SetMultisigConfigSignData",
2627
- name: "configData",
2628
- type: "tuple",
2629
- },
2630
- {
2631
- components: [
2632
- {
2633
- internalType: "uint8",
2634
- name: "v",
2635
- type: "uint8",
2636
- },
2637
- {
2638
- internalType: "bytes32",
2639
- name: "r",
2640
- type: "bytes32",
2641
- },
2642
- {
2643
- internalType: "bytes32",
2644
- name: "s",
2645
- type: "bytes32",
2646
- },
2647
- ],
2648
- internalType: "struct Types.Signature[]",
2649
- name: "signatures",
2650
- type: "tuple[]",
2651
- },
2652
- ],
2653
- name: "setTokenMultisigThreshold",
2654
- outputs: [],
2655
- stateMutability: "nonpayable",
2656
- type: "function",
2657
- },
2658
- {
2659
- inputs: [
2660
- {
2661
- internalType: "address",
2662
- name: "",
2663
- type: "address",
2664
- },
2665
- ],
2666
- name: "signerBitmap",
2667
- outputs: [
2668
- {
2669
- internalType: "uint8",
2670
- name: "",
2671
- type: "uint8",
2672
- },
2673
- ],
2674
- stateMutability: "view",
1266
+ outputs: [],
1267
+ stateMutability: "nonpayable",
2675
1268
  type: "function",
2676
1269
  },
2677
1270
  {
2678
1271
  inputs: [
2679
1272
  {
2680
- internalType: "bytes4",
2681
- name: "interfaceId",
2682
- type: "bytes4",
1273
+ internalType: "address",
1274
+ name: "caller",
1275
+ type: "address",
2683
1276
  },
2684
1277
  ],
2685
- name: "supportsInterface",
1278
+ name: "isFundsManager",
2686
1279
  outputs: [
2687
1280
  {
2688
1281
  internalType: "bool",
@@ -2694,19 +1287,8 @@ const _abi = [
2694
1287
  type: "function",
2695
1288
  },
2696
1289
  {
2697
- inputs: [
2698
- {
2699
- internalType: "address",
2700
- name: "wallet",
2701
- type: "address",
2702
- },
2703
- {
2704
- internalType: "address",
2705
- name: "token",
2706
- type: "address",
2707
- },
2708
- ],
2709
- name: "sweepFunds",
1290
+ inputs: [],
1291
+ name: "isPaused",
2710
1292
  outputs: [
2711
1293
  {
2712
1294
  internalType: "bool",
@@ -2714,18 +1296,18 @@ const _abi = [
2714
1296
  type: "bool",
2715
1297
  },
2716
1298
  ],
2717
- stateMutability: "payable",
1299
+ stateMutability: "view",
2718
1300
  type: "function",
2719
1301
  },
2720
1302
  {
2721
1303
  inputs: [
2722
1304
  {
2723
- internalType: "bytes32",
2724
- name: "",
2725
- type: "bytes32",
1305
+ internalType: "address",
1306
+ name: "_token",
1307
+ type: "address",
2726
1308
  },
2727
1309
  ],
2728
- name: "timelockCommitments",
1310
+ name: "isWhitelisted",
2729
1311
  outputs: [
2730
1312
  {
2731
1313
  internalType: "bool",
@@ -2740,112 +1322,140 @@ const _abi = [
2740
1322
  inputs: [
2741
1323
  {
2742
1324
  internalType: "address",
2743
- name: "",
1325
+ name: "_owner",
2744
1326
  type: "address",
2745
1327
  },
2746
1328
  ],
2747
- name: "timelockConfig",
1329
+ name: "nonces",
2748
1330
  outputs: [
2749
1331
  {
2750
1332
  internalType: "uint256",
2751
- name: "thresholdAmount",
1333
+ name: "depositNonce",
2752
1334
  type: "uint256",
2753
1335
  },
1336
+ ],
1337
+ stateMutability: "view",
1338
+ type: "function",
1339
+ },
1340
+ {
1341
+ inputs: [],
1342
+ name: "pause",
1343
+ outputs: [],
1344
+ stateMutability: "nonpayable",
1345
+ type: "function",
1346
+ },
1347
+ {
1348
+ inputs: [
2754
1349
  {
2755
- internalType: "uint256",
2756
- name: "durationBelow",
2757
- type: "uint256",
1350
+ internalType: "address[]",
1351
+ name: "tokens",
1352
+ type: "address[]",
2758
1353
  },
1354
+ ],
1355
+ name: "removeTokens",
1356
+ outputs: [],
1357
+ stateMutability: "nonpayable",
1358
+ type: "function",
1359
+ },
1360
+ {
1361
+ inputs: [
2759
1362
  {
2760
- internalType: "uint256",
2761
- name: "durationAbove",
2762
- type: "uint256",
1363
+ internalType: "bytes32",
1364
+ name: "role",
1365
+ type: "bytes32",
2763
1366
  },
2764
1367
  {
2765
- internalType: "bool",
2766
- name: "configured",
2767
- type: "bool",
1368
+ internalType: "address",
1369
+ name: "callerConfirmation",
1370
+ type: "address",
2768
1371
  },
2769
1372
  ],
2770
- stateMutability: "view",
1373
+ name: "renounceRole",
1374
+ outputs: [],
1375
+ stateMutability: "nonpayable",
2771
1376
  type: "function",
2772
1377
  },
2773
1378
  {
2774
- inputs: [],
2775
- name: "timelockConfigNonce",
2776
- outputs: [
1379
+ inputs: [
2777
1380
  {
2778
1381
  internalType: "uint256",
2779
- name: "",
1382
+ name: "start",
1383
+ type: "uint256",
1384
+ },
1385
+ {
1386
+ internalType: "uint256",
1387
+ name: "end",
2780
1388
  type: "uint256",
2781
1389
  },
2782
1390
  ],
2783
- stateMutability: "view",
1391
+ name: "reset_request_ids",
1392
+ outputs: [],
1393
+ stateMutability: "nonpayable",
2784
1394
  type: "function",
2785
1395
  },
2786
1396
  {
2787
- inputs: [],
2788
- name: "timelockThresholdSettings",
2789
- outputs: [
1397
+ inputs: [
2790
1398
  {
2791
- internalType: "uint256",
2792
- name: "",
2793
- type: "uint256",
1399
+ internalType: "bytes32",
1400
+ name: "role",
1401
+ type: "bytes32",
1402
+ },
1403
+ {
1404
+ internalType: "address",
1405
+ name: "account",
1406
+ type: "address",
2794
1407
  },
2795
1408
  ],
2796
- stateMutability: "view",
1409
+ name: "revokeRole",
1410
+ outputs: [],
1411
+ stateMutability: "nonpayable",
2797
1412
  type: "function",
2798
1413
  },
2799
1414
  {
2800
1415
  inputs: [
2801
1416
  {
2802
1417
  internalType: "address",
2803
- name: "",
1418
+ name: "_operator",
2804
1419
  type: "address",
2805
1420
  },
2806
1421
  ],
2807
- name: "tokenThresholdSettings",
2808
- outputs: [
1422
+ name: "setOperator",
1423
+ outputs: [],
1424
+ stateMutability: "nonpayable",
1425
+ type: "function",
1426
+ },
1427
+ {
1428
+ inputs: [
2809
1429
  {
2810
1430
  internalType: "uint256",
2811
- name: "",
1431
+ name: "totalCount",
1432
+ type: "uint256",
1433
+ },
1434
+ {
1435
+ internalType: "uint256",
1436
+ name: "blockNumber",
2812
1437
  type: "uint256",
2813
1438
  },
2814
1439
  ],
2815
- stateMutability: "view",
1440
+ name: "setTransactionStatus",
1441
+ outputs: [],
1442
+ stateMutability: "nonpayable",
2816
1443
  type: "function",
2817
1444
  },
2818
1445
  {
2819
1446
  inputs: [
2820
1447
  {
2821
- internalType: "uint256",
2822
- name: "packed",
2823
- type: "uint256",
1448
+ internalType: "bytes4",
1449
+ name: "interfaceId",
1450
+ type: "bytes4",
2824
1451
  },
2825
1452
  ],
2826
- name: "unpackAdminThresholds",
1453
+ name: "supportsInterface",
2827
1454
  outputs: [
2828
1455
  {
2829
- components: [
2830
- {
2831
- internalType: "uint8",
2832
- name: "sigsManagerRequired",
2833
- type: "uint8",
2834
- },
2835
- {
2836
- internalType: "uint8",
2837
- name: "sigsExecutiveRequired",
2838
- type: "uint8",
2839
- },
2840
- {
2841
- internalType: "bool",
2842
- name: "configured",
2843
- type: "bool",
2844
- },
2845
- ],
2846
- internalType: "struct Types.AdminMultisigConfig",
1456
+ internalType: "bool",
2847
1457
  name: "",
2848
- type: "tuple",
1458
+ type: "bool",
2849
1459
  },
2850
1460
  ],
2851
1461
  stateMutability: "view",
@@ -2854,52 +1464,25 @@ const _abi = [
2854
1464
  {
2855
1465
  inputs: [
2856
1466
  {
2857
- internalType: "uint256",
2858
- name: "packed",
2859
- type: "uint256",
1467
+ internalType: "address",
1468
+ name: "wallet",
1469
+ type: "address",
1470
+ },
1471
+ {
1472
+ internalType: "address",
1473
+ name: "token",
1474
+ type: "address",
2860
1475
  },
2861
1476
  ],
2862
- name: "unpackTokenThresholds",
1477
+ name: "sweepFunds",
2863
1478
  outputs: [
2864
1479
  {
2865
- components: [
2866
- {
2867
- internalType: "uint256",
2868
- name: "thresholdAmount",
2869
- type: "uint256",
2870
- },
2871
- {
2872
- internalType: "uint8",
2873
- name: "sigsExecutiveBelow",
2874
- type: "uint8",
2875
- },
2876
- {
2877
- internalType: "uint8",
2878
- name: "sigsExecutiveAbove",
2879
- type: "uint8",
2880
- },
2881
- {
2882
- internalType: "uint8",
2883
- name: "sigsBelow",
2884
- type: "uint8",
2885
- },
2886
- {
2887
- internalType: "uint8",
2888
- name: "sigsAbove",
2889
- type: "uint8",
2890
- },
2891
- {
2892
- internalType: "bool",
2893
- name: "configured",
2894
- type: "bool",
2895
- },
2896
- ],
2897
- internalType: "struct Types.MultisigConfig",
1480
+ internalType: "bool",
2898
1481
  name: "",
2899
- type: "tuple",
1482
+ type: "bool",
2900
1483
  },
2901
1484
  ],
2902
- stateMutability: "view",
1485
+ stateMutability: "payable",
2903
1486
  type: "function",
2904
1487
  },
2905
1488
  {
@@ -2978,84 +1561,12 @@ const _abi = [
2978
1561
  stateMutability: "nonpayable",
2979
1562
  type: "function",
2980
1563
  },
2981
- {
2982
- inputs: [
2983
- {
2984
- internalType: "uint256",
2985
- name: "amount",
2986
- type: "uint256",
2987
- },
2988
- {
2989
- internalType: "uint256",
2990
- name: "requestId",
2991
- type: "uint256",
2992
- },
2993
- {
2994
- internalType: "address",
2995
- name: "tokenAddress",
2996
- type: "address",
2997
- },
2998
- {
2999
- internalType: "address",
3000
- name: "receiverAddress",
3001
- type: "address",
3002
- },
3003
- {
3004
- components: [
3005
- {
3006
- internalType: "uint8",
3007
- name: "v",
3008
- type: "uint8",
3009
- },
3010
- {
3011
- internalType: "bytes32",
3012
- name: "r",
3013
- type: "bytes32",
3014
- },
3015
- {
3016
- internalType: "bytes32",
3017
- name: "s",
3018
- type: "bytes32",
3019
- },
3020
- ],
3021
- internalType: "struct Types.Signature",
3022
- name: "operatorSignature",
3023
- type: "tuple",
3024
- },
3025
- {
3026
- components: [
3027
- {
3028
- internalType: "uint8",
3029
- name: "v",
3030
- type: "uint8",
3031
- },
3032
- {
3033
- internalType: "bytes32",
3034
- name: "r",
3035
- type: "bytes32",
3036
- },
3037
- {
3038
- internalType: "bytes32",
3039
- name: "s",
3040
- type: "bytes32",
3041
- },
3042
- ],
3043
- internalType: "struct Types.Signature[]",
3044
- name: "signatures",
3045
- type: "tuple[]",
3046
- },
3047
- ],
3048
- name: "withdrawWithTimelock",
3049
- outputs: [],
3050
- stateMutability: "nonpayable",
3051
- type: "function",
3052
- },
3053
1564
  {
3054
1565
  stateMutability: "payable",
3055
1566
  type: "receive",
3056
1567
  },
3057
1568
  ];
3058
- const _bytecode = "0x608080604052346015576157b0908161001a8239f35b5f80fdfe6080806040526004361015610052575b50361561001a575f80fd5b7fb0afe9a71610967b99fda7fda0ed1e6ff47851924352fdf759922dd54272594160606040513381525f6020820152346040820152a1005b5f3560e01c90816301ffc9a714613598575080630430e9321461327b57806311a4b2d0146131f757806312065fe0146131dc57806317f6939e146131c15780631c599c9a1461310057806320f5117c146130c8578063248a9ca31461309e57806325ea836414612e185780632df4da6e14612c695780632f2ff15d14612c2c57806331993fdf14612b4b5780633462ceff14612b2e5780633644e51514612b1157806336568abe14612acd5780633945c4a614612ab05780633aa98a9414612a095780633af32abf146129eb5780633f4ba83a146129aa578063427ba1a11461276c5780634a78b2f514612732578063518713d2146126eb5780635ba1c1a9146126cf5780635c2598781461235a578063650f2ba5146123145780636c3824ef146121e45780637026cb58146121aa578063759f4eaa14611f3d57806378b61a1514611ede578063798812ea14611eb65780637c13ba6414611ce45780637d4e22f214611c7a5780637ecebe0014611c425780637ef066c814611c085780638456cb5914611bc357806385fb709d14611a045780638e8b3f2f146119e757806391d14854146119b757806395349251146119885780639b19251a1461194b5780639d01005814611923578063a0c7f799146118e9578063a217fddf146118cf578063a31989ad146118b2578063a3a0007214611750578063a3bfd3aa146116cc578063ac21242d14611653578063afbef47b1461157a578063b187bd2614611555578063b2065f601461151b578063b700f456146114e1578063bec4742c146114c4578063bfbe3f2214611457578063c06086671461141d578063c210296414611250578063c4707a8314611229578063c67515dd146111f7578063d37dbaa2146111c9578063d547741f14611185578063d55c16fd146110c6578063d8a4676f14611097578063da6e2ec014610fc2578063e20c103c14610f80578063e5b6337b14610d81578063e88e5cd414610b2b578063eb818b1f14610954578063ebdf690f1461091a578063ef227b56146108a3578063f01068a114610869578063f14280cb14610811578063f470c7e214610720578063f5b541a6146106f9578063f8b2cb4f146106ce578063fa07bb5414610694578063fa13f30a14610460578063fc50455f146103ec5763fddbf3f3146103ad575f61000f565b346103e85760203660031901126103e8576001600160a01b036103ce613601565b165f526067602052602060ff60405f205416604051908152f35b5f80fd5b346103e85760403660031901126103e857610410610408613643565b600435614454565b604051815191600483101561044c5760809282526020810151602083015260408101516040830152606060018060a01b03910151166060820152f35b634e487b7160e01b5f52602160045260245ffd5b346103e85760403660031901126103e8576004356001600160401b0381116103e857366023820112156103e8578060040135906001600160401b0382116103e8576024810190602436918460061b0101116103e8576024356001600160a01b038116908190036103e8576104d333613f98565b1580610684575b6106755780156106665760288311610652575f5b83811061050057602060405160018152f35b61051361050e828686614444565b613aee565b906001600160a01b03610532602061052c848989614444565b01613aee565b168015610643576001600160a01b0383169030821461063457805f52603360205260ff60405f20541615610622576040516370a0823160e01b81526004810183905290602082602481845afa9182156106175786905f936105d3575b5091816105b08260a0956001995f51602061573b5f395f51905f529896615166565b60405192338452602084015287604084015260608301526080820152a1016104ee565b925050916020823d821161060f575b816105ef602093836137a0565b810103126103e85790519091855f51602061573b5f395f51905f5261058e565b3d91506105e2565b6040513d5f823e3d90fd5b63094403b760e41b5f5260045260245ffd5b630d20048960e01b5f5260045ffd5b631b71aaf760e31b5f5260045ffd5b63af89cf2160e01b5f52602860045260245ffd5b63d92e233d60e01b5f5260045ffd5b63ea8e4eb560e01b5f5260045ffd5b5061068e3361401f565b156104da565b346103e8575f3660031901126103e85760206040517faf82374944a6f0200e0a96e99d9d9aa4925409c95c28b14a1d426baddd614aa88152f35b346103e85760203660031901126103e85760206106f16106ec613601565b6143db565b604051908152f35b346103e8575f3660031901126103e85760206040515f5160206156fb5f395f51905f528152f35b346103e85761072e36613a21565b61073733613f98565b1580610801575b806107f1575b61067557602860ff825116116107e2576040519061016061076581846137a0565b600a8352601f19013660208401375f5f5b82518110156107d0576107898184613c49565b515f52609c60205260ff60405f2054166107a6575b600101610776565b906107c86001916107b78486613c49565b516107c28288613c49565b52613c3b565b91905061079e565b604051806107de8682613a9f565b0390f35b63f726140760e01b5f5260045ffd5b506107fb33613eec565b15610744565b5061080b3361401f565b1561073e565b346103e85760203660031901126103e85760043560068110156103e85761083a6107de916143a4565b60405191829182919091604080606083019460ff815116845260ff602082015116602085015201511515910152565b346103e8575f3660031901126103e85760206040517fb7733e58c7517dbd9e44ca467a39c0556186bc3a7271956f0a22baafb5dc93c38152f35b346103e85760203660031901126103e8576107de6108c76108c2613601565b614341565b6040519182918291909160a08060c08301948051845260ff602082015116602085015260ff604082015116604085015260ff606082015116606085015260ff608082015116608085015201511515910152565b346103e8575f3660031901126103e85760206040517fede9dcdb0ce99dc7cec9c7be9246ad08b37853683ad91569c187b647ddf5e21c8152f35b346103e857610962366136df565b61096b33613f98565b15610b1c57606a549060018216610a05575b505050610998604061099160208401613c6d565b9201613c6d565b906001604051926109a884613785565b62ff000061ff0060ff85169485875284604060ff861698896020820152015260081b169160101b16171760695560405160066003101561044c575f51602061571b5f395f51905f52926060926003835260208301526040820152a1005b60608401359060a15492838303610b0557610a1f90614d22565b936001546080873603126103e85760405195610a3a87613734565b873560068110156103e85787610af59682610afa9a5260ff808c6060610a756040610a676020850161389e565b93602089019485520161389e565b956040810196875201938452511692511690519060405192610ac260208501957fd9f156a761105f6361512d31cea845f4ddff720a324d1318ade78663a62bb31887526040860190613b0f565b6060840152608083015260a082015260a08152610ae060c0826137a0565b51902060ff6020818451169301511692614a20565b613c3b565b60a15581808061097d565b82846306427aeb60e01b5f5260045260245260445ffd5b637bfa4b9f60e01b5f5260045ffd5b346103e85760e03660031901126103e857600435602435610b4a613617565b610b5261362d565b9160603660831901126103e857609b5460ff8160081c16610d725760ff8116610d635760ff1916600117609b556001600160a01b0382165f8181526033602052604090205490949060ff1615610d50578015610d41576001600160a01b038416801561066657825f52609c60205260ff60405f205416610d2e57604051602081019060843560ff81168091036103e857825260a435604082015260c435606082015260608152610c036080826137a0565b51902095865f52609a60205260ff60405f205416610d1f576084610c54610c6193610c5c9360405191610c3583613719565b60018352876020840152604083015260608201528660808201526146a0565b6001546153e5565b61415a565b15610d105780610c7084614d6d565b10610ca057610c94945f52609a60205260405f20600160ff19825416179055614b58565b609b805460ff19169055005b7f2aa807c191208ec364a49ebc0018975f798050694e1695937b26706e4f0a88589083610cfe610ccf82614d6d565b604080513381526001600160a01b03909416602085015283019390935260608201929092529081906080820190565b0390a163128bd24d60e31b5f5260045ffd5b638baa579f60e01b5f5260045ffd5b63900bb2c960e01b5f5260045ffd5b82631409d1b760e21b5f5260045260245ffd5b637c946ed760e01b5f5260045ffd5b8463094403b760e41b5f5260045260245ffd5b630ef7697f60e01b5f5260045ffd5b63ab35696f60e01b5f5260045ffd5b346103e85760c03660031901126103e857600435610d9d613643565b906044356001600160401b0381116103e857610dbd9036906004016139a8565b9260603660631901126103e85760ff609b5460081c16610d72578215610d41576001600160a01b03168015610f7157805f52603360205260ff60405f2054161561062257604051602081019060643560ff81168091036103e8578252608435604082015260a435606082015260608152610e386080826137a0565b51902093845f52609a60205260ff60405f205416610d1f57335f526099602052610ed2610c5c606460405f205460405190610e7282613719565b5f825260208083018a9052336040808501829052606085018a905260809094018390529251908101929091610ec7918391610eb9916001600160a01b038c16908e8861464a565b03601f1981018352826137a0565b5190206001546153e5565b15610d10578060a0937fef519b7eb82aaf6ac376a6df2d793843ebfd593de5f1a0601d3cc6ab49ebb395965f52609a60205260405f20600160ff19825416179055335f52609960205260405f20610f298154613c3b565b9055610f3786303387615166565b6040519586943386526020860152604085015260806060850152816080850152848401375f828201840152601f01601f19168101030190a1005b6301cc396360e41b5f5260045ffd5b346103e85760203660031901126103e8576004356001600160401b0381116103e857610fb3610fc0913690600401613839565b610fbb614ec3565b615450565b005b346103e85760203660031901126103e8576004356001600160401b0381116103e857610ff29036906004016138ac565b610ffb33613f98565b1580611087575b61067557604060205f5b8351811015610fc0576001600160a01b036110278286613c49565b5151169061103e6110388287613c49565b51614f5c565b835161104a85826137a0565b60018152602081019084368337805115611073576001938261106d935052615450565b0161100c565b634e487b7160e01b5f52603260045260245ffd5b506110913361415a565b15611002565b346103e85760203660031901126103e8576004355f52609c602052602060ff60405f2054166040519015158152f35b346103e8576110d436613a21565b6110dd33613f98565b1580611175575b80611165575b61067557602860ff825116116107e2576040519061016061110b81846137a0565b600a8352601f19013660208401375f5f5b82518110156107d05761112f8184613c49565b515f52609d60205260ff60405f20541661114c575b60010161111c565b9061115d6001916107b78486613c49565b919050611144565b5061116f33613eec565b156110ea565b5061117f3361401f565b156110e4565b346103e85760403660031901126103e857610fc06004356111a4613643565b906111c46111bd825f525f602052600160405f20015490565b3390615551565b614eee565b346103e85760206111e56111dc366139d5565b939290926142ce565b6040516001600160a01b039091168152f35b346103e85760403660031901126103e857611210613601565b6024359060068210156103e8576020916106f191614278565b346103e8575f3660031901126103e85760206040515f5160206156db5f395f51905f528152f35b346103e85760203660031901126103e8576004356001600160401b0381116103e857611280903690600401613978565b61128933613f98565b158061140d575b61067557609b5460ff8116610d635760ff1916600117609b5580156113fe57602881116107e25763ffffffff811691905f5b63ffffffff811682811015610c94576113016112e4604061052c848789613c5d565b6001600160a01b03165f9081526033602052604090205460ff1690565b156113ce57611311818486613c5d565b3515610d41576001600160a01b0361132f606061052c848789613c5d565b1615610666576020611342828587613c5d565b01355f52609c60205260ff60405f2054166113ad57906113a38584848761139d606061052c611395604061052c8761137e6113a89e8b8a613c5d565b3599602061138d83838c613c5d565b013598613c5d565b948b8d613c5d565b92614c43565b614261565b6112c2565b6113ba6020918486613c5d565b0135631409d1b760e21b5f5260045260245ffd5b604061052c6113de928587613c5d565b63094403b760e41b5f9081526001600160a01b0391909116600452602490fd5b630b8fc7cd60e21b5f5260045ffd5b506114173361401f565b15611290565b346103e8575f3660031901126103e85760206040517ff7401a2aa2d57dbee8bd296c5ac47eac2db8a2db2ff59d50c0534dc8be92dc6e8152f35b346103e85760603660031901126103e85760043560068110156103e8576024359060ff8216918281036103e8576044359160ff8316938484036103e85761149d33613f98565b15610b1c5760408051610fc0966001936114b683613785565b825260208201520152615045565b346103e8575f3660031901126103e8576020606b54604051908152f35b346103e8575f3660031901126103e85760206040517fdd7d143944313e9468ffd66e8786351a1538ac1bd6bac96fbbaac11d42f60a518152f35b346103e8575f3660031901126103e85760206040517f4d7d81d86b902e627e6f0ca462e1191bd8af9cb4b8de2660c10b6349acb6ff9b8152f35b346103e8575f3660031901126103e857602060ff609b5460081c166040519015158152f35b346103e8576115883661366d565b93609b9391935460ff8116610d635760ff1916600117609b81905560081c60ff16610d725760405160208101906115c781610eb9898989898989613b1c565b51902094855f52609e60205260ff60405f205416156116405780421061162a57508185610c94965f52609e60205260405f2060ff1981541690557f51c3dff4f0da80a96e8c3557bb500474d2b07950c09c205189fcf7a426970f775f80a3614b58565b63126b74dd60e11b5f526004524260245260445ffd5b8563836588c960e01b5f5260045260245ffd5b346103e85760206111e5610ec7610eb961166c366139d5565b9592949093608060405161167f81613719565b5f81528a81019283526001600160a01b03978816604080830191825295891660608301908152929091018790529151915190519351808b019790968795909390821692909116908861464a565b346103e8576116da366135eb565b906116e433613f98565b1580611740575b6106755760ff609b5460081c16610d7257611707828210613b55565b60326117138284613ba1565b10156103e8575b81811061172357005b5f818152609d60205260409020805460ff1916905560010161171a565b5061174a3361401f565b156116eb565b346103e85760403660031901126103e8576004356001600160401b0381116103e857611780903690600401613839565b60243561178c33613f98565b15806118a2575b6106755760ff609b5460081c16610d725760a3548111611893576028825111610652574782518281029080820484149015171561187f571015611870575f5b825163ffffffff82169081101561184a575f808080866001600160a01b036117fa878b613c49565b51165af1611806613c0c565b501561181b575061181690614261565b6117d2565b6001600160a01b039061182e9085613c49565b5116633ddff61360e21b5f52306004526024525f60445260645ffd5b7f6e31901a2ad27bd7f19498c4681fc6611bf447147de120c3b5f65c249d5990775f80a1005b63128bd24d60e31b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b6395e28b8560e01b5f5260045ffd5b506118ac3361401f565b15611793565b346103e8575f3660031901126103e857602060a254604051908152f35b346103e8575f3660031901126103e85760206040515f8152f35b346103e8575f3660031901126103e85760206040517fbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f08152f35b346103e85760203660031901126103e85761193c613bae565b506107de61083a600435614d22565b346103e85760203660031901126103e8576001600160a01b0361196c613601565b165f526033602052602060ff60405f2054166040519015158152f35b346103e85760203660031901126103e8576004355f52609e602052602060ff60405f2054166040519015158152f35b346103e85760403660031901126103e85760206119dd6119d5613643565b6004356141ee565b6040519015158152f35b346103e8575f3660031901126103e8576020606954604051908152f35b60403660031901126103e857611a18613601565b611a20613643565b609b5460ff8160081c16610d725760ff8116610d635760ff1916600117609b55611a4933613f98565b1580611bb3575b610675576001600160a01b03821690308214610634576001600160a01b03165f8181526033602052604090205490929060ff1615611ba05782611aee575050503415611adb575f51602061573b5f395f51905f5260a06040513381523360208201523060408201525f6060820152346080820152a15b60ff19609b5416609b55602060405160018152f35b6379ac219b60e01b5f523360045260245ffd5b6040516370a0823160e01b81526004810183905290602082602481875afa918215610617575f92611b5d575b50905f51602061573b5f395f51905f5293611b3b8260a09594309084615166565b60405192338452602084015230604084015260608301526080820152a1611ac6565b9291506020833d602011611b98575b81611b79602093836137a0565b810103126103e857915190915f51602061573b5f395f51905f52611b1a565b3d9150611b6c565b8263094403b760e41b5f5260045260245ffd5b50611bbd3361401f565b15611a50565b346103e8575f3660031901126103e857611bdc33613f98565b1580611bf8575b61067557609b805461ff001916610100179055005b50611c023361415a565b15611be3565b346103e8575f3660031901126103e85760206040517f20eabc094169e10bc6be263d742d992b10fb206c3c0411e1cbabdd3cf47922298152f35b346103e85760203660031901126103e8576001600160a01b03611c63613601565b165f526099602052602060405f2054604051908152f35b346103e8576101003660031901126103e857611c94613617565b611c9c61362d565b60603660831901126103e85760e4356001600160401b0381116103e857611cc79036906004016136af565b9160ff609b5460081c16610d7257610fc093602435600435613cab565b60803660031901126103e8576004356001600160401b0381116103e857611d0f9036906004016139a8565b60603660231901126103e85760ff609b5460081c16610d72575f805260336020527f44496df070da3f045064f6d6f394484a8de10d5710290d619b67d975ec89320f5460ff1615611ea3573415610d4157604051602081019060243560ff81168091036103e85782526044356040820152606435606082015260608152611d976080826137a0565b519020805f52609a60205260ff60405f205416610d1f57335f526099602052611e0e610c5c602460405f205460405190611dd082613719565b5f8083523460208085018290523360408087018290526060870185905260809096018590529451908101949093610ec7938593610eb993908861464a565b15610d10577fef519b7eb82aaf6ac376a6df2d793843ebfd593de5f1a0601d3cc6ab49ebb3959260a0915f52609a60205260405f20600160ff19825416179055335f52609960205260405f20611e648154613c3b565b9055826040519384923384525f602085015234604085015260806060850152816080850152848401375f828201840152601f01601f19168101030190a1005b63094403b760e41b5f525f60045260245ffd5b346103e85760203660031901126103e857611ecf613c7b565b506107de6108c760043561510b565b346103e85760203660031901126103e8576001600160a01b03611eff613601565b165f52609f602052608060405f2080549060018101549060ff6003600283015492015416916040519384526020840152604083015215156060820152f35b346103e857366003190161012081126103e857610100136103e857610104356001600160401b0381116103e857611f789036906004016136af565b90611f8233613f98565b15610b1c57606a54906001821661201f575b505050611f9f613ad8565b6064359060ff8216918281036103e857506084359160ff8316928381036103e8575060a43560ff8116908181036103e8575060c4359360ff8516928386036103e857610fc0955060405194611ff38661376a565b6001600160a01b03168552604435602086015260408501526060840152608083015260a0820152614f5c565b60e4359260a154928385036121925761203790614d22565b916001546040519361010085018581106001600160401b0382111761217e5760405260043560068110156103e857808652612070613643565b9760208701988952604087019060443582526064359060ff821682036103e8576060890191825260843560ff811681036103e85760808a0190815260a43560ff811681036103e85760a08b0190815260c4359160ff831683036103e85760ff806121739f81610af59f9160e08360c0849501998a520198895260018060a01b0390511699519851169351169351169351169351946040519661213d60208901997ff7c85f4c562133d25a5a2a8cfb32d68080a42c5189d5a1a655e1216b2364c3598b5260408a0190613b0f565b6060880152608087015260a086015260c085015260e08401526101008301526101208201526101208152610ae0610140826137a0565b60a155808080611f94565b634e487b7160e01b5f52604160045260245ffd5b5050506306427aeb60e01b5f5260045260245260445ffd5b346103e8575f3660031901126103e85760206040517f3261beaeb016c41750eb5ecd6c92c85305d1a0aecaaaa6e0f4cf499f7ae258fb8152f35b346103e85760203660031901126103e8576004356001600160401b0381116103e857612214903690600401613839565b61221d33613f98565b1580612304575b610675575f5b81518110156122ce576001906001600160a01b036122488285613c49565b51165f5260336020528160ff60405f205416151514612268575b0161222a565b818060a01b036122788285613c49565b51165f52603360205260405f2060ff1981541690557f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd36020838060a01b036122c08487613c49565b5116604051908152a1612262565b505f5b8151811015610fc0576001906001600160a01b036122ef8285613c49565b51165f5260686020525f6040812055016122d1565b5061230e3361415a565b15612224565b346103e85760203660031901126103e8576001600160a01b03612335613601565b165f5260a06020526040805f2060ff6001825492015416825191825215156020820152f35b346103e85760e03660031901126103e857612373613601565b61237b613643565b906044356001600160401b0381116103e85761239b9036906004016137dc565b6064356001600160401b0381116103e8576123ba903690600401613839565b6084356001600160401b0381116103e8576123d99036906004016138ac565b9360a4356001600160401b0381116103e8576123f9903690600401613978565b9190945f51602061575b5f395f51905f525460ff8160401c1615946001600160401b038216801590816126c7575b60011490816126bd575b1590816126b4575b506126a55767ffffffffffffffff1982166001175f51602061575b5f395f51905f525561251a9186612679575b50604096875161247689826137a0565b60068152602081019065457363726f7760d01b8252612493614ec3565b895161249e81613734565b818152836020820152468b820152606030910152519020906020815191012088519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528a83015260608201524660808201523060a082015260a0815261250c60c0826137a0565b519020600155610fbb614ec3565b612522614ec3565b606580546001600160a01b0319166001600160a01b03831617905561254633613f98565b1561266a575b6125558161415a565b1561265a575b506125658161401f565b1561264a575b5060c43560a3555f5b8551811015612593578061258d61103860019389613c49565b01612574565b50835f5b8281106125fd575050506125a757005b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff0000000000000000195f51602061575b5f395f51905f5254165f51602061575b5f395f51905f52555160018152a1005b612608818484613c5d565b359060068210156103e85761264460019261262f6020612629858989613c5d565b01613c6d565b61263e89612629868a8a613c5d565b91615045565b01612597565b61265390614e81565b508561256b565b61266390614e53565b508661255b565b61267333614dc9565b5061254c565b68ffffffffffffffffff191668010000000000000001175f51602061575b5f395f51905f525589612466565b63f92ee8a960e01b5f5260045ffd5b9050158a612439565b303b159150612431565b879150612427565b346103e8575f3660031901126103e85760206040516103848152f35b346103e85760203660031901126103e8576020612706613601565b61270f81613f98565b908115612722575b506040519015158152f35b61272c915061401f565b82612717565b346103e8575f3660031901126103e85760206040517fd64fcb6a6f590e3ec3e331a5d9c60e0ca7468054939fe8e8dfe25f11ad1c1e7a8152f35b346103e857366003190160e081126103e85760c0136103e85760c4356001600160401b0381116103e8576127a49036906004016136af565b906127ae33613f98565b15610b1c576004359160068310156103e8576005830361299b57606b549160018316612883575b6127dd613ad8565b7fdecad5d2d09e135bd441d251aac8169cfc87fbaa724441620c4433eec310740e60606044356064356084359061287060405161281981613734565b84815260036020820198848a5260408301868152888401916001835260018060a01b03169a8b5f52609f60205260405f209451855551600185015551600284015551151591019060ff801983541691151516179055565b60405192835260208301526040820152a2005b60a4359360a254938486036129845794610af59392916128a561297897614d22565b9060015492604051906128b78261376a565b8282526128c2613643565b60208381018290526044356040808601829052606435606087018190526084356080880181905260a090970186905281517f938950981d332bb13f775a3387daf26ee4c6574ace3e04ca5d9c0f6b267e611f948101948552939793969490936001600160a01b039091169161293a9190880190613b0f565b6060860152608085015260a084015260c083015260e082015260e08152612963610100826137a0565b51902060ff6020818451169301511692614953565b60a255808080806127d5565b85856306427aeb60e01b5f5260045260245260445ffd5b631cc6a69960e11b5f5260045ffd5b346103e8575f3660031901126103e8576129c333613f98565b15806129db575b61067557609b805461ff0019169055005b506129e53361415a565b156129ca565b346103e85760203660031901126103e85760206119dd6112e4613601565b346103e85760603660031901126103e857612a22613601565b612a2a613643565b90612a33613617565b91612a3c614ec3565b606580546001600160a01b0319166001600160a01b038416179055612a6081613f98565b15612aa0575b50612a708161415a565b15612a90575b50612a808161401f565b15612a8757005b610fc090614e81565b612a9990614e53565b5081612a76565b612aa990614dc9565b5082612a66565b346103e8575f3660031901126103e8576020606a54604051908152f35b346103e85760403660031901126103e857612ae6613643565b336001600160a01b03821603612b0257610fc090600435614eee565b63334bd91960e11b5f5260045ffd5b346103e8575f3660031901126103e8576020600154604051908152f35b346103e8575f3660031901126103e857602060a154604051908152f35b346103e85760403660031901126103e8576004356001600160401b0381116103e857612b7b9036906004016137dc565b6024356001600160401b0381116103e857612b9a9036906004016137dc565b90612ba3614ec3565b604051612baf81613734565b8181528260208201524660408201526060309101526020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152612c2460c0826137a0565b519020600155005b346103e85760403660031901126103e857610fc0600435612c4b613643565b90612c646111bd825f525f602052600160405f20015490565b614eaf565b346103e857612c77366136df565b612c8033613f98565b15610b1c5782359160068310156103e8576005830361299b57606b549160018316612d2b575b847fbfb20345012f7f594509a481f64d54cf8b3b081b4a40b1c69410fee9590f89c360206040612cd7828501613aee565b930135612d22604051612ce98161374f565b828152600184820196818852818060a01b031696875f5260a0865260405f209251835551151591019060ff801983541691151516179055565b604051908152a2005b60608501359160a25493848403612e0157612d4590614d22565b600154906080883603126103e857612df59688610af596604051612d6881613734565b8381526060612d7960208501613659565b9160208101928352604080820195013585520191825260018060a01b03905116915190519060405192612dd760208501957f17b10d4ca0ee847f6681ca5e4205d5402614b1149ae7a25cd473872ae40df18187526040860190613b0f565b6060840152608083015260a082015260a0815261296360c0826137a0565b60a25581808080612ca6565b83856306427aeb60e01b5f5260045260245260445ffd5b346103e85760a03660031901126103e857600435602435612e37613617565b91612e4061362d565b906084356001600160401b0381116103e857612e609036906004016136af565b929094612e6c33613eec565b158061308e575b6106755760ff609b5460081c16610d72576001600160a01b0382169384156130495760695496600188161561303a57845f52609d60205260ff60405f20541661302757612ebf846140b3565b156130185786612ece84614d6d565b1061187057612f2f92612f1160405191612ee783613719565b6003835289602084015288604084015260018060a01b0316998a6060840152876080840152614d22565b612f1d600154926146a0565b60ff6020818451169301511692614886565b84612fe357505f80808086865af1612f45613c0c565b5015612fa6577f90e7666b7fc6e8b2de33377c01b0f07a65ea33e7596f355b4a107492af5fbe429360a0935b825f52609d60205260405f20600160ff19825416179055604051933385526020850152604084015260608301526080820152a1005b60405162461bcd60e51b8152602060048201526015602482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6044820152606490fd5b938361301360a0957f90e7666b7fc6e8b2de33377c01b0f07a65ea33e7596f355b4a107492af5fbe429784614d89565b612f71565b63178e01cf60e01b5f5260045ffd5b84631409d1b760e21b5f5260045260245ffd5b630845dc8960e31b5f5260045ffd5b60405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606490fd5b5061309833613f98565b15612e73565b346103e85760203660031901126103e85760206106f16004355f525f602052600160405f20015490565b346103e85760203660031901126103e8576001600160a01b036130e9613601565b165f526068602052602060405f2054604051908152f35b346103e85761310e3661366d565b909161311c94939433613f98565b15806131b1575b6106755760ff609b5460081c16610d7257610eb961314d9260405194859388602086019889613b1c565b519020805f52609e60205260ff60405f2054161561319f57805f52609e60205260405f2060ff1981541690557fbc42d977c60745c9544af4d5bc56c88c6f21914f291dfd327af4eb04098e90085f80a3005b63836588c960e01b5f5260045260245ffd5b506131bb3361401f565b15613123565b346103e8575f3660031901126103e8576107de61083a613bcc565b346103e8575f3660031901126103e857602047604051908152f35b346103e857613205366135eb565b9061320f33613f98565b158061326b575b6106755760ff609b5460081c16610d7257613232828210613b55565b603261323e8284613ba1565b10156103e8575b81811061324e57005b5f818152609c60205260409020805460ff19169055600101613245565b506132753361401f565b15613216565b346103e85760203660031901126103e8576004356001600160401b0381116103e857366023820112156103e8578060040135906001600160401b0382116103e8573660248360051b830101116103e8576132d433613eec565b1580613588575b61067557609b5460ff8116610d635760ff1916600117609b81905560081c60ff16610d725781156113fe57602882116107e2573681900360c219015f5b83811015610c945760248160051b84010135828112156103e8578301606481016133446112e482613aee565b1561357f5760248201358015610d415760848301906001600160a01b0361336a83613aee565b161561066657604484013593845f52609c60205260ff60405f2054166130275761339383613aee565b9061339d85613aee565b604051926133aa84613719565b60018452602084018590526001600160a01b039081166040850152166060830152608082018690526133e46133de86613aee565b846145ae565b906133f1600154936146a0565b60208301519251909160a481013560421936839003018112156103e85701602401803593906001600160401b0385116103e8576020019260608502360384136103e85761343d95614735565b61345961344984613aee565b61345284613aee565b9083614aef565b8015613550576134699042613b02565b61347284613aee565b8161349561347f86613aee565b610eb960405193849260208401968c8a89613b1c565b51902093845f52609e60205260ff60405f20541661353d57916135338594926135016134fb7f0c9f9de35e5087cd15d9d8b1e477c3fe1500157465e3737550a4395936b5c49a9660019b9a995f52609e60205260405f208c60ff19825416179055613aee565b94613aee565b604080519485526001600160a01b03958616602086015294169383019390935260608201929092529081906080820190565b0390a35b01613318565b856352fcbb3b60e11b5f5260045260245ffd5b5090926001949361356c61356661357a95613aee565b91613aee565b9163ffffffff8a1693614c43565b613537565b6113de90613aee565b5061359233613f98565b156132db565b346103e85760203660031901126103e8576004359063ffffffff60e01b82168092036103e857602091637965db0b60e01b81149081156135da575b5015158152f35b6301ffc9a760e01b149050836135d3565b60409060031901126103e8576004359060243590565b600435906001600160a01b03821682036103e857565b604435906001600160a01b03821682036103e857565b606435906001600160a01b03821682036103e857565b602435906001600160a01b03821682036103e857565b35906001600160a01b03821682036103e857565b60a09060031901126103e85760043590602435906044356001600160a01b03811681036103e857906064356001600160a01b03811681036103e8579060843590565b9181601f840112156103e8578235916001600160401b0383116103e857602080850194606085020101116103e857565b90600319820160a081126103e8576080136103e857600491608435906001600160401b0382116103e857613715916004016136af565b9091565b60a081019081106001600160401b0382111761217e57604052565b608081019081106001600160401b0382111761217e57604052565b604081019081106001600160401b0382111761217e57604052565b60c081019081106001600160401b0382111761217e57604052565b606081019081106001600160401b0382111761217e57604052565b90601f801991011681019081106001600160401b0382111761217e57604052565b6001600160401b03811161217e57601f01601f191660200190565b81601f820112156103e8578035906137f3826137c1565b9261380160405194856137a0565b828452602083830101116103e857815f926020809301838601378301015290565b6001600160401b03811161217e5760051b60200190565b9080601f830112156103e857813561385081613822565b9261385e60405194856137a0565b81845260208085019260051b8201019283116103e857602001905b8282106138865750505090565b6020809161389384613659565b815201910190613879565b359060ff821682036103e857565b81601f820112156103e8578035906138c382613822565b926138d160405194856137a0565b828452602060c08186019402830101918183116103e857602001925b8284106138fb575050505090565b60c0848303126103e857602060c0916040516139168161376a565b61391f87613659565b815282870135838201526139356040880161389e565b60408201526139466060880161389e565b60608201526139576080880161389e565b608082015261396860a0880161389e565b60a08201528152019301926138ed565b9181601f840112156103e8578235916001600160401b0383116103e8576020808501948460071b0101116103e857565b9181601f840112156103e8578235916001600160401b0383116103e857602083818601950101116103e857565b60e06003198201126103e857600435916024356001600160a01b03811681036103e857916044356001600160a01b03811681036103e8579160606064359260831901126103e857608490565b60206003198201126103e857600435906001600160401b0382116103e857806023830112156103e8578160040135613a5881613822565b92613a6660405194856137a0565b8184526024602085019260051b8201019283116103e857602401905b828210613a8f5750505090565b8135815260209182019101613a82565b60206040818301928281528451809452019201905f5b818110613ac25750505090565b8251845260209384019390920191600101613ab5565b6024356001600160a01b03811681036103e85790565b356001600160a01b03811681036103e85790565b9190820180921161187f57565b90600682101561044c5752565b60018152602081019190915260408101919091526001600160a01b0391821660608201529116608082015260a081019190915260c00190565b15613b5c57565b60405162461bcd60e51b815260206004820152601b60248201527f5374617274206d757374206265206c657373207468616e20656e6400000000006044820152606490fd5b9190820391821161187f57565b60405190613bbb82613785565b5f6040838281528260208201520152565b613bd4613bae565b506069546001811615613bed57613bea90614d22565b90565b50604051613bfa81613785565b5f81525f60208201525f604082015290565b3d15613c36573d90613c1d826137c1565b91613c2b60405193846137a0565b82523d5f602084013e565b606090565b5f19811461187f5760010190565b80518210156110735760209160051b010190565b91908110156110735760071b0190565b3560ff811681036103e85790565b60405190613c888261376a565b5f60a0838281528260208201528260408201528260608201528260808201520152565b919293909460018060a01b03841690815f52603360205260ff60405f20541615613ed9578315610d41576001600160a01b03861692831561066657875f52609c60205260ff60405f205416613ec657604051602081019060843560ff811681036103e85760ff16825260a435604082015260c435606082015260608152613d336080826137a0565b51902093845f52609a60205260ff60405f205416610d1f57613d5c610c5c60848b8a8c8b6142ce565b15610d1057613daf9360405191613d7283613719565b6001835287602084015260408301526060820152886080820152613d9687876145ae565b613da2600154926146a0565b6020820151915192614735565b81613db984614d6d565b10613e97575f52609a60205260405f20600160ff19825416179055613ddf838383614aef565b8015613e8a57613def9042613b02565b6040516020810190613e0981610eb98589898c8a89613b1c565b51902093845f52609e60205260ff60405f20541661353d575f858152609e6020908152604091829020805460ff1916600117905581519485526001600160a01b039586169085015293169282019290925260608101919091527f0c9f9de35e5087cd15d9d8b1e477c3fe1500157465e3737550a4395936b5c49a90608090a3565b5092613e9593614b58565b565b5081610cfe610ccf7f2aa807c191208ec364a49ebc0018975f798050694e1695937b26706e4f0a885894614d6d565b87631409d1b760e21b5f5260045260245ffd5b5063094403b760e41b5f5260045260245ffd5b613f157fdd7d143944313e9468ffd66e8786351a1538ac1bd6bac96fbbaac11d42f60a516151aa565b90602082015115613f5a576001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b600190565b6001600160a01b03165f9081527f73d1b004bb899057e159bfa3bc586cb8ff49a8aafbfaf45c482f2c16f8bdf303602052604090205460ff16919050565b613fa15f6151aa565b90602082015115613fe1576001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b6001600160a01b03165f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16919050565b6140355f5160206156db5f395f51905f526151aa565b90602082015115614075576001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b6001600160a01b03165f9081527f4272c0e29c36ddb672dd25a254bda59e4d959f5c13bec396162edadccdbf7935602052604090205460ff16919050565b6140dc7fb7733e58c7517dbd9e44ca467a39c0556186bc3a7271956f0a22baafb5dc93c36151aa565b9060208201511561411c576001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b6001600160a01b03165f9081527fe2b47d1c3d5450b2075d143367420d4b6d23efa60d1222723e42a52350332748602052604090205460ff16919050565b6141705f5160206156fb5f395f51905f526151aa565b906020820151156141b0576001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b6001600160a01b03165f9081527fee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319f602052604090205460ff16919050565b906141f8826151aa565b9160208301511561423957506001600160a01b03165f90815260676020526040902054905190600882101561044c57600160ff8093161b1616613f55575f90565b5f908152602081815260408083206001600160a01b039094168352929052205460ff16919050565b63ffffffff1663ffffffff811461187f5760010190565b5f9291600681101561044c5780156142b2576001146142945750565b6001600160a01b03165f908152609960205260409020600101549150565b506001600160a01b03165f908152609960205260409020549150565b9092610c5492613bea9594604051936142e685613719565b6001855260208501526001600160a01b03908116604085015216606083015260808201526146a0565b9061431982613822565b61432660405191826137a0565b8281528092614337601f1991613822565b0190602036910137565b614349613c7b565b506001600160a01b03165f90815260686020526040902054600181161561437357613bea9061510b565b506040516143808161376a565b5f81525f60208201525f60408201525f60608201525f60808201525f60a082015290565b6143ac613bae565b50600681101561044c576004036143d357606a545b6001811615613bed57613bea90614d22565b606b546143c1565b6040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa908115610617575f91614415575090565b90506020813d60201161443c575b81614430602093836137a0565b810103126103e8575190565b3d9150614423565b91908110156110735760061b0190565b9060405161446181613734565b5f81525f60208201525f60408201525f60608201525061448081614d6d565b91801561458857670de0b6b3a76400008302838104670de0b6b3a7640000148415171561187f57819004908310156144df5750604051916144c083613734565b5f808452602084015260408301526001600160a01b0316606082015290565b6801158e460913d00000811061451e5750604051916144fd83613734565b600383526014602084015260408301526001600160a01b0316606082015290565b674563918244f400001161455a576040519161453983613734565b600283526005602084015260408301526001600160a01b0316606082015290565b6040519161456783613734565b600183526002602084015260408301526001600160a01b0316606082015290565b50604051916144fd83613734565b604051906145a38261374f565b5f6020838281520152565b906145b7614596565b506001600160a01b03165f81815260686020526040902054906001821615614638575060ff6145e6819261510b565b928351111592835f1461462b5781604082015116935b156146215760800151165b81604051936146158561374f565b16835216602082015290565b6060015116614607565b81602082015116936145fc565b6304ca686f60e01b5f5260045260245ffd5b7fe35cf8b8df51aa49768d4a7859037953b72f9188d7c60825dfd506ac7c8d430c81525f602082015260408101919091526001600160a01b0391821660608201529116608082015260a081019190915260c00190565b805190600682101561044c5760208101519060018060a01b0360408201511690608060018060a01b03606083015116910151916040519361470c60208601967f30df4329ee18debd99f937f6d70edc594d2957d5c194e77ab788df398c193af288526040870190613b0f565b6060850152608084015260a083015260c082015260c0815261472f60e0826137a0565b51902090565b919295936147438785613b02565b1561487d575f96959487946147578761430f565b975f995b888b10156148345761477360608c02860187896153e5565b6001600160a01b0316905f5b8c81106147ff57505f8281526067602052604090205460028116156147c657509a6001916147bb826147b58e9f9e9c9d9e613c3b565b9b613c49565b52019998979661475b565b909890600116156147ec579a6001916147bb826147e68e9f9e9d9e613c3b565b9c613c49565b8b63b20230bd60e01b5f5260045260245ffd5b826001600160a01b03614812838f613c49565b5116146148215760010161477f565b8c63b20230bd60e01b5f5260045260245ffd5b9698509450955096505050808210614868575050808210614853575050565b63ec65672960e01b5f5260045260245260445ffd5b63153482d760e01b5f5260045260245260445ffd5b50505050915050565b919295936148948785613b02565b1561487d575f96959487946148a88761430f565b975f995b888b1015614834576148c460608c02860187896153e5565b6001600160a01b0316905f5b8c811061493157505f82815260676020526040902054600881161561491157509a600191614906826147b58e9f9e9c9d9e613c3b565b5201999897966148ac565b909890600416156147ec579a600191614906826147e68e9f9e9d9e613c3b565b826001600160a01b03614944838f613c49565b511614614821576001016148d0565b919295936149618785613b02565b1561487d575f96959487946149758761430f565b975f995b888b10156148345761499160608c02860187896153e5565b6001600160a01b0316905f5b8c81106149fe57505f8281526067602052604090205460808116156149de57509a6001916149d3826147b58e9f9e9c9d9e613c3b565b520199989796614979565b909890604016156147ec579a6001916149d3826147e68e9f9e9d9e613c3b565b826001600160a01b03614a11838f613c49565b5116146148215760010161499d565b91929593614a2e8785613b02565b1561487d575f9695948794614a428761430f565b975f995b888b101561483457614a5e60608c02860187896153e5565b6001600160a01b0316905f5b8c8110614acd5750815f52606760205260405f20546020811615155f14614aad57509a600191614aa2826147b58e9f9e9c9d9e613c3b565b520199989796614a46565b909890601016156147ec579a600191614aa2826147e68e9f9e9d9e613c3b565b826001600160a01b03614ae0838f613c49565b51161461482157600101614a6a565b6001600160a01b039092165f90815260a060205260409020600181015460ff16614b51575060018060a01b03165f52609f60205260405f209060ff600383015416614b3c57505061038490565b815411614b4a576002015490565b6001015490565b9150505490565b9091825f52609c60205260405f20600160ff19825416179055335f526099602052600160405f2001614b8a8154613c3b565b90556001600160a01b031680614c1f57814710611870576001600160a01b0384165f80808086855af1614bbb613c0c565b5015614c055750915f5160206156bb5f395f51905f52939160c0935b604080513381526001600160a01b03909516602086015284015260608301526080820152600160a0820152a1565b633ddff61360e21b5f52306004526024525f60445260645ffd5b918183614c3e86945f5160206156bb5f395f51905f529760c097614d89565b614bd7565b9091939293825f52609c60205260405f20600160ff19825416179055335f526099602052600160405f2001614c788154613c3b565b90556001600160a01b031680614cf857814710611870576001600160a01b0385165f80808086855af1614ca9613c0c565b5015614c055750925f5160206156bb5f395f51905f52949263ffffffff9260c0955b604080513381526001600160a01b039097166020880152860152606085015260808401521660a0820152a1565b9284928285614d1d63ffffffff955f5160206156bb5f395f51905f529960c099614d89565b614ccb565b614d2a613bae565b506001811615614d5e5760ff60405191614d4383613785565b818160081c16835260101c1660208201526001604082015290565b6306b7c75960e31b5f5260045ffd5b6001600160a01b038116614d8057504790565b613bea906143db565b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604480830193909352918152613e9591614dc46064836137a0565b6154f9565b614dd3815f6155e4565b90614ddd5f6151aa565b90602082015115614e4e576001600160a01b03165f8181526067602052604090205490919060ff16614e3b575190600882101561044c575f52606760205260ff8060018160405f2094161b1681835416171660ff1982541617905590565b5063f893a86f60e01b5f5260045260245ffd5b505090565b614e6a815f5160206156fb5f395f51905f526155e4565b90614ddd5f5160206156fb5f395f51905f526151aa565b614e98815f5160206156db5f395f51905f526155e4565b90614ddd5f5160206156db5f395f51905f526151aa565b90614ddd614ebd82846155e4565b926151aa565b60ff5f51602061575b5f395f51905f525460401c1615614edf57565b631afcd79f60e31b5f5260045ffd5b90614efc614ebd8284615653565b90602082015115614e4e576001600160a01b03165f8181526067602052604090205490919060ff1615614e4e575190600882101561044c575f52606760205260ff808060018160405f2095161b1619835416161660ff1982541617905590565b6080810160ff8151169060a083019160ff83511610614d5e576040830160ff815116606085019060ff82511610614d5e577fdc6ddbf1e030d2d29f974619e12442d5506a4bdfbf9fc60c74d37e0612b1bdec9360c09360ff80808060208b019a60018c5160a01b64ff000000008a5160201b161763ff0000008b5160181b161762ff0000895160101b161761ff00885160081b16171760018060a01b038251165f52606860205260405f205560018060a01b039051169a51975116955116925116925116926040519460018652602086015260408501526060840152608083015260a0820152a2565b909160016040519161505683613785565b62ff000061ff0060ff87169687865284604060ff861697886020820152015260081b169160101b161717600683101561044c57600383036150c357905f51602061571b5f395f51905f5293606093926069555b6150b66040518094613b0f565b60208301526040820152a1565b600583036150e757905f51602061571b5f395f51905f529360609392606b556150a9565b91906004820361299b575f51602061571b5f395f51905f5293606093606a556150a9565b615113613c7b565b506001811615614d5e5760ff6040519161512c8361376a565b8060a01c8352818160181c166020840152818160201c166040840152818160081c16606084015260101c166080820152600160a082015290565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152613e9591614dc46084836137a0565b6040516151b68161374f565b5f8082526020909101527fede9dcdb0ce99dc7cec9c7be9246ad08b37853683ad91569c187b647ddf5e21c810361520157506040516151f48161374f565b5f81526001602082015290565b7ff7401a2aa2d57dbee8bd296c5ac47eac2db8a2db2ff59d50c0534dc8be92dc6e810361524357506040516152358161374f565b600181526001602082015290565b7f4d7d81d86b902e627e6f0ca462e1191bd8af9cb4b8de2660c10b6349acb6ff9b810361528557506040516152778161374f565b600281526001602082015290565b7f20eabc094169e10bc6be263d742d992b10fb206c3c0411e1cbabdd3cf479222981036152c757506040516152b98161374f565b600381526001602082015290565b7fbbfb55d933c2bfa638763473275b1d84c4418e58d26cf9d2cd5758237756d9f0810361530957506040516152fb8161374f565b600481526001602082015290565b7f3261beaeb016c41750eb5ecd6c92c85305d1a0aecaaaa6e0f4cf499f7ae258fb810361534b575060405161533d8161374f565b600581526001602082015290565b7fd64fcb6a6f590e3ec3e331a5d9c60e0ca7468054939fe8e8dfe25f11ad1c1e7a810361538d575060405161537f8161374f565b600681526001602082015290565b7faf82374944a6f0200e0a96e99d9d9aa4925409c95c28b14a1d426baddd614aa8146153cb576040516153bf8161374f565b5f81525f602082015290565b6040516153d78161374f565b600781526001602082015290565b60209260406080925f948251908782019261190160f01b845260228301526042820152604281526154176062826137a0565b5190209160ff61542682613c6d565b8351948552168684015285810135828401520135606082015282805260015afa15610617575f5190565b5f5b81518110156154f5576001906001600160a01b036154708285613c49565b51165f52603360205260ff60405f2054161561548d575b01615452565b818060a01b0361549d8285613c49565b51165f52603360205260405f208260ff198254161790557f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a46020838060a01b036154e78487613c49565b5116604051908152a1615487565b5050565b905f602091828151910182855af115610617575f513d61554857506001600160a01b0381163b155b6155285750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b60011415615521565b9061555b826151aa565b906020820151156155b2576001600160a01b03165f8181526067602052604090205491519091600882101561044c57600160ff8093161b16161561559d575050565b63e2517d3f60e01b5f5260045260245260445ffd5b90506155be81836141ee565b156155c7575050565b63e2517d3f60e01b5f5260018060a01b031660045260245260445ffd5b6155ee82826141ee565b61564d575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b61565d82826141ee565b1561564d575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a460019056fefc4d59a46f6143e0496645b06688cceb577d2d0439ad39ac0f1eaf3143a3a48e9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f997667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929edb00a5a19c16f441c369a47bcf9dff05b73e88628d23e9cf3a5b159fd0d12c86b32cee72b480eef6a5aeccadee07046ade1c28fec1e418949908f7ac8d7d228f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212202d0187260b7dee383b335f2a924abb345e5e4d3ecb55a4bcd94327a62dd19a1064736f6c634300081c0033";
1569
+ const _bytecode = "0x6080604052348015600e575f5ffd5b506137df8061001c5f395ff3fe608060405260043610610278575f3560e01c80639b19251a1161014a578063cb60ff34116100be578063e88e5cd411610078578063e88e5cd4146107d7578063f470c7e2146107f6578063f5b541a614610822578063f8b2cb4f14610842578063fa13f30a14610861578063fc50455f14610880575f5ffd5b8063cb60ff34146106e4578063d37dbaa21461072d578063d547741f1461074c578063d8a4676f1461076b578063e20c103c14610799578063e5b6337b146107b8575f5ffd5b8063b3ab15fb1161010f578063b3ab15fb14610634578063b5c604ff14610653578063c210296414610667578063c4707a8314610686578063c67515dd146106a6578063c688aa64146106c5575f5ffd5b80639b19251a1461057f578063a217fddf146105ad578063a3a00072146105c0578063ac21242d146105df578063b187bd2614610616575f5ffd5b80633f4ba83a116101ec5780637ecebe00116101a65780637ecebe00146104c75780638456cb59146104fb578063853954741461050f57806385fb709d1461052e5780638f2839701461054157806391d1485414610560575f5ffd5b80633f4ba83a1461042f5780634ae05c7d14610443578063518713d2146104625780635ae6256d146104815780636c3824ef146104955780637c13ba64146104b4575f5ffd5b80632f2ff15d1161023d5780632f2ff15d1461037f57806331993fdf1461039e5780633644e515146103bd57806336568abe146103d25780633aa98a94146103f15780633af32abf14610410575f5ffd5b806301ffc9a7146102c157806311a4b2d0146102f557806312065fe01461031657806312f5ea4014610332578063248a9ca314610351575f5ffd5b366102bd57604080513381525f6020820152348183015290517fb0afe9a71610967b99fda7fda0ed1e6ff47851924352fdf759922dd5427259419181900360600190a1005b5f5ffd5b3480156102cc575f5ffd5b506102e06102db366004612d93565b6108ac565b60405190151581526020015b60405180910390f35b348015610300575f5ffd5b5061031461030f366004612dc1565b6108e2565b005b348015610321575f5ffd5b50475b6040519081526020016102ec565b34801561033d575f5ffd5b5061031461034c366004612df5565b6109c0565b34801561035c575f5ffd5b5061032461036b366004612e34565b5f9081526020819052604090206001015490565b34801561038a575f5ffd5b50610314610399366004612e4b565b610b7a565b3480156103a9575f5ffd5b506103146103b8366004612f28565b610ba4565b3480156103c8575f5ffd5b5061032460015481565b3480156103dd575f5ffd5b506103146103ec366004612e4b565b610be5565b3480156103fc575f5ffd5b5061031461040b366004612f8b565b610c18565b34801561041b575f5ffd5b506102e061042a366004612fb8565b610cbb565b34801561043a575f5ffd5b50610314610cd8565b34801561044e575f5ffd5b5061031461045d366004613068565b610d2e565b34801561046d575f5ffd5b506102e061047c366004612fb8565b610d83565b34801561048c575f5ffd5b50609854610324565b3480156104a0575f5ffd5b506103146104af366004613068565b610dab565b6103146104c23660046130fb565b610dfd565b3480156104d2575f5ffd5b506103246104e1366004612fb8565b6001600160a01b03165f9081526099602052604090205490565b348015610506575f5ffd5b50610314610f98565b34801561051a575f5ffd5b50610314610529366004612dc1565b610ff2565b6102e061053c36600461314b565b611071565b34801561054c575f5ffd5b5061031461055b366004612fb8565b6112b9565b34801561056b575f5ffd5b506102e061057a366004612e4b565b611318565b34801561058a575f5ffd5b506102e0610599366004612fb8565b60336020525f908152604090205460ff1681565b3480156105b8575f5ffd5b506103245f81565b3480156105cb575f5ffd5b506103146105da366004613177565b611340565b3480156105ea575f5ffd5b506105fe6105f93660046131b8565b611505565b6040516001600160a01b0390911681526020016102ec565b348015610621575f5ffd5b50609b546102e090610100900460ff1681565b34801561063f575f5ffd5b5061031461064e366004612fb8565b611579565b34801561065e575f5ffd5b50609754610324565b348015610672575f5ffd5b50610314610681366004613210565b6115ff565b348015610691575f5ffd5b506103245f51602061376a5f395f51905f5281565b3480156106b1575f5ffd5b506103246106c036600461327f565b61193b565b3480156106d0575f5ffd5b506103146106df3660046132ae565b6119ac565b3480156106ef575f5ffd5b506040805180820182525f808252602091820152815180830183526097548082526098549183019182528351908152905191810191909152016102ec565b348015610738575f5ffd5b506105fe6107473660046131b8565b611ad9565b348015610757575f5ffd5b50610314610766366004612e4b565b611b2e565b348015610776575f5ffd5b506102e0610785366004612e34565b5f908152609c602052604090205460ff1690565b3480156107a4575f5ffd5b506103146107b3366004613068565b611b52565b3480156107c3575f5ffd5b506103146107d2366004613335565b611b5a565b3480156107e2575f5ffd5b506103146107f1366004613395565b611d3c565b348015610801575f5ffd5b506108156108103660046133e1565b611f97565b6040516102ec9190613471565b34801561082d575f5ffd5b506103245f51602061378a5f395f51905f5281565b34801561084d575f5ffd5b5061032461085c366004612fb8565b6120ca565b34801561086c575f5ffd5b506102e061087b3660046134b3565b612132565b34801561088b575f5ffd5b5061089f61089a366004612e4b565b612382565b6040516102ec919061353c565b5f6001600160e01b03198216637965db0b60e01b14806108dc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6108ec5f33611318565b15801561090d575061090b5f51602061376a5f395f51905f5233611318565b155b1561092b5760405163ea8e4eb560e01b815260040160405180910390fd5b80821061097f5760405162461bcd60e51b815260206004820152601b60248201527f5374617274206d757374206265206c657373207468616e20656e64000000000060448201526064015b60405180910390fd5b603261098b8383613597565b10610994575f5ffd5b815b818110156109bb575f818152609c60205260409020805460ff19169055600101610996565b505050565b6109ca5f33611318565b6109e757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b038116610a3d5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606401610976565b82610a478361250d565b1015610a665760405163128bd24d60e31b815260040160405180910390fd5b6001600160a01b038216610b11575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114610abd576040519150601f19603f3d011682016040523d82523d5f602084013e610ac2565b606091505b5050905080610b0b5760405162461bcd60e51b8152602060048201526015602482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610976565b50610b25565b610b256001600160a01b038316828561252b565b604080513381526001600160a01b0383811660208301528183018690528416606082015290517f55dba1a9b1cf7e607f75e6920591e36d121fa2899fbf31c777439ee694747b7b9181900360800190a1505050565b5f82815260208190526040902060010154610b948161258a565b610b9e8383612594565b50505050565b610bac612623565b610bde6040518060800160405280848152602001838152602001468152602001306001600160a01b031681525061264a565b6001555050565b6001600160a01b0381163314610c0e5760405163334bd91960e11b815260040160405180910390fd5b6109bb82826126e5565b610c20612623565b606580546001600160a01b0319166001600160a01b038516179055610c455f83611318565b610c5557610c535f83612594565b505b610c6c5f51602061378a5f395f51905f5284611318565b610c8957610c875f51602061378a5f395f51905f5284612594565b505b610ca05f51602061376a5f395f51905f5282611318565b6109bb57610b9e5f51602061376a5f395f51905f5282612594565b6001600160a01b03165f9081526033602052604090205460ff1690565b610ce25f33611318565b158015610d035750610d015f51602061378a5f395f51905f5233611318565b155b15610d215760405163ea8e4eb560e01b815260040160405180910390fd5b609b805461ff0019169055565b610d385f33611318565b158015610d595750610d575f51602061378a5f395f51905f5233611318565b155b15610d775760405163ea8e4eb560e01b815260040160405180910390fd5b610d808161274e565b50565b5f610d8e8183611318565b806108dc57506108dc5f51602061376a5f395f51905f5283611318565b610db55f33611318565b158015610dd65750610dd45f51602061378a5f395f51905f5233611318565b155b15610df45760405163ea8e4eb560e01b815260040160405180910390fd5b610d808161285e565b609b54610100900460ff1615610e265760405163ab35696f60e01b815260040160405180910390fd5b610e2f5f610cbb565b610e4e5760405163094403b760e41b81525f6004820152602401610976565b345f03610e6e57604051637c946ed760e01b815260040160405180910390fd5b5f81604051602001610e8091906135ba565b60408051601f1981840301815291815281516020928301205f818152609a90935291205490915060ff1615610ec85760405163900bb2c960e01b815260040160405180910390fd5b335f81815260996020526040812054610ef8925f51602061378a5f395f51905f529261057a923492919088611505565b610f1557604051638baa579f60e01b815260040160405180910390fd5b5f818152609a60209081526040808320805460ff1916600117905533835260999091528120805491610f46836135e7565b9190505550610f53612968565b7fef519b7eb82aaf6ac376a6df2d793843ebfd593de5f1a0601d3cc6ab49ebb395335f348787604051610f8a9594939291906135ff565b60405180910390a150505050565b610fa25f33611318565b158015610fc35750610fc15f51602061378a5f395f51905f5233611318565b155b15610fe15760405163ea8e4eb560e01b815260040160405180910390fd5b609b805461ff001916610100179055565b610ffc5f33611318565b61101957604051637bfa4b9f60e01b815260040160405180910390fd5b60408051808201825283815260209081018390526097849055609883905581518481529081018390527fe8110342b5e43ae921859bc8dbf18018fcacba13fe16e5a7ea1239b8b5b8f287910160405180910390a15050565b609b545f90610100900460ff161561109c5760405163ab35696f60e01b815260040160405180910390fd5b609b5460ff16156110c057604051630ef7697f60e01b815260040160405180910390fd5b609b805460ff191660011790556110d75f33611318565b1580156110f857506110f65f51602061376a5f395f51905f5233611318565b155b156111165760405163ea8e4eb560e01b815260040160405180910390fd5b306001600160a01b0384160361113f57604051630d20048960e01b815260040160405180910390fd5b61114882610cbb565b6111705760405163094403b760e41b81526001600160a01b0383166004820152602401610976565b6001600160a01b0382166111e457345f036111a0576040516379ac219b60e01b8152336004820152602401610976565b7f6b32cee72b480eef6a5aeccadee07046ade1c28fec1e418949908f7ac8d7d2283333305f346040516111d795949392919061364f565b60405180910390a16112a7565b6040516370a0823160e01b81526001600160a01b0384811660048301525f91908416906370a0823190602401602060405180830381865afa15801561122b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124f9190613682565b90506112666001600160a01b03841685308461298c565b7f6b32cee72b480eef6a5aeccadee07046ade1c28fec1e418949908f7ac8d7d228338530868560405161129d95949392919061364f565b60405180910390a1505b5050609b805460ff1916905550600190565b6112c35f33611318565b6112e057604051637bfa4b9f60e01b815260040160405180910390fd5b6112ea5f336126e5565b506112f55f82612594565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61134a5f33611318565b15801561136b57506113695f51602061376a5f395f51905f5233611318565b155b156113895760405163ea8e4eb560e01b815260040160405180910390fd5b8151602810156113af5760405163af89cf2160e01b815260286004820152602401610976565b5f6113b95f61250d565b9050808284516113c99190613699565b106113e75760405163128bd24d60e31b815260040160405180910390fd5b5f5b83518163ffffffff1610156114d7575f848263ffffffff1681518110611411576114116136b0565b60200260200101516001600160a01b0316846040515f6040518083038185875af1925050503d805f8114611460576040519150601f19603f3d011682016040523d82523d5f602084013e611465565b606091505b50509050806114c45730858363ffffffff1681518110611487576114876136b0565b6020908102919091010151604051633ddff61360e21b81526001600160a01b039283166004820152911660248201525f6044820152606401610976565b50806114cf816136c4565b9150506113e9565b506040517f6e31901a2ad27bd7f19498c4681fc6611bf447147de120c3b5f65c249d599077905f90a1505050565b5f5f6115596040518060a001604052805f600281111561152757611527613528565b8152602001898152602001886001600160a01b03168152602001876001600160a01b03168152602001868152506129c5565b8051602082012090915061156d8185612a2b565b98975050505050505050565b6115835f33611318565b6115a057604051637bfa4b9f60e01b815260040160405180910390fd5b6065546115c4905f51602061378a5f395f51905f52906001600160a01b03166126e5565b506115dc5f51602061378a5f395f51905f5282612594565b50606580546001600160a01b0319166001600160a01b0392909216919091179055565b6116095f33611318565b15801561162a57506116285f51602061376a5f395f51905f5233611318565b155b156116485760405163ea8e4eb560e01b815260040160405180910390fd5b609b5460ff161561166c57604051630ef7697f60e01b815260040160405180910390fd5b609b805460ff191660011790555f81900361169a57604051630b8fc7cd60e21b815260040160405180910390fd5b60288111156116bc5760405163f726140760e01b815260040160405180910390fd5b5f5b63ffffffff811682111561192c576116ff83838363ffffffff168181106116e7576116e76136b0565b905060800201604001602081019061042a9190612fb8565b6117585782828263ffffffff1681811061171b5761171b6136b0565b90506080020160400160208101906117339190612fb8565b60405163094403b760e41b81526001600160a01b039091166004820152602401610976565b82828263ffffffff16818110611770576117706136b0565b9050608002015f01355f0361179857604051637c946ed760e01b815260040160405180910390fd5b5f838363ffffffff84168181106117b1576117b16136b0565b90506080020160600160208101906117c99190612fb8565b6001600160a01b0316036117f05760405163d92e233d60e01b815260040160405180910390fd5b609c5f84848463ffffffff1681811061180b5761180b6136b0565b60206080909102929092018201358352508101919091526040015f205460ff161561186e5782828263ffffffff16818110611848576118486136b0565b90506080020160200135604051631409d1b760e21b815260040161097691815260200190565b61191a83838363ffffffff16818110611889576118896136b0565b9050608002015f013584848463ffffffff168181106118aa576118aa6136b0565b9050608002016020013585858563ffffffff168181106118cc576118cc6136b0565b90506080020160400160208101906118e49190612fb8565b86868663ffffffff168181106118fc576118fc6136b0565b90506080020160600160208101906119149190612fb8565b86612ae1565b80611924816136c4565b9150506116be565b5050609b805460ff1916905550565b5f8082600281111561194f5761194f613528565b0361197257506001600160a01b0382165f908152609960205260409020546108dc565b600182600281111561198657611986613528565b036108dc57506001600160a01b0382165f908152609960205260409020600101546108dc565b5f6119b5612c5d565b805490915060ff600160401b82041615906001600160401b03165f811580156119db5750825b90505f826001600160401b031660011480156119f65750303b155b905081158015611a04575080155b15611a225760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a4c57845460ff60401b1916600160401b1785555b611a7460405180604001604052806006815260200165457363726f7760d01b81525088610ba4565b611a7d86611b52565b611a8889338a610c18565b8315611ace57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f5f6115596040518060a0016040528060016002811115611afc57611afc613528565b8152602001898152602001886001600160a01b03168152602001876001600160a01b0316815260200186815250612c85565b5f82815260208190526040902060010154611b488161258a565b610b9e83836126e5565b610d77612623565b609b54610100900460ff1615611b835760405163ab35696f60e01b815260040160405180910390fd5b845f03611ba357604051637c946ed760e01b815260040160405180910390fd5b6001600160a01b038416611bca576040516301cc396360e41b815260040160405180910390fd5b611bd384610cbb565b611bfb5760405163094403b760e41b81526001600160a01b0385166004820152602401610976565b5f81604051602001611c0d91906135ba565b60408051601f1981840301815291815281516020928301205f818152609a90935291205490915060ff1615611c555760405163900bb2c960e01b815260040160405180910390fd5b335f81815260996020526040902054611c85915f51602061378a5f395f51905f529161057a918a918a9088611505565b611ca257604051638baa579f60e01b815260040160405180910390fd5b5f818152609a60209081526040808320805460ff1916600117905533835260999091528120805491611cd3836135e7565b9190505550611ce0612968565b611cf56001600160a01b03861633308961298c565b7fef519b7eb82aaf6ac376a6df2d793843ebfd593de5f1a0601d3cc6ab49ebb3953386888787604051611d2c9594939291906135ff565b60405180910390a1505050505050565b609b54610100900460ff1615611d655760405163ab35696f60e01b815260040160405180910390fd5b609b5460ff1615611d8957604051630ef7697f60e01b815260040160405180910390fd5b609b805460ff19166001179055611d9f83610cbb565b611dc75760405163094403b760e41b81526001600160a01b0384166004820152602401610976565b845f03611de757604051637c946ed760e01b815260040160405180910390fd5b6001600160a01b038216611e0e5760405163d92e233d60e01b815260040160405180910390fd5b5f848152609c602052604090205460ff1615611e4057604051631409d1b760e21b815260048101859052602401610976565b5f81604051602001611e5291906135ba565b60408051601f1981840301815291815281516020928301205f818152609a90935291205490915060ff1615611e9a5760405163900bb2c960e01b815260040160405180910390fd5b611eb85f51602061378a5f395f51905f5261057a8886888a88611ad9565b611ed557604051638baa579f60e01b815260040160405180910390fd5b85611edf8561250d565b1015611f59577f2aa807c191208ec364a49ebc0018975f798050694e1695937b26706e4f0a8858338588611f128861250d565b604080516001600160a01b03958616815294909316602085015291830152606082015260800160405180910390a160405163128bd24d60e31b815260040160405180910390fd5b5f818152609a60205260409020805460ff19166001908117909155611f85908790879087908790612ae1565b5050609b805460ff1916905550505050565b6060611fa35f33611318565b158015611fc45750611fc25f51602061376a5f395f51905f5233611318565b155b15611fe25760405163ea8e4eb560e01b815260040160405180910390fd5b602860ff16825160ff16111561200b5760405163f726140760e01b815260040160405180910390fd5b60408051600a80825261016082019092525f9160208201610140803683370190505090505f805b84518110156120bf57609c5f868381518110612050576120506136b0565b60209081029190910181015182528101919091526040015f205460ff16156120b757848181518110612084576120846136b0565b602002602001015183838151811061209e5761209e6136b0565b6020908102919091010152816120b3816135e7565b9250505b600101612032565b50909150505b919050565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561210e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dc9190613682565b5f61213d8133611318565b15801561215e575061215c5f51602061376a5f395f51905f5233611318565b155b1561217c5760405163ea8e4eb560e01b815260040160405180910390fd5b6001600160a01b0382166121a35760405163d92e233d60e01b815260040160405180910390fd5b60288311156121c85760405163af89cf2160e01b815260286004820152602401610976565b5f5b83811015612377575f8585838181106121e5576121e56136b0565b6121fb9260206040909202019081019150612fb8565b90505f868684818110612210576122106136b0565b90506040020160200160208101906122289190612fb8565b90506001600160a01b03811661225157604051631b71aaf760e31b815260040160405180910390fd5b306001600160a01b0383160361227a57604051630d20048960e01b815260040160405180910390fd5b61228381610cbb565b6122ab5760405163094403b760e41b81526001600160a01b0382166004820152602401610976565b6040516370a0823160e01b81526001600160a01b0383811660048301525f91908316906370a0823190602401602060405180830381865afa1580156122f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123169190613682565b905061232d6001600160a01b03831684888461298c565b7f6b32cee72b480eef6a5aeccadee07046ade1c28fec1e418949908f7ac8d7d228338488858560405161236495949392919061364f565b60405180910390a15050506001016121ca565b506001949350505050565b604080516080810182525f8082526020820181905291810182905260608101829052906123ae8361250d565b9050835f036123e957604080516080810182526003815260146020820152908101919091526001600160a01b038316606082015290506108dc565b5f846123fd83670de0b6b3a7640000613699565b61240791906136e8565b9050848210156124425750604080516080810182525f8082526020820152908101919091526001600160a01b038316606082015290506108dc565b6124556014670de0b6b3a7640000613699565b811061248e5750604080516080810182526003815260146020820152908101919091526001600160a01b038316606082015290506108dc565b6124a16005670de0b6b3a7640000613699565b81106124da5750604080516080810182526002815260056020820152908101919091526001600160a01b038316606082015290506108dc565b50604080516080810182526001815260026020820152908101919091526001600160a01b038316606082015290506108dc565b5f6001600160a01b03821661252257476108dc565b6108dc826120ca565b6040516001600160a01b038381166024830152604482018390526109bb91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612cd5565b610d808133612d41565b5f61259f8383611318565b61261c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556125d43390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016108dc565b505f6108dc565b61262b612d7a565b61264857604051631afcd79f60e31b815260040160405180910390fd5b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f825f015180519060200120836020015180519060200120846040015185606001516040516020016126c89594939291909485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b604051602081830303815290604052805190602001209050919050565b5f6126f08383611318565b1561261c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016108dc565b5f5b815181101561285a5760335f83838151811061276e5761276e6136b0565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205460ff161515900361285257600160335f8484815181106127b5576127b56136b0565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a4828281518110612825576128256136b0565b602002602001015160405161284991906001600160a01b0391909116815260200190565b60405180910390a15b600101612750565b5050565b5f5b815181101561285a5760335f83838151811061287e5761287e6136b0565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff161515600103612960575f60335f8484815181106128c3576128c36136b0565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd3828281518110612933576129336136b0565b602002602001015160405161295791906001600160a01b0391909116815260200190565b60405180910390a15b600101612860565b60978054905f612977836135e7565b90915550506098544311156126485743609855565b6040516001600160a01b038481166024830152838116604483015260648201839052610b9e9186918216906323b872dd90608401612558565b60607fe35cf8b8df51aa49768d4a7859037953b72f9188d7c60825dfd506ac7c8d430c825f01518360200151846040015185606001518660800151604051602001612a1596959493929190613707565b6040516020818303038152906040529050919050565b60015460405161190160f01b60208201526022810191909152604281018390525f90819060620160408051601f19818403018152919052805160209182012091506001908290612a7d90860186613750565b604080515f815260208181018084529490945260ff9092168282015291860135606082015290850135608082015260a0016020604051602081039080840390855afa158015612ace573d5f5f3e3d5ffd5b5050604051601f19015195945050505050565b5f848152609c60209081526040808320805460ff191660019081179091553384526099909252822001805491612b16836135e7565b9190505550612b23612968565b6001600160a01b038316612bdf5784471015612b525760405163128bd24d60e31b815260040160405180910390fd5b5f826001600160a01b0316866040515f6040518083038185875af1925050503d805f8114612b9b576040519150601f19603f3d011682016040523d82523d5f602084013e612ba0565b606091505b5050905080612bd957604051633ddff61360e21b81523060048201526001600160a01b03841660248201525f6044820152606401610976565b50612bf3565b612bf36001600160a01b038416838761252b565b604080513381526001600160a01b038481166020830152851681830152606081018790526080810186905263ffffffff831660a082015290517ffc4d59a46f6143e0496645b06688cceb577d2d0439ad39ac0f1eaf3143a3a48e9181900360c00190a15050505050565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006108dc565b60607f30df4329ee18debd99f937f6d70edc594d2957d5c194e77ab788df398c193af2825f01518360200151846040015185606001518660800151604051602001612a1596959493929190613707565b5f5f60205f8451602086015f885af180612cf4576040513d5f823e3d81fd5b50505f513d91508115612d0b578060011415612d18565b6001600160a01b0384163b155b15610b9e57604051635274afe760e01b81526001600160a01b0385166004820152602401610976565b612d4b8282611318565b61285a5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610976565b5f612d83612c5d565b54600160401b900460ff16919050565b5f60208284031215612da3575f5ffd5b81356001600160e01b031981168114612dba575f5ffd5b9392505050565b5f5f60408385031215612dd2575f5ffd5b50508035926020909101359150565b6001600160a01b0381168114610d80575f5ffd5b5f5f5f60608486031215612e07575f5ffd5b833592506020840135612e1981612de1565b91506040840135612e2981612de1565b809150509250925092565b5f60208284031215612e44575f5ffd5b5035919050565b5f5f60408385031215612e5c575f5ffd5b823591506020830135612e6e81612de1565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612eb557612eb5612e79565b604052919050565b5f82601f830112612ecc575f5ffd5b81356001600160401b03811115612ee557612ee5612e79565b612ef8601f8201601f1916602001612e8d565b818152846020838601011115612f0c575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612f39575f5ffd5b82356001600160401b03811115612f4e575f5ffd5b612f5a85828601612ebd565b92505060208301356001600160401b03811115612f75575f5ffd5b612f8185828601612ebd565b9150509250929050565b5f5f5f60608486031215612f9d575f5ffd5b8335612fa881612de1565b92506020840135612e1981612de1565b5f60208284031215612fc8575f5ffd5b8135612dba81612de1565b5f6001600160401b03821115612feb57612feb612e79565b5060051b60200190565b5f82601f830112613004575f5ffd5b813561301761301282612fd3565b612e8d565b8082825260208201915060208360051b860101925085831115613038575f5ffd5b602085015b8381101561305e57803561305081612de1565b83526020928301920161303d565b5095945050505050565b5f60208284031215613078575f5ffd5b81356001600160401b0381111561308d575f5ffd5b61309984828501612ff5565b949350505050565b5f5f83601f8401126130b1575f5ffd5b5081356001600160401b038111156130c7575f5ffd5b6020830191508360208285010111156130de575f5ffd5b9250929050565b5f606082840312156130f5575f5ffd5b50919050565b5f5f5f6080848603121561310d575f5ffd5b83356001600160401b03811115613122575f5ffd5b61312e868287016130a1565b9094509250613142905085602086016130e5565b90509250925092565b5f5f6040838503121561315c575f5ffd5b823561316781612de1565b91506020830135612e6e81612de1565b5f5f60408385031215613188575f5ffd5b82356001600160401b0381111561319d575f5ffd5b6131a985828601612ff5565b95602094909401359450505050565b5f5f5f5f5f60e086880312156131cc575f5ffd5b8535945060208601356131de81612de1565b935060408601356131ee81612de1565b92506060860135915061320487608088016130e5565b90509295509295909350565b5f5f60208385031215613221575f5ffd5b82356001600160401b03811115613236575f5ffd5b8301601f81018513613246575f5ffd5b80356001600160401b0381111561325b575f5ffd5b8560208260071b840101111561326f575f5ffd5b6020919091019590945092505050565b5f5f60408385031215613290575f5ffd5b823561329b81612de1565b9150602083013560038110612e6e575f5ffd5b5f5f5f5f608085870312156132c1575f5ffd5b84356132cc81612de1565b935060208501356132dc81612de1565b925060408501356001600160401b038111156132f6575f5ffd5b61330287828801612ebd565b92505060608501356001600160401b0381111561331d575f5ffd5b61332987828801612ff5565b91505092959194509250565b5f5f5f5f5f60c08688031215613349575f5ffd5b85359450602086013561335b81612de1565b935060408601356001600160401b03811115613375575f5ffd5b613381888289016130a1565b9094509250613204905087606088016130e5565b5f5f5f5f5f60e086880312156133a9575f5ffd5b853594506020860135935060408601356133c281612de1565b925060608601356133d281612de1565b915061320487608088016130e5565b5f602082840312156133f1575f5ffd5b81356001600160401b03811115613406575f5ffd5b8201601f81018413613416575f5ffd5b803561342461301282612fd3565b8082825260208201915060208360051b850101925086831115613445575f5ffd5b6020840193505b8284101561346757833582526020938401939091019061344c565b9695505050505050565b602080825282518282018190525f918401906040840190835b818110156134a857835183526020938401939092019160010161348a565b509095945050505050565b5f5f5f604084860312156134c5575f5ffd5b83356001600160401b038111156134da575f5ffd5b8401601f810186136134ea575f5ffd5b80356001600160401b038111156134ff575f5ffd5b8660208260061b8401011115613513575f5ffd5b602091820194509250840135612e2981612de1565b634e487b7160e01b5f52602160045260245ffd5b815160808201906004811061355357613553613528565b825260208381015190830152604080840151908301526060928301516001600160a01b0316929091019190915290565b634e487b7160e01b5f52601160045260245ffd5b818103818111156108dc576108dc613583565b803560ff811681146120c5575f5ffd5b6060810160ff6135c9846135aa565b16825260208381013590830152604092830135929091019190915290565b5f600182016135f8576135f8613583565b5060010190565b6001600160a01b03868116825285166020820152604081018490526080606082018190528101829052818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b6001600160a01b039586168152938516602085015291841660408401529092166060820152608081019190915260a00190565b5f60208284031215613692575f5ffd5b5051919050565b80820281158282048414176108dc576108dc613583565b634e487b7160e01b5f52603260045260245ffd5b5f63ffffffff821663ffffffff81036136df576136df613583565b60010192915050565b5f8261370257634e487b7160e01b5f52601260045260245ffd5b500490565b86815260c081016003871061371e5761371e613528565b602082019690965260408101949094526001600160a01b0392831660608501529116608083015260a090910152919050565b5f60208284031215613760575f5ffd5b612dba826135aa56fe9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f997667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929a2646970667358221220fba97ec702b057ee1a290d657495440e1199b62e09ece290409bc0a6ce57c9fa64736f6c634300081c0033";
3059
1570
  const isSuperArgs = (xs) => xs.length > 1;
3060
1571
  class Escrow__factory extends ethers_1.ContractFactory {
3061
1572
  constructor(...args) {