@pendle/core-v2 6.4.2-swaphubtest → 6.4.2-swaphubtest2

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 (131) hide show
  1. package/build/artifacts/contracts/LiquidityMining/PendleMerkleDistributor.sol/PendleMerkleDistributor.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/PendleMerkleDistributor.sol/PendleMerkleDistributor.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol/PendleMultiTokenMerkleDistributor.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/PendleMultiTokenMerkleDistributor.sol/PendleMultiTokenMerkleDistributor.json +2 -2
  5. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  6. package/build/artifacts/contracts/core/Market/PendleMarketV6.sol/PendleMarketV6.dbg.json +1 -1
  7. package/build/artifacts/contracts/core/Market/PendleMarketV6.sol/PendleMarketV6.json +2 -2
  8. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  9. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  10. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  11. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactoryUpg.sol/PendleYieldContractFactoryUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactoryUpg.sol/PendleYieldContractFactoryUpg.json +2 -2
  13. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  14. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  15. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  16. package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.dbg.json +1 -1
  17. package/build/artifacts/contracts/cross-chain/FixedPricePTAMM.sol/FixedPricePTAMM.json +2 -2
  18. package/build/artifacts/contracts/cross-chain/deposit-box/DepositBox.sol/DepositBox.dbg.json +4 -0
  19. package/build/artifacts/contracts/cross-chain/deposit-box/DepositBox.sol/DepositBox.json +170 -0
  20. package/build/artifacts/contracts/cross-chain/deposit-box/DepositBoxFactory.sol/DepositBoxFactory.dbg.json +4 -0
  21. package/build/artifacts/contracts/cross-chain/deposit-box/DepositBoxFactory.sol/DepositBoxFactory.json +124 -0
  22. package/build/artifacts/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol/PendleCrossChainSwapHub.dbg.json +1 -1
  23. package/build/artifacts/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol/PendleCrossChainSwapHub.json +200 -433
  24. package/build/artifacts/contracts/cross-chain/swap-hub/SwapHubBase.sol/SwapHubBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/cross-chain/swap-hub/SwapHubBase.sol/SwapHubBase.json +199 -423
  26. package/build/artifacts/contracts/deprecated/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  27. package/build/artifacts/contracts/deprecated/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +2 -2
  28. package/build/artifacts/contracts/interfaces/IPCrossChainSwapHub.sol/IPCrossChainSwapHub.dbg.json +1 -1
  29. package/build/artifacts/contracts/interfaces/IPCrossChainSwapHub.sol/IPCrossChainSwapHub.json +161 -398
  30. package/build/artifacts/contracts/interfaces/IPDepositBoxFactory.sol/IPDepositBoxFactory.dbg.json +4 -0
  31. package/build/artifacts/contracts/interfaces/IPDepositBoxFactory.sol/IPDepositBoxFactory.json +108 -0
  32. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  33. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  34. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +2 -2
  35. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  36. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  37. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.dbg.json +1 -1
  38. package/build/artifacts/contracts/offchain-helpers/ExpiredLpPtRedeemer.sol/ExpiredLpPtRedeemer.json +2 -2
  39. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.dbg.json +1 -1
  40. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelperV2.sol/LimitBackendHelperV2.json +2 -2
  41. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.dbg.json +1 -1
  42. package/build/artifacts/contracts/offchain-helpers/MarketSweed.sol/MarketSweed.json +2 -2
  43. package/build/artifacts/contracts/offchain-helpers/PendleAPIFeeDepositor.sol/PendleAPIFeeDepositor.dbg.json +1 -1
  44. package/build/artifacts/contracts/offchain-helpers/PendleAPIFeeDepositor.sol/PendleAPIFeeDepositor.json +2 -2
  45. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapper.sol/PendleLPWrapper.dbg.json +1 -1
  46. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapper.sol/PendleLPWrapper.json +2 -2
  47. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapperFactory.sol/PendleLPWrapperFactory.dbg.json +1 -1
  48. package/build/artifacts/contracts/offchain-helpers/PendleLPWrapperFactory.sol/PendleLPWrapperFactory.json +2 -2
  49. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.dbg.json +1 -1
  50. package/build/artifacts/contracts/offchain-helpers/deploy/PendleCommonPoolDeployHelperV2.sol/PendleCommonPoolDeployHelperV2.json +2 -2
  51. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  52. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
  53. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.dbg.json +1 -1
  54. package/build/artifacts/contracts/offchain-helpers/deploy/PendlePoolDeployHelperV2.sol/PendlePoolDeployHelperV2.json +2 -2
  55. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
  56. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -2
  57. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.dbg.json +1 -1
  58. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.json +2 -2
  59. package/build/artifacts/contracts/router/ActionCrossChain.sol/ActionCrossChain.dbg.json +1 -1
  60. package/build/artifacts/contracts/router/ActionCrossChain.sol/ActionCrossChain.json +2 -2
  61. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
  62. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +2 -2
  63. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
  64. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -2
  65. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
  66. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -2
  67. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
  68. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -2
  69. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  70. package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
  71. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  73. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
  74. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/IOKXDexRouter.dbg.json +1 -1
  75. package/build/artifacts/contracts/router/swap-aggregator/OKXScaleHelper.sol/OKXScaleHelper.dbg.json +1 -1
  76. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IKyberScalingHelper.dbg.json +1 -1
  77. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/IOdosRouterV2.dbg.json +1 -1
  78. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  79. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.json +2 -2
  80. package/contracts/core/libraries/TokenHelper.sol +5 -1
  81. package/contracts/cross-chain/deposit-box/DepositBoxFactory.sol +44 -0
  82. package/contracts/cross-chain/swap-hub/PendleCrossChainSwapHub.sol +14 -102
  83. package/contracts/cross-chain/swap-hub/SwapHubBase.sol +73 -150
  84. package/contracts/interfaces/IPCrossChainSwapHub.sol +35 -66
  85. package/contracts/interfaces/IPDepositBoxFactory.sol +19 -0
  86. package/deployments/130-core.json +2 -1
  87. package/deployments/9745-core.json +3 -2
  88. package/package.json +1 -1
  89. package/typechain-types/DepositBoxFactory.ts +226 -0
  90. package/typechain-types/IPCrossChainSwapHub.ts +192 -383
  91. package/typechain-types/IPDepositBoxFactory.ts +226 -0
  92. package/typechain-types/PendleCrossChainSwapHub.ts +217 -390
  93. package/typechain-types/SwapHubBase.ts +216 -389
  94. package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -1
  95. package/typechain-types/factories/ActionCallbackV3__factory.ts +1 -1
  96. package/typechain-types/factories/ActionCrossChain__factory.ts +1 -1
  97. package/typechain-types/factories/ActionMiscV3__factory.ts +1 -1
  98. package/typechain-types/factories/ActionSimple__factory.ts +1 -1
  99. package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -1
  100. package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -1
  101. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  102. package/typechain-types/factories/DepositBoxFactory__factory.ts +189 -0
  103. package/typechain-types/factories/DepositBox__factory.ts +1 -1
  104. package/typechain-types/factories/ExpiredLpPtRedeemer__factory.ts +1 -1
  105. package/typechain-types/factories/FixedPricePTAMM__factory.ts +1 -1
  106. package/typechain-types/factories/IPCrossChainSwapHub__factory.ts +161 -398
  107. package/typechain-types/factories/IPDepositBoxFactory__factory.ts +123 -0
  108. package/typechain-types/factories/LimitBackendHelperV2__factory.ts +1 -1
  109. package/typechain-types/factories/MarketSweed__factory.ts +1 -1
  110. package/typechain-types/factories/PendleAPIFeeDepositor__factory.ts +1 -1
  111. package/typechain-types/factories/PendleCommonPoolDeployHelperV2__factory.ts +1 -1
  112. package/typechain-types/factories/PendleCrossChainSwapHub__factory.ts +203 -440
  113. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  114. package/typechain-types/factories/PendleLPWrapperFactory__factory.ts +1 -1
  115. package/typechain-types/factories/PendleLPWrapper__factory.ts +1 -1
  116. package/typechain-types/factories/PendleLimitRouter__factory.ts +1 -1
  117. package/typechain-types/factories/PendleMarketV6__factory.ts +1 -1
  118. package/typechain-types/factories/PendleMerkleDistributor__factory.ts +1 -1
  119. package/typechain-types/factories/PendleMultiTokenMerkleDistributor__factory.ts +1 -1
  120. package/typechain-types/factories/PendlePoolDeployHelperV2__factory.ts +1 -1
  121. package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
  122. package/typechain-types/factories/PendleSwap__factory.ts +1 -1
  123. package/typechain-types/factories/PendleYieldContractFactoryUpg__factory.ts +1 -1
  124. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  125. package/typechain-types/factories/Reflector__factory.ts +1 -1
  126. package/typechain-types/factories/SwapHubBase__factory.ts +199 -423
  127. package/typechain-types/hardhat.d.ts +27 -9
  128. package/typechain-types/index.ts +6 -2
  129. package/build/artifacts/contracts/cross-chain/swap-hub/DepositBox.sol/DepositBox.dbg.json +0 -4
  130. package/build/artifacts/contracts/cross-chain/swap-hub/DepositBox.sol/DepositBox.json +0 -170
  131. /package/contracts/cross-chain/{swap-hub → deposit-box}/DepositBox.sol +0 -0
@@ -12,12 +12,7 @@
12
12
  },
13
13
  {
14
14
  "internalType": "address",
15
- "name": "beaconProxyCodeContract_",
16
- "type": "address"
17
- },
18
- {
19
- "internalType": "address",
20
- "name": "depositBoxBeacon_",
15
+ "name": "depositBoxFactory_",
21
16
  "type": "address"
22
17
  }
23
18
  ],
@@ -52,57 +47,20 @@
52
47
  {
53
48
  "anonymous": false,
54
49
  "inputs": [
55
- {
56
- "indexed": true,
57
- "internalType": "address",
58
- "name": "owner",
59
- "type": "address"
60
- },
61
- {
62
- "indexed": false,
63
- "internalType": "uint32",
64
- "name": "boxId",
65
- "type": "uint32"
66
- },
67
- {
68
- "indexed": false,
69
- "internalType": "address",
70
- "name": "bridgeExtRouter",
71
- "type": "address"
72
- },
73
- {
74
- "indexed": false,
75
- "internalType": "address",
76
- "name": "token",
77
- "type": "address"
78
- },
79
50
  {
80
51
  "indexed": false,
81
52
  "internalType": "uint256",
82
- "name": "amountBridge",
53
+ "name": "requestId",
83
54
  "type": "uint256"
84
55
  },
85
56
  {
86
57
  "indexed": false,
87
58
  "internalType": "uint256",
88
- "name": "amountFee",
59
+ "name": "nonce",
89
60
  "type": "uint256"
90
61
  },
91
62
  {
92
63
  "indexed": false,
93
- "internalType": "bool",
94
- "name": "pullFromOwner",
95
- "type": "bool"
96
- }
97
- ],
98
- "name": "BridgeToken",
99
- "type": "event"
100
- },
101
- {
102
- "anonymous": false,
103
- "inputs": [
104
- {
105
- "indexed": true,
106
64
  "internalType": "address",
107
65
  "name": "owner",
108
66
  "type": "address"
@@ -116,47 +74,29 @@
116
74
  {
117
75
  "indexed": false,
118
76
  "internalType": "address",
119
- "name": "tokenSpent",
120
- "type": "address"
121
- },
122
- {
123
- "indexed": false,
124
- "internalType": "uint256",
125
- "name": "amountSpent",
126
- "type": "uint256"
127
- },
128
- {
129
- "indexed": false,
130
- "internalType": "uint256",
131
- "name": "amountFee",
132
- "type": "uint256"
133
- },
134
- {
135
- "indexed": false,
136
- "internalType": "address",
137
- "name": "ptAdapter",
77
+ "name": "bridgeExtRouter",
138
78
  "type": "address"
139
79
  },
140
80
  {
141
81
  "indexed": false,
142
82
  "internalType": "address",
143
- "name": "pt",
83
+ "name": "token",
144
84
  "type": "address"
145
85
  },
146
86
  {
147
87
  "indexed": false,
148
88
  "internalType": "uint256",
149
- "name": "netPtReceived",
89
+ "name": "amountBridge",
150
90
  "type": "uint256"
151
91
  },
152
92
  {
153
93
  "indexed": false,
154
- "internalType": "bool",
155
- "name": "pullFromOwner",
156
- "type": "bool"
94
+ "internalType": "uint256",
95
+ "name": "amountFee",
96
+ "type": "uint256"
157
97
  }
158
98
  ],
159
- "name": "BuyCrossChainPt",
99
+ "name": "BridgeToken",
160
100
  "type": "event"
161
101
  },
162
102
  {
@@ -222,6 +162,37 @@
222
162
  {
223
163
  "indexed": true,
224
164
  "internalType": "address",
165
+ "name": "proposer",
166
+ "type": "address"
167
+ },
168
+ {
169
+ "indexed": false,
170
+ "internalType": "bool",
171
+ "name": "isProposer",
172
+ "type": "bool"
173
+ }
174
+ ],
175
+ "name": "SetProposer",
176
+ "type": "event"
177
+ },
178
+ {
179
+ "anonymous": false,
180
+ "inputs": [
181
+ {
182
+ "indexed": false,
183
+ "internalType": "uint256",
184
+ "name": "requestId",
185
+ "type": "uint256"
186
+ },
187
+ {
188
+ "indexed": false,
189
+ "internalType": "uint256",
190
+ "name": "nonce",
191
+ "type": "uint256"
192
+ },
193
+ {
194
+ "indexed": false,
195
+ "internalType": "address",
225
196
  "name": "owner",
226
197
  "type": "address"
227
198
  },
@@ -243,12 +214,6 @@
243
214
  "name": "amountSpent",
244
215
  "type": "uint256"
245
216
  },
246
- {
247
- "indexed": false,
248
- "internalType": "uint256",
249
- "name": "amountFee",
250
- "type": "uint256"
251
- },
252
217
  {
253
218
  "indexed": false,
254
219
  "internalType": "address",
@@ -260,18 +225,6 @@
260
225
  "internalType": "uint256",
261
226
  "name": "netTokenReceived",
262
227
  "type": "uint256"
263
- },
264
- {
265
- "indexed": false,
266
- "internalType": "bool",
267
- "name": "pullFromOwner",
268
- "type": "bool"
269
- },
270
- {
271
- "indexed": false,
272
- "internalType": "bool",
273
- "name": "sendToOwner",
274
- "type": "bool"
275
228
  }
276
229
  ],
