@coti-io/coti-contracts 1.0.0 → 1.0.3

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 (102) hide show
  1. package/.github/workflows/npm-publish.yml +2 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/LICENSE +1 -1
  4. package/README.md +18 -35
  5. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +112 -0
  6. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +152 -0
  7. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +11 -1
  8. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +8 -0
  9. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +33 -4
  10. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +35 -10
  11. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +126 -0
  12. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +3 -0
  13. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +222 -0
  14. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +222 -0
  15. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +223 -0
  16. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +222 -0
  17. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +265 -0
  18. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +281 -0
  19. package/contracts/token/PrivateERC20/PrivateERC20.sol +1 -1
  20. package/contracts/token/PrivateERC721/IERC721Errors.sol +57 -0
  21. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  22. package/contracts/utils/mpc/MpcCore.sol +40 -0
  23. package/contracts/utils/mpc/MpcInterface.sol +2 -0
  24. package/hardhat.config.ts +9 -1
  25. package/package.json +20 -4
  26. package/test/onboard/AccountOnboard.test.ts +2 -2
  27. package/test/token/PrivateERC20/PrivateERC20.test.ts +2 -2
  28. package/test/utils/accounts.ts +2 -2
  29. package/test/utils/mpc/Precompile.test.ts +24 -2
  30. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +0 -2
  31. package/typechain-types/contracts/GasTest.ts +91 -0
  32. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +66 -0
  33. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +6 -0
  34. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +6 -0
  35. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +36 -6
  36. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract.ts +251 -0
  37. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract.ts +250 -0
  38. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  39. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.ts +389 -0
  40. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.ts +391 -0
  41. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.ts +391 -0
  42. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract.ts +391 -0
  43. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract.ts +391 -0
  44. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  45. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.ts +391 -0
  46. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.ts +391 -0
  47. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.ts +306 -0
  48. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract.ts +125 -0
  49. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract.ts +125 -0
  50. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  51. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.ts +296 -0
  52. package/typechain-types/contracts/mocks/utils/mpc/index.ts +7 -0
  53. package/typechain-types/contracts/token/PrivateERC721/IERC721Errors.ts +69 -0
  54. package/typechain-types/contracts/token/PrivateERC721/index.ts +1 -0
  55. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +38 -0
  56. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +0 -1
  57. package/typechain-types/factories/contracts/GasTest__factory.ts +75 -0
  58. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  59. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  60. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  61. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +73 -1
  62. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +11 -1
  63. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  64. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +11 -1
  65. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  66. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  67. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  68. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +26 -30
  69. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  70. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  71. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  72. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  73. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract__factory.ts +294 -0
  74. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +292 -0
  75. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  76. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract__factory.ts +720 -0
  77. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +724 -0
  78. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +724 -0
  79. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  80. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  81. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  82. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  83. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  84. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +507 -0
  85. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract__factory.ts +150 -0
  86. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +150 -0
  87. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  88. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +434 -0
  89. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +7 -0
  90. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  91. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  92. package/typechain-types/factories/contracts/token/PrivateERC721/IERC721Errors__factory.ts +128 -0
  93. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +1 -0
  94. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  95. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +58 -0
  96. package/typechain-types/hardhat.d.ts +144 -54
  97. package/typechain-types/index.ts +16 -6
  98. package/contracts/access/DataPrivacyFramework/README.md +0 -68
  99. package/contracts/onboard/README.md +0 -65
  100. package/contracts/token/PrivateERC20/README.md +0 -104
  101. package/contracts/token/PrivateERC721/README.md +0 -282
  102. package/contracts/utils/mpc/README.md +0 -82
