@bananapus/suckers-v6 0.0.1

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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +422 -0
  3. package/SECURITY.md +55 -0
  4. package/SKILLS.md +163 -0
  5. package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSucker.json +1425 -0
  6. package/deployments/nana-suckers-v5/arbitrum/JBArbitrumSuckerDeployer.json +391 -0
  7. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker.json +1479 -0
  8. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer.json +433 -0
  9. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_1.json +433 -0
  10. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSuckerDeployer_2.json +433 -0
  11. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_1.json +1479 -0
  12. package/deployments/nana-suckers-v5/arbitrum/JBCCIPSucker_2.json +1479 -0
  13. package/deployments/nana-suckers-v5/arbitrum/JBSuckerRegistry.json +690 -0
  14. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSucker.json +1425 -0
  15. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBArbitrumSuckerDeployer.json +391 -0
  16. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker.json +1479 -0
  17. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer.json +433 -0
  18. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_1.json +433 -0
  19. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSuckerDeployer_2.json +433 -0
  20. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_1.json +1479 -0
  21. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBCCIPSucker_2.json +1479 -0
  22. package/deployments/nana-suckers-v5/arbitrum_sepolia/JBSuckerRegistry.json +690 -0
  23. package/deployments/nana-suckers-v5/base/JBBaseSucker.json +1389 -0
  24. package/deployments/nana-suckers-v5/base/JBBaseSuckerDeployer.json +376 -0
  25. package/deployments/nana-suckers-v5/base/JBCCIPSucker.json +1483 -0
  26. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer.json +436 -0
  27. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_1.json +436 -0
  28. package/deployments/nana-suckers-v5/base/JBCCIPSuckerDeployer_2.json +436 -0
  29. package/deployments/nana-suckers-v5/base/JBCCIPSucker_1.json +1483 -0
  30. package/deployments/nana-suckers-v5/base/JBCCIPSucker_2.json +1483 -0
  31. package/deployments/nana-suckers-v5/base/JBSuckerRegistry.json +694 -0
  32. package/deployments/nana-suckers-v5/base_sepolia/JBBaseSucker.json +1389 -0
  33. package/deployments/nana-suckers-v5/base_sepolia/JBBaseSuckerDeployer.json +376 -0
  34. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker.json +1483 -0
  35. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer.json +436 -0
  36. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  37. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  38. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_1.json +1483 -0
  39. package/deployments/nana-suckers-v5/base_sepolia/JBCCIPSucker_2.json +1483 -0
  40. package/deployments/nana-suckers-v5/base_sepolia/JBSuckerRegistry.json +694 -0
  41. package/deployments/nana-suckers-v5/ethereum/JBArbitrumSucker.json +1429 -0
  42. package/deployments/nana-suckers-v5/ethereum/JBArbitrumSuckerDeployer.json +394 -0
  43. package/deployments/nana-suckers-v5/ethereum/JBBaseSucker.json +1389 -0
  44. package/deployments/nana-suckers-v5/ethereum/JBBaseSuckerDeployer.json +376 -0
  45. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker.json +1483 -0
  46. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer.json +436 -0
  47. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_1.json +436 -0
  48. package/deployments/nana-suckers-v5/ethereum/JBCCIPSuckerDeployer_2.json +436 -0
  49. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_1.json +1483 -0
  50. package/deployments/nana-suckers-v5/ethereum/JBCCIPSucker_2.json +1483 -0
  51. package/deployments/nana-suckers-v5/ethereum/JBOptimismSucker.json +1389 -0
  52. package/deployments/nana-suckers-v5/ethereum/JBOptimismSuckerDeployer.json +376 -0
  53. package/deployments/nana-suckers-v5/ethereum/JBSuckerRegistry.json +694 -0
  54. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker.json +1479 -0
  55. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer.json +433 -0
  56. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_1.json +433 -0
  57. package/deployments/nana-suckers-v5/optimism/JBCCIPSuckerDeployer_2.json +433 -0
  58. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_1.json +1479 -0
  59. package/deployments/nana-suckers-v5/optimism/JBCCIPSucker_2.json +1479 -0
  60. package/deployments/nana-suckers-v5/optimism/JBOptimismSucker.json +1385 -0
  61. package/deployments/nana-suckers-v5/optimism/JBOptimismSuckerDeployer.json +373 -0
  62. package/deployments/nana-suckers-v5/optimism/JBSuckerRegistry.json +690 -0
  63. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker.json +1483 -0
  64. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer.json +436 -0
  65. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  66. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  67. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_1.json +1483 -0
  68. package/deployments/nana-suckers-v5/optimism_sepolia/JBCCIPSucker_2.json +1483 -0
  69. package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSucker.json +1389 -0
  70. package/deployments/nana-suckers-v5/optimism_sepolia/JBOptimismSuckerDeployer.json +376 -0
  71. package/deployments/nana-suckers-v5/optimism_sepolia/JBSuckerRegistry.json +694 -0
  72. package/deployments/nana-suckers-v5/sepolia/JBArbitrumSucker.json +1429 -0
  73. package/deployments/nana-suckers-v5/sepolia/JBArbitrumSuckerDeployer.json +394 -0
  74. package/deployments/nana-suckers-v5/sepolia/JBBaseSucker.json +1389 -0
  75. package/deployments/nana-suckers-v5/sepolia/JBBaseSuckerDeployer.json +376 -0
  76. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker.json +1483 -0
  77. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer.json +436 -0
  78. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_1.json +436 -0
  79. package/deployments/nana-suckers-v5/sepolia/JBCCIPSuckerDeployer_2.json +436 -0
  80. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_1.json +1483 -0
  81. package/deployments/nana-suckers-v5/sepolia/JBCCIPSucker_2.json +1483 -0
  82. package/deployments/nana-suckers-v5/sepolia/JBOptimismSucker.json +1389 -0
  83. package/deployments/nana-suckers-v5/sepolia/JBOptimismSuckerDeployer.json +376 -0
  84. package/deployments/nana-suckers-v5/sepolia/JBSuckerRegistry.json +694 -0
  85. package/foundry.lock +11 -0
  86. package/foundry.toml +22 -0
  87. package/package.json +33 -0
  88. package/remappings.txt +1 -0
  89. package/script/Deploy.s.sol +506 -0
  90. package/script/helpers/SuckerDeploymentLib.sol +97 -0
  91. package/slither-ci.config.json +10 -0
  92. package/sphinx.lock +476 -0
  93. package/src/JBArbitrumSucker.sol +311 -0
  94. package/src/JBBaseSucker.sol +41 -0
  95. package/src/JBCCIPSucker.sol +303 -0
  96. package/src/JBOptimismSucker.sol +143 -0
  97. package/src/JBSucker.sol +1159 -0
  98. package/src/JBSuckerRegistry.sol +262 -0
  99. package/src/deployers/JBArbitrumSuckerDeployer.sol +86 -0
  100. package/src/deployers/JBBaseSuckerDeployer.sol +26 -0
  101. package/src/deployers/JBCCIPSuckerDeployer.sol +88 -0
  102. package/src/deployers/JBOptimismSuckerDeployer.sol +82 -0
  103. package/src/deployers/JBSuckerDeployer.sol +147 -0
  104. package/src/enums/JBAddToBalanceMode.sol +11 -0
  105. package/src/enums/JBLayer.sol +8 -0
  106. package/src/enums/JBSuckerState.sol +14 -0
  107. package/src/interfaces/IArbGatewayRouter.sol +11 -0
  108. package/src/interfaces/IArbL1GatewayRouter.sol +17 -0
  109. package/src/interfaces/IArbL2GatewayRouter.sol +14 -0
  110. package/src/interfaces/ICCIPRouter.sol +11 -0
  111. package/src/interfaces/IJBArbitrumSucker.sol +13 -0
  112. package/src/interfaces/IJBArbitrumSuckerDeployer.sol +12 -0
  113. package/src/interfaces/IJBCCIPSuckerDeployer.sol +15 -0
  114. package/src/interfaces/IJBOpSuckerDeployer.sol +11 -0
  115. package/src/interfaces/IJBOptimismSucker.sol +10 -0
  116. package/src/interfaces/IJBSucker.sol +144 -0
  117. package/src/interfaces/IJBSuckerDeployer.sol +40 -0
  118. package/src/interfaces/IJBSuckerExtended.sol +22 -0
  119. package/src/interfaces/IJBSuckerRegistry.sol +75 -0
  120. package/src/interfaces/IOPMessenger.sol +18 -0
  121. package/src/interfaces/IOPStandardBridge.sol +29 -0
  122. package/src/interfaces/IWrappedNativeToken.sol +13 -0
  123. package/src/libraries/ARBAddresses.sol +17 -0
  124. package/src/libraries/ARBChains.sol +11 -0
  125. package/src/libraries/CCIPHelper.sol +136 -0
  126. package/src/structs/JBClaim.sol +13 -0
  127. package/src/structs/JBInboxTreeRoot.sol +12 -0
  128. package/src/structs/JBLeaf.sol +14 -0
  129. package/src/structs/JBMessageRoot.sol +16 -0
  130. package/src/structs/JBOutboxTree.sol +18 -0
  131. package/src/structs/JBRemoteToken.sol +17 -0
  132. package/src/structs/JBSuckerDeployerConfig.sol +12 -0
  133. package/src/structs/JBSuckersPair.sol +11 -0
  134. package/src/structs/JBTokenMapping.sol +13 -0
  135. package/src/utils/MerkleLib.sol +1020 -0
  136. package/test/Fork.t.sol +514 -0
  137. package/test/InteropCompat.t.sol +676 -0
  138. package/test/SuckerAttacks.t.sol +509 -0
  139. package/test/SuckerDeepAttacks.t.sol +1563 -0
  140. package/test/mocks/ERC20Mock.sol +36 -0
  141. package/test/mocks/MockMessenger.sol +42 -0
  142. package/test/unit/arb.t.sol +28 -0
  143. package/test/unit/ccip_native_interop.t.sol +719 -0
  144. package/test/unit/ccip_refund.t.sol +234 -0
  145. package/test/unit/deployer.t.sol +475 -0
  146. package/test/unit/emergency.t.sol +305 -0
  147. package/test/unit/merkle.t.sol +212 -0
  148. package/test/unit/multi_chain_evolution.t.sol +622 -0
  149. package/test/unit/registry.t.sol +26 -0
