@hyperlane-xyz/tron-sdk 21.0.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 (83) hide show
  1. package/LICENSE.md +195 -0
  2. package/README.md +47 -0
  3. package/dist/abi/DomainRoutingIsm.json +240 -0
  4. package/dist/abi/ERC20.json +293 -0
  5. package/dist/abi/ERC20Test.json +365 -0
  6. package/dist/abi/HypERC20.json +920 -0
  7. package/dist/abi/HypERC20Collateral.json +1556 -0
  8. package/dist/abi/HypNative.json +1561 -0
  9. package/dist/abi/IERC20.json +190 -0
  10. package/dist/abi/IInterchainSecurityModule.json +44 -0
  11. package/dist/abi/IPostDispatchHook.json +81 -0
  12. package/dist/abi/InterchainGasPaymaster.json +518 -0
  13. package/dist/abi/Mailbox.json +686 -0
  14. package/dist/abi/MerkleTreeHook.json +375 -0
  15. package/dist/abi/NoopIsm.json +57 -0
  16. package/dist/abi/PausableHook.json +199 -0
  17. package/dist/abi/ProxyAdmin.json +156 -0
  18. package/dist/abi/StaticMerkleRootMultisigIsm.json +100 -0
  19. package/dist/abi/StaticMessageIdMultisigIsm.json +100 -0
  20. package/dist/abi/StorageGasOracle.json +205 -0
  21. package/dist/abi/TransparentUpgradeableProxy.json +81 -0
  22. package/dist/abi/ValidatorAnnounce.json +299 -0
  23. package/dist/clients/protocol.d.ts +17 -0
  24. package/dist/clients/protocol.d.ts.map +1 -0
  25. package/dist/clients/protocol.js +40 -0
  26. package/dist/clients/protocol.js.map +1 -0
  27. package/dist/clients/provider.d.ts +67 -0
  28. package/dist/clients/provider.d.ts.map +1 -0
  29. package/dist/clients/provider.js +558 -0
  30. package/dist/clients/provider.js.map +1 -0
  31. package/dist/clients/signer.d.ts +46 -0
  32. package/dist/clients/signer.d.ts.map +1 -0
  33. package/dist/clients/signer.js +561 -0
  34. package/dist/clients/signer.js.map +1 -0
  35. package/dist/hook/hook-query.d.ts +41 -0
  36. package/dist/hook/hook-query.d.ts.map +1 -0
  37. package/dist/hook/hook-query.js +79 -0
  38. package/dist/hook/hook-query.js.map +1 -0
  39. package/dist/hook/hook-tx.d.ts +39 -0
  40. package/dist/hook/hook-tx.d.ts.map +1 -0
  41. package/dist/hook/hook-tx.js +95 -0
  42. package/dist/hook/hook-tx.js.map +1 -0
  43. package/dist/index.d.ts +5 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +4 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/ism/ism-query.d.ts +70 -0
  48. package/dist/ism/ism-query.d.ts.map +1 -0
  49. package/dist/ism/ism-query.js +137 -0
  50. package/dist/ism/ism-query.js.map +1 -0
  51. package/dist/ism/ism-tx.d.ts +67 -0
  52. package/dist/ism/ism-tx.d.ts.map +1 -0
  53. package/dist/ism/ism-tx.js +110 -0
  54. package/dist/ism/ism-tx.js.map +1 -0
  55. package/dist/tests/1_interchain_security.e2e-test.d.ts +2 -0
  56. package/dist/tests/1_interchain_security.e2e-test.d.ts.map +1 -0
  57. package/dist/tests/1_interchain_security.e2e-test.js +172 -0
  58. package/dist/tests/1_interchain_security.e2e-test.js.map +1 -0
  59. package/dist/tests/2_core.e2e-test.d.ts +2 -0
  60. package/dist/tests/2_core.e2e-test.d.ts.map +1 -0
  61. package/dist/tests/2_core.e2e-test.js +117 -0
  62. package/dist/tests/2_core.e2e-test.js.map +1 -0
  63. package/dist/tests/3_post_dispatch.e2e-test.d.ts +2 -0
  64. package/dist/tests/3_post_dispatch.e2e-test.d.ts.map +1 -0
  65. package/dist/tests/3_post_dispatch.e2e-test.js +116 -0
  66. package/dist/tests/3_post_dispatch.e2e-test.js.map +1 -0
  67. package/dist/tests/4_warp.e2e-test.d.ts +2 -0
  68. package/dist/tests/4_warp.e2e-test.d.ts.map +1 -0
  69. package/dist/tests/4_warp.e2e-test.js +304 -0
  70. package/dist/tests/4_warp.e2e-test.js.map +1 -0
  71. package/dist/tests/index.e2e-test.d.ts +5 -0
  72. package/dist/tests/index.e2e-test.d.ts.map +1 -0
  73. package/dist/tests/index.e2e-test.js +6 -0
  74. package/dist/tests/index.e2e-test.js.map +1 -0
  75. package/dist/utils/index.d.ts +24 -0
  76. package/dist/utils/index.d.ts.map +1 -0
  77. package/dist/utils/index.js +71 -0
  78. package/dist/utils/index.js.map +1 -0
  79. package/dist/utils/types.d.ts +94 -0
  80. package/dist/utils/types.d.ts.map +1 -0
  81. package/dist/utils/types.js +13 -0
  82. package/dist/utils/types.js.map +1 -0
  83. package/package.json +63 -0
