@reclaimprotocol/attestor-core 3.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 (204) hide show
  1. package/README.md +39 -0
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +344 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +5 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +729 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
  9. package/lib/avs/client/create-claim-on-avs.js +147 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +24 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +3 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/lib/avs/contracts/factories/index.js +9 -0
  20. package/lib/avs/contracts/index.d.ts +3 -0
  21. package/lib/avs/contracts/index.js +30 -0
  22. package/lib/avs/tests/test.operator.d.ts +11 -0
  23. package/lib/avs/tests/test.operator.js +313 -0
  24. package/lib/avs/tests/utils.d.ts +2 -0
  25. package/lib/avs/tests/utils.js +50 -0
  26. package/lib/avs/types/index.d.ts +55 -0
  27. package/lib/avs/types/index.js +3 -0
  28. package/lib/avs/utils/contracts.d.ts +21 -0
  29. package/lib/avs/utils/contracts.js +38 -0
  30. package/lib/avs/utils/register.d.ts +27 -0
  31. package/lib/avs/utils/register.js +76 -0
  32. package/lib/avs/utils/tasks.d.ts +22 -0
  33. package/lib/avs/utils/tasks.js +45 -0
  34. package/lib/client/create-claim.d.ts +5 -0
  35. package/lib/client/create-claim.js +357 -0
  36. package/lib/client/index.d.ts +3 -0
  37. package/lib/client/index.js +20 -0
  38. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  39. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
  40. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
  41. package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
  42. package/lib/client/utils/attestor-pool.d.ts +6 -0
  43. package/lib/client/utils/attestor-pool.js +28 -0
  44. package/lib/client/utils/client-socket.d.ts +9 -0
  45. package/lib/client/utils/client-socket.js +77 -0
  46. package/lib/client/utils/message-handler.d.ts +4 -0
  47. package/lib/client/utils/message-handler.js +93 -0
  48. package/lib/config/index.d.ts +23 -0
  49. package/lib/config/index.js +35 -0
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +39 -0
  52. package/lib/proto/api.d.ts +414 -0
  53. package/lib/proto/api.js +2756 -0
  54. package/lib/providers/http/index.d.ts +3 -0
  55. package/lib/providers/http/index.js +472 -0
  56. package/lib/providers/http/utils.d.ts +44 -0
  57. package/lib/providers/http/utils.js +302 -0
  58. package/lib/providers/index.d.ts +4 -0
  59. package/lib/providers/index.js +11 -0
  60. package/lib/scripts/check-avs-registration.d.ts +1 -0
  61. package/lib/scripts/check-avs-registration.js +28 -0
  62. package/lib/scripts/generate-provider-types.d.ts +5 -0
  63. package/lib/scripts/generate-provider-types.js +82 -0
  64. package/lib/scripts/generate-receipt.d.ts +9 -0
  65. package/lib/scripts/generate-receipt.js +93 -0
  66. package/lib/scripts/register-avs-operator.d.ts +1 -0
  67. package/lib/scripts/register-avs-operator.js +6 -0
  68. package/lib/scripts/start-server.d.ts +1 -0
  69. package/lib/scripts/start-server.js +6 -0
  70. package/lib/scripts/verify-root-ca.d.ts +1 -0
  71. package/lib/scripts/verify-root-ca.js +51 -0
  72. package/lib/server/create-server.d.ts +7 -0
  73. package/lib/server/create-server.js +85 -0
  74. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  75. package/lib/server/handlers/claimTunnel.js +55 -0
  76. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  77. package/lib/server/handlers/completeClaimOnChain.js +28 -0
  78. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  79. package/lib/server/handlers/createClaimOnChain.js +31 -0
  80. package/lib/server/handlers/createTunnel.d.ts +2 -0
  81. package/lib/server/handlers/createTunnel.js +65 -0
  82. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  83. package/lib/server/handlers/disconnectTunnel.js +10 -0
  84. package/lib/server/handlers/index.d.ts +4 -0
  85. package/lib/server/handlers/index.js +18 -0
  86. package/lib/server/handlers/init.d.ts +2 -0
  87. package/lib/server/handlers/init.js +21 -0
  88. package/lib/server/index.d.ts +4 -0
  89. package/lib/server/index.js +21 -0
  90. package/lib/server/socket.d.ts +11 -0
  91. package/lib/server/socket.js +95 -0
  92. package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
  93. package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
  94. package/lib/server/utils/apm.d.ts +11 -0
  95. package/lib/server/utils/apm.js +39 -0
  96. package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
  97. package/lib/server/utils/assert-valid-claim-request.js +189 -0
  98. package/lib/server/utils/config-env.d.ts +1 -0
  99. package/lib/server/utils/config-env.js +7 -0
  100. package/lib/server/utils/generics.d.ts +22 -0
  101. package/lib/server/utils/generics.js +59 -0
  102. package/lib/server/utils/iso.d.ts +1 -0
  103. package/lib/server/utils/iso.js +260 -0
  104. package/lib/server/utils/keep-alive.d.ts +7 -0
  105. package/lib/server/utils/keep-alive.js +42 -0
  106. package/lib/server/utils/process-handshake.d.ts +13 -0
  107. package/lib/server/utils/process-handshake.js +179 -0
  108. package/lib/server/utils/verify-server-certificates.d.ts +7 -0
  109. package/lib/server/utils/verify-server-certificates.js +102 -0
  110. package/lib/tests/describe-with-server.d.ts +21 -0
  111. package/lib/tests/describe-with-server.js +67 -0
  112. package/lib/tests/mock-provider-server.d.ts +13 -0
  113. package/lib/tests/mock-provider-server.js +65 -0
  114. package/lib/tests/mocks.d.ts +4 -0
  115. package/lib/tests/mocks.js +23 -0
  116. package/lib/tests/test.claim-creation.d.ts +1 -0
  117. package/lib/tests/test.claim-creation.js +187 -0
  118. package/lib/tests/test.http-parser.d.ts +1 -0
  119. package/lib/tests/test.http-parser.js +118 -0
  120. package/lib/tests/test.http-provider-utils.d.ts +1 -0
  121. package/lib/tests/test.http-provider-utils.js +1932 -0
  122. package/lib/tests/test.http-provider.d.ts +1 -0
  123. package/lib/tests/test.http-provider.js +43 -0
  124. package/lib/tests/test.rpc-communication.d.ts +1 -0
  125. package/lib/tests/test.rpc-communication.js +64 -0
  126. package/lib/tests/test.rpc-tunnel.d.ts +1 -0
  127. package/lib/tests/test.rpc-tunnel.js +168 -0
  128. package/lib/tests/test.signatures.d.ts +1 -0
  129. package/lib/tests/test.signatures.js +24 -0
  130. package/lib/tests/test.tcp-tunnel.d.ts +1 -0
  131. package/lib/tests/test.tcp-tunnel.js +64 -0
  132. package/lib/tests/test.zk.d.ts +1 -0
  133. package/lib/tests/test.zk.js +169 -0
  134. package/lib/tests/utils.d.ts +12 -0
  135. package/lib/tests/utils.js +49 -0
  136. package/lib/types/claims.d.ts +64 -0
  137. package/lib/types/claims.js +3 -0
  138. package/lib/types/client.d.ts +136 -0
  139. package/lib/types/client.js +3 -0
  140. package/lib/types/general.d.ts +39 -0
  141. package/lib/types/general.js +3 -0
  142. package/lib/types/handlers.d.ts +10 -0
  143. package/lib/types/handlers.js +3 -0
  144. package/lib/types/index.d.ts +9 -0
  145. package/lib/types/index.js +26 -0
  146. package/lib/types/providers.d.ts +135 -0
  147. package/lib/types/providers.gen.d.ts +414 -0
  148. package/lib/types/providers.gen.js +14 -0
  149. package/lib/types/providers.js +3 -0
  150. package/lib/types/rpc.d.ts +35 -0
  151. package/lib/types/rpc.js +3 -0
  152. package/lib/types/signatures.d.ts +28 -0
  153. package/lib/types/signatures.js +3 -0
  154. package/lib/types/tunnel.d.ts +18 -0
  155. package/lib/types/tunnel.js +3 -0
  156. package/lib/types/zk.d.ts +16 -0
  157. package/lib/types/zk.js +3 -0
  158. package/lib/utils/benchmark.d.ts +1 -0
  159. package/lib/utils/benchmark.js +70 -0
  160. package/lib/utils/claims.d.ts +33 -0
  161. package/lib/utils/claims.js +112 -0
  162. package/lib/utils/env.d.ts +3 -0
  163. package/lib/utils/env.js +20 -0
  164. package/lib/utils/error.d.ts +27 -0
  165. package/lib/utils/error.js +43 -0
  166. package/lib/utils/generics.d.ts +112 -0
  167. package/lib/utils/generics.js +348 -0
  168. package/lib/utils/http-parser.d.ts +55 -0
  169. package/lib/utils/http-parser.js +249 -0
  170. package/lib/utils/index.d.ts +10 -0
  171. package/lib/utils/index.js +27 -0
  172. package/lib/utils/logger.d.ts +13 -0
  173. package/lib/utils/logger.js +100 -0
  174. package/lib/utils/prepare-packets.d.ts +16 -0
  175. package/lib/utils/prepare-packets.js +61 -0
  176. package/lib/utils/redactions.d.ts +41 -0
  177. package/lib/utils/redactions.js +111 -0
  178. package/lib/utils/retries.d.ts +12 -0
  179. package/lib/utils/retries.js +28 -0
  180. package/lib/utils/signatures/eth.d.ts +2 -0
  181. package/lib/utils/signatures/eth.js +33 -0
  182. package/lib/utils/signatures/index.d.ts +5 -0
  183. package/lib/utils/signatures/index.js +11 -0
  184. package/lib/utils/socket-base.d.ts +21 -0
  185. package/lib/utils/socket-base.js +89 -0
  186. package/lib/utils/tls.d.ts +2 -0
  187. package/lib/utils/tls.js +32 -0
  188. package/lib/utils/validation.d.ts +2 -0
  189. package/lib/utils/validation.js +46 -0
  190. package/lib/utils/ws.d.ts +12 -0
  191. package/lib/utils/ws.js +21 -0
  192. package/lib/utils/zk.d.ts +50 -0
  193. package/lib/utils/zk.js +282 -0
  194. package/lib/window-rpc/index.d.ts +3 -0
  195. package/lib/window-rpc/index.js +20 -0
  196. package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
  197. package/lib/window-rpc/setup-window-rpc.js +239 -0
  198. package/lib/window-rpc/types.d.ts +184 -0
  199. package/lib/window-rpc/types.js +3 -0
  200. package/lib/window-rpc/utils.d.ts +13 -0
  201. package/lib/window-rpc/utils.js +76 -0
  202. package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
  203. package/lib/window-rpc/window-rpc-zk.js +72 -0
  204. package/package.json +117 -0
