@stargatefinance/stg-evm-sdk-v2 1.1.16 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +36 -0
  2. package/artifacts/src/eurc/StargateOFTEURC.sol/StargateOFTEURC.json +1556 -0
  3. package/artifacts/src/eurc/StargatePoolEURC.sol/StargatePoolEURC.json +2011 -0
  4. package/artifacts/src/interfaces/IBridgedEURCMinter.sol/IBridgedEURCMinter.json +48 -0
  5. package/artifacts/src/mocks/{USDC.sol/USDC.json → CircleFiatToken.sol/CircleFiatToken.json} +4 -4
  6. package/deployments/arbsep-testnet/FeeLibV1EURC.json +611 -0
  7. package/deployments/arbsep-testnet/StargateOFTEURC.json +1978 -0
  8. package/deployments/avalanche-testnet/FeeLibV1EURC.json +611 -0
  9. package/deployments/avalanche-testnet/StargatePoolEURC.json +2577 -0
  10. package/deployments/edu-mainnet/CreditMessaging.json +1501 -0
  11. package/deployments/edu-mainnet/FeeLibV1USDC.json +611 -0
  12. package/deployments/edu-mainnet/OFTWrapper.json +1506 -0
  13. package/deployments/edu-mainnet/StargateOFTUSDC.json +1978 -0
  14. package/deployments/edu-mainnet/TokenMessaging.json +2475 -0
  15. package/deployments/edu-mainnet/Treasurer.json +450 -0
  16. package/deployments/orderly-mainnet/CreditMessaging.json +1501 -0
  17. package/deployments/orderly-mainnet/FeeLibV1USDC.json +611 -0
  18. package/deployments/orderly-mainnet/OFTWrapper.json +1506 -0
  19. package/deployments/orderly-mainnet/StargateOFTUSDC.json +1978 -0
  20. package/deployments/orderly-mainnet/TokenMessaging.json +2475 -0
  21. package/deployments/orderly-mainnet/Treasurer.json +450 -0
  22. package/deployments/sepolia-testnet/FeeLibV1EURC.json +611 -0
  23. package/deployments/sepolia-testnet/StargatePoolEURC.json +2577 -0
  24. package/deployments/somnia-mainnet/CreditMessaging.json +1501 -0
  25. package/deployments/somnia-mainnet/FeeLibV1ETH.json +611 -0
  26. package/deployments/somnia-mainnet/FeeLibV1USDC.json +611 -0
  27. package/deployments/somnia-mainnet/FeeLibV1USDT.json +611 -0
  28. package/deployments/somnia-mainnet/OFTTokenETH.json +693 -0
  29. package/deployments/somnia-mainnet/OFTWrapper.json +1506 -0
  30. package/deployments/somnia-mainnet/StargateOFTETH.json +1989 -0
  31. package/deployments/somnia-mainnet/StargateOFTUSDC.json +1978 -0
  32. package/deployments/somnia-mainnet/StargateOFTUSDT.json +1989 -0
  33. package/deployments/somnia-mainnet/TokenMessaging.json +2475 -0
  34. package/deployments/somnia-mainnet/Treasurer.json +450 -0
  35. package/dist/deployed/CreditMessaging.cjs +9 -0
  36. package/dist/deployed/CreditMessaging.cjs.map +1 -1
  37. package/dist/deployed/CreditMessaging.mjs +9 -0
  38. package/dist/deployed/CreditMessaging.mjs.map +1 -1
  39. package/dist/deployed/FeeLibV1ETH.cjs +3 -0
  40. package/dist/deployed/FeeLibV1ETH.cjs.map +1 -1
  41. package/dist/deployed/FeeLibV1ETH.mjs +3 -0
  42. package/dist/deployed/FeeLibV1ETH.mjs.map +1 -1
  43. package/dist/deployed/FeeLibV1EURC.cjs +25 -0
  44. package/dist/deployed/FeeLibV1EURC.cjs.map +1 -0
  45. package/dist/deployed/FeeLibV1EURC.mjs +21 -0
  46. package/dist/deployed/FeeLibV1EURC.mjs.map +1 -0
  47. package/dist/deployed/FeeLibV1USDC.cjs +9 -0
  48. package/dist/deployed/FeeLibV1USDC.cjs.map +1 -1
  49. package/dist/deployed/FeeLibV1USDC.mjs +9 -0
  50. package/dist/deployed/FeeLibV1USDC.mjs.map +1 -1
  51. package/dist/deployed/FeeLibV1USDT.cjs +3 -0
  52. package/dist/deployed/FeeLibV1USDT.cjs.map +1 -1
  53. package/dist/deployed/FeeLibV1USDT.mjs +3 -0
  54. package/dist/deployed/FeeLibV1USDT.mjs.map +1 -1
  55. package/dist/deployed/OFTTokenETH.cjs +3 -0
  56. package/dist/deployed/OFTTokenETH.cjs.map +1 -1
  57. package/dist/deployed/OFTTokenETH.mjs +3 -0
  58. package/dist/deployed/OFTTokenETH.mjs.map +1 -1
  59. package/dist/deployed/OFTWrapper.cjs +9 -0
  60. package/dist/deployed/OFTWrapper.cjs.map +1 -1
  61. package/dist/deployed/OFTWrapper.mjs +9 -0
  62. package/dist/deployed/OFTWrapper.mjs.map +1 -1
  63. package/dist/deployed/StargateOFTETH.cjs +3 -0
  64. package/dist/deployed/StargateOFTETH.cjs.map +1 -1
  65. package/dist/deployed/StargateOFTETH.mjs +3 -0
  66. package/dist/deployed/StargateOFTETH.mjs.map +1 -1
  67. package/dist/deployed/StargateOFTEURC.cjs +19 -0
  68. package/dist/deployed/StargateOFTEURC.cjs.map +1 -0
  69. package/dist/deployed/StargateOFTEURC.mjs +15 -0
  70. package/dist/deployed/StargateOFTEURC.mjs.map +1 -0
  71. package/dist/deployed/StargateOFTUSDC.cjs +9 -0
  72. package/dist/deployed/StargateOFTUSDC.cjs.map +1 -1
  73. package/dist/deployed/StargateOFTUSDC.mjs +9 -0
  74. package/dist/deployed/StargateOFTUSDC.mjs.map +1 -1
  75. package/dist/deployed/StargateOFTUSDT.cjs +3 -0
  76. package/dist/deployed/StargateOFTUSDT.cjs.map +1 -1
  77. package/dist/deployed/StargateOFTUSDT.mjs +3 -0
  78. package/dist/deployed/StargateOFTUSDT.mjs.map +1 -1
  79. package/dist/deployed/StargatePoolEURC.cjs +22 -0
  80. package/dist/deployed/StargatePoolEURC.cjs.map +1 -0
  81. package/dist/deployed/StargatePoolEURC.mjs +18 -0
  82. package/dist/deployed/StargatePoolEURC.mjs.map +1 -0
  83. package/dist/deployed/TokenMessaging.cjs +9 -0
  84. package/dist/deployed/TokenMessaging.cjs.map +1 -1
  85. package/dist/deployed/TokenMessaging.mjs +9 -0
  86. package/dist/deployed/TokenMessaging.mjs.map +1 -1
  87. package/dist/deployed/Treasurer.cjs +9 -0
  88. package/dist/deployed/Treasurer.cjs.map +1 -1
  89. package/dist/deployed/Treasurer.mjs +9 -0
  90. package/dist/deployed/Treasurer.mjs.map +1 -1
  91. package/dist/deployed/contracts.cjs +1008 -873
  92. package/dist/deployed/contracts.cjs.map +1 -1
  93. package/dist/deployed/contracts.mjs +1006 -874
  94. package/dist/deployed/contracts.mjs.map +1 -1
  95. package/dist/deployed/index.cjs +1009 -874
  96. package/dist/deployed/index.cjs.map +1 -1
  97. package/dist/deployed/index.mjs +1009 -874
  98. package/dist/deployed/index.mjs.map +1 -1
  99. package/dist/index.cjs +5 -0
  100. package/dist/index.cjs.map +1 -1
  101. package/dist/index.d.mts +6 -0
  102. package/dist/index.d.ts +6 -0
  103. package/dist/index.mjs +5 -0
  104. package/dist/index.mjs.map +1 -1
  105. package/package.json +25 -4