@@ -0,0 +1,518 @@
1
+ {
2
+ "contractName": "InterchainGasPaymaster",
3
+ "abi": [
4
+ {
5
+ "anonymous": false,
6
+ "inputs": [
7
+ {
8
+ "indexed": false,
9
+ "internalType": "address",
10
+ "name": "beneficiary",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "BeneficiarySet",
15
+ "type": "event"
16
+ },
17
+ {
18
+ "anonymous": false,
19
+ "inputs": [
20
+ {
21
+ "indexed": false,
22
+ "internalType": "uint32",
23
+ "name": "remoteDomain",
24
+ "type": "uint32"
25
+ },
26
+ {
27
+ "indexed": false,
28
+ "internalType": "address",
29
+ "name": "gasOracle",
30
+ "type": "address"
31
+ },
32
+ {
33
+ "indexed": false,
34
+ "internalType": "uint96",
35
+ "name": "gasOverhead",
36
+ "type": "uint96"
37
+ }
38
+ ],
39
+ "name": "DestinationGasConfigSet",
40
+ "type": "event"
41
+ },
42
+ {
43
+ "anonymous": false,
44
+ "inputs": [
45
+ {
46
+ "indexed": false,
47
+ "internalType": "address",
48
+ "name": "gasOracle",
49
+ "type": "address"
50
+ }
51
+ ],
52
+ "name": "GasOracleSet",
53
+ "type": "event"
54
+ },
55
+ {
56
+ "anonymous": false,
57
+ "inputs": [
58
+ {
59
+ "indexed": true,
60
+ "internalType": "bytes32",
61
+ "name": "messageId",
62
+ "type": "bytes32"
63
+ },
64
+ {
65
+ "indexed": true,
66
+ "internalType": "uint32",
67
+ "name": "destinationDomain",
68
+ "type": "uint32"
69
+ },
70
+ {
71
+ "indexed": false,
72
+ "internalType": "uint256",
73
+ "name": "gasAmount",
74
+ "type": "uint256"
75
+ },
76
+ {
77
+ "indexed": false,
78
+ "internalType": "uint256",
79
+ "name": "payment",
80
+ "type": "uint256"
81
+ }
82
+ ],
83
+ "name": "GasPayment",
84
+ "type": "event"
85
+ },
86
+ {
87
+ "anonymous": false,
88
+ "inputs": [
89
+ {
90
+ "indexed": false,
91
+ "internalType": "uint8",
92
+ "name": "version",
93
+ "type": "uint8"
94
+ }
95
+ ],
96
+ "name": "Initialized",
97
+ "type": "event"
98
+ },
99
+ {
100
+ "anonymous": false,
101
+ "inputs": [
102
+ {
103
+ "indexed": true,
104
+ "internalType": "address",
105
+ "name": "previousOwner",
106
+ "type": "address"
107
+ },
108
+ {
109
+ "indexed": true,
110
+ "internalType": "address",
111
+ "name": "newOwner",
112
+ "type": "address"
113
+ }
114
+ ],
115
+ "name": "OwnershipTransferred",
116
+ "type": "event"
117
+ },
118
+ {
119
+ "inputs": [],
120
+ "name": "PACKAGE_VERSION",
121
+ "outputs": [
122
+ {
123
+ "internalType": "string",
124
+ "name": "",
125
+ "type": "string"
126
+ }
127
+ ],
128
+ "stateMutability": "view",
129
+ "type": "function"
130
+ },
131
+ {
132
+ "inputs": [],
133
+ "name": "beneficiary",
134
+ "outputs": [
135
+ {
136
+ "internalType": "address",
137
+ "name": "",
138
+ "type": "address"
139
+ }
140
+ ],
141
+ "stateMutability": "view",
142
+ "type": "function"
143
+ },
144
+ {
145
+ "inputs": [],
146
+ "name": "claim",
147
+ "outputs": [],
148
+ "stateMutability": "nonpayable",
149
+ "type": "function"
150
+ },
151
+ {
152
+ "inputs": [],
153
+ "name": "deployedBlock",
154
+ "outputs": [
155
+ {
156
+ "internalType": "uint256",
157
+ "name": "",
158
+ "type": "uint256"
159
+ }
160
+ ],
161
+ "stateMutability": "view",
162
+ "type": "function"
163
+ },
164
+ {
165
+ "inputs": [
166
+ {
167
+ "internalType": "uint32",
168
+ "name": "destinationDomain",
169
+ "type": "uint32"
170
+ }
171
+ ],
172
+ "name": "destinationGasConfigs",
173
+ "outputs": [
174
+ {
175
+ "internalType": "contract IGasOracle",
176
+ "name": "gasOracle",
177
+ "type": "address"
178
+ },
179
+ {
180
+ "internalType": "uint96",
181
+ "name": "gasOverhead",
182
+ "type": "uint96"
183
+ }
184
+ ],
185
+ "stateMutability": "view",
186
+ "type": "function"
187
+ },
188
+ {
189
+ "inputs": [
190
+ {
191
+ "internalType": "uint32",
192
+ "name": "_destinationDomain",
193
+ "type": "uint32"
194
+ },
195
+ {
196
+ "internalType": "uint256",
197
+ "name": "_gasLimit",
198
+ "type": "uint256"
199
+ }
200
+ ],
201
+ "name": "destinationGasLimit",
202
+ "outputs": [
203
+ {
204
+ "internalType": "uint256",
205
+ "name": "",
206
+ "type": "uint256"
207
+ }
208
+ ],
209
+ "stateMutability": "view",
210
+ "type": "function"
211
+ },
212
+ {
213
+ "inputs": [],
214
+ "name": "domains",
215
+ "outputs": [
216
+ {
217
+ "internalType": "uint256[]",
218
+ "name": "",
219
+ "type": "uint256[]"
220
+ }
221
+ ],
222
+ "stateMutability": "view",
223
+ "type": "function"
224
+ },
225
+ {
226
+ "inputs": [],
227
+ "name": "gasOracle",
228
+ "outputs": [
229
+ {
230
+ "internalType": "address",
231
+ "name": "",
232
+ "type": "address"
233
+ }
234
+ ],
235
+ "stateMutability": "view",
236
+ "type": "function"
237
+ },
238
+ {
239
+ "inputs": [
240
+ {
241
+ "internalType": "uint32",
242
+ "name": "_destinationDomain",
243
+ "type": "uint32"
244
+ }
245
+ ],
246
+ "name": "getExchangeRateAndGasPrice",
247
+ "outputs": [
248
+ {
249
+ "internalType": "uint128",
250
+ "name": "tokenExchangeRate",
251
+ "type": "uint128"
252
+ },
253
+ {
254
+ "internalType": "uint128",
255
+ "name": "gasPrice",
256
+ "type": "uint128"
257
+ }
258
+ ],
259
+ "stateMutability": "view",
260
+ "type": "function"
261
+ },
262
+ {
263
+ "inputs": [],
264
+ "name": "hookType",
265
+ "outputs": [
266
+ {
267
+ "internalType": "uint8",
268
+ "name": "",
269
+ "type": "uint8"
270
+ }
271
+ ],
272
+ "stateMutability": "pure",
273
+ "type": "function"
274
+ },
275
+ {
276
+ "inputs": [
277
+ {
278
+ "internalType": "address",
279
+ "name": "_owner",
280
+ "type": "address"
281
+ },
282
+ {
283
+ "internalType": "address",
284
+ "name": "_beneficiary",
285
+ "type": "address"
286
+ }
287
+ ],
288
+ "name": "initialize",
289
+ "outputs": [],
290
+ "stateMutability": "nonpayable",
291
+ "type": "function"
292
+ },
293
+ {
294
+ "inputs": [],
295
+ "name": "owner",
296
+ "outputs": [
297
+ {
298
+ "internalType": "address",
299
+ "name": "",
300
+ "type": "address"
301
+ }
302
+ ],
303
+ "stateMutability": "view",
304
+ "type": "function"
305
+ },
306
+ {
307
+ "inputs": [
308
+ {
309
+ "internalType": "bytes32",
310
+ "name": "_messageId",
311
+ "type": "bytes32"
312
+ },
313
+ {
314
+ "internalType": "uint32",
315
+ "name": "_destinationDomain",
316
+ "type": "uint32"
317
+ },
318
+ {
319
+ "internalType": "uint256",
320
+ "name": "_gasLimit",
321
+ "type": "uint256"
322
+ },
323
+ {
324
+ "internalType": "address",
325
+ "name": "_refundAddress",
326
+ "type": "address"
327
+ }
328
+ ],
329
+ "name": "payForGas",
330
+ "outputs": [],
331
+ "stateMutability": "payable",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [
336
+ {
337
+ "internalType": "bytes",
338
+ "name": "metadata",
339
+ "type": "bytes"
340
+ },
341
+ {
342
+ "internalType": "bytes",
343
+ "name": "message",
344
+ "type": "bytes"
345
+ }
346
+ ],
347
+ "name": "postDispatch",
348
+ "outputs": [],
349
+ "stateMutability": "payable",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "bytes",
356
+ "name": "metadata",
357
+ "type": "bytes"
358
+ },
359
+ {
360
+ "internalType": "bytes",
361
+ "name": "message",
362
+ "type": "bytes"
363
+ }
364
+ ],
365
+ "name": "quoteDispatch",
366
+ "outputs": [
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "stateMutability": "view",
374
+ "type": "function"
375
+ },
376
+ {
377
+ "inputs": [
378
+ {
379
+ "internalType": "uint32",
380
+ "name": "_destinationDomain",
381
+ "type": "uint32"
382
+ },
383
+ {
384
+ "internalType": "uint256",
385
+ "name": "_gasLimit",
386
+ "type": "uint256"
387
+ }
388
+ ],
389
+ "name": "quoteGasPayment",
390
+ "outputs": [
391
+ {
392
+ "internalType": "uint256",
393
+ "name": "",
394
+ "type": "uint256"
395
+ }
396
+ ],
397
+ "stateMutability": "view",
398
+ "type": "function"
399
+ },
400
+ {
401
+ "inputs": [
402
+ {
403
+ "internalType": "uint32[]",
404
+ "name": "_domains",
405
+ "type": "uint32[]"
406
+ }
407
+ ],
408
+ "name": "removeDestinationGasConfigs",
409
+ "outputs": [],
410
+ "stateMutability": "nonpayable",
411
+ "type": "function"
412
+ },
413
+ {
414
+ "inputs": [],
415
+ "name": "renounceOwnership",
416
+ "outputs": [],
417
+ "stateMutability": "nonpayable",
418
+ "type": "function"
419
+ },
420
+ {
421
+ "inputs": [
422
+ {
423
+ "internalType": "address",
424
+ "name": "_beneficiary",
425
+ "type": "address"
426
+ }
427
+ ],
428
+ "name": "setBeneficiary",
429
+ "outputs": [],
430
+ "stateMutability": "nonpayable",
431
+ "type": "function"
432
+ },
433
+ {
434
+ "inputs": [
435
+ {
436
+ "components": [
437
+ {
438
+ "internalType": "uint32",
439
+ "name": "remoteDomain",
440
+ "type": "uint32"
441
+ },
442
+ {
443
+ "components": [
444
+ {
445
+ "internalType": "contract IGasOracle",
446
+ "name": "gasOracle",
447
+ "type": "address"
448
+ },
449
+ {
450
+ "internalType": "uint96",
451
+ "name": "gasOverhead",
452
+ "type": "uint96"
453
+ }
454
+ ],
455
+ "internalType": "struct InterchainGasPaymaster.DomainGasConfig",
456
+ "name": "config",
457
+ "type": "tuple"
458
+ }
459
+ ],
460
+ "internalType": "struct InterchainGasPaymaster.GasParam[]",
461
+ "name": "_configs",
462
+ "type": "tuple[]"
463
+ }
464
+ ],
465
+ "name": "setDestinationGasConfigs",
466
+ "outputs": [],
467
+ "stateMutability": "nonpayable",
468
+ "type": "function"
469
+ },
470
+ {
471
+ "inputs": [
472
+ {
473
+ "internalType": "address",
474
+ "name": "_gasOracle",
475
+ "type": "address"
476
+ }
477
+ ],
478
+ "name": "setGasOracle",
479
+ "outputs": [],
480
+ "stateMutability": "nonpayable",
481
+ "type": "function"
482
+ },
483
+ {
484
+ "inputs": [
485
+ {
486
+ "internalType": "bytes",
487
+ "name": "metadata",
488
+ "type": "bytes"
489
+ }
490
+ ],
491
+ "name": "supportsMetadata",
492
+ "outputs": [
493
+ {
494
+ "internalType": "bool",
495
+ "name": "",
496
+ "type": "bool"
497
+ }
498
+ ],
499
+ "stateMutability": "pure",
500
+ "type": "function"
501
+ },
502
+ {
503
+ "inputs": [
504
+ {
505
+ "internalType": "address",
506
+ "name": "newOwner",
507
+ "type": "address"
508
+ }
509
+ ],
510
+ "name": "transferOwnership",
511
+ "outputs": [],
512
+ "stateMutability": "nonpayable",
513
+ "type": "function"
514
+ }
515
+ ],
516
+ "bytecode": "0x60c060405261c35060a05234801561001657600080fd5b50d3801561002357600080fd5b50d2801561003057600080fd5b504360805260805160a05161251a61005a60003960006112190152600061057c015261251a6000f3fe6080604052600436106101805760003560e01c80635d62a8dd116100d6578063a69297931161007f578063e445e7dd11610059578063e445e7dd14610701578063e5320bb914610737578063f2fde38b1461078157600080fd5b8063a692979314610653578063a87b81521461068d578063aaccd230146106c757600080fd5b806382ea7bfe116100b057806382ea7bfe146105505780638da5cb5b1461059e57806393c44847146105e357600080fd5b80635d62a8dd1461047757806360fcef7c146104be578063715018a61461052157600080fd5b806338af3eed11610138578063485cc95511610112578063485cc955146103d457806348f4e6c11461040e5780634e71d92d1461044857600080fd5b806338af3eed1461026e57806343c467c0146102da578063440df4f41461039857600080fd5b80631c31f710116101695780631c31f710146101ad57806326d5b1a6146101e75780632eb80f4a1461023457600080fd5b8063086011b91461018557806311bf2c181461019a575b600080fd5b610198610193366004611dc4565b6107bb565b005b6101986101a8366004611e6c565b610868565b3480156101b957600080fd5b50d380156101c657600080fd5b50d280156101d357600080fd5b506101986101e2366004611ecc565b610a02565b3480156101f357600080fd5b50d3801561020057600080fd5b50d2801561020d57600080fd5b5061022161021c366004611f06565b610a16565b6040519081526020015b60405180910390f35b34801561024057600080fd5b50d3801561024d57600080fd5b50d2801561025a57600080fd5b50610198610269366004611f30565b610a66565b34801561027a57600080fd5b50d3801561028757600080fd5b50d2801561029457600080fd5b506066546102b59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022b565b3480156102e657600080fd5b50d380156102f357600080fd5b50d2801561030057600080fd5b5061035f61030f366004611fa5565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff90911660208301520161022b565b3480156103a457600080fd5b50d380156103b157600080fd5b50d280156103be57600080fd5b506103c7610ab1565b60405161022b9190611fc0565b3480156103e057600080fd5b50d380156103ed57600080fd5b50d280156103fa57600080fd5b50610198610409366004612004565b610b4a565b34801561041a57600080fd5b50d3801561042757600080fd5b50d2801561043457600080fd5b50610198610443366004612057565b610cf1565b34801561045457600080fd5b50d3801561046157600080fd5b50d2801561046e57600080fd5b50610198610d91565b34801561048357600080fd5b50d3801561049057600080fd5b50d2801561049d57600080fd5b506067546102b59073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104ca57600080fd5b50d380156104d757600080fd5b50d280156104e457600080fd5b506104f86104f3366004611fa5565b610e5b565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161022b565b34801561052d57600080fd5b50d3801561053a57600080fd5b50d2801561054757600080fd5b50610198610fa8565b34801561055c57600080fd5b50d3801561056957600080fd5b50d2801561057657600080fd5b506102217f000000000000000000000000000000000000000000000000000000000000000081565b3480156105aa57600080fd5b50d380156105b757600080fd5b50d280156105c457600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102b5565b3480156105ef57600080fd5b50d380156105fc57600080fd5b50d2801561060957600080fd5b506106466040518060400160405280600681526020017f31302e312e33000000000000000000000000000000000000000000000000000081525081565b60405161022b91906120de565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b50610221610688366004611f06565b610fbc565b34801561069957600080fd5b50d380156106a657600080fd5b50d280156106b357600080fd5b506101986106c2366004611ecc565b611025565b3480156106d357600080fd5b50d380156106e057600080fd5b50d280156106ed57600080fd5b506102216106fc366004611dc4565b611036565b34801561070d57600080fd5b50d3801561071a57600080fd5b50d2801561072757600080fd5b506040516004815260200161022b565b34801561074357600080fd5b50d3801561075057600080fd5b50d2801561075d57600080fd5b5061077161076c36600461212f565b6110e3565b604051901515815260200161022b565b34801561078d57600080fd5b50d3801561079a57600080fd5b50d280156107a757600080fd5b506101986107b6366004611ecc565b611105565b6107c584846110e3565b610856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b610862848484846111b9565b50505050565b60006108748484610fbc565b905080341015610906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4947503a20696e73756666696369656e7420696e746572636861696e2067617360448201527f207061796d656e74000000000000000000000000000000000000000000000000606482015260840161084d565b600061091282346121a0565b905080156109b75773ffffffffffffffffffffffffffffffffffffffff8316610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f20726566756e642061646472657373000000000000000000000000000000604482015260640161084d565b6109b773ffffffffffffffffffffffffffffffffffffffff841682611253565b604080518581526020810184905263ffffffff87169188917f65695c3748edae85a24cc2c60b299b31f463050bc259150d2e5802ec8d11720a910160405180910390a3505050505050565b610a0a6113ad565b610a138161142e565b50565b63ffffffff8216600090815260656020526040812054610a5d9083907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166121b3565b90505b92915050565b610a6e6113ad565b8060005b8181101561086257610aa9848483818110610a8f57610a8f6121c6565b9050602002016020810190610aa49190611fa5565b6114a8565b600101610a72565b60606000610abf6068611515565b905060008167ffffffffffffffff811115610adc57610adc6121f5565b604051908082528060200260200182016040528015610b05578160200160208202803683370190505b50905060005b82811015610b4357610b1e60688261151f565b828281518110610b3057610b306121c6565b6020908102919091010152600101610b0b565b5092915050565b600054610100900460ff1615808015610b6a5750600054600160ff909116105b80610b845750303b158015610b84575060005460ff166001145b610c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161084d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610c6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610c7661152b565b610c7f836115ca565b610c888261142e565b8015610cec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b610cf96113ad565b8060005b8181101561086257610d89848483818110610d1a57610d1a6121c6565b610d309260206060909202019081019150611fa5565b858584818110610d4257610d426121c6565b610d5b9260406060909202019081019150602001611ecc565b868685818110610d6d57610d6d6121c6565b610d84926060918202019081019150604001612224565b611641565b600101610cfd565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d8060008114610deb576040519150601f19603f3d011682016040523d82523d6000602084013e610df0565b606091505b5050905080610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4947503a20636c61696d206661696c6564000000000000000000000000000000604482015260640161084d565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610f0b57610e9d8463ffffffff16611730565b604051602001610ead9190612252565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261084d916004016120de565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e91906122dd565b9250925050915091565b610fb06113ad565b610fba60006115ca565b565b6000806000610fca85610e5b565b90925090506000610fed6fffffffffffffffffffffffffffffffff831686612310565b90506402540be4006110116fffffffffffffffffffffffffffffffff851683612310565b61101b9190612327565b9695505050505050565b61102d6113ad565b610a13816117ee565b600061104285856110e3565b6110ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e740000000000000000000000000000606482015260840161084d565b6110da85858585611861565b95945050505050565b6000811580610a5d575060016110f9848461187d565b61ffff16149392505050565b61110d6113ad565b73ffffffffffffffffffffffffffffffffffffffff81166111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161084d565b610a13816115ca565b6108626111fb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ce92505050565b61120584846118d9565b61123d61121286866118d9565b61021c89897f00000000000000000000000000000000000000000000000000000000000000006118fc565b6101a861124a878761194d565b89908990611961565b804710156112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084d565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611317576040519150601f19603f3d011682016040523d82523d6000602084013e61131c565b606091505b5050905080610cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084d565b60335473ffffffffffffffffffffffffffffffffffffffff163314610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161084d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a24906020015b60405180910390a150565b63ffffffff8082166000818152606560205260408120556114cd91606891906119b316565b506040805163ffffffff83168152600060208201819052918101919091527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca9463439060600161149d565b6000610a60825490565b6000610a5d83836119bf565b600054610100900460ff166115c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161084d565b610fba6119e9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff80851682526bffffffffffffffffffffffff808516602080850191825263ffffffff808a1660008181526065909352969091209451915190921674010000000000000000000000000000000000000000029216919091179091556116c691606891611a8916565b506040805163ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201526bffffffffffffffffffffffff8316918101919091527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca94634390606001610ce3565b6060600061173d83611a95565b600101905060008167ffffffffffffffff81111561175d5761175d6121f5565b6040519080825280601f01601f191660200182016040528015611787576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461179157509392505050565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3efbbb00c39812fb98647af6e9e2c3f4ec2b53d368cedd1e148330a05b652cfa9060200161149d565b60006110da61187084846118d9565b61068861121286866118d9565b600061188a816002612362565b60ff1682101561189c57506000610a60565b826000836118ab826002612362565b60ff16926118bb9392919061237b565b6118c4916123a5565b60f01c9392505050565b805160209091012090565b60006118e9602d6029848661237b565b6118f2916123ed565b60e01c9392505050565b600061190a60226020612362565b60ff1683101561191b575080611946565b8360228461192a826020612362565b60ff169261193a9392919061237b565b61194391612433565b90505b9392505050565b6000610a5d61195c8484611b77565b611b90565b600061196f60426014612362565b60ff16831015611980575080611946565b8360428461198f826014612362565b60ff169261199f9392919061237b565b6119a89161246f565b60601c949350505050565b6000610a5d8383611c39565b60008260000182815481106119d6576119d66121c6565b9060005260206000200154905092915050565b600054610100900460ff16611a80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161084d565b610fba336115ca565b6000610a5d8383611d2c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611ade577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611b0a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b2857662386f26fc10000830492506010015b6305f5e1008310611b40576305f5e100830492506008015b6127108310611b5457612710830492506004015b60648310611b66576064830492506002015b600a8310610a605760010192915050565b6000611b8760296009848661237b565b610a5d91612433565b600073ffffffffffffffffffffffffffffffffffffffff821115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f7700000000000000000000000000000000000000000000000000000000606482015260840161084d565b5090565b60008181526001830160205260408120548015611d22576000611c5d6001836121a0565b8554909150600090611c71906001906121a0565b9050818114611cd6576000866000018281548110611c9157611c916121c6565b9060005260206000200154905080876000018481548110611cb457611cb46121c6565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ce757611ce76124b5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a60565b6000915050610a60565b6000818152600183016020526040812054611d7357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a60565b506000610a60565b60008083601f840112611d8d57600080fd5b50813567ffffffffffffffff811115611da557600080fd5b602083019150836020828501011115611dbd57600080fd5b9250929050565b60008060008060408587031215611dda57600080fd5b843567ffffffffffffffff80821115611df257600080fd5b611dfe88838901611d7b565b90965094506020870135915080821115611e1757600080fd5b50611e2487828801611d7b565b95989497509550505050565b803563ffffffff81168114611e4457600080fd5b919050565b74ffffffffffffffffffffffffffffffffffffffffff81168114610a1357600080fd5b60008060008060808587031215611e8257600080fd5b84359350611e9260208601611e30565b9250604085013591506060850135611ea981611e49565b73ffffffffffffffffffffffffffffffffffffffff811691505092959194509250565b600060208284031215611ede57600080fd5b8135611ee981611e49565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060408385031215611f1957600080fd5b611f2283611e30565b946020939093013593505050565b60008060208385031215611f4357600080fd5b823567ffffffffffffffff80821115611f5b57600080fd5b818501915085601f830112611f6f57600080fd5b813581811115611f7e57600080fd5b8660208260051b8501011115611f9357600080fd5b60209290920196919550909350505050565b600060208284031215611fb757600080fd5b610a5d82611e30565b6020808252825182820181905260009190848201906040850190845b81811015611ff857835183529284019291840191600101611fdc565b50909695505050505050565b6000806040838503121561201757600080fd5b823561202281611e49565b73ffffffffffffffffffffffffffffffffffffffff908116925060208401359061204b82611e49565b92959216935090915050565b6000806020838503121561206a57600080fd5b823567ffffffffffffffff8082111561208257600080fd5b818501915085601f83011261209657600080fd5b8135818111156120a557600080fd5b866020606083028501011115611f9357600080fd5b60005b838110156120d55781810151838201526020016120bd565b50506000910152565b60208152600082518060208401526120fd8160408501602087016120ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806020838503121561214257600080fd5b823567ffffffffffffffff81111561215957600080fd5b61216585828601611d7b565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610a6057610a60612171565b80820180821115610a6057610a60612171565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561223657600080fd5b81356bffffffffffffffffffffffff8116811461194657600080fd5b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e2000000000000000000000000000000000000000000000000000006020820152600082516122b08160268501602087016120ba565b9190910160260192915050565b80516fffffffffffffffffffffffffffffffff81168114611e4457600080fd5b600080604083850312156122f057600080fd5b6122f9836122bd565b9150612307602084016122bd565b90509250929050565b8082028115828204841417610a6057610a60612171565b60008261235d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60ff8181168382160190811115610a6057610a60612171565b6000808585111561238b57600080fd5b8386111561239857600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156123e55780818660020360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156123e55760049490940360031b84901b1690921692915050565b80356020831015610a60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156123e55760149490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220a5a9375963adb0127a4d5b941ae96bd999b82898d9bc09adeeeb194ba6dd6f1064736f6c63430008160033",
517
+ "deployedBytecode": "0x6080604052600436106101805760003560e01c80635d62a8dd116100d6578063a69297931161007f578063e445e7dd11610059578063e445e7dd14610701578063e5320bb914610737578063f2fde38b1461078157600080fd5b8063a692979314610653578063a87b81521461068d578063aaccd230146106c757600080fd5b806382ea7bfe116100b057806382ea7bfe146105505780638da5cb5b1461059e57806393c44847146105e357600080fd5b80635d62a8dd1461047757806360fcef7c146104be578063715018a61461052157600080fd5b806338af3eed11610138578063485cc95511610112578063485cc955146103d457806348f4e6c11461040e5780634e71d92d1461044857600080fd5b806338af3eed1461026e57806343c467c0146102da578063440df4f41461039857600080fd5b80631c31f710116101695780631c31f710146101ad57806326d5b1a6146101e75780632eb80f4a1461023457600080fd5b8063086011b91461018557806311bf2c181461019a575b600080fd5b610198610193366004611dc4565b6107bb565b005b6101986101a8366004611e6c565b610868565b3480156101b957600080fd5b50d380156101c657600080fd5b50d280156101d357600080fd5b506101986101e2366004611ecc565b610a02565b3480156101f357600080fd5b50d3801561020057600080fd5b50d2801561020d57600080fd5b5061022161021c366004611f06565b610a16565b6040519081526020015b60405180910390f35b34801561024057600080fd5b50d3801561024d57600080fd5b50d2801561025a57600080fd5b50610198610269366004611f30565b610a66565b34801561027a57600080fd5b50d3801561028757600080fd5b50d2801561029457600080fd5b506066546102b59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022b565b3480156102e657600080fd5b50d380156102f357600080fd5b50d2801561030057600080fd5b5061035f61030f366004611fa5565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff8116907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff90911660208301520161022b565b3480156103a457600080fd5b50d380156103b157600080fd5b50d280156103be57600080fd5b506103c7610ab1565b60405161022b9190611fc0565b3480156103e057600080fd5b50d380156103ed57600080fd5b50d280156103fa57600080fd5b50610198610409366004612004565b610b4a565b34801561041a57600080fd5b50d3801561042757600080fd5b50d2801561043457600080fd5b50610198610443366004612057565b610cf1565b34801561045457600080fd5b50d3801561046157600080fd5b50d2801561046e57600080fd5b50610198610d91565b34801561048357600080fd5b50d3801561049057600080fd5b50d2801561049d57600080fd5b506067546102b59073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104ca57600080fd5b50d380156104d757600080fd5b50d280156104e457600080fd5b506104f86104f3366004611fa5565b610e5b565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520161022b565b34801561052d57600080fd5b50d3801561053a57600080fd5b50d2801561054757600080fd5b50610198610fa8565b34801561055c57600080fd5b50d3801561056957600080fd5b50d2801561057657600080fd5b506102217f000000000000000000000000000000000000000000000000000000000000000081565b3480156105aa57600080fd5b50d380156105b757600080fd5b50d280156105c457600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102b5565b3480156105ef57600080fd5b50d380156105fc57600080fd5b50d2801561060957600080fd5b506106466040518060400160405280600681526020017f31302e312e33000000000000000000000000000000000000000000000000000081525081565b60405161022b91906120de565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b50610221610688366004611f06565b610fbc565b34801561069957600080fd5b50d380156106a657600080fd5b50d280156106b357600080fd5b506101986106c2366004611ecc565b611025565b3480156106d357600080fd5b50d380156106e057600080fd5b50d280156106ed57600080fd5b506102216106fc366004611dc4565b611036565b34801561070d57600080fd5b50d3801561071a57600080fd5b50d2801561072757600080fd5b506040516004815260200161022b565b34801561074357600080fd5b50d3801561075057600080fd5b50d2801561075d57600080fd5b5061077161076c36600461212f565b6110e3565b604051901515815260200161022b565b34801561078d57600080fd5b50d3801561079a57600080fd5b50d280156107a757600080fd5b506101986107b6366004611ecc565b611105565b6107c584846110e3565b610856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e74000000000000000000000000000060648201526084015b60405180910390fd5b610862848484846111b9565b50505050565b60006108748484610fbc565b905080341015610906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4947503a20696e73756666696369656e7420696e746572636861696e2067617360448201527f207061796d656e74000000000000000000000000000000000000000000000000606482015260840161084d565b600061091282346121a0565b905080156109b75773ffffffffffffffffffffffffffffffffffffffff8316610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f20726566756e642061646472657373000000000000000000000000000000604482015260640161084d565b6109b773ffffffffffffffffffffffffffffffffffffffff841682611253565b604080518581526020810184905263ffffffff87169188917f65695c3748edae85a24cc2c60b299b31f463050bc259150d2e5802ec8d11720a910160405180910390a3505050505050565b610a0a6113ad565b610a138161142e565b50565b63ffffffff8216600090815260656020526040812054610a5d9083907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff166121b3565b90505b92915050565b610a6e6113ad565b8060005b8181101561086257610aa9848483818110610a8f57610a8f6121c6565b9050602002016020810190610aa49190611fa5565b6114a8565b600101610a72565b60606000610abf6068611515565b905060008167ffffffffffffffff811115610adc57610adc6121f5565b604051908082528060200260200182016040528015610b05578160200160208202803683370190505b50905060005b82811015610b4357610b1e60688261151f565b828281518110610b3057610b306121c6565b6020908102919091010152600101610b0b565b5092915050565b600054610100900460ff1615808015610b6a5750600054600160ff909116105b80610b845750303b158015610b84575060005460ff166001145b610c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161084d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610c6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610c7661152b565b610c7f836115ca565b610c888261142e565b8015610cec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b505050565b610cf96113ad565b8060005b8181101561086257610d89848483818110610d1a57610d1a6121c6565b610d309260206060909202019081019150611fa5565b858584818110610d4257610d426121c6565b610d5b9260406060909202019081019150602001611ecc565b868685818110610d6d57610d6d6121c6565b610d84926060918202019081019150604001612224565b611641565b600101610cfd565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d8060008114610deb576040519150601f19603f3d011682016040523d82523d6000602084013e610df0565b606091505b5050905080610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4947503a20636c61696d206661696c6564000000000000000000000000000000604482015260640161084d565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610f0b57610e9d8463ffffffff16611730565b604051602001610ead9190612252565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261084d916004016120de565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e91906122dd565b9250925050915091565b610fb06113ad565b610fba60006115ca565b565b6000806000610fca85610e5b565b90925090506000610fed6fffffffffffffffffffffffffffffffff831686612310565b90506402540be4006110116fffffffffffffffffffffffffffffffff851683612310565b61101b9190612327565b9695505050505050565b61102d6113ad565b610a13816117ee565b600061104285856110e3565b6110ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4162737472616374506f73744469737061746368486f6f6b3a20696e76616c6960448201527f64206d657461646174612076617269616e740000000000000000000000000000606482015260840161084d565b6110da85858585611861565b95945050505050565b6000811580610a5d575060016110f9848461187d565b61ffff16149392505050565b61110d6113ad565b73ffffffffffffffffffffffffffffffffffffffff81166111b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161084d565b610a13816115ca565b6108626111fb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ce92505050565b61120584846118d9565b61123d61121286866118d9565b61021c89897f00000000000000000000000000000000000000000000000000000000000000006118fc565b6101a861124a878761194d565b89908990611961565b804710156112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084d565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611317576040519150601f19603f3d011682016040523d82523d6000602084013e61131c565b606091505b5050905080610cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084d565b60335473ffffffffffffffffffffffffffffffffffffffff163314610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161084d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a24906020015b60405180910390a150565b63ffffffff8082166000818152606560205260408120556114cd91606891906119b316565b506040805163ffffffff83168152600060208201819052918101919091527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca9463439060600161149d565b6000610a60825490565b6000610a5d83836119bf565b600054610100900460ff166115c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161084d565b610fba6119e9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff80851682526bffffffffffffffffffffffff808516602080850191825263ffffffff808a1660008181526065909352969091209451915190921674010000000000000000000000000000000000000000029216919091179091556116c691606891611a8916565b506040805163ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201526bffffffffffffffffffffffff8316918101919091527f676a23191c2989bd7cc8446122cca792bcdaa0f2d6bbd9c30d8ca031ca94634390606001610ce3565b6060600061173d83611a95565b600101905060008167ffffffffffffffff81111561175d5761175d6121f5565b6040519080825280601f01601f191660200182016040528015611787576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461179157509392505050565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3efbbb00c39812fb98647af6e9e2c3f4ec2b53d368cedd1e148330a05b652cfa9060200161149d565b60006110da61187084846118d9565b61068861121286866118d9565b600061188a816002612362565b60ff1682101561189c57506000610a60565b826000836118ab826002612362565b60ff16926118bb9392919061237b565b6118c4916123a5565b60f01c9392505050565b805160209091012090565b60006118e9602d6029848661237b565b6118f2916123ed565b60e01c9392505050565b600061190a60226020612362565b60ff1683101561191b575080611946565b8360228461192a826020612362565b60ff169261193a9392919061237b565b61194391612433565b90505b9392505050565b6000610a5d61195c8484611b77565b611b90565b600061196f60426014612362565b60ff16831015611980575080611946565b8360428461198f826014612362565b60ff169261199f9392919061237b565b6119a89161246f565b60601c949350505050565b6000610a5d8383611c39565b60008260000182815481106119d6576119d66121c6565b9060005260206000200154905092915050565b600054610100900460ff16611a80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161084d565b610fba336115ca565b6000610a5d8383611d2c565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611ade577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611b0a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b2857662386f26fc10000830492506010015b6305f5e1008310611b40576305f5e100830492506008015b6127108310611b5457612710830492506004015b60648310611b66576064830492506002015b600a8310610a605760010192915050565b6000611b8760296009848661237b565b610a5d91612433565b600073ffffffffffffffffffffffffffffffffffffffff821115611c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5479706543617374733a2062797465733332546f41646472657373206f76657260448201527f666c6f7700000000000000000000000000000000000000000000000000000000606482015260840161084d565b5090565b60008181526001830160205260408120548015611d22576000611c5d6001836121a0565b8554909150600090611c71906001906121a0565b9050818114611cd6576000866000018281548110611c9157611c916121c6565b9060005260206000200154905080876000018481548110611cb457611cb46121c6565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ce757611ce76124b5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a60565b6000915050610a60565b6000818152600183016020526040812054611d7357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a60565b506000610a60565b60008083601f840112611d8d57600080fd5b50813567ffffffffffffffff811115611da557600080fd5b602083019150836020828501011115611dbd57600080fd5b9250929050565b60008060008060408587031215611dda57600080fd5b843567ffffffffffffffff80821115611df257600080fd5b611dfe88838901611d7b565b90965094506020870135915080821115611e1757600080fd5b50611e2487828801611d7b565b95989497509550505050565b803563ffffffff81168114611e4457600080fd5b919050565b74ffffffffffffffffffffffffffffffffffffffffff81168114610a1357600080fd5b60008060008060808587031215611e8257600080fd5b84359350611e9260208601611e30565b9250604085013591506060850135611ea981611e49565b73ffffffffffffffffffffffffffffffffffffffff811691505092959194509250565b600060208284031215611ede57600080fd5b8135611ee981611e49565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060408385031215611f1957600080fd5b611f2283611e30565b946020939093013593505050565b60008060208385031215611f4357600080fd5b823567ffffffffffffffff80821115611f5b57600080fd5b818501915085601f830112611f6f57600080fd5b813581811115611f7e57600080fd5b8660208260051b8501011115611f9357600080fd5b60209290920196919550909350505050565b600060208284031215611fb757600080fd5b610a5d82611e30565b6020808252825182820181905260009190848201906040850190845b81811015611ff857835183529284019291840191600101611fdc565b50909695505050505050565b6000806040838503121561201757600080fd5b823561202281611e49565b73ffffffffffffffffffffffffffffffffffffffff908116925060208401359061204b82611e49565b92959216935090915050565b6000806020838503121561206a57600080fd5b823567ffffffffffffffff8082111561208257600080fd5b818501915085601f83011261209657600080fd5b8135818111156120a557600080fd5b866020606083028501011115611f9357600080fd5b60005b838110156120d55781810151838201526020016120bd565b50506000910152565b60208152600082518060208401526120fd8160408501602087016120ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806020838503121561214257600080fd5b823567ffffffffffffffff81111561215957600080fd5b61216585828601611d7b565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610a6057610a60612171565b80820180821115610a6057610a60612171565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561223657600080fd5b81356bffffffffffffffffffffffff8116811461194657600080fd5b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e2000000000000000000000000000000000000000000000000000006020820152600082516122b08160268501602087016120ba565b9190910160260192915050565b80516fffffffffffffffffffffffffffffffff81168114611e4457600080fd5b600080604083850312156122f057600080fd5b6122f9836122bd565b9150612307602084016122bd565b90509250929050565b8082028115828204841417610a6057610a60612171565b60008261235d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60ff8181168382160190811115610a6057610a60612171565b6000808585111561238b57600080fd5b8386111561239857600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156123e55780818660020360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156123e55760049490940360031b84901b1690921692915050565b80356020831015610a60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156123e55760149490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26474726f6e58221220a5a9375963adb0127a4d5b941ae96bd999b82898d9bc09adeeeb194ba6dd6f1064736f6c63430008160033"
518
+ }