@@ -0,0 +1,434 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../../../../common";
12
+ import type {
13
+ TransferWithAllowanceTestsContract,
14
+ TransferWithAllowanceTestsContractInterface,
15
+ } from "../../../../../contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [
20
+ {
21
+ components: [
22
+ {
23
+ internalType: "gtUint8",
24
+ name: "a8_s",
25
+ type: "uint256",
26
+ },
27
+ {
28
+ internalType: "gtUint8",
29
+ name: "b8_s",
30
+ type: "uint256",
31
+ },
32
+ {
33
+ internalType: "gtUint16",
34
+ name: "a16_s",
35
+ type: "uint256",
36
+ },
37
+ {
38
+ internalType: "gtUint16",
39
+ name: "b16_s",
40
+ type: "uint256",
41
+ },
42
+ {
43
+ internalType: "gtUint32",
44
+ name: "a32_s",
45
+ type: "uint256",
46
+ },
47
+ {
48
+ internalType: "gtUint32",
49
+ name: "b32_s",
50
+ type: "uint256",
51
+ },
52
+ {
53
+ internalType: "gtUint64",
54
+ name: "a64_s",
55
+ type: "uint256",
56
+ },
57
+ {
58
+ internalType: "gtUint64",
59
+ name: "b64_s",
60
+ type: "uint256",
61
+ },
62
+ ],
63
+ internalType:
64
+ "struct TransferWithAllowanceTestsContract.AllGTCastingValues",
65
+ name: "allGTCastingValues",
66
+ type: "tuple",
67
+ },
68
+ {
69
+ components: [
70
+ {
71
+ internalType: "gtUint8",
72
+ name: "amount8_s",
73
+ type: "uint256",
74
+ },
75
+ {
76
+ internalType: "gtUint16",
77
+ name: "amount16_s",
78
+ type: "uint256",
79
+ },
80
+ {
81
+ internalType: "gtUint32",
82
+ name: "amount32_s",
83
+ type: "uint256",
84
+ },
85
+ {
86
+ internalType: "gtUint64",
87
+ name: "amount64_s",
88
+ type: "uint256",
89
+ },
90
+ {
91
+ internalType: "uint8",
92
+ name: "amount",
93
+ type: "uint8",
94
+ },
95
+ ],
96
+ internalType:
97
+ "struct TransferWithAllowanceTestsContract.AllAmountValues",
98
+ name: "allAmountValues",
99
+ type: "tuple",
100
+ },
101
+ {
102
+ components: [
103
+ {
104
+ internalType: "gtUint8",
105
+ name: "allowance8_s",
106
+ type: "uint256",
107
+ },
108
+ {
109
+ internalType: "gtUint16",
110
+ name: "allowance16_s",
111
+ type: "uint256",
112
+ },
113
+ {
114
+ internalType: "gtUint32",
115
+ name: "allowance32_s",
116
+ type: "uint256",
117
+ },
118
+ {
119
+ internalType: "gtUint64",
120
+ name: "allowance64_s",
121
+ type: "uint256",
122
+ },
123
+ {
124
+ internalType: "uint8",
125
+ name: "allowance",
126
+ type: "uint8",
127
+ },
128
+ ],
129
+ internalType:
130
+ "struct TransferWithAllowanceTestsContract.AllAllowanceValues",
131
+ name: "allAllowanceValues",
132
+ type: "tuple",
133
+ },
134
+ {
135
+ internalType: "uint8",
136
+ name: "new_a",
137
+ type: "uint8",
138
+ },
139
+ {
140
+ internalType: "uint8",
141
+ name: "new_b",
142
+ type: "uint8",
143
+ },
144
+ {
145
+ internalType: "bool",
146
+ name: "res",
147
+ type: "bool",
148
+ },
149
+ {
150
+ internalType: "uint8",
151
+ name: "new_allowance",
152
+ type: "uint8",
153
+ },
154
+ ],
155
+ name: "computeAndCheckTransfer16",
156
+ outputs: [],
157
+ stateMutability: "nonpayable",
158
+ type: "function",
159
+ },
160
+ {
161
+ inputs: [
162
+ {
163
+ components: [
164
+ {
165
+ internalType: "gtUint8",
166
+ name: "a8_s",
167
+ type: "uint256",
168
+ },
169
+ {
170
+ internalType: "gtUint8",
171
+ name: "b8_s",
172
+ type: "uint256",
173
+ },
174
+ {
175
+ internalType: "gtUint16",
176
+ name: "a16_s",
177
+ type: "uint256",
178
+ },
179
+ {
180
+ internalType: "gtUint16",
181
+ name: "b16_s",
182
+ type: "uint256",
183
+ },
184
+ {
185
+ internalType: "gtUint32",
186
+ name: "a32_s",
187
+ type: "uint256",
188
+ },
189
+ {
190
+ internalType: "gtUint32",
191
+ name: "b32_s",
192
+ type: "uint256",
193
+ },
194
+ {
195
+ internalType: "gtUint64",
196
+ name: "a64_s",
197
+ type: "uint256",
198
+ },
199
+ {
200
+ internalType: "gtUint64",
201
+ name: "b64_s",
202
+ type: "uint256",
203
+ },
204
+ ],
205
+ internalType:
206
+ "struct TransferWithAllowanceTestsContract.AllGTCastingValues",
207
+ name: "allGTCastingValues",
208
+ type: "tuple",
209
+ },
210
+ {
211
+ components: [
212
+ {
213
+ internalType: "gtUint8",
214
+ name: "amount8_s",
215
+ type: "uint256",
216
+ },
217
+ {
218
+ internalType: "gtUint16",
219
+ name: "amount16_s",
220
+ type: "uint256",
221
+ },
222
+ {
223
+ internalType: "gtUint32",
224
+ name: "amount32_s",
225
+ type: "uint256",
226
+ },
227
+ {
228
+ internalType: "gtUint64",
229
+ name: "amount64_s",
230
+ type: "uint256",
231
+ },
232
+ {
233
+ internalType: "uint8",
234
+ name: "amount",
235
+ type: "uint8",
236
+ },
237
+ ],
238
+ internalType:
239
+ "struct TransferWithAllowanceTestsContract.AllAmountValues",
240
+ name: "allAmountValues",
241
+ type: "tuple",
242
+ },
243
+ {
244
+ components: [
245
+ {
246
+ internalType: "gtUint8",
247
+ name: "allowance8_s",
248
+ type: "uint256",
249
+ },
250
+ {
251
+ internalType: "gtUint16",
252
+ name: "allowance16_s",
253
+ type: "uint256",
254
+ },
255
+ {
256
+ internalType: "gtUint32",
257
+ name: "allowance32_s",
258
+ type: "uint256",
259
+ },
260
+ {
261
+ internalType: "gtUint64",
262
+ name: "allowance64_s",
263
+ type: "uint256",
264
+ },
265
+ {
266
+ internalType: "uint8",
267
+ name: "allowance",
268
+ type: "uint8",
269
+ },
270
+ ],
271
+ internalType:
272
+ "struct TransferWithAllowanceTestsContract.AllAllowanceValues",
273
+ name: "allAllowanceValues",
274
+ type: "tuple",
275
+ },
276
+ {
277
+ internalType: "uint8",
278
+ name: "new_a",
279
+ type: "uint8",
280
+ },
281
+ {
282
+ internalType: "uint8",
283
+ name: "new_b",
284
+ type: "uint8",
285
+ },
286
+ {
287
+ internalType: "bool",
288
+ name: "res",
289
+ type: "bool",
290
+ },
291
+ {
292
+ internalType: "uint8",
293
+ name: "new_allowance",
294
+ type: "uint8",
295
+ },
296
+ ],
297
+ name: "computeAndCheckTransfer32",
298
+ outputs: [],
299
+ stateMutability: "nonpayable",
300
+ type: "function",
301
+ },
302
+ {
303
+ inputs: [],
304
+ name: "getResults",
305
+ outputs: [
306
+ {
307
+ internalType: "uint8",
308
+ name: "",
309
+ type: "uint8",
310
+ },
311
+ {
312
+ internalType: "uint8",
313
+ name: "",
314
+ type: "uint8",
315
+ },
316
+ {
317
+ internalType: "bool",
318
+ name: "",
319
+ type: "bool",
320
+ },
321
+ {
322
+ internalType: "uint8",
323
+ name: "",
324
+ type: "uint8",
325
+ },
326
+ ],
327
+ stateMutability: "view",
328
+ type: "function",
329
+ },
330
+ {
331
+ inputs: [
332
+ {
333
+ internalType: "uint8",
334
+ name: "a",
335
+ type: "uint8",
336
+ },
337
+ {
338
+ internalType: "uint8",
339
+ name: "b",
340
+ type: "uint8",
341
+ },
342
+ {
343
+ internalType: "uint8",
344
+ name: "amount",
345
+ type: "uint8",
346
+ },
347
+ {
348
+ internalType: "uint8",
349
+ name: "allowance",
350
+ type: "uint8",
351
+ },
352
+ ],
353
+ name: "transferWithAllowanceTest",
354
+ outputs: [
355
+ {
356
+ internalType: "uint8",
357
+ name: "",
358
+ type: "uint8",
359
+ },
360
+ {
361
+ internalType: "uint8",
362
+ name: "",
363
+ type: "uint8",
364
+ },
365
+ {
366
+ internalType: "bool",
367
+ name: "",
368
+ type: "bool",
369
+ },
370
+ {
371
+ internalType: "uint8",
372
+ name: "",
373
+ type: "uint8",
374
+ },
375
+ ],
376
+ stateMutability: "nonpayable",
377
+ type: "function",
378
+ },
379
+ ] as const;
380
+
381
+ const _bytecode =
382
+ "0x608060405234801561001057600080fd5b50614206806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634717f97c1461005157806386affd16146100a2578063eae36abd146100b7578063f20eac20146100ca575b600080fd5b60005460ff80821691610100810482169162010000820481169163010000009004165b6040805160ff9586168152938516602085015291151583830152909216606082015290519081900360800190f35b6100b56100b0366004614012565b6100dd565b005b6100746100c53660046140fe565b610aa2565b6100b56100d8366004614012565b610e03565b6000806000806100ff8b604001518c606001518c602001518c60200151613373565b93509350935093506101108461345e565b61ffff168860ff1614801561013357506101298361345e565b61ffff168760ff16145b801561014a575061014382613501565b1515861515145b8015610164575061015a8161345e565b61ffff168560ff16145b6101b55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064015b60405180910390fd5b6101d18b604001518c602001518c600001518c60000151613592565b929650909450925090506101e48461345e565b61ffff168860ff1614801561020757506101fd8361345e565b61ffff168760ff16145b801561021e575061021782613501565b1515861515145b8015610238575061022e8161345e565b61ffff168560ff16145b6102845760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b8a5160608c01518b518b5161029b939291906135b1565b929650909450925090506102ae8461345e565b61ffff168860ff161480156102d157506102c78361345e565b61ffff168760ff16145b80156102e857506102e182613501565b1515861515145b801561030257506102f88161345e565b61ffff168560ff16145b61034e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b61036a8b604001518c602001518c602001518c600001516135d0565b9296509094509250905061037d8461345e565b61ffff168860ff161480156103a057506103968361345e565b61ffff168760ff16145b80156103b757506103b082613501565b1515861515145b80156103d157506103c78161345e565b61ffff168560ff16145b61041d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6104398b600001518c606001518c602001518c600001516135ef565b9296509094509250905061044c8461345e565b61ffff168860ff1614801561046f57506104658361345e565b61ffff168760ff16145b8015610486575061047f82613501565b1515861515145b80156104a057506104968161345e565b61ffff168560ff16145b6104ec5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105088b604001518c606001518c600001518c6000015161360e565b9296509094509250905061051b8461345e565b61ffff168860ff1614801561053e57506105348361345e565b61ffff168760ff16145b8015610555575061054e82613501565b1515861515145b801561056f57506105658161345e565b61ffff168560ff16145b6105bb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6105d78b604001518c606001518c602001518c6000015161362d565b929650909450925090506105ea8461345e565b61ffff168860ff1614801561060d57506106038361345e565b61ffff168760ff16145b8015610624575061061d82613501565b1515861515145b801561063e57506106348161345e565b61ffff168560ff16145b61068a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6106a68b604001518c602001518c600001518c6020015161364c565b929650909450925090506106b98461345e565b61ffff168860ff161480156106dc57506106d28361345e565b61ffff168760ff16145b80156106f357506106ec82613501565b1515861515145b801561070d57506107038161345e565b61ffff168560ff16145b6107595760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6107758b600001518c606001518c600001518c6020015161366b565b929650909450925090506107888461345e565b61ffff168860ff161480156107ab57506107a18361345e565b61ffff168760ff16145b80156107c257506107bb82613501565b1515861515145b80156107dc57506107d28161345e565b61ffff168560ff16145b6108285760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6108448b604001518c602001518c602001518c6020015161368a565b929650909450925090506108578461345e565b61ffff168860ff1614801561087a57506108708361345e565b61ffff168760ff16145b8015610891575061088a82613501565b1515861515145b80156108ab57506108a18161345e565b61ffff168560ff16145b6108f75760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109138b600001518c606001518c602001518c602001516136a9565b929650909450925090506109268461345e565b61ffff168860ff16148015610949575061093f8361345e565b61ffff168760ff16145b8015610960575061095982613501565b1515861515145b801561097a57506109708161345e565b61ffff168560ff16145b6109c65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b6109e28b604001518c606001518c600001518c602001516136c8565b929650909450925090506109f58461345e565b61ffff168860ff16148015610a185750610a0e8361345e565b61ffff168760ff16145b8015610a2f5750610a2882613501565b1515861515145b8015610a495750610a3f8161345e565b61ffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203136206661696c65640000000060448201526064016101ac565b5050505050505050505050565b600080600080610af060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b610b256040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b5a6040518060a0016040528060008152602001600081526020016000815260200160008152602001600060ff1681525090565b610b638b6136e7565b8352610b6e8a6136e7565b6020840152610b7f60ff8c16613750565b6040840152610b9060ff8b16613750565b6060840152610ba160ff8c166137ba565b6080840152610bb260ff8b166137ba565b60a0840152610bc360ff8c16613826565b60c0840152610bd460ff8b16613826565b60e0840152610be2896136e7565b8252610bf060ff8a16613750565b6020830152610c0160ff8a166137ba565b6040830152610c1260ff8a16613826565b606083015260ff89166080830152610c29886136e7565b8152610c3760ff8916613750565b6020820152610c4860ff89166137ba565b6040820152610c5960ff8916613826565b606082015260ff881660808201528251602084015183518351600093849384938493610c8793929190613896565b9350935093509350610c98846138b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055610cd3836138b4565b600060016101000a81548160ff021916908360ff160217905550610cf682613501565b6000805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055610d35816138b4565b6000805460ff92831663010000009081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff8316811793849055610d9c948c948c948c949383169083161792610100820483169262010000830481169291909104166100dd565b600054610dcd9088908890889060ff8082169161010081048216916201000082048116916301000000900416610e03565b505060005460ff8082169f610100830482169f5062010000830482169e506301000000909204169b509950505050505050505050565b600080600080610e258b608001518c60a001518c604001518c604001516138c4565b9350935093509350610e36846138e2565b63ffffffff168860ff16148015610e5d5750610e51836138e2565b63ffffffff168760ff16145b8015610e745750610e6d82613501565b1515861515145b8015610e905750610e84816138e2565b63ffffffff168560ff16145b610edc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b610ef88b608001518c602001518c600001518c600001516138f2565b92965090945092509050610f0b846138e2565b63ffffffff168860ff16148015610f325750610f26836138e2565b63ffffffff168760ff16145b8015610f495750610f4282613501565b1515861515145b8015610f655750610f59816138e2565b63ffffffff168560ff16145b610fb15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b8a5160a08c01518b518b51610fc893929190613911565b92965090945092509050610fdb846138e2565b63ffffffff168860ff161480156110025750610ff6836138e2565b63ffffffff168760ff16145b8015611019575061101282613501565b1515861515145b80156110355750611029816138e2565b63ffffffff168560ff16145b6110815760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61109d8b608001518c602001518c604001518c60000151613930565b929650909450925090506110b0846138e2565b63ffffffff168860ff161480156110d757506110cb836138e2565b63ffffffff168760ff16145b80156110ee57506110e782613501565b1515861515145b801561110a57506110fe816138e2565b63ffffffff168560ff16145b6111565760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6111728b600001518c60a001518c604001518c6000015161394f565b92965090945092509050611185846138e2565b63ffffffff168860ff161480156111ac57506111a0836138e2565b63ffffffff168760ff16145b80156111c357506111bc82613501565b1515861515145b80156111df57506111d3816138e2565b63ffffffff168560ff16145b61122b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6112478b608001518c60a001518c604001518c6000015161396e565b9296509094509250905061125a846138e2565b63ffffffff168860ff161480156112815750611275836138e2565b63ffffffff168760ff16145b8015611298575061129182613501565b1515861515145b80156112b457506112a8816138e2565b63ffffffff168560ff16145b6113005760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61131c8b608001518c602001518c602001518c6000015161398d565b9296509094509250905061132f846138e2565b63ffffffff168860ff16148015611356575061134a836138e2565b63ffffffff168760ff16145b801561136d575061136682613501565b1515861515145b8015611389575061137d816138e2565b63ffffffff168560ff16145b6113d55760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6113f18b600001518c60a001518c602001518c600001516139ad565b92965090945092509050611404846138e2565b63ffffffff168860ff1614801561142b575061141f836138e2565b63ffffffff168760ff16145b8015611442575061143b82613501565b1515861515145b801561145e5750611452816138e2565b63ffffffff168560ff16145b6114aa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6114c68b608001518c60a001518c600001518c600001516139cd565b929650909450925090506114d9846138e2565b63ffffffff168860ff1614801561150057506114f4836138e2565b63ffffffff168760ff16145b8015611517575061151082613501565b1515861515145b80156115335750611527816138e2565b63ffffffff168560ff16145b61157f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61159b8b608001518c602001518c600001518c602001516139ec565b929650909450925090506115ae846138e2565b63ffffffff168860ff161480156115d557506115c9836138e2565b63ffffffff168760ff16145b80156115ec57506115e582613501565b1515861515145b801561160857506115fc816138e2565b63ffffffff168560ff16145b6116545760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6116708b600001518c60a001518c600001518c60200151613a0c565b92965090945092509050611683846138e2565b63ffffffff168860ff161480156116aa575061169e836138e2565b63ffffffff168760ff16145b80156116c157506116ba82613501565b1515861515145b80156116dd57506116d1816138e2565b63ffffffff168560ff16145b6117295760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6117458b608001518c602001518c604001518c60200151613a2c565b92965090945092509050611758846138e2565b63ffffffff168860ff1614801561177f5750611773836138e2565b63ffffffff168760ff16145b8015611796575061178f82613501565b1515861515145b80156117b257506117a6816138e2565b63ffffffff168560ff16145b6117fe5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61181a8b600001518c60a001518c604001518c60200151613a4c565b9296509094509250905061182d846138e2565b63ffffffff168860ff161480156118545750611848836138e2565b63ffffffff168760ff16145b801561186b575061186482613501565b1515861515145b8015611887575061187b816138e2565b63ffffffff168560ff16145b6118d35760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6118ef8b608001518c602001518c602001518c60200151613a6c565b92965090945092509050611902846138e2565b63ffffffff168860ff16148015611929575061191d836138e2565b63ffffffff168760ff16145b8015611940575061193982613501565b1515861515145b801561195c5750611950816138e2565b63ffffffff168560ff16145b6119a85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6119c48b600001518c60a001518c602001518c60200151613a8c565b929650909450925090506119d7846138e2565b63ffffffff168860ff161480156119fe57506119f2836138e2565b63ffffffff168760ff16145b8015611a155750611a0e82613501565b1515861515145b8015611a315750611a25816138e2565b63ffffffff168560ff16145b611a7d5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611a998b608001518c60a001518c600001518c60200151613aac565b92965090945092509050611aac846138e2565b63ffffffff168860ff16148015611ad35750611ac7836138e2565b63ffffffff168760ff16145b8015611aea5750611ae382613501565b1515861515145b8015611b065750611afa816138e2565b63ffffffff168560ff16145b611b525760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611b6e8b608001518c602001518c600001518c60400151613acc565b92965090945092509050611b81846138e2565b63ffffffff168860ff16148015611ba85750611b9c836138e2565b63ffffffff168760ff16145b8015611bbf5750611bb882613501565b1515861515145b8015611bdb5750611bcf816138e2565b63ffffffff168560ff16145b611c275760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611c438b600001518c60a001518c600001518c60400151613aeb565b92965090945092509050611c56846138e2565b63ffffffff168860ff16148015611c7d5750611c71836138e2565b63ffffffff168760ff16145b8015611c945750611c8d82613501565b1515861515145b8015611cb05750611ca4816138e2565b63ffffffff168560ff16145b611cfc5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611d188b608001518c602001518c604001518c60400151613b0a565b92965090945092509050611d2b846138e2565b63ffffffff168860ff16148015611d525750611d46836138e2565b63ffffffff168760ff16145b8015611d695750611d6282613501565b1515861515145b8015611d855750611d79816138e2565b63ffffffff168560ff16145b611dd15760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ded8b600001518c60a001518c604001518c60400151613b29565b92965090945092509050611e00846138e2565b63ffffffff168860ff16148015611e275750611e1b836138e2565b63ffffffff168760ff16145b8015611e3e5750611e3782613501565b1515861515145b8015611e5a5750611e4e816138e2565b63ffffffff168560ff16145b611ea65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611ec28b608001518c602001518c602001518c60400151613b48565b92965090945092509050611ed5846138e2565b63ffffffff168860ff16148015611efc5750611ef0836138e2565b63ffffffff168760ff16145b8015611f135750611f0c82613501565b1515861515145b8015611f2f5750611f23816138e2565b63ffffffff168560ff16145b611f7b5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b611f978b600001518c60a001518c602001518c60400151613b68565b92965090945092509050611faa846138e2565b63ffffffff168860ff16148015611fd15750611fc5836138e2565b63ffffffff168760ff16145b8015611fe85750611fe182613501565b1515861515145b80156120045750611ff8816138e2565b63ffffffff168560ff16145b6120505760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61206c8b608001518c60a001518c600001518c60400151613b88565b9296509094509250905061207f846138e2565b63ffffffff168860ff161480156120a6575061209a836138e2565b63ffffffff168760ff16145b80156120bd57506120b682613501565b1515861515145b80156120d957506120cd816138e2565b63ffffffff168560ff16145b6121255760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6121418b604001518c60a001518c600001518c60000151613ba7565b92965090945092509050612154846138e2565b63ffffffff168860ff1614801561217b575061216f836138e2565b63ffffffff168760ff16145b8015612192575061218b82613501565b1515861515145b80156121ae57506121a2816138e2565b63ffffffff168560ff16145b6121fa5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122168b608001518c606001518c600001518c60000151613bc7565b92965090945092509050612229846138e2565b63ffffffff168860ff161480156122505750612244836138e2565b63ffffffff168760ff16145b8015612267575061226082613501565b1515861515145b80156122835750612277816138e2565b63ffffffff168560ff16145b6122cf5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6122eb8b604001518c60a001518c602001518c60000151613be7565b929650909450925090506122fe846138e2565b63ffffffff168860ff161480156123255750612319836138e2565b63ffffffff168760ff16145b801561233c575061233582613501565b1515861515145b8015612358575061234c816138e2565b63ffffffff168560ff16145b6123a45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6123c08b608001518c606001518c602001518c60000151613c07565b929650909450925090506123d3846138e2565b63ffffffff168860ff161480156123fa57506123ee836138e2565b63ffffffff168760ff16145b8015612411575061240a82613501565b1515861515145b801561242d5750612421816138e2565b63ffffffff168560ff16145b6124795760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6124958b604001518c60a001518c604001518c60000151613c27565b929650909450925090506124a8846138e2565b63ffffffff168860ff161480156124cf57506124c3836138e2565b63ffffffff168760ff16145b80156124e657506124df82613501565b1515861515145b801561250257506124f6816138e2565b63ffffffff168560ff16145b61254e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61256a8b608001518c606001518c604001518c60000151613c47565b9296509094509250905061257d846138e2565b63ffffffff168860ff161480156125a45750612598836138e2565b63ffffffff168760ff16145b80156125bb57506125b482613501565b1515861515145b80156125d757506125cb816138e2565b63ffffffff168560ff16145b6126235760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61263f8b608001518c60a001518c602001518c60000151613c67565b92965090945092509050612652846138e2565b63ffffffff168860ff16148015612679575061266d836138e2565b63ffffffff168760ff16145b8015612690575061268982613501565b1515861515145b80156126ac57506126a0816138e2565b63ffffffff168560ff16145b6126f85760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127148b604001518c60a001518c600001518c60200151613c87565b92965090945092509050612727846138e2565b63ffffffff168860ff1614801561274e5750612742836138e2565b63ffffffff168760ff16145b8015612765575061275e82613501565b1515861515145b80156127815750612775816138e2565b63ffffffff168560ff16145b6127cd5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6127e98b608001518c606001518c600001518c60200151613ca7565b929650909450925090506127fc846138e2565b63ffffffff168860ff161480156128235750612817836138e2565b63ffffffff168760ff16145b801561283a575061283382613501565b1515861515145b8015612856575061284a816138e2565b63ffffffff168560ff16145b6128a25760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6128be8b604001518c60a001518c602001518c60200151613cc7565b929650909450925090506128d1846138e2565b63ffffffff168860ff161480156128f857506128ec836138e2565b63ffffffff168760ff16145b801561290f575061290882613501565b1515861515145b801561292b575061291f816138e2565b63ffffffff168560ff16145b6129775760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6129938b608001518c606001518c602001518c60200151613ce6565b929650909450925090506129a6846138e2565b63ffffffff168860ff161480156129cd57506129c1836138e2565b63ffffffff168760ff16145b80156129e457506129dd82613501565b1515861515145b8015612a0057506129f4816138e2565b63ffffffff168560ff16145b612a4c5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612a688b604001518c60a001518c604001518c60200151613d05565b92965090945092509050612a7b846138e2565b63ffffffff168860ff16148015612aa25750612a96836138e2565b63ffffffff168760ff16145b8015612ab95750612ab282613501565b1515861515145b8015612ad55750612ac9816138e2565b63ffffffff168560ff16145b612b215760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612b3d8b608001518c606001518c604001518c60200151613d24565b92965090945092509050612b50846138e2565b63ffffffff168860ff16148015612b775750612b6b836138e2565b63ffffffff168760ff16145b8015612b8e5750612b8782613501565b1515861515145b8015612baa5750612b9e816138e2565b63ffffffff168560ff16145b612bf65760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612c128b608001518c60a001518c602001518c60200151613d43565b92965090945092509050612c25846138e2565b63ffffffff168860ff16148015612c4c5750612c40836138e2565b63ffffffff168760ff16145b8015612c635750612c5c82613501565b1515861515145b8015612c7f5750612c73816138e2565b63ffffffff168560ff16145b612ccb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612ce78b608001518c60a001518c604001518c60200151613d62565b92965090945092509050612cfa846138e2565b63ffffffff168860ff16148015612d215750612d15836138e2565b63ffffffff168760ff16145b8015612d385750612d3182613501565b1515861515145b8015612d545750612d48816138e2565b63ffffffff168560ff16145b612da05760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612dbc8b604001518c60a001518c600001518c60400151613d81565b92965090945092509050612dcf846138e2565b63ffffffff168860ff16148015612df65750612dea836138e2565b63ffffffff168760ff16145b8015612e0d5750612e0682613501565b1515861515145b8015612e295750612e1d816138e2565b63ffffffff168560ff16145b612e755760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612e918b608001518c606001518c600001518c60400151613da1565b92965090945092509050612ea4846138e2565b63ffffffff168860ff16148015612ecb5750612ebf836138e2565b63ffffffff168760ff16145b8015612ee25750612edb82613501565b1515861515145b8015612efe5750612ef2816138e2565b63ffffffff168560ff16145b612f4a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b612f668b604001518c60a001518c602001518c60400151613dc1565b92965090945092509050612f79846138e2565b63ffffffff168860ff16148015612fa05750612f94836138e2565b63ffffffff168760ff16145b8015612fb75750612fb082613501565b1515861515145b8015612fd35750612fc7816138e2565b63ffffffff168560ff16145b61301f5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b61303b8b608001518c606001518c602001518c60400151613de0565b9296509094509250905061304e846138e2565b63ffffffff168860ff161480156130755750613069836138e2565b63ffffffff168760ff16145b801561308c575061308582613501565b1515861515145b80156130a8575061309c816138e2565b63ffffffff168560ff16145b6130f45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131108b604001518c60a001518c604001518c60400151613dff565b92965090945092509050613123846138e2565b63ffffffff168860ff1614801561314a575061313e836138e2565b63ffffffff168760ff16145b8015613161575061315a82613501565b1515861515145b801561317d5750613171816138e2565b63ffffffff168560ff16145b6131c95760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6131e58b608001518c606001518c604001518c60400151613e1e565b929650909450925090506131f8846138e2565b63ffffffff168860ff1614801561321f5750613213836138e2565b63ffffffff168760ff16145b8015613236575061322f82613501565b1515861515145b80156132525750613246816138e2565b63ffffffff168560ff16145b61329e5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b6132ba8b608001518c60a001518c602001518c60400151613e3d565b929650909450925090506132cd846138e2565b63ffffffff168860ff161480156132f457506132e8836138e2565b63ffffffff168760ff16145b801561330b575061330482613501565b1515861515145b8015613327575061331b816138e2565b63ffffffff168560ff16145b610a955760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572546573743a2063617374203332206661696c65640000000060448201526064016101ac565b600080808080808080606463c2ff267a613391600280808087613e58565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffffffff0000000000000000000000000000000000000000000000000000009091166004820152602481018f9052604481018e9052606481018d9052608481018c905260a4016080604051808303816000875af1158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134489190614152565b929f919e509c50909a5098505050505050505050565b60006064630cfed56160025b60f81b846040518363ffffffff1660e01b81526004016134b89291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb91906141b7565b92915050565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af1158015613565573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358991906141b7565b15159392505050565b600080808080808080606463c2ff267a61339160026001808087613e58565b600080808080808080606463c2ff267a61339160016002818087613e58565b600080808080808080606463c2ff267a61339160026001818187613e58565b600080808080808080606463c2ff267a61339160016002808287613e58565b600080808080808080606463c2ff267a61339160028060018087613e58565b600080808080808080606463c2ff267a61339160028080600187613e58565b600080808080808080606463c2ff267a61339160026001808287613e58565b600080808080808080606463c2ff267a61339160016002818187613e58565b600080808080808080606463c2ff267a61339160026001818087613e58565b600080808080808080606463c2ff267a61339160016002808087613e58565b600080808080808080606463c2ff267a61339160028060018187613e58565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0100000000000000000000000000000000000000000000000000000000000000600482015260ff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0200000000000000000000000000000000000000000000000000000000000000600482015261ffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0300000000000000000000000000000000000000000000000000000000000000600482015263ffffffff8216602482015260009060649063d9b60b60906044016134b8565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016134b8565b600080808080808080606463c2ff267a613391600180808087613e58565b60006064630cfed561600161346a565b600080808080808080606463c2ff267a613391600380808087613e58565b60006064630cfed561600361346a565b600080808080808080606463c2ff267a61339160036001808087613e58565b600080808080808080606463c2ff267a61339160016003818087613e58565b600080808080808080606463c2ff267a61339160036001818187613e58565b600080808080808080606463c2ff267a61339160016003808287613e58565b600080808080808080606463c2ff267a61339160038080600187613e58565b600080808080808080606463c2ff267a6133916003600160028187613e58565b600080808080808080606463c2ff267a6133916001600360028287613e58565b600080808080808080606463c2ff267a61339160038060018087613e58565b600080808080808080606463c2ff267a6133916003600180600287613e58565b600080808080808080606463c2ff267a6133916001600381600287613e58565b600080808080808080606463c2ff267a6133916003600181600287613e58565b600080808080808080606463c2ff267a6133916001600380600287613e58565b600080808080808080606463c2ff267a6133916003600160028087613e58565b600080808080808080606463c2ff267a6133916001600360028087613e58565b600080808080808080606463c2ff267a6133916003806001600287613e58565b600080808080808080606463c2ff267a61339160036001808287613e58565b600080808080808080606463c2ff267a61339160016003818187613e58565b600080808080808080606463c2ff267a61339160036001818087613e58565b600080808080808080606463c2ff267a61339160016003808087613e58565b600080808080808080606463c2ff267a6133916003600160028287613e58565b600080808080808080606463c2ff267a6133916001600360028187613e58565b600080808080808080606463c2ff267a61339160038060018187613e58565b600080808080808080606463c2ff267a6133916002600360018087613e58565b600080808080808080606463c2ff267a6133916003600260018087613e58565b600080808080808080606463c2ff267a6133916002600381600187613e58565b600080808080808080606463c2ff267a6133916003600280600187613e58565b600080808080808080606463c2ff267a6133916002600380600187613e58565b600080808080808080606463c2ff267a6133916003600281600187613e58565b600080808080808080606463c2ff267a6133916003806002600187613e58565b600080808080808080606463c2ff267a6133916002600360018287613e58565b600080808080808080606463c2ff267a6133916003600260018187613e58565b600080808080808080606463c2ff267a61339160026003818087613e58565b600080808080808080606463c2ff267a61339160036002808087613e58565b600080808080808080606463c2ff267a61339160026003808287613e58565b600080808080808080606463c2ff267a61339160036002818187613e58565b600080808080808080606463c2ff267a61339160038060028087613e58565b600080808080808080606463c2ff267a61339160038080600287613e58565b600080808080808080606463c2ff267a6133916002600360018187613e58565b600080808080808080606463c2ff267a6133916003600260018287613e58565b600080808080808080606463c2ff267a61339160026003818187613e58565b600080808080808080606463c2ff267a61339160036002808287613e58565b600080808080808080606463c2ff267a61339160026003808087613e58565b600080808080808080606463c2ff267a61339160036002818087613e58565b600080808080808080606463c2ff267a613391600380600281875b6000816002811115613e6c57613e6c614188565b60ff166008846004811115613e8357613e83614188565b61ffff16901b61ffff166010866004811115613ea157613ea1614188565b62ffffff16901b62ffffff166018886004811115613ec157613ec1614188565b63ffffffff16901b63ffffffff1660208a6004811115613ee357613ee3614188565b64ffffffffff16901b1717171760d81b9695505050505050565b604051610100810167ffffffffffffffff81118282101715613f48577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803560ff81168114613f5f57600080fd5b919050565b600060a08284031215613f7657600080fd5b60405160a0810181811067ffffffffffffffff82111715613fc0577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152613ff660808401613f4e565b60808201525092915050565b80358015158114613f5f57600080fd5b60008060008060008060008789036102c081121561402f57600080fd5b6101008082121561403f57600080fd5b614047613efd565b91508935825260208a0135602083015260408a0135604083015260608a0135606083015260808a0135608083015260a08a013560a083015260c08a013560c083015260e08a013560e08301528198506140a28b828c01613f64565b975050506140b4896101a08a01613f64565b94506140c36102408901613f4e565b93506140d26102608901613f4e565b92506140e16102808901614002565b91506140f06102a08901613f4e565b905092959891949750929550565b6000806000806080858703121561411457600080fd5b61411d85613f4e565b935061412b60208601613f4e565b925061413960408601613f4e565b915061414760608601613f4e565b905092959194509250565b6000806000806080858703121561416857600080fd5b505082516020840151604085015160609095015191969095509092509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000602082840312156141c957600080fd5b505191905056fea2646970667358221220f1f520231d9b8069053851c0e0ed1e5d730db58be64984c35c6d2f7f566a5be564736f6c63430008130033";
383
+
384
+ type TransferWithAllowanceTestsContractConstructorParams =
385
+ | [signer?: Signer]
386
+ | ConstructorParameters<typeof ContractFactory>;
387
+
388
+ const isSuperArgs = (
389
+ xs: TransferWithAllowanceTestsContractConstructorParams
390
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
391
+
392
+ export class TransferWithAllowanceTestsContract__factory extends ContractFactory {
393
+ constructor(...args: TransferWithAllowanceTestsContractConstructorParams) {
394
+ if (isSuperArgs(args)) {
395
+ super(...args);
396
+ } else {
397
+ super(_abi, _bytecode, args[0]);
398
+ }
399
+ }
400
+
401
+ override getDeployTransaction(
402
+ overrides?: NonPayableOverrides & { from?: string }
403
+ ): Promise<ContractDeployTransaction> {
404
+ return super.getDeployTransaction(overrides || {});
405
+ }
406
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
407
+ return super.deploy(overrides || {}) as Promise<
408
+ TransferWithAllowanceTestsContract & {
409
+ deploymentTransaction(): ContractTransactionResponse;
410
+ }
411
+ >;
412
+ }
413
+ override connect(
414
+ runner: ContractRunner | null
415
+ ): TransferWithAllowanceTestsContract__factory {
416
+ return super.connect(runner) as TransferWithAllowanceTestsContract__factory;
417
+ }
418
+
419
+ static readonly bytecode = _bytecode;
420
+ static readonly abi = _abi;
421
+ static createInterface(): TransferWithAllowanceTestsContractInterface {
422
+ return new Interface(_abi) as TransferWithAllowanceTestsContractInterface;
423
+ }
424
+ static connect(
425
+ address: string,
426
+ runner?: ContractRunner | null
427
+ ): TransferWithAllowanceTestsContract {
428
+ return new Contract(
429
+ address,
430
+ _abi,
431
+ runner
432
+ ) as unknown as TransferWithAllowanceTestsContract;
433
+ }
434
+ }
@@ -9,6 +9,13 @@ export { MinMaxTestsContract__factory } from "./MinMaxTestsContract__factory";
9
9
  export { Miscellaneous1TestsContract__factory } from "./Miscellaneous1TestsContract__factory";