@@ -0,0 +1,2011 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "StargatePoolEURC",
4
+ "sourceName": "src/eurc/StargatePoolEURC.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "_lpTokenName",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "_lpTokenSymbol",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "_token",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "uint8",
25
+ "name": "_tokenDecimals",
26
+ "type": "uint8"
27
+ },
28
+ {
29
+ "internalType": "uint8",
30
+ "name": "_sharedDecimals",
31
+ "type": "uint8"
32
+ },
33
+ {
34
+ "internalType": "address",
35
+ "name": "_endpoint",
36
+ "type": "address"
37
+ },
38
+ {
39
+ "internalType": "address",
40
+ "name": "_owner",
41
+ "type": "address"
42
+ }
43
+ ],
44
+ "stateMutability": "nonpayable",
45
+ "type": "constructor"
46
+ },
47
+ {
48
+ "inputs": [],
49
+ "name": "InvalidLocalDecimals",
50
+ "type": "error"
51
+ },
52
+ {
53
+ "inputs": [],
54
+ "name": "Path_AlreadyHasCredit",
55
+ "type": "error"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "Path_InsufficientCredit",
60
+ "type": "error"
61
+ },
62
+ {
63
+ "inputs": [],
64
+ "name": "Path_UnlimitedCredit",
65
+ "type": "error"
66
+ },
67
+ {
68
+ "inputs": [
69
+ {
70
+ "internalType": "uint256",
71
+ "name": "amountLD",
72
+ "type": "uint256"
73
+ },
74
+ {
75
+ "internalType": "uint256",
76
+ "name": "minAmountLD",
77
+ "type": "uint256"
78
+ }
79
+ ],
80
+ "name": "SlippageExceeded",
81
+ "type": "error"
82
+ },
83
+ {
84
+ "inputs": [],
85
+ "name": "StargatePoolEURC_BurnAmountExceedsBalance",
86
+ "type": "error"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "Stargate_InsufficientFare",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "Stargate_InvalidAmount",
96
+ "type": "error"
97
+ },
98
+ {
99
+ "inputs": [],
100
+ "name": "Stargate_InvalidPath",
101
+ "type": "error"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "Stargate_InvalidTokenDecimals",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "Stargate_LzTokenUnavailable",
111
+ "type": "error"
112
+ },
113
+ {
114
+ "inputs": [],
115
+ "name": "Stargate_OnlyTaxi",
116
+ "type": "error"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "Stargate_OutflowFailed",
121
+ "type": "error"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "Stargate_Paused",
126
+ "type": "error"
127
+ },
128
+ {
129
+ "inputs": [],
130
+ "name": "Stargate_RecoverTokenUnsupported",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "Stargate_ReentrantCall",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "Stargate_SlippageTooHigh",
141
+ "type": "error"
142
+ },
143
+ {
144
+ "inputs": [],
145
+ "name": "Stargate_Unauthorized",
146
+ "type": "error"
147
+ },
148
+ {
149
+ "inputs": [],
150
+ "name": "Stargate_UnreceivedTokenNotFound",
151
+ "type": "error"
152
+ },
153
+ {
154
+ "inputs": [],
155
+ "name": "Transfer_ApproveFailed",
156
+ "type": "error"
157
+ },
158
+ {
159
+ "inputs": [],
160
+ "name": "Transfer_TransferFailed",
161
+ "type": "error"
162
+ },
163
+ {
164
+ "anonymous": false,
165
+ "inputs": [
166
+ {
167
+ "components": [
168
+ {
169
+ "internalType": "address",
170
+ "name": "feeLib",
171
+ "type": "address"
172
+ },
173
+ {
174
+ "internalType": "address",
175
+ "name": "planner",
176
+ "type": "address"
177
+ },
178
+ {
179
+ "internalType": "address",
180
+ "name": "treasurer",
181
+ "type": "address"
182
+ },
183
+ {
184
+ "internalType": "address",
185
+ "name": "tokenMessaging",
186
+ "type": "address"
187
+ },
188
+ {
189
+ "internalType": "address",
190
+ "name": "creditMessaging",
191
+ "type": "address"
192
+ },
193
+ {
194
+ "internalType": "address",
195
+ "name": "lzToken",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "indexed": false,
200
+ "internalType": "struct StargateBase.AddressConfig",
201
+ "name": "config",
202
+ "type": "tuple"
203
+ }
204
+ ],
205
+ "name": "AddressConfigSet",
206
+ "type": "event"
207
+ },
208
+ {
209
+ "anonymous": false,
210
+ "inputs": [
211
+ {
212
+ "indexed": false,
213
+ "internalType": "uint32",
214
+ "name": "srcEid",
215
+ "type": "uint32"
216
+ },
217
+ {
218
+ "components": [
219
+ {
220
+ "internalType": "uint32",
221
+ "name": "srcEid",
222
+ "type": "uint32"
223
+ },
224
+ {
225
+ "internalType": "uint64",
226
+ "name": "amount",
227
+ "type": "uint64"
228
+ }
229
+ ],
230
+ "indexed": false,
231
+ "internalType": "struct Credit[]",
232
+ "name": "credits",
233
+ "type": "tuple[]"
234
+ }
235
+ ],
236
+ "name": "CreditsReceived",
237
+ "type": "event"
238
+ },
239
+ {
240
+ "anonymous": false,
241
+ "inputs": [
242
+ {
243
+ "indexed": false,
244
+ "internalType": "uint32",
245
+ "name": "dstEid",
246
+ "type": "uint32"
247
+ },
248
+ {
249
+ "components": [
250
+ {
251
+ "internalType": "uint32",
252
+ "name": "srcEid",
253
+ "type": "uint32"
254
+ },
255
+ {
256
+ "internalType": "uint64",
257
+ "name": "amount",
258
+ "type": "uint64"
259
+ }
260
+ ],
261
+ "indexed": false,
262
+ "internalType": "struct Credit[]",
263
+ "name": "credits",
264
+ "type": "tuple[]"
265
+ }
266
+ ],
267
+ "name": "CreditsSent",
268
+ "type": "event"
269
+ },
270
+ {
271
+ "anonymous": false,
272
+ "inputs": [
273
+ {
274
+ "indexed": true,
275
+ "internalType": "address",
276
+ "name": "payer",
277
+ "type": "address"
278
+ },
279
+ {
280
+ "indexed": true,
281
+ "internalType": "address",
282
+ "name": "receiver",
283
+ "type": "address"
284
+ },
285
+ {
286
+ "indexed": false,
287
+ "internalType": "uint256",
288
+ "name": "amountLD",
289
+ "type": "uint256"
290
+ }
291
+ ],
292
+ "name": "Deposited",
293
+ "type": "event"
294
+ },
295
+ {
296
+ "anonymous": false,
297
+ "inputs": [
298
+ {
299
+ "indexed": false,
300
+ "internalType": "uint32",
301
+ "name": "dstEid",
302
+ "type": "uint32"
303
+ },
304
+ {
305
+ "indexed": false,
306
+ "internalType": "bool",
307
+ "name": "oft",
308
+ "type": "bool"
309
+ }
310
+ ],
311
+ "name": "OFTPathSet",
312
+ "type": "event"
313
+ },
314
+ {
315
+ "anonymous": false,
316
+ "inputs": [
317
+ {
318
+ "indexed": true,
319
+ "internalType": "bytes32",
320
+ "name": "guid",
321
+ "type": "bytes32"
322
+ },
323
+ {
324
+ "indexed": false,
325
+ "internalType": "uint32",
326
+ "name": "srcEid",
327
+ "type": "uint32"
328
+ },
329
+ {
330
+ "indexed": true,
331
+ "internalType": "address",
332
+ "name": "toAddress",
333
+ "type": "address"
334
+ },
335
+ {
336
+ "indexed": false,
337
+ "internalType": "uint256",
338
+ "name": "amountReceivedLD",
339
+ "type": "uint256"
340
+ }
341
+ ],
342
+ "name": "OFTReceived",
343
+ "type": "event"
344
+ },
345
+ {
346
+ "anonymous": false,
347
+ "inputs": [
348
+ {
349
+ "indexed": true,
350
+ "internalType": "bytes32",
351
+ "name": "guid",
352
+ "type": "bytes32"
353
+ },
354
+ {
355
+ "indexed": false,
356
+ "internalType": "uint32",
357
+ "name": "dstEid",
358
+ "type": "uint32"
359
+ },
360
+ {
361
+ "indexed": true,
362
+ "internalType": "address",
363
+ "name": "fromAddress",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "indexed": false,
368
+ "internalType": "uint256",
369
+ "name": "amountSentLD",
370
+ "type": "uint256"
371
+ },
372
+ {
373
+ "indexed": false,
374
+ "internalType": "uint256",
375
+ "name": "amountReceivedLD",
376
+ "type": "uint256"
377
+ }
378
+ ],
379
+ "name": "OFTSent",
380
+ "type": "event"
381
+ },
382
+ {
383
+ "anonymous": false,
384
+ "inputs": [
385
+ {
386
+ "indexed": true,
387
+ "internalType": "address",
388
+ "name": "previousOwner",
389
+ "type": "address"
390
+ },
391
+ {
392
+ "indexed": true,
393
+ "internalType": "address",
394
+ "name": "newOwner",
395
+ "type": "address"
396
+ }
397
+ ],
398
+ "name": "OwnershipTransferred",
399
+ "type": "event"
400
+ },
401
+ {
402
+ "anonymous": false,
403
+ "inputs": [
404
+ {
405
+ "indexed": false,
406
+ "internalType": "uint64",
407
+ "name": "amountSD",
408
+ "type": "uint64"
409
+ }
410
+ ],
411
+ "name": "Path_CreditBurned",
412
+ "type": "event"
413
+ },
414
+ {
415
+ "anonymous": false,
416
+ "inputs": [
417
+ {
418
+ "indexed": false,
419
+ "internalType": "bool",
420
+ "name": "paused",
421
+ "type": "bool"
422
+ }
423
+ ],
424
+ "name": "PauseSet",
425
+ "type": "event"
426
+ },
427
+ {
428
+ "anonymous": false,
429
+ "inputs": [
430
+ {
431
+ "indexed": false,
432
+ "internalType": "uint256",
433
+ "name": "amount",
434
+ "type": "uint256"
435
+ }
436
+ ],
437
+ "name": "PlannerFeeWithdrawn",
438
+ "type": "event"
439
+ },
440
+ {
441
+ "anonymous": false,
442
+ "inputs": [
443
+ {
444
+ "indexed": true,
445
+ "internalType": "address",
446
+ "name": "payer",
447
+ "type": "address"
448
+ },
449
+ {
450
+ "indexed": true,
451
+ "internalType": "address",
452
+ "name": "receiver",
453
+ "type": "address"
454
+ },
455
+ {
456
+ "indexed": false,
457
+ "internalType": "uint256",
458
+ "name": "amountLD",
459
+ "type": "uint256"
460
+ }
461
+ ],
462
+ "name": "Redeemed",
463
+ "type": "event"
464
+ },
465
+ {
466
+ "anonymous": false,
467
+ "inputs": [
468
+ {
469
+ "indexed": false,
470
+ "internalType": "uint64",
471
+ "name": "amountSD",
472
+ "type": "uint64"
473
+ }
474
+ ],
475
+ "name": "TreasuryFeeAdded",
476
+ "type": "event"
477
+ },
478
+ {
479
+ "anonymous": false,
480
+ "inputs": [
481
+ {
482
+ "indexed": false,
483
+ "internalType": "address",
484
+ "name": "to",
485
+ "type": "address"
486
+ },
487
+ {
488
+ "indexed": false,
489
+ "internalType": "uint64",
490
+ "name": "amountSD",
491
+ "type": "uint64"
492
+ }
493
+ ],
494
+ "name": "TreasuryFeeWithdrawn",
495
+ "type": "event"
496
+ },
497
+ {
498
+ "anonymous": false,
499
+ "inputs": [
500
+ {
501
+ "indexed": false,
502
+ "internalType": "bytes32",
503
+ "name": "guid",
504
+ "type": "bytes32"
505
+ },
506
+ {
507
+ "indexed": false,
508
+ "internalType": "uint8",
509
+ "name": "index",
510
+ "type": "uint8"
511
+ },
512
+ {
513
+ "indexed": false,
514
+ "internalType": "uint32",
515
+ "name": "srcEid",
516
+ "type": "uint32"
517
+ },
518
+ {
519
+ "indexed": false,
520
+ "internalType": "address",
521
+ "name": "receiver",
522
+ "type": "address"
523
+ },
524
+ {
525
+ "indexed": false,
526
+ "internalType": "uint256",
527
+ "name": "amountLD",
528
+ "type": "uint256"
529
+ },
530
+ {
531
+ "indexed": false,
532
+ "internalType": "bytes",
533
+ "name": "composeMsg",
534
+ "type": "bytes"
535
+ }
536
+ ],
537
+ "name": "UnreceivedTokenCached",
538
+ "type": "event"
539
+ },
540
+ {
541
+ "inputs": [
542
+ {
543
+ "internalType": "uint256",
544
+ "name": "_amountLD",
545
+ "type": "uint256"
546
+ }
547
+ ],
548
+ "name": "addTreasuryFee",
549
+ "outputs": [],
550
+ "stateMutability": "payable",
551
+ "type": "function"
552
+ },
553
+ {
554
+ "inputs": [
555
+ {
556
+ "internalType": "address",
557
+ "name": "_burnAdmin",
558
+ "type": "address"
559
+ },
560
+ {
561
+ "internalType": "uint64",
562
+ "name": "_burnAllowanceSD",
563
+ "type": "uint64"
564
+ }
565
+ ],
566
+ "name": "allowBurn",
567
+ "outputs": [],
568
+ "stateMutability": "nonpayable",
569
+ "type": "function"
570
+ },
571
+ {
572
+ "inputs": [],
573
+ "name": "approvalRequired",
574
+ "outputs": [
575
+ {
576
+ "internalType": "bool",
577
+ "name": "",
578
+ "type": "bool"
579
+ }
580
+ ],
581
+ "stateMutability": "pure",
582
+ "type": "function"
583
+ },
584
+ {
585
+ "inputs": [],
586
+ "name": "burnAdmin",
587
+ "outputs": [
588
+ {
589
+ "internalType": "address",
590
+ "name": "",
591
+ "type": "address"
592
+ }
593
+ ],
594
+ "stateMutability": "view",
595
+ "type": "function"
596
+ },
597
+ {
598
+ "inputs": [],
599
+ "name": "burnAllowanceSD",
600
+ "outputs": [
601
+ {
602
+ "internalType": "uint64",
603
+ "name": "",
604
+ "type": "uint64"
605
+ }
606
+ ],
607
+ "stateMutability": "view",
608
+ "type": "function"
609
+ },
610
+ {
611
+ "inputs": [],
612
+ "name": "burnLockedEURC",
613
+ "outputs": [],
614
+ "stateMutability": "nonpayable",
615
+ "type": "function"
616
+ },
617
+ {
618
+ "inputs": [],
619
+ "name": "deficitOffset",
620
+ "outputs": [
621
+ {
622
+ "internalType": "uint256",
623
+ "name": "",
624
+ "type": "uint256"
625
+ }
626
+ ],
627
+ "stateMutability": "view",
628
+ "type": "function"
629
+ },
630
+ {
631
+ "inputs": [
632
+ {
633
+ "internalType": "address",
634
+ "name": "_receiver",
635
+ "type": "address"
636
+ },
637
+ {
638
+ "internalType": "uint256",
639
+ "name": "_amountLD",
640
+ "type": "uint256"
641
+ }
642
+ ],
643
+ "name": "deposit",
644
+ "outputs": [
645
+ {
646
+ "internalType": "uint256",
647
+ "name": "amountLD",
648
+ "type": "uint256"
649
+ }
650
+ ],
651
+ "stateMutability": "payable",
652
+ "type": "function"
653
+ },
654
+ {
655
+ "inputs": [],
656
+ "name": "endpoint",
657
+ "outputs": [
658
+ {
659
+ "internalType": "contract ILayerZeroEndpointV2",
660
+ "name": "",
661
+ "type": "address"
662
+ }
663
+ ],
664
+ "stateMutability": "view",
665
+ "type": "function"
666
+ },
667
+ {
668
+ "inputs": [],
669
+ "name": "getAddressConfig",
670
+ "outputs": [
671
+ {
672
+ "components": [
673
+ {
674
+ "internalType": "address",
675
+ "name": "feeLib",
676
+ "type": "address"
677
+ },
678
+ {
679
+ "internalType": "address",
680
+ "name": "planner",
681
+ "type": "address"
682
+ },
683
+ {
684
+ "internalType": "address",
685
+ "name": "treasurer",
686
+ "type": "address"
687
+ },
688
+ {
689
+ "internalType": "address",
690
+ "name": "tokenMessaging",
691
+ "type": "address"
692
+ },
693
+ {
694
+ "internalType": "address",
695
+ "name": "creditMessaging",
696
+ "type": "address"
697
+ },
698
+ {
699
+ "internalType": "address",
700
+ "name": "lzToken",
701
+ "type": "address"
702
+ }
703
+ ],
704
+ "internalType": "struct StargateBase.AddressConfig",
705
+ "name": "",
706
+ "type": "tuple"
707
+ }
708
+ ],
709
+ "stateMutability": "view",
710
+ "type": "function"
711
+ },
712
+ {
713
+ "inputs": [],
714
+ "name": "getTransferGasLimit",
715
+ "outputs": [
716
+ {
717
+ "internalType": "uint256",
718
+ "name": "",
719
+ "type": "uint256"
720
+ }
721
+ ],
722
+ "stateMutability": "view",
723
+ "type": "function"
724
+ },
725
+ {
726
+ "inputs": [],
727
+ "name": "localEid",
728
+ "outputs": [
729
+ {
730
+ "internalType": "uint32",
731
+ "name": "",
732
+ "type": "uint32"
733
+ }
734
+ ],
735
+ "stateMutability": "view",
736
+ "type": "function"
737
+ },
738
+ {
739
+ "inputs": [],
740
+ "name": "lpToken",
741
+ "outputs": [
742
+ {
743
+ "internalType": "address",
744
+ "name": "",
745
+ "type": "address"
746
+ }
747
+ ],
748
+ "stateMutability": "view",
749
+ "type": "function"
750
+ },
751
+ {
752
+ "inputs": [],
753
+ "name": "oftVersion",
754
+ "outputs": [
755
+ {
756
+ "internalType": "bytes4",
757
+ "name": "interfaceId",
758
+ "type": "bytes4"
759
+ },
760
+ {
761
+ "internalType": "uint64",
762
+ "name": "version",
763
+ "type": "uint64"
764
+ }
765
+ ],
766
+ "stateMutability": "pure",
767
+ "type": "function"
768
+ },
769
+ {
770
+ "inputs": [],
771
+ "name": "owner",
772
+ "outputs": [
773
+ {
774
+ "internalType": "address",
775
+ "name": "",
776
+ "type": "address"
777
+ }
778
+ ],
779
+ "stateMutability": "view",
780
+ "type": "function"
781
+ },
782
+ {
783
+ "inputs": [
784
+ {
785
+ "internalType": "uint32",
786
+ "name": "eid",
787
+ "type": "uint32"
788
+ }
789
+ ],
790
+ "name": "paths",
791
+ "outputs": [
792
+ {
793
+ "internalType": "uint64",
794
+ "name": "credit",
795
+ "type": "uint64"
796
+ }
797
+ ],
798
+ "stateMutability": "view",
799
+ "type": "function"
800
+ },
801
+ {
802
+ "inputs": [],
803
+ "name": "plannerFee",
804
+ "outputs": [
805
+ {
806
+ "internalType": "uint256",
807
+ "name": "available",
808
+ "type": "uint256"
809
+ }
810
+ ],
811
+ "stateMutability": "view",
812
+ "type": "function"
813
+ },
814
+ {
815
+ "inputs": [],
816
+ "name": "poolBalance",
817
+ "outputs": [
818
+ {
819
+ "internalType": "uint256",
820
+ "name": "",
821
+ "type": "uint256"
822
+ }
823
+ ],
824
+ "stateMutability": "view",
825
+ "type": "function"
826
+ },
827
+ {
828
+ "inputs": [
829
+ {
830
+ "components": [
831
+ {
832
+ "internalType": "uint32",
833
+ "name": "dstEid",
834
+ "type": "uint32"
835
+ },
836
+ {
837
+ "internalType": "bytes32",
838
+ "name": "to",
839
+ "type": "bytes32"
840
+ },
841
+ {
842
+ "internalType": "uint256",
843
+ "name": "amountLD",
844
+ "type": "uint256"
845
+ },
846
+ {
847
+ "internalType": "uint256",
848
+ "name": "minAmountLD",
849
+ "type": "uint256"
850
+ },
851
+ {
852
+ "internalType": "bytes",
853
+ "name": "extraOptions",
854
+ "type": "bytes"
855
+ },
856
+ {
857
+ "internalType": "bytes",
858
+ "name": "composeMsg",
859
+ "type": "bytes"
860
+ },
861
+ {
862
+ "internalType": "bytes",
863
+ "name": "oftCmd",
864
+ "type": "bytes"
865
+ }
866
+ ],
867
+ "internalType": "struct SendParam",
868
+ "name": "_sendParam",
869
+ "type": "tuple"
870
+ }
871
+ ],
872
+ "name": "quoteOFT",
873
+ "outputs": [
874
+ {
875
+ "components": [
876
+ {
877
+ "internalType": "uint256",
878
+ "name": "minAmountLD",
879
+ "type": "uint256"
880
+ },
881
+ {
882
+ "internalType": "uint256",
883
+ "name": "maxAmountLD",
884
+ "type": "uint256"
885
+ }
886
+ ],
887
+ "internalType": "struct OFTLimit",
888
+ "name": "limit",
889
+ "type": "tuple"
890
+ },
891
+ {
892
+ "components": [
893
+ {
894
+ "internalType": "int256",
895
+ "name": "feeAmountLD",
896
+ "type": "int256"
897
+ },
898
+ {
899
+ "internalType": "string",
900
+ "name": "description",
901
+ "type": "string"
902
+ }
903
+ ],
904
+ "internalType": "struct OFTFeeDetail[]",
905
+ "name": "oftFeeDetails",
906
+ "type": "tuple[]"
907
+ },
908
+ {
909
+ "components": [
910
+ {
911
+ "internalType": "uint256",
912
+ "name": "amountSentLD",
913
+ "type": "uint256"
914
+ },
915
+ {
916
+ "internalType": "uint256",
917
+ "name": "amountReceivedLD",
918
+ "type": "uint256"
919
+ }
920
+ ],
921
+ "internalType": "struct OFTReceipt",
922
+ "name": "receipt",
923
+ "type": "tuple"
924
+ }
925
+ ],
926
+ "stateMutability": "view",
927
+ "type": "function"
928
+ },
929
+ {
930
+ "inputs": [
931
+ {
932
+ "components": [
933
+ {
934
+ "internalType": "uint32",
935
+ "name": "dstEid",
936
+ "type": "uint32"
937
+ },
938
+ {
939
+ "internalType": "bytes32",
940
+ "name": "to",
941
+ "type": "bytes32"
942
+ },
943
+ {
944
+ "internalType": "uint256",
945
+ "name": "amountLD",
946
+ "type": "uint256"
947
+ },
948
+ {
949
+ "internalType": "uint256",
950
+ "name": "minAmountLD",
951
+ "type": "uint256"
952
+ },
953
+ {
954
+ "internalType": "bytes",
955
+ "name": "extraOptions",
956
+ "type": "bytes"
957
+ },
958
+ {
959
+ "internalType": "bytes",
960
+ "name": "composeMsg",
961
+ "type": "bytes"
962
+ },
963
+ {
964
+ "internalType": "bytes",
965
+ "name": "oftCmd",
966
+ "type": "bytes"
967
+ }
968
+ ],
969
+ "internalType": "struct SendParam",
970
+ "name": "_sendParam",
971
+ "type": "tuple"
972
+ },
973
+ {
974
+ "internalType": "bool",
975
+ "name": "_payInLzToken",
976
+ "type": "bool"
977
+ }
978
+ ],
979
+ "name": "quoteRedeemSend",
980
+ "outputs": [
981
+ {
982
+ "components": [
983
+ {
984
+ "internalType": "uint256",
985
+ "name": "nativeFee",
986
+ "type": "uint256"
987
+ },
988
+ {
989
+ "internalType": "uint256",
990
+ "name": "lzTokenFee",
991
+ "type": "uint256"
992
+ }
993
+ ],
994
+ "internalType": "struct MessagingFee",
995
+ "name": "fee",
996
+ "type": "tuple"
997
+ }
998
+ ],
999
+ "stateMutability": "view",
1000
+ "type": "function"
1001
+ },
1002
+ {
1003
+ "inputs": [
1004
+ {
1005
+ "components": [
1006
+ {
1007
+ "internalType": "uint32",
1008
+ "name": "dstEid",
1009
+ "type": "uint32"
1010
+ },
1011
+ {
1012
+ "internalType": "bytes32",
1013
+ "name": "to",
1014
+ "type": "bytes32"
1015
+ },
1016
+ {
1017
+ "internalType": "uint256",
1018
+ "name": "amountLD",
1019
+ "type": "uint256"
1020
+ },
1021
+ {
1022
+ "internalType": "uint256",
1023
+ "name": "minAmountLD",
1024
+ "type": "uint256"
1025
+ },
1026
+ {
1027
+ "internalType": "bytes",
1028
+ "name": "extraOptions",
1029
+ "type": "bytes"
1030
+ },
1031
+ {
1032
+ "internalType": "bytes",
1033
+ "name": "composeMsg",
1034
+ "type": "bytes"
1035
+ },
1036
+ {
1037
+ "internalType": "bytes",
1038
+ "name": "oftCmd",
1039
+ "type": "bytes"
1040
+ }
1041
+ ],
1042
+ "internalType": "struct SendParam",
1043
+ "name": "_sendParam",
1044
+ "type": "tuple"
1045
+ },
1046
+ {
1047
+ "internalType": "bool",
1048
+ "name": "_payInLzToken",
1049
+ "type": "bool"
1050
+ }
1051
+ ],
1052
+ "name": "quoteSend",
1053
+ "outputs": [
1054
+ {
1055
+ "components": [
1056
+ {
1057
+ "internalType": "uint256",
1058
+ "name": "nativeFee",
1059
+ "type": "uint256"
1060
+ },
1061
+ {
1062
+ "internalType": "uint256",
1063
+ "name": "lzTokenFee",
1064
+ "type": "uint256"
1065
+ }
1066
+ ],
1067
+ "internalType": "struct MessagingFee",
1068
+ "name": "fee",
1069
+ "type": "tuple"
1070
+ }
1071
+ ],
1072
+ "stateMutability": "view",
1073
+ "type": "function"
1074
+ },
1075
+ {
1076
+ "inputs": [
1077
+ {
1078
+ "internalType": "uint32",
1079
+ "name": "_srcEid",
1080
+ "type": "uint32"
1081
+ },
1082
+ {
1083
+ "components": [
1084
+ {
1085
+ "internalType": "uint32",
1086
+ "name": "srcEid",
1087
+ "type": "uint32"
1088
+ },
1089
+ {
1090
+ "internalType": "uint64",
1091
+ "name": "amount",
1092
+ "type": "uint64"
1093
+ }
1094
+ ],
1095
+ "internalType": "struct Credit[]",
1096
+ "name": "_credits",
1097
+ "type": "tuple[]"
1098
+ }
1099
+ ],
1100
+ "name": "receiveCredits",
1101
+ "outputs": [],
1102
+ "stateMutability": "nonpayable",
1103
+ "type": "function"
1104
+ },
1105
+ {
1106
+ "inputs": [
1107
+ {
1108
+ "components": [
1109
+ {
1110
+ "internalType": "uint32",
1111
+ "name": "srcEid",
1112
+ "type": "uint32"
1113
+ },
1114
+ {
1115
+ "internalType": "bytes32",
1116
+ "name": "sender",
1117
+ "type": "bytes32"
1118
+ },
1119
+ {
1120
+ "internalType": "uint64",
1121
+ "name": "nonce",
1122
+ "type": "uint64"
1123
+ }
1124
+ ],
1125
+ "internalType": "struct Origin",
1126
+ "name": "_origin",
1127
+ "type": "tuple"
1128
+ },
1129
+ {
1130
+ "internalType": "bytes32",
1131
+ "name": "_guid",
1132
+ "type": "bytes32"
1133
+ },
1134
+ {
1135
+ "internalType": "uint8",
1136
+ "name": "_seatNumber",
1137
+ "type": "uint8"
1138
+ },
1139
+ {
1140
+ "internalType": "address",
1141
+ "name": "_receiver",
1142
+ "type": "address"
1143
+ },
1144
+ {
1145
+ "internalType": "uint64",
1146
+ "name": "_amountSD",
1147
+ "type": "uint64"
1148
+ }
1149
+ ],
1150
+ "name": "receiveTokenBus",
1151
+ "outputs": [],
1152
+ "stateMutability": "nonpayable",
1153
+ "type": "function"
1154
+ },
1155
+ {
1156
+ "inputs": [
1157
+ {
1158
+ "components": [
1159
+ {
1160
+ "internalType": "uint32",
1161
+ "name": "srcEid",
1162
+ "type": "uint32"
1163
+ },
1164
+ {
1165
+ "internalType": "bytes32",
1166
+ "name": "sender",
1167
+ "type": "bytes32"
1168
+ },
1169
+ {
1170
+ "internalType": "uint64",
1171
+ "name": "nonce",
1172
+ "type": "uint64"
1173
+ }
1174
+ ],
1175
+ "internalType": "struct Origin",
1176
+ "name": "_origin",
1177
+ "type": "tuple"
1178
+ },
1179
+ {
1180
+ "internalType": "bytes32",
1181
+ "name": "_guid",
1182
+ "type": "bytes32"
1183
+ },
1184
+ {
1185
+ "internalType": "address",
1186
+ "name": "_receiver",
1187
+ "type": "address"
1188
+ },
1189
+ {
1190
+ "internalType": "uint64",
1191
+ "name": "_amountSD",
1192
+ "type": "uint64"
1193
+ },
1194
+ {
1195
+ "internalType": "bytes",
1196
+ "name": "_composeMsg",
1197
+ "type": "bytes"
1198
+ }
1199
+ ],
1200
+ "name": "receiveTokenTaxi",
1201
+ "outputs": [],
1202
+ "stateMutability": "nonpayable",
1203
+ "type": "function"
1204
+ },
1205
+ {
1206
+ "inputs": [
1207
+ {
1208
+ "internalType": "address",
1209
+ "name": "_token",
1210
+ "type": "address"
1211
+ },
1212
+ {
1213
+ "internalType": "address",
1214
+ "name": "_to",
1215
+ "type": "address"
1216
+ },
1217
+ {
1218
+ "internalType": "uint256",
1219
+ "name": "_amount",
1220
+ "type": "uint256"
1221
+ }
1222
+ ],
1223
+ "name": "recoverToken",
1224
+ "outputs": [
1225
+ {
1226
+ "internalType": "uint256",
1227
+ "name": "",
1228
+ "type": "uint256"
1229
+ }
1230
+ ],
1231
+ "stateMutability": "nonpayable",
1232
+ "type": "function"
1233
+ },
1234
+ {
1235
+ "inputs": [
1236
+ {
1237
+ "internalType": "uint256",
1238
+ "name": "_amountLD",
1239
+ "type": "uint256"
1240
+ },
1241
+ {
1242
+ "internalType": "address",
1243
+ "name": "_receiver",
1244
+ "type": "address"
1245
+ }
1246
+ ],
1247
+ "name": "redeem",
1248
+ "outputs": [
1249
+ {
1250
+ "internalType": "uint256",
1251
+ "name": "amountLD",
1252
+ "type": "uint256"
1253
+ }
1254
+ ],
1255
+ "stateMutability": "nonpayable",
1256
+ "type": "function"
1257
+ },
1258
+ {
1259
+ "inputs": [
1260
+ {
1261
+ "components": [
1262
+ {
1263
+ "internalType": "uint32",
1264
+ "name": "dstEid",
1265
+ "type": "uint32"
1266
+ },
1267
+ {
1268
+ "internalType": "bytes32",
1269
+ "name": "to",
1270
+ "type": "bytes32"
1271
+ },
1272
+ {
1273
+ "internalType": "uint256",
1274
+ "name": "amountLD",
1275
+ "type": "uint256"
1276
+ },
1277
+ {
1278
+ "internalType": "uint256",
1279
+ "name": "minAmountLD",
1280
+ "type": "uint256"
1281
+ },
1282
+ {
1283
+ "internalType": "bytes",
1284
+ "name": "extraOptions",
1285
+ "type": "bytes"
1286
+ },
1287
+ {
1288
+ "internalType": "bytes",
1289
+ "name": "composeMsg",
1290
+ "type": "bytes"
1291
+ },
1292
+ {
1293
+ "internalType": "bytes",
1294
+ "name": "oftCmd",
1295
+ "type": "bytes"
1296
+ }
1297
+ ],
1298
+ "internalType": "struct SendParam",
1299
+ "name": "_sendParam",
1300
+ "type": "tuple"
1301
+ },
1302
+ {
1303
+ "components": [
1304
+ {
1305
+ "internalType": "uint256",
1306
+ "name": "nativeFee",
1307
+ "type": "uint256"
1308
+ },
1309
+ {
1310
+ "internalType": "uint256",
1311
+ "name": "lzTokenFee",
1312
+ "type": "uint256"
1313
+ }
1314
+ ],
1315
+ "internalType": "struct MessagingFee",
1316
+ "name": "_fee",
1317
+ "type": "tuple"
1318
+ },
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "_refundAddress",
1322
+ "type": "address"
1323
+ }
1324
+ ],
1325
+ "name": "redeemSend",
1326
+ "outputs": [
1327
+ {
1328
+ "components": [
1329
+ {
1330
+ "internalType": "bytes32",
1331
+ "name": "guid",
1332
+ "type": "bytes32"
1333
+ },
1334
+ {
1335
+ "internalType": "uint64",
1336
+ "name": "nonce",
1337
+ "type": "uint64"
1338
+ },
1339
+ {
1340
+ "components": [
1341
+ {
1342
+ "internalType": "uint256",
1343
+ "name": "nativeFee",
1344
+ "type": "uint256"
1345
+ },
1346
+ {
1347
+ "internalType": "uint256",
1348
+ "name": "lzTokenFee",
1349
+ "type": "uint256"
1350
+ }
1351
+ ],
1352
+ "internalType": "struct MessagingFee",
1353
+ "name": "fee",
1354
+ "type": "tuple"
1355
+ }
1356
+ ],
1357
+ "internalType": "struct MessagingReceipt",
1358
+ "name": "msgReceipt",
1359
+ "type": "tuple"
1360
+ },
1361
+ {
1362
+ "components": [
1363
+ {
1364
+ "internalType": "uint256",
1365
+ "name": "amountSentLD",
1366
+ "type": "uint256"
1367
+ },
1368
+ {
1369
+ "internalType": "uint256",
1370
+ "name": "amountReceivedLD",
1371
+ "type": "uint256"
1372
+ }
1373
+ ],
1374
+ "internalType": "struct OFTReceipt",
1375
+ "name": "oftReceipt",
1376
+ "type": "tuple"
1377
+ }
1378
+ ],
1379
+ "stateMutability": "payable",
1380
+ "type": "function"
1381
+ },
1382
+ {
1383
+ "inputs": [
1384
+ {
1385
+ "internalType": "address",
1386
+ "name": "_owner",
1387
+ "type": "address"
1388
+ }
1389
+ ],
1390
+ "name": "redeemable",
1391
+ "outputs": [
1392
+ {
1393
+ "internalType": "uint256",
1394
+ "name": "amountLD",
1395
+ "type": "uint256"
1396
+ }
1397
+ ],
1398
+ "stateMutability": "view",
1399
+ "type": "function"
1400
+ },
1401
+ {
1402
+ "inputs": [],
1403
+ "name": "renounceOwnership",
1404
+ "outputs": [],
1405
+ "stateMutability": "nonpayable",
1406
+ "type": "function"
1407
+ },
1408
+ {
1409
+ "inputs": [
1410
+ {
1411
+ "internalType": "bytes32",
1412
+ "name": "_guid",
1413
+ "type": "bytes32"
1414
+ },
1415
+ {
1416
+ "internalType": "uint8",
1417
+ "name": "_index",
1418
+ "type": "uint8"
1419
+ },
1420
+ {
1421
+ "internalType": "uint32",
1422
+ "name": "_srcEid",
1423
+ "type": "uint32"
1424
+ },
1425
+ {
1426
+ "internalType": "address",
1427
+ "name": "_receiver",
1428
+ "type": "address"
1429
+ },
1430
+ {
1431
+ "internalType": "uint256",
1432
+ "name": "_amountLD",
1433
+ "type": "uint256"
1434
+ },
1435
+ {
1436
+ "internalType": "bytes",
1437
+ "name": "_composeMsg",
1438
+ "type": "bytes"
1439
+ }
1440
+ ],
1441
+ "name": "retryReceiveToken",
1442
+ "outputs": [],
1443
+ "stateMutability": "nonpayable",
1444
+ "type": "function"
1445
+ },
1446
+ {
1447
+ "inputs": [
1448
+ {
1449
+ "components": [
1450
+ {
1451
+ "internalType": "uint32",
1452
+ "name": "dstEid",
1453
+ "type": "uint32"
1454
+ },
1455
+ {
1456
+ "internalType": "bytes32",
1457
+ "name": "to",
1458
+ "type": "bytes32"
1459
+ },
1460
+ {
1461
+ "internalType": "uint256",
1462
+ "name": "amountLD",
1463
+ "type": "uint256"
1464
+ },
1465
+ {
1466
+ "internalType": "uint256",
1467
+ "name": "minAmountLD",
1468
+ "type": "uint256"
1469
+ },
1470
+ {
1471
+ "internalType": "bytes",
1472
+ "name": "extraOptions",
1473
+ "type": "bytes"
1474
+ },
1475
+ {
1476
+ "internalType": "bytes",
1477
+ "name": "composeMsg",
1478
+ "type": "bytes"
1479
+ },
1480
+ {
1481
+ "internalType": "bytes",
1482
+ "name": "oftCmd",
1483
+ "type": "bytes"
1484
+ }
1485
+ ],
1486
+ "internalType": "struct SendParam",
1487
+ "name": "_sendParam",
1488
+ "type": "tuple"
1489
+ },
1490
+ {
1491
+ "components": [
1492
+ {
1493
+ "internalType": "uint256",
1494
+ "name": "nativeFee",
1495
+ "type": "uint256"
1496
+ },
1497
+ {
1498
+ "internalType": "uint256",
1499
+ "name": "lzTokenFee",
1500
+ "type": "uint256"
1501
+ }
1502
+ ],
1503
+ "internalType": "struct MessagingFee",
1504
+ "name": "_fee",
1505
+ "type": "tuple"
1506
+ },
1507
+ {
1508
+ "internalType": "address",
1509
+ "name": "_refundAddress",
1510
+ "type": "address"
1511
+ }
1512
+ ],
1513
+ "name": "send",
1514
+ "outputs": [
1515
+ {
1516
+ "components": [
1517
+ {
1518
+ "internalType": "bytes32",
1519
+ "name": "guid",
1520
+ "type": "bytes32"
1521
+ },
1522
+ {
1523
+ "internalType": "uint64",
1524
+ "name": "nonce",
1525
+ "type": "uint64"
1526
+ },
1527
+ {
1528
+ "components": [
1529
+ {
1530
+ "internalType": "uint256",
1531
+ "name": "nativeFee",
1532
+ "type": "uint256"
1533
+ },
1534
+ {
1535
+ "internalType": "uint256",
1536
+ "name": "lzTokenFee",
1537
+ "type": "uint256"
1538
+ }
1539
+ ],
1540
+ "internalType": "struct MessagingFee",
1541
+ "name": "fee",
1542
+ "type": "tuple"
1543
+ }
1544
+ ],
1545
+ "internalType": "struct MessagingReceipt",
1546
+ "name": "msgReceipt",
1547
+ "type": "tuple"
1548
+ },
1549
+ {
1550
+ "components": [
1551
+ {
1552
+ "internalType": "uint256",
1553
+ "name": "amountSentLD",
1554
+ "type": "uint256"
1555
+ },
1556
+ {
1557
+ "internalType": "uint256",
1558
+ "name": "amountReceivedLD",
1559
+ "type": "uint256"
1560
+ }
1561
+ ],
1562
+ "internalType": "struct OFTReceipt",
1563
+ "name": "oftReceipt",
1564
+ "type": "tuple"
1565
+ }
1566
+ ],
1567
+ "stateMutability": "payable",
1568
+ "type": "function"
1569
+ },
1570
+ {
1571
+ "inputs": [
1572
+ {
1573
+ "internalType": "uint32",
1574
+ "name": "_dstEid",
1575
+ "type": "uint32"
1576
+ },
1577
+ {
1578
+ "components": [
1579
+ {
1580
+ "internalType": "uint32",
1581
+ "name": "srcEid",
1582
+ "type": "uint32"
1583
+ },
1584
+ {
1585
+ "internalType": "uint64",
1586
+ "name": "amount",
1587
+ "type": "uint64"
1588
+ },
1589
+ {
1590
+ "internalType": "uint64",
1591
+ "name": "minAmount",
1592
+ "type": "uint64"
1593
+ }
1594
+ ],
1595
+ "internalType": "struct TargetCredit[]",
1596
+ "name": "_credits",
1597
+ "type": "tuple[]"
1598
+ }
1599
+ ],
1600
+ "name": "sendCredits",
1601
+ "outputs": [
1602
+ {
1603
+ "components": [
1604
+ {
1605
+ "internalType": "uint32",
1606
+ "name": "srcEid",
1607
+ "type": "uint32"
1608
+ },
1609
+ {
1610
+ "internalType": "uint64",
1611
+ "name": "amount",
1612
+ "type": "uint64"
1613
+ }
1614
+ ],
1615
+ "internalType": "struct Credit[]",
1616
+ "name": "",
1617
+ "type": "tuple[]"
1618
+ }
1619
+ ],
1620
+ "stateMutability": "nonpayable",
1621
+ "type": "function"
1622
+ },
1623
+ {
1624
+ "inputs": [
1625
+ {
1626
+ "components": [
1627
+ {
1628
+ "internalType": "uint32",
1629
+ "name": "dstEid",
1630
+ "type": "uint32"
1631
+ },
1632
+ {
1633
+ "internalType": "bytes32",
1634
+ "name": "to",
1635
+ "type": "bytes32"
1636
+ },
1637
+ {
1638
+ "internalType": "uint256",
1639
+ "name": "amountLD",
1640
+ "type": "uint256"
1641
+ },
1642
+ {
1643
+ "internalType": "uint256",
1644
+ "name": "minAmountLD",
1645
+ "type": "uint256"
1646
+ },
1647
+ {
1648
+ "internalType": "bytes",
1649
+ "name": "extraOptions",
1650
+ "type": "bytes"
1651
+ },
1652
+ {
1653
+ "internalType": "bytes",
1654
+ "name": "composeMsg",
1655
+ "type": "bytes"
1656
+ },
1657
+ {
1658
+ "internalType": "bytes",
1659
+ "name": "oftCmd",
1660
+ "type": "bytes"
1661
+ }
1662
+ ],
1663
+ "internalType": "struct SendParam",
1664
+ "name": "_sendParam",
1665
+ "type": "tuple"
1666
+ },
1667
+ {
1668
+ "components": [
1669
+ {
1670
+ "internalType": "uint256",
1671
+ "name": "nativeFee",
1672
+ "type": "uint256"
1673
+ },
1674
+ {
1675
+ "internalType": "uint256",
1676
+ "name": "lzTokenFee",
1677
+ "type": "uint256"
1678
+ }
1679
+ ],
1680
+ "internalType": "struct MessagingFee",
1681
+ "name": "_fee",
1682
+ "type": "tuple"
1683
+ },
1684
+ {
1685
+ "internalType": "address",
1686
+ "name": "_refundAddress",
1687
+ "type": "address"
1688
+ }
1689
+ ],
1690
+ "name": "sendToken",
1691
+ "outputs": [
1692
+ {
1693
+ "components": [
1694
+ {
1695
+ "internalType": "bytes32",
1696
+ "name": "guid",
1697
+ "type": "bytes32"
1698
+ },
1699
+ {
1700
+ "internalType": "uint64",
1701
+ "name": "nonce",
1702
+ "type": "uint64"
1703
+ },
1704
+ {
1705
+ "components": [
1706
+ {
1707
+ "internalType": "uint256",
1708
+ "name": "nativeFee",
1709
+ "type": "uint256"
1710
+ },
1711
+ {
1712
+ "internalType": "uint256",
1713
+ "name": "lzTokenFee",
1714
+ "type": "uint256"
1715
+ }
1716
+ ],
1717
+ "internalType": "struct MessagingFee",
1718
+ "name": "fee",
1719
+ "type": "tuple"
1720
+ }
1721
+ ],
1722
+ "internalType": "struct MessagingReceipt",
1723
+ "name": "msgReceipt",
1724
+ "type": "tuple"
1725
+ },
1726
+ {
1727
+ "components": [
1728
+ {
1729
+ "internalType": "uint256",
1730
+ "name": "amountSentLD",
1731
+ "type": "uint256"
1732
+ },
1733
+ {
1734
+ "internalType": "uint256",
1735
+ "name": "amountReceivedLD",
1736
+ "type": "uint256"
1737
+ }
1738
+ ],
1739
+ "internalType": "struct OFTReceipt",
1740
+ "name": "oftReceipt",
1741
+ "type": "tuple"
1742
+ },
1743
+ {
1744
+ "components": [
1745
+ {
1746
+ "internalType": "uint72",
1747
+ "name": "ticketId",
1748
+ "type": "uint72"
1749
+ },
1750
+ {
1751
+ "internalType": "bytes",
1752
+ "name": "passengerBytes",
1753
+ "type": "bytes"
1754
+ }
1755
+ ],
1756
+ "internalType": "struct Ticket",
1757
+ "name": "ticket",
1758
+ "type": "tuple"
1759
+ }
1760
+ ],
1761
+ "stateMutability": "payable",
1762
+ "type": "function"
1763
+ },
1764
+ {
1765
+ "inputs": [
1766
+ {
1767
+ "components": [
1768
+ {
1769
+ "internalType": "address",
1770
+ "name": "feeLib",
1771
+ "type": "address"
1772
+ },
1773
+ {
1774
+ "internalType": "address",
1775
+ "name": "planner",
1776
+ "type": "address"
1777
+ },
1778
+ {
1779
+ "internalType": "address",
1780
+ "name": "treasurer",
1781
+ "type": "address"
1782
+ },
1783
+ {
1784
+ "internalType": "address",
1785
+ "name": "tokenMessaging",
1786
+ "type": "address"
1787
+ },
1788
+ {
1789
+ "internalType": "address",
1790
+ "name": "creditMessaging",
1791
+ "type": "address"
1792
+ },
1793
+ {
1794
+ "internalType": "address",
1795
+ "name": "lzToken",
1796
+ "type": "address"
1797
+ }
1798
+ ],
1799
+ "internalType": "struct StargateBase.AddressConfig",
1800
+ "name": "_config",
1801
+ "type": "tuple"
1802
+ }
1803
+ ],
1804
+ "name": "setAddressConfig",
1805
+ "outputs": [],
1806
+ "stateMutability": "nonpayable",
1807
+ "type": "function"
1808
+ },
1809
+ {
1810
+ "inputs": [
1811
+ {
1812
+ "internalType": "uint256",
1813
+ "name": "_deficitOffsetLD",
1814
+ "type": "uint256"
1815
+ }
1816
+ ],
1817
+ "name": "setDeficitOffset",
1818
+ "outputs": [],
1819
+ "stateMutability": "nonpayable",
1820
+ "type": "function"
1821
+ },
1822
+ {
1823
+ "inputs": [
1824
+ {
1825
+ "internalType": "uint32",
1826
+ "name": "_dstEid",
1827
+ "type": "uint32"
1828
+ },
1829
+ {
1830
+ "internalType": "bool",
1831
+ "name": "_oft",
1832
+ "type": "bool"
1833
+ }
1834
+ ],
1835
+ "name": "setOFTPath",
1836
+ "outputs": [],
1837
+ "stateMutability": "nonpayable",
1838
+ "type": "function"
1839
+ },
1840
+ {
1841
+ "inputs": [
1842
+ {
1843
+ "internalType": "bool",
1844
+ "name": "_paused",
1845
+ "type": "bool"
1846
+ }
1847
+ ],
1848
+ "name": "setPause",
1849
+ "outputs": [],
1850
+ "stateMutability": "nonpayable",
1851
+ "type": "function"
1852
+ },
1853
+ {
1854
+ "inputs": [
1855
+ {
1856
+ "internalType": "uint256",
1857
+ "name": "_gasLimit",
1858
+ "type": "uint256"
1859
+ }
1860
+ ],
1861
+ "name": "setTransferGasLimit",
1862
+ "outputs": [],
1863
+ "stateMutability": "nonpayable",
1864
+ "type": "function"
1865
+ },
1866
+ {
1867
+ "inputs": [],
1868
+ "name": "sharedDecimals",
1869
+ "outputs": [
1870
+ {
1871
+ "internalType": "uint8",
1872
+ "name": "",
1873
+ "type": "uint8"
1874
+ }
1875
+ ],
1876
+ "stateMutability": "view",
1877
+ "type": "function"
1878
+ },
1879
+ {
1880
+ "inputs": [],
1881
+ "name": "stargateType",
1882
+ "outputs": [
1883
+ {
1884
+ "internalType": "enum StargateType",
1885
+ "name": "",
1886
+ "type": "uint8"
1887
+ }
1888
+ ],
1889
+ "stateMutability": "pure",
1890
+ "type": "function"
1891
+ },
1892
+ {
1893
+ "inputs": [],
1894
+ "name": "status",
1895
+ "outputs": [
1896
+ {
1897
+ "internalType": "uint8",
1898
+ "name": "",
1899
+ "type": "uint8"
1900
+ }
1901
+ ],
1902
+ "stateMutability": "view",
1903
+ "type": "function"
1904
+ },
1905
+ {
1906
+ "inputs": [],
1907
+ "name": "token",
1908
+ "outputs": [
1909
+ {
1910
+ "internalType": "address",
1911
+ "name": "",
1912
+ "type": "address"
1913
+ }
1914
+ ],
1915
+ "stateMutability": "view",
1916
+ "type": "function"
1917
+ },
1918
+ {
1919
+ "inputs": [
1920
+ {
1921
+ "internalType": "address",
1922
+ "name": "newOwner",
1923
+ "type": "address"
1924
+ }
1925
+ ],
1926
+ "name": "transferOwnership",
1927
+ "outputs": [],
1928
+ "stateMutability": "nonpayable",
1929
+ "type": "function"
1930
+ },
1931
+ {
1932
+ "inputs": [],
1933
+ "name": "treasuryFee",
1934
+ "outputs": [
1935
+ {
1936
+ "internalType": "uint64",
1937
+ "name": "",
1938
+ "type": "uint64"
1939
+ }
1940
+ ],
1941
+ "stateMutability": "view",
1942
+ "type": "function"
1943
+ },
1944
+ {
1945
+ "inputs": [],
1946
+ "name": "tvl",
1947
+ "outputs": [
1948
+ {
1949
+ "internalType": "uint256",
1950
+ "name": "",
1951
+ "type": "uint256"
1952
+ }
1953
+ ],
1954
+ "stateMutability": "view",
1955
+ "type": "function"
1956
+ },
1957
+ {
1958
+ "inputs": [
1959
+ {
1960
+ "internalType": "bytes32",
1961
+ "name": "guid",
1962
+ "type": "bytes32"
1963
+ },
1964
+ {
1965
+ "internalType": "uint8",
1966
+ "name": "index",
1967
+ "type": "uint8"
1968
+ }
1969
+ ],
1970
+ "name": "unreceivedTokens",
1971
+ "outputs": [
1972
+ {
1973
+ "internalType": "bytes32",
1974
+ "name": "hash",
1975
+ "type": "bytes32"
1976
+ }
1977
+ ],
1978
+ "stateMutability": "view",
1979
+ "type": "function"
1980
+ },
1981
+ {
1982
+ "inputs": [],
1983
+ "name": "withdrawPlannerFee",
1984
+ "outputs": [],
1985
+ "stateMutability": "nonpayable",
1986
+ "type": "function"
1987
+ },
1988
+ {
1989
+ "inputs": [
1990
+ {
1991
+ "internalType": "address",
1992
+ "name": "_to",
1993
+ "type": "address"
1994
+ },
1995
+ {
1996
+ "internalType": "uint64",
1997
+ "name": "_amountSD",
1998
+ "type": "uint64"
1999
+ }
2000
+ ],
2001
+ "name": "withdrawTreasuryFee",
2002
+ "outputs": [],
2003
+ "stateMutability": "nonpayable",
2004
+ "type": "function"
2005
+ }
2006
+ ],
2007
+ "bytecode": "0x6101406040526108fc6001556002805460ff60a01b1916600160a01b1790553480156200002b57600080fd5b5060405162007f2238038062007f228339810160408190526200004e9162000301565b8686868686868684848484846200006533620001a7565b6001600160a01b03851660805260ff80841690851610156200009a57604051632e4b554360e01b815260040160405180910390fd5b620000a68385620003de565b620000b390600a620004fd565b60c05260ff831660a0526001600160a01b03821660e08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e919062000515565b63ffffffff16610100526200014381620001a7565b50505050508686856040516200015990620001f7565b62000167939291906200056b565b604051809103906000f08015801562000184573d6000803e3d6000fd5b506001600160a01b03166101205250620005a89c50505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611c0f806200631383390190565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002385781810151838201526020016200021e565b50506000910152565b600082601f8301126200025357600080fd5b81516001600160401b038082111562000270576200027062000205565b604051601f8301601f19908116603f011681019082821181831017156200029b576200029b62000205565b81604052838152866020858801011115620002b557600080fd5b620002c88460208301602089016200021b565b9695505050505050565b80516001600160a01b0381168114620002ea57600080fd5b919050565b805160ff81168114620002ea57600080fd5b600080600080600080600060e0888a0312156200031d57600080fd5b87516001600160401b03808211156200033557600080fd5b620003438b838c0162000241565b985060208a01519150808211156200035a57600080fd5b50620003698a828b0162000241565b9650506200037a60408901620002d2565b94506200038a60608901620002ef565b93506200039a60808901620002ef565b9250620003aa60a08901620002d2565b9150620003ba60c08901620002d2565b905092959891949750929550565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620003fa57620003fa620003c8565b92915050565b600181815b8085111562000441578160001904821115620004255762000425620003c8565b808516156200043357918102915b93841c939080029062000405565b509250929050565b6000826200045a57506001620003fa565b816200046957506000620003fa565b81600181146200048257600281146200048d57620004ad565b6001915050620003fa565b60ff841115620004a157620004a1620003c8565b50506001821b620003fa565b5060208310610133831016604e8410600b8410161715620004d2575081810a620003fa565b620004de838362000400565b8060001904821115620004f557620004f5620003c8565b029392505050565b60006200050e60ff84168362000449565b9392505050565b6000602082840312156200052857600080fd5b815163ffffffff811681146200050e57600080fd5b60008151808452620005578160208601602086016200021b565b601f01601f19169290920160200192915050565b6060815260006200058060608301866200053d565b82810360208401526200059481866200053d565b91505060ff83166040830152949350505050565b60805160a05160c05160e0516101005161012051615c03620007106000396000818161070401528181612177015281816123350152818161255c0152612a3101526000818161076f01528181611bb101528181612289015281816126e5015281816127a40152818161298d015281816131660152613c1e0152600081816106bb0152818161169701528181612ebf01526148ee0152600081816108c00152818161094a01528181610b0601528181610e3101528181610e9c01528181611094015281816111f801528181611295015281816112bf015281816115b801528181611d0a0152818161210a015281816122c4015281816124f90152818161287c015281816129ce015281816130d401528181613389015281816134ae015281816134d8015281816137370152613aa901526000610819015260008181610b5b01528181612cbe01528181613103015281816139c801528181613a8601526142bb0152615c036000f3fe6080604052600436106103135760003560e01c80637bde82f21161019a578063abfd0d40116100e1578063cc32d1761161008a578063e5328e0611610064578063e5328e0614610ae7578063f2fde38b14610b29578063fc0c546a14610b4957600080fd5b8063cc32d17614610a4d578063d0f3bad114610a87578063d621ad3f14610aaf57600080fd5b8063c7c7f5b3116100bb578063c7c7f5b3146109f8578063c859c48314610a0b578063cbef2aa914610a2b57600080fd5b8063abfd0d40146109ae578063b0d7ca5d146109c3578063bedb86fb146109d857600080fd5b80639561b12f11610143578063a7229fd91161011d578063a7229fd914610918578063a85dc7f214610938578063a88835d71461098e57600080fd5b80639561b12f1461088e57806396365d44146108ae5780639f68b964146108fc57600080fd5b806388543f0e1161017457806388543f0e1461083b5780638c70830b146108505780638da5cb5b1461087057600080fd5b80637bde82f2146107c757806381bdf98c146107e7578063857749b01461080757600080fd5b80633faa12c51161025e5780635e280f1111610207578063715018a6116101e1578063715018a614610748578063726075371461075d578063764f6a78146107a657600080fd5b80635e280f11146106a95780635fcbd285146106f557806366fd482a1461072857600080fd5b806347e7ef241161023857806347e7ef2414610655578063484267a4146106765780635114bf091461069657600080fd5b80633faa12c5146105f5578063434def5514610615578063461bb0b91461063557600080fd5b8063200d2ed2116102c0578063341a46481161029a578063341a46481461057257806338da6b8e146105855780633b6f743b146105d557600080fd5b8063200d2ed214610429578063203bd15f1461045c5780632bc5114c1461047c57600080fd5b8063156a0d0f116102f1578063156a0d0f1461039f57806316909bca146103e0578063192adc5d146103fc57600080fd5b80630141e41b146103185780630d35b4151461034e57806313bc4bc71461037d575b600080fd5b34801561032457600080fd5b50610338610333366004614ab9565b610b7d565b6040516103459190614b96565b60405180910390f35b34801561035a57600080fd5b5061036e610369366004614bbb565b610df1565b60405161034593929190614c40565b34801561038957600080fd5b5061039d610398366004614cf7565b6112f7565b005b3480156103ab57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610345565b3480156103ec57600080fd5b5060006040516103459190614d10565b34801561040857600080fd5b5061041c610417366004614d5f565b611358565b6040516103459190614db1565b34801561043557600080fd5b5060025461044a90600160a01b900460ff1681565b60405160ff9091168152602001610345565b34801561046857600080fd5b5061039d610477366004614e49565b611529565b34801561048857600080fd5b506105116040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526002546001600160a01b03908116825260055481166020830152600754811692820192909252600654821660608201526003548216608082015260045490911660a082015290565b6040516103459190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b61039d610580366004614cf7565b611820565b34801561059157600080fd5b506105bc6105a0366004614ecb565b60086020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b3480156105e157600080fd5b5061041c6105f0366004614d5f565b6118fa565b34801561060157600080fd5b5061039d610610366004614ee6565b611ba7565b34801561062157600080fd5b5061039d610630366004614f23565b611c7b565b34801561064157600080fd5b5061039d610650366004614f86565b611ee1565b610668610663366004614f98565b61208f565b604051908152602001610345565b34801561068257600080fd5b50610668610691366004614fc2565b612282565b3480156106a257600080fd5b5047610668565b3480156106b557600080fd5b506106dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610345565b34801561070157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006106dd565b34801561073457600080fd5b5061039d610743366004614fdd565b6123c2565b34801561075457600080fd5b5061039d612418565b34801561076957600080fd5b506107917f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610345565b6107b96107b4366004615009565b61242c565b6040516103459291906150a7565b3480156107d357600080fd5b506106686107e23660046150cb565b612922565b3480156107f357600080fd5b50600b546106dd906001600160a01b031681565b34801561081357600080fd5b5061044a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561084757600080fd5b50600154610668565b34801561085c57600080fd5b5061039d61086b366004614cf7565b612b2b565b34801561087c57600080fd5b506000546001600160a01b03166106dd565b34801561089a57600080fd5b5061039d6108a93660046150f7565b612b38565b3480156108ba57600080fd5b50600a547f00000000000000000000000000000000000000000000000000000000000000006801000000000000000090910467ffffffffffffffff1602610668565b34801561090857600080fd5b5060405160018152602001610345565b34801561092457600080fd5b5061066861093336600461516a565b612c8d565b34801561094457600080fd5b50600a547f000000000000000000000000000000000000000000000000000000000000000070010000000000000000000000000000000090910467ffffffffffffffff1602610668565b34801561099a57600080fd5b5061039d6109a93660046151a6565b612d7b565b3480156109ba57600080fd5b5061039d612f98565b3480156109cf57600080fd5b5061039d6131a6565b3480156109e457600080fd5b5061039d6109f336600461522f565b61320f565b6107b9610a06366004615009565b6132ca565b348015610a1757600080fd5b5061039d610a26366004614fdd565b6132fe565b610a3e610a39366004615009565b6133f9565b6040516103459392919061524c565b348015610a5957600080fd5b506002546105bc907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b348015610a9357600080fd5b50600b546105bc90600160a01b900467ffffffffffffffff1681565b348015610abb57600080fd5b50610668610aca3660046152a7565b600960209081526000928352604080842090915290825290205481565b348015610af357600080fd5b50610668600a5467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b348015610b3557600080fd5b5061039d610b44366004614fc2565b6135ce565b348015610b5557600080fd5b506106dd7f000000000000000000000000000000000000000000000000000000000000000081565b600254606090600160a01b900460ff16600114610bf557600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556003546001600160a01b0316338114610c3457604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff811115610c4f57610c4f6152ca565b604051908082528060200260200182016040528015610c9457816020015b6040805180820190915260008082526020820152815260200190600190039081610c6d5790505b5090506000805b85811015610d965736878783818110610cb657610cb66152f9565b90506060020190506000610d20826020016020810190610cd69190615328565b610ce66060850160408601615328565b60086000610cf76020880188614ecb565b63ffffffff1663ffffffff16815260200190815260200160002061367a9092919063ffffffff16565b905067ffffffffffffffff811615610d8c576040805180820190915280610d4a6020850185614ecb565b63ffffffff16815267ffffffffffffffff83166020909101528585610d6e81615374565b965081518110610d8057610d806152f9565b60200260200101819052505b5050600101610c9b565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610dcb9291906153ac565b60405180910390a1509150506002805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610e24604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610ebf60086000886000016020810190610e6f9190614ecb565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610eec8460200151866040013511610ee2578560400135613730565b8460200151613730565b90506000610f1c610f006020880188614ecb565b83610f17610f1160c08b018b6153cb565b15919050565b613770565b600254604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff39190615430565b90508267ffffffffffffffff168167ffffffffffffffff161461127a5760408051600180825281830190925290816020015b6040805180820190915260008152606060208201528152602001906001900390816110255790505094508267ffffffffffffffff168167ffffffffffffffff1610156111475760405180604001604052806110bc6110b78487611088919061544d565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b613885565b6110e6907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61546e565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110611137576111376152f9565b602002602001018190525061127a565b8267ffffffffffffffff168167ffffffffffffffff16111561127a57600061116f848361544d565b905061117b828261393b565b909250905067ffffffffffffffff808516908316036111da5760408051600080825260208201909252906111d2565b6040805180820190915260008152606060208201528152602001906001900390816111aa5790505b509550611278565b604051806040016040528061121b6110b78467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f72657761726400000000000000000000000000000000000000000000000000008152508152508660008151811061126c5761126c6152f9565b60200260200101819052505b505b60405180604001604052806112b88567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b6005546001600160a01b031633811461132357604051635bd25eff60e01b815260040160405180910390fd5b61132c82613730565b600a60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b604080518082019091526000808252602082015261137c610f1160c08501856153cb565b6113b2576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113c18460400135613730565b6006546040805160c081019091523381529192506001600160a01b031690633292cf02906020808201906113f790890189614ecb565b63ffffffff1681526020888101359082015267ffffffffffffffff8516604082015260600161142960a08901896153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161147060808901896153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114e191908790600401615529565b6040805180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152191906155d7565b949350505050565b600254600160a01b900460ff1660011461156c57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556006546001600160a01b03163381146115ab57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f0000000000000000000000000000000000000000000000000000000000000000028215801590606090611644576116416115f760608c0160408d01615328565b61160460208d018d614ecb565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061398f92505050565b90505b600061165089856139c1565b9050801561176257611661886139ee565b8215611706576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906116d3908c908e9060009088906004016155f3565b600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61173f60208f018f614ecb565b6040805163ffffffff9092168252602082018990520160405180910390a3611800565b61176f60208c018c614ecb565b8985846040516020016117859493929190615625565b60408051601f19818403018152918152815160209283012060008d8152600984528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c91906117e2908f018f614ecb565b8c88876040516117f7969594939291906156a3565b60405180910390a15b50506002805460ff60a01b1916600160a01b179055505050505050505050565b6007546001600160a01b031633811461184c57604051635bd25eff60e01b815260040160405180910390fd5b61185582613a3c565b60006118613384613a74565b905080600260158282829054906101000a900467ffffffffffffffff1661188891906156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd0816040516118ed919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b6040805180820190915260008082526020820152600061191d8460400135613730565b90508067ffffffffffffffff16600003611963576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611975610f1160c08701876153cb565b90508015611ae3576006546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906119b2908a018a614ecb565b63ffffffff1681526020898101359082015267ffffffffffffffff861660408201526060016119e460a08a018a6153cb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001611a2b60808a018a6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152611a9c91908890600401615529565b6040805180830381865afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc91906155d7565b9250611b9f565b600080611af360808801886153cb565b60065492109250506001600160a01b03166375d2208c611b166020890189614ecb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906155d7565b9350505b505092915050565b611baf613ad9565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff1603611c14576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff8083166000908152600860205260409020611c36918390613b4d16565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b600254600160a01b900460ff16600114611cbe57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556006546001600160a01b0316338114611cfd57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f0000000000000000000000000000000000000000000000000000000000000000026000611d3685836139c1565b90508015611da357611d47846139ee565b6001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c611d8060208c018c614ecb565b6040805163ffffffff9092168252602082018790520160405180910390a3611ec4565b611db06020890189614ecb565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526009845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b559088908890611e78908c018c614ecb565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506002805460ff60a01b1916600160a01b179055505050505050565b611ee9613ad9565b611ef66020820182614fc2565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611f336040820160208301614fc2565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611f706060820160408301614fc2565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611fad6080820160608301614fc2565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611fea60a0820160808301614fc2565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905561202760c0820160a08301614fc2565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090612084908390615713565b60405180910390a150565b600254600090600160a01b900460ff166001146120d557600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556120f182613a3c565b60006120fd3384613a74565b905061210881613c17565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529193507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156121bd57600080fd5b505af11580156121d1573d6000803e3d6000fd5b5050600a80548493509091506000906121f590849067ffffffffffffffff166156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836001600160a01b0316336001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a78460405161226091815260200190565b60405180910390a3506002805460ff60a01b1916600160a01b17905592915050565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081205467ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000026001600160a01b0383166122fa578091506123b7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561237e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a29190615792565b90508082116123b157816123b3565b805b9250505b50919050565b905090565b6123ca613ad9565b600b805467ffffffffffffffff909216600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009092166001600160a01b0390931692909217179055565b612420613ad9565b61242a6000613c7e565b565b612434614a58565b6040805180820190915260008082526020820152600254600160a01b900460ff1660011461248b57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556124ae610f1160c08701876153cb565b6124e4576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124f38660400135613730565b905060007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8316026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b5050604051838152600092503391507f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc9060200160405180910390a3600061261261260a60208a018a614ecb565b846001613770565b9050600061262c826126278b60600135613730565b613cdb565b600a8054919250859160009061264d90849067ffffffffffffffff1661544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506126b681600860008c600001602081019061268e9190614ecb565b63ffffffff1663ffffffff168152602001908152602001600020613f3990919063ffffffff16565b8067ffffffffffffffff168467ffffffffffffffff1611156127755760006126de828661544d565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600090815260086020526040902091925061272491908390613f3916565b80600a60088282829054906101000a900467ffffffffffffffff16612749919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050612830565b8067ffffffffffffffff168467ffffffffffffffff16101561283057600061279d858361544d565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090209192506127e391908390613fc716565b80600a60088282829054906101000a900467ffffffffffffffff1661280891906156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b600061284b612844368b90038b018b6157ab565b6000614061565b90506128598a82848b6140b6565b9650604051806040016040528085815260200161289f8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b9052875190965033907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6128d660208e018e614ecb565b60208a8101516040805163ffffffff90941684529183018a90529082015260600160405180910390a350506002805460ff60a01b1916600160a01b179055509296919550909350505050565b600254600090600160a01b900460ff1660011461296857600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b179055600061298684613730565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090209192506129cc91908390613f3916565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b158015612a7d57600080fd5b505af1158015612a91573d6000803e3d6000fd5b5050600a8054849350909150600090612ab590849067ffffffffffffffff1661544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612ae58383614245565b612aee816139ee565b6040518281526001600160a01b0384169033907f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc90602001612260565b612b33613ad9565b600155565b600254600160a01b900460ff16600114612b7b57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556003546001600160a01b0316338114612bba57604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015612c385736848483818110612bd857612bd86152f9565b9050604002019050612c2f816020016020810190612bf69190615328565b60086000612c076020860186614ecb565b63ffffffff1663ffffffff168152602001908152602001600020613fc790919063ffffffff16565b50600101612bbd565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051612c6c939291906157dd565b60405180910390a150506002805460ff60a01b1916600160a01b1790555050565b6007546000906001600160a01b0316338114612cbc57604051635bd25eff60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603612d6557600254600a54600091612d3e916110889167ffffffffffffffff7501000000000000000000000000000000000000000000909104811691680100000000000000009004166156f2565b612d4661428a565b612d509190615850565b9050808411612d5f5783612d61565b805b9350505b612d7085858561432e565b91505b509392505050565b600254600160a01b900460ff16600114612dbe57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b179055604051612dea9086908690869086908690602001615863565b60408051601f19818403018152918152815160209283012060008a81526009845282812060ff8b16825290935291205414612e51576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260096020908152604080832060ff8a168452909152812055612e788484614245565b612e89612e8484613730565b6139ee565b8015612f30576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290612efd9087908b90600090889088906004016158d5565b600060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506002805460ff60a01b1916600160a01b1790555050505050565b600b546001600160a01b03163314612fc357604051635bd25eff60e01b815260040160405180910390fd5b600a54600b546801000000000000000090910467ffffffffffffffff908116600160a01b909204161115613023576040517fcef6bb2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54600a805467ffffffffffffffff600160a01b90930483169283929160089161305d918591680100000000000000009091041661544d565b825467ffffffffffffffff9182166101009390930a928302928202191691909117909155600b80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1690556040517f42966c680000000000000000000000000000000000000000000000000000000081529083167f00000000000000000000000000000000000000000000000000000000000000000260048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506342966c6890602401600060405180830381600087803b15801561314857600080fd5b505af115801561315c573d6000803e3d6000fd5b50505063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090206131a3925090839061441b16565b50565b6005546001600160a01b03163381146131d257604051635bd25eff60e01b815260040160405180910390fd5b476131df3382600061445f565b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e18390602001611c6f565b6005546001600160a01b031633811461323b57604051635bd25eff60e01b815260040160405180910390fd5b600254600119600160a01b90910460ff160161326a576040516376a9ad7360e01b815260040160405180910390fd5b81613276576001613279565b60035b6002805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb90602001611c6f565b6132d2614a58565b60408051808201909152600080825260208201526132f18585856133f9565b5090969095509350505050565b6007546001600160a01b031633811461332a57604051635bd25eff60e01b815260040160405180910390fd5b81600260158282829054906101000a900467ffffffffffffffff1661334f919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506133b1836133ac8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b614245565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e65391016118ed565b613401614a58565b6040805180820190915260008082526020820152604080518082019091526000815260606020820152600254600160a01b900460ff1660011461346d57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556000808061348d896144a0565b92509250925060405180604001604052806134d18467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160290529450600061352261351b368b90038b018b6157ab565b8751614061565b9050831561353d576135368a82848b6140b6565b965061354f565b6135498a82848b61451a565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61358160208e018e614ecb565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506002805460ff60a01b1916600160a01b1790555092969195509350915050565b6135d6613ad9565b6001600160a01b038116613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6131a381613c7e565b825460009067ffffffffffffffff1667fffffffffffffffe1981016136cb576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff161015612d735782810367ffffffffffffffff808216908616116137045784613706565b805b865467ffffffffffffffff8285031667ffffffffffffffff19909116178755925050509392505050565b600061376a7f0000000000000000000000000000000000000000000000000000000000000000838161376457613764615926565b04614716565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600a546000906137d29067ffffffffffffffff7001000000000000000000000000000000008204811691166156f2565b600a5490915060009067ffffffffffffffff68010000000000000000909104811690831611613802576000613825565b600a546138259068010000000000000000900467ffffffffffffffff168361544d565b6040805160c08101825233815263ffffffff8916602080830182905267ffffffffffffffff8a811684860152948516606084015260009182526008905291909120548216909114608082015284151560a0820152925050505b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401613668565b5090565b600254600090819067ffffffffffffffff7501000000000000000000000000000000000000000000909104811690841681101561398057838503810192509050613988565b848492509250505b9250929050565b6060848484846040516020016139a89493929190615955565b6040516020818303038152906040529050949350505050565b600061387e7f000000000000000000000000000000000000000000000000000000000000000084846147b0565b80600a60088282829054906101000a900467ffffffffffffffff16613a13919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b34156131a3576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613a7f82613730565b905061376a7f000000000000000000000000000000000000000000000000000000000000000084307f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff86160261485c565b6000546001600160a01b0316331461242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401613668565b815467ffffffffffffffff168115613bbf5767ffffffffffffffff811615613ba1576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff81811614613c02576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600860205260409020613c59918390613fc716565b80600a60088282829054906101000a900467ffffffffffffffff16613a1391906156f2565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600254604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af1158015613d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db39190615430565b604084015190915067ffffffffffffffff8082169083161015613e3a57613dda828261544d565b60028054601590613e0f9084907501000000000000000000000000000000000000000000900467ffffffffffffffff166156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550613ed1565b8067ffffffffffffffff168267ffffffffffffffff161115613ed1576000613e62828461544d565b9050613e6e838261393b565b909350905067ffffffffffffffff811615613ecf5780600260158282829054906101000a900467ffffffffffffffff16613ea8919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b505b8267ffffffffffffffff168267ffffffffffffffff161080613efb575067ffffffffffffffff8216155b15613f32576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe198101613f5a57505050565b8167ffffffffffffffff168167ffffffffffffffff161015613fa8576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b815467ffffffffffffffff1667fffffffffffffffe198101613fe857505050565b613ff282826156f2565b905067fffffffffffffffe1967ffffffffffffffff821601614040576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b6040805180820190915260008082526020820152825134146140af576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b6140be614a58565b6020840151156140d5576140d584602001516148a4565b60065484516040805160c081019091523381526001600160a01b039092169163ff6fb300919060208082019061410d908b018b614ecb565b63ffffffff16815260208a8101359082015267ffffffffffffffff8816604082015260600161413f60a08b018b6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161418660808b018b6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526141f99190899088906004016159d3565b60806040518083038185885af1158015614217573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061423c9190615a83565b95945050505050565b600061425183836139c1565b905080613c12576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561430a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190615792565b600254600090600160a01b900460ff1660011461437457600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556007546001600160a01b03163381146143b357604051635bd25eff60e01b815260040160405180910390fd5b6001600160a01b0385166143f3576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6144008585856000614917565b50506002805460ff60a01b1916600160a01b17905592915050565b6144258282613f39565b60405167ffffffffffffffff821681527f1fdac7d956f6016d09c5485e7edebdec210d236cfcd4f5477962710cc375edfc90602001611c6f565b61446a838383614923565b613c12576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806144b4610f1160c08601866153cb565b92506144c4338560400135613a74565b915060006144df6144d86020870187614ecb565b8486613770565b90506144f2816126278760600135613730565b9150614509826008600061268e60208a018a614ecb565b61451282613c17565b509193909250565b614522614a58565b604080518082019091526000815260606020820152602085015115614573576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040805160a081019091523381526001600160a01b03909116906385afd453906020808201906145a8908b018b614ecb565b63ffffffff16815260208a8101359082015267ffffffffffffffff8816604082015260600160006145dc60808c018c6153cb565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af115801561467d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146a59190810190615a9f565b60408201515187519294509092509080821461470b57818111156146d9578181036146d286826000614923565b505061470b565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115613937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401613668565b6040516001600160a01b0383166024820152604481018290526000906115219085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261494a565b614868848484846149d7565b61489e576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6004546001600160a01b0316806148e7576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61491381337f00000000000000000000000000000000000000000000000000000000000000008561485c565b5050565b61486884848484614a2b565b60008082614931575a614935565b6001545b9050600080600080878986f195945050505050565b6000806000846001600160a01b0316846040516149679190615b94565b6000604051808303816000865af19150503d80600081146149a4576040519150601f19603f3d011682016040523d82523d6000602084013e6149a9565b606091505b5091509150816149ba57600061423c565b8051158061423c57508080602001905181019061423c9190615bb0565b6040516001600160a01b038085166024830152831660448201526064810182905260009061423c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016147f8565b60006001600160a01b038516614a4d57614a46848484614923565b9050611521565b61423c8585856147b0565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614a9b604051806040016040528060008152602001600081525090565b905290565b803563ffffffff81168114614ab457600080fd5b919050565b600080600060408486031215614ace57600080fd5b614ad784614aa0565b9250602084013567ffffffffffffffff80821115614af457600080fd5b818601915086601f830112614b0857600080fd5b813581811115614b1757600080fd5b876020606083028501011115614b2c57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b83811015614b8b578151805163ffffffff16885283015167ffffffffffffffff168388015260409096019590820190600101614b54565b509495945050505050565b60208152600061387e6020830184614b3f565b600060e082840312156123b757600080fd5b600060208284031215614bcd57600080fd5b813567ffffffffffffffff811115614be457600080fd5b61152184828501614ba9565b60005b83811015614c0b578181015183820152602001614bf3565b50506000910152565b60008151808452614c2c816020860160208601614bf0565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015614cd9578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40018552815180518852830151838801879052614cc687890182614c14565b9750509382019390820190600101614c7c565b50508751606088015250505060208501516080850152509050611521565b600060208284031215614d0957600080fd5b5035919050565b6020810160028310614d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b80151581146131a357600080fd5b60008060408385031215614d7257600080fd5b823567ffffffffffffffff811115614d8957600080fd5b614d9585828601614ba9565b9250506020830135614da681614d51565b809150509250929050565b81518152602080830151908201526040810161376a565b6000606082840312156123b757600080fd5b80356001600160a01b0381168114614ab457600080fd5b67ffffffffffffffff811681146131a357600080fd5b60008083601f840112614e1957600080fd5b50813567ffffffffffffffff811115614e3157600080fd5b60208301915083602082850101111561398857600080fd5b60008060008060008060e08789031215614e6257600080fd5b614e6c8888614dc8565b955060608701359450614e8160808801614dda565b935060a0870135614e9181614df1565b925060c087013567ffffffffffffffff811115614ead57600080fd5b614eb989828a01614e07565b979a9699509497509295939492505050565b600060208284031215614edd57600080fd5b61387e82614aa0565b60008060408385031215614ef957600080fd5b614f0283614aa0565b91506020830135614da681614d51565b803560ff81168114614ab457600080fd5b600080600080600060e08688031215614f3b57600080fd5b614f458787614dc8565b945060608601359350614f5a60808701614f12565b9250614f6860a08701614dda565b915060c0860135614f7881614df1565b809150509295509295909350565b600060c082840312156123b757600080fd5b60008060408385031215614fab57600080fd5b614fb483614dda565b946020939093013593505050565b600060208284031215614fd457600080fd5b61387e82614dda565b60008060408385031215614ff057600080fd5b614ff983614dda565b91506020830135614da681614df1565b6000806000838503608081121561501f57600080fd5b843567ffffffffffffffff81111561503657600080fd5b61504287828801614ba9565b9450506040601f198201121561505757600080fd5b5060208401915061506a60608501614dda565b90509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151613c12604084018280518252602090810151910152565b60c081016150b58285615073565b82516080830152602083015160a083015261387e565b600080604083850312156150de57600080fd5b823591506150ee60208401614dda565b90509250929050565b60008060006040848603121561510c57600080fd5b61511584614aa0565b9250602084013567ffffffffffffffff8082111561513257600080fd5b818601915086601f83011261514657600080fd5b81358181111561515557600080fd5b8760208260061b8501011115614b2c57600080fd5b60008060006060848603121561517f57600080fd5b61518884614dda565b925061519660208501614dda565b9150604084013590509250925092565b600080600080600080600060c0888a0312156151c157600080fd5b873596506151d160208901614f12565b95506151df60408901614aa0565b94506151ed60608901614dda565b93506080880135925060a088013567ffffffffffffffff81111561521057600080fd5b61521c8a828b01614e07565b989b979a50959850939692959293505050565b60006020828403121561524157600080fd5b813561387e81614d51565b6152568185615073565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e082015260006020830151604061010084015261529d610120840182614c14565b9695505050505050565b600080604083850312156152ba57600080fd5b823591506150ee60208401614f12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561533a57600080fd5b813561387e81614df1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153a5576153a5615345565b5060010190565b63ffffffff831681526040602082015260006115216040830184614b3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261540057600080fd5b83018035915067ffffffffffffffff82111561541b57600080fd5b60200191503681900382131561398857600080fd5b60006020828403121561544257600080fd5b815161387e81614df1565b67ffffffffffffffff828116828216039080821115613f3257613f32615345565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156154a6576154a6615345565b818105831482151761376a5761376a615345565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261551060c0850182614c14565b905060a083015184820360a086015261423c8282614c14565b60408152600061553c60408301856154ba565b905082151560208301529392505050565b6040805190810167ffffffffffffffff81118282101715615570576155706152ca565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561559f5761559f6152ca565b604052919050565b6000604082840312156155b957600080fd5b6155c161554d565b9050815181526020820151602082015292915050565b6000604082840312156155e957600080fd5b61387e83836155a7565b6001600160a01b038516815283602082015261ffff8316604082015260806060820152600061529d6080830184614c14565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16600482015282601882015260008251615693816038850160208701614bf0565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a082015260006156e660c0830184614c14565b98975050505050505050565b67ffffffffffffffff818116838216019080821115613f3257613f32615345565b60c081016001600160a01b038061572985614dda565b1683528061573960208601614dda565b1660208401528061574c60408601614dda565b1660408401528061575f60608601614dda565b1660608401528061577260808601614dda565b1660808401528061578560a08601614dda565b1660a08401525092915050565b6000602082840312156157a457600080fd5b5051919050565b6000604082840312156157bd57600080fd5b6157c561554d565b82358152602083013560208201528091505092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b88811015615842578361581486614aa0565b1682528285013561582481614df1565b67ffffffffffffffff16828401529385019390850190600101615802565b509998505050505050505050565b8181038181111561376a5761376a615345565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516159c381602c850160208701614bf0565b91909101602c0195945050505050565b6080815260006159e660808301866154ba565b90506159ff602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b600060808284031215615a2857600080fd5b6040516060810181811067ffffffffffffffff82111715615a4b57615a4b6152ca565b8060405250809150825181526020830151615a6581614df1565b6020820152615a7784604085016155a7565b60408201525092915050565b600060808284031215615a9557600080fd5b61387e8383615a16565b60008060a08385031215615ab257600080fd5b615abc8484615a16565b9150608083015167ffffffffffffffff80821115615ad957600080fd5b9084019060408287031215615aed57600080fd5b615af561554d565b825168ffffffffffffffffff81168114615b0e57600080fd5b815260208381015183811115615b2357600080fd5b80850194505087601f850112615b3857600080fd5b835183811115615b4a57615b4a6152ca565b615b5c82601f19601f84011601615576565b93508084528882828701011115615b7257600080fd5b615b8181838601848801614bf0565b5081019190915292959294509192505050565b60008251615ba6818460208701614bf0565b9190910192915050565b600060208284031215615bc257600080fd5b815161387e81614d5156fea2646970667358221220b324bff8aaa0f65d75eacd9b240b56a9f3f1445be595152db9783a0c096f176f64736f6c634300081600336101a06040523480156200001257600080fd5b5060405162001c0f38038062001c0f833981016040819052620000359162000292565b6040805180820190915260018152603160f81b60208201528390819081856003620000618382620003a8565b506004620000708282620003a8565b50620000829150839050600562000140565b610120526200009381600662000140565b61014052815160208084019190912060e052815190820120610100524660a0526200012160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05250336101605260ff166101805250620004ce9050565b60006020835110156200016057620001588362000179565b905062000173565b816200016d8482620003a8565b5060ff90505b92915050565b600080829050601f81511115620001b0578260405163305a27a960e01b8152600401620001a7919062000474565b60405180910390fd5b8051620001bd82620004a9565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620001f8578181015183820152602001620001de565b50506000910152565b600082601f8301126200021357600080fd5b81516001600160401b0380821115620002305762000230620001c5565b604051601f8301601f19908116603f011681019082821181831017156200025b576200025b620001c5565b816040528381528660208588010111156200027557600080fd5b62000288846020830160208901620001db565b9695505050505050565b600080600060608486031215620002a857600080fd5b83516001600160401b0380821115620002c057600080fd5b620002ce8783880162000201565b94506020860151915080821115620002e557600080fd5b50620002f48682870162000201565b925050604084015160ff811681146200030c57600080fd5b809150509250925092565b600181811c908216806200032c57607f821691505b6020821081036200034d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a3576000816000526020600020601f850160051c810160208610156200037e5750805b601f850160051c820191505b818110156200039f578281556001016200038a565b5050505b505050565b81516001600160401b03811115620003c457620003c4620001c5565b620003dc81620003d5845462000317565b8462000353565b602080601f831160018114620004145760008415620003fb5750858301515b600019600386901b1c1916600185901b1785556200039f565b600085815260208120601f198616915b82811015620004455788860151825594840194600190910190840162000424565b5085821015620004645787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000495816040850160208701620001db565b601f01601f19169190910160400192915050565b805160208083015191908110156200034d5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516116c26200054d60003960006101a80152600081816102070152818161044e01526104be015260006105760152600061054b01526000610ce201526000610cba01526000610c1501526000610c3f01526000610c6901526116c26000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806370a08231116100b257806395d89b4111610081578063a9059cbb11610066578063a9059cbb146102c6578063d505accf146102d9578063dd62ed3e146102ec57600080fd5b806395d89b41146102ab578063a457c2d7146102b357600080fd5b806370a082311461024157806379cc67901461026a5780637ecebe001461027d57806384b0196e1461029057600080fd5b8063313ce5671161010957806339509351116100ee57806339509351146101da57806340c10f19146101ed5780636c099dee1461020257600080fd5b8063313ce567146101a15780633644e515146101d257600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b610143610325565b60405161015091906113c4565b60405180910390f35b61016c6101673660046113fa565b6103b7565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004611424565b6103d1565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610150565b6101806103f5565b61016c6101e83660046113fa565b610404565b6102006101fb3660046113fa565b610443565b005b6102297f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610150565b61018061024f366004611460565b6001600160a01b031660009081526020819052604090205490565b6102006102783660046113fa565b6104b3565b61018061028b366004611460565b61051f565b61029861053d565b604051610150979695949392919061147b565b6101436105e2565b61016c6102c13660046113fa565b6105f1565b61016c6102d43660046113fa565b6106a0565b6102006102e7366004611530565b6106ae565b6101806102fa3660046115a3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b606060038054610334906115d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610360906115d6565b80156103ad5780601f10610382576101008083540402835291602001916103ad565b820191906000526020600020905b81548152906001019060200180831161039057829003601f168201915b5050505050905090565b6000336103c5818585610812565b60019150505b92915050565b6000336103df85828561096b565b6103ea858585610a1b565b506001949350505050565b60006103ff610c08565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906103c5908290869061043e908790611623565b610812565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104a5576040517fba06efeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af8282610d33565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610515576040517fba06efeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af8282610df2565b6001600160a01b0381166000908152600760205260408120546103cb565b6000606080828080836105717f00000000000000000000000000000000000000000000000000000000000000006005610f53565b61059c7f00000000000000000000000000000000000000000000000000000000000000006006610f53565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606060048054610334906115d6565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156106935760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103ea8286868403610812565b6000336103c5818585610a1b565b834211156106fe5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161068a565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861072d8c610ffe565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061078882611026565b905060006107988287878761106e565b9050896001600160a01b0316816001600160a01b0316146107fb5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161068a565b6108068a8a8a610812565b50505050505050505050565b6001600160a01b03831661088d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b0382166109095760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a155781811015610a085760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161068a565b610a158484848403610812565b50505050565b6001600160a01b038316610a975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b038216610b135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b03831660009081526020819052604090205481811015610ba25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a15565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c6157507f000000000000000000000000000000000000000000000000000000000000000046145b15610c8b57507f000000000000000000000000000000000000000000000000000000000000000090565b6103ff604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b038216610d895760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161068a565b8060026000828254610d9b9190611623565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610e6e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b03821660009081526020819052604090205481811015610efd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161068a565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161095e565b606060ff8314610f6d57610f6683611096565b90506103cb565b818054610f79906115d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa5906115d6565b8015610ff25780601f10610fc757610100808354040283529160200191610ff2565b820191906000526020600020905b815481529060010190602001808311610fd557829003601f168201915b505050505090506103cb565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b60006103cb611033610c08565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061107f878787876110d5565b9150915061108c816111b7565b5095945050505050565b606060006110a38361131f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561110c57506000905060036111ae565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611160573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381166111a7576000600192509250506111ae565b9150600090505b94509492505050565b60008160048111156111cb576111cb61165d565b036111d35750565b60018160048111156111e7576111e761165d565b036112345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161068a565b60028160048111156112485761124861165d565b036112955760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161068a565b60038160048111156112a9576112a961165d565b0361131c5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161068a565b50565b600060ff8216601f8111156103cb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815180845260005b818110156113865760208185018101518683018201520161136a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006113d76020830184611360565b9392505050565b80356001600160a01b03811681146113f557600080fd5b919050565b6000806040838503121561140d57600080fd5b611416836113de565b946020939093013593505050565b60008060006060848603121561143957600080fd5b611442846113de565b9250611450602085016113de565b9150604084013590509250925092565b60006020828403121561147257600080fd5b6113d7826113de565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e060208401526114b860e084018a611360565b83810360408501526114ca818a611360565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561151e57835183529284019291840191600101611502565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561154b57600080fd5b611554886113de565b9650611562602089016113de565b95506040880135945060608801359350608088013560ff8116811461158657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156115b657600080fd5b6115bf836113de565b91506115cd602084016113de565b90509250929050565b600181811c908216806115ea57607f821691505b602082108103611020577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b808201808211156103cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220b01be794a387189911d440646b5ba0a63c9fb90dcea8cee9cb89be9b6970d81b64736f6c63430008160033",
2008
+ "deployedBytecode": "0x6080604052600436106103135760003560e01c80637bde82f21161019a578063abfd0d40116100e1578063cc32d1761161008a578063e5328e0611610064578063e5328e0614610ae7578063f2fde38b14610b29578063fc0c546a14610b4957600080fd5b8063cc32d17614610a4d578063d0f3bad114610a87578063d621ad3f14610aaf57600080fd5b8063c7c7f5b3116100bb578063c7c7f5b3146109f8578063c859c48314610a0b578063cbef2aa914610a2b57600080fd5b8063abfd0d40146109ae578063b0d7ca5d146109c3578063bedb86fb146109d857600080fd5b80639561b12f11610143578063a7229fd91161011d578063a7229fd914610918578063a85dc7f214610938578063a88835d71461098e57600080fd5b80639561b12f1461088e57806396365d44146108ae5780639f68b964146108fc57600080fd5b806388543f0e1161017457806388543f0e1461083b5780638c70830b146108505780638da5cb5b1461087057600080fd5b80637bde82f2146107c757806381bdf98c146107e7578063857749b01461080757600080fd5b80633faa12c51161025e5780635e280f1111610207578063715018a6116101e1578063715018a614610748578063726075371461075d578063764f6a78146107a657600080fd5b80635e280f11146106a95780635fcbd285146106f557806366fd482a1461072857600080fd5b806347e7ef241161023857806347e7ef2414610655578063484267a4146106765780635114bf091461069657600080fd5b80633faa12c5146105f5578063434def5514610615578063461bb0b91461063557600080fd5b8063200d2ed2116102c0578063341a46481161029a578063341a46481461057257806338da6b8e146105855780633b6f743b146105d557600080fd5b8063200d2ed214610429578063203bd15f1461045c5780632bc5114c1461047c57600080fd5b8063156a0d0f116102f1578063156a0d0f1461039f57806316909bca146103e0578063192adc5d146103fc57600080fd5b80630141e41b146103185780630d35b4151461034e57806313bc4bc71461037d575b600080fd5b34801561032457600080fd5b50610338610333366004614ab9565b610b7d565b6040516103459190614b96565b60405180910390f35b34801561035a57600080fd5b5061036e610369366004614bbb565b610df1565b60405161034593929190614c40565b34801561038957600080fd5b5061039d610398366004614cf7565b6112f7565b005b3480156103ab57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526000602082015201610345565b3480156103ec57600080fd5b5060006040516103459190614d10565b34801561040857600080fd5b5061041c610417366004614d5f565b611358565b6040516103459190614db1565b34801561043557600080fd5b5060025461044a90600160a01b900460ff1681565b60405160ff9091168152602001610345565b34801561046857600080fd5b5061039d610477366004614e49565b611529565b34801561048857600080fd5b506105116040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c0810182526002546001600160a01b03908116825260055481166020830152600754811692820192909252600654821660608201526003548216608082015260045490911660a082015290565b6040516103459190600060c0820190506001600160a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401528060808501511660808401528060a08501511660a08401525092915050565b61039d610580366004614cf7565b611820565b34801561059157600080fd5b506105bc6105a0366004614ecb565b60086020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b3480156105e157600080fd5b5061041c6105f0366004614d5f565b6118fa565b34801561060157600080fd5b5061039d610610366004614ee6565b611ba7565b34801561062157600080fd5b5061039d610630366004614f23565b611c7b565b34801561064157600080fd5b5061039d610650366004614f86565b611ee1565b610668610663366004614f98565b61208f565b604051908152602001610345565b34801561068257600080fd5b50610668610691366004614fc2565b612282565b3480156106a257600080fd5b5047610668565b3480156106b557600080fd5b506106dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610345565b34801561070157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006106dd565b34801561073457600080fd5b5061039d610743366004614fdd565b6123c2565b34801561075457600080fd5b5061039d612418565b34801561076957600080fd5b506107917f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610345565b6107b96107b4366004615009565b61242c565b6040516103459291906150a7565b3480156107d357600080fd5b506106686107e23660046150cb565b612922565b3480156107f357600080fd5b50600b546106dd906001600160a01b031681565b34801561081357600080fd5b5061044a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561084757600080fd5b50600154610668565b34801561085c57600080fd5b5061039d61086b366004614cf7565b612b2b565b34801561087c57600080fd5b506000546001600160a01b03166106dd565b34801561089a57600080fd5b5061039d6108a93660046150f7565b612b38565b3480156108ba57600080fd5b50600a547f00000000000000000000000000000000000000000000000000000000000000006801000000000000000090910467ffffffffffffffff1602610668565b34801561090857600080fd5b5060405160018152602001610345565b34801561092457600080fd5b5061066861093336600461516a565b612c8d565b34801561094457600080fd5b50600a547f000000000000000000000000000000000000000000000000000000000000000070010000000000000000000000000000000090910467ffffffffffffffff1602610668565b34801561099a57600080fd5b5061039d6109a93660046151a6565b612d7b565b3480156109ba57600080fd5b5061039d612f98565b3480156109cf57600080fd5b5061039d6131a6565b3480156109e457600080fd5b5061039d6109f336600461522f565b61320f565b6107b9610a06366004615009565b6132ca565b348015610a1757600080fd5b5061039d610a26366004614fdd565b6132fe565b610a3e610a39366004615009565b6133f9565b6040516103459392919061524c565b348015610a5957600080fd5b506002546105bc907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b348015610a9357600080fd5b50600b546105bc90600160a01b900467ffffffffffffffff1681565b348015610abb57600080fd5b50610668610aca3660046152a7565b600960209081526000928352604080842090915290825290205481565b348015610af357600080fd5b50610668600a5467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b348015610b3557600080fd5b5061039d610b44366004614fc2565b6135ce565b348015610b5557600080fd5b506106dd7f000000000000000000000000000000000000000000000000000000000000000081565b600254606090600160a01b900460ff16600114610bf557600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6040517fdb22c33c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556003546001600160a01b0316338114610c3457604051635bd25eff60e01b815260040160405180910390fd5b60008367ffffffffffffffff811115610c4f57610c4f6152ca565b604051908082528060200260200182016040528015610c9457816020015b6040805180820190915260008082526020820152815260200190600190039081610c6d5790505b5090506000805b85811015610d965736878783818110610cb657610cb66152f9565b90506060020190506000610d20826020016020810190610cd69190615328565b610ce66060850160408601615328565b60086000610cf76020880188614ecb565b63ffffffff1663ffffffff16815260200190815260200160002061367a9092919063ffffffff16565b905067ffffffffffffffff811615610d8c576040805180820190915280610d4a6020850185614ecb565b63ffffffff16815267ffffffffffffffff83166020909101528585610d6e81615374565b965081518110610d8057610d806152f9565b60200260200101819052505b5050600101610c9b565b508082527fce105e156370093e6600169f7c01277f740d45fbcf95435227ce6f43ad0c3abd8783604051610dcb9291906153ac565b60405180910390a1509150506002805460ff60a01b1916600160a01b1790559392505050565b60408051808201909152600080825260208201526060610e24604051806040016040528060008152602001600081525090565b60408051808201909152807f00000000000000000000000000000000000000000000000000000000000000008152602001610ebf60086000886000016020810190610e6f9190614ecb565b63ffffffff16815260208101919091526040016000205467ffffffffffffffff1667ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81525092506000610eec8460200151866040013511610ee2578560400135613730565b8460200151613730565b90506000610f1c610f006020880188614ecb565b83610f17610f1160c08b018b6153cb565b15919050565b613770565b600254604080517f81993cd000000000000000000000000000000000000000000000000000000000815283516001600160a01b039081166004830152602085015163ffffffff1660248301529184015167ffffffffffffffff9081166044830152606085015116606482015260808401511515608482015260a0840151151560a48201529293506000929116906381993cd09060c401602060405180830381865afa158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff39190615430565b90508267ffffffffffffffff168167ffffffffffffffff161461127a5760408051600180825281830190925290816020015b6040805180820190915260008152606060208201528152602001906001900390816110255790505094508267ffffffffffffffff168167ffffffffffffffff1610156111475760405180604001604052806110bc6110b78487611088919061544d565b67ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b613885565b6110e6907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61546e565b81526020016040518060400160405280600c81526020017f70726f746f636f6c20666565000000000000000000000000000000000000000081525081525085600081518110611137576111376152f9565b602002602001018190525061127a565b8267ffffffffffffffff168167ffffffffffffffff16111561127a57600061116f848361544d565b905061117b828261393b565b909250905067ffffffffffffffff808516908316036111da5760408051600080825260208201909252906111d2565b6040805180820190915260008152606060208201528152602001906001900390816111aa5790505b509550611278565b604051806040016040528061121b6110b78467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020016040518060400160405280600681526020017f72657761726400000000000000000000000000000000000000000000000000008152508152508660008151811061126c5761126c6152f9565b60200260200101819052505b505b60405180604001604052806112b88567ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416029052959794965050505050565b6005546001600160a01b031633811461132357604051635bd25eff60e01b815260040160405180910390fd5b61132c82613730565b600a60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b604080518082019091526000808252602082015261137c610f1160c08501856153cb565b6113b2576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113c18460400135613730565b6006546040805160c081019091523381529192506001600160a01b031690633292cf02906020808201906113f790890189614ecb565b63ffffffff1681526020888101359082015267ffffffffffffffff8516604082015260600161142960a08901896153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161147060808901896153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526114e191908790600401615529565b6040805180830381865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152191906155d7565b949350505050565b600254600160a01b900460ff1660011461156c57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556006546001600160a01b03163381146115ab57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff84167f0000000000000000000000000000000000000000000000000000000000000000028215801590606090611644576116416115f760608c0160408d01615328565b61160460208d018d614ecb565b8589898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061398f92505050565b90505b600061165089856139c1565b9050801561176257611661886139ee565b8215611706576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906116d3908c908e9060009088906004016155f3565b600060405180830381600087803b1580156116ed57600080fd5b505af1158015611701573d6000803e3d6000fd5b505050505b6001600160a01b0389168a7fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61173f60208f018f614ecb565b6040805163ffffffff9092168252602082018990520160405180910390a3611800565b61176f60208c018c614ecb565b8985846040516020016117859493929190615625565b60408051601f19818403018152918152815160209283012060008d8152600984528281208180528452918220557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b55918c91906117e2908f018f614ecb565b8c88876040516117f7969594939291906156a3565b60405180910390a15b50506002805460ff60a01b1916600160a01b179055505050505050505050565b6007546001600160a01b031633811461184c57604051635bd25eff60e01b815260040160405180910390fd5b61185582613a3c565b60006118613384613a74565b905080600260158282829054906101000a900467ffffffffffffffff1661188891906156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fa064a2faa279f4d67c85c8fc69d4ebb7de2739a9e6dd864dfdd1b9e066d4bfd0816040516118ed919067ffffffffffffffff91909116815260200190565b60405180910390a1505050565b6040805180820190915260008082526020820152600061191d8460400135613730565b90508067ffffffffffffffff16600003611963576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611975610f1160c08701876153cb565b90508015611ae3576006546040805160c081019091523381526001600160a01b0390911690633292cf02906020808201906119b2908a018a614ecb565b63ffffffff1681526020898101359082015267ffffffffffffffff861660408201526060016119e460a08a018a6153cb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001611a2b60808a018a6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152611a9c91908890600401615529565b6040805180830381865afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc91906155d7565b9250611b9f565b600080611af360808801886153cb565b60065492109250506001600160a01b03166375d2208c611b166020890189614ecb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015283151560248201526044016040805180830381865afa158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906155d7565b9350505b505092915050565b611baf613ad9565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff168263ffffffff1603611c14576040517fada8342400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff8083166000908152600860205260409020611c36918390613b4d16565b6040805163ffffffff8416815282151560208201527faf6b8dd4c5a827e03f548d06181b36aaba61e22436ff1cfa9bc409d576366a6091015b60405180910390a15050565b600254600160a01b900460ff16600114611cbe57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556006546001600160a01b0316338114611cfd57604051635bd25eff60e01b815260040160405180910390fd5b67ffffffffffffffff82167f0000000000000000000000000000000000000000000000000000000000000000026000611d3685836139c1565b90508015611da357611d47846139ee565b6001600160a01b038516877fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c611d8060208c018c614ecb565b6040805163ffffffff9092168252602082018790520160405180910390a3611ec4565b611db06020890189614ecb565b60405160e09190911b7fffffffff00000000000000000000000000000000000000000000000000000000166020820152606086901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660248201526038810183905260580160408051601f19818403018152918152815160209283012060008a81526009845282812060ff8b168252845291909120557e7c17198cd078035dc663f9a0961f84cb6265411d0b4c793f96d432f6af4b559088908890611e78908c018c614ecb565b6040805193845260ff909216602084015263ffffffff16908201526001600160a01b03871660608201526080810184905260c060a0820181905260009082015260e00160405180910390a15b50506002805460ff60a01b1916600160a01b179055505050505050565b611ee9613ad9565b611ef66020820182614fc2565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611f336040820160208301614fc2565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611f706060820160408301614fc2565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611fad6080820160608301614fc2565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055611fea60a0820160808301614fc2565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905561202760c0820160a08301614fc2565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556040517f9774229668135b546675daf425e41c0848f60aa32d0951881245f4f528cc33f090612084908390615713565b60405180910390a150565b600254600090600160a01b900460ff166001146120d557600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556120f182613a3c565b60006120fd3384613a74565b905061210881613c17565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018390529193507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b1580156121bd57600080fd5b505af11580156121d1573d6000803e3d6000fd5b5050600a80548493509091506000906121f590849067ffffffffffffffff166156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836001600160a01b0316336001600160a01b03167f8752a472e571a816aea92eec8dae9baf628e840f4929fbcc2d155e6233ff68a78460405161226091815260200190565b60405180910390a3506002805460ff60a01b1916600160a01b17905592915050565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081205467ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000026001600160a01b0383166122fa578091506123b7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561237e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a29190615792565b90508082116123b157816123b3565b805b9250505b50919050565b905090565b6123ca613ad9565b600b805467ffffffffffffffff909216600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009092166001600160a01b0390931692909217179055565b612420613ad9565b61242a6000613c7e565b565b612434614a58565b6040805180820190915260008082526020820152600254600160a01b900460ff1660011461248b57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556124ae610f1160c08701876153cb565b6124e4576040517f2d9560be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124f38660400135613730565b905060007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8316026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b1580156125a857600080fd5b505af11580156125bc573d6000803e3d6000fd5b5050604051838152600092503391507f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc9060200160405180910390a3600061261261260a60208a018a614ecb565b846001613770565b9050600061262c826126278b60600135613730565b613cdb565b600a8054919250859160009061264d90849067ffffffffffffffff1661544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506126b681600860008c600001602081019061268e9190614ecb565b63ffffffff1663ffffffff168152602001908152602001600020613f3990919063ffffffff16565b8067ffffffffffffffff168467ffffffffffffffff1611156127755760006126de828661544d565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600090815260086020526040902091925061272491908390613f3916565b80600a60088282829054906101000a900467ffffffffffffffff16612749919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050612830565b8067ffffffffffffffff168467ffffffffffffffff16101561283057600061279d858361544d565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090209192506127e391908390613fc716565b80600a60088282829054906101000a900467ffffffffffffffff1661280891906156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b600061284b612844368b90038b018b6157ab565b6000614061565b90506128598a82848b6140b6565b9650604051806040016040528085815260200161289f8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b9052875190965033907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a6128d660208e018e614ecb565b60208a8101516040805163ffffffff90941684529183018a90529082015260600160405180910390a350506002805460ff60a01b1916600160a01b179055509296919550909350505050565b600254600090600160a01b900460ff1660011461296857600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b179055600061298684613730565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090209192506129cc91908390613f3916565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8216026040517f79cc6790000000000000000000000000000000000000000000000000000000008152336004820152602481018290529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906379cc679090604401600060405180830381600087803b158015612a7d57600080fd5b505af1158015612a91573d6000803e3d6000fd5b5050600a8054849350909150600090612ab590849067ffffffffffffffff1661544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612ae58383614245565b612aee816139ee565b6040518281526001600160a01b0384169033907f27d4634c833b7622a0acddbf7f746183625f105945e95c723ad1d5a9f2a0b6fc90602001612260565b612b33613ad9565b600155565b600254600160a01b900460ff16600114612b7b57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556003546001600160a01b0316338114612bba57604051635bd25eff60e01b815260040160405180910390fd5b60005b82811015612c385736848483818110612bd857612bd86152f9565b9050604002019050612c2f816020016020810190612bf69190615328565b60086000612c076020860186614ecb565b63ffffffff1663ffffffff168152602001908152602001600020613fc790919063ffffffff16565b50600101612bbd565b507f10c5f2b007767d266c6c75c86ae9ed0c74e6320b30bda231af7396a990e7263c848484604051612c6c939291906157dd565b60405180910390a150506002805460ff60a01b1916600160a01b1790555050565b6007546000906001600160a01b0316338114612cbc57604051635bd25eff60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603612d6557600254600a54600091612d3e916110889167ffffffffffffffff7501000000000000000000000000000000000000000000909104811691680100000000000000009004166156f2565b612d4661428a565b612d509190615850565b9050808411612d5f5783612d61565b805b9350505b612d7085858561432e565b91505b509392505050565b600254600160a01b900460ff16600114612dbe57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b179055604051612dea9086908690869086908690602001615863565b60408051601f19818403018152918152815160209283012060008a81526009845282812060ff8b16825290935291205414612e51576040517faba8b6ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600087815260096020908152604080832060ff8a168452909152812055612e788484614245565b612e89612e8484613730565b6139ee565b8015612f30576040517f7cb590120000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb5901290612efd9087908b90600090889088906004016158d5565b600060405180830381600087803b158015612f1757600080fd5b505af1158015612f2b573d6000803e3d6000fd5b505050505b6040805163ffffffff87168152602081018590526001600160a01b0386169189917fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c910160405180910390a350506002805460ff60a01b1916600160a01b1790555050505050565b600b546001600160a01b03163314612fc357604051635bd25eff60e01b815260040160405180910390fd5b600a54600b546801000000000000000090910467ffffffffffffffff908116600160a01b909204161115613023576040517fcef6bb2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b54600a805467ffffffffffffffff600160a01b90930483169283929160089161305d918591680100000000000000009091041661544d565b825467ffffffffffffffff9182166101009390930a928302928202191691909117909155600b80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1690556040517f42966c680000000000000000000000000000000000000000000000000000000081529083167f00000000000000000000000000000000000000000000000000000000000000000260048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506342966c6890602401600060405180830381600087803b15801561314857600080fd5b505af115801561315c573d6000803e3d6000fd5b50505063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526008602052604090206131a3925090839061441b16565b50565b6005546001600160a01b03163381146131d257604051635bd25eff60e01b815260040160405180910390fd5b476131df3382600061445f565b6040518181527f19e23b96a5e0d494b59baca97d1fe386cf8e80a978dfd8845d25f1a9d5c7e18390602001611c6f565b6005546001600160a01b031633811461323b57604051635bd25eff60e01b815260040160405180910390fd5b600254600119600160a01b90910460ff160161326a576040516376a9ad7360e01b815260040160405180910390fd5b81613276576001613279565b60035b6002805460ff92909216600160a01b0260ff60a01b1990921691909117905560405182151581527f878ac8a2ca79520471f8f3c8494fa802c03ce3bf034252aad7f22318984fdbdb90602001611c6f565b6132d2614a58565b60408051808201909152600080825260208201526132f18585856133f9565b5090969095509350505050565b6007546001600160a01b031633811461332a57604051635bd25eff60e01b815260040160405180910390fd5b81600260158282829054906101000a900467ffffffffffffffff1661334f919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506133b1836133ac8467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b614245565b604080516001600160a01b038516815267ffffffffffffffff841660208201527fa46907b6b80b882da80d6e36cc905dde57fafff0a5442c8898526fe952d1e65391016118ed565b613401614a58565b6040805180820190915260008082526020820152604080518082019091526000815260606020820152600254600160a01b900460ff1660011461346d57600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556000808061348d896144a0565b92509250925060405180604001604052806134d18467ffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000000290565b81526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff84160290529450600061352261351b368b90038b018b6157ab565b8751614061565b9050831561353d576135368a82848b6140b6565b965061354f565b6135498a82848b61451a565b90975094505b865133907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a61358160208e018e614ecb565b89516020808c01516040805163ffffffff90951685529184019290925282015260600160405180910390a350506002805460ff60a01b1916600160a01b1790555092969195509350915050565b6135d6613ad9565b6001600160a01b038116613671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6131a381613c7e565b825460009067ffffffffffffffff1667fffffffffffffffe1981016136cb576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168367ffffffffffffffff161015612d735782810367ffffffffffffffff808216908616116137045784613706565b805b865467ffffffffffffffff8285031667ffffffffffffffff19909116178755925050509392505050565b600061376a7f0000000000000000000000000000000000000000000000000000000000000000838161376457613764615926565b04614716565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152600a546000906137d29067ffffffffffffffff7001000000000000000000000000000000008204811691166156f2565b600a5490915060009067ffffffffffffffff68010000000000000000909104811690831611613802576000613825565b600a546138259068010000000000000000900467ffffffffffffffff168361544d565b6040805160c08101825233815263ffffffff8916602080830182905267ffffffffffffffff8a811684860152948516606084015260009182526008905291909120548216909114608082015284151560a0820152925050505b9392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401613668565b5090565b600254600090819067ffffffffffffffff7501000000000000000000000000000000000000000000909104811690841681101561398057838503810192509050613988565b848492509250505b9250929050565b6060848484846040516020016139a89493929190615955565b6040516020818303038152906040529050949350505050565b600061387e7f000000000000000000000000000000000000000000000000000000000000000084846147b0565b80600a60088282829054906101000a900467ffffffffffffffff16613a13919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b34156131a3576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613a7f82613730565b905061376a7f000000000000000000000000000000000000000000000000000000000000000084307f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff86160261485c565b6000546001600160a01b0316331461242a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401613668565b815467ffffffffffffffff168115613bbf5767ffffffffffffffff811615613ba1576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff178355505050565b67ffffffffffffffff81811614613c02576040517fca2bc39800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191683555b505050565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000081166000908152600860205260409020613c59918390613fc716565b80600a60088282829054906101000a900467ffffffffffffffff16613a1391906156f2565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600254604080517f43d9564d00000000000000000000000000000000000000000000000000000000815284516001600160a01b039081166004830152602086015163ffffffff1660248301529185015167ffffffffffffffff9081166044830152606086015116606482015260808501511515608482015260a0850151151560a482015260009291909116906343d9564d9060c4016020604051808303816000875af1158015613d8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db39190615430565b604084015190915067ffffffffffffffff8082169083161015613e3a57613dda828261544d565b60028054601590613e0f9084907501000000000000000000000000000000000000000000900467ffffffffffffffff166156f2565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550613ed1565b8067ffffffffffffffff168267ffffffffffffffff161115613ed1576000613e62828461544d565b9050613e6e838261393b565b909350905067ffffffffffffffff811615613ecf5780600260158282829054906101000a900467ffffffffffffffff16613ea8919061544d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b505b8267ffffffffffffffff168267ffffffffffffffff161080613efb575067ffffffffffffffff8216155b15613f32576040517fa1e8654500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b815467ffffffffffffffff1667fffffffffffffffe198101613f5a57505050565b8167ffffffffffffffff168167ffffffffffffffff161015613fa8576040517f2b4d0ad500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191691900367ffffffffffffffff16179055565b815467ffffffffffffffff1667fffffffffffffffe198101613fe857505050565b613ff282826156f2565b905067fffffffffffffffe1967ffffffffffffffff821601614040576040517f5a5cc94600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825467ffffffffffffffff191667ffffffffffffffff919091161790915550565b6040805180820190915260008082526020820152825134146140af576040517f3442dd9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090919050565b6140be614a58565b6020840151156140d5576140d584602001516148a4565b60065484516040805160c081019091523381526001600160a01b039092169163ff6fb300919060208082019061410d908b018b614ecb565b63ffffffff16815260208a8101359082015267ffffffffffffffff8816604082015260600161413f60a08b018b6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200161418660808b018b6153cb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526141f99190899088906004016159d3565b60806040518083038185885af1158015614217573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061423c9190615a83565b95945050505050565b600061425183836139c1565b905080613c12576040517f06a6167e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561430a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bd9190615792565b600254600090600160a01b900460ff1660011461437457600254600119600160a01b90910460ff1601610bc3576040516376a9ad7360e01b815260040160405180910390fd5b6002805460ff60a01b1916600160a11b1790556007546001600160a01b03163381146143b357604051635bd25eff60e01b815260040160405180910390fd5b6001600160a01b0385166143f3576040517f809fc44b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6144008585856000614917565b50506002805460ff60a01b1916600160a01b17905592915050565b6144258282613f39565b60405167ffffffffffffffff821681527f1fdac7d956f6016d09c5485e7edebdec210d236cfcd4f5477962710cc375edfc90602001611c6f565b61446a838383614923565b613c12576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806144b4610f1160c08601866153cb565b92506144c4338560400135613a74565b915060006144df6144d86020870187614ecb565b8486613770565b90506144f2816126278760600135613730565b9150614509826008600061268e60208a018a614ecb565b61451282613c17565b509193909250565b614522614a58565b604080518082019091526000815260606020820152602085015115614573576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006546040805160a081019091523381526001600160a01b03909116906385afd453906020808201906145a8908b018b614ecb565b63ffffffff16815260208a8101359082015267ffffffffffffffff8816604082015260600160006145dc60808c018c6153cb565b9190911190915250604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815282516001600160a01b03166004820152602083015163ffffffff166024820152908201516044820152606082015167ffffffffffffffff1660648201526080909101511515608482015260a4016000604051808303816000875af115801561467d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526146a59190810190615a9f565b60408201515187519294509092509080821461470b57818111156146d9578181036146d286826000614923565b505061470b565b6040517fa028531600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505094509492505050565b600067ffffffffffffffff821115613937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401613668565b6040516001600160a01b0383166024820152604481018290526000906115219085907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261494a565b614868848484846149d7565b61489e576040517f7c75c3d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6004546001600160a01b0316806148e7576040517fb5e0bf8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61491381337f00000000000000000000000000000000000000000000000000000000000000008561485c565b5050565b61486884848484614a2b565b60008082614931575a614935565b6001545b9050600080600080878986f195945050505050565b6000806000846001600160a01b0316846040516149679190615b94565b6000604051808303816000865af19150503d80600081146149a4576040519150601f19603f3d011682016040523d82523d6000602084013e6149a9565b606091505b5091509150816149ba57600061423c565b8051158061423c57508080602001905181019061423c9190615bb0565b6040516001600160a01b038085166024830152831660448201526064810182905260009061423c9086907f23b872dd00000000000000000000000000000000000000000000000000000000906084016147f8565b60006001600160a01b038516614a4d57614a46848484614923565b9050611521565b61423c8585856147b0565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614a9b604051806040016040528060008152602001600081525090565b905290565b803563ffffffff81168114614ab457600080fd5b919050565b600080600060408486031215614ace57600080fd5b614ad784614aa0565b9250602084013567ffffffffffffffff80821115614af457600080fd5b818601915086601f830112614b0857600080fd5b813581811115614b1757600080fd5b876020606083028501011115614b2c57600080fd5b6020830194508093505050509250925092565b60008151808452602080850194506020840160005b83811015614b8b578151805163ffffffff16885283015167ffffffffffffffff168388015260409096019590820190600101614b54565b509495945050505050565b60208152600061387e6020830184614b3f565b600060e082840312156123b757600080fd5b600060208284031215614bcd57600080fd5b813567ffffffffffffffff811115614be457600080fd5b61152184828501614ba9565b60005b83811015614c0b578181015183820152602001614bf3565b50506000910152565b60008151808452614c2c816020860160208601614bf0565b601f01601f19169290920160200192915050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015614cd9578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40018552815180518852830151838801879052614cc687890182614c14565b9750509382019390820190600101614c7c565b50508751606088015250505060208501516080850152509050611521565b600060208284031215614d0957600080fd5b5035919050565b6020810160028310614d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b80151581146131a357600080fd5b60008060408385031215614d7257600080fd5b823567ffffffffffffffff811115614d8957600080fd5b614d9585828601614ba9565b9250506020830135614da681614d51565b809150509250929050565b81518152602080830151908201526040810161376a565b6000606082840312156123b757600080fd5b80356001600160a01b0381168114614ab457600080fd5b67ffffffffffffffff811681146131a357600080fd5b60008083601f840112614e1957600080fd5b50813567ffffffffffffffff811115614e3157600080fd5b60208301915083602082850101111561398857600080fd5b60008060008060008060e08789031215614e6257600080fd5b614e6c8888614dc8565b955060608701359450614e8160808801614dda565b935060a0870135614e9181614df1565b925060c087013567ffffffffffffffff811115614ead57600080fd5b614eb989828a01614e07565b979a9699509497509295939492505050565b600060208284031215614edd57600080fd5b61387e82614aa0565b60008060408385031215614ef957600080fd5b614f0283614aa0565b91506020830135614da681614d51565b803560ff81168114614ab457600080fd5b600080600080600060e08688031215614f3b57600080fd5b614f458787614dc8565b945060608601359350614f5a60808701614f12565b9250614f6860a08701614dda565b915060c0860135614f7881614df1565b809150509295509295909350565b600060c082840312156123b757600080fd5b60008060408385031215614fab57600080fd5b614fb483614dda565b946020939093013593505050565b600060208284031215614fd457600080fd5b61387e82614dda565b60008060408385031215614ff057600080fd5b614ff983614dda565b91506020830135614da681614df1565b6000806000838503608081121561501f57600080fd5b843567ffffffffffffffff81111561503657600080fd5b61504287828801614ba9565b9450506040601f198201121561505757600080fd5b5060208401915061506a60608501614dda565b90509250925092565b8051825267ffffffffffffffff60208201511660208301526040810151613c12604084018280518252602090810151910152565b60c081016150b58285615073565b82516080830152602083015160a083015261387e565b600080604083850312156150de57600080fd5b823591506150ee60208401614dda565b90509250929050565b60008060006040848603121561510c57600080fd5b61511584614aa0565b9250602084013567ffffffffffffffff8082111561513257600080fd5b818601915086601f83011261514657600080fd5b81358181111561515557600080fd5b8760208260061b8501011115614b2c57600080fd5b60008060006060848603121561517f57600080fd5b61518884614dda565b925061519660208501614dda565b9150604084013590509250925092565b600080600080600080600060c0888a0312156151c157600080fd5b873596506151d160208901614f12565b95506151df60408901614aa0565b94506151ed60608901614dda565b93506080880135925060a088013567ffffffffffffffff81111561521057600080fd5b61521c8a828b01614e07565b989b979a50959850939692959293505050565b60006020828403121561524157600080fd5b813561387e81614d51565b6152568185615073565b82516080820152602083015160a082015260e060c082015268ffffffffffffffffff82511660e082015260006020830151604061010084015261529d610120840182614c14565b9695505050505050565b600080604083850312156152ba57600080fd5b823591506150ee60208401614f12565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561533a57600080fd5b813561387e81614df1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153a5576153a5615345565b5060010190565b63ffffffff831681526040602082015260006115216040830184614b3f565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261540057600080fd5b83018035915067ffffffffffffffff82111561541b57600080fd5b60200191503681900382131561398857600080fd5b60006020828403121561544257600080fd5b815161387e81614df1565b67ffffffffffffffff828116828216039080821115613f3257613f32615345565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156154a6576154a6615345565b818105831482151761376a5761376a615345565b6001600160a01b03815116825263ffffffff60208201511660208301526040810151604083015267ffffffffffffffff60608201511660608301526000608082015160c0608085015261551060c0850182614c14565b905060a083015184820360a086015261423c8282614c14565b60408152600061553c60408301856154ba565b905082151560208301529392505050565b6040805190810167ffffffffffffffff81118282101715615570576155706152ca565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561559f5761559f6152ca565b604052919050565b6000604082840312156155b957600080fd5b6155c161554d565b9050815181526020820151602082015292915050565b6000604082840312156155e957600080fd5b61387e83836155a7565b6001600160a01b038516815283602082015261ffff8316604082015260806060820152600061529d6080830184614c14565b7fffffffff000000000000000000000000000000000000000000000000000000008560e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b16600482015282601882015260008251615693816038850160208701614bf0565b9190910160380195945050505050565b86815260ff8616602082015263ffffffff851660408201526001600160a01b038416606082015282608082015260c060a082015260006156e660c0830184614c14565b98975050505050505050565b67ffffffffffffffff818116838216019080821115613f3257613f32615345565b60c081016001600160a01b038061572985614dda565b1683528061573960208601614dda565b1660208401528061574c60408601614dda565b1660408401528061575f60608601614dda565b1660608401528061577260808601614dda565b1660808401528061578560a08601614dda565b1660a08401525092915050565b6000602082840312156157a457600080fd5b5051919050565b6000604082840312156157bd57600080fd5b6157c561554d565b82358152602083013560208201528091505092915050565b63ffffffff848116825260406020808401829052838201859052600092869160608601855b88811015615842578361581486614aa0565b1682528285013561582481614df1565b67ffffffffffffffff16828401529385019390850190600101615802565b509998505050505050505050565b8181038181111561376a5761376a615345565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b6001600160a01b038616815284602082015261ffff8416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516159c381602c850160208701614bf0565b91909101602c0195945050505050565b6080815260006159e660808301866154ba565b90506159ff602083018580518252602090810151910152565b6001600160a01b0383166060830152949350505050565b600060808284031215615a2857600080fd5b6040516060810181811067ffffffffffffffff82111715615a4b57615a4b6152ca565b8060405250809150825181526020830151615a6581614df1565b6020820152615a7784604085016155a7565b60408201525092915050565b600060808284031215615a9557600080fd5b61387e8383615a16565b60008060a08385031215615ab257600080fd5b615abc8484615a16565b9150608083015167ffffffffffffffff80821115615ad957600080fd5b9084019060408287031215615aed57600080fd5b615af561554d565b825168ffffffffffffffffff81168114615b0e57600080fd5b815260208381015183811115615b2357600080fd5b80850194505087601f850112615b3857600080fd5b835183811115615b4a57615b4a6152ca565b615b5c82601f19601f84011601615576565b93508084528882828701011115615b7257600080fd5b615b8181838601848801614bf0565b5081019190915292959294509192505050565b60008251615ba6818460208701614bf0565b9190910192915050565b600060208284031215615bc257600080fd5b815161387e81614d5156fea2646970667358221220b324bff8aaa0f65d75eacd9b240b56a9f3f1445be595152db9783a0c096f176f64736f6c63430008160033",
2009
+ "linkReferences": {},
2010
+ "deployedLinkReferences": {}
2011
+ }