277
230
  "name": "SwapToken",
@@ -281,7 +234,19 @@
281
234
  "anonymous": false,
282
235
  "inputs": [
283
236
  {
284
- "indexed": true,
237
+ "indexed": false,
238
+ "internalType": "uint256",
239
+ "name": "requestId",
240
+ "type": "uint256"
241
+ },
242
+ {
243
+ "indexed": false,
244
+ "internalType": "uint256",
245
+ "name": "nonce",
246
+ "type": "uint256"
247
+ },
248
+ {
249
+ "indexed": false,
285
250
  "internalType": "address",
286
251
  "name": "owner",
287
252
  "type": "address"
@@ -316,10 +281,10 @@
316
281
  },
317
282
  {
318
283
  "inputs": [],
319
- "name": "BEACON_PROXY_CODE_CONTRACT",
284
+ "name": "DEPOSIT_BOX_FACTORY",
320
285
  "outputs": [
321
286
  {
322
- "internalType": "address",
287
+ "internalType": "contract IPDepositBoxFactory",
323
288
  "name": "",
324
289
  "type": "address"
325
290
  }
@@ -327,32 +292,6 @@
327
292
  "stateMutability": "view",
328
293
  "type": "function"
329
294
  },
330
- {
331
- "inputs": [],
332
- "name": "DEPOSIT_BOX_BEACON",
333
- "outputs": [
334
- {
335
- "internalType": "address",
336
- "name": "",
337
- "type": "address"
338
- }
339
- ],
340
- "stateMutability": "view",
341
- "type": "function"
342
- },
343
- {
344
- "inputs": [],
345
- "name": "DEPOSIT_BOX_CODE_HASH",
346
- "outputs": [
347
- {
348
- "internalType": "bytes32",
349
- "name": "",
350
- "type": "bytes32"
351
- }
352
- ],
353
- "stateMutability": "view",
354
- "type": "function"
355
- },
356
295
  {
357
296
  "inputs": [],
358
297
  "name": "TREASURY",
@@ -372,14 +311,9 @@
372
311
  "components": [
373
312
  {
374
313
  "internalType": "address",
375
- "name": "owner",
314
+ "name": "proposer",
376
315
  "type": "address"
377
316
  },
378
- {
379
- "internalType": "uint32",
380
- "name": "boxId",
381
- "type": "uint32"
382
- },
383
317
  {
384
318
  "internalType": "uint256",
385
319
  "name": "expiry",
@@ -387,64 +321,14 @@
387
321
  },
388
322
  {
389
323
  "internalType": "uint256",
390
- "name": "nonce",
391
- "type": "uint256"
392
- },
393
- {
394
- "internalType": "address",
395
- "name": "token",
396
- "type": "address"
397
- },
398
- {
399
- "internalType": "uint256",
400
- "name": "amountBridge",
324
+ "name": "requestId",
401
325
  "type": "uint256"
402
326
  },
403
327
  {
404
328
  "internalType": "uint256",
405
- "name": "amountFee",
329
+ "name": "nonce",
406
330
  "type": "uint256"
407
331
  },
408
- {
409
- "internalType": "bool",
410
- "name": "pullFromOwner",
411
- "type": "bool"
412
- },
413
- {
414
- "internalType": "address",
415
- "name": "bridgeExtRouter",
416
- "type": "address"
417
- },
418
- {
419
- "internalType": "address",
420
- "name": "bridgeApprove",
421
- "type": "address"
422
- },
423
- {
424
- "internalType": "bytes",
425
- "name": "bridgeCalldata",
426
- "type": "bytes"
427
- }
428
- ],
429
- "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
430
- "name": "ms",
431
- "type": "tuple"
432
- },
433
- {
434
- "internalType": "bytes",
435
- "name": "sig",
436
- "type": "bytes"
437
- }
438
- ],
439
- "name": "bridgeToken",
440
- "outputs": [],
441
- "stateMutability": "payable",
442
- "type": "function"
443
- },
444
- {
445
- "inputs": [
446
- {
447
- "components": [
448
332
  {
449
333
  "internalType": "address",
450
334
  "name": "owner",
@@ -455,24 +339,14 @@
455
339
  "name": "boxId",
456
340
  "type": "uint32"
457
341
  },
458
- {
459
- "internalType": "uint256",
460
- "name": "expiry",
461
- "type": "uint256"
462
- },
463
- {
464
- "internalType": "uint256",
465
- "name": "nonce",
466
- "type": "uint256"
467
- },
468
342
  {
469
343
  "internalType": "address",
470
- "name": "tokenSpent",
344
+ "name": "token",
471
345
  "type": "address"
472
346
  },
473
347
  {
474
348
  "internalType": "uint256",
475
- "name": "amountSpent",
349
+ "name": "amountBridge",
476
350
  "type": "uint256"
477
351
  },
478
352
  {
@@ -482,99 +356,40 @@
482
356
  },
483
357
  {
484
358
  "internalType": "address",
485
- "name": "ptAdapter",
486
- "type": "address"
487
- },
488
- {
489
- "internalType": "uint256",
490
- "name": "minPtReceived",
491
- "type": "uint256"
492
- },
493
- {
494
- "internalType": "uint32",
495
- "name": "dstEid",
496
- "type": "uint32"
497
- },
498
- {
499
- "internalType": "bytes32",
500
- "name": "receiver",
501
- "type": "bytes32"
502
- },
503
- {
504
- "internalType": "bool",
505
- "name": "pullFromOwner",
506
- "type": "bool"
507
- },
508
- {
509
- "internalType": "address",
510
- "name": "swapExtRouter",
359
+ "name": "bridgeExtRouter",
511
360
  "type": "address"
512
361
  },
513
362
  {
514
363
  "internalType": "address",
515
- "name": "swapApprove",
364
+ "name": "bridgeApprove",
516
365
  "type": "address"
517
366
  },
518
367
  {
519
368
  "internalType": "bytes",
520
- "name": "swapCalldata",
369
+ "name": "bridgeCalldata",
521
370
  "type": "bytes"
522
371
  }
523
372
  ],
524
- "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtMessage",
373
+ "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
525
374
  "name": "ms",
526
375
  "type": "tuple"
527
376
  },
528
377
  {
529
378
  "internalType": "bytes",
530
379
  "name": "sig",
531
- "type": "bytes"
532
- }
533
- ],
534
- "name": "buyCrossChainPt",
535
- "outputs": [],
536
- "stateMutability": "payable",
537
- "type": "function"
538
- },
539
- {
540
- "inputs": [],
541
- "name": "claimOwnership",
542
- "outputs": [],
543
- "stateMutability": "nonpayable",
544
- "type": "function"
545
- },
546
- {
547
- "inputs": [
548
- {
549
- "internalType": "address",
550
- "name": "owner",
551
- "type": "address"
552
- },
553
- {
554
- "internalType": "uint32",
555
- "name": "boxId",
556
- "type": "uint32"
557
- }
558
- ],
559
- "name": "computeDepositBox",
560
- "outputs": [
561
- {
562
- "internalType": "address",
563
- "name": "box",
564
- "type": "address"
565
- },
566
- {
567
- "internalType": "bytes32",
568
- "name": "salt",
569
- "type": "bytes32"
570
- },
571
- {
572
- "internalType": "bool",
573
- "name": "deployed",
574
- "type": "bool"
380
+ "type": "bytes"
575
381
  }
576
382
  ],
577
- "stateMutability": "view",
383
+ "name": "bridgeToken",
384
+ "outputs": [],
385
+ "stateMutability": "payable",
386
+ "type": "function"
387
+ },
388
+ {
389
+ "inputs": [],
390
+ "name": "claimOwnership",
391
+ "outputs": [],
392
+ "stateMutability": "nonpayable",
578
393
  "type": "function"
579
394
  },
580
395
  {
@@ -626,17 +441,17 @@
626
441
  "components": [
627
442
  {
628
443
  "internalType": "address",
629
- "name": "owner",
444
+ "name": "proposer",
630
445
  "type": "address"
631
446
  },
632
447
  {
633
- "internalType": "uint32",
634
- "name": "boxId",
635
- "type": "uint32"
448
+ "internalType": "uint256",
449
+ "name": "expiry",
450
+ "type": "uint256"
636
451
  },
637
452
  {
638
453
  "internalType": "uint256",
639
- "name": "expiry",
454
+ "name": "requestId",
640
455
  "type": "uint256"
641
456
  },
642
457
  {
@@ -646,57 +461,47 @@
646
461
  },
647
462
  {
648
463
  "internalType": "address",
649
- "name": "tokenSpent",
464
+ "name": "owner",
650
465
  "type": "address"
651
466
  },
652
467
  {
653
- "internalType": "uint256",
654
- "name": "amountSpent",
655
- "type": "uint256"
656
- },
657
- {
658
- "internalType": "uint256",
659
- "name": "amountFee",
660
- "type": "uint256"
468
+ "internalType": "uint32",
469
+ "name": "boxId",
470
+ "type": "uint32"
661
471
  },
662
472
  {
663
473
  "internalType": "address",
664
- "name": "tokenReceived",
474
+ "name": "token",
665
475
  "type": "address"
666
476
  },
667
477
  {
668
478
  "internalType": "uint256",
669
- "name": "minReceived",
479
+ "name": "amountBridge",
670
480
  "type": "uint256"
671
481
  },
672
482
  {
673
- "internalType": "bool",
674
- "name": "pullFromOwner",
675
- "type": "bool"
676
- },
677
- {
678
- "internalType": "bool",
679
- "name": "sendToOwner",
680
- "type": "bool"
483
+ "internalType": "uint256",
484
+ "name": "amountFee",
485
+ "type": "uint256"
681
486
  },
682
487
  {
683
488
  "internalType": "address",
684
- "name": "swapExtRouter",
489
+ "name": "bridgeExtRouter",
685
490
  "type": "address"
686
491
  },
687
492
  {
688
493
  "internalType": "address",
689
- "name": "swapApprove",
494
+ "name": "bridgeApprove",
690
495
  "type": "address"
691
496
  },
692
497
  {
693
498
  "internalType": "bytes",
694
- "name": "swapCalldata",
499
+ "name": "bridgeCalldata",
695
500
  "type": "bytes"
696
501
  }
697
502
  ],
698
- "internalType": "struct IPCrossChainSwapHub.SwapTokenMessage",
699
- "name": "message",
503
+ "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
504
+ "name": "ms",
700
505
  "type": "tuple"
701
506
  }
702
507
  ],