@@ -0,0 +1,1429 @@
1
+ {
2
+ "format": "sphinx-sol-ct-artifact-1",
3
+ "merkleRoot": "0xea14d6a9e0023ebdee52ff89f225fbcdab73dd659d2b605adb5e65271611064f",
4
+ "address": "0xfb63658838ccb6ff40733e2688b3e73298bcdecf",
5
+ "sourceName": "src/JBArbitrumSucker.sol",
6
+ "contractName": "JBArbitrumSucker",
7
+ "chainId": "0x1",
8
+ "abi": [
9
+ {
10
+ "inputs": [
11
+ {
12
+ "internalType": "contract JBArbitrumSuckerDeployer",
13
+ "name": "deployer",
14
+ "type": "address"
15
+ },
16
+ {
17
+ "internalType": "contract IJBDirectory",
18
+ "name": "directory",
19
+ "type": "address"
20
+ },
21
+ {
22
+ "internalType": "contract IJBPermissions",
23
+ "name": "permissions",
24
+ "type": "address"
25
+ },
26
+ {
27
+ "internalType": "contract IJBTokens",
28
+ "name": "tokens",
29
+ "type": "address"
30
+ },
31
+ {
32
+ "internalType": "enum JBAddToBalanceMode",
33
+ "name": "addToBalanceMode",
34
+ "type": "uint8"
35
+ },
36
+ {
37
+ "internalType": "address",
38
+ "name": "trusted_forwarder",
39
+ "type": "address"
40
+ }
41
+ ],
42
+ "stateMutability": "nonpayable",
43
+ "type": "constructor"
44
+ },
45
+ {
46
+ "stateMutability": "payable",
47
+ "type": "receive"
48
+ },
49
+ {
50
+ "inputs": [],
51
+ "name": "ADD_TO_BALANCE_MODE",
52
+ "outputs": [
53
+ {
54
+ "internalType": "enum JBAddToBalanceMode",
55
+ "name": "",
56
+ "type": "uint8"
57
+ }
58
+ ],
59
+ "stateMutability": "view",
60
+ "type": "function"
61
+ },
62
+ {
63
+ "inputs": [],
64
+ "name": "ARBINBOX",
65
+ "outputs": [
66
+ {
67
+ "internalType": "contract IInbox",
68
+ "name": "",
69
+ "type": "address"
70
+ }
71
+ ],
72
+ "stateMutability": "view",
73
+ "type": "function"
74
+ },
75
+ {
76
+ "inputs": [],
77
+ "name": "DIRECTORY",
78
+ "outputs": [
79
+ {
80
+ "internalType": "contract IJBDirectory",
81
+ "name": "",
82
+ "type": "address"
83
+ }
84
+ ],
85
+ "stateMutability": "view",
86
+ "type": "function"
87
+ },
88
+ {
89
+ "inputs": [],
90
+ "name": "GATEWAYROUTER",
91
+ "outputs": [
92
+ {
93
+ "internalType": "contract IArbGatewayRouter",
94
+ "name": "",
95
+ "type": "address"
96
+ }
97
+ ],
98
+ "stateMutability": "view",
99
+ "type": "function"
100
+ },
101
+ {
102
+ "inputs": [],
103
+ "name": "LAYER",
104
+ "outputs": [
105
+ {
106
+ "internalType": "enum JBLayer",
107
+ "name": "",
108
+ "type": "uint8"
109
+ }
110
+ ],
111
+ "stateMutability": "view",
112
+ "type": "function"
113
+ },
114
+ {
115
+ "inputs": [],
116
+ "name": "MESSENGER_BASE_GAS_LIMIT",
117
+ "outputs": [
118
+ {
119
+ "internalType": "uint32",
120
+ "name": "",
121
+ "type": "uint32"
122
+ }
123
+ ],
124
+ "stateMutability": "view",
125
+ "type": "function"
126
+ },
127
+ {
128
+ "inputs": [],
129
+ "name": "MESSENGER_ERC20_MIN_GAS_LIMIT",
130
+ "outputs": [
131
+ {
132
+ "internalType": "uint32",
133
+ "name": "",
134
+ "type": "uint32"
135
+ }
136
+ ],
137
+ "stateMutability": "view",
138
+ "type": "function"
139
+ },
140
+ {
141
+ "inputs": [],
142
+ "name": "PERMISSIONS",
143
+ "outputs": [
144
+ {
145
+ "internalType": "contract IJBPermissions",
146
+ "name": "",
147
+ "type": "address"
148
+ }
149
+ ],
150
+ "stateMutability": "view",
151
+ "type": "function"
152
+ },
153
+ {
154
+ "inputs": [],
155
+ "name": "TOKENS",
156
+ "outputs": [
157
+ {
158
+ "internalType": "contract IJBTokens",
159
+ "name": "",
160
+ "type": "address"
161
+ }
162
+ ],
163
+ "stateMutability": "view",
164
+ "type": "function"
165
+ },
166
+ {
167
+ "inputs": [
168
+ {
169
+ "internalType": "address",
170
+ "name": "token",
171
+ "type": "address"
172
+ }
173
+ ],
174
+ "name": "addOutstandingAmountToBalance",
175
+ "outputs": [],
176
+ "stateMutability": "nonpayable",
177
+ "type": "function"
178
+ },
179
+ {
180
+ "inputs": [
181
+ {
182
+ "internalType": "address",
183
+ "name": "token",
184
+ "type": "address"
185
+ }
186
+ ],
187
+ "name": "amountToAddToBalanceOf",
188
+ "outputs": [
189
+ {
190
+ "internalType": "uint256",
191
+ "name": "",
192
+ "type": "uint256"
193
+ }
194
+ ],
195
+ "stateMutability": "view",
196
+ "type": "function"
197
+ },
198
+ {
199
+ "inputs": [
200
+ {
201
+ "components": [
202
+ {
203
+ "internalType": "address",
204
+ "name": "token",
205
+ "type": "address"
206
+ },
207
+ {
208
+ "components": [
209
+ {
210
+ "internalType": "uint256",
211
+ "name": "index",
212
+ "type": "uint256"
213
+ },
214
+ {
215
+ "internalType": "address",
216
+ "name": "beneficiary",
217
+ "type": "address"
218
+ },
219
+ {
220
+ "internalType": "uint256",
221
+ "name": "projectTokenCount",
222
+ "type": "uint256"
223
+ },
224
+ {
225
+ "internalType": "uint256",
226
+ "name": "terminalTokenAmount",
227
+ "type": "uint256"
228
+ }
229
+ ],
230
+ "internalType": "struct JBLeaf",
231
+ "name": "leaf",
232
+ "type": "tuple"
233
+ },
234
+ {
235
+ "internalType": "bytes32[32]",
236
+ "name": "proof",
237
+ "type": "bytes32[32]"
238
+ }
239
+ ],
240
+ "internalType": "struct JBClaim",
241
+ "name": "claimData",
242
+ "type": "tuple"
243
+ }
244
+ ],
245
+ "name": "claim",
246
+ "outputs": [],
247
+ "stateMutability": "nonpayable",
248
+ "type": "function"
249
+ },
250
+ {
251
+ "inputs": [
252
+ {
253
+ "components": [
254
+ {
255
+ "internalType": "address",
256
+ "name": "token",
257
+ "type": "address"
258
+ },
259
+ {
260
+ "components": [
261
+ {
262
+ "internalType": "uint256",
263
+ "name": "index",
264
+ "type": "uint256"
265
+ },
266
+ {
267
+ "internalType": "address",
268
+ "name": "beneficiary",
269
+ "type": "address"
270
+ },
271
+ {
272
+ "internalType": "uint256",
273
+ "name": "projectTokenCount",
274
+ "type": "uint256"
275
+ },
276
+ {
277
+ "internalType": "uint256",
278
+ "name": "terminalTokenAmount",
279
+ "type": "uint256"
280
+ }
281
+ ],
282
+ "internalType": "struct JBLeaf",
283
+ "name": "leaf",
284
+ "type": "tuple"
285
+ },
286
+ {
287
+ "internalType": "bytes32[32]",
288
+ "name": "proof",
289
+ "type": "bytes32[32]"
290
+ }
291
+ ],
292
+ "internalType": "struct JBClaim[]",
293
+ "name": "claims",
294
+ "type": "tuple[]"
295
+ }
296
+ ],
297
+ "name": "claim",
298
+ "outputs": [],
299
+ "stateMutability": "nonpayable",
300
+ "type": "function"
301
+ },
302
+ {
303
+ "inputs": [],
304
+ "name": "deployer",
305
+ "outputs": [
306
+ {
307
+ "internalType": "address",
308
+ "name": "",
309
+ "type": "address"
310
+ }
311
+ ],
312
+ "stateMutability": "view",
313
+ "type": "function"
314
+ },
315
+ {
316
+ "inputs": [
317
+ {
318
+ "internalType": "address[]",
319
+ "name": "tokens",
320
+ "type": "address[]"
321
+ }
322
+ ],
323
+ "name": "enableEmergencyHatchFor",
324
+ "outputs": [],
325
+ "stateMutability": "nonpayable",
326
+ "type": "function"
327
+ },
328
+ {
329
+ "inputs": [
330
+ {
331
+ "components": [
332
+ {
333
+ "internalType": "address",
334
+ "name": "token",
335
+ "type": "address"
336
+ },
337
+ {
338
+ "components": [
339
+ {
340
+ "internalType": "uint256",
341
+ "name": "index",
342
+ "type": "uint256"
343
+ },
344
+ {
345
+ "internalType": "address",
346
+ "name": "beneficiary",
347
+ "type": "address"
348
+ },
349
+ {
350
+ "internalType": "uint256",
351
+ "name": "projectTokenCount",
352
+ "type": "uint256"
353
+ },
354
+ {
355
+ "internalType": "uint256",
356
+ "name": "terminalTokenAmount",
357
+ "type": "uint256"
358
+ }
359
+ ],
360
+ "internalType": "struct JBLeaf",
361
+ "name": "leaf",
362
+ "type": "tuple"
363
+ },
364
+ {
365
+ "internalType": "bytes32[32]",
366
+ "name": "proof",
367
+ "type": "bytes32[32]"
368
+ }
369
+ ],
370
+ "internalType": "struct JBClaim",
371
+ "name": "claimData",
372
+ "type": "tuple"
373
+ }
374
+ ],
375
+ "name": "exitThroughEmergencyHatch",
376
+ "outputs": [],
377
+ "stateMutability": "nonpayable",
378
+ "type": "function"
379
+ },
380
+ {
381
+ "inputs": [
382
+ {
383
+ "components": [
384
+ {
385
+ "internalType": "address",
386
+ "name": "token",
387
+ "type": "address"
388
+ },
389
+ {
390
+ "internalType": "uint256",
391
+ "name": "amount",
392
+ "type": "uint256"
393
+ },
394
+ {
395
+ "components": [
396
+ {
397
+ "internalType": "uint64",
398
+ "name": "nonce",
399
+ "type": "uint64"
400
+ },
401
+ {
402
+ "internalType": "bytes32",
403
+ "name": "root",
404
+ "type": "bytes32"
405
+ }
406
+ ],
407
+ "internalType": "struct JBInboxTreeRoot",
408
+ "name": "remoteRoot",
409
+ "type": "tuple"
410
+ }
411
+ ],
412
+ "internalType": "struct JBMessageRoot",
413
+ "name": "root",
414
+ "type": "tuple"
415
+ }
416
+ ],
417
+ "name": "fromRemote",
418
+ "outputs": [],
419
+ "stateMutability": "payable",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [
424
+ {
425
+ "internalType": "address",
426
+ "name": "token",
427
+ "type": "address"
428
+ }
429
+ ],
430
+ "name": "inboxOf",
431
+ "outputs": [
432
+ {
433
+ "components": [
434
+ {
435
+ "internalType": "uint64",
436
+ "name": "nonce",
437
+ "type": "uint64"
438
+ },
439
+ {
440
+ "internalType": "bytes32",
441
+ "name": "root",
442
+ "type": "bytes32"
443
+ }
444
+ ],
445
+ "internalType": "struct JBInboxTreeRoot",
446
+ "name": "",
447
+ "type": "tuple"
448
+ }
449
+ ],
450
+ "stateMutability": "view",
451
+ "type": "function"
452
+ },
453
+ {
454
+ "inputs": [
455
+ {
456
+ "internalType": "uint256",
457
+ "name": "_projectId",
458
+ "type": "uint256"
459
+ }
460
+ ],
461
+ "name": "initialize",
462
+ "outputs": [],
463
+ "stateMutability": "nonpayable",
464
+ "type": "function"
465
+ },
466
+ {
467
+ "inputs": [
468
+ {
469
+ "internalType": "address",
470
+ "name": "token",
471
+ "type": "address"
472
+ }
473
+ ],
474
+ "name": "isMapped",
475
+ "outputs": [
476
+ {
477
+ "internalType": "bool",
478
+ "name": "",
479
+ "type": "bool"
480
+ }
481
+ ],
482
+ "stateMutability": "view",
483
+ "type": "function"
484
+ },
485
+ {
486
+ "inputs": [
487
+ {
488
+ "internalType": "address",
489
+ "name": "forwarder",
490
+ "type": "address"
491
+ }
492
+ ],
493
+ "name": "isTrustedForwarder",
494
+ "outputs": [
495
+ {
496
+ "internalType": "bool",
497
+ "name": "",
498
+ "type": "bool"
499
+ }
500
+ ],
501
+ "stateMutability": "view",
502
+ "type": "function"
503
+ },
504
+ {
505
+ "inputs": [
506
+ {
507
+ "components": [
508
+ {
509
+ "internalType": "address",
510
+ "name": "localToken",
511
+ "type": "address"
512
+ },
513
+ {
514
+ "internalType": "uint32",
515
+ "name": "minGas",
516
+ "type": "uint32"
517
+ },
518
+ {
519
+ "internalType": "address",
520
+ "name": "remoteToken",
521
+ "type": "address"
522
+ },
523
+ {
524
+ "internalType": "uint256",
525
+ "name": "minBridgeAmount",
526
+ "type": "uint256"
527
+ }
528
+ ],
529
+ "internalType": "struct JBTokenMapping",
530
+ "name": "map",
531
+ "type": "tuple"
532
+ }
533
+ ],
534
+ "name": "mapToken",
535
+ "outputs": [],
536
+ "stateMutability": "payable",
537
+ "type": "function"
538
+ },
539
+ {
540
+ "inputs": [
541
+ {
542
+ "components": [
543
+ {
544
+ "internalType": "address",
545
+ "name": "localToken",
546
+ "type": "address"
547
+ },
548
+ {
549
+ "internalType": "uint32",
550
+ "name": "minGas",
551
+ "type": "uint32"
552
+ },
553
+ {
554
+ "internalType": "address",
555
+ "name": "remoteToken",
556
+ "type": "address"
557
+ },
558
+ {
559
+ "internalType": "uint256",
560
+ "name": "minBridgeAmount",
561
+ "type": "uint256"
562
+ }
563
+ ],
564
+ "internalType": "struct JBTokenMapping[]",
565
+ "name": "maps",
566
+ "type": "tuple[]"
567
+ }
568
+ ],
569
+ "name": "mapTokens",
570
+ "outputs": [],
571
+ "stateMutability": "payable",
572
+ "type": "function"
573
+ },
574
+ {
575
+ "inputs": [
576
+ {
577
+ "internalType": "address",
578
+ "name": "token",
579
+ "type": "address"
580
+ }
581
+ ],
582
+ "name": "outboxOf",
583
+ "outputs": [
584
+ {
585
+ "components": [
586
+ {
587
+ "internalType": "uint64",
588
+ "name": "nonce",
589
+ "type": "uint64"
590
+ },
591
+ {
592
+ "internalType": "uint256",
593
+ "name": "balance",
594
+ "type": "uint256"
595
+ },
596
+ {
597
+ "components": [
598
+ {
599
+ "internalType": "bytes32[32]",
600
+ "name": "branch",
601
+ "type": "bytes32[32]"
602
+ },
603
+ {
604
+ "internalType": "uint256",
605
+ "name": "count",
606
+ "type": "uint256"
607
+ }
608
+ ],
609
+ "internalType": "struct MerkleLib.Tree",
610
+ "name": "tree",
611
+ "type": "tuple"
612
+ },
613
+ {
614
+ "internalType": "uint256",
615
+ "name": "numberOfClaimsSent",
616
+ "type": "uint256"
617
+ }
618
+ ],
619
+ "internalType": "struct JBOutboxTree",
620
+ "name": "",
621
+ "type": "tuple"
622
+ }
623
+ ],
624
+ "stateMutability": "view",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [],
629
+ "name": "peer",
630
+ "outputs": [
631
+ {
632
+ "internalType": "address",
633
+ "name": "",
634
+ "type": "address"
635
+ }
636
+ ],
637
+ "stateMutability": "view",
638
+ "type": "function"
639
+ },
640
+ {
641
+ "inputs": [],
642
+ "name": "peerChainId",
643
+ "outputs": [
644
+ {
645
+ "internalType": "uint256",
646
+ "name": "",
647
+ "type": "uint256"
648
+ }
649
+ ],
650
+ "stateMutability": "view",
651
+ "type": "function"
652
+ },
653
+ {
654
+ "inputs": [
655
+ {
656
+ "internalType": "uint256",
657
+ "name": "projectTokenCount",
658
+ "type": "uint256"
659
+ },
660
+ {
661
+ "internalType": "address",
662
+ "name": "beneficiary",
663
+ "type": "address"
664
+ },
665
+ {
666
+ "internalType": "uint256",
667
+ "name": "minTokensReclaimed",
668
+ "type": "uint256"
669
+ },
670
+ {
671
+ "internalType": "address",
672
+ "name": "token",
673
+ "type": "address"
674
+ }
675
+ ],
676
+ "name": "prepare",
677
+ "outputs": [],
678
+ "stateMutability": "nonpayable",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [],
683
+ "name": "projectId",
684
+ "outputs": [
685
+ {
686
+ "internalType": "uint256",
687
+ "name": "",
688
+ "type": "uint256"
689
+ }
690
+ ],
691
+ "stateMutability": "view",
692
+ "type": "function"
693
+ },
694
+ {
695
+ "inputs": [
696
+ {
697
+ "internalType": "address",
698
+ "name": "token",
699
+ "type": "address"
700
+ }
701
+ ],
702
+ "name": "remoteTokenFor",
703
+ "outputs": [
704
+ {
705
+ "components": [
706
+ {
707
+ "internalType": "bool",
708
+ "name": "enabled",
709
+ "type": "bool"
710
+ },
711
+ {
712
+ "internalType": "bool",
713
+ "name": "emergencyHatch",
714
+ "type": "bool"
715
+ },
716
+ {
717
+ "internalType": "uint32",
718
+ "name": "minGas",
719
+ "type": "uint32"
720
+ },
721
+ {
722
+ "internalType": "address",
723
+ "name": "addr",
724
+ "type": "address"
725
+ },
726
+ {
727
+ "internalType": "uint256",
728
+ "name": "minBridgeAmount",
729
+ "type": "uint256"
730
+ }
731
+ ],
732
+ "internalType": "struct JBRemoteToken",
733
+ "name": "",
734
+ "type": "tuple"
735
+ }
736
+ ],
737
+ "stateMutability": "view",
738
+ "type": "function"
739
+ },
740
+ {
741
+ "inputs": [
742
+ {
743
+ "internalType": "uint40",
744
+ "name": "timestamp",
745
+ "type": "uint40"
746
+ }
747
+ ],
748
+ "name": "setDeprecation",
749
+ "outputs": [],
750
+ "stateMutability": "nonpayable",
751
+ "type": "function"
752
+ },
753
+ {
754
+ "inputs": [],
755
+ "name": "state",
756
+ "outputs": [
757
+ {
758
+ "internalType": "enum JBSuckerState",
759
+ "name": "",
760
+ "type": "uint8"
761
+ }
762
+ ],
763
+ "stateMutability": "view",
764
+ "type": "function"
765
+ },
766
+ {
767
+ "inputs": [
768
+ {
769
+ "internalType": "bytes4",
770
+ "name": "interfaceId",
771
+ "type": "bytes4"
772
+ }
773
+ ],
774
+ "name": "supportsInterface",
775
+ "outputs": [
776
+ {
777
+ "internalType": "bool",
778
+ "name": "",
779
+ "type": "bool"
780
+ }
781
+ ],
782
+ "stateMutability": "view",
783
+ "type": "function"
784
+ },
785
+ {
786
+ "inputs": [
787
+ {
788
+ "internalType": "address",
789
+ "name": "token",
790
+ "type": "address"
791
+ }
792
+ ],
793
+ "name": "toRemote",
794
+ "outputs": [],
795
+ "stateMutability": "payable",
796
+ "type": "function"
797
+ },
798
+ {
799
+ "inputs": [],
800
+ "name": "trustedForwarder",
801
+ "outputs": [
802
+ {
803
+ "internalType": "address",
804
+ "name": "",
805
+ "type": "address"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "anonymous": false,
813
+ "inputs": [
814
+ {
815
+ "indexed": false,
816
+ "internalType": "address",
817
+ "name": "beneficiary",
818
+ "type": "address"
819
+ },
820
+ {
821
+ "indexed": false,
822
+ "internalType": "address",
823
+ "name": "token",
824
+ "type": "address"
825
+ },
826
+ {
827
+ "indexed": false,
828
+ "internalType": "uint256",
829
+ "name": "projectTokenCount",
830
+ "type": "uint256"
831
+ },
832
+ {
833
+ "indexed": false,
834
+ "internalType": "uint256",
835
+ "name": "terminalTokenAmount",
836
+ "type": "uint256"
837
+ },
838
+ {
839
+ "indexed": false,
840
+ "internalType": "uint256",
841
+ "name": "index",
842
+ "type": "uint256"
843
+ },
844
+ {
845
+ "indexed": false,
846
+ "internalType": "bool",
847
+ "name": "autoAddedToBalance",
848
+ "type": "bool"
849
+ },
850
+ {
851
+ "indexed": false,
852
+ "internalType": "address",
853
+ "name": "caller",
854
+ "type": "address"
855
+ }
856
+ ],
857
+ "name": "Claimed",
858
+ "type": "event"
859
+ },
860
+ {
861
+ "anonymous": false,
862
+ "inputs": [
863
+ {
864
+ "indexed": false,
865
+ "internalType": "uint40",
866
+ "name": "timestamp",
867
+ "type": "uint40"
868
+ },
869
+ {
870
+ "indexed": false,
871
+ "internalType": "address",
872
+ "name": "caller",
873
+ "type": "address"
874
+ }
875
+ ],
876
+ "name": "DeprecationTimeUpdated",
877
+ "type": "event"
878
+ },
879
+ {
880
+ "anonymous": false,
881
+ "inputs": [
882
+ {
883
+ "indexed": false,
884
+ "internalType": "address[]",
885
+ "name": "tokens",
886
+ "type": "address[]"
887
+ },
888
+ {
889
+ "indexed": false,
890
+ "internalType": "address",
891
+ "name": "caller",
892
+ "type": "address"
893
+ }
894
+ ],
895
+ "name": "EmergencyHatchOpened",
896
+ "type": "event"
897
+ },
898
+ {
899
+ "anonymous": false,
900
+ "inputs": [
901
+ {
902
+ "indexed": false,
903
+ "internalType": "uint64",
904
+ "name": "version",
905
+ "type": "uint64"
906
+ }
907
+ ],
908
+ "name": "Initialized",
909
+ "type": "event"
910
+ },
911
+ {
912
+ "anonymous": false,
913
+ "inputs": [
914
+ {
915
+ "indexed": true,
916
+ "internalType": "address",
917
+ "name": "beneficiary",
918
+ "type": "address"
919
+ },
920
+ {
921
+ "indexed": true,
922
+ "internalType": "address",
923
+ "name": "token",
924
+ "type": "address"
925
+ },
926
+ {
927
+ "indexed": false,
928
+ "internalType": "bytes32",
929
+ "name": "hashed",
930
+ "type": "bytes32"
931
+ },
932
+ {
933
+ "indexed": false,
934
+ "internalType": "uint256",
935
+ "name": "index",
936
+ "type": "uint256"
937
+ },
938
+ {
939
+ "indexed": false,
940
+ "internalType": "bytes32",
941
+ "name": "root",
942
+ "type": "bytes32"
943
+ },
944
+ {
945
+ "indexed": false,
946
+ "internalType": "uint256",
947
+ "name": "projectTokenCount",
948
+ "type": "uint256"
949
+ },
950
+ {
951
+ "indexed": false,
952
+ "internalType": "uint256",
953
+ "name": "terminalTokenAmount",
954
+ "type": "uint256"
955
+ },
956
+ {
957
+ "indexed": false,
958
+ "internalType": "address",
959
+ "name": "caller",
960
+ "type": "address"
961
+ }
962
+ ],
963
+ "name": "InsertToOutboxTree",
964
+ "type": "event"
965
+ },
966
+ {
967
+ "anonymous": false,
968
+ "inputs": [
969
+ {
970
+ "indexed": true,
971
+ "internalType": "address",
972
+ "name": "token",
973
+ "type": "address"
974
+ },
975
+ {
976
+ "indexed": false,
977
+ "internalType": "uint64",
978
+ "name": "nonce",
979
+ "type": "uint64"
980
+ },
981
+ {
982
+ "indexed": false,
983
+ "internalType": "bytes32",
984
+ "name": "root",
985
+ "type": "bytes32"
986
+ },
987
+ {
988
+ "indexed": false,
989
+ "internalType": "address",
990
+ "name": "caller",
991
+ "type": "address"
992
+ }
993
+ ],
994
+ "name": "NewInboxTreeRoot",
995
+ "type": "event"
996
+ },
997
+ {
998
+ "anonymous": false,
999
+ "inputs": [
1000
+ {
1001
+ "indexed": true,
1002
+ "internalType": "bytes32",
1003
+ "name": "root",
1004
+ "type": "bytes32"
1005
+ },
1006
+ {
1007
+ "indexed": true,
1008
+ "internalType": "address",
1009
+ "name": "token",
1010
+ "type": "address"
1011
+ },
1012
+ {
1013
+ "indexed": false,
1014
+ "internalType": "uint256",
1015
+ "name": "index",
1016
+ "type": "uint256"
1017
+ },
1018
+ {
1019
+ "indexed": false,
1020
+ "internalType": "uint64",
1021
+ "name": "nonce",
1022
+ "type": "uint64"
1023
+ },
1024
+ {
1025
+ "indexed": false,
1026
+ "internalType": "address",
1027
+ "name": "caller",
1028
+ "type": "address"
1029
+ }
1030
+ ],
1031
+ "name": "RootToRemote",
1032
+ "type": "event"
1033
+ },
1034
+ {
1035
+ "inputs": [],
1036
+ "name": "InvalidInitialization",
1037
+ "type": "error"
1038
+ },
1039
+ {
1040
+ "inputs": [
1041
+ {
1042
+ "internalType": "uint256",
1043
+ "name": "chainId",
1044
+ "type": "uint256"
1045
+ }
1046
+ ],
1047
+ "name": "JBArbitrumSucker_ChainNotSupported",
1048
+ "type": "error"
1049
+ },
1050
+ {
1051
+ "inputs": [
1052
+ {
1053
+ "internalType": "uint256",
1054
+ "name": "payment",
1055
+ "type": "uint256"
1056
+ },
1057
+ {
1058
+ "internalType": "uint256",
1059
+ "name": "cost",
1060
+ "type": "uint256"
1061
+ }
1062
+ ],
1063
+ "name": "JBArbitrumSucker_NotEnoughGas",
1064
+ "type": "error"
1065
+ },
1066
+ {
1067
+ "inputs": [
1068
+ {
1069
+ "internalType": "address",
1070
+ "name": "account",
1071
+ "type": "address"
1072
+ },
1073
+ {
1074
+ "internalType": "address",
1075
+ "name": "sender",
1076
+ "type": "address"
1077
+ },
1078
+ {
1079
+ "internalType": "uint256",
1080
+ "name": "projectId",
1081
+ "type": "uint256"
1082
+ },
1083
+ {
1084
+ "internalType": "uint256",
1085
+ "name": "permissionId",
1086
+ "type": "uint256"
1087
+ }
1088
+ ],
1089
+ "name": "JBPermissioned_Unauthorized",
1090
+ "type": "error"
1091
+ },
1092
+ {
1093
+ "inputs": [
1094
+ {
1095
+ "internalType": "uint256",
1096
+ "name": "minGas",
1097
+ "type": "uint256"
1098
+ },
1099
+ {
1100
+ "internalType": "uint256",
1101
+ "name": "minGasLimit",
1102
+ "type": "uint256"
1103
+ }
1104
+ ],
1105
+ "name": "JBSucker_BelowMinGas",
1106
+ "type": "error"
1107
+ },
1108
+ {
1109
+ "inputs": [],
1110
+ "name": "JBSucker_Deprecated",
1111
+ "type": "error"
1112
+ },
1113
+ {
1114
+ "inputs": [
1115
+ {
1116
+ "internalType": "uint256",
1117
+ "name": "givenTime",
1118
+ "type": "uint256"
1119
+ },
1120
+ {
1121
+ "internalType": "uint256",
1122
+ "name": "minimumTime",
1123
+ "type": "uint256"
1124
+ }
1125
+ ],
1126
+ "name": "JBSucker_DeprecationTimestampTooSoon",
1127
+ "type": "error"
1128
+ },
1129
+ {
1130
+ "inputs": [],
1131
+ "name": "JBSucker_ExpectedMsgValue",
1132
+ "type": "error"
1133
+ },
1134
+ {
1135
+ "inputs": [
1136
+ {
1137
+ "internalType": "uint256",
1138
+ "name": "amount",
1139
+ "type": "uint256"
1140
+ },
1141
+ {
1142
+ "internalType": "uint256",
1143
+ "name": "balance",
1144
+ "type": "uint256"
1145
+ }
1146
+ ],
1147
+ "name": "JBSucker_InsufficientBalance",
1148
+ "type": "error"
1149
+ },
1150
+ {
1151
+ "inputs": [
1152
+ {
1153
+ "internalType": "uint256",
1154
+ "name": "received",
1155
+ "type": "uint256"
1156
+ },
1157
+ {
1158
+ "internalType": "uint256",
1159
+ "name": "expected",
1160
+ "type": "uint256"
1161
+ }
1162
+ ],
1163
+ "name": "JBSucker_InsufficientMsgValue",
1164
+ "type": "error"
1165
+ },
1166
+ {
1167
+ "inputs": [
1168
+ {
1169
+ "internalType": "address",
1170
+ "name": "remoteToken",
1171
+ "type": "address"
1172
+ }
1173
+ ],
1174
+ "name": "JBSucker_InvalidNativeRemoteAddress",
1175
+ "type": "error"
1176
+ },
1177
+ {
1178
+ "inputs": [
1179
+ {
1180
+ "internalType": "bytes32",
1181
+ "name": "root",
1182
+ "type": "bytes32"
1183
+ },
1184
+ {
1185
+ "internalType": "bytes32",
1186
+ "name": "inboxRoot",
1187
+ "type": "bytes32"
1188
+ }
1189
+ ],
1190
+ "name": "JBSucker_InvalidProof",
1191
+ "type": "error"
1192
+ },
1193
+ {
1194
+ "inputs": [
1195
+ {
1196
+ "internalType": "address",
1197
+ "name": "token",
1198
+ "type": "address"
1199
+ },
1200
+ {
1201
+ "internalType": "uint256",
1202
+ "name": "index",
1203
+ "type": "uint256"
1204
+ }
1205
+ ],
1206
+ "name": "JBSucker_LeafAlreadyExecuted",
1207
+ "type": "error"
1208
+ },
1209
+ {
1210
+ "inputs": [
1211
+ {
1212
+ "internalType": "enum JBAddToBalanceMode",
1213
+ "name": "mode",
1214
+ "type": "uint8"
1215
+ }
1216
+ ],
1217
+ "name": "JBSucker_ManualNotAllowed",
1218
+ "type": "error"
1219
+ },
1220
+ {
1221
+ "inputs": [
1222
+ {
1223
+ "internalType": "uint256",
1224
+ "name": "projectId",
1225
+ "type": "uint256"
1226
+ },
1227
+ {
1228
+ "internalType": "address",
1229
+ "name": "token",
1230
+ "type": "address"
1231
+ }
1232
+ ],
1233
+ "name": "JBSucker_NoTerminalForToken",
1234
+ "type": "error"
1235
+ },
1236
+ {
1237
+ "inputs": [
1238
+ {
1239
+ "internalType": "address",
1240
+ "name": "caller",
1241
+ "type": "address"
1242
+ }
1243
+ ],
1244
+ "name": "JBSucker_NotPeer",
1245
+ "type": "error"
1246
+ },
1247
+ {
1248
+ "inputs": [
1249
+ {
1250
+ "internalType": "uint256",
1251
+ "name": "amount",
1252
+ "type": "uint256"
1253
+ },
1254
+ {
1255
+ "internalType": "uint256",
1256
+ "name": "minimumAmount",
1257
+ "type": "uint256"
1258
+ }
1259
+ ],
1260
+ "name": "JBSucker_QueueInsufficientSize",
1261
+ "type": "error"
1262
+ },
1263
+ {
1264
+ "inputs": [
1265
+ {
1266
+ "internalType": "address",
1267
+ "name": "localToken",
1268
+ "type": "address"
1269
+ },
1270
+ {
1271
+ "internalType": "address",
1272
+ "name": "mappedTo",
1273
+ "type": "address"
1274
+ }
1275
+ ],
1276
+ "name": "JBSucker_TokenAlreadyMapped",
1277
+ "type": "error"
1278
+ },
1279
+ {
1280
+ "inputs": [
1281
+ {
1282
+ "internalType": "address",
1283
+ "name": "token",
1284
+ "type": "address"
1285
+ }
1286
+ ],
1287
+ "name": "JBSucker_TokenHasInvalidEmergencyHatchState",
1288
+ "type": "error"
1289
+ },
1290
+ {
1291
+ "inputs": [
1292
+ {
1293
+ "internalType": "address",
1294
+ "name": "token",
1295
+ "type": "address"
1296
+ }
1297
+ ],
1298
+ "name": "JBSucker_TokenNotMapped",
1299
+ "type": "error"
1300
+ },
1301
+ {
1302
+ "inputs": [
1303
+ {
1304
+ "internalType": "uint256",
1305
+ "name": "value",
1306
+ "type": "uint256"
1307
+ }
1308
+ ],
1309
+ "name": "JBSucker_UnexpectedMsgValue",
1310
+ "type": "error"
1311
+ },
1312
+ {
1313
+ "inputs": [],
1314
+ "name": "JBSucker_ZeroBeneficiary",
1315
+ "type": "error"
1316
+ },
1317
+ {
1318
+ "inputs": [],
1319
+ "name": "JBSucker_ZeroERC20Token",
1320
+ "type": "error"
1321
+ },
1322
+ {
1323
+ "inputs": [],
1324
+ "name": "MerkleLib__insert_treeIsFull",
1325
+ "type": "error"
1326
+ },
1327
+ {
1328
+ "inputs": [],
1329
+ "name": "NotInitializing",
1330
+ "type": "error"
1331
+ },
1332
+ {
1333
+ "inputs": [
1334
+ {
1335
+ "internalType": "address",
1336
+ "name": "token",
1337
+ "type": "address"
1338
+ }
1339
+ ],
1340
+ "name": "SafeERC20FailedOperation",
1341
+ "type": "error"
1342
+ }
1343
+ ],
1344
+ "args": [],
1345
+ "solcInputHash": "14ce4938174f25cdd1fbe9b98155e159",
1346
+ "receipt": {
1347
+ "type": "0x2",
1348
+ "status": "0x1",
1349
+ "cumulativeGasUsed": "0x602c2c",
1350
+ "logs": [
1351
+ {
1352
+ "address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
1353
+ "topics": [
1354
+ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
1355
+ "0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
1356
+ "0x000000000000000000000000691d6d2e1f0fb22b67e7471310ddcb3a881cc968",
1357
+ "0x68ae5615a69910b5687343cf4b9f4ecacf09fa6f9e58d0606ae2a8e8a3c56bb9"
1358
+ ],
1359
+ "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
1360
+ "blockHash": "0xcab843bc737d619ae4c2b148fbd7569163d8f07a51ffd0a2d1177c5b4a0909fb",
1361
+ "blockNumber": "0x1640e26",
1362
+ "blockTimestamp": "0x68c1c27b",
1363
+ "transactionHash": "0xe0a03e97435218f648cc887fd4012748181ac32aa757744c8a7b14f5ec651b9d",
1364
+ "transactionIndex": "0x4",
1365
+ "logIndex": "0xf",
1366
+ "removed": false
1367
+ },
1368
+ {
1369
+ "address": "0xfb63658838ccb6ff40733e2688b3e73298bcdecf",
1370
+ "topics": [
1371
+ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"
1372
+ ],
1373
+ "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff",
1374
+ "blockHash": "0xcab843bc737d619ae4c2b148fbd7569163d8f07a51ffd0a2d1177c5b4a0909fb",
1375
+ "blockNumber": "0x1640e26",
1376
+ "blockTimestamp": "0x68c1c27b",
1377
+ "transactionHash": "0xe0a03e97435218f648cc887fd4012748181ac32aa757744c8a7b14f5ec651b9d",
1378
+ "transactionIndex": "0x4",
1379
+ "logIndex": "0x10",
1380
+ "removed": false
1381
+ },
1382
+ {
1383
+ "address": "0x80a8f7a4bd75b539ce26937016df607fdc9abeb5",
1384
+ "topics": [
1385
+ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
1386
+ "0x000000000000000000000000691d6d2e1f0fb22b67e7471310ddcb3a881cc968"
1387
+ ],
1388
+ "data": "0x",
1389
+ "blockHash": "0xcab843bc737d619ae4c2b148fbd7569163d8f07a51ffd0a2d1177c5b4a0909fb",
1390
+ "blockNumber": "0x1640e26",
1391
+ "blockTimestamp": "0x68c1c27b",
1392
+ "transactionHash": "0xe0a03e97435218f648cc887fd4012748181ac32aa757744c8a7b14f5ec651b9d",
1393
+ "transactionIndex": "0x4",
1394
+ "logIndex": "0x11",
1395
+ "removed": false
1396
+ },
1397
+ {
1398
+ "address": "0x691d6d2e1f0fb22b67e7471310ddcb3a881cc968",
1399
+ "topics": [
1400
+ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
1401
+ "0xea14d6a9e0023ebdee52ff89f225fbcdab73dd659d2b605adb5e65271611064f"
1402
+ ],
1403
+ "data": "0x000000000000000000000000000000000000000000000000000000000000000b",
1404
+ "blockHash": "0xcab843bc737d619ae4c2b148fbd7569163d8f07a51ffd0a2d1177c5b4a0909fb",
1405
+ "blockNumber": "0x1640e26",
1406
+ "blockTimestamp": "0x68c1c27b",
1407
+ "transactionHash": "0xe0a03e97435218f648cc887fd4012748181ac32aa757744c8a7b14f5ec651b9d",
1408
+ "transactionIndex": "0x4",
1409
+ "logIndex": "0x12",
1410
+ "removed": false
1411
+ }
1412
+ ],
1413
+ "logsBloom": "0x0000000000001000000000080008000000080000000000000000000000040000000000000020000000000000004002000000000000000000000000000000000000000000000020000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000090400000010000000000410008000002000000000000000400004000000000000000000000000220000000000000000000000004400000000000200400000000000000000000000000000000c040000000000000002020000000000000000000100200000000200000000000080000000000000000000",
1414
+ "transactionHash": "0xe0a03e97435218f648cc887fd4012748181ac32aa757744c8a7b14f5ec651b9d",
1415
+ "transactionIndex": "0x4",
1416
+ "blockHash": "0xcab843bc737d619ae4c2b148fbd7569163d8f07a51ffd0a2d1177c5b4a0909fb",
1417
+ "blockNumber": "0x1640e26",
1418
+ "gasUsed": "0x572061",
1419
+ "effectiveGasPrice": "0x47897a00",
1420
+ "from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
1421
+ "to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
1422
+ "contractAddress": null
1423
+ },
1424
+ "bytecode": "0x6101806040523480156200001257600080fd5b50604051620064f2380380620064f283398101604081905262000035916200030f565b6001600160a01b0380821660805280851660a05280861660e05283166101005284848484848160018111156200006f576200006f620003a3565b60c0816001811115620000865762000086620003a3565b9052506200009362000237565b5050505050856001600160a01b03166307fada496040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd9190620003b9565b6001600160a01b0316610140816001600160a01b031681525050856001600160a01b031663557819a46040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000156573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017c9190620003b9565b6001600160a01b0316610120816001600160a01b031681525050856001600160a01b03166370a2b8db6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fb9190620003e0565b60018111156200020f576200020f620003a3565b610160816001811115620002275762000227620003a3565b8152505050505050505062000400565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620002885760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620002e85780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b0381168114620002e857600080fd5b60028110620002e857600080fd5b60008060008060008060c087890312156200032957600080fd5b86516200033681620002eb565b60208801519096506200034981620002eb565b60408801519095506200035c81620002eb565b60608801519094506200036f81620002eb565b6080880151909350620003828162000301565b60a08801519092506200039581620002eb565b809150509295509295509295565b634e487b7160e01b600052602160045260246000fd5b600060208284031215620003cc57600080fd5b8151620003d981620002eb565b9392505050565b600060208284031215620003f357600080fd5b8151620003d98162000301565b60805160a05160c05160e05161010051610120516101405161016051615fe46200050e6000396000818161078c01528181612b67015281816149770152614a510152600081816107f5015281816150d501528181615148015281816153bd015261543001526000818161065d01528181612ba001528181614e8001528181614f68015261527d0152600081816102b90152610baf0152600081816105f201528181610e630152818161127f01528181611c6501528181611e61015281816122f8015261280a01526000818161074b015281816110340152818161106b015281816115610152611bdd01526000818161082901526126a40152600081816104870152610da20152615fe46000f3fe60806040526004361061021d5760003560e01c8063802c8fa01161011d578063c1854129116100b0578063cdfceeba1161007f578063defbb69711610064578063defbb697146107e3578063f434c91414610817578063fe4b84df1461084b57600080fd5b8063cdfceeba146107ae578063d5f39488146107c357600080fd5b8063c1854129146106f7578063c19d93fb14610717578063c6525f2c14610739578063c86719b71461077a57600080fd5b8063b1012368116100ec578063b10123681461064b578063b59ef50f1461067f578063b71c11791461069f578063bf557aee146106b257600080fd5b8063802c8fa0146105b357806388bc2ef3146105e057806392ee1ea7146106145780639e6d7d431461062b57600080fd5b8063551ebbf0116101b057806369d31fdd1161017f578063754515591161016457806375451559146104585780637da0a877146104785780637de6fba2146104ab57600080fd5b806369d31fdd146103cc5780636d9e384b146103df57600080fd5b8063551ebbf01461034c578063572b6c051461036c5780636284386a1461038c57806369ce2233146103ac57600080fd5b80632241dc52116101ec5780632241dc52146102db57806338eb2044146102ee5780633a5de07d146103015780633fafa1271461032d57600080fd5b806301ffc9a7146102295780630f6482141461025e57806311cda415146102805780631d831d5c146102a757600080fd5b3661022457005b600080fd5b34801561023557600080fd5b50610249610244366004615637565b61086b565b60405190151581526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004615679565b61099c565b005b34801561028c57600080fd5b50305b6040516001600160a01b039091168152602001610255565b3480156102b357600080fd5b5061028f7f000000000000000000000000000000000000000000000000000000000000000081565b61027e6102e9366004615692565b610a53565b61027e6102fc366004615719565b610b61565b34801561030d57600080fd5b5061031862030d4081565b60405163ffffffff9091168152602001610255565b34801561033957600080fd5b506002545b604051908152602001610255565b34801561035857600080fd5b5061027e61036736600461574a565b610b6b565b34801561037857600080fd5b50610249610387366004615794565b610d9e565b34801561039857600080fd5b5061027e6103a73660046157b1565b610ddd565b3480156103b857600080fd5b5061027e6103c7366004615794565b611030565b61027e6103da366004615719565b6110cf565b3480156103eb57600080fd5b5061044b6103fa366004615794565b6040805180820190915260008082526020820152506001600160a01b03166000908152600460209081526040918290208251808401909352805467ffffffffffffffff168352600101549082015290565b60405161025591906157d8565b34801561046457600080fd5b5061027e6104733660046157f9565b61126d565b34801561048457600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061028f565b3480156104b757600080fd5b5061055e6104c6366004615794565b6040805160a0808201835260008083526020808401829052838501829052606080850183905260809485018390526001600160a01b039687168352600682529185902085519384018652805460ff8082161515865261010082041615159285019290925262010000820463ffffffff169584019590955266010000000000009004909416938101939093526001909101549082015290565b6040516102559190600060a08201905082511515825260208301511515602083015263ffffffff60408401511660408301526001600160a01b0360608401511660608301526080830151608083015292915050565b3480156105bf57600080fd5b506105d36105ce366004615794565b611408565b604051610255919061585c565b3480156105ec57600080fd5b5061028f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561062057600080fd5b50610318620493e081565b34801561063757600080fd5b5061033e610646366004615794565b6114a8565b34801561065757600080fd5b5061028f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561068b57600080fd5b5061027e61069a366004615679565b6114d8565b61027e6106ad366004615794565b6115fe565b3480156106be57600080fd5b506102496106cd366004615794565b6001600160a01b039081166000908152600660205260409020546601000000000000900416151590565b34801561070357600080fd5b5061027e6107123660046158c3565b611741565b34801561072357600080fd5b5061072c61177a565b604051610255919061593d565b34801561074557600080fd5b5061076d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516102559190615967565b34801561078657600080fd5b5061076d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107ba57600080fd5b5061033e6117c3565b3480156107cf57600080fd5b5060005461028f906001600160a01b031681565b3480156107ef57600080fd5b5061028f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561082357600080fd5b5061028f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561085757600080fd5b5061027e610866366004615974565b611819565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f18a5af270000000000000000000000000000000000000000000000000000000014806108fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f583ff5cc00000000000000000000000000000000000000000000000000000000145b8061094a57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff434c91400000000000000000000000000000000000000000000000000000000145b8061099657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6109d460608201356109b16020840184615794565b60808401356109c66060860160408701615794565b602086013560a087016119a8565b6080810135600560006109ea6020850185615794565b6001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254610a1c91906159a3565b90915550610a509050610a326020830183615794565b608083013560608401803590610a4b9060408701615794565b611bd9565b50565b6000805b82811015610b0e57600060056000868685818110610a7757610a776159b6565b610a8d9260206080909202019081019150615794565b6001600160a01b03168152602081019190915260400160009081209150858584818110610abc57610abc6159b6565b9050608002016040016020810190610ad49190615794565b6001600160a01b0316148015610af257506022810154602382015414155b15610b055782610b01816159cc565b9350505b50600101610a57565b5060005b82811015610b5b57610b53848483818110610b2f57610b2f6159b6565b90506080020160008411610b44576000611d82565b610b4e84346159e6565b611d82565b600101610b12565b50505050565b610a508134611d82565b6001600160a01b038316610bab576040517f8d3329cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ea78803f610be560025490565b6040518263ffffffff1660e01b8152600401610c0391815260200190565b602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190615a08565b90506001600160a01b038116610c86576040517fcaa06d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526006602052604090205460ff16610ce8576040517f04fdbe060000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b6000610cf261177a565b90506003816003811115610d0857610d08615927565b1480610d2557506002816003811115610d2357610d23615927565b145b15610d5c576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d79610d6761221c565b6001600160a01b03841690308961222b565b6000610d87838886886122a7565b9050610d9587858389612495565b50505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b0316826001600160a01b0316149050919050565b6000610de761177a565b90506003816003811115610dfd57610dfd615927565b1480610e1a57506002816003811115610e1857610e18615927565b145b15610e51576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5c60025490565b9050610f597f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee39190615a08565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610f1091815260200190565b602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190615a08565b82601e61261f565b6000610f686212750042615a25565b905064ffffffffff841615801590610f865750808464ffffffffff16105b15610fcd576040517f044691ac00000000000000000000000000000000000000000000000000000000815264ffffffffff8516600482015260248101829052604401610cdf565b64ffffffffff84166001557f455efa76af2a8686dc0dd3041bda89ece5ba4691277d525e2161003bbca8b2458461100261221c565b6040805164ffffffffff90931683526001600160a01b0390911660208301520160405180910390a150505050565b60007f0000000000000000000000000000000000000000000000000000000000000000600181111561106457611064615927565b146110bd577f00000000000000000000000000000000000000000000000000000000000000006040517fb039c395000000000000000000000000000000000000000000000000000000008152600401610cdf9190615967565b610a50816110ca836114a8565b612769565b6110df6110da61221c565b612b62565b611129576110eb61221c565b6040517f36183c8f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610cdf565b600060048161113b6020850185615794565b6001600160a01b0316815260208101919091526040908101600020805490925067ffffffffffffffff16906111769060608501908501615a38565b67ffffffffffffffff161180156111a65750600361119261177a565b60038111156111a3576111a3615927565b14155b15611269576111bb6060830160408401615a38565b815467ffffffffffffffff191667ffffffffffffffff91909116178155606082013560018201556111ef6020830183615794565b6001600160a01b03167fc69d3412489554fb7820c4c2784cb644b6c79bfc117444b93977d3d33a9b8eac6112296060850160408601615a38565b606085013561123661221c565b6040805167ffffffffffffffff909416845260208401929092526001600160a01b03169082015260600160405180910390a25b5050565b600061127860025490565b90506112db7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebf573d6000803e3d6000fd5b60005b828110156113c0576000600660008686858181106112fe576112fe6159b6565b90506020020160208101906113139190615794565b6001600160a01b031681526020810191909152604001600090812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155600190600690868685818110611374576113746159b6565b90506020020160208101906113899190615794565b6001600160a01b03168152602081019190915260400160002080549115156101000261ff00199092169190911790556001016112de565b507f8021bce60b20a9afb57085869a3552e0ee5b272b868df894fb30c5e90e74c07283836113ec61221c565b6040516113fb93929190615a62565b60405180910390a1505050565b611410615586565b6001600160a01b0382166000908152600560209081526040918290208251608081018452815467ffffffffffffffff1681526001820154818401528351610440810180865291949293858401939192600286019284929083019184919082845b815481526020019060010190808311611470575050509183525050602091820154908201529082526023929092015491015292915050565b6001600160a01b0381166000908152600560205260408120600101546114ce8330612d39565b61099691906159a3565b61151060608201356114ed6020840184615794565b60808401356115026060860160408701615794565b602086013560a08701612dff565b7faaca6f6829d340365b5e6599e0d513cbb4602b94f58ccf16ac77d8d3ae7139ef6115416060830160408401615794565b61154e6020840184615794565b60608401356080850135602086013560017f0000000000000000000000000000000000000000000000000000000000000000600181111561159157611591615927565b1461159d5760006115a0565b60015b6115a861221c565b604080516001600160a01b039889168152968816602088015286019490945260608501929092526080840152151560a083015290911660c082015260e00160405180910390a1610a50610a326020830183615794565b6001600160a01b03808216600090815260066020908152604091829020825160a081018452815460ff808216151583526101008204161580159483019490945263ffffffff6201000082041694820194909452660100000000000090930490931660608301526001909201546080820152906116b1576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b60808101516001600160a01b0383166000908152600560205260409020600101541015611736576001600160a01b0382166000908152600560205260409081902060010154608083015191517fc3e11b79000000000000000000000000000000000000000000000000000000008152610cdf9290600401918252602082015260400190565b611269348383612ed5565b60005b818110156117755761176d838383818110611761576117616159b6565b90506104a002016114d8565b600101611744565b505050565b60015460009080820361178f57600091505090565b61179c62127500826159a3565b4210156117ab57600191505090565b804210156117bb57600291505090565b600391505090565b60004660001981016117d85761a4b191505090565b61a4b181036117e957600191505090565b62aa36a781036117fd5762066eee91505090565b62066eee81036118115762aa36a791505090565b600091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156118645750825b905060008267ffffffffffffffff1660011480156118815750303b155b90508115801561188f575080155b156118c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156119105784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6002869055600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905583156119a05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60006119b261177a565b905060038160038111156119c8576119c8615927565b141580156119e8575060028160038111156119e5576119e5615927565b14155b8015611a1257506001600160a01b038616600090815260066020526040902054610100900460ff16155b15611a54576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602401610cdf565b6001600160a01b0386166000908152600560205260409020602381015415801590611a8f57508360018260230154611a8c91906159a3565b10155b15611ad8576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101859052604401610cdf565b604080516001600160a01b03891660208201526000910160408051808303601f19018152918152815160209283012060601c60008181526003845282812060088a901c8252909352912054909150600160ff87161b1615611b77576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101869052604401610cdf565b6001600160a01b039081166000908152600360209081526040808320600889901c845282528083208054600160ff8b161b179055928a1682526005905220611bcf90611bc5906002016130f5565b89888888886144ab565b5050505050505050565b60017f00000000000000000000000000000000000000000000000000000000000000006001811115611c0d57611c0d615927565b148015611c1957508215155b15611c2857611c288484612769565b6000611c3360025490565b6040517f5dd8f6aa000000000000000000000000000000000000000000000000000000008152600481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190615a08565b6040517fc7fb92de00000000000000000000000000000000000000000000000000000000815260048101839052602481018590526001600160a01b03848116604483015260a06064830152600060a483018190526084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190615ac2565b6000611d916020840184615794565b6001600160a01b03808216600090815260066020908152604091829020825160a081018452815460ff808216151583526101008204161580159483019490945263ffffffff6201000082041694820194909452660100000000000090930490931660608301526001909201546080820152919250611e46576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b611e4f8461455d565b6000611e5a60025490565b9050611f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee19190615a08565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401611f0e91815260200190565b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f9190615a08565b82601c61261f565b60608201516001600160a01b031615801590611f985750611f7e6060860160408701615794565b6001600160a01b031682606001516001600160a01b031614155b8015611fbd57506000611fb16060870160408801615794565b6001600160a01b031614155b8015611fe357506001600160a01b03831660009081526005602052604090206022015415155b156120335760608201516040517f1460b5460000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301529091166024820152604401610cdf565b60006120456060870160408801615794565b6001600160a01b031614801561207c57506001600160a01b0383166000908152600560205260409020602281015460239091015414155b1561208c5761208c848484612ed5565b6040518060a0016040528060006001600160a01b03168760400160208101906120b59190615794565b6001600160a01b03161415151581526020016000151581526020018660200160208101906120e39190615adb565b63ffffffff16815260200160006121006060890160408a01615794565b6001600160a01b0316146121235761211e6060880160408901615794565b612129565b83606001515b6001600160a01b039081168252606097880135602092830152948516600090815260068252604090819020835181549385015192850151998501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090941690151561ff0019161761010092151592909202919091177fffffffffffff000000000000000000000000000000000000000000000000ffff166201000063ffffffff909916989098027fffffffffffff0000000000000000000000000000000000000000ffffffffffff16979097176601000000000000919095160293909317855550506080015160019092019190915550565b6000612226614698565b905090565b6040516001600160a01b038481166024830152838116604483015260648201839052610b5b9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506146ea565b6000806122b360025490565b6040517f86202650000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0386811660248301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa15801561233f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123639190615a08565b90506001600160a01b0381166123b7576040517fb61c181f000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386166024820152604401610cdf565b60006123c38630612d39565b604080516020810182526000815290517f13da83170000000000000000000000000000000000000000000000000000000081529192506001600160a01b038416916313da83179161242291309188918d918d918d918691600401615b51565b6020604051808303816000875af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190615ac2565b9350806124728730612d39565b61247c91906159a3565b841461248a5761248a615ba4565b505050949350505050565b6040805160208082018790528183018590526001600160a01b03841660608084019190915283518084039091018152608090920190925280519101206000906001600160a01b038516600090815260056020908152604080832081516104408101808452959650909461253e9387936002880192849291830191849182845b81548152602001906001019080831161251457505050918352505060209182015491015290614774565b80519091508190600284019061255790829060206155b2565b5060208201518160200155905050848260010160008282546125799190615a25565b92505081905550856001600160a01b0316846001600160a01b03167f584a41ff082fad99bb6e50c5767c347c762057fe5726539f0a8de49d84549c2385600185602001516125c791906159a3565b6125d3876002016130f5565b8c8b6125dd61221c565b60408051968752602087019590955293850192909252606084015260808301526001600160a01b031660a082015260c00160405180910390a350505050505050565b600061262961221c565b9050836001600160a01b0316816001600160a01b03161415801561271157506040517f348b684e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa1580156126eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270f9190615bba565b155b15610b5b576040517f264deeaa0000000000000000000000000000000000000000000000000000000081526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610cdf565b6000612774836114a8565b9050808211156127ba576040517f60ec3e710000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610cdf565b60006127c560025490565b6040517f86202650000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0386811660248301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128759190615a08565b90506001600160a01b0381166128c9576040517fb61c181f000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386166024820152604401610cdf565b6001600160a01b03851661eeee14612ab2576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa15801561293b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295f9190615ac2565b905061296c8683876148ac565b6040517f9e6eec05000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0387811660248301526044820187905260006064830181905260c0608484015260c4830181905260e060a484015260e4830152831690639e6eec059061010401600060405180830381600087803b1580156129fa57600080fd5b505af1158015612a0e573d6000803e3d6000fd5b505050508481612a1e91906159a3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015612a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9f9190615ac2565b14612aac57612aac615ba4565b50612b5b565b6040517f9e6eec05000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386811660248301526044820186905260006064830181905260c0608484015260c4830181905260e060a484015260e4830152821690639e6eec05908690610104016000604051808303818588803b158015612b4157600080fd5b505af1158015612b55573d6000803e3d6000fd5b50505050505b5050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001811115612b9757612b97615927565b03612d1d5760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c209190615a08565b9050806001600160a01b0316836001600160a01b0316148015612d165750806001600160a01b031663ab5d89436040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca09190615a08565b6001600160a01b03166380648b026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d019190615a08565b6001600160a01b0316306001600160a01b0316145b9392505050565b7311110000000000000000000000000000000011113001610dc2565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11126001600160a01b03841601612d7c57506001600160a01b03811631610996565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015612ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d169190615ac2565b6001600160a01b0385166000908152600360209081526040808320600886901c8452909152902054600160ff84161b1615612e78576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101839052604401610cdf565b6001600160a01b0385166000908152600360209081526040808320600886901c845290915290208054600160ff85161b1790556001600160a01b0385166000908152600460205260409020600101546119a09087868686866144ab565b60608101516001600160a01b0316612f24576040517f04fdbe060000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b6000612f2e61177a565b90506003816003811115612f4457612f44615927565b1480612f6157506002816003811115612f5f57612f5f615927565b145b15612f98576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831660009081526005602052604081206001810180549083905581549192909183908290612fd79067ffffffffffffffff16615bdc565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790559050600061300c846002016130f5565b60228501546023860181905590915060006130286001836159a3565b9050886001600160a01b0316837f47c5615513b0f669da2dd7e3362a34610ca2695d0a0e2da2160cee952eab203c838761306061221c565b6040805193845267ffffffffffffffff90921660208401526001600160a01b03169082015260600160405180910390a3600060405180606001604052808a606001516001600160a01b0316815260200187815260200160405180604001604052808867ffffffffffffffff1681526020018781525081525090506130e88b838c898d8661496a565b5050505050505050505050565b602081015460009080820361312c57507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75792915050565b600083600183161561314e578054600052600060205260406000209350613a01565b60028316156131935760018101546000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020526040600020935060019150613a01565b60048316156131d85760028101546000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020526040600020935060029150613a01565b600883161561321d5760038101546000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020526040600020935060039150613a01565b60108316156132625760048101546000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020526040600020935060049150613a01565b60208316156132a75760058101546000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020526040600020935060059150613a01565b60408316156132ec5760068101546000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020526040600020935060069150613a01565b60808316156133315760078101546000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020526040600020935060079150613a01565b6101008316156133775760088101546000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020526040600020935060089150613a01565b6102008316156133bd5760098101546000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020526040600020935060099150613a01565b61040083161561340357600a8101546000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a560205260406000209350600a9150613a01565b61080083161561344957600b8101546000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf89260205260406000209350600b9150613a01565b61100083161561348f57600c8101546000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c60205260406000209350600c9150613a01565b6120008316156134d557600d8101546000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb60205260406000209350600d9150613a01565b61400083161561351b57600e8101546000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc60205260406000209350600e9150613a01565b61800083161561356157600f8101546000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d260205260406000209350600f9150613a01565b620100008316156135a85760108101546000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020526040600020935060109150613a01565b620200008316156135ef5760118101546000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020526040600020935060119150613a01565b620400008316156136365760128101546000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020526040600020935060129150613a01565b6208000083161561367d5760138101546000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020526040600020935060139150613a01565b621000008316156136c45760148101546000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020526040600020935060149150613a01565b6220000083161561370b5760158101546000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020526040600020935060159150613a01565b624000008316156137525760168101546000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020526040600020935060169150613a01565b628000008316156137995760178101546000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020526040600020935060179150613a01565b63010000008316156137e15760188101546000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020526040600020935060189150613a01565b63020000008316156138295760198101546000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020526040600020935060199150613a01565b630400000083161561387157601a8101546000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d060205260406000209350601a9150613a01565b63080000008316156138b957601b8101546000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e60205260406000209350601b9150613a01565b631000000083161561390157601c8101546000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e60205260406000209350601c9150613a01565b632000000083161561394957601d8101546000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32260205260406000209350601d9150613a01565b634000000083161561399157601e8101546000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d73560205260406000209350601e9150613a01565b63800000008316156139d957601f8101546000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a960205260406000209350601f9150613a01565b7f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d7579350602091505b601e82116144a3576001821015613a5f57600283168015613a2d57600182015460005284602052613a56565b846000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020525b50604060002093505b6002821015613ab557600483168015613a8357600282015460005284602052613aac565b846000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020525b50604060002093505b6003821015613b0b57600883168015613ad957600382015460005284602052613b02565b846000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020525b50604060002093505b6004821015613b6157601083168015613b2f57600482015460005284602052613b58565b846000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020525b50604060002093505b6005821015613bb757602083168015613b8557600582015460005284602052613bae565b846000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020525b50604060002093505b6006821015613c0d57604083168015613bdb57600682015460005284602052613c04565b846000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020525b50604060002093505b6007821015613c6357608083168015613c3157600782015460005284602052613c5a565b846000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020525b50604060002093505b6008821015613cba5761010083168015613c8857600882015460005284602052613cb1565b846000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020525b50604060002093505b6009821015613d115761020083168015613cdf57600982015460005284602052613d08565b846000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020525b50604060002093505b600a821015613d685761040083168015613d3657600a82015460005284602052613d5f565b846000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56020525b50604060002093505b600b821015613dbf5761080083168015613d8d57600b82015460005284602052613db6565b846000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926020525b50604060002093505b600c821015613e165761100083168015613de457600c82015460005284602052613e0d565b846000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6020525b50604060002093505b600d821015613e6d5761200083168015613e3b57600d82015460005284602052613e64565b846000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6020525b50604060002093505b600e821015613ec45761400083168015613e9257600e82015460005284602052613ebb565b846000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6020525b50604060002093505b600f821015613f1b5761800083168015613ee957600f82015460005284602052613f12565b846000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26020525b50604060002093505b6010821015613f73576201000083168015613f4157601082015460005284602052613f6a565b846000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020525b50604060002093505b6011821015613fcb576202000083168015613f9957601182015460005284602052613fc2565b846000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020525b50604060002093505b6012821015614023576204000083168015613ff15760128201546000528460205261401a565b846000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020525b50604060002093505b601382101561407b57620800008316801561404957601382015460005284602052614072565b846000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020525b50604060002093505b60148210156140d35762100000831680156140a1576014820154600052846020526140ca565b846000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020525b50604060002093505b601582101561412b5762200000831680156140f957601582015460005284602052614122565b846000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020525b50604060002093505b60168210156141835762400000831680156141515760168201546000528460205261417a565b846000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020525b50604060002093505b60178210156141db5762800000831680156141a9576017820154600052846020526141d2565b846000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020525b50604060002093505b6018821015614234576301000000831680156142025760188201546000528460205261422b565b846000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020525b50604060002093505b601982101561428d5763020000008316801561425b57601982015460005284602052614284565b846000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020525b50604060002093505b601a8210156142e6576304000000831680156142b457601a820154600052846020526142dd565b846000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06020525b50604060002093505b601b82101561433f5763080000008316801561430d57601b82015460005284602052614336565b846000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6020525b50604060002093505b601c8210156143985763100000008316801561436657601c8201546000528460205261438f565b846000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6020525b50604060002093505b601d8210156143f1576320000000831680156143bf57601d820154600052846020526143e8565b846000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226020525b50604060002093505b601e82101561444a5763400000008316801561441857601e82015460005284602052614441565b846000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356020525b50604060002093505b601f8210156144a35763800000008316801561447157601f8201546000528460205261449a565b846000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96020525b50604060002093505b505050919050565b6040805160208082018890528183018790526001600160a01b038616606080840191909152835180840390910181526080830180855281519183019190912061048090930190935260009261451992918590828261040080828437600092019190915250879150614aa49050565b9050868114610d95576040517ee587d20000000000000000000000000000000000000000000000000000000081526004810182905260248101889052604401610cdf565b600061eeee61456f6020840184615794565b6001600160a01b03161490508080156145a2575061eeee6145966060840160408501615794565b6001600160a01b031614155b80156145c7575060006145bb6060840160408501615794565b6001600160a01b031614155b1561461a576145dc6060830160408401615794565b6040517ff41f6def0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610cdf565b62030d4061462e6040840160208501615adb565b63ffffffff1610801561463f575080155b15611269576146546040830160208401615adb565b6040517f555d0f1000000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015262030d406024820152604401610cdf565b60003660146146a633610d9e565b80156146b25750808210155b156146e2576000366146c483856159a3565b6146cf928290615c03565b6146d891615c2d565b60601c9250505090565b339250505090565b600080602060008451602086016000885af18061470d576040513d6000823e3d81fd5b50506000513d91508115614725578060011415614732565b6001600160a01b0384163b155b15610b5b576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610cdf565b61477c6155f0565b600083602001805161478d906159cc565b90819052905060016147a160206002615d59565b6147ab91906159a3565b8111156147e4576040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6020811015614879578160011660010361482057845184908260208110614810576148106159b6565b6020020152508391506109969050565b84518160208110614833576148336159b6565b602002015184604051602001614853929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209350600191821c91016147e7565b506040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261492b8482614df2565b610b5b576040516001600160a01b0384811660248301526000604483015261496091869182169063095ea7b390606401612260565b610b5b84826146ea565b851580156149a9575060007f000000000000000000000000000000000000000000000000000000000000000060018111156149a7576149a7615927565b145b156149e0576040517f3cb7b09b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816040516024016149f39190615d65565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f69d31fdd00000000000000000000000000000000000000000000000000000000179052905060007f00000000000000000000000000000000000000000000000000000000000000006001811115614a8157614a81615927565b03614a9857614a938588868487614e41565b610d95565b610d9585858386615324565b6020600582811b8216948552835194820394909452604060008181206002851615871b808503919091528386015190528181206004851615871b808503919091528286015190528181206008851615871b80850391909152606086015190528181206010851615871b8085039190915260808087015190915282822084861615881b8086039190915260a0870151905282822083861615881b8086039190915260c0870151905282822090851615871b8085039190915260e0860151905281812061010080861615881b80860392909252860151905281812061020080861615881b80860392909252610120870151909152828220610400861615881b808603919091526101408701519052828220610800861615881b808603919091526101608701519052828220611000861615881b808603919091526101808701519052828220612000861615881b808603919091526101a08701519052828220614000861615881b808603919091526101c08701519052828220618000861615881b808603919091526101e0870151905282822062010000861615881b8086039190915290860151905281812062020000851615871b80850391909152610220860151905281812062040000851615871b80850391909152610240860151905281812062080000851615871b80850391909152610260860151905281812062100000851615871b80850391909152610280860151905281812062200000851615871b808503919091526102a0860151905281812062400000851615871b808503919091526102c0860151905281812062800000851615871b808503919091526102e086015190528181206301000000851615871b8085039190915261030086015190528181206302000000851615871b8085039190915261032086015190528181206304000000851615871b8085039190915261034086015190528181206308000000851615871b8085039190915261036086015190528181206310000000851615871b8085039190915261038086015190528181206320000000851615871b808503919091526103a086015190528181206340000000851615871b808503919091526103c0860151905281812063800000009094161590951b91829003929092526103e090920151909152902090565b6000806000806020600086516020880160008a5af192503d91506000519050828015614e3757508115614e285780600114614e37565b6000866001600160a01b03163b115b9695505050505050565b81516040517fa66b327d0000000000000000000000000000000000000000000000000000000081526004810191909152486024820181905260009182907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a66b327d90604401602060405180830381865afa158015614ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ef39190615ac2565b90506000614f0483620493e0615db1565b614f0e9083615a25565b90506001600160a01b03891661eeee14801590614f2a57508615155b15615229576040517fa66b327d00000000000000000000000000000000000000000000000000000000815260606004820152602481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a66b327d90604401602060405180830381865afa158015614fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fdb9190615ac2565b9050600084876040015163ffffffff16614ff59190615db1565b614fff9083615a25565b905061500b8184615a25565b8a1015615058578961501d8285615a25565b6040517f514f519600000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cdf565b6000600282615067868e6159a3565b61507191906159a3565b61507b91906159e6565b90506150878183615a25565b91506150938185615a25565b6040517fbda009fe0000000000000000000000000000000000000000000000000000000081526001600160a01b03808f16600483015291955061514692508d917f0000000000000000000000000000000000000000000000000000000000000000169063bda009fe90602401602060405180830381865afa15801561511c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151409190615a08565b8b6148ac565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634fb1a07b828d61517f61221c565b308e8d604001518c8a604051806020016040528060008152506040516020016151a9929190615dc8565b6040516020818303038152906040526040518963ffffffff1660e01b81526004016151da9796959493929190615de9565b60006040518083038185885af11580156151f8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526152219190810190615e4b565b505050615273565b8088101561526d576040517f514f51960000000000000000000000000000000000000000000000000000000081526004810189905260248101829052604401610cdf565b50859250865b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016636e6e8a6a6152ac8684615a25565b3087866152b761221c565b30620493e08b8f6040518a63ffffffff1660e01b81526004016152e1989796959493929190615ef8565b60206040518083038185885af11580156152ff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b559190615ac2565b60003415615360576040517fd7468c32000000000000000000000000000000000000000000000000000000008152346004820152602401610cdf565b6001600160a01b03851661eeee1480159061537a57508315155b156154ff576040517fbda009fe0000000000000000000000000000000000000000000000000000000081526001600160a01b03808716600483015261542e9187917f0000000000000000000000000000000000000000000000000000000000000000169063bda009fe90602401602060405180830381865afa158015615404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154289190615a08565b866148ac565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b3a3c8b83606001516154693090565b604080516020810182526000815290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526154b29392918a91600401615f5a565b6000604051808303816000875af11580156154d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154f99190810190615e4b565b50615502565b50825b6040517f928c169a00000000000000000000000000000000000000000000000000000000815260649063928c169a9083906155439030908890600401615f8c565b60206040518083038185885af1158015615561573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a09190615ac2565b60408051608081018252600080825260208201529081016155a56155f0565b8152602001600081525090565b82602081019282156155e0579160200282015b828111156155e05782518255916020019190600101906155c5565b506155ec929150615603565b5090565b60405180604001604052806155a5615618565b5b808211156155ec5760008155600101615604565b6040518061040001604052806020906020820280368337509192915050565b60006020828403121561564957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612d1657600080fd5b60006104a0828403121561568c57600080fd5b50919050565b600080602083850312156156a557600080fd5b823567ffffffffffffffff808211156156bd57600080fd5b818501915085601f8301126156d157600080fd5b8135818111156156e057600080fd5b8660208260071b85010111156156f557600080fd5b60209290920196919550909350505050565b60006080828403121561568c57600080fd5b60006080828403121561572b57600080fd5b612d168383615707565b6001600160a01b0381168114610a5057600080fd5b6000806000806080858703121561576057600080fd5b84359350602085013561577281615735565b925060408501359150606085013561578981615735565b939692955090935050565b6000602082840312156157a657600080fd5b8135612d1681615735565b6000602082840312156157c357600080fd5b813564ffffffffff81168114612d1657600080fd5b815167ffffffffffffffff1681526020808301519082015260408101610996565b6000806020838503121561580c57600080fd5b823567ffffffffffffffff8082111561582457600080fd5b818501915085601f83011261583857600080fd5b81358181111561584757600080fd5b8660208260051b85010111156156f557600080fd5b815167ffffffffffffffff1681526020808301518183015260408084015180516104808501939260009086015b848210156158a7578251815291840191600191909101908401615889565b5050500151610440830152606092909201516104609091015290565b600080602083850312156158d657600080fd5b823567ffffffffffffffff808211156158ee57600080fd5b818501915085601f83011261590257600080fd5b81358181111561591157600080fd5b8660206104a0830285010111156156f557600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061595157615951615927565b91905290565b60028110610a5057610a50615927565b6020810161595183615957565b60006020828403121561598657600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109965761099661598d565b634e487b7160e01b600052603260045260246000fd5b600060001982036159df576159df61598d565b5060010190565b600082615a0357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615a1a57600080fd5b8151612d1681615735565b808201808211156109965761099661598d565b600060208284031215615a4a57600080fd5b813567ffffffffffffffff81168114612d1657600080fd5b6040808252810183905260008460608301825b86811015615aa5578235615a8881615735565b6001600160a01b0316825260209283019290910190600101615a75565b5080925050506001600160a01b0383166020830152949350505050565b600060208284031215615ad457600080fd5b5051919050565b600060208284031215615aed57600080fd5b813563ffffffff81168114612d1657600080fd5b60005b83811015615b1c578181015183820152602001615b04565b50506000910152565b60008151808452615b3d816020860160208601615b01565b601f01601f19169290920160200192915050565b60006001600160a01b03808a168352886020840152876040840152808716606084015285608084015280851660a08401525060e060c0830152615b9760e0830184615b25565b9998505050505050505050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215615bcc57600080fd5b81518015158114612d1657600080fd5b600067ffffffffffffffff808316818103615bf957615bf961598d565b6001019392505050565b60008085851115615c1357600080fd5b83861115615c2057600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015615c6d5780818660140360031b1b83161692505b505092915050565b600181815b80851115615cb0578160001904821115615c9657615c9661598d565b80851615615ca357918102915b93841c9390800290615c7a565b509250929050565b600082615cc757506001610996565b81615cd457506000610996565b8160018114615cea5760028114615cf457615d10565b6001915050610996565b60ff841115615d0557615d0561598d565b50506001821b610996565b5060208310610133831016604e8410600b8410161715615d33575081810a610996565b615d3d8383615c75565b8060001904821115615d5157615d5161598d565b029392505050565b6000612d168383615cb8565b60006080820190506001600160a01b038351168252602083015160208301526040830151615daa6040840182805167ffffffffffffffff168252602090810151910152565b5092915050565b80820281158282048414176109965761099661598d565b828152604060208201526000615de16040830184615b25565b949350505050565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015263ffffffff851660808301528360a083015260e060c0830152615b9760e0830184615b25565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e5d57600080fd5b815167ffffffffffffffff80821115615e7557600080fd5b818401915084601f830112615e8957600080fd5b815181811115615e9b57615e9b615e35565b604051601f8201601f19908116603f01168101908382118183101715615ec357615ec3615e35565b81604052828152876020848701011115615edc57600080fd5b615eed836020830160208801615b01565b979650505050505050565b60006101006001600160a01b03808c1684528a6020850152896040850152808916606085015280881660808501525063ffffffff861660a08401528460c08401528060e0840152615f4b81840185615b25565b9b9a5050505050505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614e376080830184615b25565b6001600160a01b0383168152604060208201526000615de16040830184615b2556fea2646970667358221220e36c3a37ad02e31b40907826cff34d3f0945bd4e2aeafaa5630e4eb1d871cd7b64736f6c63430008170033",
1425
+ "deployedBytecode": "0x60806040526004361061021d5760003560e01c8063802c8fa01161011d578063c1854129116100b0578063cdfceeba1161007f578063defbb69711610064578063defbb697146107e3578063f434c91414610817578063fe4b84df1461084b57600080fd5b8063cdfceeba146107ae578063d5f39488146107c357600080fd5b8063c1854129146106f7578063c19d93fb14610717578063c6525f2c14610739578063c86719b71461077a57600080fd5b8063b1012368116100ec578063b10123681461064b578063b59ef50f1461067f578063b71c11791461069f578063bf557aee146106b257600080fd5b8063802c8fa0146105b357806388bc2ef3146105e057806392ee1ea7146106145780639e6d7d431461062b57600080fd5b8063551ebbf0116101b057806369d31fdd1161017f578063754515591161016457806375451559146104585780637da0a877146104785780637de6fba2146104ab57600080fd5b806369d31fdd146103cc5780636d9e384b146103df57600080fd5b8063551ebbf01461034c578063572b6c051461036c5780636284386a1461038c57806369ce2233146103ac57600080fd5b80632241dc52116101ec5780632241dc52146102db57806338eb2044146102ee5780633a5de07d146103015780633fafa1271461032d57600080fd5b806301ffc9a7146102295780630f6482141461025e57806311cda415146102805780631d831d5c146102a757600080fd5b3661022457005b600080fd5b34801561023557600080fd5b50610249610244366004615637565b61086b565b60405190151581526020015b60405180910390f35b34801561026a57600080fd5b5061027e610279366004615679565b61099c565b005b34801561028c57600080fd5b50305b6040516001600160a01b039091168152602001610255565b3480156102b357600080fd5b5061028f7f0000000000000000000000004d0edd347fb1fa21589c1e109b3474924be8763681565b61027e6102e9366004615692565b610a53565b61027e6102fc366004615719565b610b61565b34801561030d57600080fd5b5061031862030d4081565b60405163ffffffff9091168152602001610255565b34801561033957600080fd5b506002545b604051908152602001610255565b34801561035857600080fd5b5061027e61036736600461574a565b610b6b565b34801561037857600080fd5b50610249610387366004615794565b610d9e565b34801561039857600080fd5b5061027e6103a73660046157b1565b610ddd565b3480156103b857600080fd5b5061027e6103c7366004615794565b611030565b61027e6103da366004615719565b6110cf565b3480156103eb57600080fd5b5061044b6103fa366004615794565b6040805180820190915260008082526020820152506001600160a01b03166000908152600460209081526040918290208251808401909352805467ffffffffffffffff168352600101549082015290565b60405161025591906157d8565b34801561046457600080fd5b5061027e6104733660046157f9565b61126d565b34801561048457600080fd5b507f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb56661028f565b3480156104b757600080fd5b5061055e6104c6366004615794565b6040805160a0808201835260008083526020808401829052838501829052606080850183905260809485018390526001600160a01b039687168352600682529185902085519384018652805460ff8082161515865261010082041615159285019290925262010000820463ffffffff169584019590955266010000000000009004909416938101939093526001909101549082015290565b6040516102559190600060a08201905082511515825260208301511515602083015263ffffffff60408401511660408301526001600160a01b0360608401511660608301526080830151608083015292915050565b3480156105bf57600080fd5b506105d36105ce366004615794565b611408565b604051610255919061585c565b3480156105ec57600080fd5b5061028f7f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b34801561062057600080fd5b50610318620493e081565b34801561063757600080fd5b5061033e610646366004615794565b6114a8565b34801561065757600080fd5b5061028f7f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f81565b34801561068b57600080fd5b5061027e61069a366004615679565b6114d8565b61027e6106ad366004615794565b6115fe565b3480156106be57600080fd5b506102496106cd366004615794565b6001600160a01b039081166000908152600660205260409020546601000000000000900416151590565b34801561070357600080fd5b5061027e6107123660046158c3565b611741565b34801561072357600080fd5b5061072c61177a565b604051610255919061593d565b34801561074557600080fd5b5061076d7f000000000000000000000000000000000000000000000000000000000000000181565b6040516102559190615967565b34801561078657600080fd5b5061076d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107ba57600080fd5b5061033e6117c3565b3480156107cf57600080fd5b5060005461028f906001600160a01b031681565b3480156107ef57600080fd5b5061028f7f00000000000000000000000072ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef81565b34801561082357600080fd5b5061028f7f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d81565b34801561085757600080fd5b5061027e610866366004615974565b611819565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f18a5af270000000000000000000000000000000000000000000000000000000014806108fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f583ff5cc00000000000000000000000000000000000000000000000000000000145b8061094a57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff434c91400000000000000000000000000000000000000000000000000000000145b8061099657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6109d460608201356109b16020840184615794565b60808401356109c66060860160408701615794565b602086013560a087016119a8565b6080810135600560006109ea6020850185615794565b6001600160a01b03166001600160a01b031681526020019081526020016000206001016000828254610a1c91906159a3565b90915550610a509050610a326020830183615794565b608083013560608401803590610a4b9060408701615794565b611bd9565b50565b6000805b82811015610b0e57600060056000868685818110610a7757610a776159b6565b610a8d9260206080909202019081019150615794565b6001600160a01b03168152602081019190915260400160009081209150858584818110610abc57610abc6159b6565b9050608002016040016020810190610ad49190615794565b6001600160a01b0316148015610af257506022810154602382015414155b15610b055782610b01816159cc565b9350505b50600101610a57565b5060005b82811015610b5b57610b53848483818110610b2f57610b2f6159b6565b90506080020160008411610b44576000611d82565b610b4e84346159e6565b611d82565b600101610b12565b50505050565b610a508134611d82565b6001600160a01b038316610bab576040517f8d3329cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f0000000000000000000000004d0edd347fb1fa21589c1e109b3474924be876366001600160a01b031663ea78803f610be560025490565b6040518263ffffffff1660e01b8152600401610c0391815260200190565b602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190615a08565b90506001600160a01b038116610c86576040517fcaa06d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526006602052604090205460ff16610ce8576040517f04fdbe060000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b6000610cf261177a565b90506003816003811115610d0857610d08615927565b1480610d2557506002816003811115610d2357610d23615927565b145b15610d5c576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d79610d6761221c565b6001600160a01b03841690308961222b565b6000610d87838886886122a7565b9050610d9587858389612495565b50505050505050565b60007f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb5665b6001600160a01b0316826001600160a01b0316149050919050565b6000610de761177a565b90506003816003811115610dfd57610dfd615927565b1480610e1a57506002816003811115610e1857610e18615927565b145b15610e51576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e5c60025490565b9050610f597f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee39190615a08565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401610f1091815260200190565b602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190615a08565b82601e61261f565b6000610f686212750042615a25565b905064ffffffffff841615801590610f865750808464ffffffffff16105b15610fcd576040517f044691ac00000000000000000000000000000000000000000000000000000000815264ffffffffff8516600482015260248101829052604401610cdf565b64ffffffffff84166001557f455efa76af2a8686dc0dd3041bda89ece5ba4691277d525e2161003bbca8b2458461100261221c565b6040805164ffffffffff90931683526001600160a01b0390911660208301520160405180910390a150505050565b60007f0000000000000000000000000000000000000000000000000000000000000001600181111561106457611064615927565b146110bd577f00000000000000000000000000000000000000000000000000000000000000016040517fb039c395000000000000000000000000000000000000000000000000000000008152600401610cdf9190615967565b610a50816110ca836114a8565b612769565b6110df6110da61221c565b612b62565b611129576110eb61221c565b6040517f36183c8f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610cdf565b600060048161113b6020850185615794565b6001600160a01b0316815260208101919091526040908101600020805490925067ffffffffffffffff16906111769060608501908501615a38565b67ffffffffffffffff161180156111a65750600361119261177a565b60038111156111a3576111a3615927565b14155b15611269576111bb6060830160408401615a38565b815467ffffffffffffffff191667ffffffffffffffff91909116178155606082013560018201556111ef6020830183615794565b6001600160a01b03167fc69d3412489554fb7820c4c2784cb644b6c79bfc117444b93977d3d33a9b8eac6112296060850160408601615a38565b606085013561123661221c565b6040805167ffffffffffffffff909416845260208401929092526001600160a01b03169082015260600160405180910390a25b5050565b600061127860025490565b90506112db7f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebf573d6000803e3d6000fd5b60005b828110156113c0576000600660008686858181106112fe576112fe6159b6565b90506020020160208101906113139190615794565b6001600160a01b031681526020810191909152604001600090812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155600190600690868685818110611374576113746159b6565b90506020020160208101906113899190615794565b6001600160a01b03168152602081019190915260400160002080549115156101000261ff00199092169190911790556001016112de565b507f8021bce60b20a9afb57085869a3552e0ee5b272b868df894fb30c5e90e74c07283836113ec61221c565b6040516113fb93929190615a62565b60405180910390a1505050565b611410615586565b6001600160a01b0382166000908152600560209081526040918290208251608081018452815467ffffffffffffffff1681526001820154818401528351610440810180865291949293858401939192600286019284929083019184919082845b815481526020019060010190808311611470575050509183525050602091820154908201529082526023929092015491015292915050565b6001600160a01b0381166000908152600560205260408120600101546114ce8330612d39565b61099691906159a3565b61151060608201356114ed6020840184615794565b60808401356115026060860160408701615794565b602086013560a08701612dff565b7faaca6f6829d340365b5e6599e0d513cbb4602b94f58ccf16ac77d8d3ae7139ef6115416060830160408401615794565b61154e6020840184615794565b60608401356080850135602086013560017f0000000000000000000000000000000000000000000000000000000000000001600181111561159157611591615927565b1461159d5760006115a0565b60015b6115a861221c565b604080516001600160a01b039889168152968816602088015286019490945260608501929092526080840152151560a083015290911660c082015260e00160405180910390a1610a50610a326020830183615794565b6001600160a01b03808216600090815260066020908152604091829020825160a081018452815460ff808216151583526101008204161580159483019490945263ffffffff6201000082041694820194909452660100000000000090930490931660608301526001909201546080820152906116b1576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b60808101516001600160a01b0383166000908152600560205260409020600101541015611736576001600160a01b0382166000908152600560205260409081902060010154608083015191517fc3e11b79000000000000000000000000000000000000000000000000000000008152610cdf9290600401918252602082015260400190565b611269348383612ed5565b60005b818110156117755761176d838383818110611761576117616159b6565b90506104a002016114d8565b600101611744565b505050565b60015460009080820361178f57600091505090565b61179c62127500826159a3565b4210156117ab57600191505090565b804210156117bb57600291505090565b600391505090565b60004660001981016117d85761a4b191505090565b61a4b181036117e957600191505090565b62aa36a781036117fd5762066eee91505090565b62066eee81036118115762aa36a791505090565b600091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156118645750825b905060008267ffffffffffffffff1660011480156118815750303b155b90508115801561188f575080155b156118c6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156119105784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6002869055600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905583156119a05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60006119b261177a565b905060038160038111156119c8576119c8615927565b141580156119e8575060028160038111156119e5576119e5615927565b14155b8015611a1257506001600160a01b038616600090815260066020526040902054610100900460ff16155b15611a54576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602401610cdf565b6001600160a01b0386166000908152600560205260409020602381015415801590611a8f57508360018260230154611a8c91906159a3565b10155b15611ad8576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038816600482015260248101859052604401610cdf565b604080516001600160a01b03891660208201526000910160408051808303601f19018152918152815160209283012060601c60008181526003845282812060088a901c8252909352912054909150600160ff87161b1615611b77576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101869052604401610cdf565b6001600160a01b039081166000908152600360209081526040808320600889901c845282528083208054600160ff8b161b179055928a1682526005905220611bcf90611bc5906002016130f5565b89888888886144ab565b5050505050505050565b60017f00000000000000000000000000000000000000000000000000000000000000016001811115611c0d57611c0d615927565b148015611c1957508215155b15611c2857611c288484612769565b6000611c3360025490565b6040517f5dd8f6aa000000000000000000000000000000000000000000000000000000008152600481018290529091507f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd89190615a08565b6040517fc7fb92de00000000000000000000000000000000000000000000000000000000815260048101839052602481018590526001600160a01b03848116604483015260a06064830152600060a483018190526084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190615ac2565b6000611d916020840184615794565b6001600160a01b03808216600090815260066020908152604091829020825160a081018452815460ff808216151583526101008204161580159483019490945263ffffffff6201000082041694820194909452660100000000000090930490931660608301526001909201546080820152919250611e46576040517f4bba81f00000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b611e4f8461455d565b6000611e5a60025490565b9050611f577f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf6001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee19190615a08565b6001600160a01b0316636352211e836040518263ffffffff1660e01b8152600401611f0e91815260200190565b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f9190615a08565b82601c61261f565b60608201516001600160a01b031615801590611f985750611f7e6060860160408701615794565b6001600160a01b031682606001516001600160a01b031614155b8015611fbd57506000611fb16060870160408801615794565b6001600160a01b031614155b8015611fe357506001600160a01b03831660009081526005602052604090206022015415155b156120335760608201516040517f1460b5460000000000000000000000000000000000000000000000000000000081526001600160a01b0380861660048301529091166024820152604401610cdf565b60006120456060870160408801615794565b6001600160a01b031614801561207c57506001600160a01b0383166000908152600560205260409020602281015460239091015414155b1561208c5761208c848484612ed5565b6040518060a0016040528060006001600160a01b03168760400160208101906120b59190615794565b6001600160a01b03161415151581526020016000151581526020018660200160208101906120e39190615adb565b63ffffffff16815260200160006121006060890160408a01615794565b6001600160a01b0316146121235761211e6060880160408901615794565b612129565b83606001515b6001600160a01b039081168252606097880135602092830152948516600090815260068252604090819020835181549385015192850151998501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090941690151561ff0019161761010092151592909202919091177fffffffffffff000000000000000000000000000000000000000000000000ffff166201000063ffffffff909916989098027fffffffffffff0000000000000000000000000000000000000000ffffffffffff16979097176601000000000000919095160293909317855550506080015160019092019190915550565b6000612226614698565b905090565b6040516001600160a01b038481166024830152838116604483015260648201839052610b5b9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506146ea565b6000806122b360025490565b6040517f86202650000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0386811660248301529192506000917f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf1690638620265090604401602060405180830381865afa15801561233f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123639190615a08565b90506001600160a01b0381166123b7576040517fb61c181f000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386166024820152604401610cdf565b60006123c38630612d39565b604080516020810182526000815290517f13da83170000000000000000000000000000000000000000000000000000000081529192506001600160a01b038416916313da83179161242291309188918d918d918d918691600401615b51565b6020604051808303816000875af1158015612441573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124659190615ac2565b9350806124728730612d39565b61247c91906159a3565b841461248a5761248a615ba4565b505050949350505050565b6040805160208082018790528183018590526001600160a01b03841660608084019190915283518084039091018152608090920190925280519101206000906001600160a01b038516600090815260056020908152604080832081516104408101808452959650909461253e9387936002880192849291830191849182845b81548152602001906001019080831161251457505050918352505060209182015491015290614774565b80519091508190600284019061255790829060206155b2565b5060208201518160200155905050848260010160008282546125799190615a25565b92505081905550856001600160a01b0316846001600160a01b03167f584a41ff082fad99bb6e50c5767c347c762057fe5726539f0a8de49d84549c2385600185602001516125c791906159a3565b6125d3876002016130f5565b8c8b6125dd61221c565b60408051968752602087019590955293850192909252606084015260808301526001600160a01b031660a082015260c00160405180910390a350505050505050565b600061262961221c565b9050836001600160a01b0316816001600160a01b03161415801561271157506040517f348b684e0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d169063348b684e9060c401602060405180830381865afa1580156126eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270f9190615bba565b155b15610b5b576040517f264deeaa0000000000000000000000000000000000000000000000000000000081526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610cdf565b6000612774836114a8565b9050808211156127ba576040517f60ec3e710000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610cdf565b60006127c560025490565b6040517f86202650000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0386811660248301529192506000917f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf1690638620265090604401602060405180830381865afa158015612851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128759190615a08565b90506001600160a01b0381166128c9576040517fb61c181f000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386166024820152604401610cdf565b6001600160a01b03851661eeee14612ab2576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa15801561293b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295f9190615ac2565b905061296c8683876148ac565b6040517f9e6eec05000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0387811660248301526044820187905260006064830181905260c0608484015260c4830181905260e060a484015260e4830152831690639e6eec059061010401600060405180830381600087803b1580156129fa57600080fd5b505af1158015612a0e573d6000803e3d6000fd5b505050508481612a1e91906159a3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015612a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9f9190615ac2565b14612aac57612aac615ba4565b50612b5b565b6040517f9e6eec05000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0386811660248301526044820186905260006064830181905260c0608484015260c4830181905260e060a484015260e4830152821690639e6eec05908690610104016000604051808303818588803b158015612b4157600080fd5b505af1158015612b55573d6000803e3d6000fd5b50505050505b5050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001811115612b9757612b97615927565b03612d1d5760007f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f6001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c209190615a08565b9050806001600160a01b0316836001600160a01b0316148015612d165750806001600160a01b031663ab5d89436040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca09190615a08565b6001600160a01b03166380648b026040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d019190615a08565b6001600160a01b0316306001600160a01b0316145b9392505050565b7311110000000000000000000000000000000011113001610dc2565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11126001600160a01b03841601612d7c57506001600160a01b03811631610996565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015612ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d169190615ac2565b6001600160a01b0385166000908152600360209081526040808320600886901c8452909152902054600160ff84161b1615612e78576040517fa4e6bcec0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101839052604401610cdf565b6001600160a01b0385166000908152600360209081526040808320600886901c845290915290208054600160ff85161b1790556001600160a01b0385166000908152600460205260409020600101546119a09087868686866144ab565b60608101516001600160a01b0316612f24576040517f04fdbe060000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610cdf565b6000612f2e61177a565b90506003816003811115612f4457612f44615927565b1480612f6157506002816003811115612f5f57612f5f615927565b145b15612f98576040517fb10f8cca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831660009081526005602052604081206001810180549083905581549192909183908290612fd79067ffffffffffffffff16615bdc565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790559050600061300c846002016130f5565b60228501546023860181905590915060006130286001836159a3565b9050886001600160a01b0316837f47c5615513b0f669da2dd7e3362a34610ca2695d0a0e2da2160cee952eab203c838761306061221c565b6040805193845267ffffffffffffffff90921660208401526001600160a01b03169082015260600160405180910390a3600060405180606001604052808a606001516001600160a01b0316815260200187815260200160405180604001604052808867ffffffffffffffff1681526020018781525081525090506130e88b838c898d8661496a565b5050505050505050505050565b602081015460009080820361312c57507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75792915050565b600083600183161561314e578054600052600060205260406000209350613a01565b60028316156131935760018101546000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020526040600020935060019150613a01565b60048316156131d85760028101546000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020526040600020935060029150613a01565b600883161561321d5760038101546000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020526040600020935060039150613a01565b60108316156132625760048101546000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020526040600020935060049150613a01565b60208316156132a75760058101546000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020526040600020935060059150613a01565b60408316156132ec5760068101546000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020526040600020935060069150613a01565b60808316156133315760078101546000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020526040600020935060079150613a01565b6101008316156133775760088101546000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020526040600020935060089150613a01565b6102008316156133bd5760098101546000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020526040600020935060099150613a01565b61040083161561340357600a8101546000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a560205260406000209350600a9150613a01565b61080083161561344957600b8101546000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf89260205260406000209350600b9150613a01565b61100083161561348f57600c8101546000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c60205260406000209350600c9150613a01565b6120008316156134d557600d8101546000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb60205260406000209350600d9150613a01565b61400083161561351b57600e8101546000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc60205260406000209350600e9150613a01565b61800083161561356157600f8101546000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d260205260406000209350600f9150613a01565b620100008316156135a85760108101546000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020526040600020935060109150613a01565b620200008316156135ef5760118101546000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020526040600020935060119150613a01565b620400008316156136365760128101546000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020526040600020935060129150613a01565b6208000083161561367d5760138101546000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020526040600020935060139150613a01565b621000008316156136c45760148101546000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020526040600020935060149150613a01565b6220000083161561370b5760158101546000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020526040600020935060159150613a01565b624000008316156137525760168101546000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020526040600020935060169150613a01565b628000008316156137995760178101546000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020526040600020935060179150613a01565b63010000008316156137e15760188101546000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020526040600020935060189150613a01565b63020000008316156138295760198101546000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020526040600020935060199150613a01565b630400000083161561387157601a8101546000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d060205260406000209350601a9150613a01565b63080000008316156138b957601b8101546000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e60205260406000209350601b9150613a01565b631000000083161561390157601c8101546000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e60205260406000209350601c9150613a01565b632000000083161561394957601d8101546000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32260205260406000209350601d9150613a01565b634000000083161561399157601e8101546000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d73560205260406000209350601e9150613a01565b63800000008316156139d957601f8101546000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a960205260406000209350601f9150613a01565b7f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d7579350602091505b601e82116144a3576001821015613a5f57600283168015613a2d57600182015460005284602052613a56565b846000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020525b50604060002093505b6002821015613ab557600483168015613a8357600282015460005284602052613aac565b846000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020525b50604060002093505b6003821015613b0b57600883168015613ad957600382015460005284602052613b02565b846000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020525b50604060002093505b6004821015613b6157601083168015613b2f57600482015460005284602052613b58565b846000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020525b50604060002093505b6005821015613bb757602083168015613b8557600582015460005284602052613bae565b846000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020525b50604060002093505b6006821015613c0d57604083168015613bdb57600682015460005284602052613c04565b846000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020525b50604060002093505b6007821015613c6357608083168015613c3157600782015460005284602052613c5a565b846000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020525b50604060002093505b6008821015613cba5761010083168015613c8857600882015460005284602052613cb1565b846000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020525b50604060002093505b6009821015613d115761020083168015613cdf57600982015460005284602052613d08565b846000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020525b50604060002093505b600a821015613d685761040083168015613d3657600a82015460005284602052613d5f565b846000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56020525b50604060002093505b600b821015613dbf5761080083168015613d8d57600b82015460005284602052613db6565b846000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926020525b50604060002093505b600c821015613e165761100083168015613de457600c82015460005284602052613e0d565b846000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6020525b50604060002093505b600d821015613e6d5761200083168015613e3b57600d82015460005284602052613e64565b846000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6020525b50604060002093505b600e821015613ec45761400083168015613e9257600e82015460005284602052613ebb565b846000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6020525b50604060002093505b600f821015613f1b5761800083168015613ee957600f82015460005284602052613f12565b846000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26020525b50604060002093505b6010821015613f73576201000083168015613f4157601082015460005284602052613f6a565b846000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020525b50604060002093505b6011821015613fcb576202000083168015613f9957601182015460005284602052613fc2565b846000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020525b50604060002093505b6012821015614023576204000083168015613ff15760128201546000528460205261401a565b846000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020525b50604060002093505b601382101561407b57620800008316801561404957601382015460005284602052614072565b846000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020525b50604060002093505b60148210156140d35762100000831680156140a1576014820154600052846020526140ca565b846000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020525b50604060002093505b601582101561412b5762200000831680156140f957601582015460005284602052614122565b846000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020525b50604060002093505b60168210156141835762400000831680156141515760168201546000528460205261417a565b846000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020525b50604060002093505b60178210156141db5762800000831680156141a9576017820154600052846020526141d2565b846000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020525b50604060002093505b6018821015614234576301000000831680156142025760188201546000528460205261422b565b846000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020525b50604060002093505b601982101561428d5763020000008316801561425b57601982015460005284602052614284565b846000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020525b50604060002093505b601a8210156142e6576304000000831680156142b457601a820154600052846020526142dd565b846000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06020525b50604060002093505b601b82101561433f5763080000008316801561430d57601b82015460005284602052614336565b846000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6020525b50604060002093505b601c8210156143985763100000008316801561436657601c8201546000528460205261438f565b846000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6020525b50604060002093505b601d8210156143f1576320000000831680156143bf57601d820154600052846020526143e8565b846000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226020525b50604060002093505b601e82101561444a5763400000008316801561441857601e82015460005284602052614441565b846000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356020525b50604060002093505b601f8210156144a35763800000008316801561447157601f8201546000528460205261449a565b846000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96020525b50604060002093505b505050919050565b6040805160208082018890528183018790526001600160a01b038616606080840191909152835180840390910181526080830180855281519183019190912061048090930190935260009261451992918590828261040080828437600092019190915250879150614aa49050565b9050868114610d95576040517ee587d20000000000000000000000000000000000000000000000000000000081526004810182905260248101889052604401610cdf565b600061eeee61456f6020840184615794565b6001600160a01b03161490508080156145a2575061eeee6145966060840160408501615794565b6001600160a01b031614155b80156145c7575060006145bb6060840160408501615794565b6001600160a01b031614155b1561461a576145dc6060830160408401615794565b6040517ff41f6def0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610cdf565b62030d4061462e6040840160208501615adb565b63ffffffff1610801561463f575080155b15611269576146546040830160208401615adb565b6040517f555d0f1000000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015262030d406024820152604401610cdf565b60003660146146a633610d9e565b80156146b25750808210155b156146e2576000366146c483856159a3565b6146cf928290615c03565b6146d891615c2d565b60601c9250505090565b339250505090565b600080602060008451602086016000885af18061470d576040513d6000823e3d81fd5b50506000513d91508115614725578060011415614732565b6001600160a01b0384163b155b15610b5b576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610cdf565b61477c6155f0565b600083602001805161478d906159cc565b90819052905060016147a160206002615d59565b6147ab91906159a3565b8111156147e4576040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6020811015614879578160011660010361482057845184908260208110614810576148106159b6565b6020020152508391506109969050565b84518160208110614833576148336159b6565b602002015184604051602001614853929190918252602082015260400190565b60408051601f1981840301815291905280516020909101209350600191821c91016147e7565b506040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261492b8482614df2565b610b5b576040516001600160a01b0384811660248301526000604483015261496091869182169063095ea7b390606401612260565b610b5b84826146ea565b851580156149a9575060007f000000000000000000000000000000000000000000000000000000000000000060018111156149a7576149a7615927565b145b156149e0576040517f3cb7b09b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000816040516024016149f39190615d65565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f69d31fdd00000000000000000000000000000000000000000000000000000000179052905060007f00000000000000000000000000000000000000000000000000000000000000006001811115614a8157614a81615927565b03614a9857614a938588868487614e41565b610d95565b610d9585858386615324565b6020600582811b8216948552835194820394909452604060008181206002851615871b808503919091528386015190528181206004851615871b808503919091528286015190528181206008851615871b80850391909152606086015190528181206010851615871b8085039190915260808087015190915282822084861615881b8086039190915260a0870151905282822083861615881b8086039190915260c0870151905282822090851615871b8085039190915260e0860151905281812061010080861615881b80860392909252860151905281812061020080861615881b80860392909252610120870151909152828220610400861615881b808603919091526101408701519052828220610800861615881b808603919091526101608701519052828220611000861615881b808603919091526101808701519052828220612000861615881b808603919091526101a08701519052828220614000861615881b808603919091526101c08701519052828220618000861615881b808603919091526101e0870151905282822062010000861615881b8086039190915290860151905281812062020000851615871b80850391909152610220860151905281812062040000851615871b80850391909152610240860151905281812062080000851615871b80850391909152610260860151905281812062100000851615871b80850391909152610280860151905281812062200000851615871b808503919091526102a0860151905281812062400000851615871b808503919091526102c0860151905281812062800000851615871b808503919091526102e086015190528181206301000000851615871b8085039190915261030086015190528181206302000000851615871b8085039190915261032086015190528181206304000000851615871b8085039190915261034086015190528181206308000000851615871b8085039190915261036086015190528181206310000000851615871b8085039190915261038086015190528181206320000000851615871b808503919091526103a086015190528181206340000000851615871b808503919091526103c0860151905281812063800000009094161590951b91829003929092526103e090920151909152902090565b6000806000806020600086516020880160008a5af192503d91506000519050828015614e3757508115614e285780600114614e37565b6000866001600160a01b03163b115b9695505050505050565b81516040517fa66b327d0000000000000000000000000000000000000000000000000000000081526004810191909152486024820181905260009182907f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f6001600160a01b03169063a66b327d90604401602060405180830381865afa158015614ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ef39190615ac2565b90506000614f0483620493e0615db1565b614f0e9083615a25565b90506001600160a01b03891661eeee14801590614f2a57508615155b15615229576040517fa66b327d00000000000000000000000000000000000000000000000000000000815260606004820152602481018490526000907f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f6001600160a01b03169063a66b327d90604401602060405180830381865afa158015614fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fdb9190615ac2565b9050600084876040015163ffffffff16614ff59190615db1565b614fff9083615a25565b905061500b8184615a25565b8a1015615058578961501d8285615a25565b6040517f514f519600000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610cdf565b6000600282615067868e6159a3565b61507191906159a3565b61507b91906159e6565b90506150878183615a25565b91506150938185615a25565b6040517fbda009fe0000000000000000000000000000000000000000000000000000000081526001600160a01b03808f16600483015291955061514692508d917f00000000000000000000000072ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef169063bda009fe90602401602060405180830381865afa15801561511c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151409190615a08565b8b6148ac565b7f00000000000000000000000072ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef6001600160a01b0316634fb1a07b828d61517f61221c565b308e8d604001518c8a604051806020016040528060008152506040516020016151a9929190615dc8565b6040516020818303038152906040526040518963ffffffff1660e01b81526004016151da9796959493929190615de9565b60006040518083038185885af11580156151f8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526152219190810190615e4b565b505050615273565b8088101561526d576040517f514f51960000000000000000000000000000000000000000000000000000000081526004810189905260248101829052604401610cdf565b50859250865b6001600160a01b037f0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f16636e6e8a6a6152ac8684615a25565b3087866152b761221c565b30620493e08b8f6040518a63ffffffff1660e01b81526004016152e1989796959493929190615ef8565b60206040518083038185885af11580156152ff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b559190615ac2565b60003415615360576040517fd7468c32000000000000000000000000000000000000000000000000000000008152346004820152602401610cdf565b6001600160a01b03851661eeee1480159061537a57508315155b156154ff576040517fbda009fe0000000000000000000000000000000000000000000000000000000081526001600160a01b03808716600483015261542e9187917f00000000000000000000000072ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef169063bda009fe90602401602060405180830381865afa158015615404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154289190615a08565b866148ac565b7f00000000000000000000000072ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef6001600160a01b0316637b3a3c8b83606001516154693090565b604080516020810182526000815290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526154b29392918a91600401615f5a565b6000604051808303816000875af11580156154d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526154f99190810190615e4b565b50615502565b50825b6040517f928c169a00000000000000000000000000000000000000000000000000000000815260649063928c169a9083906155439030908890600401615f8c565b60206040518083038185885af1158015615561573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119a09190615ac2565b60408051608081018252600080825260208201529081016155a56155f0565b8152602001600081525090565b82602081019282156155e0579160200282015b828111156155e05782518255916020019190600101906155c5565b506155ec929150615603565b5090565b60405180604001604052806155a5615618565b5b808211156155ec5760008155600101615604565b6040518061040001604052806020906020820280368337509192915050565b60006020828403121561564957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612d1657600080fd5b60006104a0828403121561568c57600080fd5b50919050565b600080602083850312156156a557600080fd5b823567ffffffffffffffff808211156156bd57600080fd5b818501915085601f8301126156d157600080fd5b8135818111156156e057600080fd5b8660208260071b85010111156156f557600080fd5b60209290920196919550909350505050565b60006080828403121561568c57600080fd5b60006080828403121561572b57600080fd5b612d168383615707565b6001600160a01b0381168114610a5057600080fd5b6000806000806080858703121561576057600080fd5b84359350602085013561577281615735565b925060408501359150606085013561578981615735565b939692955090935050565b6000602082840312156157a657600080fd5b8135612d1681615735565b6000602082840312156157c357600080fd5b813564ffffffffff81168114612d1657600080fd5b815167ffffffffffffffff1681526020808301519082015260408101610996565b6000806020838503121561580c57600080fd5b823567ffffffffffffffff8082111561582457600080fd5b818501915085601f83011261583857600080fd5b81358181111561584757600080fd5b8660208260051b85010111156156f557600080fd5b815167ffffffffffffffff1681526020808301518183015260408084015180516104808501939260009086015b848210156158a7578251815291840191600191909101908401615889565b5050500151610440830152606092909201516104609091015290565b600080602083850312156158d657600080fd5b823567ffffffffffffffff808211156158ee57600080fd5b818501915085601f83011261590257600080fd5b81358181111561591157600080fd5b8660206104a0830285010111156156f557600080fd5b634e487b7160e01b600052602160045260246000fd5b602081016004831061595157615951615927565b91905290565b60028110610a5057610a50615927565b6020810161595183615957565b60006020828403121561598657600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156109965761099661598d565b634e487b7160e01b600052603260045260246000fd5b600060001982036159df576159df61598d565b5060010190565b600082615a0357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615a1a57600080fd5b8151612d1681615735565b808201808211156109965761099661598d565b600060208284031215615a4a57600080fd5b813567ffffffffffffffff81168114612d1657600080fd5b6040808252810183905260008460608301825b86811015615aa5578235615a8881615735565b6001600160a01b0316825260209283019290910190600101615a75565b5080925050506001600160a01b0383166020830152949350505050565b600060208284031215615ad457600080fd5b5051919050565b600060208284031215615aed57600080fd5b813563ffffffff81168114612d1657600080fd5b60005b83811015615b1c578181015183820152602001615b04565b50506000910152565b60008151808452615b3d816020860160208601615b01565b601f01601f19169290920160200192915050565b60006001600160a01b03808a168352886020840152876040840152808716606084015285608084015280851660a08401525060e060c0830152615b9760e0830184615b25565b9998505050505050505050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215615bcc57600080fd5b81518015158114612d1657600080fd5b600067ffffffffffffffff808316818103615bf957615bf961598d565b6001019392505050565b60008085851115615c1357600080fd5b83861115615c2057600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008135818116916014851015615c6d5780818660140360031b1b83161692505b505092915050565b600181815b80851115615cb0578160001904821115615c9657615c9661598d565b80851615615ca357918102915b93841c9390800290615c7a565b509250929050565b600082615cc757506001610996565b81615cd457506000610996565b8160018114615cea5760028114615cf457615d10565b6001915050610996565b60ff841115615d0557615d0561598d565b50506001821b610996565b5060208310610133831016604e8410600b8410161715615d33575081810a610996565b615d3d8383615c75565b8060001904821115615d5157615d5161598d565b029392505050565b6000612d168383615cb8565b60006080820190506001600160a01b038351168252602083015160208301526040830151615daa6040840182805167ffffffffffffffff168252602090810151910152565b5092915050565b80820281158282048414176109965761099661598d565b828152604060208201526000615de16040830184615b25565b949350505050565b60006001600160a01b03808a168352808916602084015280881660408401525085606083015263ffffffff851660808301528360a083015260e060c0830152615b9760e0830184615b25565b634e487b7160e01b600052604160045260246000fd5b600060208284031215615e5d57600080fd5b815167ffffffffffffffff80821115615e7557600080fd5b818401915084601f830112615e8957600080fd5b815181811115615e9b57615e9b615e35565b604051601f8201601f19908116603f01168101908382118183101715615ec357615ec3615e35565b81604052828152876020848701011115615edc57600080fd5b615eed836020830160208801615b01565b979650505050505050565b60006101006001600160a01b03808c1684528a6020850152896040850152808916606085015280881660808501525063ffffffff861660a08401528460c08401528060e0840152615f4b81840185615b25565b9b9a5050505050505050505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152614e376080830184615b25565b6001600160a01b0383168152604060208201526000615de16040830184615b2556fea2646970667358221220e36c3a37ad02e31b40907826cff34d3f0945bd4e2aeafaa5630e4eb1d871cd7b64736f6c63430008170033",
1426
+ "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract JBArbitrumSuckerDeployer\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"enum JBAddToBalanceMode\",\"name\":\"addToBalanceMode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"trusted_forwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"JBArbitrumSucker_ChainNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cost\",\"type\":\"uint256\"}],\"name\":\"JBArbitrumSucker_NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"name\":\"JBPermissioned_Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minGasLimit\",\"type\":\"uint256\"}],\"name\":\"JBSucker_BelowMinGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"JBSucker_Deprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"givenTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumTime\",\"type\":\"uint256\"}],\"name\":\"JBSucker_DeprecationTimestampTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"JBSucker_ExpectedMsgValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"JBSucker_InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"received\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"}],\"name\":\"JBSucker_InsufficientMsgValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"}],\"name\":\"JBSucker_InvalidNativeRemoteAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"inboxRoot\",\"type\":\"bytes32\"}],\"name\":\"JBSucker_InvalidProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"JBSucker_LeafAlreadyExecuted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum JBAddToBalanceMode\",\"name\":\"mode\",\"type\":\"uint8\"}],\"name\":\"JBSucker_ManualNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"JBSucker_NoTerminalForToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"JBSucker_NotPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumAmount\",\"type\":\"uint256\"}],\"name\":\"JBSucker_QueueInsufficientSize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"mappedTo\",\"type\":\"address\"}],\"name\":\"JBSucker_TokenAlreadyMapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"JBSucker_TokenHasInvalidEmergencyHatchState\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"JBSucker_TokenNotMapped\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"JBSucker_UnexpectedMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"JBSucker_ZeroBeneficiary\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"JBSucker_ZeroERC20Token\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MerkleLib__insert_treeIsFull\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"autoAddedToBalance\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"DeprecationTimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"EmergencyHatchOpened\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hashed\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InsertToOutboxTree\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NewInboxTreeRoot\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"RootToRemote\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADD_TO_BALANCE_MODE\",\"outputs\":[{\"internalType\":\"enum JBAddToBalanceMode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ARBINBOX\",\"outputs\":[{\"internalType\":\"contract IInbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GATEWAYROUTER\",\"outputs\":[{\"internalType\":\"contract IArbGatewayRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LAYER\",\"outputs\":[{\"internalType\":\"enum JBLayer\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_BASE_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_ERC20_MIN_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"addOutstandingAmountToBalance\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"amountToAddToBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}],\"internalType\":\"struct JBClaim\",\"name\":\"claimData\",\"type\":\"tuple\"}],\"name\":\"claim\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}],\"internalType\":\"struct JBClaim[]\",\"name\":\"claims\",\"type\":\"tuple[]\"}],\"name\":\"claim\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"enableEmergencyHatchFor\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminalTokenAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBLeaf\",\"name\":\"leaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[32]\",\"name\":\"proof\",\"type\":\"bytes32[32]\"}],\"internalType\":\"struct JBClaim\",\"name\":\"claimData\",\"type\":\"tuple\"}],\"name\":\"exitThroughEmergencyHatch\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct JBInboxTreeRoot\",\"name\":\"remoteRoot\",\"type\":\"tuple\"}],\"internalType\":\"struct JBMessageRoot\",\"name\":\"root\",\"type\":\"tuple\"}],\"name\":\"fromRemote\",\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"inboxOf\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct JBInboxTreeRoot\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_projectId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isMapped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minBridgeAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenMapping\",\"name\":\"map\",\"type\":\"tuple\"}],\"name\":\"mapToken\",\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minBridgeAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBTokenMapping[]\",\"name\":\"maps\",\"type\":\"tuple[]\"}],\"name\":\"mapTokens\",\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"outboxOf\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32[32]\",\"name\":\"branch\",\"type\":\"bytes32[32]\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"internalType\":\"struct MerkleLib.Tree\",\"name\":\"tree\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"numberOfClaimsSent\",\"type\":\"uint256\"}],\"internalType\":\"struct JBOutboxTree\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"peer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"peerChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"prepare\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"projectId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"remoteTokenFor\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"emergencyHatch\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"minGas\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minBridgeAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct JBRemoteToken\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"timestamp\",\"type\":\"uint40\"}],\"name\":\"setDeprecation\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"enum JBSuckerState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"toRemote\",\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addOutstandingAmountToBalance(address)\":{\"params\":{\"token\":\"The address of the terminal token to add to the project's balance.\"}},\"amountToAddToBalanceOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the amount to add to balance for.\"}},\"claim((address,(uint256,address,uint256,uint256),bytes32[32]))\":{\"params\":{\"claimData\":\"The terminal token, merkle tree leaf, and proof for the claim.\"}},\"claim((address,(uint256,address,uint256,uint256),bytes32[32])[])\":{\"params\":{\"claims\":\"A list of claims to perform (including the terminal token, merkle tree leaf, and proof for each claim).\"}},\"constructor\":{\"params\":{\"addToBalanceMode\":\"The mode of adding tokens to balance.\",\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"permissions\":\"A contract storing permissions.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"enableEmergencyHatchFor(address[])\":{\"details\":\"For use when a token or a few tokens are no longer compatible with a bridge.\",\"params\":{\"tokens\":\"The terminal tokens to enable the emergency hatch for.\"}},\"exitThroughEmergencyHatch((address,(uint256,address,uint256,uint256),bytes32[32]))\":{\"params\":{\"claimData\":\"The terminal token, merkle tree leaf, and proof for the claim\"}},\"fromRemote((address,uint256,(uint64,bytes32)))\":{\"details\":\"This can only be called by the messenger contract on the local chain, with a message from the remote peer.\",\"params\":{\"root\":\"The merkle root, token, and amount being received.\"}},\"inboxOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the inbox for.\"}},\"initialize(uint256)\":{\"params\":{\"_projectId\":\"The ID of the project (on the local chain) that this sucker is associated with.\"}},\"isMapped(address)\":{\"params\":{\"token\":\"The terminal token to check.\"},\"returns\":{\"_0\":\"A boolean which is `true` if the token is mapped to a remote token and `false` if it is not.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"mapToken((address,uint32,address,uint256))\":{\"params\":{\"map\":\"The local and remote terminal token addresses to map, and minimum amount/gas limits for bridging them.\"}},\"mapTokens((address,uint32,address,uint256)[])\":{\"params\":{\"maps\":\"A list of local and remote terminal token addresses to map, and minimum amount/gas limits for bridging them.\"}},\"outboxOf(address)\":{\"params\":{\"token\":\"The local terminal token to get the remote token for.\"}},\"peerChainId()\":{\"returns\":{\"_0\":\"chainId of the peer.\"}},\"prepare(uint256,address,uint256,address)\":{\"details\":\"This adds the tokens and funds to the outbox tree for the `token`. They will be bridged by the next call to `toRemote` for the same `token`.\",\"params\":{\"beneficiary\":\"The address of the recipient of the tokens on the remote chain.\",\"minTokensReclaimed\":\"The minimum amount of terminal tokens to cash out for. If the amount cashed out is less than this, the transaction will revert.\",\"projectTokenCount\":\"The number of project tokens to prepare for bridging.\",\"token\":\"The address of the terminal token to cash out for.\"}},\"remoteTokenFor(address)\":{\"params\":{\"token\":\"The local terminal token to get the remote token for.\"}},\"setDeprecation(uint40)\":{\"params\":{\"timestamp\":\"The time after which the sucker will be deprecated. Or `0` to remove the upcoming deprecation.\"}},\"state()\":{\"returns\":{\"_0\":\"state The current deprecation state\"}},\"toRemote(address)\":{\"details\":\"This sends the outbox root for the specified `token` to the remote chain.\",\"params\":{\"token\":\"The terminal token being bridged.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"ADD_TO_BALANCE_MODE()\":{\"notice\":\"Whether the `amountToAddToBalance` gets added to the project's balance automatically when `claim` is called or manually by calling `addOutstandingAmountToBalance`.\"},\"ARBINBOX()\":{\"notice\":\"The inbox used to send messages between the local and remote sucker.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"GATEWAYROUTER()\":{\"notice\":\"The gateway router for the specific chain\"},\"LAYER()\":{\"notice\":\"The layer that this contract is on.\"},\"MESSENGER_BASE_GAS_LIMIT()\":{\"notice\":\"A reasonable minimum gas limit for a basic cross-chain call. The minimum amount of gas required to call the `fromRemote` (successfully/safely) on the remote chain.\"},\"MESSENGER_ERC20_MIN_GAS_LIMIT()\":{\"notice\":\"A reasonable minimum gas limit used when bridging ERC-20s. The minimum amount of gas required to (successfully/safely) perform a transfer on the remote chain.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addOutstandingAmountToBalance(address)\":{\"notice\":\"Adds the reclaimed `token` balance to the projects terminal. Can only be used if `ADD_TO_BALANCE_MODE` is `MANUAL`.\"},\"amountToAddToBalanceOf(address)\":{\"notice\":\"The outstanding amount of tokens to be added to the project's balance by `claim` or `addOutstandingAmountToBalance`.\"},\"claim((address,(uint256,address,uint256,uint256),bytes32[32]))\":{\"notice\":\"`JBClaim` project tokens which have been bridged from the remote chain for their beneficiary.\"},\"claim((address,(uint256,address,uint256,uint256),bytes32[32])[])\":{\"notice\":\"Performs multiple claims.\"},\"deployer()\":{\"notice\":\"The address of this contract's deployer.\"},\"enableEmergencyHatchFor(address[])\":{\"notice\":\"Enables the emergency hatch for a list of tokens, allowing users to exit on the chain they deposited on.\"},\"exitThroughEmergencyHatch((address,(uint256,address,uint256,uint256),bytes32[32]))\":{\"notice\":\"Lets user exit on the chain they deposited in a scenario where the bridge is no longer functional.\"},\"fromRemote((address,uint256,(uint64,bytes32)))\":{\"notice\":\"Receive a merkle root for a terminal token from the remote project.\"},\"inboxOf(address)\":{\"notice\":\"The inbox merkle tree root for a given token.\"},\"initialize(uint256)\":{\"notice\":\"Initializes the sucker with the project ID and peer address.\"},\"isMapped(address)\":{\"notice\":\"Checks whether the specified token is mapped to a remote token.\"},\"mapToken((address,uint32,address,uint256))\":{\"notice\":\"Map an ERC-20 token on the local chain to an ERC-20 token on the remote chain, allowing that token to be bridged.\"},\"mapTokens((address,uint32,address,uint256)[])\":{\"notice\":\"Map multiple ERC-20 tokens on the local chain to ERC-20 tokens on the remote chain, allowing those tokens to be bridged.\"},\"outboxOf(address)\":{\"notice\":\"Information about the token on the remote chain that the given token on the local chain is mapped to.\"},\"peer()\":{\"notice\":\"The peer sucker on the remote chain.\"},\"peerChainId()\":{\"notice\":\"Returns the chain on which the peer is located.\"},\"prepare(uint256,address,uint256,address)\":{\"notice\":\"Prepare project tokens and the cash out amount backing them to be bridged to the remote chain.\"},\"projectId()\":{\"notice\":\"The ID of the project (on the local chain) that this sucker is associated with.\"},\"remoteTokenFor(address)\":{\"notice\":\"Information about the token on the remote chain that the given token on the local chain is mapped to.\"},\"setDeprecation(uint40)\":{\"notice\":\"Set or remove the time after which this sucker will be deprecated, once deprecated the sucker will no longer be functional and it will let all users exit.\"},\"state()\":{\"notice\":\"Reports the deprecation state of the sucker.\"},\"toRemote(address)\":{\"notice\":\"Bridge the project tokens, cashed out funds, and beneficiary information for a given `token` to the remote chain.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/JBArbitrumSucker.sol\":\"JBArbitrumSucker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solady/=node_modules/solady/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/packages/contracts/contracts/forge-std/src/\"]},\"sources\":{\"node_modules/@arbitrum/nitro-contracts/src/bridge/IBridge.sol\":{\"keccak256\":\"0xeba1e59fa4dd56d0d2cd775ab726d08e470bf3056f5473ce62b98499e55ff7bd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fca93cb8bf8369a86d299b263081d1789fd5f0b2579cd229f26e007b8f269d5f\",\"dweb:/ipfs/QmVwEQLsy7sSGwJ7MEWeHPwSunKu1Hr5YozzNy6CW1prmH\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/IDelayedMessageProvider.sol\":{\"keccak256\":\"0x1f216daf990c329310f44818e1c05d81c07fe875a5a07dd379d2c8fac921f208\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d6ccdab97fb5c8b7d9a80b713dc6bd9bc0e71e9d41900ac5c7cf96cb2643aad6\",\"dweb:/ipfs/QmeypCFXVXbTu3RehtFti4PMfuTCyzVKDwfGiZ2PeewRSG\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/IInbox.sol\":{\"keccak256\":\"0xee6e59278213c18faa2908a8e540ca26b288f47e5b65822d5140ce021488a00c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://8dac67605a1aa2d35c884603a51f2791c647a6d8d75ba1d698816fa90c2645f8\",\"dweb:/ipfs/QmSVjgCcGsPGrXskZAMo9FDnpYRQ8tpmMhW7uxftYFfDJD\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/IInboxBase.sol\":{\"keccak256\":\"0x2d8800ecb63220a0174770080f714f5de9823ddd08888e23e79b80282a4940ea\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5e4f3420abcddbac00e09cdfbb1b6af9de7fa73b5b27c53b71c06e9a35ae0ba3\",\"dweb:/ipfs/QmTJimLXfWzUB8F8aPFAdeMsYVTFY1SywPPDEuFk397JNT\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/IOutbox.sol\":{\"keccak256\":\"0x2de956f0a532a8db249be0eff614db7caa73eec2afb485c1ac9aed78ecf39e5f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d2ceb5dc3a34dc692f9a6c6eec9227ad7f2cfc423e8fd55460427e013819493b\",\"dweb:/ipfs/Qmd3F4xSMP1aFCq2GcwEESVhqxWzGdH8y5ReK3V8UBNEZc\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/IOwnable.sol\":{\"keccak256\":\"0x0ce0ccc2cd25968ab37aef146be9c9a615c3f2ad239fa759d1745190666729fd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://6516e1a94fdc9530b90ceb408e3083ecc7e844afd4fc34a7ccab89a191c3b88f\",\"dweb:/ipfs/QmZ4UwQe1pgTJxx1XqzcAKTgu9Wo6qZA5WSCPHygFJSdi8\"]},\"node_modules/@arbitrum/nitro-contracts/src/bridge/ISequencerInbox.sol\":{\"keccak256\":\"0x97341bd4cc27f3eae77980a722dfeb2b0b29492e920740a6138aa0812711c69a\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://78acecb4885ba0b5c1a91d5c79cc99c6ff16e0ebffd5dd1e9f99ac6e6d11344d\",\"dweb:/ipfs/QmSDK7G79KKB1ETvG5Sd1ekWdeGi3RwnUCq9GtCbKonCd5\"]},\"node_modules/@arbitrum/nitro-contracts/src/libraries/AddressAliasHelper.sol\":{\"keccak256\":\"0x53ab7b4f3e0179f4579bdaccbd68ef79246d28ce95632f8e3b585356fca0d6c0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4239875db36ea53f47c072aec3890e439d21dcac09728b0faadb607119149895\",\"dweb:/ipfs/QmejkGYPU5GFBTGwEySAYHtuJGgniiKdvtGGx9uUgsM5N9\"]},\"node_modules/@arbitrum/nitro-contracts/src/libraries/IGasRefunder.sol\":{\"keccak256\":\"0x35d07855184f8d31087ad0b67d1a8ccd0653a3a6c59c02513eb9c53b3371a385\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://20eec9a16fa9003971a1ac5f5f7a3b7c558c57cba01f98c50959b5c93786f639\",\"dweb:/ipfs/QmaRQpgwZVQYe2EsFS4UrvrnFabJLQwUaBXm14C8V4rhBM\"]},\"node_modules/@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol\":{\"keccak256\":\"0x4bc9f91d6a3973af46cc95dd5fe9a29d23e2e64b13512dd0b2d1bfcde705f132\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7617f08af8fd8aa01a4a5e94ed0c4f15a8567665851c72765e82dbdd8ab20462\",\"dweb:/ipfs/QmYuVxm3JtrPwWBXhtEJZkhuv2SQ1iBH4j6ypP6uRAWAgF\"]},\"node_modules/@bananapus/core-v5/src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"]},\"node_modules/@bananapus/core-v5/src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0xac8ed1afe397bb4c4060d947ec5765cf600cefb6d10829157153f0a4324807ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6be3361a27a1944853407d61f33813b21403a63e0d4113c7b7e84ce3b87f5d61\",\"dweb:/ipfs/QmdFTXKU1j4gdFL6nNx1LTTtbgoaRgdnwyVJ7UaQDp9Uo1\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBController.sol\":{\"keccak256\":\"0xc903b660dccd57e610e1d834407b2bead1fc456153e106f2582407e505a39a96\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://624bb32a7cd93ce056ea2705332821abd9cd7c83f419bbb279ad96e47c2b6013\",\"dweb:/ipfs/QmXKmQAGecR2zYAXMZ54erg5QnYoWNue4Ek3jCJCUyfW7q\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x5f0dc5968277b572ba5dc74518906dfb33a9684b7a199c7843f4e66af1c11fb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://323ce3731aebdf5bf8055b8550055e856feed700d293af8beaf8a750625a0975\",\"dweb:/ipfs/QmU2ErV2uzvXnsJt1qBKm73H2qWcEqYtQGHtZEpx93DaWJ\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xc2c0a75d97e3a20fd6964b09381736de03f56e58c27a874a0c96a21e02d0e577\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ef8d476174aca6c35f7fb24ff8be619191bfd22038d3729ca4803252d3dae6a\",\"dweb:/ipfs/QmdWtAwf2A4P88of9gUyWY6hodT9fqpxJK4NBVQt9ys2Jd\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"]},\"node_modules/@bananapus/core-v5/src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0xe3f0cca072afcac9ee3c875b7439a6edb4a9276e9dba01184d11e8270a25f258\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc3e437b8588965b911a750dc632ac1aca4f9348a137877047a62df598a17bc7\",\"dweb:/ipfs/QmdXjVMdCFcw8HFbhxZZbj9KzxNx2ThjVfcDhFBt1khfvL\"]},\"node_modules/@bananapus/core-v5/src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"]},\"node_modules/@bananapus/core-v5/src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"]},\"node_modules/@bananapus/core-v5/src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"]},\"node_modules/@bananapus/core-v5/src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"]},\"node_modules/@bananapus/core-v5/src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0x65e26b78a1f00d81a21abd255c9670b600efca60cf36a993b8f48ecb268464a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d108c721c4281b13de34641befd2a1e9fac73a70195ef5ca957abda6fca9acca\",\"dweb:/ipfs/QmWoJo7wzSKY3z4YCpFvR8DoCUTKviiuFEj2tBkcgKUqW1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"]},\"node_modules/@bananapus/core-v5/src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplit.sol\":{\"keccak256\":\"0xfcedbb8b6937ee00578a4c3ec70e2555a2c0a5c18f1eba3b96701b07c1dd94a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7014a7b6f30f35941898eea1d9d32a2d75c807f59e2f0fcb430efc8c25edc1da\",\"dweb:/ipfs/QmWitPTxQCDUfoWrRRrYvE9YhuTcwCAXxVvkVLNk9Jsem1\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"]},\"node_modules/@bananapus/core-v5/src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"]},\"node_modules/@bananapus/core-v5/src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"]},\"node_modules/@bananapus/permission-ids-v5/src/JBPermissionIds.sol\":{\"keccak256\":\"0x03d598c570091f294bebe9c7b59bfc2d907d5b70a3193c3bdb9ddec67edae1e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afb1aefda01e53fa79441bab1fa9cb46154e0db9d16bec8f9b7fa80d200916db\",\"dweb:/ipfs/Qmbkt9HgWmz5rgehRttkzFqW9SkwRYvXYqtHmuxHVxz8ZD\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"]},\"node_modules/@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/structs/BitMaps.sol\":{\"keccak256\":\"0x3616f1b0d0a9ee1ca8f0953ecaceb9230e36f691c7974d30f964212acff52d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4bebdd07b31ac28e3e596ac6f0333da90a4e332405aa7d65f3a3a7e0b4cf15e\",\"dweb:/ipfs/QmckoDU5bBnye2UtPcrfJNahLD2FbxrnPP9nrREMWPpnug\"]},\"node_modules/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x1388494b421db04cf6f33ab69580edc5b187328688818504b87eaea9fa3c0d2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f6bf027d6fe4f102360bf7e988923f73510697a87d970b28093a0d950d9a3e5\",\"dweb:/ipfs/QmUhdrSqiwhBp2cZPef6jcTfQ8Md3KoyfnK2ZteseAvude\"]},\"src/JBArbitrumSucker.sol\":{\"keccak256\":\"0x5c3280d98be5017e10e3746a915f3e41dc8a1816d0bc1ede57a527249fd49cf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f118eac276f999b057f5534c3b5c29b20cff1e3715b5a6d3561c114ac5701329\",\"dweb:/ipfs/QmUyz82zbszLfpqyUm9xaUuvGy7Evcibdp8ozFWuHCKM8N\"]},\"src/JBSucker.sol\":{\"keccak256\":\"0x79a301ca37984bb8be6574a29d9597857825ac866d84668083acc015ed5c2d41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://352dc9899b2febb5e978b79a8f1ecbf937b8a089e8206bf4613bfa758020797f\",\"dweb:/ipfs/QmXHcDruSZW2UhpWLxMRkeG1xFutmNGYz3Zx3jCNVZsMZw\"]},\"src/deployers/JBArbitrumSuckerDeployer.sol\":{\"keccak256\":\"0xdd368c5a74df69cceeeb6409a3d86bb5b1f1b9354189a66d14c48741d52740a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb88912127e2cec3cf409b7bec52c940c66b71dc81e82145eb7ae518c0fc52bb\",\"dweb:/ipfs/QmdtU4vQBtWADvow2eSVRu7zGrzCdxVDBPFd6SAftWNbG9\"]},\"src/deployers/JBSuckerDeployer.sol\":{\"keccak256\":\"0xb06eede93f0cbda6297d5d08d1f93bef23a5cec5de29bfe26c77f921cd2e1835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c6bd4bec3686b289a1f00ef0173101a609563543348eaf2421ef30ad70688c7\",\"dweb:/ipfs/Qmf7Av7XeML7xBPhdHfaWKdeZHDRsy19WmzEbAs6VqJ2FY\"]},\"src/enums/JBAddToBalanceMode.sol\":{\"keccak256\":\"0x0c18399ed85e6ad5ade75726af9f74e876ae4cf1e8e9d320d50006e320288e1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0080f23626ae9121aad63ba6ec37e95a5b6843de4732f9c7f16b4d09ae3d0880\",\"dweb:/ipfs/QmXudDnVpDAy7Yu7DRb7AZVJEsuK6afse7WtLE2uK12xYo\"]},\"src/enums/JBLayer.sol\":{\"keccak256\":\"0x15d74493cb3713c6883e144a39bda3d0e4f9f2b7eed1ea88491e788e2e64f992\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee37c37e5488bbb279302ba70f88e314921c44723452edd3bd4aeabac2d5011f\",\"dweb:/ipfs/QmbCwjeEW5dRmKZ6LqjPCGSX4gjaEmss4EXjs2dU6i1w6t\"]},\"src/enums/JBSuckerState.sol\":{\"keccak256\":\"0x0ee6d0d08cd4f538b8c9ff59d480c7c3371c4cb1971e5a67a89088b4b040a608\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8cce8e51b084cc9a844dc1040aba00b63b01f97868d52cc9f38b9d354fd741f\",\"dweb:/ipfs/QmTveKLmdZAGbwEwaCTBwofSBtckZsDcew3E7iNTnpeskY\"]},\"src/interfaces/IArbGatewayRouter.sol\":{\"keccak256\":\"0x915da748a184ca04585e6da1b10cbdb7de99698de1cc31fa0f6d75d02eae4e8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7204f56dc2c16a2c9a92785aadc67d737b46308d0403fc9a2a8db901700a43e\",\"dweb:/ipfs/Qma8RjHimvNwoQfzxbGYiJsTNWwTZaLN5N5ogBYu663xmN\"]},\"src/interfaces/IArbL1GatewayRouter.sol\":{\"keccak256\":\"0xef051fb5111d5623db5209ea347790bc1a82eb7ba4de6b36a70405432b02776b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://938723e93e9f17434a8688b2be8d040b54c244cab39267e03bfb49b0595badea\",\"dweb:/ipfs/QmV5C7KRPFu5DrAk7xqAFu4W9cJmqzegUbuGFK921un5JJ\"]},\"src/interfaces/IArbL2GatewayRouter.sol\":{\"keccak256\":\"0x0fb8b6fb6194c2738378b10ed1cb93eb27934c19e55fe001a44ab912738b4485\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a35f25cddd85587e05aff0e58672700d57f35161e17bab0d19623c2afa905aec\",\"dweb:/ipfs/QmaiQaWaUhXJnCdB95RmDRY5uh79DQLfk5aY1AR4aX2H7h\"]},\"src/interfaces/IJBArbitrumSucker.sol\":{\"keccak256\":\"0xc0125d81d6f6e5acad1a8cd577bb16d770e5eab1d34939f76338b70453a39107\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3966a9082d7883932db709290b9346bc85f1eee8ef61148d2afdbee4838d7a7\",\"dweb:/ipfs/QmUKsWNQgu4rTizheK8HnTAc8iVG3AeY7NNCxZ6LgRNMn2\"]},\"src/interfaces/IJBArbitrumSuckerDeployer.sol\":{\"keccak256\":\"0xcc01de6dc009398f3418e0b04bfc843f323650a7e2835d969f386cf547e1034b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f94cc870879012b94fc00e72b441c3bc70b8776e6600598ec26b4f17b26e2086\",\"dweb:/ipfs/QmTobhhcHcAMfJfQU4zin88Li8PTDNLaroXm7MX7hKauXu\"]},\"src/interfaces/IJBSucker.sol\":{\"keccak256\":\"0xc5637080a3bd632b53ca57457a09f252647e1aedd007a21ba9d2fcff8859b343\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://285815a5dc3f29bee503ecc9e7614d49f5e8fd44a6037c3a72e787694a59aebd\",\"dweb:/ipfs/QmccChKT2Gs1Tmeg4LgQAY1ejigdvQYHBo8AQCMfHLMg2j\"]},\"src/interfaces/IJBSuckerDeployer.sol\":{\"keccak256\":\"0x6913c0677d52e01cd2d6f785846a255fcc1783e6b90d15a2f296289d4f482026\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24781b17a192ec8bc2d8ab47400a06e4eed2320bc5537489a1f7bbdaed078ad2\",\"dweb:/ipfs/QmbTUkAvFxcAHhjy8hvJ4uUo4PyeKK4BVuU4YtR3QT7s68\"]},\"src/interfaces/IJBSuckerExtended.sol\":{\"keccak256\":\"0x36c5d67d1d180de68cf467d6c2dd64b1f22678a4f85b2458e4207ccbaed3b39a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb3a0f07339cb11c508ef828f9c448841cc5f61ad9c36442a01809969c4818a4\",\"dweb:/ipfs/QmUCajrDVPXFCmU1BtAeYxfGgwCLKXz6yPFhkEP8tnpCHf\"]},\"src/libraries/ARBAddresses.sol\":{\"keccak256\":\"0xfac60002ddd4b14ad272ecdb4fa1b6c39a0a7ea3f4ec8a2b2ea5d7385ac7879e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dc9ace5a20670d68fb891995d23e6279d8647c99b338b25901d1c1657015ffe\",\"dweb:/ipfs/QmTyFidXn46wtNbrszS56uQUXw71cHo7J7Kfgu78YSHMVC\"]},\"src/libraries/ARBChains.sol\":{\"keccak256\":\"0xbc878048fbeb8e209fdbe079f281f0307211e390af9243dcef8e44c50ae8e93c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964f6ab85ac6116c3ea5dedaa4cf8ed7abe61091f3379d7532a036e8913448fe\",\"dweb:/ipfs/Qmd1AdpKjRW1i9LsnA9ozdeNC6wPQZP3wvU27qF3yTE76d\"]},\"src/structs/JBClaim.sol\":{\"keccak256\":\"0xd616fb935e61727ce04832808667bd40dc121d66f5cc2f347018dfd971635dab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dfdcfb12878dc03b4623ddfaa42afa7e8270e8a259a8c453ef4f7e916ca52876\",\"dweb:/ipfs/QmZyAUzatUq2HfGBpoKbeqkC7mpetQC27M3797wgNgkE6H\"]},\"src/structs/JBInboxTreeRoot.sol\":{\"keccak256\":\"0xc1d8a61fc49d5d095486b194b7041595dc7639db33e3e310b1703d21caa184da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1c2d8480b823b25a55c4a9af0e6fb4bf6f8c0cba16f71bebf53585a5a86db6d\",\"dweb:/ipfs/QmY9Jbbb1PB9T8UHHjBq2Eq72zu5sPoSPYwVApbypLJtwB\"]},\"src/structs/JBLeaf.sol\":{\"keccak256\":\"0x4b71bd2b39022b2f7e59f45d967118ce47061db02e1e827ab4cc6f3a3b960107\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6fd76058f73ff40da48553412b95c2c3f00ddbb2a59d0774b207ab98d555a9\",\"dweb:/ipfs/QmPMe4J6MvRt1hKdDtUGXJoiZjWxqh736ds79bh2fJQEeN\"]},\"src/structs/JBMessageRoot.sol\":{\"keccak256\":\"0xed41178db7810558f486583d76382b8eb77f586648e7522070475d5e576a869c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2516fee99b547fa4008f8e3f40a7ef86701b286e9e4ceabd8ae24e3e67b8cf42\",\"dweb:/ipfs/QmeiNo3zgHkqSczQEmCK4S7R5BZwPM9RJp9dnjqqQRNyku\"]},\"src/structs/JBOutboxTree.sol\":{\"keccak256\":\"0x900ddc463282f90537e6e6f80d9217bc8da68c06c79c0ba66be1a48ba3647d99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e88c122091442114e734a9f6130cd3019add220f804518b82abbcb82726e5ee\",\"dweb:/ipfs/QmeG4grFoBaRbqPj5nDbxTt6V9mb8tvRLnMBzNSKkwKeyR\"]},\"src/structs/JBRemoteToken.sol\":{\"keccak256\":\"0xa675639bbc082957d4ea05b4c840d472f1777ad22fc78b0b32962fccc3f19995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9cdd472cfb3efeb2e3c7a7032e844abcce7f615d8d67eb4b33280968d8f8fb0\",\"dweb:/ipfs/QmfPUPLrxNVEYUaYzkAV7CaDX6YRfx2aJ8qDhLPFaXEGEA\"]},\"src/structs/JBTokenMapping.sol\":{\"keccak256\":\"0x124f304139003b90ce0b15063d9d79a4990c8b2b6b0444fb0ebf2e2c213faabe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7411e1be2809991b66659dcfabf300550d356ae04d77a001ab33ba96eb109b\",\"dweb:/ipfs/QmdzMYmaxL7FTreDTV3qEScDPECZJga1HRE5yLZB2Zq3Tb\"]},\"src/utils/MerkleLib.sol\":{\"keccak256\":\"0xbe3c73ca7be5471a742f409c921cdb641b77600bb5eacd4b47c36ccd92955d47\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b944fd8fa55e70696313ceac05ecb23ef81e0cd58386af75fc03953b69900efd\",\"dweb:/ipfs/QmSBPBakyc8vtcnu5YjGHXGgnpuc9tFW2eejiawp8z9yrk\"]}},\"version\":1}",
1427
+ "gitCommit": "15954670a31005d16a26229742a824cdc93eee06",
1428
+ "history": []
1429
+ }