-
Notifications
You must be signed in to change notification settings - Fork 0
/
MerkleRedeem.json
445 lines (445 loc) · 35 KB
/
MerkleRedeem.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
{
"_format": "hh-sol-artifact-1",
"contractName": "MerkleRedeem",
"sourceName": "contracts/MerkleRedeem.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IVault",
"name": "_vault",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "_rewardToken",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "RewardAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "RewardPaid",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"internalType": "uint256",
"name": "begin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "end",
"type": "uint256"
}
],
"name": "claimStatus",
"outputs": [
{
"internalType": "bool[]",
"name": "",
"type": "bool[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedBalance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"name": "claimWeek",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MerkleRedeem.Claim[]",
"name": "claims",
"type": "tuple[]"
}
],
"name": "claimWeeks",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MerkleRedeem.Claim[]",
"name": "claims",
"type": "tuple[]"
}
],
"name": "claimWeeksToInternalBalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"internalType": "contract IDistributorCallback",
"name": "callbackContract",
"type": "address"
},
{
"internalType": "bytes",
"name": "callbackData",
"type": "bytes"
},
{
"components": [
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MerkleRedeem.Claim[]",
"name": "claims",
"type": "tuple[]"
}
],
"name": "claimWeeksWithCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "claimed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "begin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "end",
"type": "uint256"
}
],
"name": "merkleRoots",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "rewardToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_merkleRoot",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "seedAllocations",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "vault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedBalance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"name": "verifyClaim",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "weekMerkleRoots",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60c06040523480156200001157600080fd5b5060405162001a5f38038062001a5f833981016040819052620000349162000147565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606083811b821660a05282901b1660805260405163095ea7b360e01b81526001600160a01b0382169063095ea7b390620000bf9085906000199060040162000185565b602060405180830381600087803b158015620000da57600080fd5b505af1158015620000ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011591906200011e565b505050620001b7565b60006020828403121562000130578081fd5b8151801515811462000140578182fd5b9392505050565b600080604083850312156200015a578081fd5b825162000167816200019e565b60208401519092506200017a816200019e565b809150509250929050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0381168114620001b457600080fd5b50565b60805160601c60a05160601c61185b62000204600039806109855280610c4e5250806105a652806105d052806109615280610b385280610b8e5280610d745280610e11525061185b6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063eb0d07f511610066578063eb0d07f514610201578063f2fde38b14610214578063f7c618c114610227578063fbfa77cf1461022f576100f5565b8063715018a6146101b15780638da5cb5b146101b9578063c804c39a146101ce578063dd8c9c9d146101e1576100f5565b80633d421653116100d35780633d4216531461015857806347fb23c11461016b5780634cd488ab1461018b57806358b4e4b41461019e576100f5565b8063120aa877146100fa5780632f1868e41461012357806339436b0014610138575b600080fd5b61010d610108366004611381565b610237565b60405161011a919061161f565b60405180910390f35b6101366101313660046111fd565b610257565b005b61014b6101463660046113db565b61033b565b60405161011a9190611550565b6101366101663660046111af565b6103f0565b61017e6101793660046112b4565b610442565b60405161011a919061150a565b6101366101993660046113b0565b610524565b6101366101ac3660046112e8565b610641565b610136610756565b6101c16107d1565b60405161011a9190611492565b6101366101dc3660046111af565b6107ed565b6101f46101ef366004611369565b61083a565b60405161011a919061162a565b61010d61020f3660046112e8565b61084c565b610136610222366004611193565b6108a2565b6101c161095f565b6101c1610983565b600260209081526000928352604080842090915290825290205460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff8616146102955760405162461bcd60e51b815260040161028c90611782565b60405180910390fd5b60006102a186836109a7565b90506102ad8582610adb565b6040517f55c524c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906355c524c1906103019087908790600401611633565b600060405180830381600087803b15801561031b57600080fd5b505af115801561032f573d6000803e3d6000fd5b50505050505050505050565b60608183111561035d5760405162461bcd60e51b815260040161028c906116b7565b82820360010160608167ffffffffffffffff8111801561037c57600080fd5b506040519080825280602002602001820160405280156103a6578160200160208202803683370190505b50905060005b828110156103e75785810160009081526001602052604090205482518390839081106103d457fe5b60209081029190910101526001016103ac565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8316146104255760405162461bcd60e51b815260040161028c90611782565b600061043183836109a7565b905061043d8382610adb565b505050565b6060818311156104645760405162461bcd60e51b815260040161028c906116b7565b82820360010160608167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104ad578160200160208202803683370190505b50905060005b8281101561051a57858101600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902054825160ff9091169083908390811061050257fe5b911515602092830291909101909101526001016104b3565b5095945050505050565b61054f336105306107d1565b73ffffffffffffffffffffffffffffffffffffffff16146101aa610cbb565b6000838152600160205260409020541561057b5760405162461bcd60e51b815260040161028c9061174b565b60008381526001602052604090208290556105ce73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cc9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e2982604051610634919061162a565b60405180910390a2505050565b3373ffffffffffffffffffffffffffffffffffffffff8516146106765760405162461bcd60e51b815260040161028c90611782565b600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205460ff16156106c65760405162461bcd60e51b815260040161028c90611714565b6106d28484848461084c565b6106ee5760405162461bcd60e51b815260040161028c90611680565b600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107508483610d6c565b50505050565b610762336105306107d1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b3373ffffffffffffffffffffffffffffffffffffffff8316146108225760405162461bcd60e51b815260040161028c90611782565b600061082e83836109a7565b905061043d8382610d6c565b60016020526000908152604090205481565b6000808584604051602001610862929190611416565b60405160208183030381529060405280519060200120905061089883600160008881526020019081526020016000205483610e38565b9695505050505050565b6108ae336105306107d1565b6108d273ffffffffffffffffffffffffffffffffffffffff821615156101ab610cbb565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109b161100d565b60005b8351811015610ad3578381815181106109c957fe5b6020908102919091018101518051600090815260028352604080822073ffffffffffffffffffffffffffffffffffffffff8a168352909352919091205490925060ff1615610a295760405162461bcd60e51b815260040161028c90611714565b610a418583600001518460200151856040015161084c565b610a5d5760405162461bcd60e51b815260040161028c90611680565b6020820151610a6d908490610ed5565b8251600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155909350016109b4565b505092915050565b8015610cb757604080516001808252818301909252606091816020015b610b0061102e565b815260200190600190039081610af85750506040805160a081018252600080825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208401529282018690523060608301529186166080820152825192935091839190610b8157fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e84604051610c09919061162a565b60405180910390a36040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630e8e3e8490610c83908490600401611588565b600060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b50505050505b5050565b81610cb757610cb781610eee565b610750846323b872dd60e01b858585604051602401610cea939291906114b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610f41565b8015610cb7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e83604051610def919061162a565b60405180910390a3610cb773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610fee565b600081815b8551811015610eca576000868281518110610e5457fe5b60200260200101519050808311610e95578281604051602001610e7892919061144b565b604051602081830303815290604052805190602001209250610ec1565b8083604051602001610ea892919061144b565b6040516020818303038152906040528051906020012092505b50600101610e3d565b509092149392505050565b6000828201610ee78482101583610cbb565b9392505050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610f6a9190611459565b6000604051808303816000865af19150503d8060008114610fa7576040519150601f19603f3d011682016040523d82523d6000602084013e610fac565b606091505b50915091506000821415610fc4573d6000803e3d6000fd5b610750815160001480610fe6575081806020019051810190610fe69190611349565b6101a2610cbb565b61043d8363a9059cbb60e01b8484604051602401610cea9291906114e4565b60405180606001604052806000815260200160008152602001606081525090565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b600082601f83011261106e578081fd5b813561108161107c826117e0565b6117b9565b8181529150602080830190848101818402860182018710156110a257600080fd5b60005b848110156110c1578135845292820192908201906001016110a5565b505050505092915050565b600082601f8301126110dc578081fd5b81356110ea61107c826117e0565b818152915060208083019084810160005b848110156110c157813587016060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561113a57600080fd5b611143816117b9565b82860135815260408084013582880152918301359167ffffffffffffffff83111561116d57600080fd5b61117b8c888587010161105e565b908201528652505092820192908201906001016110fb565b6000602082840312156111a4578081fd5b8135610ee781611800565b600080604083850312156111c1578081fd5b82356111cc81611800565b9150602083013567ffffffffffffffff8111156111e7578182fd5b6111f3858286016110cc565b9150509250929050565b600080600080600060808688031215611214578081fd5b853561121f81611800565b9450602086013561122f81611800565b9350604086013567ffffffffffffffff8082111561124b578283fd5b818801915088601f83011261125e578283fd5b81358181111561126c578384fd5b89602082850101111561127d578384fd5b60208301955080945050606088013591508082111561129a578283fd5b506112a7888289016110cc565b9150509295509295909350565b6000806000606084860312156112c8578283fd5b83356112d381611800565b95602085013595506040909401359392505050565b600080600080608085870312156112fd578384fd5b843561130881611800565b93506020850135925060408501359150606085013567ffffffffffffffff811115611331578182fd5b61133d8782880161105e565b91505092959194509250565b60006020828403121561135a578081fd5b81518015158114610ee7578182fd5b60006020828403121561137a578081fd5b5035919050565b60008060408385031215611393578182fd5b8235915060208301356113a581611800565b809150509250929050565b6000806000606084860312156113c4578283fd5b505081359360208301359350604090920135919050565b600080604083850312156113ed578182fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff169052565b60609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b918252602082015260400190565b60008251815b81811015611479576020818601810151858301520161145f565b818111156114875782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611544578351151583529284019291840191600101611526565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115445783518352928401929184019160010161156c565b602080825282518282018190526000919060409081850190868401855b828110156116125781518051600481106115bb57fe5b8552808701516115cd888701826113fc565b5085810151868601526060808201516115e8828801826113fc565b5050608090810151906115fd868201836113fc565b505060a09390930192908501906001016115a5565b5091979650505050505050565b901515815260200190565b90815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60208082526016908201527f496e636f7272656374206d65726b6c652070726f6f6600000000000000000000604082015260600190565b6020808252602a908201527f7765656b73206d7573742062652073706563696669656420696e20617363656e60408201527f64696e67206f7264657200000000000000000000000000000000000000000000606082015260800190565b60208082526012908201527f63616e6e6f7420636c61696d2074776963650000000000000000000000000000604082015260600190565b6020808252601a908201527f63616e6e6f742072657772697465206d65726b6c6520726f6f74000000000000604082015260600190565b6020808252601b908201527f75736572206d75737420636c61696d206f776e2062616c616e63650000000000604082015260600190565b60405181810167ffffffffffffffff811182821017156117d857600080fd5b604052919050565b600067ffffffffffffffff8211156117f6578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461182257600080fd5b5056fea264697066735822122020b0baae4b1a76991e361d11c2638147ed3f96d070df8981472a23702da9ab3764736f6c63430007010033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063eb0d07f511610066578063eb0d07f514610201578063f2fde38b14610214578063f7c618c114610227578063fbfa77cf1461022f576100f5565b8063715018a6146101b15780638da5cb5b146101b9578063c804c39a146101ce578063dd8c9c9d146101e1576100f5565b80633d421653116100d35780633d4216531461015857806347fb23c11461016b5780634cd488ab1461018b57806358b4e4b41461019e576100f5565b8063120aa877146100fa5780632f1868e41461012357806339436b0014610138575b600080fd5b61010d610108366004611381565b610237565b60405161011a919061161f565b60405180910390f35b6101366101313660046111fd565b610257565b005b61014b6101463660046113db565b61033b565b60405161011a9190611550565b6101366101663660046111af565b6103f0565b61017e6101793660046112b4565b610442565b60405161011a919061150a565b6101366101993660046113b0565b610524565b6101366101ac3660046112e8565b610641565b610136610756565b6101c16107d1565b60405161011a9190611492565b6101366101dc3660046111af565b6107ed565b6101f46101ef366004611369565b61083a565b60405161011a919061162a565b61010d61020f3660046112e8565b61084c565b610136610222366004611193565b6108a2565b6101c161095f565b6101c1610983565b600260209081526000928352604080842090915290825290205460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff8616146102955760405162461bcd60e51b815260040161028c90611782565b60405180910390fd5b60006102a186836109a7565b90506102ad8582610adb565b6040517f55c524c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616906355c524c1906103019087908790600401611633565b600060405180830381600087803b15801561031b57600080fd5b505af115801561032f573d6000803e3d6000fd5b50505050505050505050565b60608183111561035d5760405162461bcd60e51b815260040161028c906116b7565b82820360010160608167ffffffffffffffff8111801561037c57600080fd5b506040519080825280602002602001820160405280156103a6578160200160208202803683370190505b50905060005b828110156103e75785810160009081526001602052604090205482518390839081106103d457fe5b60209081029190910101526001016103ac565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff8316146104255760405162461bcd60e51b815260040161028c90611782565b600061043183836109a7565b905061043d8382610adb565b505050565b6060818311156104645760405162461bcd60e51b815260040161028c906116b7565b82820360010160608167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104ad578160200160208202803683370190505b50905060005b8281101561051a57858101600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152902054825160ff9091169083908390811061050257fe5b911515602092830291909101909101526001016104b3565b5095945050505050565b61054f336105306107d1565b73ffffffffffffffffffffffffffffffffffffffff16146101aa610cbb565b6000838152600160205260409020541561057b5760405162461bcd60e51b815260040161028c9061174b565b60008381526001602052604090208290556105ce73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084610cc9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167fac24935fd910bc682b5ccb1a07b718cadf8cf2f6d1404c4f3ddc3662dae40e2982604051610634919061162a565b60405180910390a2505050565b3373ffffffffffffffffffffffffffffffffffffffff8516146106765760405162461bcd60e51b815260040161028c90611782565b600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205460ff16156106c65760405162461bcd60e51b815260040161028c90611714565b6106d28484848461084c565b6106ee5760405162461bcd60e51b815260040161028c90611680565b600083815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107508483610d6c565b50505050565b610762336105306107d1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b3373ffffffffffffffffffffffffffffffffffffffff8316146108225760405162461bcd60e51b815260040161028c90611782565b600061082e83836109a7565b905061043d8382610d6c565b60016020526000908152604090205481565b6000808584604051602001610862929190611416565b60405160208183030381529060405280519060200120905061089883600160008881526020019081526020016000205483610e38565b9695505050505050565b6108ae336105306107d1565b6108d273ffffffffffffffffffffffffffffffffffffffff821615156101ab610cbb565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109b161100d565b60005b8351811015610ad3578381815181106109c957fe5b6020908102919091018101518051600090815260028352604080822073ffffffffffffffffffffffffffffffffffffffff8a168352909352919091205490925060ff1615610a295760405162461bcd60e51b815260040161028c90611714565b610a418583600001518460200151856040015161084c565b610a5d5760405162461bcd60e51b815260040161028c90611680565b6020820151610a6d908490610ed5565b8251600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155909350016109b4565b505092915050565b8015610cb757604080516001808252818301909252606091816020015b610b0061102e565b815260200190600190039081610af85750506040805160a081018252600080825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208401529282018690523060608301529186166080820152825192935091839190610b8157fe5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e84604051610c09919061162a565b60405180910390a36040517f0e8e3e8400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630e8e3e8490610c83908490600401611588565b600060405180830381600087803b158015610c9d57600080fd5b505af1158015610cb1573d6000803e3d6000fd5b50505050505b5050565b81610cb757610cb781610eee565b610750846323b872dd60e01b858585604051602401610cea939291906114b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610f41565b8015610cb7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e83604051610def919061162a565b60405180910390a3610cb773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168383610fee565b600081815b8551811015610eca576000868281518110610e5457fe5b60200260200101519050808311610e95578281604051602001610e7892919061144b565b604051602081830303815290604052805190602001209250610ec1565b8083604051602001610ea892919061144b565b6040516020818303038152906040528051906020012092505b50600101610e3d565b509092149392505050565b6000828201610ee78482101583610cbb565b9392505050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b600060608373ffffffffffffffffffffffffffffffffffffffff1683604051610f6a9190611459565b6000604051808303816000865af19150503d8060008114610fa7576040519150601f19603f3d011682016040523d82523d6000602084013e610fac565b606091505b50915091506000821415610fc4573d6000803e3d6000fd5b610750815160001480610fe6575081806020019051810190610fe69190611349565b6101a2610cbb565b61043d8363a9059cbb60e01b8484604051602401610cea9291906114e4565b60405180606001604052806000815260200160008152602001606081525090565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b600082601f83011261106e578081fd5b813561108161107c826117e0565b6117b9565b8181529150602080830190848101818402860182018710156110a257600080fd5b60005b848110156110c1578135845292820192908201906001016110a5565b505050505092915050565b600082601f8301126110dc578081fd5b81356110ea61107c826117e0565b818152915060208083019084810160005b848110156110c157813587016060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561113a57600080fd5b611143816117b9565b82860135815260408084013582880152918301359167ffffffffffffffff83111561116d57600080fd5b61117b8c888587010161105e565b908201528652505092820192908201906001016110fb565b6000602082840312156111a4578081fd5b8135610ee781611800565b600080604083850312156111c1578081fd5b82356111cc81611800565b9150602083013567ffffffffffffffff8111156111e7578182fd5b6111f3858286016110cc565b9150509250929050565b600080600080600060808688031215611214578081fd5b853561121f81611800565b9450602086013561122f81611800565b9350604086013567ffffffffffffffff8082111561124b578283fd5b818801915088601f83011261125e578283fd5b81358181111561126c578384fd5b89602082850101111561127d578384fd5b60208301955080945050606088013591508082111561129a578283fd5b506112a7888289016110cc565b9150509295509295909350565b6000806000606084860312156112c8578283fd5b83356112d381611800565b95602085013595506040909401359392505050565b600080600080608085870312156112fd578384fd5b843561130881611800565b93506020850135925060408501359150606085013567ffffffffffffffff811115611331578182fd5b61133d8782880161105e565b91505092959194509250565b60006020828403121561135a578081fd5b81518015158114610ee7578182fd5b60006020828403121561137a578081fd5b5035919050565b60008060408385031215611393578182fd5b8235915060208301356113a581611800565b809150509250929050565b6000806000606084860312156113c4578283fd5b505081359360208301359350604090920135919050565b600080604083850312156113ed578182fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff169052565b60609290921b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168252601482015260340190565b918252602082015260400190565b60008251815b81811015611479576020818601810151858301520161145f565b818111156114875782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611544578351151583529284019291840191600101611526565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115445783518352928401929184019160010161156c565b602080825282518282018190526000919060409081850190868401855b828110156116125781518051600481106115bb57fe5b8552808701516115cd888701826113fc565b5085810151868601526060808201516115e8828801826113fc565b5050608090810151906115fd868201836113fc565b505060a09390930192908501906001016115a5565b5091979650505050505050565b901515815260200190565b90815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60208082526016908201527f496e636f7272656374206d65726b6c652070726f6f6600000000000000000000604082015260600190565b6020808252602a908201527f7765656b73206d7573742062652073706563696669656420696e20617363656e60408201527f64696e67206f7264657200000000000000000000000000000000000000000000606082015260800190565b60208082526012908201527f63616e6e6f7420636c61696d2074776963650000000000000000000000000000604082015260600190565b6020808252601a908201527f63616e6e6f742072657772697465206d65726b6c6520726f6f74000000000000604082015260600190565b6020808252601b908201527f75736572206d75737420636c61696d206f776e2062616c616e63650000000000604082015260600190565b60405181810167ffffffffffffffff811182821017156117d857600080fd5b604052919050565b600067ffffffffffffffff8211156117f6578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461182257600080fd5b5056fea264697066735822122020b0baae4b1a76991e361d11c2638147ed3f96d070df8981472a23702da9ab3764736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}