@@ -717,14 +522,9 @@
717
522
  "components": [
718
523
  {
719
524
  "internalType": "address",
720
- "name": "owner",
525
+ "name": "proposer",
721
526
  "type": "address"
722
527
  },
723
- {
724
- "internalType": "uint32",
725
- "name": "boxId",
726
- "type": "uint32"
727
- },
728
528
  {
729
529
  "internalType": "uint256",
730
530
  "name": "expiry",
@@ -732,45 +532,14 @@
732
532
  },
733
533
  {
734
534
  "internalType": "uint256",
735
- "name": "nonce",
535
+ "name": "requestId",
736
536
  "type": "uint256"
737
537
  },
738
- {
739
- "internalType": "address",
740
- "name": "token",
741
- "type": "address"
742
- },
743
538
  {
744
539
  "internalType": "uint256",
745
- "name": "amountWithdraw",
540
+ "name": "nonce",
746
541
  "type": "uint256"
747
542
  },
748
- {
749
- "internalType": "uint256",
750
- "name": "amountFee",
751
- "type": "uint256"
752
- }
753
- ],
754
- "internalType": "struct IPCrossChainSwapHub.WithdrawTokenMessage",
755
- "name": "message",
756
- "type": "tuple"
757
- }
758
- ],
759
- "name": "hashTypedData",
760
- "outputs": [
761
- {
762
- "internalType": "bytes32",
763
- "name": "",
764
- "type": "bytes32"
765
- }
766
- ],
767
- "stateMutability": "view",
768
- "type": "function"
769
- },
770
- {
771
- "inputs": [
772
- {
773
- "components": [
774
543
  {
775
544
  "internalType": "address",
776
545
  "name": "owner",
@@ -781,16 +550,6 @@
781
550
  "name": "boxId",
782
551
  "type": "uint32"
783
552
  },
784
- {
785
- "internalType": "uint256",
786
- "name": "expiry",
787
- "type": "uint256"
788
- },
789
- {
790
- "internalType": "uint256",
791
- "name": "nonce",
792
- "type": "uint256"
793
- },
794
553
  {
795
554
  "internalType": "address",
796
555
  "name": "tokenSpent",
@@ -801,36 +560,16 @@
801
560
  "name": "amountSpent",
802
561
  "type": "uint256"
803
562
  },
804
- {
805
- "internalType": "uint256",
806
- "name": "amountFee",
807
- "type": "uint256"
808
- },
809
563
  {
810
564
  "internalType": "address",
811
- "name": "ptAdapter",
565
+ "name": "tokenReceived",
812
566
  "type": "address"
813
567
  },
814
568
  {
815
569
  "internalType": "uint256",
816
- "name": "minPtReceived",
570
+ "name": "minReceived",
817
571
  "type": "uint256"
818
572
  },
819
- {
820
- "internalType": "uint32",
821
- "name": "dstEid",
822
- "type": "uint32"
823
- },
824
- {
825
- "internalType": "bytes32",
826
- "name": "receiver",
827
- "type": "bytes32"
828
- },
829
- {
830
- "internalType": "bool",
831
- "name": "pullFromOwner",
832
- "type": "bool"
833
- },
834
573
  {
835
574
  "internalType": "address",
836
575
  "name": "swapExtRouter",
@@ -847,8 +586,8 @@
847
586
  "type": "bytes"
848
587
  }
849
588
  ],
850
- "internalType": "struct IPCrossChainSwapHub.BuyCrossChainPtMessage",
851
- "name": "message",
589
+ "internalType": "struct IPCrossChainSwapHub.SwapTokenMessage",
590
+ "name": "ms",
852
591
  "type": "tuple"
853
592
  }
854
593
  ],
@@ -869,14 +608,9 @@
869
608
  "components": [
870
609
  {
871
610
  "internalType": "address",
872
- "name": "owner",
611
+ "name": "proposer",
873
612
  "type": "address"
874
613
  },
875
- {
876
- "internalType": "uint32",
877
- "name": "boxId",
878
- "type": "uint32"
879
- },
880
614
  {
881
615
  "internalType": "uint256",
882
616
  "name": "expiry",
@@ -884,47 +618,42 @@
884
618
  },
885
619
  {
886
620
  "internalType": "uint256",
887
- "name": "nonce",
621
+ "name": "requestId",
888
622
  "type": "uint256"
889
623
  },
890
- {
891
- "internalType": "address",
892
- "name": "token",
893
- "type": "address"
894
- },
895
624
  {
896
625
  "internalType": "uint256",
897
- "name": "amountBridge",
626
+ "name": "nonce",
898
627
  "type": "uint256"
899
628
  },
900
629
  {
901
- "internalType": "uint256",
902
- "name": "amountFee",
903
- "type": "uint256"
630
+ "internalType": "address",
631
+ "name": "owner",
632
+ "type": "address"
904
633
  },
905
634
  {
906
- "internalType": "bool",
907
- "name": "pullFromOwner",
908
- "type": "bool"
635
+ "internalType": "uint32",
636
+ "name": "boxId",
637
+ "type": "uint32"
909
638
  },
910
639
  {
911
640
  "internalType": "address",
912
- "name": "bridgeExtRouter",
641
+ "name": "token",
913
642
  "type": "address"
914
643
  },
915
644
  {
916
- "internalType": "address",
917
- "name": "bridgeApprove",
918
- "type": "address"
645
+ "internalType": "uint256",
646
+ "name": "amountWithdraw",
647
+ "type": "uint256"
919
648
  },
920
649
  {
921
- "internalType": "bytes",
922
- "name": "bridgeCalldata",
923
- "type": "bytes"
650
+ "internalType": "uint256",
651
+ "name": "amountFee",
652
+ "type": "uint256"
924
653
  }
925
654
  ],
926
- "internalType": "struct IPCrossChainSwapHub.BridgeTokenMessage",
927
- "name": "message",
655
+ "internalType": "struct IPCrossChainSwapHub.WithdrawTokenMessage",
656
+ "name": "ms",
928
657
  "type": "tuple"
929
658
  }
930
659
  ],
@@ -971,6 +700,25 @@
971
700
  "stateMutability": "view",
972
701
  "type": "function"
973
702
  },
703
+ {
704
+ "inputs": [
705
+ {
706
+ "internalType": "address",
707
+ "name": "proposer",
708
+ "type": "address"
709
+ }
710
+ ],
711
+ "name": "isProposer",
712
+ "outputs": [
713
+ {
714
+ "internalType": "bool",
715
+ "name": "",
716
+ "type": "bool"
717
+ }
718
+ ],
719
+ "stateMutability": "view",
720
+ "type": "function"
721
+ },
974
722
  {
975
723
  "inputs": [],
976
724
  "name": "owner",
@@ -985,14 +733,27 @@
985
733
  "type": "function"
986
734
  },