10
10
  export { MiscellaneousTestsContract__factory } from "./MiscellaneousTestsContract__factory";
11
11
  export { OffboardToUserKeyTestContract__factory } from "./OffboardToUserKeyTestContract__factory";
12
+ export { ShiftTestsContract__factory } from "./ShiftTestsContract__factory";
12
13
  export { StringTestsContract__factory } from "./StringTestsContract__factory";
13
14
  export { TransferScalarTestsContract__factory } from "./TransferScalarTestsContract__factory";
14
15
  export { TransferTestsContract__factory } from "./TransferTestsContract__factory";
16
+ export { TransferWithAllowance64_16TestsContract__factory } from "./TransferWithAllowance64_16TestsContract__factory";
17
+ export { TransferWithAllowance64_32TestsContract__factory } from "./TransferWithAllowance64_32TestsContract__factory";
18
+ export { TransferWithAllowance64_64TestsContract__factory } from "./TransferWithAllowance64_64TestsContract__factory";
19
+ export { TransferWithAllowance64_8TestsContract__factory } from "./TransferWithAllowance64_8TestsContract__factory";
20
+ export { TransferWithAllowanceScalarTestsContract__factory } from "./TransferWithAllowanceScalarTestsContract__factory";
21
+ export { TransferWithAllowanceTestsContract__factory } from "./TransferWithAllowanceTestsContract__factory";
@@ -139,7 +139,7 @@ const _abi = [
139
139
  ] as const;