@@ -0,0 +1,1174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReclaimServiceManager__factory = void 0;
4
+ /* Autogenerated file. Do not edit manually. */
5
+ /* tslint:disable */
6
+ /* eslint-disable */
7
+ const ethers_1 = require("ethers");
8
+ const _abi = [
9
+ {
10
+ type: "constructor",
11
+ inputs: [
12
+ {
13
+ name: "_avsDirectory",
14
+ type: "address",
15
+ internalType: "address",
16
+ },
17
+ {
18
+ name: "_stakeRegistry",
19
+ type: "address",
20
+ internalType: "address",
21
+ },
22
+ {
23
+ name: "_delegationManager",
24
+ type: "address",
25
+ internalType: "address",
26
+ },
27
+ ],
28
+ stateMutability: "nonpayable",
29
+ },
30
+ {
31
+ type: "function",
32
+ name: "admins",
33
+ inputs: [
34
+ {
35
+ name: "",
36
+ type: "uint256",
37
+ internalType: "uint256",
38
+ },
39
+ ],
40
+ outputs: [
41
+ {
42
+ name: "",
43
+ type: "address",
44
+ internalType: "address",
45
+ },
46
+ ],
47
+ stateMutability: "view",
48
+ },
49
+ {
50
+ type: "function",
51
+ name: "allTaskHashes",
52
+ inputs: [
53
+ {
54
+ name: "",
55
+ type: "uint32",
56
+ internalType: "uint32",
57
+ },
58
+ ],
59
+ outputs: [
60
+ {
61
+ name: "",
62
+ type: "bytes32",
63
+ internalType: "bytes32",
64
+ },
65
+ ],
66
+ stateMutability: "view",
67
+ },
68
+ {
69
+ type: "function",
70
+ name: "avsDirectory",
71
+ inputs: [],
72
+ outputs: [
73
+ {
74
+ name: "",
75
+ type: "address",
76
+ internalType: "address",
77
+ },
78
+ ],
79
+ stateMutability: "view",
80
+ },
81
+ {
82
+ type: "function",
83
+ name: "checkSignerAddress",
84
+ inputs: [
85
+ {
86
+ name: "request",
87
+ type: "tuple",
88
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
89
+ components: [
90
+ {
91
+ name: "provider",
92
+ type: "string",
93
+ internalType: "string",
94
+ },
95
+ {
96
+ name: "claimUserId",
97
+ type: "bytes32",
98
+ internalType: "bytes32",
99
+ },
100
+ {
101
+ name: "claimHash",
102
+ type: "bytes32",
103
+ internalType: "bytes32",
104
+ },
105
+ {
106
+ name: "requestedAt",
107
+ type: "uint32",
108
+ internalType: "uint32",
109
+ },
110
+ {
111
+ name: "owner",
112
+ type: "address",
113
+ internalType: "address",
114
+ },
115
+ ],
116
+ },
117
+ {
118
+ name: "requestSignature",
119
+ type: "bytes",
120
+ internalType: "bytes",
121
+ },
122
+ ],
123
+ outputs: [
124
+ {
125
+ name: "",
126
+ type: "address",
127
+ internalType: "address",
128
+ },
129
+ ],
130
+ stateMutability: "pure",
131
+ },
132
+ {
133
+ type: "function",
134
+ name: "createNewTask",
135
+ inputs: [
136
+ {
137
+ name: "request",
138
+ type: "tuple",
139
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
140
+ components: [
141
+ {
142
+ name: "provider",
143
+ type: "string",
144
+ internalType: "string",
145
+ },
146
+ {
147
+ name: "claimUserId",
148
+ type: "bytes32",
149
+ internalType: "bytes32",
150
+ },
151
+ {
152
+ name: "claimHash",
153
+ type: "bytes32",
154
+ internalType: "bytes32",
155
+ },
156
+ {
157
+ name: "requestedAt",
158
+ type: "uint32",
159
+ internalType: "uint32",
160
+ },
161
+ {
162
+ name: "owner",
163
+ type: "address",
164
+ internalType: "address",
165
+ },
166
+ ],
167
+ },
168
+ {
169
+ name: "requestSignature",
170
+ type: "bytes",
171
+ internalType: "bytes",
172
+ },
173
+ ],
174
+ outputs: [],
175
+ stateMutability: "nonpayable",
176
+ },
177
+ {
178
+ type: "function",
179
+ name: "deregisterOperatorFromAVS",
180
+ inputs: [
181
+ {
182
+ name: "operator",
183
+ type: "address",
184
+ internalType: "address",
185
+ },
186
+ ],
187
+ outputs: [],
188
+ stateMutability: "nonpayable",
189
+ },
190
+ {
191
+ type: "function",
192
+ name: "encodeClaimRequest",
193
+ inputs: [
194
+ {
195
+ name: "request",
196
+ type: "tuple",
197
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
198
+ components: [
199
+ {
200
+ name: "provider",
201
+ type: "string",
202
+ internalType: "string",
203
+ },
204
+ {
205
+ name: "claimUserId",
206
+ type: "bytes32",
207
+ internalType: "bytes32",
208
+ },
209
+ {
210
+ name: "claimHash",
211
+ type: "bytes32",
212
+ internalType: "bytes32",
213
+ },
214
+ {
215
+ name: "requestedAt",
216
+ type: "uint32",
217
+ internalType: "uint32",
218
+ },
219
+ {
220
+ name: "owner",
221
+ type: "address",
222
+ internalType: "address",
223
+ },
224
+ ],
225
+ },
226
+ ],
227
+ outputs: [
228
+ {
229
+ name: "",
230
+ type: "bytes",
231
+ internalType: "bytes",
232
+ },
233
+ ],
234
+ stateMutability: "pure",
235
+ },
236
+ {
237
+ type: "function",
238
+ name: "getMetadataForOperator",
239
+ inputs: [
240
+ {
241
+ name: "operator",
242
+ type: "address",
243
+ internalType: "address",
244
+ },
245
+ ],
246
+ outputs: [
247
+ {
248
+ name: "",
249
+ type: "tuple",
250
+ internalType: "struct IReclaimServiceManager.OperatorMetadata",
251
+ components: [
252
+ {
253
+ name: "addr",
254
+ type: "address",
255
+ internalType: "address",
256
+ },
257
+ {
258
+ name: "url",
259
+ type: "string",
260
+ internalType: "string",
261
+ },
262
+ ],
263
+ },
264
+ ],
265
+ stateMutability: "view",
266
+ },
267
+ {
268
+ type: "function",
269
+ name: "getOperatorRestakedStrategies",
270
+ inputs: [
271
+ {
272
+ name: "_operator",
273
+ type: "address",
274
+ internalType: "address",
275
+ },
276
+ ],
277
+ outputs: [
278
+ {
279
+ name: "",
280
+ type: "address[]",
281
+ internalType: "address[]",
282
+ },
283
+ ],
284
+ stateMutability: "view",
285
+ },
286
+ {
287
+ type: "function",
288
+ name: "getRestakeableStrategies",
289
+ inputs: [],
290
+ outputs: [
291
+ {
292
+ name: "",
293
+ type: "address[]",
294
+ internalType: "address[]",
295
+ },
296
+ ],
297
+ stateMutability: "view",
298
+ },
299
+ {
300
+ type: "function",
301
+ name: "isAdmin",
302
+ inputs: [
303
+ {
304
+ name: "_admin",
305
+ type: "address",
306
+ internalType: "address",
307
+ },
308
+ ],
309
+ outputs: [
310
+ {
311
+ name: "",
312
+ type: "bool",
313
+ internalType: "bool",
314
+ },
315
+ ],
316
+ stateMutability: "view",
317
+ },
318
+ {
319
+ type: "function",
320
+ name: "isOperatorWhitelisted",
321
+ inputs: [
322
+ {
323
+ name: "operator",
324
+ type: "address",
325
+ internalType: "address",
326
+ },
327
+ ],
328
+ outputs: [
329
+ {
330
+ name: "",
331
+ type: "bool",
332
+ internalType: "bool",
333
+ },
334
+ ],
335
+ stateMutability: "view",
336
+ },
337
+ {
338
+ type: "function",
339
+ name: "latestTaskNum",
340
+ inputs: [],
341
+ outputs: [
342
+ {
343
+ name: "",
344
+ type: "uint32",
345
+ internalType: "uint32",
346
+ },
347
+ ],
348
+ stateMutability: "view",
349
+ },
350
+ {
351
+ type: "function",
352
+ name: "operatorHasMinimumWeight",
353
+ inputs: [
354
+ {
355
+ name: "operator",
356
+ type: "address",
357
+ internalType: "address",
358
+ },
359
+ ],
360
+ outputs: [
361
+ {
362
+ name: "",
363
+ type: "bool",
364
+ internalType: "bool",
365
+ },
366
+ ],
367
+ stateMutability: "view",
368
+ },
369
+ {
370
+ type: "function",
371
+ name: "owner",
372
+ inputs: [],
373
+ outputs: [
374
+ {
375
+ name: "",
376
+ type: "address",
377
+ internalType: "address",
378
+ },
379
+ ],
380
+ stateMutability: "view",
381
+ },
382
+ {
383
+ type: "function",
384
+ name: "pause",
385
+ inputs: [
386
+ {
387
+ name: "newPausedStatus",
388
+ type: "uint256",
389
+ internalType: "uint256",
390
+ },
391
+ ],
392
+ outputs: [],
393
+ stateMutability: "nonpayable",
394
+ },
395
+ {
396
+ type: "function",
397
+ name: "pauseAll",
398
+ inputs: [],
399
+ outputs: [],
400
+ stateMutability: "nonpayable",
401
+ },
402
+ {
403
+ type: "function",
404
+ name: "paused",
405
+ inputs: [
406
+ {
407
+ name: "index",
408
+ type: "uint8",
409
+ internalType: "uint8",
410
+ },
411
+ ],
412
+ outputs: [
413
+ {
414
+ name: "",
415
+ type: "bool",
416
+ internalType: "bool",
417
+ },
418
+ ],
419
+ stateMutability: "view",
420
+ },
421
+ {
422
+ type: "function",
423
+ name: "paused",
424
+ inputs: [],
425
+ outputs: [
426
+ {
427
+ name: "",
428
+ type: "uint256",
429
+ internalType: "uint256",
430
+ },
431
+ ],
432
+ stateMutability: "view",
433
+ },
434
+ {
435
+ type: "function",
436
+ name: "pauserRegistry",
437
+ inputs: [],
438
+ outputs: [
439
+ {
440
+ name: "",
441
+ type: "address",
442
+ internalType: "contract IPauserRegistry",
443
+ },
444
+ ],
445
+ stateMutability: "view",
446
+ },
447
+ {
448
+ type: "function",
449
+ name: "payForRange",
450
+ inputs: [
451
+ {
452
+ name: "rangePayments",
453
+ type: "tuple[]",
454
+ internalType: "struct IPaymentCoordinator.RangePayment[]",
455
+ components: [
456
+ {
457
+ name: "strategiesAndMultipliers",
458
+ type: "tuple[]",
459
+ internalType: "struct IPaymentCoordinator.StrategyAndMultiplier[]",
460
+ components: [
461
+ {
462
+ name: "strategy",
463
+ type: "address",
464
+ internalType: "contract IStrategy",
465
+ },
466
+ {
467
+ name: "multiplier",
468
+ type: "uint96",
469
+ internalType: "uint96",
470
+ },
471
+ ],
472
+ },
473
+ {
474
+ name: "token",
475
+ type: "address",
476
+ internalType: "contract IERC20",
477
+ },
478
+ {
479
+ name: "amount",
480
+ type: "uint256",
481
+ internalType: "uint256",
482
+ },
483
+ {
484
+ name: "startTimestamp",
485
+ type: "uint32",
486
+ internalType: "uint32",
487
+ },
488
+ {
489
+ name: "duration",
490
+ type: "uint32",
491
+ internalType: "uint32",
492
+ },
493
+ ],
494
+ },
495
+ ],
496
+ outputs: [],
497
+ stateMutability: "nonpayable",
498
+ },
499
+ {
500
+ type: "function",
501
+ name: "registerOperatorToAVS",
502
+ inputs: [
503
+ {
504
+ name: "operator",
505
+ type: "address",
506
+ internalType: "address",
507
+ },
508
+ {
509
+ name: "operatorSignature",
510
+ type: "tuple",
511
+ internalType: "struct ISignatureUtils.SignatureWithSaltAndExpiry",
512
+ components: [
513
+ {
514
+ name: "signature",
515
+ type: "bytes",
516
+ internalType: "bytes",
517
+ },
518
+ {
519
+ name: "salt",
520
+ type: "bytes32",
521
+ internalType: "bytes32",
522
+ },
523
+ {
524
+ name: "expiry",
525
+ type: "uint256",
526
+ internalType: "uint256",
527
+ },
528
+ ],
529
+ },
530
+ ],
531
+ outputs: [],
532
+ stateMutability: "nonpayable",
533
+ },
534
+ {
535
+ type: "function",
536
+ name: "registeredOperators",
537
+ inputs: [
538
+ {
539
+ name: "",
540
+ type: "uint256",
541
+ internalType: "uint256",
542
+ },
543
+ ],
544
+ outputs: [
545
+ {
546
+ name: "addr",
547
+ type: "address",
548
+ internalType: "address",
549
+ },
550
+ {
551
+ name: "url",
552
+ type: "string",
553
+ internalType: "string",
554
+ },
555
+ ],
556
+ stateMutability: "view",
557
+ },
558
+ {
559
+ type: "function",
560
+ name: "renounceOwnership",
561
+ inputs: [],
562
+ outputs: [],
563
+ stateMutability: "nonpayable",
564
+ },
565
+ {
566
+ type: "function",
567
+ name: "setPauserRegistry",
568
+ inputs: [
569
+ {
570
+ name: "newPauserRegistry",
571
+ type: "address",
572
+ internalType: "contract IPauserRegistry",
573
+ },
574
+ ],
575
+ outputs: [],
576
+ stateMutability: "nonpayable",
577
+ },
578
+ {
579
+ type: "function",
580
+ name: "setup",
581
+ inputs: [
582
+ {
583
+ name: "initialAdmin",
584
+ type: "address",
585
+ internalType: "address",
586
+ },
587
+ ],
588
+ outputs: [],
589
+ stateMutability: "nonpayable",
590
+ },
591
+ {
592
+ type: "function",
593
+ name: "stakeRegistry",
594
+ inputs: [],
595
+ outputs: [
596
+ {
597
+ name: "",
598
+ type: "address",
599
+ internalType: "address",
600
+ },
601
+ ],
602
+ stateMutability: "view",
603
+ },
604
+ {
605
+ type: "function",
606
+ name: "taskCompleted",
607
+ inputs: [
608
+ {
609
+ name: "completedTask",
610
+ type: "tuple",
611
+ internalType: "struct IReclaimServiceManager.CompletedTask",
612
+ components: [
613
+ {
614
+ name: "task",
615
+ type: "tuple",
616
+ internalType: "struct IReclaimServiceManager.Task",
617
+ components: [
618
+ {
619
+ name: "request",
620
+ type: "tuple",
621
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
622
+ components: [
623
+ {
624
+ name: "provider",
625
+ type: "string",
626
+ internalType: "string",
627
+ },
628
+ {
629
+ name: "claimUserId",
630
+ type: "bytes32",
631
+ internalType: "bytes32",
632
+ },
633
+ {
634
+ name: "claimHash",
635
+ type: "bytes32",
636
+ internalType: "bytes32",
637
+ },
638
+ {
639
+ name: "requestedAt",
640
+ type: "uint32",
641
+ internalType: "uint32",
642
+ },
643
+ {
644
+ name: "owner",
645
+ type: "address",
646
+ internalType: "address",
647
+ },
648
+ ],
649
+ },
650
+ {
651
+ name: "createdAt",
652
+ type: "uint32",
653
+ internalType: "uint32",
654
+ },
655
+ {
656
+ name: "expiresAt",
657
+ type: "uint32",
658
+ internalType: "uint32",
659
+ },
660
+ {
661
+ name: "minimumSignatures",
662
+ type: "uint8",
663
+ internalType: "uint8",
664
+ },
665
+ {
666
+ name: "operators",
667
+ type: "tuple[]",
668
+ internalType: "struct IReclaimServiceManager.Operator[]",
669
+ components: [
670
+ {
671
+ name: "addr",
672
+ type: "address",
673
+ internalType: "address",
674
+ },
675
+ {
676
+ name: "url",
677
+ type: "string",
678
+ internalType: "string",
679
+ },
680
+ ],
681
+ },
682
+ {
683
+ name: "feePaid",
684
+ type: "uint256",
685
+ internalType: "uint256",
686
+ },
687
+ ],
688
+ },
689
+ {
690
+ name: "signatures",
691
+ type: "bytes[]",
692
+ internalType: "bytes[]",
693
+ },
694
+ ],
695
+ },
696
+ {
697
+ name: "referenceTaskIndex",
698
+ type: "uint32",
699
+ internalType: "uint32",
700
+ },
701
+ ],
702
+ outputs: [],
703
+ stateMutability: "nonpayable",
704
+ },
705
+ {
706
+ type: "function",
707
+ name: "taskCreationMetadata",
708
+ inputs: [],
709
+ outputs: [
710
+ {
711
+ name: "maxTaskLifetimeS",
712
+ type: "uint32",
713
+ internalType: "uint32",
714
+ },
715
+ {
716
+ name: "minSignaturesPerTask",
717
+ type: "uint8",
718
+ internalType: "uint8",
719
+ },
720
+ {
721
+ name: "maxTaskCreationDelayS",
722
+ type: "uint32",
723
+ internalType: "uint32",
724
+ },
725
+ ],
726
+ stateMutability: "view",
727
+ },
728
+ {
729
+ type: "function",
730
+ name: "transferOwnership",
731
+ inputs: [
732
+ {
733
+ name: "newOwner",
734
+ type: "address",
735
+ internalType: "address",
736
+ },
737
+ ],
738
+ outputs: [],
739
+ stateMutability: "nonpayable",
740
+ },
741
+ {
742
+ type: "function",
743
+ name: "unpause",
744
+ inputs: [
745
+ {
746
+ name: "newPausedStatus",
747
+ type: "uint256",
748
+ internalType: "uint256",
749
+ },
750
+ ],
751
+ outputs: [],
752
+ stateMutability: "nonpayable",
753
+ },
754
+ {
755
+ type: "function",
756
+ name: "updateAVSMetadataURI",
757
+ inputs: [
758
+ {
759
+ name: "_metadataURI",
760
+ type: "string",
761
+ internalType: "string",
762
+ },
763
+ ],
764
+ outputs: [],
765
+ stateMutability: "nonpayable",
766
+ },
767
+ {
768
+ type: "function",
769
+ name: "updateOperatorMetadata",
770
+ inputs: [
771
+ {
772
+ name: "metadata",
773
+ type: "tuple",
774
+ internalType: "struct IReclaimServiceManager.OperatorMetadata",
775
+ components: [
776
+ {
777
+ name: "addr",
778
+ type: "address",
779
+ internalType: "address",
780
+ },
781
+ {
782
+ name: "url",
783
+ type: "string",
784
+ internalType: "string",
785
+ },
786
+ ],
787
+ },
788
+ ],
789
+ outputs: [],
790
+ stateMutability: "nonpayable",
791
+ },
792
+ {
793
+ type: "function",
794
+ name: "updateTaskCreationMetadata",
795
+ inputs: [
796
+ {
797
+ name: "newMetadata",
798
+ type: "tuple",
799
+ internalType: "struct IReclaimServiceManager.TaskCreationMetadata",
800
+ components: [
801
+ {
802
+ name: "maxTaskLifetimeS",
803
+ type: "uint32",
804
+ internalType: "uint32",
805
+ },
806
+ {
807
+ name: "minSignaturesPerTask",
808
+ type: "uint8",
809
+ internalType: "uint8",
810
+ },
811
+ {
812
+ name: "maxTaskCreationDelayS",
813
+ type: "uint32",
814
+ internalType: "uint32",
815
+ },
816
+ ],
817
+ },
818
+ ],
819
+ outputs: [],
820
+ stateMutability: "nonpayable",
821
+ },
822
+ {
823
+ type: "function",
824
+ name: "whitelistAddressAsOperator",
825
+ inputs: [
826
+ {
827
+ name: "operator",
828
+ type: "address",
829
+ internalType: "address",
830
+ },
831
+ {
832
+ name: "isWhitelisted",
833
+ type: "bool",
834
+ internalType: "bool",
835
+ },
836
+ ],
837
+ outputs: [],
838
+ stateMutability: "nonpayable",
839
+ },
840
+ {
841
+ type: "function",
842
+ name: "whitelistedOperators",
843
+ inputs: [
844
+ {
845
+ name: "",
846
+ type: "uint256",
847
+ internalType: "uint256",
848
+ },
849
+ ],
850
+ outputs: [
851
+ {
852
+ name: "",
853
+ type: "address",
854
+ internalType: "address",
855
+ },
856
+ ],
857
+ stateMutability: "view",
858
+ },
859
+ {
860
+ type: "event",
861
+ name: "Initialized",
862
+ inputs: [
863
+ {
864
+ name: "version",
865
+ type: "uint8",
866
+ indexed: false,
867
+ internalType: "uint8",
868
+ },
869
+ ],
870
+ anonymous: false,
871
+ },
872
+ {
873
+ type: "event",
874
+ name: "NewTaskCreated",
875
+ inputs: [
876
+ {
877
+ name: "taskIndex",
878
+ type: "uint32",
879
+ indexed: true,
880
+ internalType: "uint32",
881
+ },
882
+ {
883
+ name: "task",
884
+ type: "tuple",
885
+ indexed: false,
886
+ internalType: "struct IReclaimServiceManager.Task",
887
+ components: [
888
+ {
889
+ name: "request",
890
+ type: "tuple",
891
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
892
+ components: [
893
+ {
894
+ name: "provider",
895
+ type: "string",
896
+ internalType: "string",
897
+ },
898
+ {
899
+ name: "claimUserId",
900
+ type: "bytes32",
901
+ internalType: "bytes32",
902
+ },
903
+ {
904
+ name: "claimHash",
905
+ type: "bytes32",
906
+ internalType: "bytes32",
907
+ },
908
+ {
909
+ name: "requestedAt",
910
+ type: "uint32",
911
+ internalType: "uint32",
912
+ },
913
+ {
914
+ name: "owner",
915
+ type: "address",
916
+ internalType: "address",
917
+ },
918
+ ],
919
+ },
920
+ {
921
+ name: "createdAt",
922
+ type: "uint32",
923
+ internalType: "uint32",
924
+ },
925
+ {
926
+ name: "expiresAt",
927
+ type: "uint32",
928
+ internalType: "uint32",
929
+ },
930
+ {
931
+ name: "minimumSignatures",
932
+ type: "uint8",
933
+ internalType: "uint8",
934
+ },
935
+ {
936
+ name: "operators",
937
+ type: "tuple[]",
938
+ internalType: "struct IReclaimServiceManager.Operator[]",
939
+ components: [
940
+ {
941
+ name: "addr",
942
+ type: "address",
943
+ internalType: "address",
944
+ },
945
+ {
946
+ name: "url",
947
+ type: "string",
948
+ internalType: "string",
949
+ },
950
+ ],
951
+ },
952
+ {
953
+ name: "feePaid",
954
+ type: "uint256",
955
+ internalType: "uint256",
956
+ },
957
+ ],
958
+ },
959
+ ],
960
+ anonymous: false,
961
+ },
962
+ {
963
+ type: "event",
964
+ name: "OwnershipTransferred",
965
+ inputs: [
966
+ {
967
+ name: "previousOwner",
968
+ type: "address",
969
+ indexed: true,
970
+ internalType: "address",
971
+ },
972
+ {
973
+ name: "newOwner",
974
+ type: "address",
975
+ indexed: true,
976
+ internalType: "address",
977
+ },
978
+ ],
979
+ anonymous: false,
980
+ },
981
+ {
982
+ type: "event",
983
+ name: "Paused",
984
+ inputs: [
985
+ {
986
+ name: "account",
987
+ type: "address",
988
+ indexed: true,
989
+ internalType: "address",
990
+ },
991
+ {
992
+ name: "newPausedStatus",
993
+ type: "uint256",
994
+ indexed: false,
995
+ internalType: "uint256",
996
+ },
997
+ ],
998
+ anonymous: false,
999
+ },
1000
+ {
1001
+ type: "event",
1002
+ name: "PauserRegistrySet",
1003
+ inputs: [
1004
+ {
1005
+ name: "pauserRegistry",
1006
+ type: "address",
1007
+ indexed: false,
1008
+ internalType: "contract IPauserRegistry",
1009
+ },
1010
+ {
1011
+ name: "newPauserRegistry",
1012
+ type: "address",
1013
+ indexed: false,
1014
+ internalType: "contract IPauserRegistry",
1015
+ },
1016
+ ],
1017
+ anonymous: false,
1018
+ },
1019
+ {
1020
+ type: "event",
1021
+ name: "TaskCompleted",
1022
+ inputs: [
1023
+ {
1024
+ name: "taskIndex",
1025
+ type: "uint32",
1026
+ indexed: true,
1027
+ internalType: "uint32",
1028
+ },
1029
+ {
1030
+ name: "task",
1031
+ type: "tuple",
1032
+ indexed: false,
1033
+ internalType: "struct IReclaimServiceManager.CompletedTask",
1034
+ components: [
1035
+ {
1036
+ name: "task",
1037
+ type: "tuple",
1038
+ internalType: "struct IReclaimServiceManager.Task",
1039
+ components: [
1040
+ {
1041
+ name: "request",
1042
+ type: "tuple",
1043
+ internalType: "struct IReclaimServiceManager.ClaimRequest",
1044
+ components: [
1045
+ {
1046
+ name: "provider",
1047
+ type: "string",
1048
+ internalType: "string",
1049
+ },
1050
+ {
1051
+ name: "claimUserId",
1052
+ type: "bytes32",
1053
+ internalType: "bytes32",
1054
+ },
1055
+ {
1056
+ name: "claimHash",
1057
+ type: "bytes32",
1058
+ internalType: "bytes32",
1059
+ },
1060
+ {
1061
+ name: "requestedAt",
1062
+ type: "uint32",
1063
+ internalType: "uint32",
1064
+ },
1065
+ {
1066
+ name: "owner",
1067
+ type: "address",
1068
+ internalType: "address",
1069
+ },
1070
+ ],
1071
+ },
1072
+ {
1073
+ name: "createdAt",
1074
+ type: "uint32",
1075
+ internalType: "uint32",
1076
+ },
1077
+ {
1078
+ name: "expiresAt",
1079
+ type: "uint32",
1080
+ internalType: "uint32",
1081
+ },
1082
+ {
1083
+ name: "minimumSignatures",
1084
+ type: "uint8",
1085
+ internalType: "uint8",
1086
+ },
1087
+ {
1088
+ name: "operators",
1089
+ type: "tuple[]",
1090
+ internalType: "struct IReclaimServiceManager.Operator[]",
1091
+ components: [
1092
+ {
1093
+ name: "addr",
1094
+ type: "address",
1095
+ internalType: "address",
1096
+ },
1097
+ {
1098
+ name: "url",
1099
+ type: "string",
1100
+ internalType: "string",
1101
+ },
1102
+ ],
1103
+ },
1104
+ {
1105
+ name: "feePaid",
1106
+ type: "uint256",
1107
+ internalType: "uint256",
1108
+ },
1109
+ ],
1110
+ },
1111
+ {
1112
+ name: "signatures",
1113
+ type: "bytes[]",
1114
+ internalType: "bytes[]",
1115
+ },
1116
+ ],
1117
+ },
1118
+ ],
1119
+ anonymous: false,
1120
+ },
1121
+ {
1122
+ type: "event",
1123
+ name: "Unpaused",
1124
+ inputs: [
1125
+ {
1126
+ name: "account",
1127
+ type: "address",
1128
+ indexed: true,
1129
+ internalType: "address",
1130
+ },
1131
+ {
1132
+ name: "newPausedStatus",
1133
+ type: "uint256",
1134
+ indexed: false,
1135
+ internalType: "uint256",
1136
+ },
1137
+ ],
1138
+ anonymous: false,
1139
+ },
1140
+ ];
1141
+ const _bytecode = "0x61010060405234801561001157600080fd5b50604051614c04380380614c0483398101604081905261003091610146565b6001600160a01b0380841660a052808316608052600060c081905290821660e052839083908361005e61006a565b50505050505050610189565b600054610100900460ff16156100d65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610128576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461014157600080fd5b919050565b60008060006060848603121561015b57600080fd5b6101648461012a565b92506101726020850161012a565b91506101806040850161012a565b90509250925092565b60805160a05160c05160e0516149f561020f600039600061214c015260008181611ec30152611f990152600081816103ce015281816123930152818161250d015261257d0152600081816103a7015281816107e2015281816111cd015281816114dd01528181611960015281816119d10152818161200401526129d901526149f56000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063715018a611610125578063a98fb355116100ad578063d5dba76d1161007c578063d5dba76d14610514578063e481af9d14610527578063f289a7fb1461052f578063f2fde38b14610582578063fabc1cbc1461059557600080fd5b8063a98fb355146104bb578063aa5b9cad146104ce578063abd3b6bd146104e1578063b224b9791461050157600080fd5b806394bb371b116100f457806394bb371b146104415780639926ee7d14610461578063a3524f9514610474578063a364f4da14610487578063a551c1b81461049a57600080fd5b8063715018a6146103f0578063886f1195146103f85780638b00ce7c1461040b5780638da5cb5b1461043057600080fd5b80632e8da829116101a85780635c975abb116101775780635c975abb14610374578063630868dc1461037c57806366d382031461038f57806368304835146103a25780636b3aa72e146103c957600080fd5b80632e8da8291461031657806333cfb7b714610329578063595c6a67146103495780635ac86ab71461035157600080fd5b80631b445516116101ef5780631b4455161461028c5780631be785ac1461029f5780631ee3ca10146102b257806324d7806c146102c55780632d89f6fc146102e857600080fd5b806310d67a2f14610221578063136439dd1461023657806314bfd6d01461024957806316bd83c314610279575b600080fd5b61023461022f36600461349a565b6105a8565b005b6102346102443660046134b7565b610664565b61025c6102573660046134b7565b6107a3565b6040516001600160a01b0390911681526020015b60405180910390f35b610234610287366004613674565b6107cd565b61023461029a3660046136a8565b610b35565b6102346102ad36600461372b565b610b4b565b6102346102c0366004613789565b610c44565b6102d86102d336600461349a565b610d03565b6040519015158152602001610270565b6103086102f63660046137d9565b60cb6020526000908152604090205481565b604051908152602001610270565b6102d861032436600461349a565b610d8c565b61033c61033736600461349a565b610df9565b60405161027091906137f4565b610234610e0a565b6102d861035f366004613840565b609854600160ff9092169190911b9081161490565b609854610308565b61025c61038a3660046134b7565b610ed1565b61023461039d36600461349a565b610ee1565b61025c7f000000000000000000000000000000000000000000000000000000000000000081565b61025c7f000000000000000000000000000000000000000000000000000000000000000081565b61023461106c565b60975461025c906001600160a01b031681565b60c95461041b9063ffffffff1681565b60405163ffffffff9091168152602001610270565b6033546001600160a01b031661025c565b61045461044f36600461349a565b611080565b60405161027091906138d2565b61023461046f3660046138e5565b6111c2565b610234610482366004613b4a565b611269565b61023461049536600461349a565b6114d2565b6104ad6104a83660046134b7565b611523565b604051610270929190613c94565b6102346104c9366004613cb8565b6115e5565b61025c6104dc366004613cec565b611613565b6104f46104ef366004613d53565b61164a565b6040516102709190613d87565b61023461050f366004613cec565b611673565b6102d861052236600461349a565b61193c565b61033c611a5c565b60ca546105599063ffffffff8082169160ff64010000000082041691650100000000009091041683565b6040805163ffffffff948516815260ff9093166020840152921691810191909152606001610270565b61023461059036600461349a565b611a6b565b6102346105a33660046134b7565b611ae1565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061f9190613d9a565b6001600160a01b0316336001600160a01b0316146106585760405162461bcd60e51b815260040161064f90613db7565b60405180910390fd5b61066181611c3d565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d09190613e01565b6106ec5760405162461bcd60e51b815260040161064f90613e1e565b609854818116146107655760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161064f565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60cd81815481106107b357600080fd5b6000918252602090912001546001600160a01b0316905081565b60405163ec7fbb3160e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ec7fbb3190602401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108559190613e01565b15156001146108a65760405162461bcd60e51b815260206004820152601b60248201527f4f70657261746f72206d757374206265207468652063616c6c65720000000000604482015260640161064f565b80516001600160a01b0316331461090e5760405162461bcd60e51b815260206004820152602660248201527f4d657461646174612061646472657373206d757374206d61746368207468652060448201526531b0b63632b960d11b606482015260840161064f565b6020810151511580156109f35760005b60ce548110156109b55782600001516001600160a01b031660ce828154811061094957610949613e66565b60009182526020909120600290910201546001600160a01b0316036109ad5760ce818154811061097b5761097b613e66565b60009182526020822060029091020180546001600160a01b0319168155906109a66001830182613437565b5050505050565b60010161091e565b5060405162461bcd60e51b815260206004820152601260248201527113dc195c985d1bdc881b9bdd08199bdd5b9960721b604482015260640161064f565b60005b60ce54811015610aa85782600001516001600160a01b031660ce8281548110610a2157610a21613e66565b60009182526020909120600290910201546001600160a01b031603610aa0578260ce8281548110610a5457610a54613e66565b600091825260209182902083516002929092020180546001600160a01b0319166001600160a01b03909216919091178155908201516001820190610a989082613f02565b505050505050565b6001016109f6565b5060ce805460018101825560009190915282517fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a600290920291820180546001600160a01b0319166001600160a01b03909216919091178155602084015184927fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12b01906109a69082613f02565b610b3d611d34565b610b478282611d8e565b5050565b610b5433610d03565b610b705760405162461bcd60e51b815260040161064f90613fc0565b8015610bc75760cc80546001810182556000919091527f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe0180546001600160a01b0384166001600160a01b03199091161790555050565b60005b60cc548110156109b557826001600160a01b031660cc8281548110610bf157610bf1613e66565b6000918252602090912001546001600160a01b031603610c3c5760cc8181548110610c1e57610c1e613e66565b600091825260209091200180546001600160a01b0319169055505050565b600101610bca565b610c4d33610d03565b610c695760405162461bcd60e51b815260040161064f90613fc0565b805163ffffffff1615610c9257805160ca805463ffffffff191663ffffffff9092169190911790555b602081015160ff1615610cc557602081015160ca805460ff9092166401000000000264ff00000000199092169190911790555b604081015163ffffffff1615610661576040015160ca805463ffffffff909216650100000000000268ffffffff000000000019909216919091179055565b6000610d176033546001600160a01b031690565b6001600160a01b03163303610d2e57506001919050565b60005b60cd54811015610d8357826001600160a01b031660cd8281548110610d5857610d58613e66565b6000918252602090912001546001600160a01b031603610d7b5750600192915050565b600101610d31565b50600092915050565b6000610d9782610d03565b15610da457506001919050565b60005b60cc54811015610d8357826001600160a01b031660cc8281548110610dce57610dce613e66565b6000918252602090912001546001600160a01b031603610df15750600192915050565b600101610da7565b6060610e0482611ffe565b92915050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190613e01565b610e925760405162461bcd60e51b815260040161064f90613e1e565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60cc81815481106107b357600080fd5b600054610100900460ff1615808015610f015750600054600160ff909116105b80610f1b5750303b158015610f1b575060005460ff166001145b610f7e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161064f565b6000805460ff191660011790558015610fa1576000805461ff0019166101001790555b60408051606081018252610708815260016020820181905261012c919092015260ca805468ffffffffffffffffff191666012c010000070817905560cd805491820181556000527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0180546001600160a01b0319166001600160a01b0384161790558015610b47576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b611074611d34565b61107e600061232a565b565b60408051808201909152600081526060602082015260005b60ce548110156109b557826001600160a01b031660ce82815481106110bf576110bf613e66565b60009182526020909120600290910201546001600160a01b0316036111ba5760ce81815481106110f1576110f1613e66565b60009182526020918290206040805180820190915260029092020180546001600160a01b03168252600181018054929391929184019161113090613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461115c90613e7c565b80156111a95780601f1061117e576101008083540402835291602001916111a9565b820191906000526020600020905b81548152906001019060200180831161118c57829003601f168201915b505050505081525050915050919050565b600101611098565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461120a5760405162461bcd60e51b815260040161064f90613fed565b61121382610d8c565b61125f5760405162461bcd60e51b815260206004820152601860248201527f4f70657261746f72206e6f742077686974656c69737465640000000000000000604482015260640161064f565b610b47828261237c565b63ffffffff8116600090815260cb6020908152604091829020548451925190926112959290910161416d565b604051602081830303815290604052805190602001201461131e5760405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e7472616374000000606482015260840161064f565b81516040015163ffffffff42811691161161136e5760405162461bcd60e51b815260206004820152601060248201526f15185cdac81a185cc8195e1c1a5c995960821b604482015260640161064f565b6040805160c0810182528351518201519181019182528351516080908101516001600160a01b03166060830152845160209081015163ffffffff1682840152600160a08401529282528285015192820192909252835190910151516000906001600160401b038111156113e3576113e36134d0565b60405190808252806020026020018201604052801561140c578160200160208202803683370190505b50905060005b81518110156114715784516080015180518290811061143357611433613e66565b60200260200101516000015182828151811061145157611451613e66565b6001600160a01b0390921660209283029190910190910152600101611412565b5061147c82826123ca565b63ffffffff8316600081815260cb602052604080822091909155517fa5be567caa88ff11b6da2cf017f9cefffcafa24111a9ecbf0b0bc476944f0f09906114c4908790614180565b60405180910390a250505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461151a5760405162461bcd60e51b815260040161064f90613fed565b610661816124ee565b60ce818154811061153357600080fd5b6000918252602090912060029091020180546001820180546001600160a01b0390921693509061156290613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461158e90613e7c565b80156115db5780601f106115b0576101008083540402835291602001916115db565b820191906000526020600020905b8154815290600101906020018083116115be57829003601f168201915b5050505050905082565b6115ee33610d03565b61160a5760405162461bcd60e51b815260040161064f90613fc0565b61066181612566565b600080836040516020016116279190614205565b604051602081830303815290604052905061164281846125b2565b949350505050565b60608160405160200161165d9190614205565b6040516020818303038152906040529050919050565b60808201516001600160a01b031633146117395760008260405160200161169a9190614205565b604051602081830303815290604052905060006116b782846125b2565b905083608001516001600160a01b0316816001600160a01b0316146117365760405162461bcd60e51b815260206004820152602f60248201527f5369676e6572206f6620726571756573745369676e6174757265206973206e6f60448201526e3a103932b8bab2b9ba1737bbb732b960891b606482015260840161064f565b50505b60006117498360600151426125f3565b60ca5490915063ffffffff65010000000000909104811690821611156117b15760405162461bcd60e51b815260206004820152601e60248201527f526571756573742074696d657374616d7020746f6f2066617220617761790000604482015260640161064f565b6040805161016081018252606060c08201819052600060e08301819052610100830181905261012083018190526101408301819052928201839052808201839052608082015260a081019190915283815263ffffffff4281166020830181905260ca5461181f92169061422e565b63ffffffff1660408281019190915260ca54640100000000900460ff1660608301525160009061185390839060200161416d565b60408051808303601f19018152919052805160209091012060ca5490915061188690640100000000900460ff1682612628565b608083015260405161189c90839060200161416d565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260cb90945293909220555416907f7738d1b30deac7824a0580de02efde3bb766c7b7b5ea79da34869ebd887cebf3906118ff90859061416d565b60405180910390a260c95461191b9063ffffffff16600161422e565b60c9805463ffffffff191663ffffffff929092169190911790555050505050565b6040516398ec1ac960e01b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906398ec1ac990602401602060405180830381865afa1580156119a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cb919061424a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340bf2fb76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a51919061424a565b909110159392505050565b6060611a666129d3565b905090565b611a73611d34565b6001600160a01b038116611ad85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161064f565b6106618161232a565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b589190613d9a565b6001600160a01b0316336001600160a01b031614611b885760405162461bcd60e51b815260040161064f90613db7565b609854198119609854191614611c065760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161064f565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610798565b6001600160a01b038116611ccb5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161064f565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461107e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161064f565b60005b81811015611f8157828282818110611dab57611dab613e66565b9050602002810190611dbd9190614263565b611dce90604081019060200161349a565b6001600160a01b03166323b872dd3330868686818110611df057611df0613e66565b9050602002810190611e029190614263565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190613e01565b50828282818110611e9057611e90613e66565b9050602002810190611ea29190614263565b611eb390604081019060200161349a565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000858585818110611ef457611ef4613e66565b9050602002810190611f069190614263565b604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152013560248201526044016020604051808303816000875af1158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f789190613e01565b50600101611d91565b50604051630da22a8b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631b44551690611fd09085908590600401614313565b600060405180830381600087803b158015611fea57600080fd5b505af1158015610a98573d6000803e3d6000fd5b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631703a0186040518163ffffffff1660e01b8152600401600060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612088919081019061442d565b8051519091506000816001600160401b038111156120a8576120a86134d0565b6040519080825280602002602001820160405280156120d1578160200160208202803683370190505b50905060005b828110156121315783518051829081106120f3576120f3613e66565b60200260200101516000015182828151811061211157612111613e66565b6001600160a01b03909216602092830291909101909101526001016120d7565b50604051639004134760e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906390041347906121839089908690600401614535565b600060405180830381865afa1580156121a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c89190810190614594565b90506000836001600160401b038111156121e4576121e46134d0565b60405190808252806020026020018201604052801561220d578160200160208202803683370190505b5090506000805b8581101561225457600084828151811061223057612230613e66565b6020026020010151111561224c578161224881614629565b9250505b600101612214565b506000816001600160401b0381111561226f5761226f6134d0565b604051908082528060200260200182016040528015612298578160200160208202803683370190505b50905060005b8681101561231d5760008582815181106122ba576122ba613e66565b60200260200101511115612315578381815181106122da576122da613e66565b60200260200101518282815181106122f4576122f4613e66565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161229e565b5098975050505050505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611fd09085908590600401614642565b60008260200151511161240f5760405162461bcd60e51b815260206004820152600d60248201526c4e6f207369676e61747572657360981b604482015260640161064f565b600061241a83612b10565b905060005b82518110156124e8576000805b83518110156124915784838151811061244757612447613e66565b60200260200101516001600160a01b031684828151811061246a5761246a613e66565b60200260200101516001600160a01b0316036124895760019150612491565b60010161242c565b50806124df5760405162461bcd60e51b815260206004820152601960248201527f4d697373696e67207769746e657373207369676e617475726500000000000000604482015260640161064f565b5060010161241f565b50505050565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561255257600080fd5b505af11580156109a6573d6000803e3d6000fd5b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590612538908490600401613d87565b6000806125bf8451612bdf565b846040516020016125d192919061468d565b6040516020818303038152906040528051906020012090506116428184612d0a565b60008163ffffffff168363ffffffff16116126175761261283836146e8565b612621565b61262182846146e8565b9392505050565b60ce5460609060ff841611156126805760405162461bcd60e51b815260206004820152601e60248201527f496e7465726e616c3a204e6f7420656e6f756768206f70657261746f72730000604482015260640161064f565b600060ce805480602002602001604051908101604052809291908181526020016000905b8282101561277d576000848152602090819020604080518082019091526002850290910180546001600160a01b0316825260018101805492939192918401916126ec90613e7c565b80601f016020809104026020016040519081016040528092919081815260200182805461271890613e7c565b80156127655780601f1061273a57610100808354040283529160200191612765565b820191906000526020600020905b81548152906001019060200180831161274857829003601f168201915b505050505081525050815260200190600101906126a4565b50508251929350600091505060ff86166001600160401b038111156127a4576127a46134d0565b6040519080825280602002602001820160405280156127ea57816020015b6040805180820190915260008152606060208201528152602001906001900390816127c25790505b50905060005b81518160ff1610156129c957600083116128725760405162461bcd60e51b815260206004820152603760248201527f496e7465726e616c3a204665657320746f6f206c6f772e204e6f206f7065726160448201527f746f7273206c65667420746f207069636b2066726f6d2e000000000000000000606482015260840161064f565b6000836128bb61288560ff85168a614704565b60408051446020808301919091524282840152606080830194909452825180830390940184526080909101909152815191012090565b6128c5919061472d565b905060008582815181106128db576128db613e66565b60200260200101519050856001866128f39190614741565b8151811061290357612903613e66565b602002602001015186838151811061291d5761291d613e66565b6020908102919091010152612933600186614741565b9450612942816000015161193c565b61294d5750506127f0565b8060000151848460ff168151811061296757612967613e66565b6020026020010151600001906001600160a01b031690816001600160a01b0316815250508060200151848460ff16815181106129a5576129a5613e66565b60200260200101516020018190525082806129bf90614754565b93505050506127f0565b5095945050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631703a0186040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a5d919081019061442d565b905060008160000151516001600160401b03811115612a7e57612a7e6134d0565b604051908082528060200260200182016040528015612aa7578160200160208202803683370190505b50905060005b825151811015612b09578251805182908110612acb57612acb613e66565b602002602001015160000151828281518110612ae957612ae9613e66565b6001600160a01b0390921660209283029190910190910152600101612aad565b5092915050565b60606000612b218360000151612d26565b905060008360200151516001600160401b03811115612b4257612b426134d0565b604051908082528060200260200182016040528015612b6b578160200160208202803683370190505b50905060005b846020015151811015612bd757612ba58386602001518381518110612b9857612b98613e66565b60200260200101516125b2565b828281518110612bb757612bb7613e66565b6001600160a01b0390921660209283029190910190910152600101612b71565b509392505050565b606081600003612c065750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612c305780612c1a81614629565b9150612c299050600a83614773565b9150612c0a565b6000816001600160401b03811115612c4a57612c4a6134d0565b6040519080825280601f01601f191660200182016040528015612c74576020820181803683370190505b509050815b8515612d0157612c8a600182614741565b90506000612c99600a88614773565b612ca490600a614787565b612cae9088614741565b612cb990603061479e565b905060008160f81b905080848481518110612cd657612cd6613e66565b60200101906001600160f81b031916908160001a905350612cf8600a89614773565b97505050612c79565b50949350505050565b6000806000612d198585612d96565b91509150612bd781612e04565b6060612d568260000151604051602001612d4291815260200190565b604051602081830303815290604052612fba565b612d638360200151613173565b612d76846040015163ffffffff16612bdf565b612d838560600151612bdf565b60405160200161165d94939291906147b7565b6000808251604103612dcc5760208301516040840151606085015160001a612dc0878285856132d5565b94509450505050612dfd565b8251604003612df55760208301516040840151612dea8683836133c2565b935093505050612dfd565b506000905060025b9250929050565b6000816004811115612e1857612e1861483d565b03612e205750565b6001816004811115612e3457612e3461483d565b03612e815760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161064f565b6002816004811115612e9557612e9561483d565b03612ee25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161064f565b6003816004811115612ef657612ef661483d565b03612f4e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161064f565b6004816004811115612f6257612f6261483d565b036106615760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161064f565b6060600082516002612fcc9190614787565b6001600160401b03811115612fe357612fe36134d0565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b84518110156131495781825186838151811061305957613059613e66565b016020015161306b919060f81c614773565b8151811061307b5761307b613e66565b01602001516001600160f81b03191683613096836002614787565b815181106130a6576130a6613e66565b60200101906001600160f81b031916908160001a9053508182518683815181106130d2576130d2613e66565b01602001516130e4919060f81c61472d565b815181106130f4576130f4613e66565b01602001516001600160f81b0319168361310f836002614787565b61311a906001614704565b8151811061312a5761312a613e66565b60200101906001600160f81b031916908160001a90535060010161303b565b508160405160200161315b9190614853565b60405160208183030381529060405292505050919050565b60408051602880825260608281019093526000919060208201818036833701905050905060005b60148110156132ac5760006131b0826013614741565b6131bb906008614787565b6131c690600261495c565b6131d9906001600160a01b038716614773565b60f81b9050600060108260f81c6131f09190614968565b60f81b905060008160f81c6010613207919061498a565b8360f81c61321591906149a6565b60f81b9050613223826133fc565b8561322f866002614787565b8151811061323f5761323f613e66565b60200101906001600160f81b031916908160001a90535061325f816133fc565b8561326b866002614787565b613276906001614704565b8151811061328657613286613e66565b60200101906001600160f81b031916908160001a905350506001909201915061319a9050565b50806040516020016132be9190614853565b604051602081830303815290604052915050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561330c57506000905060036133b9565b8460ff16601b1415801561332457508460ff16601c14155b1561333557506000905060046133b9565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613389573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133b2576000600192509250506133b9565b9150600090505b94509492505050565b6000806001600160ff1b038316816133df60ff86901c601b614704565b90506133ed878288856132d5565b9350935050505b935093915050565b6000600a60f883901c10156134235761341a60f883901c603061479e565b60f81b92915050565b61341a60f883901c605761479e565b919050565b50805461344390613e7c565b6000825580601f10613453575050565b601f01602090049060005260206000209081019061066191905b80821115613481576000815560010161346d565b5090565b6001600160a01b038116811461066157600080fd5b6000602082840312156134ac57600080fd5b813561262181613485565b6000602082840312156134c957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613508576135086134d0565b60405290565b604051606081016001600160401b0381118282101715613508576135086134d0565b60405160c081016001600160401b0381118282101715613508576135086134d0565b604051602081016001600160401b0381118282101715613508576135086134d0565b604051601f8201601f191681016001600160401b038111828210171561359c5761359c6134d0565b604052919050565b600082601f8301126135b557600080fd5b8135602083016000806001600160401b038411156135d5576135d56134d0565b50601f8301601f19166020016135ea81613574565b9150508281528583830111156135ff57600080fd5b82826020830137600092810160200192909252509392505050565b60006040828403121561362c57600080fd5b6136346134e6565b9050813561364181613485565b815260208201356001600160401b0381111561365c57600080fd5b613668848285016135a4565b60208301525092915050565b60006020828403121561368657600080fd5b81356001600160401b0381111561369c57600080fd5b6116428482850161361a565b600080602083850312156136bb57600080fd5b82356001600160401b038111156136d157600080fd5b8301601f810185136136e257600080fd5b80356001600160401b038111156136f857600080fd5b8560208260051b840101111561370d57600080fd5b6020919091019590945092505050565b801515811461066157600080fd5b6000806040838503121561373e57600080fd5b823561374981613485565b915060208301356137598161371d565b809150509250929050565b803563ffffffff8116811461343257600080fd5b803560ff8116811461343257600080fd5b6000606082840312801561379c57600080fd5b506137a561350e565b6137ae83613764565b81526137bc60208401613778565b60208201526137cd60408401613764565b60408201529392505050565b6000602082840312156137eb57600080fd5b61262182613764565b602080825282518282018190526000918401906040840190835b818110156138355783516001600160a01b031683526020938401939092019160010161380e565b509095945050505050565b60006020828403121561385257600080fd5b61262182613778565b60005b8381101561387657818101518382015260200161385e565b50506000910152565b6000815180845261389781602086016020860161385b565b601f01601f19169290920160200192915050565b60018060a01b0381511682526000602082015160406020850152611642604085018261387f565b60208152600061262160208301846138ab565b600080604083850312156138f857600080fd5b823561390381613485565b915060208301356001600160401b0381111561391e57600080fd5b83016060818603121561393057600080fd5b61393861350e565b81356001600160401b0381111561394e57600080fd5b61395a878285016135a4565b8252506020828101359082015260409182013591810191909152919491935090915050565b600060a0828403121561399157600080fd5b60405160a081016001600160401b03811182821017156139b3576139b36134d0565b60405290508082356001600160401b038111156139cf57600080fd5b6139db858286016135a4565b82525060208381013590820152604080840135908201526139fe60608401613764565b60608201526080830135613a1181613485565b6080919091015292915050565b60006001600160401b03821115613a3757613a376134d0565b5060051b60200190565b600082601f830112613a5257600080fd5b8135613a65613a6082613a1e565b613574565b8082825260208201915060208360051b860101925085831115613a8757600080fd5b602085015b838110156129c95780356001600160401b03811115613aaa57600080fd5b613ab9886020838a010161361a565b84525060209283019201613a8c565b600082601f830112613ad957600080fd5b8135613ae7613a6082613a1e565b8082825260208201915060208360051b860101925085831115613b0957600080fd5b602085015b838110156129c95780356001600160401b03811115613b2c57600080fd5b613b3b886020838a01016135a4565b84525060209283019201613b0e565b60008060408385031215613b5d57600080fd5b82356001600160401b03811115613b7357600080fd5b830160408186031215613b8557600080fd5b613b8d6134e6565b81356001600160401b03811115613ba357600080fd5b820160c08188031215613bb557600080fd5b613bbd613530565b81356001600160401b03811115613bd357600080fd5b613bdf8982850161397f565b825250613bee60208301613764565b6020820152613bff60408301613764565b6040820152613c1060608301613778565b606082015260808201356001600160401b03811115613c2e57600080fd5b613c3a89828501613a41565b60808301525060a09182013591810191909152815260208201356001600160401b03811115613c6857600080fd5b613c7487828501613ac8565b6020830152508093505050613c8b60208401613764565b90509250929050565b6001600160a01b03831681526040602082018190526000906116429083018461387f565b600060208284031215613cca57600080fd5b81356001600160401b03811115613ce057600080fd5b611642848285016135a4565b60008060408385031215613cff57600080fd5b82356001600160401b03811115613d1557600080fd5b613d218582860161397f565b92505060208301356001600160401b03811115613d3d57600080fd5b613d49858286016135a4565b9150509250929050565b600060208284031215613d6557600080fd5b81356001600160401b03811115613d7b57600080fd5b6116428482850161397f565b602081526000612621602083018461387f565b600060208284031215613dac57600080fd5b815161262181613485565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215613e1357600080fd5b81516126218161371d565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680613e9057607f821691505b602082108103613eb057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115613efd57806000526020600020601f840160051c81016020851015613edd5750805b601f840160051c820191505b818110156109a65760008155600101613ee9565b505050565b81516001600160401b03811115613f1b57613f1b6134d0565b613f2f81613f298454613e7c565b84613eb6565b6020601f821160018114613f635760008315613f4b5750848201515b600019600385901b1c1916600184901b1784556109a6565b600084815260208120601f198516915b82811015613f935787850151825560209485019460019092019101613f73565b5084821015613fb15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6020808252604a908201527f4543445341536572766963654d616e61676572426173652e6f6e6c795374616b60408201527f6552656769737472793a2063616c6c6572206973206e6f7420746865207374616060820152696b65526567697374727960b01b608082015260a00190565b6000815160a0845261407260a085018261387f565b602084810151908601526040808501519086015260608085015163ffffffff16908601526080938401516001600160a01b031693909401929092525090919050565b6000815160c084526140c960c085018261405d565b905063ffffffff602084015116602085015263ffffffff604084015116604085015260ff60608401511660608501526080830151848203608086015281815180845260208401915060208160051b85010160208401935060005b8281101561415457601f1986830301845261413f8286516138ab565b60209586019594909401939150600101614123565b5060a087015160a0890152809550505050505092915050565b60208152600061262160208301846140b4565b60208152600082516040602084015261419c60608401826140b4565b602085810151858303601f19016040870152805180845292935081019181840191600582901b85010160005b828110156141f957601f198683030184526141e482865161387f565b602095860195949094019391506001016141c8565b50979650505050505050565b602081526000612621602083018461405d565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190811115610e0457610e04614218565b60006020828403121561425c57600080fd5b5051919050565b60008235609e1983360301811261427957600080fd5b9190910192915050565b803561343281613485565b6bffffffffffffffffffffffff8116811461066157600080fd5b81835260208301925060008160005b848110156143095781356142ca81613485565b6001600160a01b0316865260208201356142e38161428e565b6bffffffffffffffffffffffff16602087015260409586019591909101906001016142b7565b5093949350505050565b6020808252810182905260006040600584901b830181019083018583609e1936839003015b8782101561442057868503603f19018452823581811261435757600080fd5b8901803536829003601e1901811261436e57600080fd5b81016020810190356001600160401b0381111561438a57600080fd5b8060061b360382131561439c57600080fd5b60a088526143ae60a0890182846142a8565b9150506143bd60208301614283565b6001600160a01b03166020880152604082810135908801526143e160608301613764565b63ffffffff1660608801526143f860808301613764565b63ffffffff811660808901529150955050602093840193929092019160019190910190614338565b5092979650505050505050565b60006020828403121561443f57600080fd5b81516001600160401b0381111561445557600080fd5b82016020818503121561446757600080fd5b61446f613552565b81516001600160401b0381111561448557600080fd5b80830192505084601f83011261449a57600080fd5b81516144a8613a6082613a1e565b8082825260208201915060208360061b8601019250878311156144ca57600080fd5b6020850194505b8285101561452857604085890312156144e957600080fd5b6144f16134e6565b85516144fc81613485565b8152602086015161450c8161428e565b80602083015250808352506020820191506040850194506144d1565b8352509095945050505050565b6001600160a01b0383168152604060208083018290528351918301829052600091908401906060840190835b818110156145885783516001600160a01b0316835260209384019390920191600101614561565b50909695505050505050565b6000602082840312156145a657600080fd5b81516001600160401b038111156145bc57600080fd5b8201601f810184136145cd57600080fd5b80516145db613a6082613a1e565b8082825260208201915060208360051b8501019250868311156145fd57600080fd5b6020840193505b8284101561461f578351825260209384019390910190614604565b9695505050505050565b60006001820161463b5761463b614218565b5060010190565b60018060a01b038316815260406020820152600082516060604084015261466c60a084018261387f565b90506020840151606084015260408401516080840152809150509392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152600083516146c581601a85016020880161385b565b8351908301906146dc81601a84016020880161385b565b01601a01949350505050565b63ffffffff8281168282160390811115610e0457610e04614218565b80820180821115610e0457610e04614218565b634e487b7160e01b600052601260045260246000fd5b60008261473c5761473c614717565b500690565b81810381811115610e0457610e04614218565b600060ff821660ff810361476a5761476a614218565b60010192915050565b60008261478257614782614717565b500490565b8082028115828204841417610e0457610e04614218565b60ff8181168382160190811115610e0457610e04614218565b600085516147c9818460208a0161385b565b600560f91b90830190815285516147e7816001840160208a0161385b565b600560f91b60019290910191820152845161480981600284016020890161385b565b600181830101915050600560f91b6001820152835161482f81600284016020880161385b565b016002019695505050505050565b634e487b7160e01b600052602160045260246000fd5b61060f60f31b81526000825161487081600285016020870161385b565b9190910160020192915050565b6001815b60018411156133f45780850481111561489c5761489c614218565b60018416156148aa57908102905b60019390931c928002614881565b6000826148c757506001610e04565b816148d457506000610e04565b81600181146148ea57600281146148f457614910565b6001915050610e04565b60ff84111561490557614905614218565b50506001821b610e04565b5060208310610133831016604e8410600b8410161715614933575081810a610e04565b614940600019848461487d565b806000190482111561495457614954614218565b029392505050565b600061262183836148b8565b600060ff83168061497b5761497b614717565b8060ff84160491505092915050565b60ff8181168382160290811690818114612b0957612b09614218565b60ff8281168282160390811115610e0457610e0461421856fea26469706673582212205b54d39db01ec87955542a63c3a53e876a29b21585e12d554ae6989e796dedf764736f6c634300081a0033";
1142
+ const isSuperArgs = (xs) => xs.length > 1;
1143
+ class ReclaimServiceManager__factory extends ethers_1.ContractFactory {
1144
+ constructor(...args) {
1145
+ if (isSuperArgs(args)) {
1146
+ super(...args);
1147
+ }
1148
+ else {
1149
+ super(_abi, _bytecode, args[0]);
1150
+ }
1151
+ }
1152
+ deploy(_avsDirectory, _stakeRegistry, _delegationManager, overrides) {
1153
+ return super.deploy(_avsDirectory, _stakeRegistry, _delegationManager, overrides || {});
1154
+ }
1155
+ getDeployTransaction(_avsDirectory, _stakeRegistry, _delegationManager, overrides) {
1156
+ return super.getDeployTransaction(_avsDirectory, _stakeRegistry, _delegationManager, overrides || {});
1157
+ }
1158
+ attach(address) {
1159
+ return super.attach(address);
1160
+ }
1161
+ connect(signer) {
1162
+ return super.connect(signer);
1163
+ }
1164
+ static createInterface() {
1165
+ return new ethers_1.utils.Interface(_abi);
1166
+ }
1167
+ static connect(address, signerOrProvider) {
1168
+ return new ethers_1.Contract(address, _abi, signerOrProvider);
1169
+ }
1170
+ }
1171
+ exports.ReclaimServiceManager__factory = ReclaimServiceManager__factory;
1172
+ ReclaimServiceManager__factory.bytecode = _bytecode;
1173
+ ReclaimServiceManager__factory.abi = _abi;
1174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjbGFpbVNlcnZpY2VNYW5hZ2VyX19mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F2cy9jb250cmFjdHMvZmFjdG9yaWVzL1JlY2xhaW1TZXJ2aWNlTWFuYWdlcl9fZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBK0M7QUFDL0Msb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixtQ0FBNkU7QUFPN0UsTUFBTSxJQUFJLEdBQUc7SUFDWDtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxlQUFlO2dCQUNyQixJQUFJLEVBQUUsU0FBUztnQkFDZixZQUFZLEVBQUUsU0FBUzthQUN4QjtZQUNEO2dCQUNFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLElBQUksRUFBRSxTQUFTO2dCQUNmLFlBQVksRUFBRSxTQUFTO2FBQ3hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsWUFBWSxFQUFFLFNBQVM7YUFDeEI7U0FDRjtRQUNELGVBQWUsRUFBRSxZQUFZO0tBQzlCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsUUFBUTtRQUNkLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxTQUFTO2dCQUNmLFlBQVksRUFBRSxTQUFTO2FBQ3hCO1NBQ0Y7UUFDRCxPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUsRUFBRTtnQkFDUixJQUFJLEVBQUUsU0FBUztnQkFDZixZQUFZLEVBQUUsU0FBUzthQUN4QjtTQUNGO1FBQ0QsZUFBZSxFQUFFLE1BQU07S0FDeEI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSxlQUFlO1FBQ3JCLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFB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