987
735
  {
988
- "inputs": [
736
+ "inputs": [],
737
+ "name": "pendingOwner",
738
+ "outputs": [
989
739
  {
990
740
  "internalType": "address",
991
- "name": "owner",
741
+ "name": "",
992
742
  "type": "address"
993
743
  }
994
744
  ],
995
- "name": "ownerNonce",
745
+ "stateMutability": "view",
746
+ "type": "function"
747
+ },
748
+ {
749
+ "inputs": [
750
+ {
751
+ "internalType": "uint256",
752
+ "name": "requestId",
753
+ "type": "uint256"
754
+ }
755
+ ],
756
+ "name": "requestNonce",
996
757
  "outputs": [
997
758
  {
998
759
  "internalType": "uint256",
@@ -1004,32 +765,37 @@
1004
765
  "type": "function"
1005
766
  },
1006
767
  {
1007
- "inputs": [],
1008
- "name": "pendingOwner",
1009
- "outputs": [
768
+ "inputs": [
1010
769
  {
1011
770
  "internalType": "address",
1012
- "name": "",
771
+ "name": "executor",
1013
772
  "type": "address"
773
+ },
774
+ {
775
+ "internalType": "bool",
776
+ "name": "isExecutor_",
777
+ "type": "bool"
1014
778
  }
1015
779
  ],
1016
- "stateMutability": "view",
780
+ "name": "setExecutor",
781
+ "outputs": [],
782
+ "stateMutability": "nonpayable",
1017
783
  "type": "function"
1018
784
  },
1019
785
  {
1020
786
  "inputs": [
1021
787
  {
1022
788
  "internalType": "address",
1023
- "name": "executor",
789
+ "name": "proposer",
1024
790
  "type": "address"
1025
791
  },
1026
792
  {
1027
793
  "internalType": "bool",
1028
- "name": "isExecutor_",
794
+ "name": "isProposer_",
1029
795
  "type": "bool"
1030
796
  }
1031
797
  ],
1032
- "name": "setExecutor",
798
+ "name": "setProposer",
1033
799
  "outputs": [],
1034
800
  "stateMutability": "nonpayable",
1035
801
  "type": "function"
@@ -1040,17 +806,17 @@
1040
806
  "components": [
1041
807
  {
1042
808
  "internalType": "address",
1043
- "name": "owner",
809
+ "name": "proposer",
1044
810
  "type": "address"
1045
811
  },
1046
812
  {
1047
- "internalType": "uint32",
1048
- "name": "boxId",
1049
- "type": "uint32"
813
+ "internalType": "uint256",
814
+ "name": "expiry",
815
+ "type": "uint256"
1050
816
  },
1051
817
  {
1052
818
  "internalType": "uint256",
1053
- "name": "expiry",
819
+ "name": "requestId",
1054
820
  "type": "uint256"
1055
821
  },
1056
822
  {
@@ -1060,17 +826,22 @@
1060
826
  },
1061
827
  {
1062
828
  "internalType": "address",
1063
- "name": "tokenSpent",
829
+ "name": "owner",
1064
830
  "type": "address"
1065
831
  },
1066
832
  {
1067
- "internalType": "uint256",
1068
- "name": "amountSpent",
1069
- "type": "uint256"
833
+ "internalType": "uint32",
834
+ "name": "boxId",
835
+ "type": "uint32"
836
+ },
837
+ {
838
+ "internalType": "address",
839
+ "name": "tokenSpent",
840
+ "type": "address"
1070
841
  },
1071
842
  {
1072
843
  "internalType": "uint256",
1073
- "name": "amountFee",
844
+ "name": "amountSpent",
1074
845
  "type": "uint256"
1075
846
  },
1076
847
  {
@@ -1083,16 +854,6 @@
1083
854
  "name": "minReceived",
1084
855
  "type": "uint256"
1085
856
  },
1086
- {
1087
- "internalType": "bool",
1088
- "name": "pullFromOwner",
1089
- "type": "bool"
1090
- },
1091
- {
1092
- "internalType": "bool",
1093
- "name": "sendToOwner",
1094
- "type": "bool"
1095
- },
1096
857
  {
1097
858
  "internalType": "address",
1098
859
  "name": "swapExtRouter",
@@ -1153,17 +914,17 @@
1153
914
  "components": [
1154
915
  {
1155
916
  "internalType": "address",
1156
- "name": "owner",
917
+ "name": "proposer",
1157
918
  "type": "address"
1158
919
  },
1159
920
  {
1160
- "internalType": "uint32",
1161
- "name": "boxId",
1162
- "type": "uint32"
921
+ "internalType": "uint256",
922
+ "name": "expiry",
923
+ "type": "uint256"
1163
924
  },
1164
925
  {
1165
926
  "internalType": "uint256",
1166
- "name": "expiry",
927
+ "name": "requestId",
1167
928
  "type": "uint256"
1168
929
  },
1169
930
  {
@@ -1171,6 +932,16 @@
1171
932
  "name": "nonce",
1172
933
  "type": "uint256"
1173
934
  },
935
+ {
936
+ "internalType": "address",
937
+ "name": "owner",
938
+ "type": "address"
939
+ },
940
+ {
941
+ "internalType": "uint32",
942
+ "name": "boxId",
943
+ "type": "uint32"
944
+ },
1174
945
  {
1175
946
  "internalType": "address",
1176
947
  "name": "token",
@@ -1201,14 +972,10 @@
1201
972
  "outputs": [],
1202
973
  "stateMutability": "nonpayable",
1203
974
  "type": "function"
1204
- },
1205
- {
1206
- "stateMutability": "payable",
1207
- "type": "receive"
1208
975
  }
1209
976
  ],
1210
- "bytecode": "0x61010080604052346102015760608161400480380380916100208285610205565b8339810103126102015761003381610228565b61004b604061004460208501610228565b9301610228565b906080528160a0528060c052813b60018060401b0381116101ed576100d6916100e4915f604051956100876020601f19601f8601160188610205565b82875260208701903c6040519060018060a01b031660208201526040808201525f6060820152606081526100bc608082610205565b6040519283916100d060208401809761023c565b9061023c565b03601f198101835282610205565b51902060e05260015460ff8160a81c166101985760ff808260a01c1603610155575b604051613d9e9081610266823960805181818161188501526132da015260a0518181816118160152612fc2015260c051818181611d020152613028015260e05181818161168d0152612c5a0152f35b60ff60a01b191660ff60a01b1760015560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f610106565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b038211908210176101ed57604052565b51906001600160a01b038216820361020157565b908151915f5b838110610252575050015f815290565b806020809284010151818501520161024256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c8063078dfbe714611f8b5780630bb1c86414611d265780631122f54e14611cb757806318a70682146119d05780631e1bff3f1461190357806320cc5640146118a95780632d2c55651461183a5780632d610bb0146117cb5780634e71e0c8146116b05780635a3f0e6b1461165757806369df58d31461161457806384b0196e146114a95780638da5cb5b146114585780639b8e55ca146113fe578063c4d66de814610d02578063da40bf8f14610a0c578063debfda30146109a4578063e30c397814610952578063e8ad29b4146108ef578063ebb1e41a146101fb578063f22e9dd41461017b5763fa9e960614610117575061000e565b346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff821161017857602061017061016b36600486016123c8565b612c95565b604051908152f35b80fd5b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576101b361215f565b6024359163ffffffff831683036101785760606101d08484612bea565b9073ffffffffffffffffffffffffffffffffffffffff60405193168352602083015215156040820152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb5761024690369060040161261f565b60243567ffffffffffffffff81116108e7576102696102b3913690600401612382565b338452606760205261028160ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad86612a70565b92612db7565b73ffffffffffffffffffffffffffffffffffffffff815116906102e2602082019263ffffffff84511690612faa565b6101608201916004835115159373ffffffffffffffffffffffffffffffffffffffff835116608084019561034773ffffffffffffffffffffffffffffffffffffffff8851169160a08701928351948961034160c08b0197885190612805565b93613336565b61036b73ffffffffffffffffffffffffffffffffffffffff8851168351908861327f565b60e0850195602073ffffffffffffffffffffffffffffffffffffffff885116604051968780927ffc0c546a0000000000000000000000000000000000000000000000000000000082525afa9485156108dc578a95610887575b50610140860194855173ffffffffffffffffffffffffffffffffffffffff8851160361085f57908a889493928a5173ffffffffffffffffffffffffffffffffffffffff168451936101808b015173ffffffffffffffffffffffffffffffffffffffff166101a08c015173ffffffffffffffffffffffffffffffffffffffff166101c08d0151918573ffffffffffffffffffffffffffffffffffffffff85169861046e968a96613792565b976101208a015163ffffffff1690516040519161048a83612208565b825260208201908152604082018a8152606083019085825260209d8e926040516104b48582612240565b88815260808701908152604051906104cc8683612240565b89825260a08801918252604051926104e48785612240565b8a845260c08901938452604051956104fb87612224565b348752878701958c87525173ffffffffffffffffffffffffffffffffffffffff16986040519a8b998a017fc7c7f5b300000000000000000000000000000000000000000000000000000000905260248a01608090525163ffffffff1660a48a01525160c48901525160e48801525161010487015251610124860160e090526101848601610587916125dc565b9051908581037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101448701526105be916125dc565b9051908481037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101648601526105f5916125dc565b91516044840152516064830152336084830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183526106389083612240565b60405192610645846121bf565b73ffffffffffffffffffffffffffffffffffffffff16998a84528c8401528060408401526060830152608082015260405192838080937f28dc83070000000000000000000000000000000000000000000000000000000082523360048301916106ad92613421565b039134905af1908115610854578b91610832575b508051810181898201910360c0811261082e5760801361082a57604051906060820182811067ffffffffffffffff8211176107fd57604052898301518252604083015167ffffffffffffffff811681036107f9578a938360a0928661073a9601526040610731856060850161376a565b9101520161376a565b01519561010081015187106107d157916101009795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff817fa9689619f27686fce49dd727e6b92a6cbcc1f2303b628462551888f4e82e32e89d9b999751169d511699511691519251935116935115159660405198895288015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048b7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b8d80fd5b60248e7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8b80fd5b8c80fd5b61084e91503d808d833e6108468183612240565b8101906133c2565b5f6106c1565b6040513d8d823e3d90fd5b60048b7f1e4ec46b000000000000000000000000000000000000000000000000000000008152fd5b9094506020813d6020116108d4575b816108a360209383612240565b810103126108d0575173ffffffffffffffffffffffffffffffffffffffff811681036108d057935f6103c4565b8980fd5b3d9150610896565b6040513d8c823e3d90fd5b8280fd5b5080fd5b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857604060209173ffffffffffffffffffffffffffffffffffffffff61094161215f565b168152606683522054604051908152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760ff604060209273ffffffffffffffffffffffffffffffffffffffff6109f861215f565b168152606784522054166040519015158152f35b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb57610a5c9036906004016124ab565b60243567ffffffffffffffff81116108e757610a7f610ac3913690600401612382565b3384526067602052610a9760ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad8661283f565b73ffffffffffffffffffffffffffffffffffffffff81511690610af2602082019263ffffffff84511690612faa565b9083610120820191825115159273ffffffffffffffffffffffffffffffffffffffff825116946080830195610b5273ffffffffffffffffffffffffffffffffffffffff8851169660a08601978851938561034160c08a0196875190612805565b610b7673ffffffffffffffffffffffffffffffffffffffff8851168251908461327f565b610c2373ffffffffffffffffffffffffffffffffffffffff8851169287519360e087019473ffffffffffffffffffffffffffffffffffffffff86511673ffffffffffffffffffffffffffffffffffffffff6101608a0151169073ffffffffffffffffffffffffffffffffffffffff6101808b015116926101a08b0151946101408c019c8d51151590505f14610ce55773ffffffffffffffffffffffffffffffffffffffff8c511696613792565b936101008101518510610cbd57917f4c8820052d6bc12246719250c47ce9c6d91f319216271c751080ab962ce4be7e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b999751169c511698511696519151925116925115159451151595604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048a7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff871696613792565b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857610d3a61215f565b60015460ff8160a81c1615908180926113ee575b80156113d4575b156113505781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff83161760015561130d575b506040918251610dad8482612240565b601b81527f50656e646c652043726f737320436861696e20537761702048756200000000006020820152835190610de48583612240565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152610e2860ff60015460a81c16610e23816136df565b6136df565b80519067ffffffffffffffff82116112e0578190610e47600454613526565b601f8111611235575b50602090601f831160011461117857889261116d575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff821161114057610eb6600554613526565b601f811161109f575b50602090601f8311600114610fca5773ffffffffffffffffffffffffffffffffffffffff939291879183610fbf575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b8460025584600355610f3a60ff60015460a81c166136df565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000845416178355610f6a575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f80610eee565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b818110611087575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410611050575b505050811b01600555610f21565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611042565b92936020600181928786015181550195019301611016565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0019060208410611118575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b81811061110d5750610ebf565b878155600101611100565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091506110d6565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f80610e66565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b81811061121d57509084600195949392106111e6575b505050811b01600455610e99565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806111d8565b929360206001819287860151815501950193016111c2565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190602084106112b8575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b8181106112aa5750610e50565b89815584935060010161129d565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915061126f565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610d9d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015610d555750600160ff8260a01c1614610d55565b50600160ff8260a01c1610610d4e565b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff8211610178576020610170611453366004860161261f565b612a70565b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857600254158061160a575b156115ac57611550906114f3613577565b906114fc61364a565b90602061155e604051936115108386612240565b8385525f3681376040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e08589015260e08801906125dc565b9086820360408801526125dc565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b82811061159557505050500390f35b835185528695509381019392810192600101611586565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50600354156114e2565b50346101785760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602061017061165236612292565b6129ac565b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760015473ffffffffffffffffffffffffffffffffffffffff81169081330361176d577fffffffffffffffffffffffff0000000000000000000000000000000000000000918284548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a3161783551660015580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff82116101785760206101706118fe36600486016124ab565b61283f565b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785761193b61215f565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff61197b6121a3565b9361198a82875416331461273b565b16928385526067825260408520901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a280f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb57611a1b9036906004016123c8565b60243567ffffffffffffffff81116108e757611a3e611a82913690600401612382565b3384526067602052611a5660ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad86612c95565b611beb73ffffffffffffffffffffffffffffffffffffffff82511691611ab4602082019363ffffffff85511690612faa565b60e08201805115159073ffffffffffffffffffffffffffffffffffffffff8451166080850192611b0f73ffffffffffffffffffffffffffffffffffffffff8551169160a08801928351948861034160c08c0197885190612805565b611b3373ffffffffffffffffffffffffffffffffffffffff8551168351908761327f565b8873ffffffffffffffffffffffffffffffffffffffff85511682519673ffffffffffffffffffffffffffffffffffffffff6101208a015116976101008a019873ffffffffffffffffffffffffffffffffffffffff8a5116906101408c01519260405195611b9f876121bf565b8652602086015260408501526060840152608083015260405180809b81947f28dc8307000000000000000000000000000000000000000000000000000000008352339060048401613421565b039173ffffffffffffffffffffffffffffffffffffffff3491165af195898715611cab5763ffffffff73ffffffffffffffffffffffffffffffffffffffff809381937f87ddee34ded39e330fcd8606c222a15a38a5c797f4bb924e36524f83ad66d6779c60c09c611c90575b505051169a5116965116945116905191519251151593604051958652602086015260408501526060840152608083015260a0820152a280f35b611ca3913d8091833e6108468183612240565b508d5f611c57565b604051903d90823e3d90fd5b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034611f87576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f8757611d6036612292565b60e43567ffffffffffffffff8111611f8757611d83611dc7913690600401612382565b335f526067602052611d9b60ff60405f2054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad866129ac565b73ffffffffffffffffffffffffffffffffffffffff81511690611df6602082019263ffffffff84511690612faa565b90608081019173ffffffffffffffffffffffffffffffffffffffff8084511691611e2760c08501938451908361327f565b169173ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff8551169060a0830194855190803b15611f87576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611f7c57611f3b575b50917fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da2939173ffffffffffffffffffffffffffffffffffffffff63ffffffff8160809651169751169351169151905191604051938452602084015260408301526060820152a280f35b60809391965091611f6e5f7fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da29694612240565b5f9692949193509190611ed2565b6040513d5f823e3d90fd5b5f80fd5b34611f875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f8757611fc261215f565b611fca6121a3565b90604435918215158303611f8757611ffa73ffffffffffffffffffffffffffffffffffffffff5f5416331461273b565b1561211a5773ffffffffffffffffffffffffffffffffffffffff1690811590811591612112575b50156120b4577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082612021565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611f8757565b359073ffffffffffffffffffffffffffffffffffffffff82168203611f8757565b602435908115158203611f8757565b35908115158203611f8757565b60a0810190811067ffffffffffffffff8211176121db57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176121db57604052565b6040810190811067ffffffffffffffff8211176121db57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176121db57604052565b359063ffffffff82168203611f8757565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60e0910112611f8757604051906122c982612208565b8160043573ffffffffffffffffffffffffffffffffffffffff81168103611f8757815260243563ffffffff81168103611f875760208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103611f8757608082015260a43560a082015260c060c435910152565b67ffffffffffffffff81116121db57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215611f875780359061239982612348565b926123a76040519485612240565b82845260208383010111611f8757815f926020809301838601378301015290565b919061016083820312611f875760405190610160820182811067ffffffffffffffff8211176121db5760405281936123ff81612182565b835261240d60208201612281565b6020840152604081013560408401526060810135606084015261243260808201612182565b608084015260a081013560a084015260c081013560c084015261245760e082016121b2565b60e08401526124696101008201612182565b61010084015261247c6101208201612182565b6101208401526101408101359167ffffffffffffffff8311611f8757610140926124a69201612382565b910152565b91906101c083820312611f8757604051906101c0820182811067ffffffffffffffff8211176121db5760405281936124e281612182565b83526124f060208201612281565b6020840152604081013560408401526060810135606084015261251560808201612182565b608084015260a081013560a084015260c081013560c084015261253a60e08201612182565b60e084015261010081013561010084015261255861012082016121b2565b61012084015261256b61014082016121b2565b61014084015261257e6101608201612182565b6101608401526125916101808201612182565b6101808401526101a08101359167ffffffffffffffff8311611f87576101a0926124a69201612382565b5f5b8381106125cc5750505f910152565b81810151838201526020016125bd565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612618815180928187528780880191016125bb565b0116010190565b91906101e083820312611f8757604051906101e0820182811067ffffffffffffffff8211176121db57604052819361265681612182565b835261266460208201612281565b6020840152604081013560408401526060810135606084015261268960808201612182565b608084015260a081013560a084015260c081013560c08401526126ae60e08201612182565b60e08401526101008101356101008401526126cc6101208201612281565b6101208401526101408101356101408401526126eb61016082016121b2565b6101608401526126fe6101808201612182565b6101808401526127116101a08201612182565b6101a08401526101c08101359167ffffffffffffffff8311611f87576101c0926124a69201612382565b1561274257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156127a757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b9190820180921161281257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff602082015116906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511660a084015160c085015173ffffffffffffffffffffffffffffffffffffffff60e087015116906101008701519261012088015115159461014089015115159673ffffffffffffffffffffffffffffffffffffffff6101608b015116986101a073ffffffffffffffffffffffffffffffffffffffff6101808d0151169b0151602081519101209b60606040519e8f907f4498c25ddda8e3ef15a8807f07b1e979ae42dda38db3d209baf1775e2a6f543860208301526040820152015260808d015260a08c015260c08b015260e08a01526101008901526101208801526101408701526101608601526101808501526101a08401526101c08301526101e08201526101e0815261299d61020082612240565b60208151910120613489565b90565b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff6080830151169060c060a0840151930151936040519560208701977fcaa7f7696d87717a31bc145c3f672929c08e815e9b58bc5855e1d40417433faf895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612a6861012082612240565b519020613489565b805173ffffffffffffffffffffffffffffffffffffffff16602082015163ffffffff169160408101516060820151608083015173ffffffffffffffffffffffffffffffffffffffff1660a084015160c085015160e086015173ffffffffffffffffffffffffffffffffffffffff166101008701519161012088015163ffffffff1693610140890151956101608a01511515976101808b015173ffffffffffffffffffffffffffffffffffffffff16996101a08c015173ffffffffffffffffffffffffffffffffffffffff169b6101c00151805190602001209c6040519e8f91602083017f8e6f9138f7effdd380d1767c55a8414a5bea7fcbcbe5a38f7330d26473b3c26a9052604083015260608201526080015260a08d015260c08c015260e08b01526101008a01526101208901526101408801526101608701526101808601526101a08501526101c08401526101e08301526102008201526102008152612bda61022082612240565b805190602001206129a990613489565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830190815263ffffffff90931690820152612c4e81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612240565b5190206055600b6040517f000000000000000000000000000000000000000000000000000000000000000060408201528360208201523081520160ff81532091823b151590565b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511660a083015160c08401519060e085015115159273ffffffffffffffffffffffffffffffffffffffff610100870151169461014073ffffffffffffffffffffffffffffffffffffffff6101208901511697015160208151910120976040519960208b019b7fad42070ddb8409a42c3350282d386bc77a83c33977016da633aadbb2db12de8f8d5260408c015260608b015260808a015260a089015260c088015260e08701526101008601526101208501526101408401526101608301526101808201526101808152612a686101a082612240565b9293909193612dc6828261387a565b6005819492941015612f7d57159283612f5a575b508215612ea0575b505015612e7857421015612e505773ffffffffffffffffffffffffffffffffffffffff16805f5260666020528160405f20541015612e28575f52606660205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f925090612c22612ef0849360405192839160208301957f1626ba7e00000000000000000000000000000000000000000000000000000000875260248401526040604484015260648301906125dc565b5190855afa612efd6138af565b81612f4c575b81612f11575b505f80612de2565b9050602081805181010312611f8757602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612f09565b905060208151101590612f03565b73ffffffffffffffffffffffffffffffffffffffff86811691161492505f612dda565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90612fb58183612bea565b9391936132635761308c907f00000000000000000000000000000000000000000000000000000000000000006130ba813b612fef81612348565b90612ffd6040519283612240565b8082525f6020830180953c60206040518181019073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682526040808201525f606082015260608152613065608082612240565b60405197889461307d858701988992519283916125bb565b850191518093858401906125bb565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612240565b8251156132055773ffffffffffffffffffffffffffffffffffffffff9251905ff5169283156131a75773ffffffffffffffffffffffffffffffffffffffff1680930361317a57823b15611f87576040517fc5e4c9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015263ffffffff9190911660248201525f8160448183865af18015611f7c57613170575090565b5f6129a991612240565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b50505073ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1691823b15611f87576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015290921660248301526044820152905f9082908183816064810103925af18015611f7c5761332a5750565b5f61333491612240565b565b929092613344575b50505050565b831561333e576040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff928316602482015292821660448401526064808401949094529282526133b9926133b3608484612240565b16613afc565b5f80808061333e565b602081830312611f875780519067ffffffffffffffff8211611f87570181601f82011215611f875780516133f581612348565b926134036040519485612240565b81845260208284010111611f87576129a991602080850191016125bb565b9073ffffffffffffffffffffffffffffffffffffffff61348260806020939695966040865283815116604087015284810151606087015283604082015116828701528360608201511660a0870152015160a060c086015260e08501906125dc565b9416910152565b604290613494613c27565b61349c613c72565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526134ed60c082612240565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b90600182811c9216801561356d575b602083101461354057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613535565b604051905f826004549161358a83613526565b808352926001811690811561360d57506001146135ae575b61333492500383612240565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106135f1575050906020613334928201016135a2565b60209193508060019154838589010152019101909184926135d9565b602092506133349491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201016135a2565b604051905f826005549161365d83613526565b808352926001811690811561360d57506001146136805761333492500383612240565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106136c3575050906020613334928201016135a2565b60209193508060019154838589010152019101909184926136ab565b156136e657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9190826040910312611f875760405161378281612224565b6020808294805184520151910152565b946138349473ffffffffffffffffffffffffffffffffffffffff80925f969b9a99949582604051976137c3896121bf565b1687526020870152166040850152166060830152608082015273ffffffffffffffffffffffffffffffffffffffff6137fa886138de565b94168091836040518096819582947f28dc830700000000000000000000000000000000000000000000000000000000845260048401613421565b03925af18015611f7c57613862575b5061384d846138de565b90810390811161281257613334918194613975565b613875903d805f833e6108468183612240565b613843565b9060418151145f146138a6576138a291602082015190606060408401519301515f1a90613a74565b9091565b50505f90600290565b3d156138d9573d906138c082612348565b916138ce6040519384612240565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff16806138fe57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611f7c575f91613946575090565b90506020813d60201161396d575b8161396160209383612240565b81010312611f87575190565b3d9150613954565b8215613a6f5773ffffffffffffffffffffffffffffffffffffffff1680613a0d57505f80809381935af16139a76138af565b50156139af57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6133349273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252613a6a606483612240565b613afc565b505050565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613af1576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611f7c575f5173ffffffffffffffffffffffffffffffffffffffff811615613ae957905f90565b505f90600190565b505050505f90600390565b9073ffffffffffffffffffffffffffffffffffffffff613b6a92165f8060405193613b28604086612240565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1613b646138af565b91613c98565b8051908115918215613c04575b505015613b8057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b8192509060209181010312611f8757602001518015158103611f87575f80613b77565b613c2f613577565b8051908115613c3f576020012090565b50506002548015613c4d5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613c7a61364a565b8051908115613c8a576020012090565b50506003548015613c4d5790565b91929015613d135750815115613cac575090565b3b15613cb55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613d265750805190602001fd5b613d64906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906125dc565b0390fdfea26469706673582212208262d6f8b2a7c15d34b1a4ed38ec07a8955277b1ea7b0cb922051c9c819ebec064736f6c634300081e0033",
1211
- "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c8063078dfbe714611f8b5780630bb1c86414611d265780631122f54e14611cb757806318a70682146119d05780631e1bff3f1461190357806320cc5640146118a95780632d2c55651461183a5780632d610bb0146117cb5780634e71e0c8146116b05780635a3f0e6b1461165757806369df58d31461161457806384b0196e146114a95780638da5cb5b146114585780639b8e55ca146113fe578063c4d66de814610d02578063da40bf8f14610a0c578063debfda30146109a4578063e30c397814610952578063e8ad29b4146108ef578063ebb1e41a146101fb578063f22e9dd41461017b5763fa9e960614610117575061000e565b346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff821161017857602061017061016b36600486016123c8565b612c95565b604051908152f35b80fd5b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576101b361215f565b6024359163ffffffff831683036101785760606101d08484612bea565b9073ffffffffffffffffffffffffffffffffffffffff60405193168352602083015215156040820152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb5761024690369060040161261f565b60243567ffffffffffffffff81116108e7576102696102b3913690600401612382565b338452606760205261028160ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad86612a70565b92612db7565b73ffffffffffffffffffffffffffffffffffffffff815116906102e2602082019263ffffffff84511690612faa565b6101608201916004835115159373ffffffffffffffffffffffffffffffffffffffff835116608084019561034773ffffffffffffffffffffffffffffffffffffffff8851169160a08701928351948961034160c08b0197885190612805565b93613336565b61036b73ffffffffffffffffffffffffffffffffffffffff8851168351908861327f565b60e0850195602073ffffffffffffffffffffffffffffffffffffffff885116604051968780927ffc0c546a0000000000000000000000000000000000000000000000000000000082525afa9485156108dc578a95610887575b50610140860194855173ffffffffffffffffffffffffffffffffffffffff8851160361085f57908a889493928a5173ffffffffffffffffffffffffffffffffffffffff168451936101808b015173ffffffffffffffffffffffffffffffffffffffff166101a08c015173ffffffffffffffffffffffffffffffffffffffff166101c08d0151918573ffffffffffffffffffffffffffffffffffffffff85169861046e968a96613792565b976101208a015163ffffffff1690516040519161048a83612208565b825260208201908152604082018a8152606083019085825260209d8e926040516104b48582612240565b88815260808701908152604051906104cc8683612240565b89825260a08801918252604051926104e48785612240565b8a845260c08901938452604051956104fb87612224565b348752878701958c87525173ffffffffffffffffffffffffffffffffffffffff16986040519a8b998a017fc7c7f5b300000000000000000000000000000000000000000000000000000000905260248a01608090525163ffffffff1660a48a01525160c48901525160e48801525161010487015251610124860160e090526101848601610587916125dc565b9051908581037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101448701526105be916125dc565b9051908481037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c016101648601526105f5916125dc565b91516044840152516064830152336084830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183526106389083612240565b60405192610645846121bf565b73ffffffffffffffffffffffffffffffffffffffff16998a84528c8401528060408401526060830152608082015260405192838080937f28dc83070000000000000000000000000000000000000000000000000000000082523360048301916106ad92613421565b039134905af1908115610854578b91610832575b508051810181898201910360c0811261082e5760801361082a57604051906060820182811067ffffffffffffffff8211176107fd57604052898301518252604083015167ffffffffffffffff811681036107f9578a938360a0928661073a9601526040610731856060850161376a565b9101520161376a565b01519561010081015187106107d157916101009795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff817fa9689619f27686fce49dd727e6b92a6cbcc1f2303b628462551888f4e82e32e89d9b999751169d511699511691519251935116935115159660405198895288015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048b7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b8d80fd5b60248e7f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8b80fd5b8c80fd5b61084e91503d808d833e6108468183612240565b8101906133c2565b5f6106c1565b6040513d8d823e3d90fd5b60048b7f1e4ec46b000000000000000000000000000000000000000000000000000000008152fd5b9094506020813d6020116108d4575b816108a360209383612240565b810103126108d0575173ffffffffffffffffffffffffffffffffffffffff811681036108d057935f6103c4565b8980fd5b3d9150610896565b6040513d8c823e3d90fd5b8280fd5b5080fd5b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857604060209173ffffffffffffffffffffffffffffffffffffffff61094161215f565b168152606683522054604051908152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760ff604060209273ffffffffffffffffffffffffffffffffffffffff6109f861215f565b168152606784522054166040519015158152f35b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb57610a5c9036906004016124ab565b60243567ffffffffffffffff81116108e757610a7f610ac3913690600401612382565b3384526067602052610a9760ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad8661283f565b73ffffffffffffffffffffffffffffffffffffffff81511690610af2602082019263ffffffff84511690612faa565b9083610120820191825115159273ffffffffffffffffffffffffffffffffffffffff825116946080830195610b5273ffffffffffffffffffffffffffffffffffffffff8851169660a08601978851938561034160c08a0196875190612805565b610b7673ffffffffffffffffffffffffffffffffffffffff8851168251908461327f565b610c2373ffffffffffffffffffffffffffffffffffffffff8851169287519360e087019473ffffffffffffffffffffffffffffffffffffffff86511673ffffffffffffffffffffffffffffffffffffffff6101608a0151169073ffffffffffffffffffffffffffffffffffffffff6101808b015116926101a08b0151946101408c019c8d51151590505f14610ce55773ffffffffffffffffffffffffffffffffffffffff8c511696613792565b936101008101518510610cbd57917f4c8820052d6bc12246719250c47ce9c6d91f319216271c751080ab962ce4be7e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b999751169c511698511696519151925116925115159451151595604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a280f35b60048a7f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff871696613792565b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857610d3a61215f565b60015460ff8160a81c1615908180926113ee575b80156113d4575b156113505781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff83161760015561130d575b506040918251610dad8482612240565b601b81527f50656e646c652043726f737320436861696e20537761702048756200000000006020820152835190610de48583612240565b600182527f31000000000000000000000000000000000000000000000000000000000000006020830152610e2860ff60015460a81c16610e23816136df565b6136df565b80519067ffffffffffffffff82116112e0578190610e47600454613526565b601f8111611235575b50602090601f831160011461117857889261116d575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff821161114057610eb6600554613526565b601f811161109f575b50602090601f8311600114610fca5773ffffffffffffffffffffffffffffffffffffffff939291879183610fbf575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b8460025584600355610f3a60ff60015460a81c166136df565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000845416178355610f6a575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f80610eee565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b818110611087575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410611050575b505050811b01600555610f21565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611042565b92936020600181928786015181550195019301611016565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0019060208410611118575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b81811061110d5750610ebf565b878155600101611100565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091506110d6565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f80610e66565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b81811061121d57509084600195949392106111e6575b505050811b01600455610e99565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f80806111d8565b929360206001819287860151815501950193016111c2565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190602084106112b8575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b8181106112aa5750610e50565b89815584935060010161129d565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915061126f565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610d9d565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015610d555750600160ff8260a01c1614610d55565b50600160ff8260a01c1610610d4e565b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff8211610178576020610170611453366004860161261f565b612a70565b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857600254158061160a575b156115ac57611550906114f3613577565b906114fc61364a565b90602061155e604051936115108386612240565b8385525f3681376040519687967f0f00000000000000000000000000000000000000000000000000000000000000885260e08589015260e08801906125dc565b9086820360408801526125dc565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b82811061159557505050500390f35b835185528695509381019392810192600101611586565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50600354156114e2565b50346101785760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602061017061165236612292565b6129ac565b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760015473ffffffffffffffffffffffffffffffffffffffff81169081330361176d577fffffffffffffffffffffffff0000000000000000000000000000000000000000918284548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a3161783551660015580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101785760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610178576004359067ffffffffffffffff82116101785760206101706118fe36600486016124ab565b61283f565b50346101785760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785761193b61215f565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff61197b6121a3565b9361198a82875416331461273b565b16928385526067825260408520901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a280f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101785760043567ffffffffffffffff81116108eb57611a1b9036906004016123c8565b60243567ffffffffffffffff81116108e757611a3e611a82913690600401612382565b3384526067602052611a5660ff6040862054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad86612c95565b611beb73ffffffffffffffffffffffffffffffffffffffff82511691611ab4602082019363ffffffff85511690612faa565b60e08201805115159073ffffffffffffffffffffffffffffffffffffffff8451166080850192611b0f73ffffffffffffffffffffffffffffffffffffffff8551169160a08801928351948861034160c08c0197885190612805565b611b3373ffffffffffffffffffffffffffffffffffffffff8551168351908761327f565b8873ffffffffffffffffffffffffffffffffffffffff85511682519673ffffffffffffffffffffffffffffffffffffffff6101208a015116976101008a019873ffffffffffffffffffffffffffffffffffffffff8a5116906101408c01519260405195611b9f876121bf565b8652602086015260408501526060840152608083015260405180809b81947f28dc8307000000000000000000000000000000000000000000000000000000008352339060048401613421565b039173ffffffffffffffffffffffffffffffffffffffff3491165af195898715611cab5763ffffffff73ffffffffffffffffffffffffffffffffffffffff809381937f87ddee34ded39e330fcd8606c222a15a38a5c797f4bb924e36524f83ad66d6779c60c09c611c90575b505051169a5116965116945116905191519251151593604051958652602086015260408501526060840152608083015260a0820152a280f35b611ca3913d8091833e6108468183612240565b508d5f611c57565b604051903d90823e3d90fd5b503461017857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017857602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034611f87576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f8757611d6036612292565b60e43567ffffffffffffffff8111611f8757611d83611dc7913690600401612382565b335f526067602052611d9b60ff60405f2054166127a0565b73ffffffffffffffffffffffffffffffffffffffff83511660408401516060850151906102ad866129ac565b73ffffffffffffffffffffffffffffffffffffffff81511690611df6602082019263ffffffff84511690612faa565b90608081019173ffffffffffffffffffffffffffffffffffffffff8084511691611e2760c08501938451908361327f565b169173ffffffffffffffffffffffffffffffffffffffff81511673ffffffffffffffffffffffffffffffffffffffff8551169060a0830194855190803b15611f87576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611f7c57611f3b575b50917fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da2939173ffffffffffffffffffffffffffffffffffffffff63ffffffff8160809651169751169351169151905191604051938452602084015260408301526060820152a280f35b60809391965091611f6e5f7fb9f5ff38da0b1cafa5e46c18d59e9c91a01c9f8b1e326f1f2105444474953da29694612240565b5f9692949193509190611ed2565b6040513d5f823e3d90fd5b5f80fd5b34611f875760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112611f8757611fc261215f565b611fca6121a3565b90604435918215158303611f8757611ffa73ffffffffffffffffffffffffffffffffffffffff5f5416331461273b565b1561211a5773ffffffffffffffffffffffffffffffffffffffff1690811590811591612112575b50156120b4577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082612021565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611f8757565b359073ffffffffffffffffffffffffffffffffffffffff82168203611f8757565b602435908115158203611f8757565b35908115158203611f8757565b60a0810190811067ffffffffffffffff8211176121db57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176121db57604052565b6040810190811067ffffffffffffffff8211176121db57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176121db57604052565b359063ffffffff82168203611f8757565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60e0910112611f8757604051906122c982612208565b8160043573ffffffffffffffffffffffffffffffffffffffff81168103611f8757815260243563ffffffff81168103611f875760208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103611f8757608082015260a43560a082015260c060c435910152565b67ffffffffffffffff81116121db57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215611f875780359061239982612348565b926123a76040519485612240565b82845260208383010111611f8757815f926020809301838601378301015290565b919061016083820312611f875760405190610160820182811067ffffffffffffffff8211176121db5760405281936123ff81612182565b835261240d60208201612281565b6020840152604081013560408401526060810135606084015261243260808201612182565b608084015260a081013560a084015260c081013560c084015261245760e082016121b2565b60e08401526124696101008201612182565b61010084015261247c6101208201612182565b6101208401526101408101359167ffffffffffffffff8311611f8757610140926124a69201612382565b910152565b91906101c083820312611f8757604051906101c0820182811067ffffffffffffffff8211176121db5760405281936124e281612182565b83526124f060208201612281565b6020840152604081013560408401526060810135606084015261251560808201612182565b608084015260a081013560a084015260c081013560c084015261253a60e08201612182565b60e084015261010081013561010084015261255861012082016121b2565b61012084015261256b61014082016121b2565b61014084015261257e6101608201612182565b6101608401526125916101808201612182565b6101808401526101a08101359167ffffffffffffffff8311611f87576101a0926124a69201612382565b5f5b8381106125cc5750505f910152565b81810151838201526020016125bd565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612618815180928187528780880191016125bb565b0116010190565b91906101e083820312611f8757604051906101e0820182811067ffffffffffffffff8211176121db57604052819361265681612182565b835261266460208201612281565b6020840152604081013560408401526060810135606084015261268960808201612182565b608084015260a081013560a084015260c081013560c08401526126ae60e08201612182565b60e08401526101008101356101008401526126cc6101208201612281565b6101208401526101408101356101408401526126eb61016082016121b2565b6101608401526126fe6101808201612182565b6101808401526127116101a08201612182565b6101a08401526101c08101359167ffffffffffffffff8311611f87576101c0926124a69201612382565b1561274257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b156127a757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b9190820180921161281257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff602082015116906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511660a084015160c085015173ffffffffffffffffffffffffffffffffffffffff60e087015116906101008701519261012088015115159461014089015115159673ffffffffffffffffffffffffffffffffffffffff6101608b015116986101a073ffffffffffffffffffffffffffffffffffffffff6101808d0151169b0151602081519101209b60606040519e8f907f4498c25ddda8e3ef15a8807f07b1e979ae42dda38db3d209baf1775e2a6f543860208301526040820152015260808d015260a08c015260c08b015260e08a01526101008901526101208801526101408701526101608601526101808501526101a08401526101c08301526101e08201526101e0815261299d61020082612240565b60208151910120613489565b90565b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff6080830151169060c060a0840151930151936040519560208701977fcaa7f7696d87717a31bc145c3f672929c08e815e9b58bc5855e1d40417433faf895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612a6861012082612240565b519020613489565b805173ffffffffffffffffffffffffffffffffffffffff16602082015163ffffffff169160408101516060820151608083015173ffffffffffffffffffffffffffffffffffffffff1660a084015160c085015160e086015173ffffffffffffffffffffffffffffffffffffffff166101008701519161012088015163ffffffff1693610140890151956101608a01511515976101808b015173ffffffffffffffffffffffffffffffffffffffff16996101a08c015173ffffffffffffffffffffffffffffffffffffffff169b6101c00151805190602001209c6040519e8f91602083017f8e6f9138f7effdd380d1767c55a8414a5bea7fcbcbe5a38f7330d26473b3c26a9052604083015260608201526080015260a08d015260c08c015260e08b01526101008a01526101208901526101408801526101608701526101808601526101a08501526101c08401526101e08301526102008201526102008152612bda61022082612240565b805190602001206129a990613489565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830190815263ffffffff90931690820152612c4e81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612240565b5190206055600b6040517f000000000000000000000000000000000000000000000000000000000000000060408201528360208201523081520160ff81532091823b151590565b6129a99073ffffffffffffffffffffffffffffffffffffffff8151169063ffffffff60208201511690604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511660a083015160c08401519060e085015115159273ffffffffffffffffffffffffffffffffffffffff610100870151169461014073ffffffffffffffffffffffffffffffffffffffff6101208901511697015160208151910120976040519960208b019b7fad42070ddb8409a42c3350282d386bc77a83c33977016da633aadbb2db12de8f8d5260408c015260608b015260808a015260a089015260c088015260e08701526101008601526101208501526101408401526101608301526101808201526101808152612a686101a082612240565b9293909193612dc6828261387a565b6005819492941015612f7d57159283612f5a575b508215612ea0575b505015612e7857421015612e505773ffffffffffffffffffffffffffffffffffffffff16805f5260666020528160405f20541015612e28575f52606660205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f925090612c22612ef0849360405192839160208301957f1626ba7e00000000000000000000000000000000000000000000000000000000875260248401526040604484015260648301906125dc565b5190855afa612efd6138af565b81612f4c575b81612f11575b505f80612de2565b9050602081805181010312611f8757602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f612f09565b905060208151101590612f03565b73ffffffffffffffffffffffffffffffffffffffff86811691161492505f612dda565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90612fb58183612bea565b9391936132635761308c907f00000000000000000000000000000000000000000000000000000000000000006130ba813b612fef81612348565b90612ffd6040519283612240565b8082525f6020830180953c60206040518181019073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682526040808201525f606082015260608152613065608082612240565b60405197889461307d858701988992519283916125bb565b850191518093858401906125bb565b0101037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612240565b8251156132055773ffffffffffffffffffffffffffffffffffffffff9251905ff5169283156131a75773ffffffffffffffffffffffffffffffffffffffff1680930361317a57823b15611f87576040517fc5e4c9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91909116600482015263ffffffff9190911660248201525f8160448183865af18015611f7c57613170575090565b5f6129a991612240565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152fd5b50505073ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1691823b15611f87576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015290921660248301526044820152905f9082908183816064810103925af18015611f7c5761332a5750565b5f61333491612240565b565b929092613344575b50505050565b831561333e576040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff928316602482015292821660448401526064808401949094529282526133b9926133b3608484612240565b16613afc565b5f80808061333e565b602081830312611f875780519067ffffffffffffffff8211611f87570181601f82011215611f875780516133f581612348565b926134036040519485612240565b81845260208284010111611f87576129a991602080850191016125bb565b9073ffffffffffffffffffffffffffffffffffffffff61348260806020939695966040865283815116604087015284810151606087015283604082015116828701528360608201511660a0870152015160a060c086015260e08501906125dc565b9416910152565b604290613494613c27565b61349c613c72565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526134ed60c082612240565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b90600182811c9216801561356d575b602083101461354057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613535565b604051905f826004549161358a83613526565b808352926001811690811561360d57506001146135ae575b61333492500383612240565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106135f1575050906020613334928201016135a2565b60209193508060019154838589010152019101909184926135d9565b602092506133349491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b8201016135a2565b604051905f826005549161365d83613526565b808352926001811690811561360d57506001146136805761333492500383612240565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b8183106136c3575050906020613334928201016135a2565b60209193508060019154838589010152019101909184926136ab565b156136e657565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9190826040910312611f875760405161378281612224565b6020808294805184520151910152565b946138349473ffffffffffffffffffffffffffffffffffffffff80925f969b9a99949582604051976137c3896121bf565b1687526020870152166040850152166060830152608082015273ffffffffffffffffffffffffffffffffffffffff6137fa886138de565b94168091836040518096819582947f28dc830700000000000000000000000000000000000000000000000000000000845260048401613421565b03925af18015611f7c57613862575b5061384d846138de565b90810390811161281257613334918194613975565b613875903d805f833e6108468183612240565b613843565b9060418151145f146138a6576138a291602082015190606060408401519301515f1a90613a74565b9091565b50505f90600290565b3d156138d9573d906138c082612348565b916138ce6040519384612240565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff16806138fe57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115611f7c575f91613946575090565b90506020813d60201161396d575b8161396160209383612240565b81010312611f87575190565b3d9150613954565b8215613a6f5773ffffffffffffffffffffffffffffffffffffffff1680613a0d57505f80809381935af16139a76138af565b50156139af57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6133349273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252613a6a606483612240565b613afc565b505050565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613af1576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611f7c575f5173ffffffffffffffffffffffffffffffffffffffff811615613ae957905f90565b505f90600190565b505050505f90600390565b9073ffffffffffffffffffffffffffffffffffffffff613b6a92165f8060405193613b28604086612240565b602085527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564602086015260208151910182855af1613b646138af565b91613c98565b8051908115918215613c04575b505015613b8057565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b8192509060209181010312611f8757602001518015158103611f87575f80613b77565b613c2f613577565b8051908115613c3f576020012090565b50506002548015613c4d5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b613c7a61364a565b8051908115613c8a576020012090565b50506003548015613c4d5790565b91929015613d135750815115613cac575090565b3b15613cb55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613d265750805190602001fd5b613d64906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906125dc565b0390fdfea26469706673582212208262d6f8b2a7c15d34b1a4ed38ec07a8955277b1ea7b0cb922051c9c819ebec064736f6c634300081e0033",
977
+ "bytecode": "0x60c03461015657601f612fcd38819003918201601f19168301916001600160401b0383118484101761015a57808492604094855283398101031261015657610052602061004b8361016e565b920161016e565b6080919091526001600160a01b031660a05260015460a881901c60ff166101015760ff808260a01c16036100be575b604051612e4a908161018382396080518181816115ad0152612833015260a05181818161028301528181610f46015281816111fe01526118440152f35b60ff60a01b191660ff60a01b1760015560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f610081565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101565756fe60806040526004361015610011575f80fd5b5f5f3560e01c8063078dfbe714611a4a578063086e0096146116fc578063132c1974146116a35780631e1bff3f146115d15780632d2c5565146115635780634e71e0c81461144a57806374ec29a0146113e25780637ae51ae61461138957806384b0196e1461122257806387be6d9a146111b45780638da5cb5b146111645780639f891baf14610e0b578063b2b6b37d14610dc3578063c4d66de8146106c7578063debfda301461065f578063e30c39781461060d578063e9ed9b6414610539578063ed9c1a63146101395763f54a8c74146100eb575f80fd5b34610136576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657602061012e61012936611fdc565b612485565b604051908152f35b80fd5b50346101365760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760043567ffffffffffffffff811161053557610189903690600401611e7b565b60243567ffffffffffffffff8111610531576101a9903690600401611d46565b9033835260666020526101c260ff604085205416612139565b73ffffffffffffffffffffffffffffffffffffffff81511690610203602082015193604083019384519560608501968751916101fd87612317565b9361256f565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff16602483015291929091602083806044810103818a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19283156105265787936104f5575b5060c0820190815173ffffffffffffffffffffffffffffffffffffffff169560e0840193845197610100820196875173ffffffffffffffffffffffffffffffffffffffff169961014084015173ffffffffffffffffffffffffffffffffffffffff1661016085015173ffffffffffffffffffffffffffffffffffffffff16610180860151926040519561034587611c71565b8652602086015260408501526060840152608083015273ffffffffffffffffffffffffffffffffffffffff169861037c818b612c6c565b998c806040518080967f28dc83070000000000000000000000000000000000000000000000000000000082528560048301916103b7926128ee565b038183865af19384156104e8576103d4946104c5575b5050612c6c565b978803978811610498576101200151871061047057917f01048b12598166af2e42f9614999fed68bf7d81bd79f54e5e981280e9953d59e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b9997519a51985116935116935116935194511694604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a180f35b6004897f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6104e0913d8091833e6104d88183611cba565b81019061288f565b508c5f6103cd565b50604051903d90823e3d90fd5b61051891935060203d60201161051f575b6105108183611cba565b81019061219e565b915f6102b3565b503d610506565b6040513d89823e3d90fd5b8280fd5b5080fd5b50346101365760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657610571611c1e565b7f4e02a7f757fbbef2d2fe055376819eccc93dfb1656c8be3b82ff406ccd2ab953602073ffffffffffffffffffffffffffffffffffffffff6105b1611c62565b936105c08287541633146120d4565b16928385526067825261060181604087209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519015158152a280f35b503461013657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760ff604060209273ffffffffffffffffffffffffffffffffffffffff6106b3611c1e565b168152606684522054166040519015158152f35b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610136576106ff611c1e565b60015460ff8160a81c161590818092610db3575b8015610d99575b15610d155781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155610cd2575b5060409182516107728482611cba565b601b81527f50656e646c652043726f737320436861696e205377617020487562000000000060208201528351906107a98583611cba565b600182527f310000000000000000000000000000000000000000000000000000000000000060208301526107ed60ff60015460a81c166107e881612bac565b612bac565b80519067ffffffffffffffff8211610ca557819061080c6004546129f3565b601f8111610bfa575b50602090601f8311600114610b3d578892610b32575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff8211610b055761087b6005546129f3565b601f8111610a64575b50602090601f831160011461098f5773ffffffffffffffffffffffffffffffffffffffff939291879183610984575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b84600255846003556108ff60ff60015460a81c16612bac565b167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835561092f575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f806108b3565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b818110610a4c575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410610a15575b505050811b016005556108e6565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080610a07565b929360206001819287860151815501950193016109db565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0019060208410610add575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b818110610ad25750610884565b878155600101610ac5565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09150610a9b565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f8061082b565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b818110610be25750908460019594939210610bab575b505050811b0160045561085e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080610b9d565b92936020600181928786015181550195019301610b87565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b019060208410610c7d575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b818110610c6f5750610815565b898155849350600101610c62565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9150610c34565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610762565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b15801561071a5750600160ff8260a01c161461071a565b50600160ff8260a01c1610610713565b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760406020916004358152606883522054604051908152f35b503461113f576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57610e4536611fdc565b6101243567ffffffffffffffff811161113f57610e66903690600401611d46565b90335f526066602052610e7f60ff60405f205416612139565b610f2c73ffffffffffffffffffffffffffffffffffffffff82511691610ebd602082015194604083019485519660608501978851916101fd87612485565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff16602483015291949093909190602090859081906044820190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1938415611134575f94611143575b5060c083019173ffffffffffffffffffffffffffffffffffffffff8084511695610fa8610100870197885190836127d8565b169373ffffffffffffffffffffffffffffffffffffffff87511660e073ffffffffffffffffffffffffffffffffffffffff865116920195865190803b1561113f576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611134576110d1575b509160e095939173ffffffffffffffffffffffffffffffffffffffff63ffffffff817f1f6c824b9ce67637dafcf1fe46e610a3f2d5325dfb923e49ea3724fcc3d6bba49a98965198519751169251169251169251935194604051968752602087015260408601526060850152608084015260a083015260c0820152a180f35b7f1f6c824b9ce67637dafcf1fe46e610a3f2d5325dfb923e49ea3724fcc3d6bba4979593919850916111075f60e0989694611cba565b73ffffffffffffffffffffffffffffffffffffffff63ffffffff815f9b9496989a50505050919395611052565b6040513d5f823e3d90fd5b5f80fd5b61115d91945060203d60201161051f576105108183611cba565b925f610f76565b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57600254158061137f575b15611321576112c561126a612a44565b611272612b17565b60206112d3604051926112858385611cba565b5f84525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e0870190611f99565b908582036040870152611f99565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b82811061130a57505050500390f35b8351855286955093810193928101926001016112fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b506003541561125a565b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f5761012e6113dd6020923690600401611e7b565b612317565b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5773ffffffffffffffffffffffffffffffffffffffff61142e611c1e565b165f526067602052602060ff60405f2054166040519015158152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760015473ffffffffffffffffffffffffffffffffffffffff811690813303611505577fffffffffffffffffffffffff000000000000000000000000000000000000000091825f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f5516600155005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461113f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57611608611c1e565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff611648611c62565b93611657825f541633146120d4565b1692835f52606682526116988160405f209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519015158152a2005b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f5761012e6116f76020923690600401611d8c565b6121ca565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f57611746903690600401611d8c565b60243567ffffffffffffffff811161113f5761176961182a913690600401611d46565b335f52606660205261178160ff60405f205416612139565b73ffffffffffffffffffffffffffffffffffffffff835116926117bc602082015192604083019586519460608501958651916101fd876121ca565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff166024830152909491929091602090869081906044820190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561113457611964955f92611a29575b5060c081019073ffffffffffffffffffffffffffffffffffffffff825116936118a9610100830195865190866127d8565b5f73ffffffffffffffffffffffffffffffffffffffff84511660e0840195865173ffffffffffffffffffffffffffffffffffffffff610140870151169561012081019661016073ffffffffffffffffffffffffffffffffffffffff895116920151926040519561191887611c71565b8652602086015260408501526060840152608083015260405180809c81947f28dc83070000000000000000000000000000000000000000000000000000000083523390600484016128ee565b039173ffffffffffffffffffffffffffffffffffffffff3491165af180156111345773ffffffffffffffffffffffffffffffffffffffff63ffffffff817facef3ed1c7a2a0c24a2358eefc33a76aa5476e79088c3c6c124af959eda5a9a39c6101009c8295611a0f575b50519a519951169351169351169351169351945195604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a1005b611a22903d805f833e6104d88183611cba565b508e6119ce565b611a4391925060203d60201161051f576105108183611cba565b9087611878565b3461113f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57611a81611c1e565b611a89611c62565b9060443591821515830361113f57611ab973ffffffffffffffffffffffffffffffffffffffff5f541633146120d4565b15611bd95773ffffffffffffffffffffffffffffffffffffffff1690811590811591611bd1575b5015611b73577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082611ae0565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361113f57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361113f57565b60243590811515820361113f57565b60a0810190811067ffffffffffffffff821117611c8d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c8d57604052565b359063ffffffff8216820361113f57565b67ffffffffffffffff8111611c8d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561113f57803590611d5d82611d0c565b92611d6b6040519485611cba565b8284526020838301011161113f57815f926020809301838601378301015290565b91906101808382031261113f5760405190610180820182811067ffffffffffffffff821117611c8d576040528193611dc381611c41565b8352602081013560208401526040810135604084015260608101356060840152611def60808201611c41565b6080840152611e0060a08201611cfb565b60a0840152611e1160c08201611c41565b60c084015260e081013560e0840152610100810135610100840152611e396101208201611c41565b610120840152611e4c6101408201611c41565b6101408401526101608101359167ffffffffffffffff831161113f5761016092611e769201611d46565b910152565b91906101a08382031261113f57604051906101a0820182811067ffffffffffffffff821117611c8d576040528193611eb281611c41565b8352602081013560208401526040810135604084015260608101356060840152611ede60808201611c41565b6080840152611eef60a08201611cfb565b60a0840152611f0060c08201611c41565b60c084015260e081013560e0840152611f1c6101008201611c41565b610100840152610120810135610120840152611f3b6101408201611c41565b610140840152611f4e6101608201611c41565b6101608401526101808101359167ffffffffffffffff831161113f5761018092611e769201611d46565b5f5b838110611f895750505f910152565b8181015183820152602001611f7a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093611fd581518092818752878088019101611f78565b0116010190565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc61012091011261113f5760405190610120820182811067ffffffffffffffff821117611c8d576040528160043573ffffffffffffffffffffffffffffffffffffffff8116810361113f57815260243560208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361113f57608082015260a43563ffffffff8116810361113f5760a082015260c43573ffffffffffffffffffffffffffffffffffffffff8116810361113f5760c082015260e43560e082015261010061010435910152565b156120db57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561214057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b9081602091031261113f575173ffffffffffffffffffffffffffffffffffffffff8116810361113f5790565b7f68f80ebccefcdd4dc467fe0093f5f7f118d5fb49412caea0de8bc4b31efd68406123149173ffffffffffffffffffffffffffffffffffffffff815116906020810151906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511663ffffffff60a08501511673ffffffffffffffffffffffffffffffffffffffff60c0860151169060e0860151926101008701519473ffffffffffffffffffffffffffffffffffffffff610120890151169661016073ffffffffffffffffffffffffffffffffffffffff6101408b01511699015160208151910120996040519b60208d019d8e5260408d015260608c015260808b015260a08a015260c089015260e08801526101008701526101208601526101408501526101608401526101808301526101a08201526101a0815261230c6101c082611cba565b519020612956565b90565b805173ffffffffffffffffffffffffffffffffffffffff166020820151916040810151906060810151608082015173ffffffffffffffffffffffffffffffffffffffff1660a083015163ffffffff1660c084015173ffffffffffffffffffffffffffffffffffffffff1660e08501519061010086015173ffffffffffffffffffffffffffffffffffffffff16926101208701519461014088015173ffffffffffffffffffffffffffffffffffffffff169661016089015173ffffffffffffffffffffffffffffffffffffffff1698610180015180519060200120996040519c8d9c60208e019e8f7f69a40aff578848e87ad6529c0be24c9a2581aa2e645bdacd2b5604d13d6893e490526040015260608d015260808c015260a08b015260c08a015260e08901526101008801526101208701526101408601526101608501526101808401526101a08301526101c08201526101c081526124796101e082611cba565b51902061231490612956565b6123149073ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511663ffffffff60a0840151169073ffffffffffffffffffffffffffffffffffffffff60c0850151169261010060e0860151950151956040519760208901997f0e5de6f195e160fe39e9f37b2b8754fccecf63edd9cd2e9d1a09832a8fba53f88b5260408a01526060890152608088015260a087015260c086015260e0850152610100840152610120830152610140820152610140815261230c61016082611cba565b909294919361257e8382612c37565b60058195929510156127ab57159384612788575b50831561267a575b505050156126525742101561262a57805f52606860205260405f2054600181018091116125fd5782036125d5575f52606860205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9350906126cb6126f785949360405192839160208301957f1626ba7e0000000000000000000000000000000000000000000000000000000087526024840152604060448401526064830190611f99565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611cba565b51915afa3d15612781573d61270b81611d0c565b906127196040519283611cba565b81523d5f602083013e5b81612773575b81612738575b505f808061259a565b905060208180518101031261113f57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f61272f565b905060208151101590612729565b6060612723565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f612592565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff1691823b1561113f576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015290921660248301526044820152905f9082908183816064810103925af18015611134576128835750565b5f61288d91611cba565b565b60208183031261113f5780519067ffffffffffffffff821161113f570181601f8201121561113f5780516128c281611d0c565b926128d06040519485611cba565b8184526020828401011161113f576123149160208085019101611f78565b9073ffffffffffffffffffffffffffffffffffffffff61294f60806020939695966040865283815116604087015284810151606087015283604082015116828701528360608201511660a0870152015160a060c086015260e0850190611f99565b9416910152565b604290612961612da3565b612969612dee565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526129ba60c082611cba565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b90600182811c92168015612a3a575b6020831014612a0d57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612a02565b604051905f8260045491612a57836129f3565b8083529260018116908115612ada5750600114612a7b575b61288d92500383611cba565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b818310612abe57505090602061288d92820101612a6f565b6020919350806001915483858901015201910190918492612aa6565b6020925061288d9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101612a6f565b604051905f8260055491612b2a836129f3565b8083529260018116908115612ada5750600114612b4d5761288d92500383611cba565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b818310612b9057505090602061288d92820101612a6f565b6020919350806001915483858901015201910190918492612b78565b15612bb357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9060418151145f14612c6357612c5f91602082015190606060408401519301515f1a90612d1b565b9091565b50505f90600290565b9073ffffffffffffffffffffffffffffffffffffffff1680612c8d57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115611134575f91612cec575090565b90506020813d602011612d13575b81612d0760209383611cba565b8101031261113f575190565b3d9150612cfa565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d98576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611134575f5173ffffffffffffffffffffffffffffffffffffffff811615612d9057905f90565b505f90600190565b505050505f90600390565b612dab612a44565b8051908115612dbb576020012090565b50506002548015612dc95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612df6612b17565b8051908115612e06576020012090565b50506003548015612dc9579056fea2646970667358221220910cfbdba7cea7d37a6ca4f1943d12ff0abf55b40dad0943187b500173708c1664736f6c634300081e0033",
978
+ "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f5f3560e01c8063078dfbe714611a4a578063086e0096146116fc578063132c1974146116a35780631e1bff3f146115d15780632d2c5565146115635780634e71e0c81461144a57806374ec29a0146113e25780637ae51ae61461138957806384b0196e1461122257806387be6d9a146111b45780638da5cb5b146111645780639f891baf14610e0b578063b2b6b37d14610dc3578063c4d66de8146106c7578063debfda301461065f578063e30c39781461060d578063e9ed9b6414610539578063ed9c1a63146101395763f54a8c74146100eb575f80fd5b34610136576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657602061012e61012936611fdc565b612485565b604051908152f35b80fd5b50346101365760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760043567ffffffffffffffff811161053557610189903690600401611e7b565b60243567ffffffffffffffff8111610531576101a9903690600401611d46565b9033835260666020526101c260ff604085205416612139565b73ffffffffffffffffffffffffffffffffffffffff81511690610203602082015193604083019384519560608501968751916101fd87612317565b9361256f565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff16602483015291929091602083806044810103818a73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19283156105265787936104f5575b5060c0820190815173ffffffffffffffffffffffffffffffffffffffff169560e0840193845197610100820196875173ffffffffffffffffffffffffffffffffffffffff169961014084015173ffffffffffffffffffffffffffffffffffffffff1661016085015173ffffffffffffffffffffffffffffffffffffffff16610180860151926040519561034587611c71565b8652602086015260408501526060840152608083015273ffffffffffffffffffffffffffffffffffffffff169861037c818b612c6c565b998c806040518080967f28dc83070000000000000000000000000000000000000000000000000000000082528560048301916103b7926128ee565b038183865af19384156104e8576103d4946104c5575b5050612c6c565b978803978811610498576101200151871061047057917f01048b12598166af2e42f9614999fed68bf7d81bd79f54e5e981280e9953d59e9795939173ffffffffffffffffffffffffffffffffffffffff8063ffffffff816101009b9997519a51985116935116935116935194511694604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a180f35b6004897f4af147aa000000000000000000000000000000000000000000000000000000008152fd5b60248a7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6104e0913d8091833e6104d88183611cba565b81019061288f565b508c5f6103cd565b50604051903d90823e3d90fd5b61051891935060203d60201161051f575b6105108183611cba565b81019061219e565b915f6102b3565b503d610506565b6040513d89823e3d90fd5b8280fd5b5080fd5b50346101365760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657610571611c1e565b7f4e02a7f757fbbef2d2fe055376819eccc93dfb1656c8be3b82ff406ccd2ab953602073ffffffffffffffffffffffffffffffffffffffff6105b1611c62565b936105c08287541633146120d4565b16928385526067825261060181604087209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519015158152a280f35b503461013657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013657602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760ff604060209273ffffffffffffffffffffffffffffffffffffffff6106b3611c1e565b168152606684522054166040519015158152f35b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610136576106ff611c1e565b60015460ff8160a81c161590818092610db3575b8015610d99575b15610d155781740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff831617600155610cd2575b5060409182516107728482611cba565b601b81527f50656e646c652043726f737320436861696e205377617020487562000000000060208201528351906107a98583611cba565b600182527f310000000000000000000000000000000000000000000000000000000000000060208301526107ed60ff60015460a81c166107e881612bac565b612bac565b80519067ffffffffffffffff8211610ca557819061080c6004546129f3565b601f8111610bfa575b50602090601f8311600114610b3d578892610b32575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176004555b80519067ffffffffffffffff8211610b055761087b6005546129f3565b601f8111610a64575b50602090601f831160011461098f5773ffffffffffffffffffffffffffffffffffffffff939291879183610984575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b84600255846003556108ff60ff60015460a81c16612bac565b167fffffffffffffffffffffffff000000000000000000000000000000000000000084541617835561092f575080f35b60207f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001555160018152a180f35b015190505f806108b3565b600587527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416885b818110610a4c575091600193918573ffffffffffffffffffffffffffffffffffffffff97969410610a15575b505050811b016005556108e6565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080610a07565b929360206001819287860151815501950193016109db565b60058752601f830160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0019060208410610add575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b818110610ad25750610884565b878155600101610ac5565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09150610a9b565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190505f8061082b565b600489527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016895b818110610be25750908460019594939210610bab575b505050811b0160045561085e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080610b9d565b92936020600181928786015181550195019301610b87565b90915060048852601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b019060208410610c7d575b90601f8493920160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905b818110610c6f5750610815565b898155849350600101610c62565b7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9150610c34565b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167501010000000000000000000000000000000000000000176001555f610762565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b15801561071a5750600160ff8260a01c161461071a565b50600160ff8260a01c1610610713565b50346101365760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760406020916004358152606883522054604051908152f35b503461113f576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57610e4536611fdc565b6101243567ffffffffffffffff811161113f57610e66903690600401611d46565b90335f526066602052610e7f60ff60405f205416612139565b610f2c73ffffffffffffffffffffffffffffffffffffffff82511691610ebd602082015194604083019485519660608501978851916101fd87612485565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff16602483015291949093909190602090859081906044820190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1938415611134575f94611143575b5060c083019173ffffffffffffffffffffffffffffffffffffffff8084511695610fa8610100870197885190836127d8565b169373ffffffffffffffffffffffffffffffffffffffff87511660e073ffffffffffffffffffffffffffffffffffffffff865116920195865190803b1561113f576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015293909216602484015260448301525f908290606490829084905af18015611134576110d1575b509160e095939173ffffffffffffffffffffffffffffffffffffffff63ffffffff817f1f6c824b9ce67637dafcf1fe46e610a3f2d5325dfb923e49ea3724fcc3d6bba49a98965198519751169251169251169251935194604051968752602087015260408601526060850152608084015260a083015260c0820152a180f35b7f1f6c824b9ce67637dafcf1fe46e610a3f2d5325dfb923e49ea3724fcc3d6bba4979593919850916111075f60e0989694611cba565b73ffffffffffffffffffffffffffffffffffffffff63ffffffff815f9b9496989a50505050919395611052565b6040513d5f823e3d90fd5b5f80fd5b61115d91945060203d60201161051f576105108183611cba565b925f610f76565b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57600254158061137f575b15611321576112c561126a612a44565b611272612b17565b60206112d3604051926112858385611cba565b5f84525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e0870190611f99565b908582036040870152611f99565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b82811061130a57505050500390f35b8351855286955093810193928101926001016112fb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b506003541561125a565b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f5761012e6113dd6020923690600401611e7b565b612317565b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5773ffffffffffffffffffffffffffffffffffffffff61142e611c1e565b165f526067602052602060ff60405f2054166040519015158152f35b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760015473ffffffffffffffffffffffffffffffffffffffff811690813303611505577fffffffffffffffffffffffff000000000000000000000000000000000000000091825f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f5516600155005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b3461113f575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461113f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57611608611c1e565b7f827c394aebf0fcbf2d4f5c0107a0031a3860ec0d5e06756e03aacccfb8d2836e602073ffffffffffffffffffffffffffffffffffffffff611648611c62565b93611657825f541633146120d4565b1692835f52606682526116988160405f209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519015158152a2005b3461113f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f5761012e6116f76020923690600401611d8c565b6121ca565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f5760043567ffffffffffffffff811161113f57611746903690600401611d8c565b60243567ffffffffffffffff811161113f5761176961182a913690600401611d46565b335f52606660205261178160ff60405f205416612139565b73ffffffffffffffffffffffffffffffffffffffff835116926117bc602082015192604083019586519460608501958651916101fd876121ca565b60808101805160a0830180516040517f7f6bc3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909316600484015263ffffffff166024830152909491929091602090869081906044820190565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190811561113457611964955f92611a29575b5060c081019073ffffffffffffffffffffffffffffffffffffffff825116936118a9610100830195865190866127d8565b5f73ffffffffffffffffffffffffffffffffffffffff84511660e0840195865173ffffffffffffffffffffffffffffffffffffffff610140870151169561012081019661016073ffffffffffffffffffffffffffffffffffffffff895116920151926040519561191887611c71565b8652602086015260408501526060840152608083015260405180809c81947f28dc83070000000000000000000000000000000000000000000000000000000083523390600484016128ee565b039173ffffffffffffffffffffffffffffffffffffffff3491165af180156111345773ffffffffffffffffffffffffffffffffffffffff63ffffffff817facef3ed1c7a2a0c24a2358eefc33a76aa5476e79088c3c6c124af959eda5a9a39c6101009c8295611a0f575b50519a519951169351169351169351169351945195604051978852602088015260408701526060860152608085015260a084015260c083015260e0820152a1005b611a22903d805f833e6104d88183611cba565b508e6119ce565b611a4391925060203d60201161051f576105108183611cba565b9087611878565b3461113f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261113f57611a81611c1e565b611a89611c62565b9060443591821515830361113f57611ab973ffffffffffffffffffffffffffffffffffffffff5f541633146120d4565b15611bd95773ffffffffffffffffffffffffffffffffffffffff1690811590811591611bd1575b5015611b73577fffffffffffffffffffffffff00000000000000000000000000000000000000005f548273ffffffffffffffffffffffffffffffffffffffff82167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a316175f55600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b905082611ae0565b73ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361113f57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361113f57565b60243590811515820361113f57565b60a0810190811067ffffffffffffffff821117611c8d57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611c8d57604052565b359063ffffffff8216820361113f57565b67ffffffffffffffff8111611c8d57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561113f57803590611d5d82611d0c565b92611d6b6040519485611cba565b8284526020838301011161113f57815f926020809301838601378301015290565b91906101808382031261113f5760405190610180820182811067ffffffffffffffff821117611c8d576040528193611dc381611c41565b8352602081013560208401526040810135604084015260608101356060840152611def60808201611c41565b6080840152611e0060a08201611cfb565b60a0840152611e1160c08201611c41565b60c084015260e081013560e0840152610100810135610100840152611e396101208201611c41565b610120840152611e4c6101408201611c41565b6101408401526101608101359167ffffffffffffffff831161113f5761016092611e769201611d46565b910152565b91906101a08382031261113f57604051906101a0820182811067ffffffffffffffff821117611c8d576040528193611eb281611c41565b8352602081013560208401526040810135604084015260608101356060840152611ede60808201611c41565b6080840152611eef60a08201611cfb565b60a0840152611f0060c08201611c41565b60c084015260e081013560e0840152611f1c6101008201611c41565b610100840152610120810135610120840152611f3b6101408201611c41565b610140840152611f4e6101608201611c41565b6101608401526101808101359167ffffffffffffffff831161113f5761018092611e769201611d46565b5f5b838110611f895750505f910152565b8181015183820152602001611f7a565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093611fd581518092818752878088019101611f78565b0116010190565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc61012091011261113f5760405190610120820182811067ffffffffffffffff821117611c8d576040528160043573ffffffffffffffffffffffffffffffffffffffff8116810361113f57815260243560208201526044356040820152606435606082015260843573ffffffffffffffffffffffffffffffffffffffff8116810361113f57608082015260a43563ffffffff8116810361113f5760a082015260c43573ffffffffffffffffffffffffffffffffffffffff8116810361113f5760c082015260e43560e082015261010061010435910152565b156120db57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b1561214057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f537761704875623a2063616c6c6572206973206e6f74206578656375746f72006044820152fd5b9081602091031261113f575173ffffffffffffffffffffffffffffffffffffffff8116810361113f5790565b7f68f80ebccefcdd4dc467fe0093f5f7f118d5fb49412caea0de8bc4b31efd68406123149173ffffffffffffffffffffffffffffffffffffffff815116906020810151906040810151606082015173ffffffffffffffffffffffffffffffffffffffff60808401511663ffffffff60a08501511673ffffffffffffffffffffffffffffffffffffffff60c0860151169060e0860151926101008701519473ffffffffffffffffffffffffffffffffffffffff610120890151169661016073ffffffffffffffffffffffffffffffffffffffff6101408b01511699015160208151910120996040519b60208d019d8e5260408d015260608c015260808b015260a08a015260c089015260e08801526101008701526101208601526101408501526101608401526101808301526101a08201526101a0815261230c6101c082611cba565b519020612956565b90565b805173ffffffffffffffffffffffffffffffffffffffff166020820151916040810151906060810151608082015173ffffffffffffffffffffffffffffffffffffffff1660a083015163ffffffff1660c084015173ffffffffffffffffffffffffffffffffffffffff1660e08501519061010086015173ffffffffffffffffffffffffffffffffffffffff16926101208701519461014088015173ffffffffffffffffffffffffffffffffffffffff169661016089015173ffffffffffffffffffffffffffffffffffffffff1698610180015180519060200120996040519c8d9c60208e019e8f7f69a40aff578848e87ad6529c0be24c9a2581aa2e645bdacd2b5604d13d6893e490526040015260608d015260808c015260a08b015260c08a015260e08901526101008801526101208701526101408601526101608501526101808401526101a08301526101c08201526101c081526124796101e082611cba565b51902061231490612956565b6123149073ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015190606081015173ffffffffffffffffffffffffffffffffffffffff60808301511663ffffffff60a0840151169073ffffffffffffffffffffffffffffffffffffffff60c0850151169261010060e0860151950151956040519760208901997f0e5de6f195e160fe39e9f37b2b8754fccecf63edd9cd2e9d1a09832a8fba53f88b5260408a01526060890152608088015260a087015260c086015260e0850152610100840152610120830152610140820152610140815261230c61016082611cba565b909294919361257e8382612c37565b60058195929510156127ab57159384612788575b50831561267a575b505050156126525742101561262a57805f52606860205260405f2054600181018091116125fd5782036125d5575f52606860205260405f2055565b7f756688fe000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7ff753ba40000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9350906126cb6126f785949360405192839160208301957f1626ba7e0000000000000000000000000000000000000000000000000000000087526024840152604060448401526064830190611f99565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611cba565b51915afa3d15612781573d61270b81611d0c565b906127196040519283611cba565b81523d5f602083013e5b81612773575b81612738575b505f808061259a565b905060208180518101031261113f57602001517f1626ba7e00000000000000000000000000000000000000000000000000000000145f61272f565b905060208151101590612729565b6060612723565b73ffffffffffffffffffffffffffffffffffffffff84811691161493505f612592565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff1691823b1561113f576040517fc3b35a7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015290921660248301526044820152905f9082908183816064810103925af18015611134576128835750565b5f61288d91611cba565b565b60208183031261113f5780519067ffffffffffffffff821161113f570181601f8201121561113f5780516128c281611d0c565b926128d06040519485611cba565b8184526020828401011161113f576123149160208085019101611f78565b9073ffffffffffffffffffffffffffffffffffffffff61294f60806020939695966040865283815116604087015284810151606087015283604082015116828701528360608201511660a0870152015160a060c086015260e0850190611f99565b9416910152565b604290612961612da3565b612969612dee565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526129ba60c082611cba565b51902090604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b90600182811c92168015612a3a575b6020831014612a0d57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691612a02565b604051905f8260045491612a57836129f3565b8083529260018116908115612ada5750600114612a7b575b61288d92500383611cba565b5060045f90815290917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b818310612abe57505090602061288d92820101612a6f565b6020919350806001915483858901015201910190918492612aa6565b6020925061288d9491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101612a6f565b604051905f8260055491612b2a836129f3565b8083529260018116908115612ada5750600114612b4d5761288d92500383611cba565b5060055f90815290917f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b818310612b9057505090602061288d92820101612a6f565b6020919350806001915483858901015201910190918492612b78565b15612bb357565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b9060418151145f14612c6357612c5f91602082015190606060408401519301515f1a90612d1b565b9091565b50505f90600290565b9073ffffffffffffffffffffffffffffffffffffffff1680612c8d57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115611134575f91612cec575090565b90506020813d602011612d13575b81612d0760209383611cba565b8101031261113f575190565b3d9150612cfa565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612d98576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15611134575f5173ffffffffffffffffffffffffffffffffffffffff811615612d9057905f90565b505f90600190565b505050505f90600390565b612dab612a44565b8051908115612dbb576020012090565b50506002548015612dc95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612df6612b17565b8051908115612e06576020012090565b50506003548015612dc9579056fea2646970667358221220910cfbdba7cea7d37a6ca4f1943d12ff0abf55b40dad0943187b500173708c1664736f6c634300081e0033",
1212
979
  "linkReferences": {},
1213
980
  "deployedLinkReferences": {}
1214
981
  }