140
140
 
141
141
  const _bytecode =
142
- "0x608060405234801561001057600080fd5b506108a3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632a308b3a146100515780633ead9adb146100815780634a009211146100b1578063ce4ec16a146100e1575b600080fd5b61006b60048036038101906100669190610497565b610111565b604051610078919061052f565b60405180910390f35b61009b6004803603810190610096919061054a565b6101a2565b6040516100a8919061052f565b60405180910390f35b6100cb60048036038101906100c691906105b1565b610236565b6040516100d8919061060c565b60405180910390f35b6100fb60048036038101906100f69190610497565b6102bc565b604051610108919061060c565b60405180910390f35b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846101398561034d565b6040518363ffffffff1660e01b8152600401610156929190610645565b6020604051808303816000875af1158015610175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610199919061069a565b90509392505050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd85856101cb8661034d565b6040518463ffffffff1660e01b81526004016101e9939291906106c7565b6020604051808303816000875af1158015610208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022c919061069a565b9050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff16638269bcc3836040518263ffffffff1660e01b815260040161027191906106fe565b6020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610745565b905092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3846102e48561034d565b6040518363ffffffff1660e01b8152600401610301929190610645565b6020604051808303816000875af1158015610320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103449190610745565b90509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561037f5761037e610772565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b81526004016103aa9291906107eb565b6020604051808303816000875af11580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190610840565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610424826103f9565b9050919050565b61043481610419565b811461043f57600080fd5b50565b6000813590506104518161042b565b92915050565b600067ffffffffffffffff82169050919050565b61047481610457565b811461047f57600080fd5b50565b6000813590506104918161046b565b92915050565b6000806000606084860312156104b0576104af6103f4565b5b60006104be86828701610442565b93505060206104cf86828701610442565b92505060406104e086828701610482565b9150509250925092565b6000819050919050565b6000819050919050565b600061051961051461050f846104ea565b6104f4565b6104ea565b9050919050565b610529816104fe565b82525050565b60006020820190506105446000830184610520565b92915050565b60008060008060808587031215610564576105636103f4565b5b600061057287828801610442565b945050602061058387828801610442565b935050604061059487828801610442565b92505060606105a587828801610482565b91505092959194509250565b600080604083850312156105c8576105c76103f4565b5b60006105d685828601610442565b92505060206105e785828601610442565b9150509250929050565b60008115159050919050565b610606816105f1565b82525050565b600060208201905061062160008301846105fd565b92915050565b61063081610419565b82525050565b61063f816104fe565b82525050565b600060408201905061065a6000830185610627565b6106676020830184610636565b9392505050565b610677816104ea565b811461068257600080fd5b50565b6000815190506106948161066e565b92915050565b6000602082840312156106b0576106af6103f4565b5b60006106be84828501610685565b91505092915050565b60006060820190506106dc6000830186610627565b6106e96020830185610627565b6106f66040830184610636565b949350505050565b60006020820190506107136000830184610627565b92915050565b610722816105f1565b811461072d57600080fd5b50565b60008151905061073f81610719565b92915050565b60006020828403121561075b5761075a6103f4565b5b600061076984828501610730565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6107d6816107a1565b82525050565b6107e5816104ea565b82525050565b600060408201905061080060008301856107cd565b61080d60208301846107dc565b9392505050565b61081d816104ea565b811461082857600080fd5b50565b60008151905061083a81610814565b92915050565b600060208284031215610856576108556103f4565b5b60006108648482850161082b565b9150509291505056fea264697066735822122019a19cd29aecdfb0afc31afc9577617252449274a501ff1e2d08d7cf3ca1f7cf64736f6c63430008140033";
142
+ "0x608060405234801561001057600080fd5b506105dc806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632a308b3a146100515780633ead9adb146100775780634a0092111461008a578063ce4ec16a146100ad575b600080fd5b61006461005f3660046104a1565b6100c0565b6040519081526020015b60405180910390f35b6100646100853660046104e4565b610184565b61009d610098366004610538565b610253565b604051901515815260200161006e565b61009d6100bb3660046104a1565b6102f0565b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb846100e8856103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c919061056b565b949350505050565b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd85856101ad866103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a919061056b565b95945050505050565b6040517f8269bcc300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009190841690638269bcc3906024016020604051808303816000875af11580156102c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e99190610584565b9392505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384610318856103ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610388573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017c9190610584565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016020604051808303816000875af1158015610436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045a919061056b565b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461048457600080fd5b919050565b803567ffffffffffffffff8116811461048457600080fd5b6000806000606084860312156104b657600080fd5b6104bf84610460565b92506104cd60208501610460565b91506104db60408501610489565b90509250925092565b600080600080608085870312156104fa57600080fd5b61050385610460565b935061051160208601610460565b925061051f60408601610460565b915061052d60608601610489565b905092959194509250565b6000806040838503121561054b57600080fd5b61055483610460565b915061056260208401610460565b90509250929050565b60006020828403121561057d57600080fd5b5051919050565b60006020828403121561059657600080fd5b815180151581146102e957600080fdfea26469706673582212204c7281e5441d17c0f724fe24e412bdd9cc87a747488f5064ee09adc14f2f229c64736f6c63430008130033";
143
143
 
