@across-protocol/contracts 3.0.17 → 3.0.19

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 (95) hide show
  1. package/README.md +2 -0
  2. package/artifacts/build-info/9cb910e5bb5dd730cd01af84a0fb0466.json +1 -0
  3. package/artifacts/contracts/Ink_SpokePool.sol/Ink_SpokePool.dbg.json +4 -0
  4. package/artifacts/contracts/Ink_SpokePool.sol/Ink_SpokePool.json +2316 -0
  5. package/contracts/Ink_SpokePool.sol +72 -0
  6. package/dist/deploy/consts.js +8 -2
  7. package/dist/deployments/deployments.json +7 -1
  8. package/dist/hardhat.config.js +17 -0
  9. package/dist/scripts/svm/addressToPublicKey.d.ts +1 -0
  10. package/dist/scripts/svm/addressToPublicKey.js +20 -0
  11. package/dist/scripts/svm/bridgeLiabilityToHubPool.d.ts +25 -0
  12. package/dist/scripts/svm/bridgeLiabilityToHubPool.js +221 -0
  13. package/dist/scripts/svm/closeRelayerPdas.js +8 -9
  14. package/dist/scripts/svm/enableRoute.js +7 -1
  15. package/dist/scripts/svm/executeRebalanceToHubPool.d.ts +29 -0
  16. package/dist/scripts/svm/executeRebalanceToHubPool.js +345 -0
  17. package/dist/scripts/svm/executeRebalanceToSpokePool.d.ts +1 -0
  18. package/dist/scripts/svm/executeRebalanceToSpokePool.js +240 -0
  19. package/dist/scripts/svm/fakeFillWithRandomDistribution.js +6 -7
  20. package/dist/scripts/svm/initialize.js +2 -2
  21. package/dist/scripts/svm/proposeRebalanceToHubPool.d.ts +27 -0
  22. package/dist/scripts/svm/proposeRebalanceToHubPool.js +117 -0
  23. package/dist/scripts/svm/proposeRebalanceToSpokePool.d.ts +1 -0
  24. package/dist/scripts/svm/proposeRebalanceToSpokePool.js +97 -0
  25. package/dist/scripts/svm/publicKeyToAddress.d.ts +1 -0
  26. package/dist/scripts/svm/publicKeyToAddress.js +20 -0
  27. package/dist/scripts/svm/queryDeposits.js +3 -2
  28. package/dist/scripts/svm/queryFills.js +12 -14
  29. package/dist/scripts/svm/queryRoute.js +7 -1
  30. package/dist/scripts/svm/queryState.js +1 -0
  31. package/dist/scripts/svm/remoteHubPoolPauseDeposits.d.ts +1 -0
  32. package/dist/scripts/svm/remoteHubPoolPauseDeposits.js +191 -0
  33. package/dist/scripts/svm/remoteHubPoolSetDepositRoute.js +16 -29
  34. package/dist/scripts/svm/remotePauseDeposits.js +21 -27
  35. package/dist/scripts/svm/simpleDeposit.js +7 -1
  36. package/dist/scripts/svm/simpleFakeRelayerRepayment.js +3 -3
  37. package/dist/scripts/svm/simpleFill.js +6 -6
  38. package/dist/scripts/svm/utils/constants.d.ts +4 -0
  39. package/dist/scripts/svm/utils/constants.js +8 -1
  40. package/dist/scripts/svm/utils/helpers.d.ts +33 -0
  41. package/dist/scripts/svm/utils/helpers.js +60 -1
  42. package/dist/scripts/svm/utils/poolRebalanceTree.d.ts +22 -0
  43. package/dist/scripts/svm/utils/poolRebalanceTree.js +20 -0
  44. package/dist/src/svm/coders.d.ts +37 -0
  45. package/dist/src/svm/coders.js +250 -0
  46. package/dist/src/svm/conversionUtils.d.ts +22 -0
  47. package/dist/src/svm/conversionUtils.js +73 -0
  48. package/dist/src/svm/index.d.ts +6 -0
  49. package/dist/src/svm/index.js +22 -0
  50. package/dist/src/svm/instructionParamsUtils.d.ts +31 -0
  51. package/dist/src/svm/instructionParamsUtils.js +128 -0
  52. package/dist/src/svm/relayHashUtils.d.ts +30 -0
  53. package/dist/src/svm/relayHashUtils.js +209 -0
  54. package/dist/src/svm/solanaProgramUtils.d.ts +38 -0
  55. package/dist/src/svm/solanaProgramUtils.js +147 -0
  56. package/dist/src/svm/transactionUtils.d.ts +8 -0
  57. package/dist/src/svm/transactionUtils.js +55 -0
  58. package/dist/src/types/svm.d.ts +118 -0
  59. package/dist/src/types/svm.js +2 -0
  60. package/dist/target/types/svm_spoke.d.ts +47 -42
  61. package/dist/tasks/enableL1TokenAcrossEcosystem.js +3 -33
  62. package/dist/tasks/types.d.ts +2 -0
  63. package/dist/tasks/types.js +2 -0
  64. package/dist/tasks/utils.d.ts +12 -0
  65. package/dist/tasks/utils.js +34 -0
  66. package/dist/test/svm/MulticallHandler.js +2 -2
  67. package/dist/test/svm/SvmSpoke.Bundle.js +59 -60
  68. package/dist/test/svm/SvmSpoke.Deposit.js +23 -31
  69. package/dist/test/svm/SvmSpoke.Fill.AcrossPlus.js +16 -18
  70. package/dist/test/svm/SvmSpoke.Fill.js +38 -40
  71. package/dist/test/svm/SvmSpoke.HandleReceiveMessage.js +2 -2
  72. package/dist/test/svm/SvmSpoke.Ownership.js +11 -17
  73. package/dist/test/svm/SvmSpoke.RefundClaims.js +12 -11
  74. package/dist/test/svm/SvmSpoke.Routes.js +11 -7
  75. package/dist/test/svm/SvmSpoke.SlowFill.AcrossPlus.js +72 -16
  76. package/dist/test/svm/SvmSpoke.SlowFill.js +33 -28
  77. package/dist/test/svm/SvmSpoke.TokenBridge.js +15 -17
  78. package/dist/test/svm/SvmSpoke.common.d.ts +1 -49
  79. package/dist/test/svm/SvmSpoke.common.js +6 -5
  80. package/dist/test/svm/cctpHelpers.js +2 -2
  81. package/dist/test/svm/utils.d.ts +5 -67
  82. package/dist/test/svm/utils.js +10 -220
  83. package/dist/typechain/contracts/Ink_SpokePool.d.ts +1251 -0
  84. package/dist/typechain/contracts/Ink_SpokePool.js +2 -0
  85. package/dist/typechain/contracts/index.d.ts +1 -0
  86. package/dist/typechain/factories/contracts/Ink_SpokePool__factory.d.ts +1833 -0
  87. package/dist/typechain/factories/contracts/Ink_SpokePool__factory.js +2347 -0
  88. package/dist/typechain/factories/contracts/index.d.ts +1 -0
  89. package/dist/typechain/factories/contracts/index.js +3 -1
  90. package/dist/typechain/hardhat.d.ts +9 -0
  91. package/dist/typechain/index.d.ts +2 -0
  92. package/dist/typechain/index.js +5 -3
  93. package/package.json +2 -2
  94. package/dist/src/SvmUtils.d.ts +0 -50
  95. package/dist/src/SvmUtils.js +0 -415
@@ -0,0 +1,2316 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Ink_SpokePool",
4
+ "sourceName": "contracts/Ink_SpokePool.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_wrappedNativeTokenAddress",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint32",
15
+ "name": "_depositQuoteTimeBuffer",
16
+ "type": "uint32"
17
+ },
18
+ {
19
+ "internalType": "uint32",
20
+ "name": "_fillDeadlineBuffer",
21
+ "type": "uint32"
22
+ },
23
+ {
24
+ "internalType": "contract IERC20",
25
+ "name": "_l2Usdc",
26
+ "type": "address"
27
+ },
28
+ {
29
+ "internalType": "contract ITokenMessenger",
30
+ "name": "_cctpTokenMessenger",
31
+ "type": "address"
32
+ }
33
+ ],
34
+ "stateMutability": "nonpayable",
35
+ "type": "constructor"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "ClaimedMerkleLeaf",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "inputs": [],
44
+ "name": "DepositsArePaused",
45
+ "type": "error"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "DisabledRoute",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "ExpiredFillDeadline",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "FillsArePaused",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [],
64
+ "name": "InvalidChainId",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [],
69
+ "name": "InvalidCrossDomainAdmin",
70
+ "type": "error"
71
+ },
72
+ {
73
+ "inputs": [],
74
+ "name": "InvalidDepositorSignature",
75
+ "type": "error"
76
+ },
77
+ {
78
+ "inputs": [],
79
+ "name": "InvalidExclusiveRelayer",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [],
84
+ "name": "InvalidFillDeadline",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "InvalidMerkleLeaf",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [],
94
+ "name": "InvalidMerkleProof",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [],
99
+ "name": "InvalidPayoutAdjustmentPct",
100
+ "type": "error"
101
+ },
102
+ {
103
+ "inputs": [],
104
+ "name": "InvalidQuoteTimestamp",
105
+ "type": "error"
106
+ },
107
+ {
108
+ "inputs": [],
109
+ "name": "InvalidRelayerFeePct",
110
+ "type": "error"
111
+ },
112
+ {
113
+ "inputs": [],
114
+ "name": "InvalidSlowFillRequest",
115
+ "type": "error"
116
+ },
117
+ {
118
+ "inputs": [],
119
+ "name": "InvalidWithdrawalRecipient",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [
124
+ {
125
+ "internalType": "bytes",
126
+ "name": "data",
127
+ "type": "bytes"
128
+ }
129
+ ],
130
+ "name": "LowLevelCallFailed",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "MaxTransferSizeExceeded",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "MsgValueDoesNotMatchInputAmount",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [],
145
+ "name": "NoSlowFillsInExclusivityWindow",
146
+ "type": "error"
147
+ },
148
+ {
149
+ "inputs": [],
150
+ "name": "NotCrossChainCall",
151
+ "type": "error"
152
+ },
153
+ {
154
+ "inputs": [],
155
+ "name": "NotCrossDomainAdmin",
156
+ "type": "error"
157
+ },
158
+ {
159
+ "inputs": [],
160
+ "name": "NotEOA",
161
+ "type": "error"
162
+ },
163
+ {
164
+ "inputs": [],
165
+ "name": "NotExclusiveRelayer",
166
+ "type": "error"
167
+ },
168
+ {
169
+ "inputs": [],
170
+ "name": "RelayFilled",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [],
175
+ "name": "WrongERC7683OrderId",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "anonymous": false,
180
+ "inputs": [
181
+ {
182
+ "indexed": false,
183
+ "internalType": "address",
184
+ "name": "previousAdmin",
185
+ "type": "address"
186
+ },
187
+ {
188
+ "indexed": false,
189
+ "internalType": "address",
190
+ "name": "newAdmin",
191
+ "type": "address"
192
+ }
193
+ ],
194
+ "name": "AdminChanged",
195
+ "type": "event"
196
+ },
197
+ {
198
+ "anonymous": false,
199
+ "inputs": [
200
+ {
201
+ "indexed": true,
202
+ "internalType": "address",
203
+ "name": "beacon",
204
+ "type": "address"
205
+ }
206
+ ],
207
+ "name": "BeaconUpgraded",
208
+ "type": "event"
209
+ },
210
+ {
211
+ "anonymous": false,
212
+ "inputs": [
213
+ {
214
+ "indexed": true,
215
+ "internalType": "uint256",
216
+ "name": "rootBundleId",
217
+ "type": "uint256"
218
+ }
219
+ ],
220
+ "name": "EmergencyDeleteRootBundle",
221
+ "type": "event"
222
+ },
223
+ {
224
+ "anonymous": false,
225
+ "inputs": [
226
+ {
227
+ "indexed": true,
228
+ "internalType": "address",
229
+ "name": "originToken",
230
+ "type": "address"
231
+ },
232
+ {
233
+ "indexed": true,
234
+ "internalType": "uint256",
235
+ "name": "destinationChainId",
236
+ "type": "uint256"
237
+ },
238
+ {
239
+ "indexed": false,
240
+ "internalType": "bool",
241
+ "name": "enabled",
242
+ "type": "bool"
243
+ }
244
+ ],
245
+ "name": "EnabledDepositRoute",
246
+ "type": "event"
247
+ },
248
+ {
249
+ "anonymous": false,
250
+ "inputs": [
251
+ {
252
+ "indexed": false,
253
+ "internalType": "uint256",
254
+ "name": "amountToReturn",
255
+ "type": "uint256"
256
+ },
257
+ {
258
+ "indexed": true,
259
+ "internalType": "uint256",
260
+ "name": "chainId",
261
+ "type": "uint256"
262
+ },
263
+ {
264
+ "indexed": false,
265
+ "internalType": "uint256[]",
266
+ "name": "refundAmounts",
267
+ "type": "uint256[]"
268
+ },
269
+ {
270
+ "indexed": true,
271
+ "internalType": "uint32",
272
+ "name": "rootBundleId",
273
+ "type": "uint32"
274
+ },
275
+ {
276
+ "indexed": true,
277
+ "internalType": "uint32",
278
+ "name": "leafId",
279
+ "type": "uint32"
280
+ },
281
+ {
282
+ "indexed": false,
283
+ "internalType": "address",
284
+ "name": "l2TokenAddress",
285
+ "type": "address"
286
+ },
287
+ {
288
+ "indexed": false,
289
+ "internalType": "address[]",
290
+ "name": "refundAddresses",
291
+ "type": "address[]"
292
+ },
293
+ {
294
+ "indexed": false,
295
+ "internalType": "address",
296
+ "name": "caller",
297
+ "type": "address"
298
+ }
299
+ ],
300
+ "name": "ExecutedRelayerRefundRoot",
301
+ "type": "event"
302
+ },
303
+ {
304
+ "anonymous": false,
305
+ "inputs": [
306
+ {
307
+ "indexed": false,
308
+ "internalType": "address",
309
+ "name": "inputToken",
310
+ "type": "address"
311
+ },
312
+ {
313
+ "indexed": false,
314
+ "internalType": "address",
315
+ "name": "outputToken",
316
+ "type": "address"
317
+ },
318
+ {
319
+ "indexed": false,
320
+ "internalType": "uint256",
321
+ "name": "inputAmount",
322
+ "type": "uint256"
323
+ },
324
+ {
325
+ "indexed": false,
326
+ "internalType": "uint256",
327
+ "name": "outputAmount",
328
+ "type": "uint256"
329
+ },
330
+ {
331
+ "indexed": false,
332
+ "internalType": "uint256",
333
+ "name": "repaymentChainId",
334
+ "type": "uint256"
335
+ },
336
+ {
337
+ "indexed": true,
338
+ "internalType": "uint256",
339
+ "name": "originChainId",
340
+ "type": "uint256"
341
+ },
342
+ {
343
+ "indexed": true,
344
+ "internalType": "uint32",
345
+ "name": "depositId",
346
+ "type": "uint32"
347
+ },
348
+ {
349
+ "indexed": false,
350
+ "internalType": "uint32",
351
+ "name": "fillDeadline",
352
+ "type": "uint32"
353
+ },
354
+ {
355
+ "indexed": false,
356
+ "internalType": "uint32",
357
+ "name": "exclusivityDeadline",
358
+ "type": "uint32"
359
+ },
360
+ {
361
+ "indexed": false,
362
+ "internalType": "address",
363
+ "name": "exclusiveRelayer",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "indexed": true,
368
+ "internalType": "address",
369
+ "name": "relayer",
370
+ "type": "address"
371
+ },
372
+ {
373
+ "indexed": false,
374
+ "internalType": "address",
375
+ "name": "depositor",
376
+ "type": "address"
377
+ },
378
+ {
379
+ "indexed": false,
380
+ "internalType": "address",
381
+ "name": "recipient",
382
+ "type": "address"
383
+ },
384
+ {
385
+ "indexed": false,
386
+ "internalType": "bytes",
387
+ "name": "message",
388
+ "type": "bytes"
389
+ },
390
+ {
391
+ "components": [
392
+ {
393
+ "internalType": "address",
394
+ "name": "updatedRecipient",
395
+ "type": "address"
396
+ },
397
+ {
398
+ "internalType": "bytes",
399
+ "name": "updatedMessage",
400
+ "type": "bytes"
401
+ },
402
+ {
403
+ "internalType": "uint256",
404
+ "name": "updatedOutputAmount",
405
+ "type": "uint256"
406
+ },
407
+ {
408
+ "internalType": "enum V3SpokePoolInterface.FillType",
409
+ "name": "fillType",
410
+ "type": "uint8"
411
+ }
412
+ ],
413
+ "indexed": false,
414
+ "internalType": "struct V3SpokePoolInterface.V3RelayExecutionEventInfo",
415
+ "name": "relayExecutionInfo",
416
+ "type": "tuple"
417
+ }
418
+ ],
419
+ "name": "FilledV3Relay",
420
+ "type": "event"
421
+ },
422
+ {
423
+ "anonymous": false,
424
+ "inputs": [
425
+ {
426
+ "indexed": false,
427
+ "internalType": "uint8",
428
+ "name": "version",
429
+ "type": "uint8"
430
+ }
431
+ ],
432
+ "name": "Initialized",
433
+ "type": "event"
434
+ },
435
+ {
436
+ "anonymous": false,
437
+ "inputs": [
438
+ {
439
+ "indexed": false,
440
+ "internalType": "bool",
441
+ "name": "isPaused",
442
+ "type": "bool"
443
+ }
444
+ ],
445
+ "name": "PausedDeposits",
446
+ "type": "event"
447
+ },
448
+ {
449
+ "anonymous": false,
450
+ "inputs": [
451
+ {
452
+ "indexed": false,
453
+ "internalType": "bool",
454
+ "name": "isPaused",
455
+ "type": "bool"
456
+ }
457
+ ],
458
+ "name": "PausedFills",
459
+ "type": "event"
460
+ },
461
+ {
462
+ "anonymous": false,
463
+ "inputs": [
464
+ {
465
+ "indexed": true,
466
+ "internalType": "uint32",
467
+ "name": "rootBundleId",
468
+ "type": "uint32"
469
+ },
470
+ {
471
+ "indexed": true,
472
+ "internalType": "bytes32",
473
+ "name": "relayerRefundRoot",
474
+ "type": "bytes32"
475
+ },
476
+ {
477
+ "indexed": true,
478
+ "internalType": "bytes32",
479
+ "name": "slowRelayRoot",
480
+ "type": "bytes32"
481
+ }
482
+ ],
483
+ "name": "RelayedRootBundle",
484
+ "type": "event"
485
+ },
486
+ {
487
+ "anonymous": false,
488
+ "inputs": [
489
+ {
490
+ "indexed": false,
491
+ "internalType": "uint256",
492
+ "name": "updatedOutputAmount",
493
+ "type": "uint256"
494
+ },
495
+ {
496
+ "indexed": true,
497
+ "internalType": "uint32",
498
+ "name": "depositId",
499
+ "type": "uint32"
500
+ },
501
+ {
502
+ "indexed": true,
503
+ "internalType": "address",
504
+ "name": "depositor",
505
+ "type": "address"
506
+ },
507
+ {
508
+ "indexed": false,
509
+ "internalType": "address",
510
+ "name": "updatedRecipient",
511
+ "type": "address"
512
+ },
513
+ {
514
+ "indexed": false,
515
+ "internalType": "bytes",
516
+ "name": "updatedMessage",
517
+ "type": "bytes"
518
+ },
519
+ {
520
+ "indexed": false,
521
+ "internalType": "bytes",
522
+ "name": "depositorSignature",
523
+ "type": "bytes"
524
+ }
525
+ ],
526
+ "name": "RequestedSpeedUpV3Deposit",
527
+ "type": "event"
528
+ },
529
+ {
530
+ "anonymous": false,
531
+ "inputs": [
532
+ {
533
+ "indexed": false,
534
+ "internalType": "address",
535
+ "name": "inputToken",
536
+ "type": "address"
537
+ },
538
+ {
539
+ "indexed": false,
540
+ "internalType": "address",
541
+ "name": "outputToken",
542
+ "type": "address"
543
+ },
544
+ {
545
+ "indexed": false,
546
+ "internalType": "uint256",
547
+ "name": "inputAmount",
548
+ "type": "uint256"
549
+ },
550
+ {
551
+ "indexed": false,
552
+ "internalType": "uint256",
553
+ "name": "outputAmount",
554
+ "type": "uint256"
555
+ },
556
+ {
557
+ "indexed": true,
558
+ "internalType": "uint256",
559
+ "name": "originChainId",
560
+ "type": "uint256"
561
+ },
562
+ {
563
+ "indexed": true,
564
+ "internalType": "uint32",
565
+ "name": "depositId",
566
+ "type": "uint32"
567
+ },
568
+ {
569
+ "indexed": false,
570
+ "internalType": "uint32",
571
+ "name": "fillDeadline",
572
+ "type": "uint32"
573
+ },
574
+ {
575
+ "indexed": false,
576
+ "internalType": "uint32",
577
+ "name": "exclusivityDeadline",
578
+ "type": "uint32"
579
+ },
580
+ {
581
+ "indexed": false,
582
+ "internalType": "address",
583
+ "name": "exclusiveRelayer",
584
+ "type": "address"
585
+ },
586
+ {
587
+ "indexed": false,
588
+ "internalType": "address",
589
+ "name": "depositor",
590
+ "type": "address"
591
+ },
592
+ {
593
+ "indexed": false,
594
+ "internalType": "address",
595
+ "name": "recipient",
596
+ "type": "address"
597
+ },
598
+ {
599
+ "indexed": false,
600
+ "internalType": "bytes",
601
+ "name": "message",
602
+ "type": "bytes"
603
+ }
604
+ ],
605
+ "name": "RequestedV3SlowFill",
606
+ "type": "event"
607
+ },
608
+ {
609
+ "anonymous": false,
610
+ "inputs": [
611
+ {
612
+ "indexed": true,
613
+ "internalType": "uint32",
614
+ "name": "newL1Gas",
615
+ "type": "uint32"
616
+ }
617
+ ],
618
+ "name": "SetL1Gas",
619
+ "type": "event"
620
+ },
621
+ {
622
+ "anonymous": false,
623
+ "inputs": [
624
+ {
625
+ "indexed": true,
626
+ "internalType": "address",
627
+ "name": "l2Token",
628
+ "type": "address"
629
+ },
630
+ {
631
+ "indexed": true,
632
+ "internalType": "address",
633
+ "name": "tokenBridge",
634
+ "type": "address"
635
+ }
636
+ ],
637
+ "name": "SetL2TokenBridge",
638
+ "type": "event"
639
+ },
640
+ {
641
+ "anonymous": false,
642
+ "inputs": [
643
+ {
644
+ "indexed": true,
645
+ "internalType": "address",
646
+ "name": "l2Token",
647
+ "type": "address"
648
+ },
649
+ {
650
+ "indexed": true,
651
+ "internalType": "address",
652
+ "name": "l1Token",
653
+ "type": "address"
654
+ }
655
+ ],
656
+ "name": "SetRemoteL1Token",
657
+ "type": "event"
658
+ },
659
+ {
660
+ "anonymous": false,
661
+ "inputs": [
662
+ {
663
+ "indexed": true,
664
+ "internalType": "address",
665
+ "name": "newWithdrawalRecipient",
666
+ "type": "address"
667
+ }
668
+ ],
669
+ "name": "SetWithdrawalRecipient",
670
+ "type": "event"
671
+ },
672
+ {
673
+ "anonymous": false,
674
+ "inputs": [
675
+ {
676
+ "indexed": true,
677
+ "internalType": "address",
678
+ "name": "newAdmin",
679
+ "type": "address"
680
+ }
681
+ ],
682
+ "name": "SetXDomainAdmin",
683
+ "type": "event"
684
+ },
685
+ {
686
+ "anonymous": false,
687
+ "inputs": [
688
+ {
689
+ "indexed": false,
690
+ "internalType": "uint256",
691
+ "name": "amountToReturn",
692
+ "type": "uint256"
693
+ },
694
+ {
695
+ "indexed": true,
696
+ "internalType": "uint256",
697
+ "name": "chainId",
698
+ "type": "uint256"
699
+ },
700
+ {
701
+ "indexed": true,
702
+ "internalType": "uint32",
703
+ "name": "leafId",
704
+ "type": "uint32"
705
+ },
706
+ {
707
+ "indexed": true,
708
+ "internalType": "address",
709
+ "name": "l2TokenAddress",
710
+ "type": "address"
711
+ },
712
+ {
713
+ "indexed": false,
714
+ "internalType": "address",
715
+ "name": "caller",
716
+ "type": "address"
717
+ }
718
+ ],
719
+ "name": "TokensBridged",
720
+ "type": "event"
721
+ },
722
+ {
723
+ "anonymous": false,
724
+ "inputs": [
725
+ {
726
+ "indexed": true,
727
+ "internalType": "address",
728
+ "name": "implementation",
729
+ "type": "address"
730
+ }
731
+ ],
732
+ "name": "Upgraded",
733
+ "type": "event"
734
+ },
735
+ {
736
+ "anonymous": false,
737
+ "inputs": [
738
+ {
739
+ "indexed": false,
740
+ "internalType": "address",
741
+ "name": "inputToken",
742
+ "type": "address"
743
+ },
744
+ {
745
+ "indexed": false,
746
+ "internalType": "address",
747
+ "name": "outputToken",
748
+ "type": "address"
749
+ },
750
+ {
751
+ "indexed": false,
752
+ "internalType": "uint256",
753
+ "name": "inputAmount",
754
+ "type": "uint256"
755
+ },
756
+ {
757
+ "indexed": false,
758
+ "internalType": "uint256",
759
+ "name": "outputAmount",
760
+ "type": "uint256"
761
+ },
762
+ {
763
+ "indexed": true,
764
+ "internalType": "uint256",
765
+ "name": "destinationChainId",
766
+ "type": "uint256"
767
+ },
768
+ {
769
+ "indexed": true,
770
+ "internalType": "uint32",
771
+ "name": "depositId",
772
+ "type": "uint32"
773
+ },
774
+ {
775
+ "indexed": false,
776
+ "internalType": "uint32",
777
+ "name": "quoteTimestamp",
778
+ "type": "uint32"
779
+ },
780
+ {
781
+ "indexed": false,
782
+ "internalType": "uint32",
783
+ "name": "fillDeadline",
784
+ "type": "uint32"
785
+ },
786
+ {
787
+ "indexed": false,
788
+ "internalType": "uint32",
789
+ "name": "exclusivityDeadline",
790
+ "type": "uint32"
791
+ },
792
+ {
793
+ "indexed": true,
794
+ "internalType": "address",
795
+ "name": "depositor",
796
+ "type": "address"
797
+ },
798
+ {
799
+ "indexed": false,
800
+ "internalType": "address",
801
+ "name": "recipient",
802
+ "type": "address"
803
+ },
804
+ {
805
+ "indexed": false,
806
+ "internalType": "address",
807
+ "name": "exclusiveRelayer",
808
+ "type": "address"
809
+ },
810
+ {
811
+ "indexed": false,
812
+ "internalType": "bytes",
813
+ "name": "message",
814
+ "type": "bytes"
815
+ }
816
+ ],
817
+ "name": "V3FundsDeposited",
818
+ "type": "event"
819
+ },
820
+ {
821
+ "inputs": [],
822
+ "name": "EMPTY_RELAYER",
823
+ "outputs": [
824
+ {
825
+ "internalType": "address",
826
+ "name": "",
827
+ "type": "address"
828
+ }
829
+ ],
830
+ "stateMutability": "view",
831
+ "type": "function"
832
+ },
833
+ {
834
+ "inputs": [],
835
+ "name": "EMPTY_REPAYMENT_CHAIN_ID",
836
+ "outputs": [
837
+ {
838
+ "internalType": "uint256",
839
+ "name": "",
840
+ "type": "uint256"
841
+ }
842
+ ],
843
+ "stateMutability": "view",
844
+ "type": "function"
845
+ },
846
+ {
847
+ "inputs": [],
848
+ "name": "INFINITE_FILL_DEADLINE",
849
+ "outputs": [
850
+ {
851
+ "internalType": "uint32",
852
+ "name": "",
853
+ "type": "uint32"
854
+ }
855
+ ],
856
+ "stateMutability": "view",
857
+ "type": "function"
858
+ },
859
+ {
860
+ "inputs": [],
861
+ "name": "MAX_EXCLUSIVITY_PERIOD_SECONDS",
862
+ "outputs": [
863
+ {
864
+ "internalType": "uint32",
865
+ "name": "",
866
+ "type": "uint32"
867
+ }
868
+ ],
869
+ "stateMutability": "view",
870
+ "type": "function"
871
+ },
872
+ {
873
+ "inputs": [],
874
+ "name": "MAX_TRANSFER_SIZE",
875
+ "outputs": [
876
+ {
877
+ "internalType": "uint256",
878
+ "name": "",
879
+ "type": "uint256"
880
+ }
881
+ ],
882
+ "stateMutability": "view",
883
+ "type": "function"
884
+ },
885
+ {
886
+ "inputs": [],
887
+ "name": "MESSENGER",
888
+ "outputs": [
889
+ {
890
+ "internalType": "address",
891
+ "name": "",
892
+ "type": "address"
893
+ }
894
+ ],
895
+ "stateMutability": "view",
896
+ "type": "function"
897
+ },
898
+ {
899
+ "inputs": [],
900
+ "name": "UPDATE_V3_DEPOSIT_DETAILS_HASH",
901
+ "outputs": [
902
+ {
903
+ "internalType": "bytes32",
904
+ "name": "",
905
+ "type": "bytes32"
906
+ }
907
+ ],
908
+ "stateMutability": "view",
909
+ "type": "function"
910
+ },
911
+ {
912
+ "inputs": [
913
+ {
914
+ "internalType": "uint32",
915
+ "name": "_initialDepositId",
916
+ "type": "uint32"
917
+ },
918
+ {
919
+ "internalType": "address",
920
+ "name": "_crossDomainAdmin",
921
+ "type": "address"
922
+ },
923
+ {
924
+ "internalType": "address",
925
+ "name": "_withdrawalRecipient",
926
+ "type": "address"
927
+ },
928
+ {
929
+ "internalType": "address",
930
+ "name": "_l2Eth",
931
+ "type": "address"
932
+ }
933
+ ],
934
+ "name": "__OvmSpokePool_init",
935
+ "outputs": [],
936
+ "stateMutability": "nonpayable",
937
+ "type": "function"
938
+ },
939
+ {
940
+ "inputs": [
941
+ {
942
+ "internalType": "uint32",
943
+ "name": "_initialDepositId",
944
+ "type": "uint32"
945
+ },
946
+ {
947
+ "internalType": "address",
948
+ "name": "_crossDomainAdmin",
949
+ "type": "address"
950
+ },
951
+ {
952
+ "internalType": "address",
953
+ "name": "_withdrawalRecipient",
954
+ "type": "address"
955
+ }
956
+ ],
957
+ "name": "__SpokePool_init",
958
+ "outputs": [],
959
+ "stateMutability": "nonpayable",
960
+ "type": "function"
961
+ },
962
+ {
963
+ "inputs": [],
964
+ "name": "cctpTokenMessenger",
965
+ "outputs": [
966
+ {
967
+ "internalType": "contract ITokenMessenger",
968
+ "name": "",
969
+ "type": "address"
970
+ }
971
+ ],
972
+ "stateMutability": "view",
973
+ "type": "function"
974
+ },
975
+ {
976
+ "inputs": [],
977
+ "name": "chainId",
978
+ "outputs": [
979
+ {
980
+ "internalType": "uint256",
981
+ "name": "",
982
+ "type": "uint256"
983
+ }
984
+ ],
985
+ "stateMutability": "view",
986
+ "type": "function"
987
+ },
988
+ {
989
+ "inputs": [],
990
+ "name": "crossDomainAdmin",
991
+ "outputs": [
992
+ {
993
+ "internalType": "address",
994
+ "name": "",
995
+ "type": "address"
996
+ }
997
+ ],
998
+ "stateMutability": "view",
999
+ "type": "function"
1000
+ },
1001
+ {
1002
+ "inputs": [
1003
+ {
1004
+ "internalType": "address",
1005
+ "name": "recipient",
1006
+ "type": "address"
1007
+ },
1008
+ {
1009
+ "internalType": "address",
1010
+ "name": "originToken",
1011
+ "type": "address"
1012
+ },
1013
+ {
1014
+ "internalType": "uint256",
1015
+ "name": "amount",
1016
+ "type": "uint256"
1017
+ },
1018
+ {
1019
+ "internalType": "uint256",
1020
+ "name": "destinationChainId",
1021
+ "type": "uint256"
1022
+ },
1023
+ {
1024
+ "internalType": "int64",
1025
+ "name": "relayerFeePct",
1026
+ "type": "int64"
1027
+ },
1028
+ {
1029
+ "internalType": "uint32",
1030
+ "name": "quoteTimestamp",
1031
+ "type": "uint32"
1032
+ },
1033
+ {
1034
+ "internalType": "bytes",
1035
+ "name": "message",
1036
+ "type": "bytes"
1037
+ },
1038
+ {
1039
+ "internalType": "uint256",
1040
+ "name": "",
1041
+ "type": "uint256"
1042
+ }
1043
+ ],
1044
+ "name": "deposit",
1045
+ "outputs": [],
1046
+ "stateMutability": "payable",
1047
+ "type": "function"
1048
+ },
1049
+ {
1050
+ "inputs": [
1051
+ {
1052
+ "internalType": "address",
1053
+ "name": "depositor",
1054
+ "type": "address"
1055
+ },
1056
+ {
1057
+ "internalType": "address",
1058
+ "name": "recipient",
1059
+ "type": "address"
1060
+ },
1061
+ {
1062
+ "internalType": "address",
1063
+ "name": "inputToken",
1064
+ "type": "address"
1065
+ },
1066
+ {
1067
+ "internalType": "address",
1068
+ "name": "outputToken",
1069
+ "type": "address"
1070
+ },
1071
+ {
1072
+ "internalType": "uint256",
1073
+ "name": "inputAmount",
1074
+ "type": "uint256"
1075
+ },
1076
+ {
1077
+ "internalType": "uint256",
1078
+ "name": "outputAmount",
1079
+ "type": "uint256"
1080
+ },
1081
+ {
1082
+ "internalType": "uint256",
1083
+ "name": "destinationChainId",
1084
+ "type": "uint256"
1085
+ },
1086
+ {
1087
+ "internalType": "address",
1088
+ "name": "exclusiveRelayer",
1089
+ "type": "address"
1090
+ },
1091
+ {
1092
+ "internalType": "uint32",
1093
+ "name": "quoteTimestamp",
1094
+ "type": "uint32"
1095
+ },
1096
+ {
1097
+ "internalType": "uint32",
1098
+ "name": "fillDeadline",
1099
+ "type": "uint32"
1100
+ },
1101
+ {
1102
+ "internalType": "uint32",
1103
+ "name": "exclusivityPeriod",
1104
+ "type": "uint32"
1105
+ },
1106
+ {
1107
+ "internalType": "bytes",
1108
+ "name": "message",
1109
+ "type": "bytes"
1110
+ }
1111
+ ],
1112
+ "name": "depositExclusive",
1113
+ "outputs": [],
1114
+ "stateMutability": "payable",
1115
+ "type": "function"
1116
+ },
1117
+ {
1118
+ "inputs": [
1119
+ {
1120
+ "internalType": "address",
1121
+ "name": "depositor",
1122
+ "type": "address"
1123
+ },
1124
+ {
1125
+ "internalType": "address",
1126
+ "name": "recipient",
1127
+ "type": "address"
1128
+ },
1129
+ {
1130
+ "internalType": "address",
1131
+ "name": "originToken",
1132
+ "type": "address"
1133
+ },
1134
+ {
1135
+ "internalType": "uint256",
1136
+ "name": "amount",
1137
+ "type": "uint256"
1138
+ },
1139
+ {
1140
+ "internalType": "uint256",
1141
+ "name": "destinationChainId",
1142
+ "type": "uint256"
1143
+ },
1144
+ {
1145
+ "internalType": "int64",
1146
+ "name": "relayerFeePct",
1147
+ "type": "int64"
1148
+ },
1149
+ {
1150
+ "internalType": "uint32",
1151
+ "name": "quoteTimestamp",
1152
+ "type": "uint32"
1153
+ },
1154
+ {
1155
+ "internalType": "bytes",
1156
+ "name": "message",
1157
+ "type": "bytes"
1158
+ },
1159
+ {
1160
+ "internalType": "uint256",
1161
+ "name": "",
1162
+ "type": "uint256"
1163
+ }
1164
+ ],
1165
+ "name": "depositFor",
1166
+ "outputs": [],
1167
+ "stateMutability": "payable",
1168
+ "type": "function"
1169
+ },
1170
+ {
1171
+ "inputs": [],
1172
+ "name": "depositQuoteTimeBuffer",
1173
+ "outputs": [
1174
+ {
1175
+ "internalType": "uint32",
1176
+ "name": "",
1177
+ "type": "uint32"
1178
+ }
1179
+ ],
1180
+ "stateMutability": "view",
1181
+ "type": "function"
1182
+ },
1183
+ {
1184
+ "inputs": [
1185
+ {
1186
+ "internalType": "address",
1187
+ "name": "depositor",
1188
+ "type": "address"
1189
+ },
1190
+ {
1191
+ "internalType": "address",
1192
+ "name": "recipient",
1193
+ "type": "address"
1194
+ },
1195
+ {
1196
+ "internalType": "address",
1197
+ "name": "inputToken",
1198
+ "type": "address"
1199
+ },
1200
+ {
1201
+ "internalType": "address",
1202
+ "name": "outputToken",
1203
+ "type": "address"
1204
+ },
1205
+ {
1206
+ "internalType": "uint256",
1207
+ "name": "inputAmount",
1208
+ "type": "uint256"
1209
+ },
1210
+ {
1211
+ "internalType": "uint256",
1212
+ "name": "outputAmount",
1213
+ "type": "uint256"
1214
+ },
1215
+ {
1216
+ "internalType": "uint256",
1217
+ "name": "destinationChainId",
1218
+ "type": "uint256"
1219
+ },
1220
+ {
1221
+ "internalType": "address",
1222
+ "name": "exclusiveRelayer",
1223
+ "type": "address"
1224
+ },
1225
+ {
1226
+ "internalType": "uint32",
1227
+ "name": "quoteTimestamp",
1228
+ "type": "uint32"
1229
+ },
1230
+ {
1231
+ "internalType": "uint32",
1232
+ "name": "fillDeadline",
1233
+ "type": "uint32"
1234
+ },
1235
+ {
1236
+ "internalType": "uint32",
1237
+ "name": "exclusivityParameter",
1238
+ "type": "uint32"
1239
+ },
1240
+ {
1241
+ "internalType": "bytes",
1242
+ "name": "message",
1243
+ "type": "bytes"
1244
+ }
1245
+ ],
1246
+ "name": "depositV3",
1247
+ "outputs": [],
1248
+ "stateMutability": "payable",
1249
+ "type": "function"
1250
+ },
1251
+ {
1252
+ "inputs": [
1253
+ {
1254
+ "internalType": "address",
1255
+ "name": "depositor",
1256
+ "type": "address"
1257
+ },
1258
+ {
1259
+ "internalType": "address",
1260
+ "name": "recipient",
1261
+ "type": "address"
1262
+ },
1263
+ {
1264
+ "internalType": "address",
1265
+ "name": "inputToken",
1266
+ "type": "address"
1267
+ },
1268
+ {
1269
+ "internalType": "address",
1270
+ "name": "outputToken",
1271
+ "type": "address"
1272
+ },
1273
+ {
1274
+ "internalType": "uint256",
1275
+ "name": "inputAmount",
1276
+ "type": "uint256"
1277
+ },
1278
+ {
1279
+ "internalType": "uint256",
1280
+ "name": "outputAmount",
1281
+ "type": "uint256"
1282
+ },
1283
+ {
1284
+ "internalType": "uint256",
1285
+ "name": "destinationChainId",
1286
+ "type": "uint256"
1287
+ },
1288
+ {
1289
+ "internalType": "address",
1290
+ "name": "exclusiveRelayer",
1291
+ "type": "address"
1292
+ },
1293
+ {
1294
+ "internalType": "uint32",
1295
+ "name": "fillDeadlineOffset",
1296
+ "type": "uint32"
1297
+ },
1298
+ {
1299
+ "internalType": "uint32",
1300
+ "name": "exclusivityPeriod",
1301
+ "type": "uint32"
1302
+ },
1303
+ {
1304
+ "internalType": "bytes",
1305
+ "name": "message",
1306
+ "type": "bytes"
1307
+ }
1308
+ ],
1309
+ "name": "depositV3Now",
1310
+ "outputs": [],
1311
+ "stateMutability": "payable",
1312
+ "type": "function"
1313
+ },
1314
+ {
1315
+ "inputs": [
1316
+ {
1317
+ "internalType": "uint256",
1318
+ "name": "rootBundleId",
1319
+ "type": "uint256"
1320
+ }
1321
+ ],
1322
+ "name": "emergencyDeleteRootBundle",
1323
+ "outputs": [],
1324
+ "stateMutability": "nonpayable",
1325
+ "type": "function"
1326
+ },
1327
+ {
1328
+ "inputs": [
1329
+ {
1330
+ "internalType": "address",
1331
+ "name": "",
1332
+ "type": "address"
1333
+ },
1334
+ {
1335
+ "internalType": "uint256",
1336
+ "name": "",
1337
+ "type": "uint256"
1338
+ }
1339
+ ],
1340
+ "name": "enabledDepositRoutes",
1341
+ "outputs": [
1342
+ {
1343
+ "internalType": "bool",
1344
+ "name": "",
1345
+ "type": "bool"
1346
+ }
1347
+ ],
1348
+ "stateMutability": "view",
1349
+ "type": "function"
1350
+ },
1351
+ {
1352
+ "inputs": [
1353
+ {
1354
+ "internalType": "uint32",
1355
+ "name": "rootBundleId",
1356
+ "type": "uint32"
1357
+ },
1358
+ {
1359
+ "components": [
1360
+ {
1361
+ "internalType": "uint256",
1362
+ "name": "amountToReturn",
1363
+ "type": "uint256"
1364
+ },
1365
+ {
1366
+ "internalType": "uint256",
1367
+ "name": "chainId",
1368
+ "type": "uint256"
1369
+ },
1370
+ {
1371
+ "internalType": "uint256[]",
1372
+ "name": "refundAmounts",
1373
+ "type": "uint256[]"
1374
+ },
1375
+ {
1376
+ "internalType": "uint32",
1377
+ "name": "leafId",
1378
+ "type": "uint32"
1379
+ },
1380
+ {
1381
+ "internalType": "address",
1382
+ "name": "l2TokenAddress",
1383
+ "type": "address"
1384
+ },
1385
+ {
1386
+ "internalType": "address[]",
1387
+ "name": "refundAddresses",
1388
+ "type": "address[]"
1389
+ }
1390
+ ],
1391
+ "internalType": "struct SpokePoolInterface.RelayerRefundLeaf",
1392
+ "name": "relayerRefundLeaf",
1393
+ "type": "tuple"
1394
+ },
1395
+ {
1396
+ "internalType": "bytes32[]",
1397
+ "name": "proof",
1398
+ "type": "bytes32[]"
1399
+ }
1400
+ ],
1401
+ "name": "executeRelayerRefundLeaf",
1402
+ "outputs": [],
1403
+ "stateMutability": "payable",
1404
+ "type": "function"
1405
+ },
1406
+ {
1407
+ "inputs": [
1408
+ {
1409
+ "components": [
1410
+ {
1411
+ "components": [
1412
+ {
1413
+ "internalType": "address",
1414
+ "name": "depositor",
1415
+ "type": "address"
1416
+ },
1417
+ {
1418
+ "internalType": "address",
1419
+ "name": "recipient",
1420
+ "type": "address"
1421
+ },
1422
+ {
1423
+ "internalType": "address",
1424
+ "name": "exclusiveRelayer",
1425
+ "type": "address"
1426
+ },
1427
+ {
1428
+ "internalType": "address",
1429
+ "name": "inputToken",
1430
+ "type": "address"
1431
+ },
1432
+ {
1433
+ "internalType": "address",
1434
+ "name": "outputToken",
1435
+ "type": "address"
1436
+ },
1437
+ {
1438
+ "internalType": "uint256",
1439
+ "name": "inputAmount",
1440
+ "type": "uint256"
1441
+ },
1442
+ {
1443
+ "internalType": "uint256",
1444
+ "name": "outputAmount",
1445
+ "type": "uint256"
1446
+ },
1447
+ {
1448
+ "internalType": "uint256",
1449
+ "name": "originChainId",
1450
+ "type": "uint256"
1451
+ },
1452
+ {
1453
+ "internalType": "uint32",
1454
+ "name": "depositId",
1455
+ "type": "uint32"
1456
+ },
1457
+ {
1458
+ "internalType": "uint32",
1459
+ "name": "fillDeadline",
1460
+ "type": "uint32"
1461
+ },
1462
+ {
1463
+ "internalType": "uint32",
1464
+ "name": "exclusivityDeadline",
1465
+ "type": "uint32"
1466
+ },
1467
+ {
1468
+ "internalType": "bytes",
1469
+ "name": "message",
1470
+ "type": "bytes"
1471
+ }
1472
+ ],
1473
+ "internalType": "struct V3SpokePoolInterface.V3RelayData",
1474
+ "name": "relayData",
1475
+ "type": "tuple"
1476
+ },
1477
+ {
1478
+ "internalType": "uint256",
1479
+ "name": "chainId",
1480
+ "type": "uint256"
1481
+ },
1482
+ {
1483
+ "internalType": "uint256",
1484
+ "name": "updatedOutputAmount",
1485
+ "type": "uint256"
1486
+ }
1487
+ ],
1488
+ "internalType": "struct V3SpokePoolInterface.V3SlowFill",
1489
+ "name": "slowFillLeaf",
1490
+ "type": "tuple"
1491
+ },
1492
+ {
1493
+ "internalType": "uint32",
1494
+ "name": "rootBundleId",
1495
+ "type": "uint32"
1496
+ },
1497
+ {
1498
+ "internalType": "bytes32[]",
1499
+ "name": "proof",
1500
+ "type": "bytes32[]"
1501
+ }
1502
+ ],
1503
+ "name": "executeV3SlowRelayLeaf",
1504
+ "outputs": [],
1505
+ "stateMutability": "nonpayable",
1506
+ "type": "function"
1507
+ },
1508
+ {
1509
+ "inputs": [
1510
+ {
1511
+ "internalType": "bytes32",
1512
+ "name": "orderId",
1513
+ "type": "bytes32"
1514
+ },
1515
+ {
1516
+ "internalType": "bytes",
1517
+ "name": "originData",
1518
+ "type": "bytes"
1519
+ },
1520
+ {
1521
+ "internalType": "bytes",
1522
+ "name": "fillerData",
1523
+ "type": "bytes"
1524
+ }
1525
+ ],
1526
+ "name": "fill",
1527
+ "outputs": [],
1528
+ "stateMutability": "nonpayable",
1529
+ "type": "function"
1530
+ },
1531
+ {
1532
+ "inputs": [],
1533
+ "name": "fillDeadlineBuffer",
1534
+ "outputs": [
1535
+ {
1536
+ "internalType": "uint32",
1537
+ "name": "",
1538
+ "type": "uint32"
1539
+ }
1540
+ ],
1541
+ "stateMutability": "view",
1542
+ "type": "function"
1543
+ },
1544
+ {
1545
+ "inputs": [
1546
+ {
1547
+ "internalType": "bytes32",
1548
+ "name": "",
1549
+ "type": "bytes32"
1550
+ }
1551
+ ],
1552
+ "name": "fillStatuses",
1553
+ "outputs": [
1554
+ {
1555
+ "internalType": "uint256",
1556
+ "name": "",
1557
+ "type": "uint256"
1558
+ }
1559
+ ],
1560
+ "stateMutability": "view",
1561
+ "type": "function"
1562
+ },
1563
+ {
1564
+ "inputs": [
1565
+ {
1566
+ "components": [
1567
+ {
1568
+ "internalType": "address",
1569
+ "name": "depositor",
1570
+ "type": "address"
1571
+ },
1572
+ {
1573
+ "internalType": "address",
1574
+ "name": "recipient",
1575
+ "type": "address"
1576
+ },
1577
+ {
1578
+ "internalType": "address",
1579
+ "name": "exclusiveRelayer",
1580
+ "type": "address"
1581
+ },
1582
+ {
1583
+ "internalType": "address",
1584
+ "name": "inputToken",
1585
+ "type": "address"
1586
+ },
1587
+ {
1588
+ "internalType": "address",
1589
+ "name": "outputToken",
1590
+ "type": "address"
1591
+ },
1592
+ {
1593
+ "internalType": "uint256",
1594
+ "name": "inputAmount",
1595
+ "type": "uint256"
1596
+ },
1597
+ {
1598
+ "internalType": "uint256",
1599
+ "name": "outputAmount",
1600
+ "type": "uint256"
1601
+ },
1602
+ {
1603
+ "internalType": "uint256",
1604
+ "name": "originChainId",
1605
+ "type": "uint256"
1606
+ },
1607
+ {
1608
+ "internalType": "uint32",
1609
+ "name": "depositId",
1610
+ "type": "uint32"
1611
+ },
1612
+ {
1613
+ "internalType": "uint32",
1614
+ "name": "fillDeadline",
1615
+ "type": "uint32"
1616
+ },
1617
+ {
1618
+ "internalType": "uint32",
1619
+ "name": "exclusivityDeadline",
1620
+ "type": "uint32"
1621
+ },
1622
+ {
1623
+ "internalType": "bytes",
1624
+ "name": "message",
1625
+ "type": "bytes"
1626
+ }
1627
+ ],
1628
+ "internalType": "struct V3SpokePoolInterface.V3RelayData",
1629
+ "name": "relayData",
1630
+ "type": "tuple"
1631
+ },
1632
+ {
1633
+ "internalType": "uint256",
1634
+ "name": "repaymentChainId",
1635
+ "type": "uint256"
1636
+ }
1637
+ ],
1638
+ "name": "fillV3Relay",
1639
+ "outputs": [],
1640
+ "stateMutability": "nonpayable",
1641
+ "type": "function"
1642
+ },
1643
+ {
1644
+ "inputs": [
1645
+ {
1646
+ "components": [
1647
+ {
1648
+ "internalType": "address",
1649
+ "name": "depositor",
1650
+ "type": "address"
1651
+ },
1652
+ {
1653
+ "internalType": "address",
1654
+ "name": "recipient",
1655
+ "type": "address"
1656
+ },
1657
+ {
1658
+ "internalType": "address",
1659
+ "name": "exclusiveRelayer",
1660
+ "type": "address"
1661
+ },
1662
+ {
1663
+ "internalType": "address",
1664
+ "name": "inputToken",
1665
+ "type": "address"
1666
+ },
1667
+ {
1668
+ "internalType": "address",
1669
+ "name": "outputToken",
1670
+ "type": "address"
1671
+ },
1672
+ {
1673
+ "internalType": "uint256",
1674
+ "name": "inputAmount",
1675
+ "type": "uint256"
1676
+ },
1677
+ {
1678
+ "internalType": "uint256",
1679
+ "name": "outputAmount",
1680
+ "type": "uint256"
1681
+ },
1682
+ {
1683
+ "internalType": "uint256",
1684
+ "name": "originChainId",
1685
+ "type": "uint256"
1686
+ },
1687
+ {
1688
+ "internalType": "uint32",
1689
+ "name": "depositId",
1690
+ "type": "uint32"
1691
+ },
1692
+ {
1693
+ "internalType": "uint32",
1694
+ "name": "fillDeadline",
1695
+ "type": "uint32"
1696
+ },
1697
+ {
1698
+ "internalType": "uint32",
1699
+ "name": "exclusivityDeadline",
1700
+ "type": "uint32"
1701
+ },
1702
+ {
1703
+ "internalType": "bytes",
1704
+ "name": "message",
1705
+ "type": "bytes"
1706
+ }
1707
+ ],
1708
+ "internalType": "struct V3SpokePoolInterface.V3RelayData",
1709
+ "name": "relayData",
1710
+ "type": "tuple"
1711
+ },
1712
+ {
1713
+ "internalType": "uint256",
1714
+ "name": "repaymentChainId",
1715
+ "type": "uint256"
1716
+ },
1717
+ {
1718
+ "internalType": "uint256",
1719
+ "name": "updatedOutputAmount",
1720
+ "type": "uint256"
1721
+ },
1722
+ {
1723
+ "internalType": "address",
1724
+ "name": "updatedRecipient",
1725
+ "type": "address"
1726
+ },
1727
+ {
1728
+ "internalType": "bytes",
1729
+ "name": "updatedMessage",
1730
+ "type": "bytes"
1731
+ },
1732
+ {
1733
+ "internalType": "bytes",
1734
+ "name": "depositorSignature",
1735
+ "type": "bytes"
1736
+ }
1737
+ ],
1738
+ "name": "fillV3RelayWithUpdatedDeposit",
1739
+ "outputs": [],
1740
+ "stateMutability": "nonpayable",
1741
+ "type": "function"
1742
+ },
1743
+ {
1744
+ "inputs": [],
1745
+ "name": "getCurrentTime",
1746
+ "outputs": [
1747
+ {
1748
+ "internalType": "uint256",
1749
+ "name": "",
1750
+ "type": "uint256"
1751
+ }
1752
+ ],
1753
+ "stateMutability": "view",
1754
+ "type": "function"
1755
+ },
1756
+ {
1757
+ "inputs": [
1758
+ {
1759
+ "internalType": "uint32",
1760
+ "name": "_initialDepositId",
1761
+ "type": "uint32"
1762
+ },
1763
+ {
1764
+ "internalType": "address",
1765
+ "name": "_crossDomainAdmin",
1766
+ "type": "address"
1767
+ },
1768
+ {
1769
+ "internalType": "address",
1770
+ "name": "_withdrawalRecipient",
1771
+ "type": "address"
1772
+ }
1773
+ ],
1774
+ "name": "initialize",
1775
+ "outputs": [],
1776
+ "stateMutability": "nonpayable",
1777
+ "type": "function"
1778
+ },
1779
+ {
1780
+ "inputs": [],
1781
+ "name": "l1Gas",
1782
+ "outputs": [
1783
+ {
1784
+ "internalType": "uint32",
1785
+ "name": "",
1786
+ "type": "uint32"
1787
+ }
1788
+ ],
1789
+ "stateMutability": "view",
1790
+ "type": "function"
1791
+ },
1792
+ {
1793
+ "inputs": [],
1794
+ "name": "l2Eth",
1795
+ "outputs": [
1796
+ {
1797
+ "internalType": "address",
1798
+ "name": "",
1799
+ "type": "address"
1800
+ }
1801
+ ],
1802
+ "stateMutability": "view",
1803
+ "type": "function"
1804
+ },
1805
+ {
1806
+ "inputs": [
1807
+ {
1808
+ "internalType": "bytes[]",
1809
+ "name": "data",
1810
+ "type": "bytes[]"
1811
+ }
1812
+ ],
1813
+ "name": "multicall",
1814
+ "outputs": [
1815
+ {
1816
+ "internalType": "bytes[]",
1817
+ "name": "results",
1818
+ "type": "bytes[]"
1819
+ }
1820
+ ],
1821
+ "stateMutability": "nonpayable",
1822
+ "type": "function"
1823
+ },
1824
+ {
1825
+ "inputs": [],
1826
+ "name": "numberOfDeposits",
1827
+ "outputs": [
1828
+ {
1829
+ "internalType": "uint32",
1830
+ "name": "",
1831
+ "type": "uint32"
1832
+ }
1833
+ ],
1834
+ "stateMutability": "view",
1835
+ "type": "function"
1836
+ },
1837
+ {
1838
+ "inputs": [
1839
+ {
1840
+ "internalType": "bool",
1841
+ "name": "pause",
1842
+ "type": "bool"
1843
+ }
1844
+ ],
1845
+ "name": "pauseDeposits",
1846
+ "outputs": [],
1847
+ "stateMutability": "nonpayable",
1848
+ "type": "function"
1849
+ },
1850
+ {
1851
+ "inputs": [
1852
+ {
1853
+ "internalType": "bool",
1854
+ "name": "pause",
1855
+ "type": "bool"
1856
+ }
1857
+ ],
1858
+ "name": "pauseFills",
1859
+ "outputs": [],
1860
+ "stateMutability": "nonpayable",
1861
+ "type": "function"
1862
+ },
1863
+ {
1864
+ "inputs": [],
1865
+ "name": "pausedDeposits",
1866
+ "outputs": [
1867
+ {
1868
+ "internalType": "bool",
1869
+ "name": "",
1870
+ "type": "bool"
1871
+ }
1872
+ ],
1873
+ "stateMutability": "view",
1874
+ "type": "function"
1875
+ },
1876
+ {
1877
+ "inputs": [],
1878
+ "name": "pausedFills",
1879
+ "outputs": [
1880
+ {
1881
+ "internalType": "bool",
1882
+ "name": "",
1883
+ "type": "bool"
1884
+ }
1885
+ ],
1886
+ "stateMutability": "view",
1887
+ "type": "function"
1888
+ },
1889
+ {
1890
+ "inputs": [],
1891
+ "name": "proxiableUUID",
1892
+ "outputs": [
1893
+ {
1894
+ "internalType": "bytes32",
1895
+ "name": "",
1896
+ "type": "bytes32"
1897
+ }
1898
+ ],
1899
+ "stateMutability": "view",
1900
+ "type": "function"
1901
+ },
1902
+ {
1903
+ "inputs": [],
1904
+ "name": "recipientCircleDomainId",
1905
+ "outputs": [
1906
+ {
1907
+ "internalType": "uint32",
1908
+ "name": "",
1909
+ "type": "uint32"
1910
+ }
1911
+ ],
1912
+ "stateMutability": "view",
1913
+ "type": "function"
1914
+ },
1915
+ {
1916
+ "inputs": [
1917
+ {
1918
+ "internalType": "bytes32",
1919
+ "name": "relayerRefundRoot",
1920
+ "type": "bytes32"
1921
+ },
1922
+ {
1923
+ "internalType": "bytes32",
1924
+ "name": "slowRelayRoot",
1925
+ "type": "bytes32"
1926
+ }
1927
+ ],
1928
+ "name": "relayRootBundle",
1929
+ "outputs": [],
1930
+ "stateMutability": "nonpayable",
1931
+ "type": "function"
1932
+ },
1933
+ {
1934
+ "inputs": [
1935
+ {
1936
+ "internalType": "address",
1937
+ "name": "",
1938
+ "type": "address"
1939
+ }
1940
+ ],
1941
+ "name": "remoteL1Tokens",
1942
+ "outputs": [
1943
+ {
1944
+ "internalType": "address",
1945
+ "name": "",
1946
+ "type": "address"
1947
+ }
1948
+ ],
1949
+ "stateMutability": "view",
1950
+ "type": "function"
1951
+ },
1952
+ {
1953
+ "inputs": [
1954
+ {
1955
+ "components": [
1956
+ {
1957
+ "internalType": "address",
1958
+ "name": "depositor",
1959
+ "type": "address"
1960
+ },
1961
+ {
1962
+ "internalType": "address",
1963
+ "name": "recipient",
1964
+ "type": "address"
1965
+ },
1966
+ {
1967
+ "internalType": "address",
1968
+ "name": "exclusiveRelayer",
1969
+ "type": "address"
1970
+ },
1971
+ {
1972
+ "internalType": "address",
1973
+ "name": "inputToken",
1974
+ "type": "address"
1975
+ },
1976
+ {
1977
+ "internalType": "address",
1978
+ "name": "outputToken",
1979
+ "type": "address"
1980
+ },
1981
+ {
1982
+ "internalType": "uint256",
1983
+ "name": "inputAmount",
1984
+ "type": "uint256"
1985
+ },
1986
+ {
1987
+ "internalType": "uint256",
1988
+ "name": "outputAmount",
1989
+ "type": "uint256"
1990
+ },
1991
+ {
1992
+ "internalType": "uint256",
1993
+ "name": "originChainId",
1994
+ "type": "uint256"
1995
+ },
1996
+ {
1997
+ "internalType": "uint32",
1998
+ "name": "depositId",
1999
+ "type": "uint32"
2000
+ },
2001
+ {
2002
+ "internalType": "uint32",
2003
+ "name": "fillDeadline",
2004
+ "type": "uint32"
2005
+ },
2006
+ {
2007
+ "internalType": "uint32",
2008
+ "name": "exclusivityDeadline",
2009
+ "type": "uint32"
2010
+ },
2011
+ {
2012
+ "internalType": "bytes",
2013
+ "name": "message",
2014
+ "type": "bytes"
2015
+ }
2016
+ ],
2017
+ "internalType": "struct V3SpokePoolInterface.V3RelayData",
2018
+ "name": "relayData",
2019
+ "type": "tuple"
2020
+ }
2021
+ ],
2022
+ "name": "requestV3SlowFill",
2023
+ "outputs": [],
2024
+ "stateMutability": "nonpayable",
2025
+ "type": "function"
2026
+ },
2027
+ {
2028
+ "inputs": [
2029
+ {
2030
+ "internalType": "uint256",
2031
+ "name": "",
2032
+ "type": "uint256"
2033
+ }
2034
+ ],
2035
+ "name": "rootBundles",
2036
+ "outputs": [
2037
+ {
2038
+ "internalType": "bytes32",
2039
+ "name": "slowRelayRoot",
2040
+ "type": "bytes32"
2041
+ },
2042
+ {
2043
+ "internalType": "bytes32",
2044
+ "name": "relayerRefundRoot",
2045
+ "type": "bytes32"
2046
+ }
2047
+ ],
2048
+ "stateMutability": "view",
2049
+ "type": "function"
2050
+ },
2051
+ {
2052
+ "inputs": [
2053
+ {
2054
+ "internalType": "address",
2055
+ "name": "newCrossDomainAdmin",
2056
+ "type": "address"
2057
+ }
2058
+ ],
2059
+ "name": "setCrossDomainAdmin",
2060
+ "outputs": [],
2061
+ "stateMutability": "nonpayable",
2062
+ "type": "function"
2063
+ },
2064
+ {
2065
+ "inputs": [
2066
+ {
2067
+ "internalType": "address",
2068
+ "name": "originToken",
2069
+ "type": "address"
2070
+ },
2071
+ {
2072
+ "internalType": "uint256",
2073
+ "name": "destinationChainId",
2074
+ "type": "uint256"
2075
+ },
2076
+ {
2077
+ "internalType": "bool",
2078
+ "name": "enabled",
2079
+ "type": "bool"
2080
+ }
2081
+ ],
2082
+ "name": "setEnableRoute",
2083
+ "outputs": [],
2084
+ "stateMutability": "nonpayable",
2085
+ "type": "function"
2086
+ },
2087
+ {
2088
+ "inputs": [
2089
+ {
2090
+ "internalType": "uint32",
2091
+ "name": "newl1Gas",
2092
+ "type": "uint32"
2093
+ }
2094
+ ],
2095
+ "name": "setL1GasLimit",
2096
+ "outputs": [],
2097
+ "stateMutability": "nonpayable",
2098
+ "type": "function"
2099
+ },
2100
+ {
2101
+ "inputs": [
2102
+ {
2103
+ "internalType": "address",
2104
+ "name": "l2Token",
2105
+ "type": "address"
2106
+ },
2107
+ {
2108
+ "internalType": "address",
2109
+ "name": "l1Token",
2110
+ "type": "address"
2111
+ }
2112
+ ],
2113
+ "name": "setRemoteL1Token",
2114
+ "outputs": [],
2115
+ "stateMutability": "nonpayable",
2116
+ "type": "function"
2117
+ },
2118
+ {
2119
+ "inputs": [
2120
+ {
2121
+ "internalType": "address",
2122
+ "name": "l2Token",
2123
+ "type": "address"
2124
+ },
2125
+ {
2126
+ "internalType": "address",
2127
+ "name": "tokenBridge",
2128
+ "type": "address"
2129
+ }
2130
+ ],
2131
+ "name": "setTokenBridge",
2132
+ "outputs": [],
2133
+ "stateMutability": "nonpayable",
2134
+ "type": "function"
2135
+ },
2136
+ {
2137
+ "inputs": [
2138
+ {
2139
+ "internalType": "address",
2140
+ "name": "newWithdrawalRecipient",
2141
+ "type": "address"
2142
+ }
2143
+ ],
2144
+ "name": "setWithdrawalRecipient",
2145
+ "outputs": [],
2146
+ "stateMutability": "nonpayable",
2147
+ "type": "function"
2148
+ },
2149
+ {
2150
+ "inputs": [
2151
+ {
2152
+ "internalType": "address",
2153
+ "name": "depositor",
2154
+ "type": "address"
2155
+ },
2156
+ {
2157
+ "internalType": "uint32",
2158
+ "name": "depositId",
2159
+ "type": "uint32"
2160
+ },
2161
+ {
2162
+ "internalType": "uint256",
2163
+ "name": "updatedOutputAmount",
2164
+ "type": "uint256"
2165
+ },
2166
+ {
2167
+ "internalType": "address",
2168
+ "name": "updatedRecipient",
2169
+ "type": "address"
2170
+ },
2171
+ {
2172
+ "internalType": "bytes",
2173
+ "name": "updatedMessage",
2174
+ "type": "bytes"
2175
+ },
2176
+ {
2177
+ "internalType": "bytes",
2178
+ "name": "depositorSignature",
2179
+ "type": "bytes"
2180
+ }
2181
+ ],
2182
+ "name": "speedUpV3Deposit",
2183
+ "outputs": [],
2184
+ "stateMutability": "nonpayable",
2185
+ "type": "function"
2186
+ },
2187
+ {
2188
+ "inputs": [
2189
+ {
2190
+ "internalType": "address",
2191
+ "name": "",
2192
+ "type": "address"
2193
+ }
2194
+ ],
2195
+ "name": "tokenBridges",
2196
+ "outputs": [
2197
+ {
2198
+ "internalType": "address",
2199
+ "name": "",
2200
+ "type": "address"
2201
+ }
2202
+ ],
2203
+ "stateMutability": "view",
2204
+ "type": "function"
2205
+ },
2206
+ {
2207
+ "inputs": [
2208
+ {
2209
+ "internalType": "bytes[]",
2210
+ "name": "data",
2211
+ "type": "bytes[]"
2212
+ }
2213
+ ],
2214
+ "name": "tryMulticall",
2215
+ "outputs": [
2216
+ {
2217
+ "components": [
2218
+ {
2219
+ "internalType": "bool",
2220
+ "name": "success",
2221
+ "type": "bool"
2222
+ },
2223
+ {
2224
+ "internalType": "bytes",
2225
+ "name": "returnData",
2226
+ "type": "bytes"
2227
+ }
2228
+ ],
2229
+ "internalType": "struct MultiCallerUpgradeable.Result[]",
2230
+ "name": "results",
2231
+ "type": "tuple[]"
2232
+ }
2233
+ ],
2234
+ "stateMutability": "nonpayable",
2235
+ "type": "function"
2236
+ },
2237
+ {
2238
+ "inputs": [
2239
+ {
2240
+ "internalType": "address",
2241
+ "name": "newImplementation",
2242
+ "type": "address"
2243
+ }
2244
+ ],
2245
+ "name": "upgradeTo",
2246
+ "outputs": [],
2247
+ "stateMutability": "nonpayable",
2248
+ "type": "function"
2249
+ },
2250
+ {
2251
+ "inputs": [
2252
+ {
2253
+ "internalType": "address",
2254
+ "name": "newImplementation",
2255
+ "type": "address"
2256
+ },
2257
+ {
2258
+ "internalType": "bytes",
2259
+ "name": "data",
2260
+ "type": "bytes"
2261
+ }
2262
+ ],
2263
+ "name": "upgradeToAndCall",
2264
+ "outputs": [],
2265
+ "stateMutability": "payable",
2266
+ "type": "function"
2267
+ },
2268
+ {
2269
+ "inputs": [],
2270
+ "name": "usdcToken",
2271
+ "outputs": [
2272
+ {
2273
+ "internalType": "contract IERC20",
2274
+ "name": "",
2275
+ "type": "address"
2276
+ }
2277
+ ],
2278
+ "stateMutability": "view",
2279
+ "type": "function"
2280
+ },
2281
+ {
2282
+ "inputs": [],
2283
+ "name": "withdrawalRecipient",
2284
+ "outputs": [
2285
+ {
2286
+ "internalType": "address",
2287
+ "name": "",
2288
+ "type": "address"
2289
+ }
2290
+ ],
2291
+ "stateMutability": "view",
2292
+ "type": "function"
2293
+ },
2294
+ {
2295
+ "inputs": [],
2296
+ "name": "wrappedNativeToken",
2297
+ "outputs": [
2298
+ {
2299
+ "internalType": "contract WETH9Interface",
2300
+ "name": "",
2301
+ "type": "address"
2302
+ }
2303
+ ],
2304
+ "stateMutability": "view",
2305
+ "type": "function"
2306
+ },
2307
+ {
2308
+ "stateMutability": "payable",
2309
+ "type": "receive"
2310
+ }
2311
+ ],
2312
+ "bytecode": "0x610160346200024c57601f620059a638819003918201601f19168301916001600160401b03831184841017620002505780849260a0946040528339810103126200024c5780516001600160a01b039190828116908190036200024c57620000696020830162000264565b620000776040840162000264565b9160608401519385851685036200024c576080015194851685036200024c573060805260a05260c05260e0525f5460ff8160081c16620001f75760ff80821603620001bc575b50610120908152610140918252610100915f83526040519161572f9384620002778539608051848181610c88015281816113ca01526115bc015260a0518481816107b701528181611c390152818161304f015281816138010152818161396501528181613f6201528181614236015281816149570152818161497e0152614e8f015260c05184818161172801528181611be701528181612fff01526137b6015260e0518481816103ce01528181611de1015261316a015251838181611901015261547f01525182818161075a01528181614833015281816151ee01526153790152518181816120850152818161491501528181614fa701526153a50152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f620000bd565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b519063ffffffff821682036200024c5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063079bd2c71461039f5780630c5d5f731461039a5780630eaac9f0146103955780631186ec331461039057806311eac8551461038b57806315348e441461032257806317fcb39b146103865780631b3d555914610381578063272751c71461037c57806329cb924d146103775780632cfc26c5146103725780632e3781151461036d5780633659cfe614610368578063431023b814610363578063437b91161461035e578063490e49ef14610359578063493a4f84146103545780634e0fb8f51461034f5780634f1ef2861461034a5780635249fef1146103455780635285e0581461034057806352d1902d1461033b578063541f4f141461033657806357f6dcb8146103315780636068d6cb1461032c578063647c576c146103275780636bbbcd2e146103225780636e4009831461031d578063738b62e514610318578063766e0703146103135780637aef642c1461030e5780637b939232146102d757806382e2c43f146103095780638a7860ce14610304578063927ede2d146102ff5780639748cf7c146102fa578063979f2bc2146102f55780639963e5a8146102f057806399cc2968146102eb5780639a8a0592146102e6578063a1244c67146102e1578063ac9650d8146102dc578063add051a3146102d7578063b27a4300146102d2578063b370b7f5146102cd578063bbca7db0146102c8578063bf10268d146102c3578063c35c83fc146102be578063ccfa5971146102b9578063ceb4c987146102b4578063dda52113146102af578063ddd224f1146102aa578063de7eba78146102a5578063e3229211146102a0578063ee2a53f81461029b578063fbbba9ac146102965763fc8a584f0361000e57612993565b61290f565b6128d1565b612855565b612825565b6127fc565b6127d6565b6127b8565b612735565b61270a565b612686565b612545565b61251e565b6124df565b611b3d565b612421565b612397565b61237d565b6122cf565b6120d3565b6120a9565b612066565b612038565b611fc0565b611e62565b6119f8565b6119d4565b611925565b6118e5565b61077e565b6117a4565b61174c565b61170c565b611677565b6115a2565b61157b565b61152d565b611385565b61126b565b6111b6565b611198565b6110cb565b610e0f565b610c5f565b610b0a565b610ac1565b610aa7565b610a08565b610926565b610798565b61073b565b610682565b610468565b610410565b6103b2565b5f9103126103ae57565b5f80fd5b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6001600160a01b038116036103ae57565b359061040e826103f2565b565b346103ae5760203660031901126103ae57602060043561042f816103f2565b6001600160a01b038091165f52610c5d825260405f205416604051908152f35b63ffffffff8116036103ae57565b359061040e8261044f565b346103ae5760203660031901126103ae5763ffffffff60043561048a8161044f565b61049261354c565b61049a61365e565b16610c5a8163ffffffff198254161790557fe486a5c4bd7b36eabbfe274c99b39130277417be8d2209b4dae04c4fba64ee3a5f80a26001606555005b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761050657604052565b6104d6565b67ffffffffffffffff811161050657604052565b6060810190811067ffffffffffffffff82111761050657604052565b6020810190811067ffffffffffffffff82111761050657604052565b60e0810190811067ffffffffffffffff82111761050657604052565b60a0810190811067ffffffffffffffff82111761050657604052565b90601f8019910116810190811067ffffffffffffffff82111761050657604052565b6040519060c0820182811067ffffffffffffffff82111761050657604052565b60405190610180820182811067ffffffffffffffff82111761050657604052565b604051906080820182811067ffffffffffffffff82111761050657604052565b67ffffffffffffffff811161050657601f01601f191660200190565b92919261063a82610612565b91610648604051938461058f565b8294818452818301116103ae578281602093845f960137010152565b9080601f830112156103ae5781602061067f9335910161062e565b90565b6101003660031901126103ae5760043561069b816103f2565b6024356106a7816103f2565b6084358060070b81036103ae5760a435906106c18261044f565b60c43567ffffffffffffffff81116103ae576106e1903690600401610664565b926106ea61365e565b60ff61086b5460e81c166107115761070a94606435916044359133613729565b6001606555005b60046040517f5a65d188000000000000000000000000000000000000000000000000000000008152fd5b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae575f3660031901126103ae5760206040515f8152f35b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b67ffffffffffffffff81116105065760051b60200190565b9080601f830112156103ae57602090823561080d816107db565b9361081b604051958661058f565b81855260208086019260051b8201019283116103ae57602001905b828210610844575050505090565b81358152908301908301610836565b9080601f830112156103ae57602090823561086d816107db565b9361087b604051958661058f565b81855260208086019260051b8201019283116103ae57602001905b8282106108a4575050505090565b83809183356108b2816103f2565b815201910190610896565b92916108c8826107db565b916108d6604051938461058f565b829481845260208094019160051b81019283116103ae57905b8282106108fc5750505050565b813581529083019083016108ef565b9080601f830112156103ae5781602061067f933591016108bd565b6003196060368201126103ae5760043561093f8161044f565b60243567ffffffffffffffff928382116103ae5760c09082360301126103ae576109676105b1565b90806004013582526024810135602083015260448101358481116103ae5761099590600436918401016107f3565b60408301526109a66064820161045d565b60608301526109b760848201610403565b608083015260a4810135908482116103ae5760046109d89236920101610853565b60a08201526044359283116103ae576109f861001893369060040161090b565b916129c3565b801515036103ae57565b346103ae5760603660031901126103ae57600435610a25816103f2565b602435907f0a21fdd43d0ad0c62689ee7230a47309a050755bcc52eba00310add65297692a60206001600160a01b0360443593610a61856109fe565b610a6961354c565b610a7161365e565b1692835f5261086d825260405f20855f52825260405f209015159060ff1981541660ff8316179055604051908152a36001606555005b346103ae575f3660031901126103ae576020604051428152f35b346103ae575f3660031901126103ae5760206040517f152eb71524aef34d838ab76573c14b1ebfa5e385d9ab29d7cf5398daa2438bd98152f35b90816101809103126103ae5790565b346103ae5760403660031901126103ae5760043567ffffffffffffffff81116103ae57610b3b903690600401610afb565b610b4361365e565b60ff61086b5460e01c16610c4e57610b5e6101408201612bba565b63ffffffff8042169116101580610c30575b610c0657610bfc90610be8610b8d610b883684612bce565b613c2f565b9160c0610be1610b9f60208401612bc4565b610bad610160850185612cae565b939094610bb86105b1565b97610bc33683612bce565b89526020890152013560408701526001600160a01b03166060860152565b369161062e565b608082015260243560a08201523390613d68565b6100186001606555565b60046040517fc3a9b9d0000000000000000000000000000000000000000000000000000000008152fd5b50610c3d60408201612bc4565b6001600160a01b0316331415610b70565b6004604051633d90fc5560e11b8152fd5b346103ae5760203660031901126103ae57600435610c7c816103f2565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691610cb583301415612ce1565b610ce47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc938285541614612d52565b610cec61354c565b60405190610cf98261053b565b5f82527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d325750506100189150614bc9565b6020600491604094939451928380926352d1902d60e01b825286165afa5f9181610dde575b50610dcb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608490fd5b0390fd5b61001893610dd99114614341565b614aab565b610e0191925060203d602011610e08575b610df9818361058f565b810190614332565b905f610d57565b503d610def565b346103ae5760803660031901126103ae57610018600435610e2f8161044f565b610f61602435610e3e816103f2565b610f5c60443591610e4e836103f2565b610ead60643595610e5e876103f2565b610e8a60ff5f5460081c16610e7281612dc3565b610c5a805463ffffffff1916624c4b40179055612dc3565b61086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b604051610eb9816104ea565b6009815260208101907f4143524f53532d56320000000000000000000000000000000000000000000000825260405191610ef2836104ea565b6005835260208301917f312e302e300000000000000000000000000000000000000000000000000000008352610f3760ff5f5460081c16610f3281612dc3565b612dc3565b519020915190209061047f5561048055610f4f61452d565b610f5761453d565b614558565b6145ca565b610c5a907fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b9181601f840112156103ae5782359167ffffffffffffffff83116103ae576020808501948460051b0101116103ae57565b60206003198201126103ae576004359067ffffffffffffffff82116103ae5761100991600401610fad565b9091565b5f5b83811061101e5750505f910152565b818101518382015260200161100f565b906020916110478151809281855285808601910161100d565b601f01601f1916010190565b6020808201908083528351809252604092604081018260408560051b8401019601945f925b858410611089575050505050505090565b9091929394959685806110ba600193603f1986820301885286838d518051151584520151918185820152019061102e565b990194019401929594939190611078565b346103ae576110d936610fde565b6110e2816107db565b9160406110f2604051948561058f565b828452601f19611101846107db565b015f5b8181106111755750505f5b83811061112857604051806111248782611053565b0390f35b8061116f61113860019388612e34565b515f80611146858a8a612e48565b90611155895180938193612e5f565b0390305af490611163612e6c565b60208201529015159052565b0161110f565b6020908351611183816104ea565b5f815282606081830152828901015201611104565b346103ae575f3660031901126103ae5760206040516301e133808152f35b346103ae5760403660031901126103ae576024356004356111d561354c565b6111dd61365e565b61086c8054680100000000000000008110156105065763ffffffff916001820190558361120982612892565b5084600182015555167fc86ba04c55bc5eb2f2876b91c438849a296dbec7b08751c3074d92e04f0a77af5f80a46001606555005b9181601f840112156103ae5782359167ffffffffffffffff83116103ae57602083818601950101116103ae57565b346103ae5760c03660031901126103ae57600435611288816103f2565b602435906112958261044f565b6044356064356112a4816103f2565b67ffffffffffffffff916084358381116103ae576112c690369060040161123d565b93909460a4359182116103ae5761136963ffffffff7fb0a29aed3d389a1041194255878b423f7780be3ed2324d4693508c6ff189845e9661130e61137b95369060040161123d565b93909961131961365e565b6113408c8c8b8b61133761132e368a8961062e565b938b369161062e565b9346908c6143b2565b6001600160a01b0392836040519a8b9a8b521660208a0152608060408a01526080890191612e9b565b93868503606088015216981696612e9b565b0390a36001606555005b60403660031901126103ae5760043561139d816103f2565b60243567ffffffffffffffff81116103ae576113bd903690600401610664565b906001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016926113f784301415612ce1565b6114267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc948286541614612d52565b61142e61354c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114645750506100189150614bc9565b6020600491604094939451928380926352d1902d60e01b825286165afa5f918161150c575b506114f95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608490fd5b610018936115079114614341565b614b77565b61152691925060203d602011610e0857610df9818361058f565b905f611489565b346103ae5760403660031901126103ae576001600160a01b03600435611552816103f2565b165f5261086d60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b346103ae575f3660031901126103ae5760206001600160a01b036108695416604051908152f35b346103ae575f3660031901126103ae576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361160d576040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152602090f35b608460405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152fd5b6101203660031901126103ae57600435611690816103f2565b6024359061169d826103f2565b604435916116aa836103f2565b60a4358060070b81036103ae5760c435916116c48361044f565b60e43567ffffffffffffffff81116103ae576116e4903690600401610664565b936116ed61365e565b60ff61086b5460e81c166107115761070a956084359260643592613729565b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae575f3660031901126103ae57602060ff61086b5460e81c166040519015158152f35b60609060031901126103ae5760043561178a8161044f565b90602435611797816103f2565b9060443561067f816103f2565b346103ae576117b236611772565b5f54600881901c60ff16159392908490816118d7575b81156118b7575b501561184d576117f392846117ea600160ff195f5416175f55565b61183657612ebb565b6117f957005b61180761ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b61184861010061ff00195f5416175f55565b612ebb565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816118c9575b505f6117cf565b6001915060ff16145f6118c2565b600160ff82161091506117c8565b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae5760203660031901126103ae577fe88463c2f254e2b070013a2dc7ee1e099f9bc00534cbdf03af551dc26ae492196020600435611965816109fe565b61196d61354c565b61197561365e565b151561086b80547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7dff00000000000000000000000000000000000000000000000000000000008460e81b169116179055604051908152a16001606555005b346103ae575f3660031901126103ae57602063ffffffff610c5a5416604051908152f35b6101603660031901126103ae57600435611a11816103f2565b60243590611a1e826103f2565b604435611a2a816103f2565b60643590611a37826103f2565b60e435611a43816103f2565b6101043590611a518261044f565b6101243592611a5f8461044f565b610144359667ffffffffffffffff88116103ae57611a8461001898369060040161123d565b97909660c4359360a4359360843593612f54565b906101806003198301126103ae57600435611ab2816103f2565b91602435611abf816103f2565b91604435611acc816103f2565b91606435611ad9816103f2565b916084359160a4359160c4359160e435611af2816103f2565b9161010435611b008161044f565b9161012435611b0e8161044f565b9161014435611b1c8161044f565b91610164359067ffffffffffffffff82116103ae576110099160040161123d565b611b4636611a98565b959996919a92909493611b5b9c98999c61365e565b61086b549260ff8460e81c166107115763ffffffff809460c01c169c611b808e613197565b611ba79061086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b8c611bc48b6001600160a01b03165f5261086d60205260405f2090565b5f918252602052604090205460ff1615611e3857611be4858416426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e57848416428110908115611dd9575b50611daf57809480821680611d4a575b5050506001600160a01b039a8b7f0000000000000000000000000000000000000000000000000000000000000000168c8b1681811480611d41575b15611d275750813403611cfd57803b156103ae575f60049160405192838092630d0e30db60e41b825234905af18015611cf857611cdf575b505b6040519b8c9b169e611cb19a8c6144c5565b037fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f91a46100186001606555565b80611cec611cf29261050b565b806103a4565b5f611c9d565b6136c0565b60046040517f6452a35d000000000000000000000000000000000000000000000000000000008152fd5b905034611cfd5781611d3c91309033906146f0565b611c9f565b50341515611c65565b6301e133801015611d99575b50506001600160a01b03861615611d6f575f8080611c2a565b60046040517f495d907f000000000000000000000000000000000000000000000000000000008152fd5b611da7929550421690612f37565b925f80611d56565b60046040517f582e3889000000000000000000000000000000000000000000000000000000008152fd5b9050611e07867f000000000000000000000000000000000000000000000000000000000000000016426144b8565b105f611c1a565b60046040517ff722177f000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2a58c4f3000000000000000000000000000000000000000000000000000000008152fd5b346103ae5760603660031901126103ae5767ffffffffffffffff6024358181116103ae57611e9490369060040161123d565b916044359081116103ae57611ead90369060040161123d565b9060405193602085019480611ec44684888a6131ac565b0395611ed8601f199788810184528361058f565b6004359151902003611f96575f94611f07611f3f93611efe87611f4b958a9901906131c9565b958101906131ef565b5160405193849160208301967f2e378115000000000000000000000000000000000000000000000000000000008852602484016132ea565b0390810183528261058f565b5190305af4611f58612e6c565b9015611f6057005b610dc7906040519182917fb8fe37a700000000000000000000000000000000000000000000000000000000835260048301613301565b60046040517f1e191e8e000000000000000000000000000000000000000000000000000000008152fd5b346103ae5760203660031901126103ae57600435611fdc61354c565b611fe461365e565b611fed81612892565b612025576001815f80935501557f3569b846531b754c99cb80df3f49cd72fa6fe106aaee5ab8e0caf35a9d7ce88d5f80a26001606555005b634e487b7160e01b5f525f60045260245ffd5b346103ae575f3660031901126103ae5760206040517342000000000000000000000000000000000000078152f35b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae57610018610ead610f5c6120c036611772565b939091610e8a60ff5f5460081c16612dc3565b346103ae5760203660031901126103ae576004803567ffffffffffffffff81116103ae576121049036908301610afb565b61210c61365e565b60ff61086b5460e01c166122bf5763ffffffff8042166101408301936121448261213587612bba565b63ffffffff9182169116101590565b612297576101208401918361215884612bba565b16106122885761216b610b883686612bce565b9061217f825f5261087260205260405f2090565b546122605750906121c46121be7f923794976d026d6b119735adc163cb71decfc903e17c3dc226c00789593c04e194935f5261087260205260405f2090565b60019055565b6122536121d360608601612bc4565b956121e060808701612bc4565b956122006121fa6121f46101008401612bba565b95612bba565b92612bba565b61220c60408301612bc4565b61221583612bc4565b9061222260208501612bc4565b92612231610160860186612cae565b9690956040519a8b9a169d60e08201359d60a060c0840135930135918c613335565b0390a36100186001606555565b6040517f012f9e44000000000000000000000000000000000000000000000000000000008152fd5b60405163d642b7d960e01b8152fd5b6040517f09deb9ec000000000000000000000000000000000000000000000000000000008152fd5b50604051633d90fc5560e11b8152fd5b346103ae5760203660031901126103ae577f2d5b62420992e5a4afce0e77742636ca2608ef58289fd2e1baa5161ef6e7e41e602060043561230f816109fe565b61231761354c565b61231f61365e565b151561086b80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7cff000000000000000000000000000000000000000000000000000000008460e01b169116179055604051908152a16001606555005b346103ae575f3660031901126103ae576020604051468152f35b346103ae575f3660031901126103ae57602063ffffffff61086b5460c01c16604051908152f35b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106123f35750505050505090565b9091929394958480612411600193603f198682030187528a5161102e565b98019301930191949392906123e3565b346103ae5761242f36610fde565b906124398261339d565b915f5b818110612451576040518061112486826123be565b5f8061245e838587612e48565b60409391612470855180938193612e5f565b0390305af49061247e612e6c565b91156124a55750906001916124938287612e34565b5261249e8186612e34565b500161243c565b9060448151106103ae57610dc76124ca600492838101516024809183010191016133e6565b925192839262461bcd60e51b84528301613301565b346103ae5760203660031901126103ae5760206004356124fe816103f2565b6001600160a01b038091165f52610c5c825260405f205416604051908152f35b346103ae575f3660031901126103ae5760206001600160a01b0361086a5416604051908152f35b346103ae576003196060368201126103ae5760043567ffffffffffffffff8082116103ae576060823603938401126103ae57602435906125848261044f565b6044359081116103ae5761259c903690600401610fad565b9190936125a761365e565b60048401359061018219018112156103ae57610bfc9461265c936125d46126559360043691890101612bce565b956125f16125ec60808901516001600160a01b031690565b61395b565b6126436125fd88613c2f565b91604461261460208b01516001600160a01b031690565b916101608b0151946126246105b1565b9b8c5260208c0152013560408a01526001600160a01b03166060890152565b60808701525f60a087015236916108bd565b908361463c565b614077565b60409060031901126103ae57600435612679816103f2565b9060243561067f816103f2565b346103ae5761269436612661565b9061269d61354c565b6126a561365e565b6001600160a01b0380911691825f52610c5d6020526126dd8160405f20906001600160a01b03166001600160a01b0319825416179055565b16907fcb84c2022106a6f2b6f805d446f32fbfd2a528474364fa755f37dac1c0c1b6c85f80a36001606555005b346103ae5760203660031901126103ae576004355f52610872602052602060405f2054604051908152f35b346103ae5760c03660031901126103ae5767ffffffffffffffff6004358181116103ae57612767903690600401610afb565b60643590612774826103f2565b6084358381116103ae5761278c90369060040161123d565b9060a4359485116103ae576127a861001895369060040161123d565b9490936044359060243590613445565b346103ae575f3660031901126103ae57602060405163ffffffff8152f35b346103ae575f3660031901126103ae57602060ff61086b5460e01c166040519015158152f35b346103ae575f3660031901126103ae5760206040516ec097ce7bc90715b34b9f10000000008152f35b346103ae5760203660031901126103ae5761070a600435612845816103f2565b61284d61354c565b610f5761365e565b346103ae575f3660031901126103ae576020610c5a546001600160a01b0360405191831c168152f35b634e487b7160e01b5f52603260045260245ffd5b61086c9081548110156128cc576003915f52027f71cd7344f4eb2efc8e30291f6dbdb44d618ca368ea5425d217c1d604bf26b84d01905f90565b61287e565b346103ae5760203660031901126103ae5760043561086c548110156103ae576128fb604091612892565b506001815491015482519182526020820152f35b346103ae5761291d36612661565b9061292661354c565b61292e61365e565b6001600160a01b0380911691825f52610c5c6020526129668160405f20906001600160a01b03166001600160a01b0319825416179055565b16907ff3dc137d2246f9b8abd0bb821e185ba01122c9b3ea3745ffca6208037674d6705f80a36001606555005b346103ae5760203660031901126103ae5761070a6004356129b3816103f2565b6129bb61354c565b610f5c61365e565b916129cc61365e565b60808201916129e56125ec84516001600160a01b031690565b602081019182514603612aea57612a0d612a1191836001612a0589612892565b500154613a0a565b1590565b612ad9578060607ff8bd640004bcec1b89657020f561d0b070cbdf662d0b158db9dccb0a8301bfab920193612a53612a4d865163ffffffff1690565b87613aca565b612acc845194612ab1612aa3855195612a9360408201998a51612a7a8d5163ffffffff1690565b89516001600160a01b03169160a086019b8c5194613b37565b5192519751985163ffffffff1690565b93516001600160a01b031690565b935163ffffffff9485604051968796169a1698339386612b14565b0390a461040e6001606555565b600460405163582f497d60e11b8152fd5b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b95949392919060a0870190875260209060a08289015282518091528160c089019301905f5b818110612ba6575050506001600160a01b03809316604088015286820360608801528080855193848152019401925f905b838210612b8d57505050505090608061040e929401906001600160a01b03169052565b8451811686529482019493820193600190910190612b6a565b825185529383019391830191600101612b39565b3561067f8161044f565b3561067f816103f2565b9190610180838203126103ae57612be36105d1565b92612bed81610403565b8452612bfb60208201610403565b6020850152612c0c60408201610403565b6040850152612c1d60608201610403565b6060850152612c2e60808201610403565b608085015260a081013560a085015260c081013560c085015260e081013560e0850152610100612c5f81830161045d565b90850152610120612c7181830161045d565b90850152610140612c8381830161045d565b90850152610160918282013567ffffffffffffffff81116103ae57612ca89201610664565b90830152565b903590601e19813603018212156103ae570180359067ffffffffffffffff82116103ae576020019181360383136103ae57565b15612ce857565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152fd5b15612d5957565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152fd5b15612dca57565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b80518210156128cc5760209160051b010190565b908210156128cc576110099160051b810190612cae565b908092918237015f815290565b3d15612e96573d90612e7d82610612565b91612e8b604051938461058f565b82523d5f602084013e565b606090565b908060209392818452848401375f828201840152601f01601f1916010190565b612edb9291610ead610f5c92610e8a60ff5f5460081c16610e7281612dc3565b61040e610c5a77deaddeaddeaddeaddeaddeaddeaddeaddead0000000000007fffffffffffffffff0000000000000000000000000000000000000000ffffffff825416179055565b634e487b7160e01b5f52601160045260245ffd5b91909163ffffffff80809416911601918211612f4f57565b612f23565b96929a94999397909195989963ffffffff91612f738342169182612f37565b91612f7c61365e565b61086b5460ff8160e81c166107115760c01c84169c612f9a8e613197565b612fc19061086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b8c612fde8b6001600160a01b03165f5261086d60205260405f2090565b5f918252602052604090205460ff1615611e3857612ffc83426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e57848416428110908115613162575b50611daf57809481168061312b575b50506001600160a01b039a8b7f0000000000000000000000000000000000000000000000000000000000000000168c8b1681811480613122575b156131085750813403611cfd57803b156103ae575f60049160405192838092630d0e30db60e41b825234905af18015611cf8576130f5575b505b6040519b8c9b169e6130c79a8c6144c5565b037fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f91a461040e6001606555565b80611cec6131029261050b565b5f6130b3565b905034611cfd578161311d91309033906146f0565b6130b5565b5034151561307b565b6301e13380101561314e575b506001600160a01b03861615611d6f575f80613041565b61315b9194508290612f37565b925f613137565b9050613190867f000000000000000000000000000000000000000000000000000000000000000016426144b8565b105f613032565b63ffffffff809116908114612f4f5760010190565b9392916020916131c491604087526040870191612e9b565b930152565b906020828203126103ae57813567ffffffffffffffff81116103ae5761067f9201612bce565b908160209103126103ae57604051906020820182811067ffffffffffffffff8211176105065760405235815290565b80516001600160a01b0316825261067f91610180906020838101516001600160a01b0316908201526040838101516001600160a01b0316908201526060838101516001600160a01b0316908201526080838101516001600160a01b03169082015260a083015160a082015260c083015160c082015260e083015160e08201526132b5610100808501519083019063ffffffff169052565b6101208381015163ffffffff16908201526101408381015163ffffffff1690820152816101608094015193820152019061102e565b9291906131c460209160408652604086019061321e565b90602061067f92818152019061102e565b634e487b7160e01b5f52602160045260245ffd5b6003111561333057565b613312565b969091939792959461067f9b9995610140996001600160a01b0398898098818098168d521660208c015260408b015260608a015263ffffffff80921660808a01521660a08801521660c08601521660e084015216610100820152816101208201520191612e9b565b906133a7826107db565b6133b4604051918261058f565b82815280926133c5601f19916107db565b01905f5b8281106133d557505050565b8060606020809385010152016133c9565b6020818303126103ae5780519067ffffffffffffffff82116103ae570181601f820112156103ae57805161341981610612565b92613427604051948561058f565b818452602082840101116103ae5761067f916020808501910161100d565b949096939561345261365e565b60ff61086b5460e01c16610c4e5761346d6101408701612bba565b63ffffffff804216911610158061352e575b610c065761348d3687612bce565b61349690613c2f565b9761349f6105b1565b986134aa3689612bce565b8a5260208a0152604089018490526001600160a01b03851660608a01526134d236848a61062e565b60808a015260a08901526134e586612bc4565b966134f36101008801612bba565b9236906134ff9261062e565b94369061350b9261062e565b9460e001359061351a966143b2565b3361352491613d68565b61040e6001606555565b5061353b60408701612bc4565b6001600160a01b031633141561347f565b734200000000000000000000000000000000000007803303613634576020600491604051928380927f6e296e450000000000000000000000000000000000000000000000000000000082525afa908115611cf8575f91613605575b506001600160a01b036135d26135c6610869546001600160a01b031690565b6001600160a01b031690565b9116036135db57565b60046040517f36a816d9000000000000000000000000000000000000000000000000000000008152fd5b613627915060203d60201161362d575b61361f818361058f565b8101906146cc565b5f6135a7565b503d613615565b60046040517f4a74df92000000000000000000000000000000000000000000000000000000008152fd5b60026065541461366f576002606555565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b91908203918211612f4f57565b6040513d5f823e3d90fd5b929361067f9695919294610140956001600160a01b0380951686525f60208701526040860152606085015263ffffffff809116608085015260a08401525f60c08401521660e08201525f61010082015281610120820152019061102e565b919596939492909261376b612a0d613764886137578b6001600160a01b03165f5261086d60205260405f2090565b905f5260205260405f2090565b5460ff1690565b611e385760070b936706f05b59d3b20000613785866146e1565b1015613931576ec097ce7bc90715b34b9f100000000082116139075763ffffffff936137b3858a16426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e5761086b5460c01c63ffffffff16986137f5610e8a8b613197565b6001600160a01b0395867f00000000000000000000000000000000000000000000000000000000000000001694878b16868114806138fe575b156138c15750803403611cfd57853b156103ae575f60049660405197888092630d0e30db60e41b825234905af18015611cf8577fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f996138a997613898926138ae575b505b8261474d565b91604051988998169c169a876136cb565b0390a4565b80611cec6138bb9261050b565b5f613890565b6138a996507fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f996138f98361389893309033906146f0565b613892565b5034151561382e565b60046040517fc45b6b52000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa13c425c000000000000000000000000000000000000000000000000000000008152fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168114613992575b50565b4761399a5750565b4790803b156103ae575f90600460405180948193630d0e30db60e41b83525af18015611cf8571561398f5761040e9061050b565b9081518082526020808093019301915f5b8281106139ed575050505090565b83516001600160a01b0316855293810193928101926001016139df565b6040805160208082018181528551838501528186015160608401529285015160c0608084015280516101008401819052610120840198979692918201915f5b828110613ab6575050505081613a9f61067f979860a084613a796060613aad9701518387019063ffffffff169052565b60808101516001600160a01b031660c08601520151838203603f190160e08501526139ce565b03601f19810183528261058f565b51902091614783565b83518b529981019992810192600101613a49565b613ad5600291612892565b500162ffffff8260081c16805f5281602052600160ff60405f205494161b8080941614613b0d575f5260205260405f20908154179055565b60046040517f954476d9000000000000000000000000000000000000000000000000000000008152fd5b9294939190938051825103613c05578151915f5b838110613bb7575050505082613b62575b50505050565b6001600160a01b0381613b967f828fc203220356df8f072a91681caee7d5c75095e2a95e80ed5a14b384697f719386614830565b6040805195865233602087015291169463ffffffff1693a45f808080613b5c565b80613bc460019284612e34565b5180613bd2575b5001613b4b565b613bff90613bf0613be38488612e34565b516001600160a01b031690565b6001600160a01b0389166147d4565b5f613bcb565b60046040517fcd298b38000000000000000000000000000000000000000000000000000000008152fd5b604051613c4681613a9f60208201944690866132ea565b51902090565b613c5582613326565b52565b906001600160a01b038251168152606080613c82602085015160806020860152608085019061102e565b9360408101516040850152015191613c9983613326565b015290565b9a97909695613d1c9661067f9d9b9660808e613d0b98613d2b9e986101809d6001600160a01b03998a80921685521660208401526040830152606082015201528c60a063ffffffff8094169101521660c08c01521660e08a01526101008901906001600160a01b03169052565b6001600160a01b0316610120870152565b8061014086015284019061102e565b91610160818403910152613c58565b9061067f94936080936001600160a01b0380931684526020840152166040820152816060820152019061102e565b805191610120830190613d7f825163ffffffff1690565b63ffffffff429116106140665760208301516001613da6825f5261087260205260405f2090565b540361405f576001905b6002613dc5825f5261087260205260405f2090565b541461403557613dde905f5261087260205260405f2090565b6002905560608501516001600160a01b031660808601516001600160a01b03169260a0870151918660c0890151948960a08301519660e082015197610100830151613e2c9063ffffffff1690565b9a5163ffffffff1661014084015163ffffffff16906040850151613e56906001600160a01b031690565b928551613e69906001600160a01b031690565b946020870151613e7f906001600160a01b031690565b9661016001519760608a0151613e9b906001600160a01b031690565b996080810151906040015190613eaf6105f2565b6001600160a01b03909c168c5260208c015260408b0152613ed39060608b01613c4c565b6040519b6001600160a01b038d9c169f63ffffffff169e613ef49b8d613c9e565b037f571749edf1d5c9599318cdbc4e28a6475d65e87fd3b2ddbe1e9a8d5e7a0f0ff791a460608101516001600160a01b03169182903382148061402d575b613b5c57608001516001600160a01b03169260806040840151936001600160a01b03861685856001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683145f1461401d5750613f9891309033906146f0565b613fa2858461493c565b015191825115159081614012575b50613fbb5750505050565b803b156103ae57613fe8935f809460405196879586948593633a5be8cb60e01b8552339160048601613d3a565b03925af18015611cf857613fff575b808080613b5c565b80611cec61400c9261050b565b5f613ff7565b90503b15155f613fb0565b6140289233906146f0565b613fa2565b506001613f32565b60046040517f8f260c60000000000000000000000000000000000000000000000000000000008152fd5b5f90613db0565b600460405163d642b7d960e01b8152fd5b905f8251610120810161408e815163ffffffff1690565b63ffffffff4291161061406657602085015160026140b5825f5261087260205260405f2090565b5414614035576140ce905f5261087260205260405f2090565b6002905560608201516001600160a01b031660808301516001600160a01b03169060a08401519260c0850151918860a0810151938760e08101519561010082015161411c9063ffffffff1690565b955163ffffffff1661014083015163ffffffff1660408401516001600160a01b0316918451614151906001600160a01b031690565b936020860151614167906001600160a01b031690565b956101600151966060890151614183906001600160a01b031690565b9860808101519060400151906141976105f2565b6001600160a01b03909b168b5260208b015260408a0152600260608a01526040519d63ffffffff8f9c169d6141cc9b8d613c9e565b037f571749edf1d5c9599318cdbc4e28a6475d65e87fd3b2ddbe1e9a8d5e7a0f0ff7905f94a460608401516001600160a01b0316906001600160a01b0394858316918233148061432b575b61432257608001516001600160a01b03169060408101519687818416917f00000000000000000000000000000000000000000000000000000000000000001682145f1461430b579060809291876142f7575b61427491508561493c565b0151928351151590816142ec575b50614290575b505050509050565b813b156142e857836142bc959660405196879586948593633a5be8cb60e01b8552339160048601613d3a565b03925af18015611cf8576142d5575b8080808493614288565b80611cec6142e29261050b565b5f6142cb565b8380fd5b90503b15155f614282565b61430491309033906146f0565b5f88614269565b60809291965061431d90865f986147d4565b614274565b50505050509050565b505f614217565b908160209103126103ae575190565b1561434857565b608460405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152fd5b93926042936001600160a01b0361040e989760208151910120916040519363ffffffff60208601967f152eb71524aef34d838ab76573c14b1ebfa5e385d9ab29d7cf5398daa2438bd9885216604086015286606086015260808501521660a083015260c082015260c0815261442681610557565b5190209061047f549061048054906040519160208301937fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e85526040840152606083015260808201526080815261447c81610573565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090614c76565b91908201809211612f4f57565b6001600160a01b03918216815291811660208301526040820192909252606081019290925263ffffffff928316608083015292821660a0820152921660c083015291821660e08201529116610100820152610140610120820181905261067f93910191612e9b565b61040e60ff5f5460081c16612dc3565b61455160ff5f5460081c16610f3281612dc3565b6001606555565b6001600160a01b031680156145a057610869816001600160a01b03198254161790557fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e8495f80a2565b60046040517fba97b39d000000000000000000000000000000000000000000000000000000008152fd5b6001600160a01b031680156146125761086a816001600160a01b03198254161790557fa73e8909f8616742d7fe701153d82666f7b7cd480552e23ebb05d358c22fd04e5f80a2565b60046040517fb6061256000000000000000000000000000000000000000000000000000000008152fd5b91612a0d906146b59284516040809601519186519161465a8361051f565b8252613aad6146756020840192468452898501958652612892565b505493885192839161469a6020840196602088525160608d86015260a085019061321e565b9151606084015251608083015203601f19810183528261058f565b6146bc5750565b6004905163582f497d60e11b8152fd5b908160209103126103ae575161067f816103f2565b5f81126146eb5790565b5f0390565b909261040e93604051937f23b872dd0000000000000000000000000000000000000000000000000000000060208601526001600160a01b03809216602486015216604484015260648301526064825261474882610573565b614d85565b90670de0b6b3a7640000915f828403921283831281169084841390151617612f4f57818102918183041490151715612f4f570490565b929091905f915b84518310156147cc5761479d8386612e34565b5190818110156147bb575f52602052600160405f205b92019161478a565b905f52602052600160405f206147b3565b915092501490565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039092166024830152604482019290925261040e9161474882606481015b03601f19810184528361058f565b907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03808316818316149081614911575b501561490657508161487a91615215565b61086a546001600160a01b0316610c5a5463ffffffff16915f3b156103ae576040517f4c598b560000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152602482015263ffffffff9190911660448201525f8160648183805af18015611cf8576148f95750565b80611cec61040e9261050b565b905061040e91614e7f565b90507f000000000000000000000000000000000000000000000000000000000000000016155f614869565b6001600160a01b0390811690813b1561497c579061040e92917f0000000000000000000000000000000000000000000000000000000000000000166147d4565b7f000000000000000000000000000000000000000000000000000000000000000016803b156103ae575f8091602460405180948193632e1a7d4d60e01b83528860048401525af18015611cf857614a9c575b50814710614a58575f80809381935af16149e6612e6c565b50156149ee57565b608460405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152fd5b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152fd5b614aa59061050b565b5f6149ce565b90614ab582614bc9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115801590614b70575b614af6575050565b61398f915f8060405193614b098561051f565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208601527f206661696c6564000000000000000000000000000000000000000000000000006040860152602081519101845af4614b6a612e6c565b916155e6565b505f614aee565b90614b8182614bc9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115801590614bc157614af6575050565b506001614aee565b803b15614c0c576001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91166001600160a01b0319825416179055565b608460405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b614c8083836155b5565b600581959295101561333057159384614d6f575b508315614cd0575b50505015614ca657565b60046040517f938a1821000000000000000000000000000000000000000000000000000000008152fd5b5f929350908291604051614d2181613a9f60208201947f1626ba7e00000000000000000000000000000000000000000000000000000000998a8752602484015260406044840152606483019061102e565b51915afa90614d2e612e6c565b82614d61575b82614d44575b50505f8080614c9c565b614d5991925060208082518301019101614332565b145f80614d3a565b915060208251101591614d34565b6001600160a01b0383811691161493505f614c94565b604051614ddc916001600160a01b0316614d9e826104ea565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614b6a612e6c565b8051828115918215614e5f575b5050905015614df55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b83809293500103126103ae57810151614e77816109fe565b80825f614de9565b906001600160a01b0390818116907f000000000000000000000000000000000000000000000000000000000000000083168203614fa35750803b156103ae575f6040518092632e1a7d4d60e01b8252818381614ee389600483019190602083019252565b03925af18015611cf857614f90575b50610c5a5491614f0b61086a546001600160a01b031690565b73420000000000000000000000000000000000001090813b156103ae57604051631474f2a960e31b8152602086901c949094166001600160a01b0390811660048601521660248401526044830182905263ffffffff909316606483015260a060848301525f60a483018190529192839160c4918391905af18015611cf8576148f95750565b80611cec614f9d9261050b565b5f614ef2565b91807f0000000000000000000000000000000000000000000000000000000000000000161515806151ea575b15614ff35750505061040e90614fee61086a546001600160a01b031690565b615377565b80615020615013856001600160a01b03165f52610c5c60205260405f2090565b546001600160a01b031690565b166151c6577342000000000000000000000000000000000000105b169061505f6135c6615013856001600160a01b03165f52610c5d60205260405f2090565b1561514057838261506f926152aa565b61508e615013836001600160a01b03165f52610c5d60205260405f2090565b906150a261086a546001600160a01b031690565b916150b3610c5a5463ffffffff1690565b823b156103ae576040517f540abf730000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201529185166024830152929093166044840152606483019390935263ffffffff16608482015260c060a48201525f60c482018190529091829081838160e481015b03925af18015611cf8576148f95750565b509161515561086a546001600160a01b031690565b92615166610c5a5463ffffffff1690565b93813b156103ae575f809461512f60405197889687958694631474f2a960e31b8652600486019260c0949163ffffffff936001600160a01b038092168652166020850152604084015216606082015260a060808201525f60a08201520190565b6151e5615013846001600160a01b03165f52610c5c60205260405f2090565b61503b565b50807f0000000000000000000000000000000000000000000000000000000000000000168214614fcf565b9060405190636eb1769f60e11b82523060048301525f60248301526020826044816001600160a01b0387165afa918215611cf8575f92615289575b508101809111612f4f5760405163095ea7b360e01b60208201525f6024820152604481019190915261040e916147488260648101614822565b6152a391925060203d602011610e0857610df9818361058f565b905f615250565b604051636eb1769f60e11b81523060048201526001600160a01b03831660248201529192602083806044810103816001600160a01b0386165afa928315611cf8575f93615336575b508201809211612f4f5760405163095ea7b360e01b60208201526001600160a01b039093166024840152604483019190915261040e91906147488260648101614822565b61535091935060203d602011610e0857610df9818361058f565b915f6152f2565b908160209103126103ae575167ffffffffffffffff811681036103ae5790565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0392837f000000000000000000000000000000000000000000000000000000000000000016916153d18284866152aa565b604092604051937fcb75c11c0000000000000000000000000000000000000000000000000000000085526020936004908587600481875afa978815611cf85789975f9961558e575b506040517fa56ec6320000000000000000000000000000000000000000000000000000000081526001600160a01b03918916918216600482015299909887918b9190829081602481015b0392165afa988915611cf8575f9961556f575b509390951696947f000000000000000000000000000000000000000000000000000000000000000093805b6154b057505050505050505050565b61551a90878111156155695787905b84517f6fd3504e00000000000000000000000000000000000000000000000000000000815284810183815263ffffffff89166020820152604081018d90526001600160a01b038c166060820152909389918591829160800190565b03815f8a5af1928315611cf8576155369361553c575b506136b3565b806154a1565b61555b90893d8b11615562575b615553818361058f565b810190615357565b505f615530565b503d615549565b806154bf565b615587919950863d8811610e0857610df9818361058f565b975f615476565b87919950886155ac61546392843d861161362d5761361f818361058f565b9a925050615419565b9060418151145f146155dd5761100991602082015190606060408401519301515f1a9061567e565b50505f90600290565b9192901561564757508151156155fa575090565b3b156156035790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561565a5750805190602001fd5b610dc79060405191829162461bcd60e51b835260206004840152602483019061102e565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116156ee576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611cf8575f516001600160a01b038116156156e657905f90565b505f90600190565b505050505f9060039056fea26469706673582212205da892829a36f0fc25321ed6701e63b593b8870a6cdf3a2f09531ad0d6a7d70964736f6c63430008170033",
2313
+ "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c8063079bd2c71461039f5780630c5d5f731461039a5780630eaac9f0146103955780631186ec331461039057806311eac8551461038b57806315348e441461032257806317fcb39b146103865780631b3d555914610381578063272751c71461037c57806329cb924d146103775780632cfc26c5146103725780632e3781151461036d5780633659cfe614610368578063431023b814610363578063437b91161461035e578063490e49ef14610359578063493a4f84146103545780634e0fb8f51461034f5780634f1ef2861461034a5780635249fef1146103455780635285e0581461034057806352d1902d1461033b578063541f4f141461033657806357f6dcb8146103315780636068d6cb1461032c578063647c576c146103275780636bbbcd2e146103225780636e4009831461031d578063738b62e514610318578063766e0703146103135780637aef642c1461030e5780637b939232146102d757806382e2c43f146103095780638a7860ce14610304578063927ede2d146102ff5780639748cf7c146102fa578063979f2bc2146102f55780639963e5a8146102f057806399cc2968146102eb5780639a8a0592146102e6578063a1244c67146102e1578063ac9650d8146102dc578063add051a3146102d7578063b27a4300146102d2578063b370b7f5146102cd578063bbca7db0146102c8578063bf10268d146102c3578063c35c83fc146102be578063ccfa5971146102b9578063ceb4c987146102b4578063dda52113146102af578063ddd224f1146102aa578063de7eba78146102a5578063e3229211146102a0578063ee2a53f81461029b578063fbbba9ac146102965763fc8a584f0361000e57612993565b61290f565b6128d1565b612855565b612825565b6127fc565b6127d6565b6127b8565b612735565b61270a565b612686565b612545565b61251e565b6124df565b611b3d565b612421565b612397565b61237d565b6122cf565b6120d3565b6120a9565b612066565b612038565b611fc0565b611e62565b6119f8565b6119d4565b611925565b6118e5565b61077e565b6117a4565b61174c565b61170c565b611677565b6115a2565b61157b565b61152d565b611385565b61126b565b6111b6565b611198565b6110cb565b610e0f565b610c5f565b610b0a565b610ac1565b610aa7565b610a08565b610926565b610798565b61073b565b610682565b610468565b610410565b6103b2565b5f9103126103ae57565b5f80fd5b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6001600160a01b038116036103ae57565b359061040e826103f2565b565b346103ae5760203660031901126103ae57602060043561042f816103f2565b6001600160a01b038091165f52610c5d825260405f205416604051908152f35b63ffffffff8116036103ae57565b359061040e8261044f565b346103ae5760203660031901126103ae5763ffffffff60043561048a8161044f565b61049261354c565b61049a61365e565b16610c5a8163ffffffff198254161790557fe486a5c4bd7b36eabbfe274c99b39130277417be8d2209b4dae04c4fba64ee3a5f80a26001606555005b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761050657604052565b6104d6565b67ffffffffffffffff811161050657604052565b6060810190811067ffffffffffffffff82111761050657604052565b6020810190811067ffffffffffffffff82111761050657604052565b60e0810190811067ffffffffffffffff82111761050657604052565b60a0810190811067ffffffffffffffff82111761050657604052565b90601f8019910116810190811067ffffffffffffffff82111761050657604052565b6040519060c0820182811067ffffffffffffffff82111761050657604052565b60405190610180820182811067ffffffffffffffff82111761050657604052565b604051906080820182811067ffffffffffffffff82111761050657604052565b67ffffffffffffffff811161050657601f01601f191660200190565b92919261063a82610612565b91610648604051938461058f565b8294818452818301116103ae578281602093845f960137010152565b9080601f830112156103ae5781602061067f9335910161062e565b90565b6101003660031901126103ae5760043561069b816103f2565b6024356106a7816103f2565b6084358060070b81036103ae5760a435906106c18261044f565b60c43567ffffffffffffffff81116103ae576106e1903690600401610664565b926106ea61365e565b60ff61086b5460e81c166107115761070a94606435916044359133613729565b6001606555005b60046040517f5a65d188000000000000000000000000000000000000000000000000000000008152fd5b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae575f3660031901126103ae5760206040515f8152f35b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b67ffffffffffffffff81116105065760051b60200190565b9080601f830112156103ae57602090823561080d816107db565b9361081b604051958661058f565b81855260208086019260051b8201019283116103ae57602001905b828210610844575050505090565b81358152908301908301610836565b9080601f830112156103ae57602090823561086d816107db565b9361087b604051958661058f565b81855260208086019260051b8201019283116103ae57602001905b8282106108a4575050505090565b83809183356108b2816103f2565b815201910190610896565b92916108c8826107db565b916108d6604051938461058f565b829481845260208094019160051b81019283116103ae57905b8282106108fc5750505050565b813581529083019083016108ef565b9080601f830112156103ae5781602061067f933591016108bd565b6003196060368201126103ae5760043561093f8161044f565b60243567ffffffffffffffff928382116103ae5760c09082360301126103ae576109676105b1565b90806004013582526024810135602083015260448101358481116103ae5761099590600436918401016107f3565b60408301526109a66064820161045d565b60608301526109b760848201610403565b608083015260a4810135908482116103ae5760046109d89236920101610853565b60a08201526044359283116103ae576109f861001893369060040161090b565b916129c3565b801515036103ae57565b346103ae5760603660031901126103ae57600435610a25816103f2565b602435907f0a21fdd43d0ad0c62689ee7230a47309a050755bcc52eba00310add65297692a60206001600160a01b0360443593610a61856109fe565b610a6961354c565b610a7161365e565b1692835f5261086d825260405f20855f52825260405f209015159060ff1981541660ff8316179055604051908152a36001606555005b346103ae575f3660031901126103ae576020604051428152f35b346103ae575f3660031901126103ae5760206040517f152eb71524aef34d838ab76573c14b1ebfa5e385d9ab29d7cf5398daa2438bd98152f35b90816101809103126103ae5790565b346103ae5760403660031901126103ae5760043567ffffffffffffffff81116103ae57610b3b903690600401610afb565b610b4361365e565b60ff61086b5460e01c16610c4e57610b5e6101408201612bba565b63ffffffff8042169116101580610c30575b610c0657610bfc90610be8610b8d610b883684612bce565b613c2f565b9160c0610be1610b9f60208401612bc4565b610bad610160850185612cae565b939094610bb86105b1565b97610bc33683612bce565b89526020890152013560408701526001600160a01b03166060860152565b369161062e565b608082015260243560a08201523390613d68565b6100186001606555565b60046040517fc3a9b9d0000000000000000000000000000000000000000000000000000000008152fd5b50610c3d60408201612bc4565b6001600160a01b0316331415610b70565b6004604051633d90fc5560e11b8152fd5b346103ae5760203660031901126103ae57600435610c7c816103f2565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001691610cb583301415612ce1565b610ce47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc938285541614612d52565b610cec61354c565b60405190610cf98261053b565b5f82527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d325750506100189150614bc9565b6020600491604094939451928380926352d1902d60e01b825286165afa5f9181610dde575b50610dcb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608490fd5b0390fd5b61001893610dd99114614341565b614aab565b610e0191925060203d602011610e08575b610df9818361058f565b810190614332565b905f610d57565b503d610def565b346103ae5760803660031901126103ae57610018600435610e2f8161044f565b610f61602435610e3e816103f2565b610f5c60443591610e4e836103f2565b610ead60643595610e5e876103f2565b610e8a60ff5f5460081c16610e7281612dc3565b610c5a805463ffffffff1916624c4b40179055612dc3565b61086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b604051610eb9816104ea565b6009815260208101907f4143524f53532d56320000000000000000000000000000000000000000000000825260405191610ef2836104ea565b6005835260208301917f312e302e300000000000000000000000000000000000000000000000000000008352610f3760ff5f5460081c16610f3281612dc3565b612dc3565b519020915190209061047f5561048055610f4f61452d565b610f5761453d565b614558565b6145ca565b610c5a907fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000083549260201b169116179055565b9181601f840112156103ae5782359167ffffffffffffffff83116103ae576020808501948460051b0101116103ae57565b60206003198201126103ae576004359067ffffffffffffffff82116103ae5761100991600401610fad565b9091565b5f5b83811061101e5750505f910152565b818101518382015260200161100f565b906020916110478151809281855285808601910161100d565b601f01601f1916010190565b6020808201908083528351809252604092604081018260408560051b8401019601945f925b858410611089575050505050505090565b9091929394959685806110ba600193603f1986820301885286838d518051151584520151918185820152019061102e565b990194019401929594939190611078565b346103ae576110d936610fde565b6110e2816107db565b9160406110f2604051948561058f565b828452601f19611101846107db565b015f5b8181106111755750505f5b83811061112857604051806111248782611053565b0390f35b8061116f61113860019388612e34565b515f80611146858a8a612e48565b90611155895180938193612e5f565b0390305af490611163612e6c565b60208201529015159052565b0161110f565b6020908351611183816104ea565b5f815282606081830152828901015201611104565b346103ae575f3660031901126103ae5760206040516301e133808152f35b346103ae5760403660031901126103ae576024356004356111d561354c565b6111dd61365e565b61086c8054680100000000000000008110156105065763ffffffff916001820190558361120982612892565b5084600182015555167fc86ba04c55bc5eb2f2876b91c438849a296dbec7b08751c3074d92e04f0a77af5f80a46001606555005b9181601f840112156103ae5782359167ffffffffffffffff83116103ae57602083818601950101116103ae57565b346103ae5760c03660031901126103ae57600435611288816103f2565b602435906112958261044f565b6044356064356112a4816103f2565b67ffffffffffffffff916084358381116103ae576112c690369060040161123d565b93909460a4359182116103ae5761136963ffffffff7fb0a29aed3d389a1041194255878b423f7780be3ed2324d4693508c6ff189845e9661130e61137b95369060040161123d565b93909961131961365e565b6113408c8c8b8b61133761132e368a8961062e565b938b369161062e565b9346908c6143b2565b6001600160a01b0392836040519a8b9a8b521660208a0152608060408a01526080890191612e9b565b93868503606088015216981696612e9b565b0390a36001606555005b60403660031901126103ae5760043561139d816103f2565b60243567ffffffffffffffff81116103ae576113bd903690600401610664565b906001600160a01b0391827f000000000000000000000000000000000000000000000000000000000000000016926113f784301415612ce1565b6114267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc948286541614612d52565b61142e61354c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114645750506100189150614bc9565b6020600491604094939451928380926352d1902d60e01b825286165afa5f918161150c575b506114f95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608490fd5b610018936115079114614341565b614b77565b61152691925060203d602011610e0857610df9818361058f565b905f611489565b346103ae5760403660031901126103ae576001600160a01b03600435611552816103f2565b165f5261086d60205260405f206024355f52602052602060ff60405f2054166040519015158152f35b346103ae575f3660031901126103ae5760206001600160a01b036108695416604051908152f35b346103ae575f3660031901126103ae576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361160d576040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152602090f35b608460405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152fd5b6101203660031901126103ae57600435611690816103f2565b6024359061169d826103f2565b604435916116aa836103f2565b60a4358060070b81036103ae5760c435916116c48361044f565b60e43567ffffffffffffffff81116103ae576116e4903690600401610664565b936116ed61365e565b60ff61086b5460e81c166107115761070a956084359260643592613729565b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae575f3660031901126103ae57602060ff61086b5460e81c166040519015158152f35b60609060031901126103ae5760043561178a8161044f565b90602435611797816103f2565b9060443561067f816103f2565b346103ae576117b236611772565b5f54600881901c60ff16159392908490816118d7575b81156118b7575b501561184d576117f392846117ea600160ff195f5416175f55565b61183657612ebb565b6117f957005b61180761ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b61184861010061ff00195f5416175f55565b612ebb565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b303b159150816118c9575b505f6117cf565b6001915060ff16145f6118c2565b600160ff82161091506117c8565b346103ae575f3660031901126103ae57602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae5760203660031901126103ae577fe88463c2f254e2b070013a2dc7ee1e099f9bc00534cbdf03af551dc26ae492196020600435611965816109fe565b61196d61354c565b61197561365e565b151561086b80547fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7dff00000000000000000000000000000000000000000000000000000000008460e81b169116179055604051908152a16001606555005b346103ae575f3660031901126103ae57602063ffffffff610c5a5416604051908152f35b6101603660031901126103ae57600435611a11816103f2565b60243590611a1e826103f2565b604435611a2a816103f2565b60643590611a37826103f2565b60e435611a43816103f2565b6101043590611a518261044f565b6101243592611a5f8461044f565b610144359667ffffffffffffffff88116103ae57611a8461001898369060040161123d565b97909660c4359360a4359360843593612f54565b906101806003198301126103ae57600435611ab2816103f2565b91602435611abf816103f2565b91604435611acc816103f2565b91606435611ad9816103f2565b916084359160a4359160c4359160e435611af2816103f2565b9161010435611b008161044f565b9161012435611b0e8161044f565b9161014435611b1c8161044f565b91610164359067ffffffffffffffff82116103ae576110099160040161123d565b611b4636611a98565b959996919a92909493611b5b9c98999c61365e565b61086b549260ff8460e81c166107115763ffffffff809460c01c169c611b808e613197565b611ba79061086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b8c611bc48b6001600160a01b03165f5261086d60205260405f2090565b5f918252602052604090205460ff1615611e3857611be4858416426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e57848416428110908115611dd9575b50611daf57809480821680611d4a575b5050506001600160a01b039a8b7f0000000000000000000000000000000000000000000000000000000000000000168c8b1681811480611d41575b15611d275750813403611cfd57803b156103ae575f60049160405192838092630d0e30db60e41b825234905af18015611cf857611cdf575b505b6040519b8c9b169e611cb19a8c6144c5565b037fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f91a46100186001606555565b80611cec611cf29261050b565b806103a4565b5f611c9d565b6136c0565b60046040517f6452a35d000000000000000000000000000000000000000000000000000000008152fd5b905034611cfd5781611d3c91309033906146f0565b611c9f565b50341515611c65565b6301e133801015611d99575b50506001600160a01b03861615611d6f575f8080611c2a565b60046040517f495d907f000000000000000000000000000000000000000000000000000000008152fd5b611da7929550421690612f37565b925f80611d56565b60046040517f582e3889000000000000000000000000000000000000000000000000000000008152fd5b9050611e07867f000000000000000000000000000000000000000000000000000000000000000016426144b8565b105f611c1a565b60046040517ff722177f000000000000000000000000000000000000000000000000000000008152fd5b60046040517f2a58c4f3000000000000000000000000000000000000000000000000000000008152fd5b346103ae5760603660031901126103ae5767ffffffffffffffff6024358181116103ae57611e9490369060040161123d565b916044359081116103ae57611ead90369060040161123d565b9060405193602085019480611ec44684888a6131ac565b0395611ed8601f199788810184528361058f565b6004359151902003611f96575f94611f07611f3f93611efe87611f4b958a9901906131c9565b958101906131ef565b5160405193849160208301967f2e378115000000000000000000000000000000000000000000000000000000008852602484016132ea565b0390810183528261058f565b5190305af4611f58612e6c565b9015611f6057005b610dc7906040519182917fb8fe37a700000000000000000000000000000000000000000000000000000000835260048301613301565b60046040517f1e191e8e000000000000000000000000000000000000000000000000000000008152fd5b346103ae5760203660031901126103ae57600435611fdc61354c565b611fe461365e565b611fed81612892565b612025576001815f80935501557f3569b846531b754c99cb80df3f49cd72fa6fe106aaee5ab8e0caf35a9d7ce88d5f80a26001606555005b634e487b7160e01b5f525f60045260245ffd5b346103ae575f3660031901126103ae5760206040517342000000000000000000000000000000000000078152f35b346103ae575f3660031901126103ae5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103ae57610018610ead610f5c6120c036611772565b939091610e8a60ff5f5460081c16612dc3565b346103ae5760203660031901126103ae576004803567ffffffffffffffff81116103ae576121049036908301610afb565b61210c61365e565b60ff61086b5460e01c166122bf5763ffffffff8042166101408301936121448261213587612bba565b63ffffffff9182169116101590565b612297576101208401918361215884612bba565b16106122885761216b610b883686612bce565b9061217f825f5261087260205260405f2090565b546122605750906121c46121be7f923794976d026d6b119735adc163cb71decfc903e17c3dc226c00789593c04e194935f5261087260205260405f2090565b60019055565b6122536121d360608601612bc4565b956121e060808701612bc4565b956122006121fa6121f46101008401612bba565b95612bba565b92612bba565b61220c60408301612bc4565b61221583612bc4565b9061222260208501612bc4565b92612231610160860186612cae565b9690956040519a8b9a169d60e08201359d60a060c0840135930135918c613335565b0390a36100186001606555565b6040517f012f9e44000000000000000000000000000000000000000000000000000000008152fd5b60405163d642b7d960e01b8152fd5b6040517f09deb9ec000000000000000000000000000000000000000000000000000000008152fd5b50604051633d90fc5560e11b8152fd5b346103ae5760203660031901126103ae577f2d5b62420992e5a4afce0e77742636ca2608ef58289fd2e1baa5161ef6e7e41e602060043561230f816109fe565b61231761354c565b61231f61365e565b151561086b80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7cff000000000000000000000000000000000000000000000000000000008460e01b169116179055604051908152a16001606555005b346103ae575f3660031901126103ae576020604051468152f35b346103ae575f3660031901126103ae57602063ffffffff61086b5460c01c16604051908152f35b6020808201906020835283518092526040830192602060408460051b8301019501935f915b8483106123f35750505050505090565b9091929394958480612411600193603f198682030187528a5161102e565b98019301930191949392906123e3565b346103ae5761242f36610fde565b906124398261339d565b915f5b818110612451576040518061112486826123be565b5f8061245e838587612e48565b60409391612470855180938193612e5f565b0390305af49061247e612e6c565b91156124a55750906001916124938287612e34565b5261249e8186612e34565b500161243c565b9060448151106103ae57610dc76124ca600492838101516024809183010191016133e6565b925192839262461bcd60e51b84528301613301565b346103ae5760203660031901126103ae5760206004356124fe816103f2565b6001600160a01b038091165f52610c5c825260405f205416604051908152f35b346103ae575f3660031901126103ae5760206001600160a01b0361086a5416604051908152f35b346103ae576003196060368201126103ae5760043567ffffffffffffffff8082116103ae576060823603938401126103ae57602435906125848261044f565b6044359081116103ae5761259c903690600401610fad565b9190936125a761365e565b60048401359061018219018112156103ae57610bfc9461265c936125d46126559360043691890101612bce565b956125f16125ec60808901516001600160a01b031690565b61395b565b6126436125fd88613c2f565b91604461261460208b01516001600160a01b031690565b916101608b0151946126246105b1565b9b8c5260208c0152013560408a01526001600160a01b03166060890152565b60808701525f60a087015236916108bd565b908361463c565b614077565b60409060031901126103ae57600435612679816103f2565b9060243561067f816103f2565b346103ae5761269436612661565b9061269d61354c565b6126a561365e565b6001600160a01b0380911691825f52610c5d6020526126dd8160405f20906001600160a01b03166001600160a01b0319825416179055565b16907fcb84c2022106a6f2b6f805d446f32fbfd2a528474364fa755f37dac1c0c1b6c85f80a36001606555005b346103ae5760203660031901126103ae576004355f52610872602052602060405f2054604051908152f35b346103ae5760c03660031901126103ae5767ffffffffffffffff6004358181116103ae57612767903690600401610afb565b60643590612774826103f2565b6084358381116103ae5761278c90369060040161123d565b9060a4359485116103ae576127a861001895369060040161123d565b9490936044359060243590613445565b346103ae575f3660031901126103ae57602060405163ffffffff8152f35b346103ae575f3660031901126103ae57602060ff61086b5460e01c166040519015158152f35b346103ae575f3660031901126103ae5760206040516ec097ce7bc90715b34b9f10000000008152f35b346103ae5760203660031901126103ae5761070a600435612845816103f2565b61284d61354c565b610f5761365e565b346103ae575f3660031901126103ae576020610c5a546001600160a01b0360405191831c168152f35b634e487b7160e01b5f52603260045260245ffd5b61086c9081548110156128cc576003915f52027f71cd7344f4eb2efc8e30291f6dbdb44d618ca368ea5425d217c1d604bf26b84d01905f90565b61287e565b346103ae5760203660031901126103ae5760043561086c548110156103ae576128fb604091612892565b506001815491015482519182526020820152f35b346103ae5761291d36612661565b9061292661354c565b61292e61365e565b6001600160a01b0380911691825f52610c5c6020526129668160405f20906001600160a01b03166001600160a01b0319825416179055565b16907ff3dc137d2246f9b8abd0bb821e185ba01122c9b3ea3745ffca6208037674d6705f80a36001606555005b346103ae5760203660031901126103ae5761070a6004356129b3816103f2565b6129bb61354c565b610f5c61365e565b916129cc61365e565b60808201916129e56125ec84516001600160a01b031690565b602081019182514603612aea57612a0d612a1191836001612a0589612892565b500154613a0a565b1590565b612ad9578060607ff8bd640004bcec1b89657020f561d0b070cbdf662d0b158db9dccb0a8301bfab920193612a53612a4d865163ffffffff1690565b87613aca565b612acc845194612ab1612aa3855195612a9360408201998a51612a7a8d5163ffffffff1690565b89516001600160a01b03169160a086019b8c5194613b37565b5192519751985163ffffffff1690565b93516001600160a01b031690565b935163ffffffff9485604051968796169a1698339386612b14565b0390a461040e6001606555565b600460405163582f497d60e11b8152fd5b60046040517f7a47c9a2000000000000000000000000000000000000000000000000000000008152fd5b95949392919060a0870190875260209060a08289015282518091528160c089019301905f5b818110612ba6575050506001600160a01b03809316604088015286820360608801528080855193848152019401925f905b838210612b8d57505050505090608061040e929401906001600160a01b03169052565b8451811686529482019493820193600190910190612b6a565b825185529383019391830191600101612b39565b3561067f8161044f565b3561067f816103f2565b9190610180838203126103ae57612be36105d1565b92612bed81610403565b8452612bfb60208201610403565b6020850152612c0c60408201610403565b6040850152612c1d60608201610403565b6060850152612c2e60808201610403565b608085015260a081013560a085015260c081013560c085015260e081013560e0850152610100612c5f81830161045d565b90850152610120612c7181830161045d565b90850152610140612c8381830161045d565b90850152610160918282013567ffffffffffffffff81116103ae57612ca89201610664565b90830152565b903590601e19813603018212156103ae570180359067ffffffffffffffff82116103ae576020019181360383136103ae57565b15612ce857565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152fd5b15612d5957565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152fd5b15612dca57565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b80518210156128cc5760209160051b010190565b908210156128cc576110099160051b810190612cae565b908092918237015f815290565b3d15612e96573d90612e7d82610612565b91612e8b604051938461058f565b82523d5f602084013e565b606090565b908060209392818452848401375f828201840152601f01601f1916010190565b612edb9291610ead610f5c92610e8a60ff5f5460081c16610e7281612dc3565b61040e610c5a77deaddeaddeaddeaddeaddeaddeaddeaddead0000000000007fffffffffffffffff0000000000000000000000000000000000000000ffffffff825416179055565b634e487b7160e01b5f52601160045260245ffd5b91909163ffffffff80809416911601918211612f4f57565b612f23565b96929a94999397909195989963ffffffff91612f738342169182612f37565b91612f7c61365e565b61086b5460ff8160e81c166107115760c01c84169c612f9a8e613197565b612fc19061086b9063ffffffff60c01b1963ffffffff60c01b83549260c01b169116179055565b8c612fde8b6001600160a01b03165f5261086d60205260405f2090565b5f918252602052604090205460ff1615611e3857612ffc83426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e57848416428110908115613162575b50611daf57809481168061312b575b50506001600160a01b039a8b7f0000000000000000000000000000000000000000000000000000000000000000168c8b1681811480613122575b156131085750813403611cfd57803b156103ae575f60049160405192838092630d0e30db60e41b825234905af18015611cf8576130f5575b505b6040519b8c9b169e6130c79a8c6144c5565b037fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f91a461040e6001606555565b80611cec6131029261050b565b5f6130b3565b905034611cfd578161311d91309033906146f0565b6130b5565b5034151561307b565b6301e13380101561314e575b506001600160a01b03861615611d6f575f80613041565b61315b9194508290612f37565b925f613137565b9050613190867f000000000000000000000000000000000000000000000000000000000000000016426144b8565b105f613032565b63ffffffff809116908114612f4f5760010190565b9392916020916131c491604087526040870191612e9b565b930152565b906020828203126103ae57813567ffffffffffffffff81116103ae5761067f9201612bce565b908160209103126103ae57604051906020820182811067ffffffffffffffff8211176105065760405235815290565b80516001600160a01b0316825261067f91610180906020838101516001600160a01b0316908201526040838101516001600160a01b0316908201526060838101516001600160a01b0316908201526080838101516001600160a01b03169082015260a083015160a082015260c083015160c082015260e083015160e08201526132b5610100808501519083019063ffffffff169052565b6101208381015163ffffffff16908201526101408381015163ffffffff1690820152816101608094015193820152019061102e565b9291906131c460209160408652604086019061321e565b90602061067f92818152019061102e565b634e487b7160e01b5f52602160045260245ffd5b6003111561333057565b613312565b969091939792959461067f9b9995610140996001600160a01b0398898098818098168d521660208c015260408b015260608a015263ffffffff80921660808a01521660a08801521660c08601521660e084015216610100820152816101208201520191612e9b565b906133a7826107db565b6133b4604051918261058f565b82815280926133c5601f19916107db565b01905f5b8281106133d557505050565b8060606020809385010152016133c9565b6020818303126103ae5780519067ffffffffffffffff82116103ae570181601f820112156103ae57805161341981610612565b92613427604051948561058f565b818452602082840101116103ae5761067f916020808501910161100d565b949096939561345261365e565b60ff61086b5460e01c16610c4e5761346d6101408701612bba565b63ffffffff804216911610158061352e575b610c065761348d3687612bce565b61349690613c2f565b9761349f6105b1565b986134aa3689612bce565b8a5260208a0152604089018490526001600160a01b03851660608a01526134d236848a61062e565b60808a015260a08901526134e586612bc4565b966134f36101008801612bba565b9236906134ff9261062e565b94369061350b9261062e565b9460e001359061351a966143b2565b3361352491613d68565b61040e6001606555565b5061353b60408701612bc4565b6001600160a01b031633141561347f565b734200000000000000000000000000000000000007803303613634576020600491604051928380927f6e296e450000000000000000000000000000000000000000000000000000000082525afa908115611cf8575f91613605575b506001600160a01b036135d26135c6610869546001600160a01b031690565b6001600160a01b031690565b9116036135db57565b60046040517f36a816d9000000000000000000000000000000000000000000000000000000008152fd5b613627915060203d60201161362d575b61361f818361058f565b8101906146cc565b5f6135a7565b503d613615565b60046040517f4a74df92000000000000000000000000000000000000000000000000000000008152fd5b60026065541461366f576002606555565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b91908203918211612f4f57565b6040513d5f823e3d90fd5b929361067f9695919294610140956001600160a01b0380951686525f60208701526040860152606085015263ffffffff809116608085015260a08401525f60c08401521660e08201525f61010082015281610120820152019061102e565b919596939492909261376b612a0d613764886137578b6001600160a01b03165f5261086d60205260405f2090565b905f5260205260405f2090565b5460ff1690565b611e385760070b936706f05b59d3b20000613785866146e1565b1015613931576ec097ce7bc90715b34b9f100000000082116139075763ffffffff936137b3858a16426136b3565b857f00000000000000000000000000000000000000000000000000000000000000001610611e0e5761086b5460c01c63ffffffff16986137f5610e8a8b613197565b6001600160a01b0395867f00000000000000000000000000000000000000000000000000000000000000001694878b16868114806138fe575b156138c15750803403611cfd57853b156103ae575f60049660405197888092630d0e30db60e41b825234905af18015611cf8577fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f996138a997613898926138ae575b505b8261474d565b91604051988998169c169a876136cb565b0390a4565b80611cec6138bb9261050b565b5f613890565b6138a996507fa123dc29aebf7d0c3322c8eeb5b999e859f39937950ed31056532713d0de396f996138f98361389893309033906146f0565b613892565b5034151561382e565b60046040517fc45b6b52000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa13c425c000000000000000000000000000000000000000000000000000000008152fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168114613992575b50565b4761399a5750565b4790803b156103ae575f90600460405180948193630d0e30db60e41b83525af18015611cf8571561398f5761040e9061050b565b9081518082526020808093019301915f5b8281106139ed575050505090565b83516001600160a01b0316855293810193928101926001016139df565b6040805160208082018181528551838501528186015160608401529285015160c0608084015280516101008401819052610120840198979692918201915f5b828110613ab6575050505081613a9f61067f979860a084613a796060613aad9701518387019063ffffffff169052565b60808101516001600160a01b031660c08601520151838203603f190160e08501526139ce565b03601f19810183528261058f565b51902091614783565b83518b529981019992810192600101613a49565b613ad5600291612892565b500162ffffff8260081c16805f5281602052600160ff60405f205494161b8080941614613b0d575f5260205260405f20908154179055565b60046040517f954476d9000000000000000000000000000000000000000000000000000000008152fd5b9294939190938051825103613c05578151915f5b838110613bb7575050505082613b62575b50505050565b6001600160a01b0381613b967f828fc203220356df8f072a91681caee7d5c75095e2a95e80ed5a14b384697f719386614830565b6040805195865233602087015291169463ffffffff1693a45f808080613b5c565b80613bc460019284612e34565b5180613bd2575b5001613b4b565b613bff90613bf0613be38488612e34565b516001600160a01b031690565b6001600160a01b0389166147d4565b5f613bcb565b60046040517fcd298b38000000000000000000000000000000000000000000000000000000008152fd5b604051613c4681613a9f60208201944690866132ea565b51902090565b613c5582613326565b52565b906001600160a01b038251168152606080613c82602085015160806020860152608085019061102e565b9360408101516040850152015191613c9983613326565b015290565b9a97909695613d1c9661067f9d9b9660808e613d0b98613d2b9e986101809d6001600160a01b03998a80921685521660208401526040830152606082015201528c60a063ffffffff8094169101521660c08c01521660e08a01526101008901906001600160a01b03169052565b6001600160a01b0316610120870152565b8061014086015284019061102e565b91610160818403910152613c58565b9061067f94936080936001600160a01b0380931684526020840152166040820152816060820152019061102e565b805191610120830190613d7f825163ffffffff1690565b63ffffffff429116106140665760208301516001613da6825f5261087260205260405f2090565b540361405f576001905b6002613dc5825f5261087260205260405f2090565b541461403557613dde905f5261087260205260405f2090565b6002905560608501516001600160a01b031660808601516001600160a01b03169260a0870151918660c0890151948960a08301519660e082015197610100830151613e2c9063ffffffff1690565b9a5163ffffffff1661014084015163ffffffff16906040850151613e56906001600160a01b031690565b928551613e69906001600160a01b031690565b946020870151613e7f906001600160a01b031690565b9661016001519760608a0151613e9b906001600160a01b031690565b996080810151906040015190613eaf6105f2565b6001600160a01b03909c168c5260208c015260408b0152613ed39060608b01613c4c565b6040519b6001600160a01b038d9c169f63ffffffff169e613ef49b8d613c9e565b037f571749edf1d5c9599318cdbc4e28a6475d65e87fd3b2ddbe1e9a8d5e7a0f0ff791a460608101516001600160a01b03169182903382148061402d575b613b5c57608001516001600160a01b03169260806040840151936001600160a01b03861685856001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683145f1461401d5750613f9891309033906146f0565b613fa2858461493c565b015191825115159081614012575b50613fbb5750505050565b803b156103ae57613fe8935f809460405196879586948593633a5be8cb60e01b8552339160048601613d3a565b03925af18015611cf857613fff575b808080613b5c565b80611cec61400c9261050b565b5f613ff7565b90503b15155f613fb0565b6140289233906146f0565b613fa2565b506001613f32565b60046040517f8f260c60000000000000000000000000000000000000000000000000000000008152fd5b5f90613db0565b600460405163d642b7d960e01b8152fd5b905f8251610120810161408e815163ffffffff1690565b63ffffffff4291161061406657602085015160026140b5825f5261087260205260405f2090565b5414614035576140ce905f5261087260205260405f2090565b6002905560608201516001600160a01b031660808301516001600160a01b03169060a08401519260c0850151918860a0810151938760e08101519561010082015161411c9063ffffffff1690565b955163ffffffff1661014083015163ffffffff1660408401516001600160a01b0316918451614151906001600160a01b031690565b936020860151614167906001600160a01b031690565b956101600151966060890151614183906001600160a01b031690565b9860808101519060400151906141976105f2565b6001600160a01b03909b168b5260208b015260408a0152600260608a01526040519d63ffffffff8f9c169d6141cc9b8d613c9e565b037f571749edf1d5c9599318cdbc4e28a6475d65e87fd3b2ddbe1e9a8d5e7a0f0ff7905f94a460608401516001600160a01b0316906001600160a01b0394858316918233148061432b575b61432257608001516001600160a01b03169060408101519687818416917f00000000000000000000000000000000000000000000000000000000000000001682145f1461430b579060809291876142f7575b61427491508561493c565b0151928351151590816142ec575b50614290575b505050509050565b813b156142e857836142bc959660405196879586948593633a5be8cb60e01b8552339160048601613d3a565b03925af18015611cf8576142d5575b8080808493614288565b80611cec6142e29261050b565b5f6142cb565b8380fd5b90503b15155f614282565b61430491309033906146f0565b5f88614269565b60809291965061431d90865f986147d4565b614274565b50505050509050565b505f614217565b908160209103126103ae575190565b1561434857565b608460405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152fd5b93926042936001600160a01b0361040e989760208151910120916040519363ffffffff60208601967f152eb71524aef34d838ab76573c14b1ebfa5e385d9ab29d7cf5398daa2438bd9885216604086015286606086015260808501521660a083015260c082015260c0815261442681610557565b5190209061047f549061048054906040519160208301937fc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e85526040840152606083015260808201526080815261447c81610573565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090614c76565b91908201809211612f4f57565b6001600160a01b03918216815291811660208301526040820192909252606081019290925263ffffffff928316608083015292821660a0820152921660c083015291821660e08201529116610100820152610140610120820181905261067f93910191612e9b565b61040e60ff5f5460081c16612dc3565b61455160ff5f5460081c16610f3281612dc3565b6001606555565b6001600160a01b031680156145a057610869816001600160a01b03198254161790557fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e8495f80a2565b60046040517fba97b39d000000000000000000000000000000000000000000000000000000008152fd5b6001600160a01b031680156146125761086a816001600160a01b03198254161790557fa73e8909f8616742d7fe701153d82666f7b7cd480552e23ebb05d358c22fd04e5f80a2565b60046040517fb6061256000000000000000000000000000000000000000000000000000000008152fd5b91612a0d906146b59284516040809601519186519161465a8361051f565b8252613aad6146756020840192468452898501958652612892565b505493885192839161469a6020840196602088525160608d86015260a085019061321e565b9151606084015251608083015203601f19810183528261058f565b6146bc5750565b6004905163582f497d60e11b8152fd5b908160209103126103ae575161067f816103f2565b5f81126146eb5790565b5f0390565b909261040e93604051937f23b872dd0000000000000000000000000000000000000000000000000000000060208601526001600160a01b03809216602486015216604484015260648301526064825261474882610573565b614d85565b90670de0b6b3a7640000915f828403921283831281169084841390151617612f4f57818102918183041490151715612f4f570490565b929091905f915b84518310156147cc5761479d8386612e34565b5190818110156147bb575f52602052600160405f205b92019161478a565b905f52602052600160405f206147b3565b915092501490565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039092166024830152604482019290925261040e9161474882606481015b03601f19810184528361058f565b907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03808316818316149081614911575b501561490657508161487a91615215565b61086a546001600160a01b0316610c5a5463ffffffff16915f3b156103ae576040517f4c598b560000000000000000000000000000000000000000000000000000000081526001600160a01b03929092166004830152602482015263ffffffff9190911660448201525f8160648183805af18015611cf8576148f95750565b80611cec61040e9261050b565b905061040e91614e7f565b90507f000000000000000000000000000000000000000000000000000000000000000016155f614869565b6001600160a01b0390811690813b1561497c579061040e92917f0000000000000000000000000000000000000000000000000000000000000000166147d4565b7f000000000000000000000000000000000000000000000000000000000000000016803b156103ae575f8091602460405180948193632e1a7d4d60e01b83528860048401525af18015611cf857614a9c575b50814710614a58575f80809381935af16149e6612e6c565b50156149ee57565b608460405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152fd5b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152fd5b614aa59061050b565b5f6149ce565b90614ab582614bc9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115801590614b70575b614af6575050565b61398f915f8060405193614b098561051f565b602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208601527f206661696c6564000000000000000000000000000000000000000000000000006040860152602081519101845af4614b6a612e6c565b916155e6565b505f614aee565b90614b8182614bc9565b6001600160a01b0382167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115801590614bc157614af6575050565b506001614aee565b803b15614c0c576001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91166001600160a01b0319825416179055565b608460405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b614c8083836155b5565b600581959295101561333057159384614d6f575b508315614cd0575b50505015614ca657565b60046040517f938a1821000000000000000000000000000000000000000000000000000000008152fd5b5f929350908291604051614d2181613a9f60208201947f1626ba7e00000000000000000000000000000000000000000000000000000000998a8752602484015260406044840152606483019061102e565b51915afa90614d2e612e6c565b82614d61575b82614d44575b50505f8080614c9c565b614d5991925060208082518301019101614332565b145f80614d3a565b915060208251101591614d34565b6001600160a01b0383811691161493505f614c94565b604051614ddc916001600160a01b0316614d9e826104ea565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614b6a612e6c565b8051828115918215614e5f575b5050905015614df55750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b83809293500103126103ae57810151614e77816109fe565b80825f614de9565b906001600160a01b0390818116907f000000000000000000000000000000000000000000000000000000000000000083168203614fa35750803b156103ae575f6040518092632e1a7d4d60e01b8252818381614ee389600483019190602083019252565b03925af18015611cf857614f90575b50610c5a5491614f0b61086a546001600160a01b031690565b73420000000000000000000000000000000000001090813b156103ae57604051631474f2a960e31b8152602086901c949094166001600160a01b0390811660048601521660248401526044830182905263ffffffff909316606483015260a060848301525f60a483018190529192839160c4918391905af18015611cf8576148f95750565b80611cec614f9d9261050b565b5f614ef2565b91807f0000000000000000000000000000000000000000000000000000000000000000161515806151ea575b15614ff35750505061040e90614fee61086a546001600160a01b031690565b615377565b80615020615013856001600160a01b03165f52610c5c60205260405f2090565b546001600160a01b031690565b166151c6577342000000000000000000000000000000000000105b169061505f6135c6615013856001600160a01b03165f52610c5d60205260405f2090565b1561514057838261506f926152aa565b61508e615013836001600160a01b03165f52610c5d60205260405f2090565b906150a261086a546001600160a01b031690565b916150b3610c5a5463ffffffff1690565b823b156103ae576040517f540abf730000000000000000000000000000000000000000000000000000000081526001600160a01b0395861660048201529185166024830152929093166044840152606483019390935263ffffffff16608482015260c060a48201525f60c482018190529091829081838160e481015b03925af18015611cf8576148f95750565b509161515561086a546001600160a01b031690565b92615166610c5a5463ffffffff1690565b93813b156103ae575f809461512f60405197889687958694631474f2a960e31b8652600486019260c0949163ffffffff936001600160a01b038092168652166020850152604084015216606082015260a060808201525f60a08201520190565b6151e5615013846001600160a01b03165f52610c5c60205260405f2090565b61503b565b50807f0000000000000000000000000000000000000000000000000000000000000000168214614fcf565b9060405190636eb1769f60e11b82523060048301525f60248301526020826044816001600160a01b0387165afa918215611cf8575f92615289575b508101809111612f4f5760405163095ea7b360e01b60208201525f6024820152604481019190915261040e916147488260648101614822565b6152a391925060203d602011610e0857610df9818361058f565b905f615250565b604051636eb1769f60e11b81523060048201526001600160a01b03831660248201529192602083806044810103816001600160a01b0386165afa928315611cf8575f93615336575b508201809211612f4f5760405163095ea7b360e01b60208201526001600160a01b039093166024840152604483019190915261040e91906147488260648101614822565b61535091935060203d602011610e0857610df9818361058f565b915f6152f2565b908160209103126103ae575167ffffffffffffffff811681036103ae5790565b7f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0392837f000000000000000000000000000000000000000000000000000000000000000016916153d18284866152aa565b604092604051937fcb75c11c0000000000000000000000000000000000000000000000000000000085526020936004908587600481875afa978815611cf85789975f9961558e575b506040517fa56ec6320000000000000000000000000000000000000000000000000000000081526001600160a01b03918916918216600482015299909887918b9190829081602481015b0392165afa988915611cf8575f9961556f575b509390951696947f000000000000000000000000000000000000000000000000000000000000000093805b6154b057505050505050505050565b61551a90878111156155695787905b84517f6fd3504e00000000000000000000000000000000000000000000000000000000815284810183815263ffffffff89166020820152604081018d90526001600160a01b038c166060820152909389918591829160800190565b03815f8a5af1928315611cf8576155369361553c575b506136b3565b806154a1565b61555b90893d8b11615562575b615553818361058f565b810190615357565b505f615530565b503d615549565b806154bf565b615587919950863d8811610e0857610df9818361058f565b975f615476565b87919950886155ac61546392843d861161362d5761361f818361058f565b9a925050615419565b9060418151145f146155dd5761100991602082015190606060408401519301515f1a9061567e565b50505f90600290565b9192901561564757508151156155fa575090565b3b156156035790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561565a5750805190602001fd5b610dc79060405191829162461bcd60e51b835260206004840152602483019061102e565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116156ee576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611cf8575f516001600160a01b038116156156e657905f90565b505f90600190565b505050505f9060039056fea26469706673582212205da892829a36f0fc25321ed6701e63b593b8870a6cdf3a2f09531ad0d6a7d70964736f6c63430008170033",
2314
+ "linkReferences": {},
2315
+ "deployedLinkReferences": {}
2316
+ }