144
144
  type PrivateERC20WalletMockConstructorParams =
145
145
  | [signer?: Signer]
@@ -61,7 +61,7 @@ const _abi = [
61
61
  ] as const;
62
62
 
63
63
  const _bytecode =
64
- "0x608060405234801561001057600080fd5b506108df806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063afaea1bd14610030575b600080fd5b61004a600480360381019061004591906104f1565b61004c565b005b60008061005b868686866100b7565b915091503373ffffffffffffffffffffffffffffffffffffffff167ffc83efa19b7c2bc399a672494bb0af52f9bbd678357edf30e55b5ac4e65878ba83836040516100a7929190610602565b60405180910390a2505050505050565b606080600086869050858590506100ce9190610672565b67ffffffffffffffff8111156100e7576100e66106a6565b5b6040519080825280601f01601f1916602001820160405280156101195781602001600182028036833780820191505090505b50905060005b8585905081101561019c5785858281811061013d5761013c6106d5565b5b9050013560f81c60f81b82828151811061015a576101596106d5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061019490610704565b91505061011f565b5060005b8787905081101561022b578787828181106101be576101bd6106d5565b5b9050013560f81c60f81b8282888890506101d89190610672565b815181106101e9576101e86106d5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061022390610704565b9150506101a0565b506000606473ffffffffffffffffffffffffffffffffffffffff1663a85f0ca2836040518263ffffffff1660e01b8152600401610268919061074c565b6000604051808303816000875af1158015610287573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102b09190610860565b9050600061010067ffffffffffffffff8111156102d0576102cf6106a6565b5b6040519080825280601f01601f1916602001820160405280156103025781602001600182028036833780820191505090505b509050600061010067ffffffffffffffff811115610323576103226106a6565b5b6040519080825280601f01601f1916602001820160405280156103555781602001600182028036833780820191505090505b50905060005b82518110156103d757838181518110610377576103766106d5565b5b602001015160f81c60f81b838281518110610395576103946106d5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806103cf90610704565b91505061035b565b5060005b81518110156104645783610100826103f39190610672565b81518110610404576104036106d5565b5b602001015160f81c60f81b828281518110610422576104216106d5565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808061045c90610704565b9150506103db565b508181955095505050505094509492505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126104b1576104b061048c565b5b8235905067ffffffffffffffff8111156104ce576104cd610491565b5b6020830191508360018202830111156104ea576104e9610496565b5b9250929050565b6000806000806040858703121561050b5761050a610482565b5b600085013567ffffffffffffffff81111561052957610528610487565b5b6105358782880161049b565b9450945050602085013567ffffffffffffffff81111561055857610557610487565b5b6105648782880161049b565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156105ac578082015181840152602081019050610591565b60008484015250505050565b6000601f19601f8301169050919050565b60006105d482610572565b6105de818561057d565b93506105ee81856020860161058e565b6105f7816105b8565b840191505092915050565b6000604082019050818103600083015261061c81856105c9565b9050818103602083015261063081846105c9565b90509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061067d82610639565b915061068883610639565b92508282019050808211156106a05761069f610643565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061070f82610639565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361074157610740610643565b5b600182019050919050565b6000602082019050818103600083015261076681846105c9565b905092915050565b600080fd5b61077c826105b8565b810181811067ffffffffffffffff8211171561079b5761079a6106a6565b5b80604052505050565b60006107ae610478565b90506107ba8282610773565b919050565b600067ffffffffffffffff8211156107da576107d96106a6565b5b6107e3826105b8565b9050602081019050919050565b60006108036107fe846107bf565b6107a4565b90508281526020810184848401111561081f5761081e61076e565b5b61082a84828561058e565b509392505050565b600082601f8301126108475761084661048c565b5b81516108578482602086016107f0565b91505092915050565b60006020828403121561087657610875610482565b5b600082015167ffffffffffffffff81111561089457610893610487565b5b6108a084828501610832565b9150509291505056fea2646970667358221220e028ca78b9557ac2f79e953b276ee6f7fe178c38f51a12305ec67ac1df234d2d64736f6c63430008140033";
64
+ "0x608060405234801561001057600080fd5b50610771806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063afaea1bd14610030575b600080fd5b61004361003e366004610470565b610045565b005b600080610054868686866100b0565b915091503373ffffffffffffffffffffffffffffffffffffffff167ffc83efa19b7c2bc399a672494bb0af52f9bbd678357edf30e55b5ac4e65878ba83836040516100a092919061054a565b60405180910390a2505050505050565b60608060006100bf86856105a7565b67ffffffffffffffff8111156100d7576100d76105c0565b6040519080825280601f01601f191660200182016040528015610101576020820181803683370190505b50905060005b8481101561017e57858582818110610121576101216105ef565b9050013560f81c60f81b82828151811061013d5761013d6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806101768161061e565b915050610107565b5060005b868110156102205787878281811061019c5761019c6105ef565b909101357fff00000000000000000000000000000000000000000000000000000000000000169050826101cf83886105a7565b815181106101df576101df6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806102188161061e565b915050610182565b506040517fa85f0ca200000000000000000000000000000000000000000000000000000000815260009060649063a85f0ca290610261908590600401610656565b6000604051808303816000875af1158015610280573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102c69190810190610670565b604080516101008082526101208201909252919250600091906020820181803683375050604080516101008082526101208201909252929350600092915060208201818036833701905050905060005b825181101561038f57838181518110610331576103316105ef565b602001015160f81c60f81b83828151811061034e5761034e6105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806103878161061e565b915050610316565b5060005b815181101561041757836103a9610100836105a7565b815181106103b9576103b96105ef565b602001015160f81c60f81b8282815181106103d6576103d66105ef565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061040f8161061e565b915050610393565b5090999098509650505050505050565b60008083601f84011261043957600080fd5b50813567ffffffffffffffff81111561045157600080fd5b60208301915083602082850101111561046957600080fd5b9250929050565b6000806000806040858703121561048657600080fd5b843567ffffffffffffffff8082111561049e57600080fd5b6104aa88838901610427565b909650945060208701359150808211156104c357600080fd5b506104d087828801610427565b95989497509550505050565b60005b838110156104f75781810151838201526020016104df565b50506000910152565b600081518084526105188160208601602086016104dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600061055d6040830185610500565b828103602084015261056f8185610500565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ba576105ba610578565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361064f5761064f610578565b5060010190565b6020815260006106696020830184610500565b9392505050565b60006020828403121561068257600080fd5b815167ffffffffffffffff8082111561069a57600080fd5b818401915084601f8301126106ae57600080fd5b8151818111156106c0576106c06105c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610706576107066105c0565b8160405282815287602084870101111561071f57600080fd5b6107308360208301602088016104dc565b97965050505050505056fea2646970667358221220123514bb215718c2077f5f9efca341ca8fa8a4f043992d372e612602716a314064736f6c63430008130033";
65
65
 
66
66
  type AccountOnboardConstructorParams =
67
67
  | [signer?: Signer]