@sablier/bob 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE-BUSL.md +82 -0
  3. package/LICENSE-GPL.md +470 -0
  4. package/LICENSE.md +9 -0
  5. package/README.md +81 -0
  6. package/artifacts/BobVaultShare.json +936 -0
  7. package/artifacts/SablierBob.json +1683 -0
  8. package/artifacts/SablierEscrow.json +1316 -0
  9. package/artifacts/SablierLidoAdapter.json +1649 -0
  10. package/artifacts/erc20/IERC20.json +226 -0
  11. package/artifacts/interfaces/IBobVaultShare.json +393 -0
  12. package/artifacts/interfaces/ISablierBob.json +1171 -0
  13. package/artifacts/interfaces/ISablierEscrow.json +999 -0
  14. package/artifacts/interfaces/ISablierLidoAdapter.json +1141 -0
  15. package/artifacts/interfaces/external/ICurveStETHPool.json +128 -0
  16. package/artifacts/interfaces/external/ILidoWithdrawalQueue.json +209 -0
  17. package/artifacts/interfaces/external/IStETH.json +262 -0
  18. package/artifacts/interfaces/external/IWETH9.json +259 -0
  19. package/artifacts/interfaces/external/IWstETH.json +311 -0
  20. package/artifacts/libraries/Errors.json +868 -0
  21. package/package.json +68 -0
  22. package/src/BobVaultShare.sol +119 -0
  23. package/src/SablierBob.sol +543 -0
  24. package/src/SablierEscrow.sol +288 -0
  25. package/src/SablierLidoAdapter.sol +549 -0
  26. package/src/abstracts/SablierBobState.sol +156 -0
  27. package/src/abstracts/SablierEscrowState.sol +159 -0
  28. package/src/interfaces/IBobVaultShare.sol +51 -0
  29. package/src/interfaces/ISablierBob.sol +261 -0
  30. package/src/interfaces/ISablierBobAdapter.sol +157 -0
  31. package/src/interfaces/ISablierBobState.sol +74 -0
  32. package/src/interfaces/ISablierEscrow.sol +148 -0
  33. package/src/interfaces/ISablierEscrowState.sol +77 -0
  34. package/src/interfaces/ISablierLidoAdapter.sol +110 -0
  35. package/src/interfaces/external/ICurveStETHPool.sol +31 -0
  36. package/src/interfaces/external/ILidoWithdrawalQueue.sol +67 -0
  37. package/src/interfaces/external/IStETH.sol +18 -0
  38. package/src/interfaces/external/IWETH9.sol +19 -0
  39. package/src/interfaces/external/IWstETH.sol +32 -0
  40. package/src/libraries/Errors.sol +189 -0
  41. package/src/types/Bob.sol +49 -0
  42. package/src/types/Escrow.sol +49 -0
@@ -0,0 +1,1683 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "constructor",
5
+ "inputs": [{ "name": "initialComptroller", "type": "address", "internalType": "address" }],
6
+ "stateMutability": "nonpayable"
7
+ },
8
+ {
9
+ "type": "function",
10
+ "name": "calculateMinFeeWei",
11
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
12
+ "outputs": [{ "name": "minFeeWei", "type": "uint256", "internalType": "uint256" }],
13
+ "stateMutability": "view"
14
+ },
15
+ {
16
+ "type": "function",
17
+ "name": "comptroller",
18
+ "inputs": [],
19
+ "outputs": [{ "name": "", "type": "address", "internalType": "contract ISablierComptroller" }],
20
+ "stateMutability": "view"
21
+ },
22
+ {
23
+ "type": "function",
24
+ "name": "createVault",
25
+ "inputs": [
26
+ { "name": "token", "type": "address", "internalType": "contract IERC20" },
27
+ { "name": "oracle", "type": "address", "internalType": "contract AggregatorV3Interface" },
28
+ { "name": "expiry", "type": "uint40", "internalType": "uint40" },
29
+ { "name": "targetPrice", "type": "uint128", "internalType": "uint128" }
30
+ ],
31
+ "outputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
32
+ "stateMutability": "nonpayable"
33
+ },
34
+ {
35
+ "type": "function",
36
+ "name": "enter",
37
+ "inputs": [
38
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
39
+ { "name": "amount", "type": "uint128", "internalType": "uint128" }
40
+ ],
41
+ "outputs": [],
42
+ "stateMutability": "nonpayable"
43
+ },
44
+ {
45
+ "type": "function",
46
+ "name": "enterWithNativeToken",
47
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
48
+ "outputs": [],
49
+ "stateMutability": "payable"
50
+ },
51
+ {
52
+ "type": "function",
53
+ "name": "getAdapter",
54
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
55
+ "outputs": [{ "name": "adapter", "type": "address", "internalType": "contract ISablierBobAdapter" }],
56
+ "stateMutability": "view"
57
+ },
58
+ {
59
+ "type": "function",
60
+ "name": "getDefaultAdapterFor",
61
+ "inputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
62
+ "outputs": [{ "name": "adapter", "type": "address", "internalType": "contract ISablierBobAdapter" }],
63
+ "stateMutability": "view"
64
+ },
65
+ {
66
+ "type": "function",
67
+ "name": "getExpiry",
68
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
69
+ "outputs": [{ "name": "expiry", "type": "uint40", "internalType": "uint40" }],
70
+ "stateMutability": "view"
71
+ },
72
+ {
73
+ "type": "function",
74
+ "name": "getLastSyncedAt",
75
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
76
+ "outputs": [{ "name": "lastSyncedAt", "type": "uint40", "internalType": "uint40" }],
77
+ "stateMutability": "view"
78
+ },
79
+ {
80
+ "type": "function",
81
+ "name": "getLastSyncedPrice",
82
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
83
+ "outputs": [{ "name": "lastSyncedPrice", "type": "uint128", "internalType": "uint128" }],
84
+ "stateMutability": "view"
85
+ },
86
+ {
87
+ "type": "function",
88
+ "name": "getOracle",
89
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
90
+ "outputs": [{ "name": "oracle", "type": "address", "internalType": "contract AggregatorV3Interface" }],
91
+ "stateMutability": "view"
92
+ },
93
+ {
94
+ "type": "function",
95
+ "name": "getShareToken",
96
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
97
+ "outputs": [{ "name": "shareToken", "type": "address", "internalType": "contract IBobVaultShare" }],
98
+ "stateMutability": "view"
99
+ },
100
+ {
101
+ "type": "function",
102
+ "name": "getTargetPrice",
103
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
104
+ "outputs": [{ "name": "targetPrice", "type": "uint128", "internalType": "uint128" }],
105
+ "stateMutability": "view"
106
+ },
107
+ {
108
+ "type": "function",
109
+ "name": "getUnderlyingToken",
110
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
111
+ "outputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
112
+ "stateMutability": "view"
113
+ },
114
+ {
115
+ "type": "function",
116
+ "name": "isStakedInAdapter",
117
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
118
+ "outputs": [{ "name": "stakedInAdapter", "type": "bool", "internalType": "bool" }],
119
+ "stateMutability": "view"
120
+ },
121
+ {
122
+ "type": "function",
123
+ "name": "nativeToken",
124
+ "inputs": [],
125
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
126
+ "stateMutability": "view"
127
+ },
128
+ {
129
+ "type": "function",
130
+ "name": "nextVaultId",
131
+ "inputs": [],
132
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
133
+ "stateMutability": "view"
134
+ },
135
+ {
136
+ "type": "function",
137
+ "name": "onShareTransfer",
138
+ "inputs": [
139
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
140
+ { "name": "from", "type": "address", "internalType": "address" },
141
+ { "name": "to", "type": "address", "internalType": "address" },
142
+ { "name": "amount", "type": "uint256", "internalType": "uint256" },
143
+ { "name": "fromBalanceBefore", "type": "uint256", "internalType": "uint256" }
144
+ ],
145
+ "outputs": [],
146
+ "stateMutability": "nonpayable"
147
+ },
148
+ {
149
+ "type": "function",
150
+ "name": "redeem",
151
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
152
+ "outputs": [
153
+ { "name": "transferAmount", "type": "uint128", "internalType": "uint128" },
154
+ { "name": "feeAmountDeductedFromYield", "type": "uint128", "internalType": "uint128" }
155
+ ],
156
+ "stateMutability": "payable"
157
+ },
158
+ {
159
+ "type": "function",
160
+ "name": "setComptroller",
161
+ "inputs": [{ "name": "newComptroller", "type": "address", "internalType": "contract ISablierComptroller" }],
162
+ "outputs": [],
163
+ "stateMutability": "nonpayable"
164
+ },
165
+ {
166
+ "type": "function",
167
+ "name": "setDefaultAdapter",
168
+ "inputs": [
169
+ { "name": "token", "type": "address", "internalType": "contract IERC20" },
170
+ { "name": "newAdapter", "type": "address", "internalType": "contract ISablierBobAdapter" }
171
+ ],
172
+ "outputs": [],
173
+ "stateMutability": "nonpayable"
174
+ },
175
+ {
176
+ "type": "function",
177
+ "name": "setNativeToken",
178
+ "inputs": [{ "name": "newNativeToken", "type": "address", "internalType": "address" }],
179
+ "outputs": [],
180
+ "stateMutability": "nonpayable"
181
+ },
182
+ {
183
+ "type": "function",
184
+ "name": "statusOf",
185
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
186
+ "outputs": [{ "name": "status", "type": "uint8", "internalType": "enum Bob.Status" }],
187
+ "stateMutability": "view"
188
+ },
189
+ {
190
+ "type": "function",
191
+ "name": "syncPriceFromOracle",
192
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
193
+ "outputs": [{ "name": "latestPrice", "type": "uint128", "internalType": "uint128" }],
194
+ "stateMutability": "nonpayable"
195
+ },
196
+ {
197
+ "type": "function",
198
+ "name": "transferFeesToComptroller",
199
+ "inputs": [],
200
+ "outputs": [],
201
+ "stateMutability": "nonpayable"
202
+ },
203
+ {
204
+ "type": "function",
205
+ "name": "unstakeTokensViaAdapter",
206
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
207
+ "outputs": [{ "name": "amountReceivedFromAdapter", "type": "uint128", "internalType": "uint128" }],
208
+ "stateMutability": "nonpayable"
209
+ },
210
+ {
211
+ "type": "event",
212
+ "name": "CreateVault",
213
+ "inputs": [
214
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
215
+ { "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
216
+ { "name": "oracle", "type": "address", "indexed": true, "internalType": "contract AggregatorV3Interface" },
217
+ { "name": "adapter", "type": "address", "indexed": false, "internalType": "contract ISablierBobAdapter" },
218
+ { "name": "shareToken", "type": "address", "indexed": false, "internalType": "contract IBobVaultShare" },
219
+ { "name": "targetPrice", "type": "uint128", "indexed": false, "internalType": "uint128" },
220
+ { "name": "expiry", "type": "uint40", "indexed": false, "internalType": "uint40" }
221
+ ],
222
+ "anonymous": false
223
+ },
224
+ {
225
+ "type": "event",
226
+ "name": "Enter",
227
+ "inputs": [
228
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
229
+ { "name": "user", "type": "address", "indexed": true, "internalType": "address" },
230
+ { "name": "amountReceived", "type": "uint128", "indexed": false, "internalType": "uint128" },
231
+ { "name": "sharesMinted", "type": "uint128", "indexed": false, "internalType": "uint128" }
232
+ ],
233
+ "anonymous": false
234
+ },
235
+ {
236
+ "type": "event",
237
+ "name": "Redeem",
238
+ "inputs": [
239
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
240
+ { "name": "user", "type": "address", "indexed": true, "internalType": "address" },
241
+ { "name": "amountReceived", "type": "uint128", "indexed": false, "internalType": "uint128" },
242
+ { "name": "sharesBurned", "type": "uint128", "indexed": false, "internalType": "uint128" },
243
+ { "name": "fee", "type": "uint256", "indexed": false, "internalType": "uint256" }
244
+ ],
245
+ "anonymous": false
246
+ },
247
+ {
248
+ "type": "event",
249
+ "name": "SetComptroller",
250
+ "inputs": [
251
+ {
252
+ "name": "oldComptroller",
253
+ "type": "address",
254
+ "indexed": false,
255
+ "internalType": "contract ISablierComptroller"
256
+ },
257
+ {
258
+ "name": "newComptroller",
259
+ "type": "address",
260
+ "indexed": false,
261
+ "internalType": "contract ISablierComptroller"
262
+ }
263
+ ],
264
+ "anonymous": false
265
+ },
266
+ {
267
+ "type": "event",
268
+ "name": "SetDefaultAdapter",
269
+ "inputs": [
270
+ { "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
271
+ { "name": "adapter", "type": "address", "indexed": true, "internalType": "contract ISablierBobAdapter" }
272
+ ],
273
+ "anonymous": false
274
+ },
275
+ {
276
+ "type": "event",
277
+ "name": "SetNativeToken",
278
+ "inputs": [
279
+ { "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
280
+ { "name": "nativeToken", "type": "address", "indexed": false, "internalType": "address" }
281
+ ],
282
+ "anonymous": false
283
+ },
284
+ {
285
+ "type": "event",
286
+ "name": "SyncPriceFromOracle",
287
+ "inputs": [
288
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
289
+ { "name": "oracle", "type": "address", "indexed": true, "internalType": "contract AggregatorV3Interface" },
290
+ { "name": "latestPrice", "type": "uint128", "indexed": false, "internalType": "uint128" },
291
+ { "name": "syncedAt", "type": "uint40", "indexed": false, "internalType": "uint40" }
292
+ ],
293
+ "anonymous": false
294
+ },
295
+ {
296
+ "type": "event",
297
+ "name": "TransferFeesToComptroller",
298
+ "inputs": [
299
+ { "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
300
+ { "name": "feeAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
301
+ ],
302
+ "anonymous": false
303
+ },
304
+ {
305
+ "type": "event",
306
+ "name": "UnstakeFromAdapter",
307
+ "inputs": [
308
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
309
+ { "name": "adapter", "type": "address", "indexed": true, "internalType": "contract ISablierBobAdapter" },
310
+ { "name": "wrappedTokenUnstakedAmount", "type": "uint128", "indexed": false, "internalType": "uint128" },
311
+ { "name": "amountReceivedFromAdapter", "type": "uint128", "indexed": false, "internalType": "uint128" }
312
+ ],
313
+ "anonymous": false
314
+ },
315
+ {
316
+ "type": "error",
317
+ "name": "Comptrollerable_CallerNotComptroller",
318
+ "inputs": [
319
+ { "name": "comptroller", "type": "address", "internalType": "address" },
320
+ { "name": "caller", "type": "address", "internalType": "address" }
321
+ ]
322
+ },
323
+ {
324
+ "type": "error",
325
+ "name": "Comptrollerable_UnsupportedInterfaceId",
326
+ "inputs": [
327
+ { "name": "previousComptroller", "type": "address", "internalType": "address" },
328
+ { "name": "newComptroller", "type": "address", "internalType": "address" },
329
+ { "name": "minimalInterfaceId", "type": "bytes4", "internalType": "bytes4" }
330
+ ]
331
+ },
332
+ { "type": "error", "name": "ReentrancyGuardReentrantCall", "inputs": [] },
333
+ {
334
+ "type": "error",
335
+ "name": "SablierBobState_Null",
336
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
337
+ },
338
+ {
339
+ "type": "error",
340
+ "name": "SablierBob_CallerNotShareToken",
341
+ "inputs": [
342
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
343
+ { "name": "caller", "type": "address", "internalType": "address" }
344
+ ]
345
+ },
346
+ {
347
+ "type": "error",
348
+ "name": "SablierBob_DepositAmountZero",
349
+ "inputs": [
350
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
351
+ { "name": "user", "type": "address", "internalType": "address" }
352
+ ]
353
+ },
354
+ {
355
+ "type": "error",
356
+ "name": "SablierBob_ExpiryNotInFuture",
357
+ "inputs": [
358
+ { "name": "expiry", "type": "uint40", "internalType": "uint40" },
359
+ { "name": "currentTime", "type": "uint40", "internalType": "uint40" }
360
+ ]
361
+ },
362
+ {
363
+ "type": "error",
364
+ "name": "SablierBob_ForbidNativeToken",
365
+ "inputs": [{ "name": "nativeToken", "type": "address", "internalType": "address" }]
366
+ },
367
+ {
368
+ "type": "error",
369
+ "name": "SablierBob_InsufficientFeePayment",
370
+ "inputs": [
371
+ { "name": "feePaid", "type": "uint256", "internalType": "uint256" },
372
+ { "name": "feeRequired", "type": "uint256", "internalType": "uint256" }
373
+ ]
374
+ },
375
+ {
376
+ "type": "error",
377
+ "name": "SablierBob_MsgValueNotZero",
378
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
379
+ },
380
+ { "type": "error", "name": "SablierBob_NativeFeeTransferFailed", "inputs": [] },
381
+ {
382
+ "type": "error",
383
+ "name": "SablierBob_NativeTokenAlreadySet",
384
+ "inputs": [{ "name": "nativeToken", "type": "address", "internalType": "address" }]
385
+ },
386
+ { "type": "error", "name": "SablierBob_NativeTokenZeroAddress", "inputs": [] },
387
+ {
388
+ "type": "error",
389
+ "name": "SablierBob_NewAdapterMissesInterface",
390
+ "inputs": [{ "name": "adapter", "type": "address", "internalType": "address" }]
391
+ },
392
+ {
393
+ "type": "error",
394
+ "name": "SablierBob_NoSharesToRedeem",
395
+ "inputs": [
396
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
397
+ { "name": "user", "type": "address", "internalType": "address" }
398
+ ]
399
+ },
400
+ {
401
+ "type": "error",
402
+ "name": "SablierBob_TargetPriceTooLow",
403
+ "inputs": [
404
+ { "name": "targetPrice", "type": "uint128", "internalType": "uint128" },
405
+ { "name": "currentPrice", "type": "uint128", "internalType": "uint128" }
406
+ ]
407
+ },
408
+ { "type": "error", "name": "SablierBob_TargetPriceZero", "inputs": [] },
409
+ { "type": "error", "name": "SablierBob_TokenAddressZero", "inputs": [] },
410
+ {
411
+ "type": "error",
412
+ "name": "SablierBob_UnstakeAmountZero",
413
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
414
+ },
415
+ {
416
+ "type": "error",
417
+ "name": "SablierBob_VaultAlreadyUnstaked",
418
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
419
+ },
420
+ {
421
+ "type": "error",
422
+ "name": "SablierBob_VaultHasNoAdapter",
423
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
424
+ },
425
+ {
426
+ "type": "error",
427
+ "name": "SablierBob_VaultNotActive",
428
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
429
+ },
430
+ {
431
+ "type": "error",
432
+ "name": "SablierBob_VaultStillActive",
433
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }]
434
+ },
435
+ {
436
+ "type": "error",
437
+ "name": "SafeCastOverflowedUintDowncast",
438
+ "inputs": [
439
+ { "name": "bits", "type": "uint8", "internalType": "uint8" },
440
+ { "name": "value", "type": "uint256", "internalType": "uint256" }
441
+ ]
442
+ },
443
+ {
444
+ "type": "error",
445
+ "name": "SafeERC20FailedOperation",
446
+ "inputs": [{ "name": "token", "type": "address", "internalType": "address" }]
447
+ },
448
+ {
449
+ "type": "error",
450
+ "name": "SafeOracle_DecimalsTooHigh",
451
+ "inputs": [
452
+ { "name": "oracle", "type": "address", "internalType": "address" },
453
+ { "name": "decimals", "type": "uint8", "internalType": "uint8" }
454
+ ]
455
+ },
456
+ {
457
+ "type": "error",
458
+ "name": "SafeOracle_DecimalsZero",
459
+ "inputs": [{ "name": "oracle", "type": "address", "internalType": "address" }]
460
+ },
461
+ {
462
+ "type": "error",
463
+ "name": "SafeOracle_MissesInterface",
464
+ "inputs": [{ "name": "oracle", "type": "address", "internalType": "address" }]
465
+ },
466
+ {
467
+ "type": "error",
468
+ "name": "SafeOracle_NotPositivePrice",
469
+ "inputs": [{ "name": "oracle", "type": "address", "internalType": "address" }]
470
+ }
471
+ ],
472
+ "bytecode": {
473
+ "object": "0x6080806040523461012357602081614956803803809161001f828561013a565b83398101031261012357516001600160a01b03811690819003610123576040516301ffc9a760e01b8152630654439160e41b6004820152602081602481855afa90811561012f575f916100f0575b50156100cf575f80546001600160a01b031916821781556040805191825260208201929092527ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf9190a16001805560016004556040516147e490816101728239f35b6364ca3de160e11b5f525f600452602452630654439160e41b60445260645ffd5b90506020813d602011610127575b8161010b6020938361013a565b8101031261012357518015158103610123575f61006d565b5f80fd5b3d91506100fe565b6040513d5f823e3d90fd5b601f909101601f19168101906001600160401b0382119082101761015d57604052565b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f5f3560e01c80629dd14f1461225957806310a9de60146121ef57806312ac1763146121b457806313c726081461215957806346de071d146120f357806350129dff1461163d5780635645ed77146115e75780635fe3b5671461159657806365957bf51461153e5780636da1e1021461141857806378f82ce7146113915780637aca734b14611110578063801837f614610f835780638bad38dd14610d4c5780638f4f896814610cf0578063a06da63014610c7b578063a153803914610c16578063a477577214610baf578063ad35efd414610b29578063b18c0adb1461098d578063c8d293b7146108f5578063cca138e5146108a7578063db006a75146102e4578063ddeadbb61461027a578063e1758bd8146102285763ef96122914610137575f80fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561016c612984565b61017581612512565b61017e81612c54565b808252600560205273ffffffffffffffffffffffffffffffffffffffff604083205416803b1561021657826040517fd0e30db0000000000000000000000000000000000000000000000000000000008152818160048134875af1801561021a57610201575b50506101fa916101f234612f3c565b903090612cc5565b6001805580f35b8161020b916122d7565b61021657825f6101e3565b8280fd5b6040513d84823e3d90fd5b80fd5b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022557602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff600360406020936004356102d281612512565b81526005855220015416604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561031a612984565b61032381612512565b8161032d826129bd565b600381101561087a571561082e575b818352600560205273ffffffffffffffffffffffffffffffffffffffff60036040852001541691808452600560205273ffffffffffffffffffffffffffffffffffffffff60016040862001541691818552600560205273ffffffffffffffffffffffffffffffffffffffff604086205416926040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152602081602481855afa80156108235787906107ef575b6103fa9150612f3c565b946fffffffffffffffffffffffffffffffff86169283156107bf578115610692575034610666579060408792858452600560205260ff6003838620015460a01c16610622575b60648251809a81937fe5eefedd0000000000000000000000000000000000000000000000000000000083528960048401523360248401528860448401525af195861561021a57829783976105eb575b506fffffffffffffffffffffffffffffffff87989716806105c3575b505b813b15610216576040517f9eea5f66000000000000000000000000000000000000000000000000000000008152600481018690523360248201526fffffffffffffffffffffffffffffffff9190911660448201529082908290606490829084905af1801561021a576105ae575b505061053b6fffffffffffffffffffffffffffffffff851680943390612f98565b60405192835260208301526fffffffffffffffffffffffffffffffff841660408301527f66263a58856c3e57dbd58eff9f6ca2879ceeee962dd9036291613ddb9a1d444360603393a360018055604080516fffffffffffffffffffffffffffffffff928316815292909116602083015290f35b6105b98280926122d7565b610225578061051a565b6105e59073ffffffffffffffffffffffffffffffffffffffff85541688612f98565b5f6104ab565b90965061061191975060403d60401161061b575b61060981836122d7565b8101906124ee565b969096955f61048f565b503d6105ff565b85845260056020526003828520017fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81541690556106608187612b62565b50610440565b602487857f2327fe21000000000000000000000000000000000000000000000000000000008252600452fd5b9691905073ffffffffffffffffffffffffffffffffffffffff8254166040517fbaf8f4b9000000000000000000000000000000000000000000000000000000008152600480820152602081602481855afa9081156107b457849161077e575b5080341061074f575082903461070a575b5050856104ad565b8180809234905af161071a6123cf565b501561072757815f610702565b6004827ff0623c63000000000000000000000000000000000000000000000000000000008152fd5b7fb96cf21700000000000000000000000000000000000000000000000000000000845234600452602452604483fd5b90506020813d6020116107ac575b81610799602093836122d7565b810103126107a857515f6106f1565b5f80fd5b3d915061078c565b6040513d86823e3d90fd5b604488867f7305a0a700000000000000000000000000000000000000000000000000000000825260045233602452fd5b506020813d60201161081b575b81610809602093836122d7565b810103126107a8576103fa90516103f0565b3d91506107fc565b6040513d89823e3d90fd5b61083782612a1a565b50610841826129bd565b600381101561087a5761033c57602483837f865b93d0000000000000000000000000000000000000000000000000000000008252600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760206108ed6004356108e881612512565b612433565b604051908152f35b50346102255760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576024356004356fffffffffffffffffffffffffffffffff82168203610216576101fa91610950612984565b61095982612512565b61096282612c54565b818452600560205273ffffffffffffffffffffffffffffffffffffffff604085205416913390612cc5565b50346102255760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576109c56122b4565b6024359073ffffffffffffffffffffffffffffffffffffffff8216809203610216576109ef612933565b81610a66575b73ffffffffffffffffffffffffffffffffffffffff16808352600260205260408320827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f2cabb75a6cee74a6a503e79266a06a9a1c337edaad59e67075ac7325e35226bf8380a380f35b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f178fe656000000000000000000000000000000000000000000000000000000006004820152602081602481865afa9081156107b4578491610afa575b506109f557602483837fd06b68b9000000000000000000000000000000000000000000000000000000008252600452fd5b610b1c915060203d602011610b22575b610b1481836122d7565b81019061241b565b5f610ac9565b503d610b0a565b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022557610b6d600435610b6881612512565b6129bd565b604051906003811015610b8257602092508152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6040602092600435610c0581612512565b815260058452205416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff604060209282610c696122b4565b16815260028452205416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576020610cd2600435610cbb612984565b610cc481612512565b610ccd81612c54565b612a1a565b600180556fffffffffffffffffffffffffffffffff60405191168152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760ff60036040602093600435610d3581612512565b81526005855220015460a01c166040519015158152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576004359073ffffffffffffffffffffffffffffffffffffffff821680920361022557610da6612933565b80549173ffffffffffffffffffffffffffffffffffffffff8316906040517fc34df33e000000000000000000000000000000000000000000000000000000008152602081600481865afa9081156107b4578491610f24575b507fffffffff00000000000000000000000000000000000000000000000000000000604051917f01ffc9a70000000000000000000000000000000000000000000000000000000083521690816004820152602081602481865afa908115610f19578591610efa575b5015610ec757507ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf91816040927fffffffffffffffffffffffff0000000000000000000000000000000000000000871617855582519182526020820152a180f35b91606494507fc9947bc2000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b610f13915060203d602011610b2257610b1481836122d7565b5f610e66565b6040513d87823e3d90fd5b90506020813d602011610f7b575b81610f3f602093836122d7565b81010312610f7757517fffffffff0000000000000000000000000000000000000000000000000000000081168103610f77575f610dfe565b8380fd5b3d9150610f32565b50346102255760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576004359060243573ffffffffffffffffffffffffffffffffffffffff811680910361110c576044359073ffffffffffffffffffffffffffffffffffffffff821680920361021657838352600560205273ffffffffffffffffffffffffffffffffffffffff60016040852001541633036110dc57928293818452600560205273ffffffffffffffffffffffffffffffffffffffff60036040862001541680611058578480f35b803b156110d85784928360a49260405196879586947f3527687f000000000000000000000000000000000000000000000000000000008652600486015260248501526044840152606435606484015260843560848401525af1801561021a576110c3575b8080808480f35b816110cd916122d7565b61022557805f6110bc565b8480fd5b604483857f0c8fb31600000000000000000000000000000000000000000000000000000000825260045233602452fd5b5080fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561114b612984565b61115481612512565b808252600560205273ffffffffffffffffffffffffffffffffffffffff60036040842001541691821561136657818152600560205260ff600360408320015460a01c161561133b576040517fa59c665d000000000000000000000000000000000000000000000000000000008152826004820152602081602481875afa801561021a5782906112f2575b6fffffffffffffffffffffffffffffffff915016156112c757611200826129bd565b600381101561129a571561124f575b91816003604085610cd295602097526005875220017fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8154169055612b62565b61125882612a1a565b50611262826129bd565b600381101561129a5761120f576024917f865b93d0000000000000000000000000000000000000000000000000000000008252600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b6024917fab5331fc000000000000000000000000000000000000000000000000000000008252600452fd5b506020813d602011611333575b8161130c602093836122d7565b8101031261110c5761132e6fffffffffffffffffffffffffffffffff916123fe565b6111de565b3d91506112ff565b6024917f8b3dc224000000000000000000000000000000000000000000000000000000008252600452fd5b6024917f9b1c71a5000000000000000000000000000000000000000000000000000000008252600452fd5b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff8154167f56dedb874d4fc0f70753f281fa2c25e82085163206086fe826cf834b51701f6c6020478480808084885af15061140d6123cf565b50604051908152a280f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6114656122b4565b61146d612933565b1680156115165760035473ffffffffffffffffffffffffffffffffffffffff8116806114eb57507fffffffffffffffffffffffff0000000000000000000000000000000000000000829116176003556040519081527f7b0a5ae0a2e8f0dc2ec7555098e00dd4af1418ee3fd1bcf9bb14f6990c10fa9260203392a280f35b7f72516324000000000000000000000000000000000000000000000000000000008452600452602483fd5b6004827f0e21018b000000000000000000000000000000000000000000000000000000008152fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff600160406020936004356102d281612512565b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760046040602092823561162981612512565b81526005845220015460801c604051908152f35b50346107a85760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a8576116756122b4565b6024359173ffffffffffffffffffffffffffffffffffffffff83168093036107a8576044359164ffffffffff83168093036107a857606435906fffffffffffffffffffffffffffffffff82168092036107a85773ffffffffffffffffffffffffffffffffffffffff169081156120cb5773ffffffffffffffffffffffffffffffffffffffff60035416821461209f5764ffffffffff4216938481111561206f57811561204757851561201b576040517f313ce5670000000000000000000000000000000000000000000000000000000081526020816004818a5afa5f9181611ffa575b5061178957867fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60ff81168015611fce5760248111611f9f57506040517ffeaf968c00000000000000000000000000000000000000000000000000000000815260a0816004818b5afa5f9181611f69575b5061180457877fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f81989697981315611f3d5761182e6fffffffffffffffffffffffffffffffff926118339261303a565b612f3c565b169182811115611f0d576004549560018701600455611851856125b1565b6040517f313ce5670000000000000000000000000000000000000000000000000000000081526020816004818a5afa908115611ea6575f91611ede575b5061189889612752565b9060405192602084017f5361626c69657220426f62200000000000000000000000000000000000000000905283815193602083019480602c8401906118dd9188612331565b8201602c81017f205661756c74202300000000000000000000000000000000000000000000000090528151918260348301916020019161191c92612331565b01602c01036008017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855261195390856122d7565b61195c86612752565b61196588612752565b61196e8d612752565b916040519586945190816020870161198592612331565b8401602081017f2d000000000000000000000000000000000000000000000000000000000000009052815191826021830191602001916119c492612331565b01602001600181017f2d00000000000000000000000000000000000000000000000000000000000000905281519182600283019160200191611a0592612331565b01600101600181017f2d00000000000000000000000000000000000000000000000000000000000000905281519182600283019160200191611a4692612331565b01600101036001017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352611a7d90836122d7565b6040519261121b9283850185811067ffffffffffffffff821117611eb15760ff611acc6080938f95611abe908a996135948b3960a0865260a0860190612352565b908482036020860152612352565b94166040820152306060820152015203905ff08015611ea65773ffffffffffffffffffffffffffffffffffffffff1697855f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169460405161012081019281841067ffffffffffffffff851117611eb1578a936040528882526020820187815260408301918252606083018d815260808401908c825260a08501938b855260c08601935f855260e08701988b8a5261010088019889525f52600560205260405f20965173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687547fffffffffffffffffffffffff0000000000000000000000000000000000000000161787555186549060a01b78ffffffffff000000000000000000000000000000000000000016907fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff161786555164ffffffffff16611c859086907fffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff7dffffffffff0000000000000000000000000000000000000000000000000083549260c81b169116179055565b516001850180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155915160028601805490931690821617909155915160038401805492517fffffffffffffffffffffff000000000000000000000000000000000000000000909316919093161774ff000000000000000000000000000000000000000091151560a01b919091161790559151905160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161760049091015583611dc6575b5085927fa0670297fed6c7cac880cea5539b84fba742dbb4cb249f7c1ef7758bfe7ecf57926080926020996040519384528a84015260408301526060820152a4604051908152f35b92803b156107a857604051927fc6405ffb0000000000000000000000000000000000000000000000000000000084528760048501525f8460248183865af1928315611ea65760209989967fa0670297fed6c7cac880cea5539b84fba742dbb4cb249f7c1ef7758bfe7ecf5796608096611e92575b50604081896003935260058e522001740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff82541617905599509250925092611d7e565b611e9e91505f906122d7565b5f6040611e3a565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f00915060203d602011611f06575b611ef881836122d7565b810190612318565b5f61188e565b503d611eee565b90507fd44a31e2000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b857f7d0e789a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b611f8c91925060a03d60a011611f98575b611f8481836122d7565b81019061257f565b5050509050905f6117d3565b503d611f7a565b877fab5a00c1000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b877fa3195fc9000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61201491925060203d602011611f0657611ef881836122d7565b905f611758565b857fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f53f36828000000000000000000000000000000000000000000000000000000005f5260045ffd5b84907f1a114464000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b507ff3e6b0cd000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fbf8c68d2000000000000000000000000000000000000000000000000000000005f5260045ffd5b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561212e81612512565b5f52600560205260206fffffffffffffffffffffffffffffffff600460405f20015416604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561219481612512565b5f526005602052602064ffffffffff60405f205460a01c16604051908152f35b346107a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a8576020600454604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561222a81612512565b5f526005602052602073ffffffffffffffffffffffffffffffffffffffff600260405f20015416604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561229481612512565b5f526005602052602064ffffffffff60405f205460c81c16604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036107a857565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b908160209103126107a8575160ff811681036107a85790565b5f5b8381106123425750505f910152565b8181015183820152602001612333565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361238e81518092818752878088019101612331565b0116010190565b67ffffffffffffffff8111611eb157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d156123f9573d906123e082612395565b916123ee60405193846122d7565b82523d5f602084013e565b606090565b51906fffffffffffffffffffffffffffffffff821682036107a857565b908160209103126107a8575180151581036107a85790565b5f52600560205273ffffffffffffffffffffffffffffffffffffffff600360405f200154166124ea576024602073ffffffffffffffffffffffffffffffffffffffff5f5416604051928380927fbaf8f4b90000000000000000000000000000000000000000000000000000000082526004808301525afa908115611ea6575f916124bb575090565b90506020813d6020116124e2575b816124d6602093836122d7565b810103126107a8575190565b3d91506124c9565b5f90565b91908260409103126107a85761250f6020612508846123fe565b93016123fe565b90565b805f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2054161561253d5750565b7f71dc5162000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b519069ffffffffffffffffffff821682036107a857565b908160a09103126107a85761259381612568565b9160208201519160408101519161250f608060608401519301612568565b5f809160405160208101907f95d89b41000000000000000000000000000000000000000000000000000000008252600481526125ee6024826122d7565b51915afa906125fb6123cf565b91158015612746575b6127095781518201916020818185019403126107a85760208101519067ffffffffffffffff82116107a8570182603f820112156107a857602081015161264981612395565b9361265760405195866122d7565b818552604083830101116107a857612676916040602086019101612331565b601e8251116126cc57612688826130e5565b1561268f57565b905060405161269f6040826122d7565b601281527f556e737570706f727465642053796d626f6c0000000000000000000000000000602082015290565b90506040516126dc6040826122d7565b600b81527f4c6f6e672053796d626f6c000000000000000000000000000000000000000000602082015290565b90506040516127196040826122d7565b600581527f4552433230000000000000000000000000000000000000000000000000000000602082015290565b50604082511115612604565b805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000082101561290b575b806d04ee2d6d415b85acef8100000000600a9210156128f0575b662386f26fc100008110156128dc575b6305f5e1008110156128cb575b6127108110156128bc575b60648110156128ae575b10156128a3575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061283961282388612395565b97612831604051998a6122d7565b808952612395565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561289e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192612844565b505090565b6001909101906127cc565b6064600291049301926127c5565b612710600491049301926127bb565b6305f5e100600891049301926127b0565b662386f26fc10000601091049301926127a3565b6d04ee2d6d415b85acef810000000060209104930192612793565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104612779565b73ffffffffffffffffffffffffffffffffffffffff5f54168033036129555750565b7fa7e1519e000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b600260015414612995576002600155565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f52600560205264ffffffffff60405f205460a01c16421015612a14575f90815260056020526040902060040154608081901c6fffffffffffffffffffffffffffffffff9091161115612a0f575f90565b600290565b50600190565b90815f52600560205273ffffffffffffffffffffffffffffffffffffffff600260405f20015416612a4a816132f2565b5050926fffffffffffffffffffffffffffffffff841615612b5b577ff91870972a027f9d8d73d000b8a900240e180d1773aeaae0c3373197b6c213c4604064ffffffffff4216835f526005602052612ae3876004845f2001906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b5f848152600560205282902080547fffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c883901b7dffffffffff00000000000000000000000000000000000000000000000000161790558151906fffffffffffffffffffffffffffffffff881682526020820152a3565b505f925050565b919073ffffffffffffffffffffffffffffffffffffffff16604051927fd0ff74fa0000000000000000000000000000000000000000000000000000000084528060048501526040846024815f865af18015611ea6575f945f91612c11575b50604080516fffffffffffffffffffffffffffffffff9687168152958216602087015290947f763332fd885bef5f1a349d9b6b52de9b437c3e17a1704be2630b8c3f5856972691819081015b0390a3565b7f763332fd885bef5f1a349d9b6b52de9b437c3e17a1704be2630b8c3f585697269550612c4d915060403d60401161061b5761060981836122d7565b9094612bc0565b612c5d816129bd565b6003811015612c9857612c6d5750565b7fddd4dca0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9192905f916fffffffffffffffffffffffffffffffff85168015612f0c57612cec85612a1a565b50612cf685612c54565b5f8581526005602052604090206003015473ffffffffffffffffffffffffffffffffffffffff16928315612ed057839073ffffffffffffffffffffffffffffffffffffffff81163003612ec25750612d4d92612f98565b803b156107a8576040517f6e9c931c000000000000000000000000000000000000000000000000000000008152600481018490523360248201526fffffffffffffffffffffffffffffffff85166044820152905f908290606490829084905af18015611ea657612eaf575b505b818152600560205273ffffffffffffffffffffffffffffffffffffffff600160408320015416803b1561110c576040517f836a1040000000000000000000000000000000000000000000000000000000008152600481018490523360248201526fffffffffffffffffffffffffffffffff851660448201529082908290606490829084905af1801561021a57612e9a575b5050604080516fffffffffffffffffffffffffffffffff909316808452602084015233927f5311e04f453e88deaf1f1811907b38edfe7f4630e06d0575ce175899f90e670a9181908101612c0c565b612ea58280926122d7565b6102255780612e4b565b612ebb91505f906122d7565b5f5f612db8565b612ecb936134a5565b612d4d565b9250903373ffffffffffffffffffffffffffffffffffffffff841614612ef9575b505050612dba565b612f049230916134a5565b5f8080612ef1565b847f87c30df5000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b6fffffffffffffffffffffffffffffffff8111612f68576fffffffffffffffffffffffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52608060045260245260445ffd5b612ffa9273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252612ff56064836122d7565b61350c565b565b60ff16604d811161300d57600a0a90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9060ff166008811161307a5760088110613052575090565b60080360ff811161300d5761306690612ffc565b9081810291818304149015171561300d5790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80160ff811161300d576130ad90612ffc565b9081156130b8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8051905f5b8281106130f957505050600190565b81518110156132c5577fff0000000000000000000000000000000000000000000000000000000000000060208284010151167f20000000000000000000000000000000000000000000000000000000000000008114907f30000000000000000000000000000000000000000000000000000000000000008110158061329b575b7f41000000000000000000000000000000000000000000000000000000000000008210159081613270575b7f61000000000000000000000000000000000000000000000000000000000000008310159283613245575b841561321b575b508315613213575b50821561320b575b508115613203575b50156131fc576001016130ea565b5050505f90565b90505f6131ee565b91505f6131e6565b92505f6131de565b7f2d000000000000000000000000000000000000000000000000000000000000001493505f6131d6565b7f7a0000000000000000000000000000000000000000000000000000000000000081111593506131cf565b7f5a0000000000000000000000000000000000000000000000000000000000000083111591506131a4565b507f3900000000000000000000000000000000000000000000000000000000000000811115613179565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff16801561349c57604051907f313ce567000000000000000000000000000000000000000000000000000000008252602082600481845afa5f928161347b575b506133555750505f905f905f90565b60ff821660248111908115613472575b506134685760a060049291604051938480927ffeaf968c0000000000000000000000000000000000000000000000000000000082525afa91825f915f94613440575b506133b7575050505f905f905f90565b5f81131561343857824210613438576fffffffffffffffffffffffffffffffff81116134385780600860ff841603613405575b506fffffffffffffffffffffffffffffffff16926008929150565b6134119150829061303a565b906fffffffffffffffffffffffffffffffff82116134305781906133ea565b5f9390929150565b50915f929190565b90935061345c915060a03d60a011611f9857611f8481836122d7565b5092505090925f6133a7565b50505f905f905f90565b9050155f613365565b61349591935060203d602011611f0657611ef881836122d7565b915f613346565b505f905f905f90565b90919273ffffffffffffffffffffffffffffffffffffffff612ffa9481604051957f23b872dd000000000000000000000000000000000000000000000000000000006020880152166024860152166044840152606483015260648252612ff56084836122d7565b905f602091828151910182855af115611ea6575f513d61358a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6135485750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561354156fe60e06040523461039e5761121b80380380610019816103a2565b928339810160a08282031261039e5781516001600160401b03811161039e57816100449184016103c7565b602083015190916001600160401b03821161039e576100649184016103c7565b91604081015160ff8116810361039e576060820151916001600160a01b038316830361039e5760800151835190936001600160401b0382116102a15760035490600182811c92168015610394575b60208310146102835781601f849311610326575b50602090601f83116001146102c0575f926102b5575b50508160011b915f199060031b1c1916176003555b83516001600160401b0381116102a157600454600181811c91168015610297575b602082101461028357601f8111610220575b50602094601f82116001146101bd579481929394955f926101b2575b50508160011b915f199060031b1c1916176004555b60c05260805260a052604051610dea908161043182396080518181816101850152818161021e015281816105200152610cc8015260a0518181816102480152818161054a015281816106d60152610d23015260c051816107300152f35b015190505f80610140565b601f1982169560045f52805f20915f5b888110610208575083600195969798106101f0575b505050811b01600455610155565b01515f1960f88460031b161c191690555f80806101e2565b919260206001819286850151815501940192016101cd565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610279575b601f0160051c01905b81811061026e5750610124565b5f8155600101610261565b9091508190610258565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610112565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100dc565b60035f9081528281209350601f198516905b81811061030e57509084600195949392106102f6575b505050811b016003556100f1565b01515f1960f88460031b161c191690555f80806102e8565b929360206001819287860151815501950193016102d2565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851061038a575b90601f859493920160051c01905b81811061037c57506100c6565b5f815584935060010161036f565b9091508190610361565b91607f16916100b2565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102a157604052565b81601f8201121561039e578051906001600160401b0382116102a1576103f6601f8301601f19166020016103a2565b928284526020838301011161039e575f5b82811061041b57505060205f918301015290565b8060208092840101518282870101520161040756fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146109d057508063095ea7b31461092357806318160ddd146108e857806323b872dd14610754578063313ce567146106f9578063540acabc146106a157806370a082311461063f578063836a1040146104fa57806395d89b41146103a15780639eea5f66146101f8578063a9059cbb146101a9578063aa2e3b981461013b5763dd62ed3e146100ab575f80fd5b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576100e2610b0c565b73ffffffffffffffffffffffffffffffffffffffff6100ff610b2f565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576101ed6101e3610b0c565b6024359033610c15565b602060405160018152f35b346101375761020636610b52565b9173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680330361037257507f000000000000000000000000000000000000000000000000000000000000000090818103610344578373ffffffffffffffffffffffffffffffffffffffff84168015610318575f818152602081905260409020548281106102e6576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f900604d5000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fdb702112000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576040515f6004548060011c906001811680156104f0575b6020831081146104c3578285529081156104815750600114610423575b61041f8361041381850382610ba7565b60405191829182610aa6565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061046757509091508101602001610413610403565b91926001816020925483858801015201910190929161044f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104139050610403565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916103e6565b346101375761050836610b52565b9173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680330361037257507f0000000000000000000000000000000000000000000000000000000000000000908181036103445773ffffffffffffffffffffffffffffffffffffffff8316848115610613575f80525f602052600254908082018092116105e65760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346101375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375773ffffffffffffffffffffffffffffffffffffffff61068b610b0c565b165f525f602052602060405f2054604051908152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013757602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375761078b610b0c565b610793610b2f565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811061080f575b506101ed9350610c15565b8381106108b457841561088857331561085c576101ed945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f209103905584610804565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576020600254604051908152f35b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375761095a610b0c565b6024359033156108885773ffffffffffffffffffffffffffffffffffffffff1690811561085c57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137575f6003548060011c90600181168015610a9c575b6020831081146104c3578285529081156104815750600114610a3e5761041f8361041381850382610ba7565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610a8257509091508101602001610413610403565b919260018160209254838588010152019101909291610a6a565b91607f1691610a12565b919091602081528251928360208301525f5b848110610af65750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6040809697860101520116010190565b8060208092840101516040828601015201610ab8565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013757565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610137576004359060243573ffffffffffffffffffffffffffffffffffffffff81168103610137579060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156103185773ffffffffffffffffffffffffffffffffffffffff168015610613575f828152602081905260409020549182848110610d81578490825f525f6020520360405f2055815f525f60205260405f2084815401905581817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051888152a373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610137575f60a492819560405197889687957f801837f60000000000000000000000000000000000000000000000000000000087527f0000000000000000000000000000000000000000000000000000000000000000600488015260248701526044860152606485015260848401525af18015610d7657610d6a5750565b5f610d7491610ba7565b565b6040513d5f823e3d90fd5b84917fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea26469706673582212209d9157574f918237d0f86bc15bd26f4e8242fc01bb0c89f3e8e245bcd077060164736f6c634300081d0033a2646970667358221220376accacda190f92d7a93aff83e7223edf1fb475a80c5d0218e16a152fc2ce3b64736f6c634300081d0033",
474
+ "sourceMap": "2944:19176:81:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;2944:19176:81;;;;;;;;;;-1:-1:-1;;;4428:52:50;;-1:-1:-1;;;4428:52:50;;;2944:19176:81;;;4428:52:50;2944:19176:81;4428:52:50;;;;;;;;-1:-1:-1;4428:52:50;;;-1:-1:-1;4427:53:50;;4423:332;;-1:-1:-1;2944:19176:81;;-1:-1:-1;;;;;;2944:19176:81;;;;;;;;;;;;;;;;;;4880:51:50;;2944:19176:81;4880:51:50;1857:1:12;2944:19176:81;;1857:1:12;4428:52:50;2944:19176:81;;;;;;;;;;4423:332:50;4503:241;;;-1:-1:-1;4503:241:50;-1:-1:-1;4428:52:50;2944:19176:81;4428:52:50;2944:19176:81;1565:210:50;;;2944:19176:81;;;-1:-1:-1;4503:241:50;4428:52;;;2944:19176:81;4428:52:50;;2944:19176:81;4428:52:50;;;;;;2944:19176:81;4428:52:50;;;:::i;:::-;;;2944:19176:81;;;;;;;;;;;;4428:52:50;;;2944:19176:81;-1:-1:-1;2944:19176:81;;4428:52:50;;;-1:-1:-1;4428:52:50;;;2944:19176:81;;;-1:-1:-1;2944:19176:81;;;;;;;;;;-1:-1:-1;;2944:19176:81;;;;-1:-1:-1;;;;;2944:19176:81;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;2944:19176:81;;;;;-1:-1:-1;2944:19176:81",
475
+ "linkReferences": {}
476
+ },
477
+ "deployedBytecode": {
478
+ "object": "0x60806040526004361015610011575f80fd5b5f5f3560e01c80629dd14f1461225957806310a9de60146121ef57806312ac1763146121b457806313c726081461215957806346de071d146120f357806350129dff1461163d5780635645ed77146115e75780635fe3b5671461159657806365957bf51461153e5780636da1e1021461141857806378f82ce7146113915780637aca734b14611110578063801837f614610f835780638bad38dd14610d4c5780638f4f896814610cf0578063a06da63014610c7b578063a153803914610c16578063a477577214610baf578063ad35efd414610b29578063b18c0adb1461098d578063c8d293b7146108f5578063cca138e5146108a7578063db006a75146102e4578063ddeadbb61461027a578063e1758bd8146102285763ef96122914610137575f80fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561016c612984565b61017581612512565b61017e81612c54565b808252600560205273ffffffffffffffffffffffffffffffffffffffff604083205416803b1561021657826040517fd0e30db0000000000000000000000000000000000000000000000000000000008152818160048134875af1801561021a57610201575b50506101fa916101f234612f3c565b903090612cc5565b6001805580f35b8161020b916122d7565b61021657825f6101e3565b8280fd5b6040513d84823e3d90fd5b80fd5b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022557602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff600360406020936004356102d281612512565b81526005855220015416604051908152f35b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561031a612984565b61032381612512565b8161032d826129bd565b600381101561087a571561082e575b818352600560205273ffffffffffffffffffffffffffffffffffffffff60036040852001541691808452600560205273ffffffffffffffffffffffffffffffffffffffff60016040862001541691818552600560205273ffffffffffffffffffffffffffffffffffffffff604086205416926040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152602081602481855afa80156108235787906107ef575b6103fa9150612f3c565b946fffffffffffffffffffffffffffffffff86169283156107bf578115610692575034610666579060408792858452600560205260ff6003838620015460a01c16610622575b60648251809a81937fe5eefedd0000000000000000000000000000000000000000000000000000000083528960048401523360248401528860448401525af195861561021a57829783976105eb575b506fffffffffffffffffffffffffffffffff87989716806105c3575b505b813b15610216576040517f9eea5f66000000000000000000000000000000000000000000000000000000008152600481018690523360248201526fffffffffffffffffffffffffffffffff9190911660448201529082908290606490829084905af1801561021a576105ae575b505061053b6fffffffffffffffffffffffffffffffff851680943390612f98565b60405192835260208301526fffffffffffffffffffffffffffffffff841660408301527f66263a58856c3e57dbd58eff9f6ca2879ceeee962dd9036291613ddb9a1d444360603393a360018055604080516fffffffffffffffffffffffffffffffff928316815292909116602083015290f35b6105b98280926122d7565b610225578061051a565b6105e59073ffffffffffffffffffffffffffffffffffffffff85541688612f98565b5f6104ab565b90965061061191975060403d60401161061b575b61060981836122d7565b8101906124ee565b969096955f61048f565b503d6105ff565b85845260056020526003828520017fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81541690556106608187612b62565b50610440565b602487857f2327fe21000000000000000000000000000000000000000000000000000000008252600452fd5b9691905073ffffffffffffffffffffffffffffffffffffffff8254166040517fbaf8f4b9000000000000000000000000000000000000000000000000000000008152600480820152602081602481855afa9081156107b457849161077e575b5080341061074f575082903461070a575b5050856104ad565b8180809234905af161071a6123cf565b501561072757815f610702565b6004827ff0623c63000000000000000000000000000000000000000000000000000000008152fd5b7fb96cf21700000000000000000000000000000000000000000000000000000000845234600452602452604483fd5b90506020813d6020116107ac575b81610799602093836122d7565b810103126107a857515f6106f1565b5f80fd5b3d915061078c565b6040513d86823e3d90fd5b604488867f7305a0a700000000000000000000000000000000000000000000000000000000825260045233602452fd5b506020813d60201161081b575b81610809602093836122d7565b810103126107a8576103fa90516103f0565b3d91506107fc565b6040513d89823e3d90fd5b61083782612a1a565b50610841826129bd565b600381101561087a5761033c57602483837f865b93d0000000000000000000000000000000000000000000000000000000008252600452fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760206108ed6004356108e881612512565b612433565b604051908152f35b50346102255760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576024356004356fffffffffffffffffffffffffffffffff82168203610216576101fa91610950612984565b61095982612512565b61096282612c54565b818452600560205273ffffffffffffffffffffffffffffffffffffffff604085205416913390612cc5565b50346102255760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576109c56122b4565b6024359073ffffffffffffffffffffffffffffffffffffffff8216809203610216576109ef612933565b81610a66575b73ffffffffffffffffffffffffffffffffffffffff16808352600260205260408320827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f2cabb75a6cee74a6a503e79266a06a9a1c337edaad59e67075ac7325e35226bf8380a380f35b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f178fe656000000000000000000000000000000000000000000000000000000006004820152602081602481865afa9081156107b4578491610afa575b506109f557602483837fd06b68b9000000000000000000000000000000000000000000000000000000008252600452fd5b610b1c915060203d602011610b22575b610b1481836122d7565b81019061241b565b5f610ac9565b503d610b0a565b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022557610b6d600435610b6881612512565b6129bd565b604051906003811015610b8257602092508152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6040602092600435610c0581612512565b815260058452205416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff604060209282610c696122b4565b16815260028452205416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576020610cd2600435610cbb612984565b610cc481612512565b610ccd81612c54565b612a1a565b600180556fffffffffffffffffffffffffffffffff60405191168152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760ff60036040602093600435610d3581612512565b81526005855220015460a01c166040519015158152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576004359073ffffffffffffffffffffffffffffffffffffffff821680920361022557610da6612933565b80549173ffffffffffffffffffffffffffffffffffffffff8316906040517fc34df33e000000000000000000000000000000000000000000000000000000008152602081600481865afa9081156107b4578491610f24575b507fffffffff00000000000000000000000000000000000000000000000000000000604051917f01ffc9a70000000000000000000000000000000000000000000000000000000083521690816004820152602081602481865afa908115610f19578591610efa575b5015610ec757507ff45d882a72fce9d8d7a7e2e196a338d4d9d4057510b4b9ddf91a7066104d2eaf91816040927fffffffffffffffffffffffff0000000000000000000000000000000000000000871617855582519182526020820152a180f35b91606494507fc9947bc2000000000000000000000000000000000000000000000000000000008452600452602452604452fd5b610f13915060203d602011610b2257610b1481836122d7565b5f610e66565b6040513d87823e3d90fd5b90506020813d602011610f7b575b81610f3f602093836122d7565b81010312610f7757517fffffffff0000000000000000000000000000000000000000000000000000000081168103610f77575f610dfe565b8380fd5b3d9150610f32565b50346102255760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610225576004359060243573ffffffffffffffffffffffffffffffffffffffff811680910361110c576044359073ffffffffffffffffffffffffffffffffffffffff821680920361021657838352600560205273ffffffffffffffffffffffffffffffffffffffff60016040852001541633036110dc57928293818452600560205273ffffffffffffffffffffffffffffffffffffffff60036040862001541680611058578480f35b803b156110d85784928360a49260405196879586947f3527687f000000000000000000000000000000000000000000000000000000008652600486015260248501526044840152606435606484015260843560848401525af1801561021a576110c3575b8080808480f35b816110cd916122d7565b61022557805f6110bc565b8480fd5b604483857f0c8fb31600000000000000000000000000000000000000000000000000000000825260045233602452fd5b5080fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760043561114b612984565b61115481612512565b808252600560205273ffffffffffffffffffffffffffffffffffffffff60036040842001541691821561136657818152600560205260ff600360408320015460a01c161561133b576040517fa59c665d000000000000000000000000000000000000000000000000000000008152826004820152602081602481875afa801561021a5782906112f2575b6fffffffffffffffffffffffffffffffff915016156112c757611200826129bd565b600381101561129a571561124f575b91816003604085610cd295602097526005875220017fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8154169055612b62565b61125882612a1a565b50611262826129bd565b600381101561129a5761120f576024917f865b93d0000000000000000000000000000000000000000000000000000000008252600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526021600452fd5b6024917fab5331fc000000000000000000000000000000000000000000000000000000008252600452fd5b506020813d602011611333575b8161130c602093836122d7565b8101031261110c5761132e6fffffffffffffffffffffffffffffffff916123fe565b6111de565b3d91506112ff565b6024917f8b3dc224000000000000000000000000000000000000000000000000000000008252600452fd5b6024917f9b1c71a5000000000000000000000000000000000000000000000000000000008252600452fd5b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff8154167f56dedb874d4fc0f70753f281fa2c25e82085163206086fe826cf834b51701f6c6020478480808084885af15061140d6123cf565b50604051908152a280f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6114656122b4565b61146d612933565b1680156115165760035473ffffffffffffffffffffffffffffffffffffffff8116806114eb57507fffffffffffffffffffffffff0000000000000000000000000000000000000000829116176003556040519081527f7b0a5ae0a2e8f0dc2ec7555098e00dd4af1418ee3fd1bcf9bb14f6990c10fa9260203392a280f35b7f72516324000000000000000000000000000000000000000000000000000000008452600452602483fd5b6004827f0e21018b000000000000000000000000000000000000000000000000000000008152fd5b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff600160406020936004356102d281612512565b503461022557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b50346102255760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102255760046040602092823561162981612512565b81526005845220015460801c604051908152f35b50346107a85760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a8576116756122b4565b6024359173ffffffffffffffffffffffffffffffffffffffff83168093036107a8576044359164ffffffffff83168093036107a857606435906fffffffffffffffffffffffffffffffff82168092036107a85773ffffffffffffffffffffffffffffffffffffffff169081156120cb5773ffffffffffffffffffffffffffffffffffffffff60035416821461209f5764ffffffffff4216938481111561206f57811561204757851561201b576040517f313ce5670000000000000000000000000000000000000000000000000000000081526020816004818a5afa5f9181611ffa575b5061178957867fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60ff81168015611fce5760248111611f9f57506040517ffeaf968c00000000000000000000000000000000000000000000000000000000815260a0816004818b5afa5f9181611f69575b5061180457877fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b5f81989697981315611f3d5761182e6fffffffffffffffffffffffffffffffff926118339261303a565b612f3c565b169182811115611f0d576004549560018701600455611851856125b1565b6040517f313ce5670000000000000000000000000000000000000000000000000000000081526020816004818a5afa908115611ea6575f91611ede575b5061189889612752565b9060405192602084017f5361626c69657220426f62200000000000000000000000000000000000000000905283815193602083019480602c8401906118dd9188612331565b8201602c81017f205661756c74202300000000000000000000000000000000000000000000000090528151918260348301916020019161191c92612331565b01602c01036008017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855261195390856122d7565b61195c86612752565b61196588612752565b61196e8d612752565b916040519586945190816020870161198592612331565b8401602081017f2d000000000000000000000000000000000000000000000000000000000000009052815191826021830191602001916119c492612331565b01602001600181017f2d00000000000000000000000000000000000000000000000000000000000000905281519182600283019160200191611a0592612331565b01600101600181017f2d00000000000000000000000000000000000000000000000000000000000000905281519182600283019160200191611a4692612331565b01600101036001017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352611a7d90836122d7565b6040519261121b9283850185811067ffffffffffffffff821117611eb15760ff611acc6080938f95611abe908a996135948b3960a0865260a0860190612352565b908482036020860152612352565b94166040820152306060820152015203905ff08015611ea65773ffffffffffffffffffffffffffffffffffffffff1697855f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169460405161012081019281841067ffffffffffffffff851117611eb1578a936040528882526020820187815260408301918252606083018d815260808401908c825260a08501938b855260c08601935f855260e08701988b8a5261010088019889525f52600560205260405f20965173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1687547fffffffffffffffffffffffff0000000000000000000000000000000000000000161787555186549060a01b78ffffffffff000000000000000000000000000000000000000016907fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff161786555164ffffffffff16611c859086907fffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff7dffffffffff0000000000000000000000000000000000000000000000000083549260c81b169116179055565b516001850180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155915160028601805490931690821617909155915160038401805492517fffffffffffffffffffffff000000000000000000000000000000000000000000909316919093161774ff000000000000000000000000000000000000000091151560a01b919091161790559151905160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9091161760049091015583611dc6575b5085927fa0670297fed6c7cac880cea5539b84fba742dbb4cb249f7c1ef7758bfe7ecf57926080926020996040519384528a84015260408301526060820152a4604051908152f35b92803b156107a857604051927fc6405ffb0000000000000000000000000000000000000000000000000000000084528760048501525f8460248183865af1928315611ea65760209989967fa0670297fed6c7cac880cea5539b84fba742dbb4cb249f7c1ef7758bfe7ecf5796608096611e92575b50604081896003935260058e522001740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff82541617905599509250925092611d7e565b611e9e91505f906122d7565b5f6040611e3a565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f00915060203d602011611f06575b611ef881836122d7565b810190612318565b5f61188e565b503d611eee565b90507fd44a31e2000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b857f7d0e789a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b611f8c91925060a03d60a011611f98575b611f8481836122d7565b81019061257f565b5050509050905f6117d3565b503d611f7a565b877fab5a00c1000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b877fa3195fc9000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61201491925060203d602011611f0657611ef881836122d7565b905f611758565b857fa3bef8ba000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f53f36828000000000000000000000000000000000000000000000000000000005f5260045ffd5b84907f1a114464000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b507ff3e6b0cd000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fbf8c68d2000000000000000000000000000000000000000000000000000000005f5260045ffd5b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561212e81612512565b5f52600560205260206fffffffffffffffffffffffffffffffff600460405f20015416604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561219481612512565b5f526005602052602064ffffffffff60405f205460a01c16604051908152f35b346107a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a8576020600454604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561222a81612512565b5f526005602052602073ffffffffffffffffffffffffffffffffffffffff600260405f20015416604051908152f35b346107a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107a85760043561229481612512565b5f526005602052602064ffffffffff60405f205460c81c16604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff821682036107a857565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b908160209103126107a8575160ff811681036107a85790565b5f5b8381106123425750505f910152565b8181015183820152602001612333565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361238e81518092818752878088019101612331565b0116010190565b67ffffffffffffffff8111611eb157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b3d156123f9573d906123e082612395565b916123ee60405193846122d7565b82523d5f602084013e565b606090565b51906fffffffffffffffffffffffffffffffff821682036107a857565b908160209103126107a8575180151581036107a85790565b5f52600560205273ffffffffffffffffffffffffffffffffffffffff600360405f200154166124ea576024602073ffffffffffffffffffffffffffffffffffffffff5f5416604051928380927fbaf8f4b90000000000000000000000000000000000000000000000000000000082526004808301525afa908115611ea6575f916124bb575090565b90506020813d6020116124e2575b816124d6602093836122d7565b810103126107a8575190565b3d91506124c9565b5f90565b91908260409103126107a85761250f6020612508846123fe565b93016123fe565b90565b805f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2054161561253d5750565b7f71dc5162000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b519069ffffffffffffffffffff821682036107a857565b908160a09103126107a85761259381612568565b9160208201519160408101519161250f608060608401519301612568565b5f809160405160208101907f95d89b41000000000000000000000000000000000000000000000000000000008252600481526125ee6024826122d7565b51915afa906125fb6123cf565b91158015612746575b6127095781518201916020818185019403126107a85760208101519067ffffffffffffffff82116107a8570182603f820112156107a857602081015161264981612395565b9361265760405195866122d7565b818552604083830101116107a857612676916040602086019101612331565b601e8251116126cc57612688826130e5565b1561268f57565b905060405161269f6040826122d7565b601281527f556e737570706f727465642053796d626f6c0000000000000000000000000000602082015290565b90506040516126dc6040826122d7565b600b81527f4c6f6e672053796d626f6c000000000000000000000000000000000000000000602082015290565b90506040516127196040826122d7565b600581527f4552433230000000000000000000000000000000000000000000000000000000602082015290565b50604082511115612604565b805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000082101561290b575b806d04ee2d6d415b85acef8100000000600a9210156128f0575b662386f26fc100008110156128dc575b6305f5e1008110156128cb575b6127108110156128bc575b60648110156128ae575b10156128a3575b600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602160018501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061283961282388612395565b97612831604051998a6122d7565b808952612395565b013660208801378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a835304801561289e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a9192612844565b505090565b6001909101906127cc565b6064600291049301926127c5565b612710600491049301926127bb565b6305f5e100600891049301926127b0565b662386f26fc10000601091049301926127a3565b6d04ee2d6d415b85acef810000000060209104930192612793565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104612779565b73ffffffffffffffffffffffffffffffffffffffff5f54168033036129555750565b7fa7e1519e000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b600260015414612995576002600155565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f52600560205264ffffffffff60405f205460a01c16421015612a14575f90815260056020526040902060040154608081901c6fffffffffffffffffffffffffffffffff9091161115612a0f575f90565b600290565b50600190565b90815f52600560205273ffffffffffffffffffffffffffffffffffffffff600260405f20015416612a4a816132f2565b5050926fffffffffffffffffffffffffffffffff841615612b5b577ff91870972a027f9d8d73d000b8a900240e180d1773aeaae0c3373197b6c213c4604064ffffffffff4216835f526005602052612ae3876004845f2001906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b5f848152600560205282902080547fffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c883901b7dffffffffff00000000000000000000000000000000000000000000000000161790558151906fffffffffffffffffffffffffffffffff881682526020820152a3565b505f925050565b919073ffffffffffffffffffffffffffffffffffffffff16604051927fd0ff74fa0000000000000000000000000000000000000000000000000000000084528060048501526040846024815f865af18015611ea6575f945f91612c11575b50604080516fffffffffffffffffffffffffffffffff9687168152958216602087015290947f763332fd885bef5f1a349d9b6b52de9b437c3e17a1704be2630b8c3f5856972691819081015b0390a3565b7f763332fd885bef5f1a349d9b6b52de9b437c3e17a1704be2630b8c3f585697269550612c4d915060403d60401161061b5761060981836122d7565b9094612bc0565b612c5d816129bd565b6003811015612c9857612c6d5750565b7fddd4dca0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9192905f916fffffffffffffffffffffffffffffffff85168015612f0c57612cec85612a1a565b50612cf685612c54565b5f8581526005602052604090206003015473ffffffffffffffffffffffffffffffffffffffff16928315612ed057839073ffffffffffffffffffffffffffffffffffffffff81163003612ec25750612d4d92612f98565b803b156107a8576040517f6e9c931c000000000000000000000000000000000000000000000000000000008152600481018490523360248201526fffffffffffffffffffffffffffffffff85166044820152905f908290606490829084905af18015611ea657612eaf575b505b818152600560205273ffffffffffffffffffffffffffffffffffffffff600160408320015416803b1561110c576040517f836a1040000000000000000000000000000000000000000000000000000000008152600481018490523360248201526fffffffffffffffffffffffffffffffff851660448201529082908290606490829084905af1801561021a57612e9a575b5050604080516fffffffffffffffffffffffffffffffff909316808452602084015233927f5311e04f453e88deaf1f1811907b38edfe7f4630e06d0575ce175899f90e670a9181908101612c0c565b612ea58280926122d7565b6102255780612e4b565b612ebb91505f906122d7565b5f5f612db8565b612ecb936134a5565b612d4d565b9250903373ffffffffffffffffffffffffffffffffffffffff841614612ef9575b505050612dba565b612f049230916134a5565b5f8080612ef1565b847f87c30df5000000000000000000000000000000000000000000000000000000005f526004523360245260445ffd5b6fffffffffffffffffffffffffffffffff8111612f68576fffffffffffffffffffffffffffffffff1690565b7f6dfcc650000000000000000000000000000000000000000000000000000000005f52608060045260245260445ffd5b612ffa9273ffffffffffffffffffffffffffffffffffffffff604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252612ff56064836122d7565b61350c565b565b60ff16604d811161300d57600a0a90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9060ff166008811161307a5760088110613052575090565b60080360ff811161300d5761306690612ffc565b9081810291818304149015171561300d5790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80160ff811161300d576130ad90612ffc565b9081156130b8570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8051905f5b8281106130f957505050600190565b81518110156132c5577fff0000000000000000000000000000000000000000000000000000000000000060208284010151167f20000000000000000000000000000000000000000000000000000000000000008114907f30000000000000000000000000000000000000000000000000000000000000008110158061329b575b7f41000000000000000000000000000000000000000000000000000000000000008210159081613270575b7f61000000000000000000000000000000000000000000000000000000000000008310159283613245575b841561321b575b508315613213575b50821561320b575b508115613203575b50156131fc576001016130ea565b5050505f90565b90505f6131ee565b91505f6131e6565b92505f6131de565b7f2d000000000000000000000000000000000000000000000000000000000000001493505f6131d6565b7f7a0000000000000000000000000000000000000000000000000000000000000081111593506131cf565b7f5a0000000000000000000000000000000000000000000000000000000000000083111591506131a4565b507f3900000000000000000000000000000000000000000000000000000000000000811115613179565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff16801561349c57604051907f313ce567000000000000000000000000000000000000000000000000000000008252602082600481845afa5f928161347b575b506133555750505f905f905f90565b60ff821660248111908115613472575b506134685760a060049291604051938480927ffeaf968c0000000000000000000000000000000000000000000000000000000082525afa91825f915f94613440575b506133b7575050505f905f905f90565b5f81131561343857824210613438576fffffffffffffffffffffffffffffffff81116134385780600860ff841603613405575b506fffffffffffffffffffffffffffffffff16926008929150565b6134119150829061303a565b906fffffffffffffffffffffffffffffffff82116134305781906133ea565b5f9390929150565b50915f929190565b90935061345c915060a03d60a011611f9857611f8481836122d7565b5092505090925f6133a7565b50505f905f905f90565b9050155f613365565b61349591935060203d602011611f0657611ef881836122d7565b915f613346565b505f905f905f90565b90919273ffffffffffffffffffffffffffffffffffffffff612ffa9481604051957f23b872dd000000000000000000000000000000000000000000000000000000006020880152166024860152166044840152606483015260648252612ff56084836122d7565b905f602091828151910182855af115611ea6575f513d61358a575073ffffffffffffffffffffffffffffffffffffffff81163b155b6135485750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561354156fe60e06040523461039e5761121b80380380610019816103a2565b928339810160a08282031261039e5781516001600160401b03811161039e57816100449184016103c7565b602083015190916001600160401b03821161039e576100649184016103c7565b91604081015160ff8116810361039e576060820151916001600160a01b038316830361039e5760800151835190936001600160401b0382116102a15760035490600182811c92168015610394575b60208310146102835781601f849311610326575b50602090601f83116001146102c0575f926102b5575b50508160011b915f199060031b1c1916176003555b83516001600160401b0381116102a157600454600181811c91168015610297575b602082101461028357601f8111610220575b50602094601f82116001146101bd579481929394955f926101b2575b50508160011b915f199060031b1c1916176004555b60c05260805260a052604051610dea908161043182396080518181816101850152818161021e015281816105200152610cc8015260a0518181816102480152818161054a015281816106d60152610d23015260c051816107300152f35b015190505f80610140565b601f1982169560045f52805f20915f5b888110610208575083600195969798106101f0575b505050811b01600455610155565b01515f1960f88460031b161c191690555f80806101e2565b919260206001819286850151815501940192016101cd565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610279575b601f0160051c01905b81811061026e5750610124565b5f8155600101610261565b9091508190610258565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610112565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100dc565b60035f9081528281209350601f198516905b81811061030e57509084600195949392106102f6575b505050811b016003556100f1565b01515f1960f88460031b161c191690555f80806102e8565b929360206001819287860151815501950193016102d2565b60035f529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101916020851061038a575b90601f859493920160051c01905b81811061037c57506100c6565b5f815584935060010161036f565b9091508190610361565b91607f16916100b2565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102a157604052565b81601f8201121561039e578051906001600160401b0382116102a1576103f6601f8301601f19166020016103a2565b928284526020838301011161039e575f5b82811061041b57505060205f918301015290565b8060208092840101518282870101520161040756fe6080806040526004361015610012575f80fd5b5f3560e01c90816306fdde03146109d057508063095ea7b31461092357806318160ddd146108e857806323b872dd14610754578063313ce567146106f9578063540acabc146106a157806370a082311461063f578063836a1040146104fa57806395d89b41146103a15780639eea5f66146101f8578063a9059cbb146101a9578063aa2e3b981461013b5763dd62ed3e146100ab575f80fd5b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576100e2610b0c565b73ffffffffffffffffffffffffffffffffffffffff6100ff610b2f565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576101ed6101e3610b0c565b6024359033610c15565b602060405160018152f35b346101375761020636610b52565b9173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680330361037257507f000000000000000000000000000000000000000000000000000000000000000090818103610344578373ffffffffffffffffffffffffffffffffffffffff84168015610318575f818152602081905260409020548281106102e6576020835f947fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3005b907fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7f900604d5000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fdb702112000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576040515f6004548060011c906001811680156104f0575b6020831081146104c3578285529081156104815750600114610423575b61041f8361041381850382610ba7565b60405191829182610aa6565b0390f35b91905060045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b915f905b80821061046757509091508101602001610413610403565b91926001816020925483858801015201910190929161044f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506104139050610403565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916103e6565b346101375761050836610b52565b9173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680330361037257507f0000000000000000000000000000000000000000000000000000000000000000908181036103445773ffffffffffffffffffffffffffffffffffffffff8316848115610613575f80525f602052600254908082018092116105e65760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346101375760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375773ffffffffffffffffffffffffffffffffffffffff61068b610b0c565b165f525f602052602060405f2054604051908152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013757602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101375760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375761078b610b0c565b610793610b2f565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811061080f575b506101ed9350610c15565b8381106108b457841561088857331561085c576101ed945f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f526020528360405f209103905584610804565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b83907ffb8f41b2000000000000000000000000000000000000000000000000000000005f523360045260245260445260645ffd5b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137576020600254604051908152f35b346101375760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101375761095a610b0c565b6024359033156108885773ffffffffffffffffffffffffffffffffffffffff1690811561085c57335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b34610137575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610137575f6003548060011c90600181168015610a9c575b6020831081146104c3578285529081156104815750600114610a3e5761041f8361041381850382610ba7565b91905060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b915f905b808210610a8257509091508101602001610413610403565b919260018160209254838588010152019101909291610a6a565b91607f1691610a12565b919091602081528251928360208301525f5b848110610af65750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6040809697860101520116010190565b8060208092840101516040828601015201610ab8565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361013757565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361013757565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610137576004359060243573ffffffffffffffffffffffffffffffffffffffff81168103610137579060443590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610be857604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156103185773ffffffffffffffffffffffffffffffffffffffff168015610613575f828152602081905260409020549182848110610d81578490825f525f6020520360405f2055815f525f60205260405f2084815401905581817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020604051888152a373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b15610137575f60a492819560405197889687957f801837f60000000000000000000000000000000000000000000000000000000087527f0000000000000000000000000000000000000000000000000000000000000000600488015260248701526044860152606485015260848401525af18015610d7657610d6a5750565b5f610d7491610ba7565b565b6040513d5f823e3d90fd5b84917fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffdfea26469706673582212209d9157574f918237d0f86bc15bd26f4e8242fc01bb0c89f3e8e245bcd077060164736f6c634300081d0033a2646970667358221220376accacda190f92d7a93aff83e7223edf1fb475a80c5d0218e16a152fc2ce3b64736f6c634300081d0033",
479
+ "sourceMap": "2944:19176:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2466:103:12;;:::i;:::-;1666:7:84;;;:::i;:::-;3627::81;;;:::i;:::-;2944:19176;;;8868:7;2944:19176;;;;;;;;9052:43;;;;;2944:19176;;;;9052:43;;9082:9;;2944:19176;9082:9;;9052:43;;;;;;;;;2944:19176;9082:9;;9296:13;9082:9;9165:21;9082:9;9165:21;:::i;:::-;9266:4;;9296:13;;:::i;:::-;2944:19176;;;;;9052:43;;;;;:::i;:::-;2944:19176;;9052:43;;;;2944:19176;;;;9052:43;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;;;1098:35:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;2441:24:84;2944:19176:81;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;2441:7:84;2944:19176:81;;;2441:24:84;2944:19176:81;;;;;;;;;;;;;;;;;;;2466:103:12;;:::i;:::-;1666:7:84;;;:::i;:::-;9357:3776:81;9669:18;;;:::i;:::-;2944:19176;;;;;;9669:39;9665:407;;2944:19176;;;;10147:7;2944:19176;;;;;;;10147:24;2944:19176;;;;;;10147:7;2944:19176;;;;;;;10209:27;2944:19176;;;;;;10147:7;2944:19176;;;;;;;;;;;;10360:32;;10381:10;2944:19176;10360:32;;2944:19176;;10360:32;;;;;;;;;;;;;;2944:19176;10360:44;;;;:::i;:::-;2944:19176;;;;10468:17;;;10464:110;;10634:30;;2944:19176;;10731:9;;10727:101;;2944:19176;;;;;;;10147:7;2944:19176;;;;;;;10914:34;2944:19176;;;;10910:307;;10630:2016;11363:60;2944:19176;;11363:60;;;;2944:19176;11363:60;;;2944:19176;11363:60;;2944:19176;10381:10;10360:32;2944:19176;;;;;;;;11363:60;;;;;;;;2944:19176;;11363:60;;;10630:2016;11316:107;2944:19176;11316:107;;2944:19176;;11515:30;11511:137;;10630:2016;;;12715:50;;;;;2944:19176;;;12715:50;;2944:19176;12715:50;;2944:19176;;;10381:10;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;12715:50;;;;;;;;10630:2016;2944:19176;;12831:46;2944:19176;;;10381:10;;;12831:46;;:::i;:::-;2944:19176;;;;;;;;;;;;;;;;12919:207;2944:19176;10381:10;12919:207;;2944:19176;;;;;;;;;;;;;;;;;;;;;;12715:50;;;;;;:::i;:::-;2944:19176;;12715:50;;;11511:137;11565:68;2944:19176;;;;;11565:68;;:::i;:::-;11511:137;;;11363:60;;;;;;;;2944:19176;11363:60;2944:19176;11363:60;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;10910:307;2944:19176;;;10147:7;2944:19176;;;;;;11027:34;2944:19176;;;;;;11156:46;;;;:::i;:::-;;10910:307;;10727:101;10360:32;10771:42;;;;;2944:19176;;10771:42;10630:2016;2944:19176;;;;;;;;;;;11922:79;;2944:19176;11922:79;;;2944:19176;;11922:79;10360:32;11922:79;;;;;;;;;;;;;10630:2016;12099:9;;;:21;12095:129;;12099:9;;;;12307:242;;10630:2016;12606:29;;;10630:2016;;12307:242;12099:9;;;;;12362:50;;;;;:::i;:::-;;12434:8;12430:105;;12307:242;;;;12430:105;2944:19176;12473:43;;;;;12095:129;12147:62;;;12099:9;2944:19176;;10360:32;2944:19176;;12147:62;;11922:79;;;2944:19176;11922:79;;2944:19176;11922:79;;;;;;2944:19176;11922:79;;;:::i;:::-;;;2944:19176;;;;;11922:79;;;2944:19176;-1:-1:-1;2944:19176:81;;11922:79;;;-1:-1:-1;11922:79:81;;;2944:19176;;;;;;;;;10464:110;2944:19176;10508:55;;;;;2944:19176;;10381:10;10360:32;2944:19176;10508:55;10360:32;;2944:19176;10360:32;;2944:19176;10360:32;;;;;;2944:19176;10360:32;;;:::i;:::-;;;2944:19176;;;;10360:44;2944:19176;;10360:32;;;;;-1:-1:-1;10360:32:81;;;2944:19176;;;;;;;;;9665:407;9775:29;;;:::i;:::-;;9883:18;;;:::i;:::-;2944:19176;;;;;;9665:407;9879:128;2944:19176;9949:43;;;;;2944:19176;;9949:43;2944:19176;;;;;;;;;;;;;;;;;;;;;;;4309:491;2944:19176;;1666:7:84;;;:::i;:::-;4309:491:81;:::i;:::-;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8553:22;2466:103:12;;;:::i;:::-;1666:7:84;;;:::i;:::-;3627::81;;;:::i;:::-;2944:19176;;;8553:7;2944:19176;;;;;;;;8518:10;;8553:22;;:::i;2944:19176::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1003:74:50;;:::i;:::-;14033:33:81;14029:304;;2944:19176;;;;;;14401:16;2944:19176;;;;;;;;;;;;;14488:36;;;;2944:19176;;14029:304;2944:19176;;;14158:59;;14103:36;2944:19176;14158:59;;2944:19176;;14158:59;2944:19176;14158:59;;;;;;;;;;;;;14029:304;14157:60;14029:304;14153:170;2944:19176;14244:64;;;;;2944:19176;;14244:64;14158:59;;;;2944:19176;14158:59;2944:19176;14158:59;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;2944:19176;;;;;;;;;;;;4620:18:84;2944:19176:81;;1666:7:84;;;:::i;:::-;4620:18;:::i;:::-;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;4199:7:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;2639:16:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;14836:29;2944:19176;;2466:103:12;;:::i;:::-;1666:7:84;;;:::i;:::-;3627::81;;;:::i;:::-;14836:29;:::i;:::-;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;4414:34:84;2944:19176:81;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;4414:7:84;2944:19176:81;;;4414:34:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1003:74:50;;:::i;:::-;2944:19176:81;;;;;;;;;;2621:34:50;;2944:19176:81;2621:34:50;2944:19176:81;2621:34:50;;;;;;;;;;;;;2944:19176:81;;;;;4428:52:50;2944:19176:81;4428:52:50;;2944:19176:81;4428:52:50;;2944:19176:81;4428:52:50;;2944:19176:81;;4428:52:50;;;;;;;;;;;;;;;2944:19176:81;4427:53:50;;4423:332;;2944:19176:81;4880:51:50;2944:19176:81;;;;;;;;;;;;;;;;;;;4880:51:50;2944:19176:81;;4423:332:50;4503:241;2944:19176:81;4503:241:50;;;;;2944:19176:81;;4428:52:50;2944:19176:81;;;4503:241:50;4428:52;;;;2944:19176:81;4428:52:50;2944:19176:81;4428:52:50;;;;;;;:::i;:::-;;;;;2944:19176:81;;;;;;;;;2621:34:50;;;2944:19176:81;2621:34:50;;2944:19176:81;2621:34:50;;;;;;2944:19176:81;2621:34:50;;;:::i;:::-;;;2944:19176:81;;;;;;;;;;;;2621:34:50;;;2944:19176:81;;;;2621:34:50;;;-1:-1:-1;2621:34:50;;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16849:7;2944:19176;;;;;;;16849:27;2944:19176;;16827:10;:50;16823:146;;2944:19176;;;;;;16849:7;2944:19176;;;17043:24;2944:19176;;;17043:24;2944:19176;;17081:30;17077:223;;2944:19176;;;17077:223;17211:78;;;;;2944:19176;;;17211:78;2944:19176;;;17211:78;;;;;2944:19176;17211:78;;2944:19176;17211:78;;2944:19176;;;;;;;;;;;;;;;;;;;;;17211:78;;;;;;;;17077:223;;;;2944:19176;;;17211:78;;;;;:::i;:::-;2944:19176;;17211:78;;;;;2944:19176;;;16823:146;2944:19176;16900:58;;;;;2944:19176;;16827:10;2944:19176;;16900:58;2944:19176;;;;;;;;;;;;;;;;;;2466:103:12;;:::i;:::-;1666:7:84;;;:::i;:::-;2944:19176:81;;;15170:7;2944:19176;;;15170:24;2944:19176;;;15170:24;2944:19176;;15253:30;;;15249:112;;2944:19176;;;15170:7;2944:19176;;;15170:24;2944:19176;;;15435:34;2944:19176;;;;15434:35;15430:120;;2944:19176;;;15613:49;;;2944:19176;15613:49;;2944:19176;;15613:49;;;;;;;;;;;;;;2944:19176;;;;;15613:54;15609:136;;15847:18;;;:::i;:::-;15170:24;2944:19176;;;;;15847:39;15843:407;;2944:19176;;;15170:24;2944:19176;;16467:46;2944:19176;;;;15170:7;2944:19176;;;16326:34;2944:19176;;;;;;16467:46;:::i;15843:407::-;15953:29;;;:::i;:::-;;16061:18;;;:::i;:::-;15170:24;2944:19176;;;;;15843:407;16057:128;15613:49;16127:43;;;;2944:19176;;16127:43;2944:19176;15613:49;2944:19176;;;;;;;;15609:136;15613:49;15690:44;;;;2944:19176;;15690:44;15613:49;;2944:19176;15613:49;;2944:19176;15613:49;;;;;;2944:19176;15613:49;;;:::i;:::-;;;2944:19176;;;;;;;;:::i;:::-;15613:49;;;;;-1:-1:-1;15613:49:81;;15430:120;2944:19176;15492:47;;;;2944:19176;;15492:47;15249:112;2944:19176;15306:44;;;;2944:19176;;15306:44;2944:19176;;;;;;;;;;;;;;;;3225:73:50;2944:19176:81;2860:21:50;2972:47;;;;;;;;;;;:::i;:::-;;2944:19176:81;;;;;3225:73:50;2944:19176:81;;;;;;;;;;;;;;;;;:::i;:::-;1003:74:50;;:::i;:::-;2944:19176:81;13321:28;;13317:108;;13482:11;2944:19176;;;;13482:25;13478:115;;2944:19176;;;;;;13482:11;2944:19176;;;;;;13715:72;2944:19176;13745:10;13715:72;;2944:19176;;13478:115;13530:52;;;2944:19176;;;13530:52;;13317:108;2944:19176;13372:42;;;;;2944:19176;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;2944:19176:81:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;3311:7:84;2944:19176:81;;;3311:32:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5336:28;;;5332:102;;2944:19176;5515:11;2944:19176;;5497:29;;5493:118;;2944:19176;5654:15;2944:19176;5728:26;;;;;5724:125;;5907:16;;5903:89;;4649:29:56;;4645:117;;2944:19176:81;;;4895:17:56;;2944:19176:81;4895:17:56;2944:19176:81;4895:17:56;;;;2944:19176:81;;4895:17:56;;;2944:19176:81;-1:-1:-1;4891:571:56;;5401:50;;2944:19176:81;5401:50:56;2944:19176:81;;;;5401:50:56;4891:571;2944:19176:81;;;5001:14:56;;4997:107;;2944:19176:81;5205:14:56;;5201:121;;5336:26;2944:19176:81;;;5595:24:56;;;;2944:19176:81;5595:24:56;;;;2944:19176:81;;5595:24:56;;;4891:571;-1:-1:-1;5591:503:56;;6033:50;;2944:19176:81;6033:50:56;2944:19176:81;;;;6033:50:56;5591:503;2944:19176:81;5811:11:56;;;;;;;5807:108;;5946:48;2944:19176:81;5946:48:56;6181:27;5946:48;;:::i;:::-;6181:27;:::i;:::-;2944:19176:81;6225:26;;;;;6221:125;;2944:19176;;;6522:1;2944:19176;;;;6624:32;;;:::i;:::-;2944:19176;;;6688:41;;2944:19176;6688:41;2944:19176;6688:41;;;;;;;;;2944:19176;6688:41;;;5591:503:56;6920:18:81;;;;:::i;:::-;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;7043:31;;;:::i;:::-;7113:26;;;:::i;:::-;7178:18;;;:::i;:::-;2944:19176;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6522:1;2944:19176;;;;;;;;;;;;;;;;;;;:::i;:::-;;6522:1;2944:19176;6522:1;2944:19176;;;;;;;;;;;;;;;;;;;:::i;:::-;;6522:1;2944:19176;;6522:1;2944:19176;;;;;;;;;;:::i;:::-;;;6826:502;;;;;;;;;;;;;;;2944:19176;;;6826:502;;;2944:19176;6826:502;;;;;;5595:24:56;2944:19176:81;;5595:24:56;2944:19176:81;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;7282:4;2944:19176;;;;;;6826:502;;2944:19176;6826:502;;;;;2944:19176;;;;;;7420:16;2944:19176;;;;;;;;;;;;;;;;;;6826:502;2944:19176;;;;;;;;;;;;;7510:331;;2944:19176;;;;7510:331;;2944:19176;;;;7510:331;;2944:19176;;;;7510:331;;2944:19176;;;;5595:24:56;7510:331:81;;2944:19176;;;;7510:331;;;2944:19176;;;;;7510:331;;2944:19176;;;;7510:331;;;2944:19176;;;;;7491:7;2944:19176;;;;;;;;;;;;;;;;;;;;;;5595:24:56;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6522:1;2944:19176;;;;;;;;;;;;;;;;;;7420:16;2944:19176;;;;;;;;;;;;;;;;5515:11;2944:19176;;;;;;;;;;;;;;;;;;;5595:24:56;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;7917:30;7913:211;;5591:503:56;2944:19176:81;;;8165:77;2944:19176;;;;;;;;;;;;;;;;;;;;;;8165:77;2944:19176;;;;;;7913:211;7963:30;;;;;;2944:19176;;7963:30;2944:19176;7963:30;;;2944:19176;7963:30;;2944:19176;;7963:30;2944:19176;7963:30;;;;;;;;;;2944:19176;7963:30;;;8165:77;7963:30;2944:19176;7963:30;;;7913:211;2944:19176;;;;5515:11;2944:19176;;7491:7;2944:19176;;;8072:34;2944:19176;;;;;;;;7913:211;;;;;;;;;7963:30;;;;2944:19176;7963:30;;:::i;:::-;2944:19176;;7963:30;;;2944:19176;;;;;;;;;;;;;;;;;;;6688:41;;;;2944:19176;6688:41;2944:19176;6688:41;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;6221:125;6274:61;;;2944:19176;6274:61;2944:19176;;;;;;6274:61;5807:108:56;5849:51;;2944:19176:81;5849:51:56;2944:19176:81;;;;5849:51:56;5595:24;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;5201:121;5246:61;;2944:19176:81;5246:61:56;2944:19176:81;;;;;;5246:61:56;4997:107;5042:47;;2944:19176:81;5042:47:56;2944:19176:81;;;;5042:47:56;4895:17;;;;;2944:19176:81;4895:17:56;2944:19176:81;4895:17:56;;;;;;;:::i;:::-;;;;;4645:117;4701:50;;2944:19176:81;4701:50:56;2944:19176:81;;;;4701:50:56;5903:89:81;5946:35;2944:19176;5946:35;2944:19176;;5946:35;5724:125;5777:61;;;2944:19176;5777:61;2944:19176;;;;;;5777:61;5493:118;5549:51;;2944:19176;5549:51;2944:19176;;;;5549:51;5332:102;5387:36;2944:19176;5387:36;2944:19176;;5387:36;2944:19176;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;3995:7:84;2944:19176:81;;;;;;;;3995:28:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;2831:7:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;3527:7:84;2944:19176:81;;;;3527:23:84;2944:19176:81;;;3527:23:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;1666:7:84;;;:::i;:::-;2944:19176:81;;3041:7:84;2944:19176:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;;2944:19176:81;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2944:19176:81;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;4309:491::-;-1:-1:-1;2944:19176:81;4553:7;2944:19176;;;4553:24;2944:19176;-1:-1:-1;2944:19176:81;4553:24;2944:19176;;4541:86;;4715:78;2944:19176;;-1:-1:-1;2944:19176:81;;;;4715:78;;;;2944:19176;4715:78;;4758:32;4715:78;;;2944:19176;4715:78;;;;;;;-1:-1:-1;4715:78:81;;;4703:90;4309:491;:::o;4715:78::-;;;2944:19176;4715:78;;2944:19176;4715:78;;;;;;2944:19176;4715:78;;;:::i;:::-;;;2944:19176;;;;;4309:491;:::o;4715:78::-;;;-1:-1:-1;4715:78:81;;4541:86;-1:-1:-1;4608:8:81;:::o;2944:19176::-;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;5929:293:84:-;2944:19176:81;-1:-1:-1;2944:19176:81;6109:7:84;2944:19176:81;;;;-1:-1:-1;2944:19176:81;;;6101:45:84;6097:119;;5929:293;:::o;6097:119::-;6169:36;-1:-1:-1;6169:36:84;;2944:19176:81;;-1:-1:-1;6169:36:84;2944:19176:81;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;1628:818:57:-;1765:59;1628:818;;2944:19176:81;;1782:41:57;;;;;;;;;;;;;;:::i;:::-;1765:59;;;;;;;:::i;:::-;1926:8;;2944:19176:81;;1926:35:57;;1628:818;1922:80;;2944:19176:81;;2021:32:57;;;1782:41;2021:32;;;;2944:19176:81;;;;;1782:41:57;2021:32;;2944:19176:81;;;;;;;;;;;;;;;;1782:41:57;2944:19176:81;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;1782:41:57;2944:19176:81;;;;;:::i;:::-;2297:2:57;2012:41;2944:19176:81;2274:25:57;2270:76;;2360:26;;;:::i;:::-;2359:27;2355:85;;1628:818::o;2355:85::-;2944:19176:81;;;;;;;;:::i;:::-;;;;;1782:41:57;2944:19176:81;;;2402:27:57;:::o;2270:76::-;2944:19176:81;;;;;;;;:::i;:::-;;;;;1782:41:57;2944:19176:81;;;2315:20:57;:::o;1922:80::-;2944:19176:81;;;;;;;;:::i;:::-;;;;;1782:41:57;2944:19176:81;;;1977:14:57;:::o;1926:35::-;2944:19176:81;;;;1938:23:57;;1926:35;;1308:632:13;1430:17;-1:-1:-1;29282:17:16;29291:8;29282:17;;;29278:103;;1308:632:13;29398:17:16;29407:8;29978:7;29398:17;;;29394:103;;1308:632:13;29523:8:16;29514:17;;;29510:103;;1308:632:13;29639:7:16;29630:16;;;29626:100;;1308:632:13;29752:7:16;29743:16;;;29739:100;;1308:632:13;29865:7:16;29856:16;;;29852:100;;1308:632:13;29969:16:16;;29965:66;;1308:632:13;29978:7:16;2944:19176:81;1545:92:13;1450:1;2944:19176:81;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;1545:92:13;;;1650:247;2944:19176:81;1704:111:13;;;;;;;;2944:19176:81;1865:10:13;;1861:21;;2944:19176:81;29978:7:16;1650:247:13;;;;1861:21;1877:5;;1308:632;:::o;29965:66:16:-;30015:1;2944:19176:81;;;;29965:66:16;;29852:100;29865:7;29936:1;2944:19176:81;;;;29852:100:16;;;29739;29752:7;29823:1;2944:19176:81;;;;29739:100:16;;;29626;29639:7;29710:1;2944:19176:81;;;;29626:100:16;;;29510:103;29523:8;29596:2;2944:19176:81;;;;29510:103:16;;;29394;29407:8;29480:2;2944:19176:81;;;;29394:103:16;;;29278;-1:-1:-1;29364:2:16;;-1:-1:-1;29291:8:16;2944:19176:81;;29278:103:16;;3628:207:50;2944:19176:81;3706:11:50;2944:19176:81;;3684:10:50;;:34;3680:149;;3628:207;:::o;3680:149::-;3741:77;3706:11;3741:77;;2944:19176:81;3684:10:50;2944:19176:81;;;3706:11:50;3741:77;2575:307:12;1899:1;2702:7;2944:19176:81;2702:18:12;2698:86;;1899:1;2702:7;2944:19176:81;2575:307:12:o;2698:86::-;2743:30;-1:-1:-1;2743:30:12;;-1:-1:-1;2743:30:12;4946:536:84;2944:19176:81;;;5102:7:84;2944:19176:81;;;;;;;;;;5083:15:84;:42;;5079:98;;2944:19176:81;;;;5102:7:84;2944:19176:81;;;;;5288:32:84;;2944:19176:81;;;;;;;;;-1:-1:-1;5288:64:84;5284:120;;2944:19176:81;4946:536:84;:::o;5284:120::-;5375:18;5368:25;:::o;5079:98::-;5141:25;5148:18;5141:25;:::o;20387:923:81:-;;2944:19176;-1:-1:-1;2944:19176:81;20520:7;2944:19176;;;20520:23;2944:19176;-1:-1:-1;2944:19176:81;20520:23;2944:19176;;20667:70;;;:::i;:::-;20649:88;;;2944:19176;20649:88;2944:19176;20799:16;20795:55;;21129:174;2944:19176;;20893:15;2944:19176;;-1:-1:-1;2944:19176:81;20520:7;2944:19176;;20983:46;2944:19176;20983:32;2944:19176;-1:-1:-1;2944:19176:81;20983:32;2944:19176;;;;;;;;;;;;;;;20983:46;-1:-1:-1;2944:19176:81;;;20520:7;2944:19176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21129:174;20387:923::o;20795:55::-;-1:-1:-1;;;;;20831:8:81:o;21594:524::-;;;2944:19176;;;;21944:34;2944:19176;21944:34;;;;;;2944:19176;;21944:34;;;-1:-1:-1;21944:34:81;;;;;;;-1:-1:-1;;;21944:34:81;;;21594:524;-1:-1:-1;2944:19176:81;;;;;;;;;;;;;;;;21886:92;;22020:91;;2944:19176;;;;22020:91;;;;21594:524::o;21944:34::-;22020:91;21944:34;;;;;2944:19176;21944:34;2944:19176;21944:34;;;;;;;:::i;:::-;;;;;19977:199;20056:18;;;:::i;:::-;2944:19176;;;;;;20052:118;;19977:199;:::o;20052:118::-;20118:41;20078:17;20118:41;;2944:19176;;20078:17;20118:41;2944:19176;;20078:17;2944:19176;;;;;20078:17;2944:19176;17996:1849;;;;18155:1;2944:19176;;;;18145:11;;18141:105;;18303:29;;;:::i;:::-;;18435:7;;;:::i;:::-;18155:1;2944:19176;;;18519:7;2944:19176;;;;;18519:24;;2944:19176;;;;18620:30;;2944:19176;;18859:4;;2944:19176;;;18859:4;18843:21;18859:4;;18884:44;;;;:::i;:::-;19132:42;;;;;2944:19176;;;19132:42;;;;;2944:19176;;;19155:10;2944:19176;;;;;;;;;;;;-1:-1:-1;;2944:19176:81;;;;;;-1:-1:-1;;19132:42:81;;;;;;;;18839:197;18616:959;;2944:19176;;;18519:7;2944:19176;;;19642:27;2944:19176;;;19642:27;2944:19176;;19642:61;;;;;2944:19176;;;19642:61;;;;;2944:19176;;;19684:10;2944:19176;;;;;;;;;;;;;;;;;;;;;;19642:61;;;;;;;;18616:959;-1:-1:-1;;2944:19176:81;;;;;;;;;;;;;;19684:10;;19747:91;;2944:19176;;;;19747:91;2944:19176;19642:61;;;;;;:::i;:::-;2944:19176;;19642:61;;;19132:42;;;;18155:1;19132:42;;:::i;:::-;18155:1;19132:42;;;18839:197;18967:54;;;:::i;:::-;18839:197;;18616:959;19413:10;;;;2944:19176;;;19405:18;19401:174;;18616:959;;;;;;19401:174;19513:51;19550:4;;19513:51;;:::i;:::-;19401:174;;;;;18141:105;18179:56;;18155:1;18179:56;;2944:19176;18224:10;2944:19176;;;18155:1;18179:56;9264:218:17;2944:19176:81;9344:25:17;;9340:105;;2944:19176:81;;9264:218:17;:::o;9340:105::-;9392:42;;;9423:3;9392:42;2944:19176:81;;;;9392:42:17;;1219:160:9;1328:43;1219:160;2944:19176:81;;;1328:43:9;2944:19176:81;1328:43:9;;;;2944:19176:81;1328:43:9;;;2944:19176:81;;;;;;1328:43:9;;;;;;:::i;:::-;;:::i;:::-;1219:160::o;2944:19176:81:-;;;;;;;;;;;:::o;:::-;;;;;;;;;;6510:326:56;;2944:19176:81;;6634:1:56;6617:18;;6613:92;;6634:1;6719:18;;6715:92;;6817:12;6510:326;:::o;6715:92::-;6634:1;2944:19176:81;;;;;;6769:26:56;;;:::i;:::-;2944:19176:81;;;;;;;;;;;;;;;6753:43:56;:::o;6613:92::-;2944:19176:81;;;;;;;6667:26:56;;;:::i;:::-;6658:36;2944:19176:81;;;;;6651:43:56;:::o;2944:19176:81:-;;;;;;;;;;514:859:57;2944:19176:81;;749:13:57;2944:19176:81;764:10:57;;;;;;1355:11;;;2944:19176:81;514:859:57;:::o;776:3::-;2944:19176:81;;;;;;;;925:4:57;2944:19176:81;;;;;;;917:12:57;;1015;2944:19176:81;1015:12:57;;;:28;;;776:3;2944:19176:81;1089:12:57;;;:28;;;;776:3;2944:19176:81;1163:12:57;;;:28;;;;776:3;1218:17;;;;776:3;1218:28;;;;;776:3;1218:49;;;;;776:3;1218:70;;;;;776:3;1216:73;;1212:124;;2944:19176:81;;749:13:57;;1212:124;1309:12;;;2944:19176:81;1309:12:57;:::o;1218:70::-;;;;;;:49;;-1:-1:-1;1218:49:57;;;:28;;-1:-1:-1;1218:28:57;;;:17;2944:19176:81;966:12:57;;-1:-1:-1;1218:17:57;;;1163:28;2944:19176:81;1179:12:57;;;;-1:-1:-1;1163:28:57;;1089;2944:19176:81;1105:12:57;;;;-1:-1:-1;1089:28:57;;1015;1031:12;2944:19176:81;1031:12:57;;;1015:28;;2944:19176:81;;;;;;;;;;1396:2564:56;2944:19176:81;;1688:29:56;;1684:76;;2944:19176:81;;1805:17:56;2944:19176:81;1805:17:56;;;;;;;;;1715:1;;1805:17;;;1396:2564;-1:-1:-1;1801:429:56;;2203:16;;1715:1;2203:16;1715:1;2203:16;1715:1;2203:16;:::o;1801:429::-;2944:19176:81;;;1995:2:56;1977:20;;:44;;;;;1801:429;1973:99;;;2330:24;1805:17;2086:32;1801:429;2944:19176:81;;2330:24:56;;;;2944:19176:81;2330:24:56;;;;;;1715:1;;;2330:24;;;1801:429;-1:-1:-1;2326:1628:56;;3927:16;;;1715:1;3927:16;1715:1;3927:16;1715:1;3927:16;:::o;2326:1628::-;1715:1;2513:11;;;2509:88;;2724:15;;:28;2720:105;;2944:19176:81;2982:31:56;;2978:108;;3100:37;3245:1;2944:19176:81;;;3227:19:56;3210:365;;2326:1628;-1:-1:-1;2944:19176:81;;;3245:1:56;;3785:22;-1:-1:-1;1396:2564:56:o;3210:365::-;3284:44;;;;;;:::i;:::-;3445:35;2944:19176:81;3445:35:56;;3441:120;;3210:365;;;;3441:120;1715:1;;3504:38;;;-1:-1:-1;3504:38:56:o;2978:108::-;3033:38;;1715:1;3033:38;;;:::o;2330:24::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1973:99;2041:16;;1715:1;2041:16;1715:1;2041:16;1715:1;2041:16;:::o;1977:44::-;2001:20;;;1977:44;;;1805:17;;;;;;;;;;;;;;;:::i;:::-;;;;;1684:76;1733:16;1715:1;1733:16;1715:1;1733:16;1715:1;1733:16;:::o;1618:188:9:-;;;;2944:19176:81;1745:53:9;1618:188;2944:19176:81;;;1745:53:9;2944:19176:81;1745:53:9;;;;2944:19176:81;1745:53:9;;;2944:19176:81;;;;;;;;;;;1745:53:9;;;;;;:::i;8370:720::-;;-1:-1:-1;8507:421:9;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:9;;8942:15;;2944:19176:81;;;;8960:26:9;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;2944:19176:81;9033:40:9;;-1:-1:-1;9033:40:9;2944:19176:81;9033:40:9;2944:19176:81;;-1:-1:-1;9033:40:9;8942:68;9009:1;8994:16;;8942:68;",
480
+ "linkReferences": {}
481
+ },
482
+ "methodIdentifiers": {
483
+ "calculateMinFeeWei(uint256)": "cca138e5",
484
+ "comptroller()": "5fe3b567",
485
+ "createVault(address,address,uint40,uint128)": "50129dff",
486
+ "enter(uint256,uint128)": "c8d293b7",
487
+ "enterWithNativeToken(uint256)": "ef961229",
488
+ "getAdapter(uint256)": "ddeadbb6",
489
+ "getDefaultAdapterFor(address)": "a1538039",
490
+ "getExpiry(uint256)": "13c72608",
491
+ "getLastSyncedAt(uint256)": "009dd14f",
492
+ "getLastSyncedPrice(uint256)": "5645ed77",
493
+ "getOracle(uint256)": "10a9de60",
494
+ "getShareToken(uint256)": "65957bf5",
495
+ "getTargetPrice(uint256)": "46de071d",
496
+ "getUnderlyingToken(uint256)": "a4775772",
497
+ "isStakedInAdapter(uint256)": "8f4f8968",
498
+ "nativeToken()": "e1758bd8",
499
+ "nextVaultId()": "12ac1763",
500
+ "onShareTransfer(uint256,address,address,uint256,uint256)": "801837f6",
501
+ "redeem(uint256)": "db006a75",
502
+ "setComptroller(address)": "8bad38dd",
503
+ "setDefaultAdapter(address,address)": "b18c0adb",
504
+ "setNativeToken(address)": "6da1e102",
505
+ "statusOf(uint256)": "ad35efd4",
506
+ "syncPriceFromOracle(uint256)": "a06da630",
507
+ "transferFeesToComptroller()": "78f82ce7",
508
+ "unstakeTokensViaAdapter(uint256)": "7aca734b"
509
+ },
510
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialComptroller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"Comptrollerable_CallerNotComptroller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousComptroller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newComptroller\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"minimalInterfaceId\",\"type\":\"bytes4\"}],\"name\":\"Comptrollerable_UnsupportedInterfaceId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBobState_Null\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"SablierBob_CallerNotShareToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"SablierBob_DepositAmountZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"currentTime\",\"type\":\"uint40\"}],\"name\":\"SablierBob_ExpiryNotInFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SablierBob_ForbidNativeToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeRequired\",\"type\":\"uint256\"}],\"name\":\"SablierBob_InsufficientFeePayment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_MsgValueNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierBob_NativeFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SablierBob_NativeTokenAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierBob_NativeTokenZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"SablierBob_NewAdapterMissesInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"SablierBob_NoSharesToRedeem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"currentPrice\",\"type\":\"uint128\"}],\"name\":\"SablierBob_TargetPriceTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierBob_TargetPriceZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SablierBob_TokenAddressZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_UnstakeAmountZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_VaultAlreadyUnstaked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_VaultHasNoAdapter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_VaultNotActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"SablierBob_VaultStillActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"SafeOracle_DecimalsTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"SafeOracle_DecimalsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"SafeOracle_MissesInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"SafeOracle_NotPositivePrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IBobVaultShare\",\"name\":\"shareToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"}],\"name\":\"CreateVault\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"sharesMinted\",\"type\":\"uint128\"}],\"name\":\"Enter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"sharesBurned\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"SetComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"SetDefaultAdapter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SetNativeToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"latestPrice\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"syncedAt\",\"type\":\"uint40\"}],\"name\":\"SyncPriceFromOracle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"TransferFeesToComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wrappedTokenUnstakedAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceivedFromAdapter\",\"type\":\"uint128\"}],\"name\":\"UnstakeFromAdapter\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"calculateMinFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minFeeWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"},{\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"}],\"name\":\"createVault\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"enter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"enterWithNativeToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getAdapter\",\"outputs\":[{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDefaultAdapterFor\",\"outputs\":[{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getExpiry\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getLastSyncedAt\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"lastSyncedAt\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getLastSyncedPrice\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"lastSyncedPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getShareToken\",\"outputs\":[{\"internalType\":\"contract IBobVaultShare\",\"name\":\"shareToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getTargetPrice\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"isStakedInAdapter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"stakedInAdapter\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextVaultId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fromBalanceBefore\",\"type\":\"uint256\"}],\"name\":\"onShareTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"transferAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feeAmountDeductedFromYield\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"setComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"newAdapter\",\"type\":\"address\"}],\"name\":\"setDefaultAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newNativeToken\",\"type\":\"address\"}],\"name\":\"setNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"enum Bob.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"syncPriceFromOracle\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"latestPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferFeesToComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"unstakeTokensViaAdapter\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountReceivedFromAdapter\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"calculateMinFeeWei(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\",\"params\":{\"vaultId\":\"The vault ID for the query.\"}},\"constructor\":{\"params\":{\"initialComptroller\":\"The address of the initial comptroller contract.\"}},\"createVault(address,address,uint40,uint128)\":{\"details\":\"Emits a {CreateVault} event. Notes: - A new ERC-20 share token is deployed for each vault to represent user's share of deposits in the vault. - The default adapter for the token is copied as the vault adapter. Any change in the default adapter does not affect existing vaults. - Vault creator is responsible for choosing a valid oracle. They should use Chainlink oracles, as the integration is based on their API. Requirements: - `token` must not be the zero address. - `token` must implement `symbol()` and `decimals()` functions. - `expiry` must be in the future. - `oracle` must implement the Chainlink's {AggregatorV3Interface} interface. - `oracle` must return a positive price when `latestRoundData()` is called. - `oracle` must return a non-zero value no greater than 36 when `decimals()` is called. - `targetPrice` must not be zero or greater than the current price returned by the provided oracle.\",\"params\":{\"expiry\":\"The Unix timestamp when the vault expires.\",\"oracle\":\"The address of the price feed oracle for the deposit token.\",\"targetPrice\":\"The target price at which the vault settles, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\",\"token\":\"The address of the ERC-20 token that will be accepted for deposits.\"},\"returns\":{\"vaultId\":\"The ID of the newly created vault.\"}},\"enter(uint256,uint128)\":{\"details\":\"Emits an {Enter} event. Notes: - If an adapter is configured for the vault, tokens are automatically staked for yield using the adapter. - Share tokens are minted 1:1 with the deposited amount. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - `amount` must be greater than zero. - The caller must have approved this contract to transfer `amount` tokens.\",\"params\":{\"amount\":\"The amount of tokens to deposit.\",\"vaultId\":\"The ID of the vault to deposit into.\"}},\"enterWithNativeToken(uint256)\":{\"details\":\"Emits an {Enter} event. Notes: - `msg.value` is used as the deposit amount. - See notes for {enter}. Requirements: - See requirements for {enter}. - `msg.value` must be greater than zero and must not exceed `type(uint128).max`.\",\"params\":{\"vaultId\":\"The ID of the vault to deposit into.\"}},\"getAdapter(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getDefaultAdapterFor(address)\":{\"details\":\"Zero address means no adapter is set.\",\"params\":{\"token\":\"The ERC-20 token to query the default adapter for.\"},\"returns\":{\"adapter\":\"The default adapter for the token.\"}},\"getExpiry(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getLastSyncedAt(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getLastSyncedPrice(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getOracle(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getShareToken(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getTargetPrice(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getUnderlyingToken(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"isStakedInAdapter(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"onShareTransfer(uint256,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The number of share tokens being transferred.\",\"from\":\"The address transferring share tokens.\",\"fromBalanceBefore\":\"The number of share tokens the sender had before the transfer.\",\"to\":\"The address receiving share tokens.\",\"vaultId\":\"The ID of the vault.\"}},\"redeem(uint256)\":{\"details\":\"Emits a {Redeem} event. Notes: - If no adapter is configured for the vault, a fee in the native token is applied. - If an adapter is configured for the vault, a fee, in the deposit token, is deducted from yield generated by the adapter. - If unstake via Lido withdrawal queue contract is triggered, redeem will revert until the withdrawal from the Lido queue is finalized. Requirements: - `vaultId` must not reference a null vault. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The share balance of the caller must be greater than zero. - If no adapter is configured for the vault, `msg.value` must be greater than or equal to the min fee required in the native token.\",\"params\":{\"vaultId\":\"The ID of the vault to redeem from.\"},\"returns\":{\"feeAmountDeductedFromYield\":\"The fee amount deducted from the yield. Zero if no adapter is set.\",\"transferAmount\":\"The amount of tokens transferred to the caller, after fees are deducted (only applicable if adapter is set).\"}},\"setComptroller(address)\":{\"details\":\"Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}\",\"params\":{\"newComptroller\":\"The address of the new comptroller contract.\"}},\"setDefaultAdapter(address,address)\":{\"details\":\"Emits a {SetDefaultAdapter} event. Notes: - This only affects future vaults. Requirements: - The caller must be the comptroller. - If new adapter is not zero address, it must implement {ISablierBobAdapter} interface.\",\"params\":{\"newAdapter\":\"The address of the new adapter.\",\"token\":\"The token address to set the adapter for.\"}},\"setNativeToken(address)\":{\"details\":\"For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller. - `newNativeToken` must not be zero address. - The native token must not be already set.\",\"params\":{\"newNativeToken\":\"The address of the native token.\"}},\"statusOf(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"syncPriceFromOracle(uint256)\":{\"details\":\"Emits a {SyncPriceFromOracle} event. Notes: - Oracle staleness is not validated on-chain when calling this function. Any price returned by the oracle is accepted. - Useful for syncing the price from oracle without calling {redeem} or {enter}. This function can be called by anyone to settle vault when the price is above the target price. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - The oracle must return a positive price.\",\"params\":{\"vaultId\":\"The ID of the vault to sync.\"},\"returns\":{\"latestPrice\":\"The latest price fetched from the oracle, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\"}},\"transferFeesToComptroller()\":{\"details\":\"Emits a {TransferFeesToComptroller} event.\"},\"unstakeTokensViaAdapter(uint256)\":{\"details\":\"Emits an {UnstakeFromAdapter} event. Requirements: - `vaultId` must not reference a null vault. - The adapter set in the vault must not be zero address. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The vault must not have been unstaked already. - The amount staked must be greater than zero.\",\"params\":{\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"amountReceivedFromAdapter\":\"The amount of tokens received from the adapter.\"}}},\"title\":\"SablierBob\",\"version\":1},\"userdoc\":{\"errors\":{\"Comptrollerable_CallerNotComptroller(address,address)\":[{\"notice\":\"Thrown when `msg.sender` is not the comptroller.\"}],\"Comptrollerable_UnsupportedInterfaceId(address,address,bytes4)\":[{\"notice\":\"Thrown when the new comptroller does not support the minimal interface ID from the previous comptroller.\"}],\"SablierBobState_Null(uint256)\":[{\"notice\":\"Thrown when trying to interact with a non-existent vault.\"}],\"SablierBob_CallerNotShareToken(uint256,address)\":[{\"notice\":\"Thrown when `onShareTransfer` is called by an address other than the share token.\"}],\"SablierBob_DepositAmountZero(uint256,address)\":[{\"notice\":\"Thrown when depositing zero amount in a vault.\"}],\"SablierBob_ExpiryNotInFuture(uint40,uint40)\":[{\"notice\":\"Thrown when trying to create a vault with an expiry timestamp not in the future.\"}],\"SablierBob_ForbidNativeToken(address)\":[{\"notice\":\"Thrown when trying to create a vault with the native token.\"}],\"SablierBob_InsufficientFeePayment(uint256,uint256)\":[{\"notice\":\"Thrown when trying to redeem with `msg.value` less than the minimum fee required.\"}],\"SablierBob_MsgValueNotZero(uint256)\":[{\"notice\":\"Thrown when trying to pay a fee in the native token from a vault that uses the adapter.\"}],\"SablierBob_NativeFeeTransferFailed()\":[{\"notice\":\"Thrown when the native token fee transfer to the comptroller fails.\"}],\"SablierBob_NativeTokenAlreadySet(address)\":[{\"notice\":\"Thrown when trying to set the native token address when it is already set.\"}],\"SablierBob_NativeTokenZeroAddress()\":[{\"notice\":\"Thrown when trying to set zero address as native token.\"}],\"SablierBob_NewAdapterMissesInterface(address)\":[{\"notice\":\"Thrown when the new adapter does not implement the required interface.\"}],\"SablierBob_NoSharesToRedeem(uint256,address)\":[{\"notice\":\"Thrown when trying to exit or redeem with zero share balance.\"}],\"SablierBob_TargetPriceTooLow(uint128,uint128)\":[{\"notice\":\"Thrown when trying to create a vault with a target price that is not greater than the latest price returned by the oracle.\"}],\"SablierBob_TargetPriceZero()\":[{\"notice\":\"Thrown when trying to create a vault with a zero target price.\"}],\"SablierBob_TokenAddressZero()\":[{\"notice\":\"Thrown when trying to create a vault with a zero token address.\"}],\"SablierBob_UnstakeAmountZero(uint256)\":[{\"notice\":\"Thrown when trying to unstake vault tokens using the adapter but the amount staked is zero.\"}],\"SablierBob_VaultAlreadyUnstaked(uint256)\":[{\"notice\":\"Thrown when trying to unstake vault tokens using the adapter but the vault has already been unstaked.\"}],\"SablierBob_VaultHasNoAdapter(uint256)\":[{\"notice\":\"Thrown when trying to unstake from a vault that has no adapter configured.\"}],\"SablierBob_VaultNotActive(uint256)\":[{\"notice\":\"Thrown when trying to perform an unauthorized action on a non-active vault.\"}],\"SablierBob_VaultStillActive(uint256)\":[{\"notice\":\"Thrown when trying to perform an unauthorized action on an active vault.\"}],\"SafeOracle_DecimalsTooHigh(address,uint8)\":[{\"notice\":\"Thrown when an oracle returns too many decimals (greater than 36).\"}],\"SafeOracle_DecimalsZero(address)\":[{\"notice\":\"Thrown when an oracle returns 0 decimals.\"}],\"SafeOracle_MissesInterface(address)\":[{\"notice\":\"Thrown when an oracle does not implement the expected interface.\"}],\"SafeOracle_NotPositivePrice(address)\":[{\"notice\":\"Thrown when the price returned by the oracle is not positive.\"}]},\"events\":{\"CreateVault(uint256,address,address,address,address,uint128,uint40)\":{\"notice\":\"Emitted when a new vault is created.\"},\"Enter(uint256,address,uint128,uint128)\":{\"notice\":\"Emitted when a user deposits tokens into a vault.\"},\"Redeem(uint256,address,uint128,uint128,uint256)\":{\"notice\":\"Emitted when a user redeems their shares from a settled vault.\"},\"SetComptroller(address,address)\":{\"notice\":\"Emitted when the comptroller address is set by the admin.\"},\"SetDefaultAdapter(address,address)\":{\"notice\":\"Emitted when the comptroller sets a new default adapter for a token.\"},\"SetNativeToken(address,address)\":{\"notice\":\"Emitted when the native token address is set by the comptroller.\"},\"SyncPriceFromOracle(uint256,address,uint128,uint40)\":{\"notice\":\"Emitted when a vault's price is synced from the oracle.\"},\"TransferFeesToComptroller(address,uint256)\":{\"notice\":\"Emitted when the fees are transferred to the comptroller contract.\"},\"UnstakeFromAdapter(uint256,address,uint128,uint128)\":{\"notice\":\"Emitted when tokens staked in the adapter for a given vault are unstaked.\"}},\"kind\":\"user\",\"methods\":{\"calculateMinFeeWei(uint256)\":{\"notice\":\"Calculates the minimum fee in wei required to redeem from the given vault ID. Returns 0 for vaults with an adapter, since the fee is taken from yield generated.\"},\"comptroller()\":{\"notice\":\"Retrieves the address of the comptroller contract.\"},\"createVault(address,address,uint40,uint128)\":{\"notice\":\"Creates a new vault with the specified parameters.\"},\"enter(uint256,uint128)\":{\"notice\":\"Enter into a vault by depositing tokens into it and minting share tokens to the caller.\"},\"enterWithNativeToken(uint256)\":{\"notice\":\"Enter into a vault by depositing native token (such as ETH, POL, etc.) into it and minting share tokens to the caller.\"},\"getAdapter(uint256)\":{\"notice\":\"Returns the adapter configured for a specific vault.\"},\"getDefaultAdapterFor(address)\":{\"notice\":\"Returns the default adapter for a given token.\"},\"getExpiry(uint256)\":{\"notice\":\"Returns the timestamp when the vault expires.\"},\"getLastSyncedAt(uint256)\":{\"notice\":\"Returns the timestamp when the oracle price was last synced for a vault.\"},\"getLastSyncedPrice(uint256)\":{\"notice\":\"Returns the oracle price stored for a vault.\"},\"getOracle(uint256)\":{\"notice\":\"Returns the oracle address set for a vault.\"},\"getShareToken(uint256)\":{\"notice\":\"Returns the address of the ERC-20 share token for a vault.\"},\"getTargetPrice(uint256)\":{\"notice\":\"Returns the target price at which the vault settles.\"},\"getUnderlyingToken(uint256)\":{\"notice\":\"Returns the ERC-20 token accepted for deposits in a vault.\"},\"isStakedInAdapter(uint256)\":{\"notice\":\"Returns whether the vault tokens are staked in an adapter.\"},\"nativeToken()\":{\"notice\":\"Retrieves the address of the ERC-20 interface of the native token, if it exists.\"},\"nextVaultId()\":{\"notice\":\"Counter for vault IDs, incremented every time a new vault is created.\"},\"onShareTransfer(uint256,address,address,uint256,uint256)\":{\"notice\":\"Called by adapter when share tokens for a given vault are transferred between users. This is required for accounting of the yield generated by the adapter. Requirements: - The caller must be the share token contract stored in the given vault. - The calculated wstETH transfer amount must not be zero.\"},\"redeem(uint256)\":{\"notice\":\"Redeem the tokens by burning user shares.\"},\"setComptroller(address)\":{\"notice\":\"Sets the comptroller to a new address.\"},\"setDefaultAdapter(address,address)\":{\"notice\":\"Sets the default adapter for a specific token.\"},\"setNativeToken(address)\":{\"notice\":\"Sets the native token address. Once set, it cannot be changed.\"},\"statusOf(uint256)\":{\"notice\":\"Returns the vault status.\"},\"syncPriceFromOracle(uint256)\":{\"notice\":\"Fetches the latest price from the oracle set for a vault and updates it in the vault storage.\"},\"transferFeesToComptroller()\":{\"notice\":\"Transfers the fees to the comptroller contract.\"},\"unstakeTokensViaAdapter(uint256)\":{\"notice\":\"Unstake all tokens from the adapter for a given vault.\"}},\"notice\":\"See the documentation in {ISablierBob}.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/SablierBob.sol\":\"SablierBob\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@arbitrum/=node_modules/@arbitrum/\",\":@chainlink/=node_modules/@chainlink/\",\":@eth-optimism/=node_modules/@eth-optimism/\",\":@offchainlabs/=node_modules/@offchainlabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@prb/=node_modules/@prb/\",\":@sablier/=node_modules/@sablier/\",\":@scroll-tech/=node_modules/@scroll-tech/\",\":@zksync/=node_modules/@zksync/\",\":forge-std/=node_modules/forge-std/\"],\"viaIR\":true},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a\",\"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"node_modules/@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"node_modules/@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"node_modules/@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"node_modules/@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"node_modules/@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"node_modules/@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"node_modules/@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"node_modules/@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"node_modules/@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"node_modules/@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"node_modules/@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"node_modules/@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"node_modules/@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"node_modules/@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"node_modules/@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"node_modules/@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"node_modules/@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"node_modules/@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"node_modules/@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"node_modules/@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"node_modules/@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"node_modules/@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"node_modules/@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"node_modules/@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"node_modules/@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"node_modules/@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"node_modules/@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"node_modules/@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"node_modules/@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"node_modules/@sablier/evm-utils/src/Comptrollerable.sol\":{\"keccak256\":\"0xf48c3ba6a78b9f9f5735d72d07a10a8363d573c82251b5e53a0c7ce29ed1a921\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d62e6057b2202ee016aeec50b0ecd7e04324957237f1de53fb2a97c092b577cc\",\"dweb:/ipfs/QmaXSJam62Z7nkT8T1aN79fiAX2aQARHwufvXNRqFshFab\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol\":{\"keccak256\":\"0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126\",\"dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol\":{\"keccak256\":\"0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b\",\"dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol\":{\"keccak256\":\"0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4\",\"dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV\"]},\"node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol\":{\"keccak256\":\"0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c\",\"dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX\"]},\"node_modules/@sablier/evm-utils/src/libraries/Errors.sol\":{\"keccak256\":\"0xc9a0fbcd6d582054420a32c538204ac7adb789320c6564f278ccf45baf4485c8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4da46b25df4fe89ce9f0315e1ef6561554f72b2dc7edbc43bdcdf9d65e8b709\",\"dweb:/ipfs/QmNW4VtuPSsLULst92GJmmcTCRHu4n5ndU9Jb4MbVes1jp\"]},\"node_modules/@sablier/evm-utils/src/libraries/SafeOracle.sol\":{\"keccak256\":\"0x1c72d85e4731e46bf81504fad0f45f943527b8f03f4f9b54d4442ee124acd66d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://67caf33268b58f9e0c62131e24fb323a3b17b11dd2f7f5243e96fda0d75f017c\",\"dweb:/ipfs/QmeyuCM1RP1SF91QXhYcKFEHXdtYB5KLCLCmoa1fHJKjJw\"]},\"node_modules/@sablier/evm-utils/src/libraries/SafeTokenSymbol.sol\":{\"keccak256\":\"0xdef58d124694ad1b61f24790a2693f21ee13edf21ee978b0461eab90e0f274ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://cd22ee4d798eab721640750e91a1960c8044879dcb838d32256f6faddfe8e71d\",\"dweb:/ipfs/QmX7fWdLVm9zajfpsUeDrTDdJCZSuAVwXAbv1rgfDw5btT\"]},\"src/BobVaultShare.sol\":{\"keccak256\":\"0x2b7da3845c067907963bbbc8053053ed03c21bd2354d1261982bb130d4cd9da4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://564315a1e60ca6f99746a8121b15cec5868aabfaa489a247d75b518836635ad8\",\"dweb:/ipfs/QmNmTGc8kgfY8wVZdSxUbHm4RRgonD6cBXKkBdKbN5hMQT\"]},\"src/SablierBob.sol\":{\"keccak256\":\"0xc3205a5f73000164460cd66edd4890e3bd716b8bbd826280b06af61757f1b22b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://657e87cc9fbdda4e1241fae53404cb4b3294bbb32d7c1f8c3c44e53213ee856f\",\"dweb:/ipfs/QmXpqw1u5wSGdz51ZXme88s5a8iMgiuto8Cbpeie8QMqmB\"]},\"src/abstracts/SablierBobState.sol\":{\"keccak256\":\"0x91cdd72d695a1117a873b9bee9d5cdd475c456208d1cb338f2622ce03324ae9e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9028672fc234f405af19e2f23944e0795d08791dab6ccb3f87bda4d746c77f65\",\"dweb:/ipfs/QmWaPiaBc5FPJhrdB3oyQ7g4rV9mBtGkNsnrDqL4dhZwm5\"]},\"src/interfaces/IBobVaultShare.sol\":{\"keccak256\":\"0x7e91f71800b33ce26fa757b8d74d0e89aaf2de6ee50260a706c4c26029ae4c22\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://18e85a71eef03972eb19a277ca025c645b18aa768c03a2b1e7d81de9eeabe731\",\"dweb:/ipfs/QmbjGtkps9KvG6XBysNLB9eBoY5E47ixkTDtN8cYYRzA6b\"]},\"src/interfaces/ISablierBob.sol\":{\"keccak256\":\"0x2c21ee1f24d0443a9daf745ef2f5ccfe339120f19484565d31a46a1af09e8edc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1dce1fb1847e2c9fb562f9e5c8cb71d9a9d5a3b4a56ba9575ff0c7d5240b3af9\",\"dweb:/ipfs/QmZbFLtUYRV9TTw6PTsJmvhrD5BwautoUbLbj5WoVYiTPP\"]},\"src/interfaces/ISablierBobAdapter.sol\":{\"keccak256\":\"0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e\",\"dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK\"]},\"src/interfaces/ISablierBobState.sol\":{\"keccak256\":\"0xc216153d326b2b02f62fe2a02edea29a194bf850d6c5d4d1d1c618cd68bfdd5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1c2c6b58098552b70febc6a4876c2b89fb894994049c840882c346d7e094ee\",\"dweb:/ipfs/QmWxBShVcnGCrjHfBhPH15cdLA7mtmN6QaSBSM7ZWae85Q\"]},\"src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0x1c3b4200172a52de8c9271172239a9cf41a197df289586480e2bfc6e14fe5bb3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bf4c6da85bf6214d4281915625c208cef5afec832414c2c2d4473b9217112ef0\",\"dweb:/ipfs/QmTTdUP6dXAot7dXJy7Zsbew3yA6VRHNgKGwR2fSXLoxUq\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x6c053ba4f029f4835883cf2fecd2b8adb1371b8e9820f5a3fdf679fd864ac682\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e1d64e7f44f0e8dcb3c6842a1baa119c3dd4b1b14f29c07c4c93b4185f0a566e\",\"dweb:/ipfs/QmUjf9S6JduDhmpD8VriK8bMRYXD8m7XMRohhnE91mjDc9\"]},\"src/types/Bob.sol\":{\"keccak256\":\"0xf156bfc6b369fd9006e47e3a2531108e515878f60977987def9069b6148cbba3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e2d1205de5dc31ffc76045c05b5fc9ad927346ff3a6be9ee7ee9dcd6c28bb1a\",\"dweb:/ipfs/QmeuUm54PyaS2NZ728zy3Cqnsm5BZxaGAZdQrBY85Tejdx\"]},\"src/types/Escrow.sol\":{\"keccak256\":\"0xc4c65957eab4cfd50d7806778ca69366aebe22e98736315c62fa36bda5cddba6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ef915ead3c018cd9c629fd3738eba614dfa0499492d25162129e9374607756c1\",\"dweb:/ipfs/QmenoUAVQFvKU4XVNm9Pm7RxvrTgBBJFXF6uNjqHMV1wAU\"]}},\"version\":1}",
511
+ "metadata": {
512
+ "compiler": { "version": "0.8.29+commit.ab55807c" },
513
+ "language": "Solidity",
514
+ "output": {
515
+ "abi": [
516
+ {
517
+ "inputs": [{ "internalType": "address", "name": "initialComptroller", "type": "address" }],
518
+ "stateMutability": "nonpayable",
519
+ "type": "constructor"
520
+ },
521
+ {
522
+ "inputs": [
523
+ { "internalType": "address", "name": "comptroller", "type": "address" },
524
+ { "internalType": "address", "name": "caller", "type": "address" }
525
+ ],
526
+ "type": "error",
527
+ "name": "Comptrollerable_CallerNotComptroller"
528
+ },
529
+ {
530
+ "inputs": [
531
+ { "internalType": "address", "name": "previousComptroller", "type": "address" },
532
+ { "internalType": "address", "name": "newComptroller", "type": "address" },
533
+ { "internalType": "bytes4", "name": "minimalInterfaceId", "type": "bytes4" }
534
+ ],
535
+ "type": "error",
536
+ "name": "Comptrollerable_UnsupportedInterfaceId"
537
+ },
538
+ { "inputs": [], "type": "error", "name": "ReentrancyGuardReentrantCall" },
539
+ {
540
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
541
+ "type": "error",
542
+ "name": "SablierBobState_Null"
543
+ },
544
+ {
545
+ "inputs": [
546
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
547
+ { "internalType": "address", "name": "caller", "type": "address" }
548
+ ],
549
+ "type": "error",
550
+ "name": "SablierBob_CallerNotShareToken"
551
+ },
552
+ {
553
+ "inputs": [
554
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
555
+ { "internalType": "address", "name": "user", "type": "address" }
556
+ ],
557
+ "type": "error",
558
+ "name": "SablierBob_DepositAmountZero"
559
+ },
560
+ {
561
+ "inputs": [
562
+ { "internalType": "uint40", "name": "expiry", "type": "uint40" },
563
+ { "internalType": "uint40", "name": "currentTime", "type": "uint40" }
564
+ ],
565
+ "type": "error",
566
+ "name": "SablierBob_ExpiryNotInFuture"
567
+ },
568
+ {
569
+ "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
570
+ "type": "error",
571
+ "name": "SablierBob_ForbidNativeToken"
572
+ },
573
+ {
574
+ "inputs": [
575
+ { "internalType": "uint256", "name": "feePaid", "type": "uint256" },
576
+ { "internalType": "uint256", "name": "feeRequired", "type": "uint256" }
577
+ ],
578
+ "type": "error",
579
+ "name": "SablierBob_InsufficientFeePayment"
580
+ },
581
+ {
582
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
583
+ "type": "error",
584
+ "name": "SablierBob_MsgValueNotZero"
585
+ },
586
+ { "inputs": [], "type": "error", "name": "SablierBob_NativeFeeTransferFailed" },
587
+ {
588
+ "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
589
+ "type": "error",
590
+ "name": "SablierBob_NativeTokenAlreadySet"
591
+ },
592
+ { "inputs": [], "type": "error", "name": "SablierBob_NativeTokenZeroAddress" },
593
+ {
594
+ "inputs": [{ "internalType": "address", "name": "adapter", "type": "address" }],
595
+ "type": "error",
596
+ "name": "SablierBob_NewAdapterMissesInterface"
597
+ },
598
+ {
599
+ "inputs": [
600
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
601
+ { "internalType": "address", "name": "user", "type": "address" }
602
+ ],
603
+ "type": "error",
604
+ "name": "SablierBob_NoSharesToRedeem"
605
+ },
606
+ {
607
+ "inputs": [
608
+ { "internalType": "uint128", "name": "targetPrice", "type": "uint128" },
609
+ { "internalType": "uint128", "name": "currentPrice", "type": "uint128" }
610
+ ],
611
+ "type": "error",
612
+ "name": "SablierBob_TargetPriceTooLow"
613
+ },
614
+ { "inputs": [], "type": "error", "name": "SablierBob_TargetPriceZero" },
615
+ { "inputs": [], "type": "error", "name": "SablierBob_TokenAddressZero" },
616
+ {
617
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
618
+ "type": "error",
619
+ "name": "SablierBob_UnstakeAmountZero"
620
+ },
621
+ {
622
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
623
+ "type": "error",
624
+ "name": "SablierBob_VaultAlreadyUnstaked"
625
+ },
626
+ {
627
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
628
+ "type": "error",
629
+ "name": "SablierBob_VaultHasNoAdapter"
630
+ },
631
+ {
632
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
633
+ "type": "error",
634
+ "name": "SablierBob_VaultNotActive"
635
+ },
636
+ {
637
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
638
+ "type": "error",
639
+ "name": "SablierBob_VaultStillActive"
640
+ },
641
+ {
642
+ "inputs": [
643
+ { "internalType": "uint8", "name": "bits", "type": "uint8" },
644
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
645
+ ],
646
+ "type": "error",
647
+ "name": "SafeCastOverflowedUintDowncast"
648
+ },
649
+ {
650
+ "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
651
+ "type": "error",
652
+ "name": "SafeERC20FailedOperation"
653
+ },
654
+ {
655
+ "inputs": [
656
+ { "internalType": "address", "name": "oracle", "type": "address" },
657
+ { "internalType": "uint8", "name": "decimals", "type": "uint8" }
658
+ ],
659
+ "type": "error",
660
+ "name": "SafeOracle_DecimalsTooHigh"
661
+ },
662
+ {
663
+ "inputs": [{ "internalType": "address", "name": "oracle", "type": "address" }],
664
+ "type": "error",
665
+ "name": "SafeOracle_DecimalsZero"
666
+ },
667
+ {
668
+ "inputs": [{ "internalType": "address", "name": "oracle", "type": "address" }],
669
+ "type": "error",
670
+ "name": "SafeOracle_MissesInterface"
671
+ },
672
+ {
673
+ "inputs": [{ "internalType": "address", "name": "oracle", "type": "address" }],
674
+ "type": "error",
675
+ "name": "SafeOracle_NotPositivePrice"
676
+ },
677
+ {
678
+ "inputs": [
679
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
680
+ { "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
681
+ { "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address", "indexed": true },
682
+ { "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": false },
683
+ { "internalType": "contract IBobVaultShare", "name": "shareToken", "type": "address", "indexed": false },
684
+ { "internalType": "uint128", "name": "targetPrice", "type": "uint128", "indexed": false },
685
+ { "internalType": "uint40", "name": "expiry", "type": "uint40", "indexed": false }
686
+ ],
687
+ "type": "event",
688
+ "name": "CreateVault",
689
+ "anonymous": false
690
+ },
691
+ {
692
+ "inputs": [
693
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
694
+ { "internalType": "address", "name": "user", "type": "address", "indexed": true },
695
+ { "internalType": "uint128", "name": "amountReceived", "type": "uint128", "indexed": false },
696
+ { "internalType": "uint128", "name": "sharesMinted", "type": "uint128", "indexed": false }
697
+ ],
698
+ "type": "event",
699
+ "name": "Enter",
700
+ "anonymous": false
701
+ },
702
+ {
703
+ "inputs": [
704
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
705
+ { "internalType": "address", "name": "user", "type": "address", "indexed": true },
706
+ { "internalType": "uint128", "name": "amountReceived", "type": "uint128", "indexed": false },
707
+ { "internalType": "uint128", "name": "sharesBurned", "type": "uint128", "indexed": false },
708
+ { "internalType": "uint256", "name": "fee", "type": "uint256", "indexed": false }
709
+ ],
710
+ "type": "event",
711
+ "name": "Redeem",
712
+ "anonymous": false
713
+ },
714
+ {
715
+ "inputs": [
716
+ {
717
+ "internalType": "contract ISablierComptroller",
718
+ "name": "oldComptroller",
719
+ "type": "address",
720
+ "indexed": false
721
+ },
722
+ {
723
+ "internalType": "contract ISablierComptroller",
724
+ "name": "newComptroller",
725
+ "type": "address",
726
+ "indexed": false
727
+ }
728
+ ],
729
+ "type": "event",
730
+ "name": "SetComptroller",
731
+ "anonymous": false
732
+ },
733
+ {
734
+ "inputs": [
735
+ { "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
736
+ { "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": true }
737
+ ],
738
+ "type": "event",
739
+ "name": "SetDefaultAdapter",
740
+ "anonymous": false
741
+ },
742
+ {
743
+ "inputs": [
744
+ { "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
745
+ { "internalType": "address", "name": "nativeToken", "type": "address", "indexed": false }
746
+ ],
747
+ "type": "event",
748
+ "name": "SetNativeToken",
749
+ "anonymous": false
750
+ },
751
+ {
752
+ "inputs": [
753
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
754
+ { "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address", "indexed": true },
755
+ { "internalType": "uint128", "name": "latestPrice", "type": "uint128", "indexed": false },
756
+ { "internalType": "uint40", "name": "syncedAt", "type": "uint40", "indexed": false }
757
+ ],
758
+ "type": "event",
759
+ "name": "SyncPriceFromOracle",
760
+ "anonymous": false
761
+ },
762
+ {
763
+ "inputs": [
764
+ { "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
765
+ { "internalType": "uint256", "name": "feeAmount", "type": "uint256", "indexed": false }
766
+ ],
767
+ "type": "event",
768
+ "name": "TransferFeesToComptroller",
769
+ "anonymous": false
770
+ },
771
+ {
772
+ "inputs": [
773
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
774
+ { "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": true },
775
+ { "internalType": "uint128", "name": "wrappedTokenUnstakedAmount", "type": "uint128", "indexed": false },
776
+ { "internalType": "uint128", "name": "amountReceivedFromAdapter", "type": "uint128", "indexed": false }
777
+ ],
778
+ "type": "event",
779
+ "name": "UnstakeFromAdapter",
780
+ "anonymous": false
781
+ },
782
+ {
783
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
784
+ "stateMutability": "view",
785
+ "type": "function",
786
+ "name": "calculateMinFeeWei",
787
+ "outputs": [{ "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }]
788
+ },
789
+ {
790
+ "inputs": [],
791
+ "stateMutability": "view",
792
+ "type": "function",
793
+ "name": "comptroller",
794
+ "outputs": [{ "internalType": "contract ISablierComptroller", "name": "", "type": "address" }]
795
+ },
796
+ {
797
+ "inputs": [
798
+ { "internalType": "contract IERC20", "name": "token", "type": "address" },
799
+ { "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address" },
800
+ { "internalType": "uint40", "name": "expiry", "type": "uint40" },
801
+ { "internalType": "uint128", "name": "targetPrice", "type": "uint128" }
802
+ ],
803
+ "stateMutability": "nonpayable",
804
+ "type": "function",
805
+ "name": "createVault",
806
+ "outputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }]
807
+ },
808
+ {
809
+ "inputs": [
810
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
811
+ { "internalType": "uint128", "name": "amount", "type": "uint128" }
812
+ ],
813
+ "stateMutability": "nonpayable",
814
+ "type": "function",
815
+ "name": "enter"
816
+ },
817
+ {
818
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
819
+ "stateMutability": "payable",
820
+ "type": "function",
821
+ "name": "enterWithNativeToken"
822
+ },
823
+ {
824
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
825
+ "stateMutability": "view",
826
+ "type": "function",
827
+ "name": "getAdapter",
828
+ "outputs": [{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address" }]
829
+ },
830
+ {
831
+ "inputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }],
832
+ "stateMutability": "view",
833
+ "type": "function",
834
+ "name": "getDefaultAdapterFor",
835
+ "outputs": [{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address" }]
836
+ },
837
+ {
838
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
839
+ "stateMutability": "view",
840
+ "type": "function",
841
+ "name": "getExpiry",
842
+ "outputs": [{ "internalType": "uint40", "name": "expiry", "type": "uint40" }]
843
+ },
844
+ {
845
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
846
+ "stateMutability": "view",
847
+ "type": "function",
848
+ "name": "getLastSyncedAt",
849
+ "outputs": [{ "internalType": "uint40", "name": "lastSyncedAt", "type": "uint40" }]
850
+ },
851
+ {
852
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
853
+ "stateMutability": "view",
854
+ "type": "function",
855
+ "name": "getLastSyncedPrice",
856
+ "outputs": [{ "internalType": "uint128", "name": "lastSyncedPrice", "type": "uint128" }]
857
+ },
858
+ {
859
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
860
+ "stateMutability": "view",
861
+ "type": "function",
862
+ "name": "getOracle",
863
+ "outputs": [{ "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address" }]
864
+ },
865
+ {
866
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
867
+ "stateMutability": "view",
868
+ "type": "function",
869
+ "name": "getShareToken",
870
+ "outputs": [{ "internalType": "contract IBobVaultShare", "name": "shareToken", "type": "address" }]
871
+ },
872
+ {
873
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
874
+ "stateMutability": "view",
875
+ "type": "function",
876
+ "name": "getTargetPrice",
877
+ "outputs": [{ "internalType": "uint128", "name": "targetPrice", "type": "uint128" }]
878
+ },
879
+ {
880
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
881
+ "stateMutability": "view",
882
+ "type": "function",
883
+ "name": "getUnderlyingToken",
884
+ "outputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }]
885
+ },
886
+ {
887
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
888
+ "stateMutability": "view",
889
+ "type": "function",
890
+ "name": "isStakedInAdapter",
891
+ "outputs": [{ "internalType": "bool", "name": "stakedInAdapter", "type": "bool" }]
892
+ },
893
+ {
894
+ "inputs": [],
895
+ "stateMutability": "view",
896
+ "type": "function",
897
+ "name": "nativeToken",
898
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
899
+ },
900
+ {
901
+ "inputs": [],
902
+ "stateMutability": "view",
903
+ "type": "function",
904
+ "name": "nextVaultId",
905
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
906
+ },
907
+ {
908
+ "inputs": [
909
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
910
+ { "internalType": "address", "name": "from", "type": "address" },
911
+ { "internalType": "address", "name": "to", "type": "address" },
912
+ { "internalType": "uint256", "name": "amount", "type": "uint256" },
913
+ { "internalType": "uint256", "name": "fromBalanceBefore", "type": "uint256" }
914
+ ],
915
+ "stateMutability": "nonpayable",
916
+ "type": "function",
917
+ "name": "onShareTransfer"
918
+ },
919
+ {
920
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
921
+ "stateMutability": "payable",
922
+ "type": "function",
923
+ "name": "redeem",
924
+ "outputs": [
925
+ { "internalType": "uint128", "name": "transferAmount", "type": "uint128" },
926
+ { "internalType": "uint128", "name": "feeAmountDeductedFromYield", "type": "uint128" }
927
+ ]
928
+ },
929
+ {
930
+ "inputs": [{ "internalType": "contract ISablierComptroller", "name": "newComptroller", "type": "address" }],
931
+ "stateMutability": "nonpayable",
932
+ "type": "function",
933
+ "name": "setComptroller"
934
+ },
935
+ {
936
+ "inputs": [
937
+ { "internalType": "contract IERC20", "name": "token", "type": "address" },
938
+ { "internalType": "contract ISablierBobAdapter", "name": "newAdapter", "type": "address" }
939
+ ],
940
+ "stateMutability": "nonpayable",
941
+ "type": "function",
942
+ "name": "setDefaultAdapter"
943
+ },
944
+ {
945
+ "inputs": [{ "internalType": "address", "name": "newNativeToken", "type": "address" }],
946
+ "stateMutability": "nonpayable",
947
+ "type": "function",
948
+ "name": "setNativeToken"
949
+ },
950
+ {
951
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
952
+ "stateMutability": "view",
953
+ "type": "function",
954
+ "name": "statusOf",
955
+ "outputs": [{ "internalType": "enum Bob.Status", "name": "status", "type": "uint8" }]
956
+ },
957
+ {
958
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
959
+ "stateMutability": "nonpayable",
960
+ "type": "function",
961
+ "name": "syncPriceFromOracle",
962
+ "outputs": [{ "internalType": "uint128", "name": "latestPrice", "type": "uint128" }]
963
+ },
964
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "transferFeesToComptroller" },
965
+ {
966
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
967
+ "stateMutability": "nonpayable",
968
+ "type": "function",
969
+ "name": "unstakeTokensViaAdapter",
970
+ "outputs": [{ "internalType": "uint128", "name": "amountReceivedFromAdapter", "type": "uint128" }]
971
+ }
972
+ ],
973
+ "devdoc": {
974
+ "kind": "dev",
975
+ "methods": {
976
+ "calculateMinFeeWei(uint256)": {
977
+ "details": "Reverts if `vaultId` references a null vault.",
978
+ "params": { "vaultId": "The vault ID for the query." }
979
+ },
980
+ "constructor": { "params": { "initialComptroller": "The address of the initial comptroller contract." } },
981
+ "createVault(address,address,uint40,uint128)": {
982
+ "details": "Emits a {CreateVault} event. Notes: - A new ERC-20 share token is deployed for each vault to represent user's share of deposits in the vault. - The default adapter for the token is copied as the vault adapter. Any change in the default adapter does not affect existing vaults. - Vault creator is responsible for choosing a valid oracle. They should use Chainlink oracles, as the integration is based on their API. Requirements: - `token` must not be the zero address. - `token` must implement `symbol()` and `decimals()` functions. - `expiry` must be in the future. - `oracle` must implement the Chainlink's {AggregatorV3Interface} interface. - `oracle` must return a positive price when `latestRoundData()` is called. - `oracle` must return a non-zero value no greater than 36 when `decimals()` is called. - `targetPrice` must not be zero or greater than the current price returned by the provided oracle.",
983
+ "params": {
984
+ "expiry": "The Unix timestamp when the vault expires.",
985
+ "oracle": "The address of the price feed oracle for the deposit token.",
986
+ "targetPrice": "The target price at which the vault settles, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.",
987
+ "token": "The address of the ERC-20 token that will be accepted for deposits."
988
+ },
989
+ "returns": { "vaultId": "The ID of the newly created vault." }
990
+ },
991
+ "enter(uint256,uint128)": {
992
+ "details": "Emits an {Enter} event. Notes: - If an adapter is configured for the vault, tokens are automatically staked for yield using the adapter. - Share tokens are minted 1:1 with the deposited amount. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - `amount` must be greater than zero. - The caller must have approved this contract to transfer `amount` tokens.",
993
+ "params": {
994
+ "amount": "The amount of tokens to deposit.",
995
+ "vaultId": "The ID of the vault to deposit into."
996
+ }
997
+ },
998
+ "enterWithNativeToken(uint256)": {
999
+ "details": "Emits an {Enter} event. Notes: - `msg.value` is used as the deposit amount. - See notes for {enter}. Requirements: - See requirements for {enter}. - `msg.value` must be greater than zero and must not exceed `type(uint128).max`.",
1000
+ "params": { "vaultId": "The ID of the vault to deposit into." }
1001
+ },
1002
+ "getAdapter(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1003
+ "getDefaultAdapterFor(address)": {
1004
+ "details": "Zero address means no adapter is set.",
1005
+ "params": { "token": "The ERC-20 token to query the default adapter for." },
1006
+ "returns": { "adapter": "The default adapter for the token." }
1007
+ },
1008
+ "getExpiry(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1009
+ "getLastSyncedAt(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1010
+ "getLastSyncedPrice(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1011
+ "getOracle(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1012
+ "getShareToken(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1013
+ "getTargetPrice(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1014
+ "getUnderlyingToken(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1015
+ "isStakedInAdapter(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1016
+ "onShareTransfer(uint256,address,address,uint256,uint256)": {
1017
+ "params": {
1018
+ "amount": "The number of share tokens being transferred.",
1019
+ "from": "The address transferring share tokens.",
1020
+ "fromBalanceBefore": "The number of share tokens the sender had before the transfer.",
1021
+ "to": "The address receiving share tokens.",
1022
+ "vaultId": "The ID of the vault."
1023
+ }
1024
+ },
1025
+ "redeem(uint256)": {
1026
+ "details": "Emits a {Redeem} event. Notes: - If no adapter is configured for the vault, a fee in the native token is applied. - If an adapter is configured for the vault, a fee, in the deposit token, is deducted from yield generated by the adapter. - If unstake via Lido withdrawal queue contract is triggered, redeem will revert until the withdrawal from the Lido queue is finalized. Requirements: - `vaultId` must not reference a null vault. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The share balance of the caller must be greater than zero. - If no adapter is configured for the vault, `msg.value` must be greater than or equal to the min fee required in the native token.",
1027
+ "params": { "vaultId": "The ID of the vault to redeem from." },
1028
+ "returns": {
1029
+ "feeAmountDeductedFromYield": "The fee amount deducted from the yield. Zero if no adapter is set.",
1030
+ "transferAmount": "The amount of tokens transferred to the caller, after fees are deducted (only applicable if adapter is set)."
1031
+ }
1032
+ },
1033
+ "setComptroller(address)": {
1034
+ "details": "Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}",
1035
+ "params": { "newComptroller": "The address of the new comptroller contract." }
1036
+ },
1037
+ "setDefaultAdapter(address,address)": {
1038
+ "details": "Emits a {SetDefaultAdapter} event. Notes: - This only affects future vaults. Requirements: - The caller must be the comptroller. - If new adapter is not zero address, it must implement {ISablierBobAdapter} interface.",
1039
+ "params": {
1040
+ "newAdapter": "The address of the new adapter.",
1041
+ "token": "The token address to set the adapter for."
1042
+ }
1043
+ },
1044
+ "setNativeToken(address)": {
1045
+ "details": "For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller. - `newNativeToken` must not be zero address. - The native token must not be already set.",
1046
+ "params": { "newNativeToken": "The address of the native token." }
1047
+ },
1048
+ "statusOf(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
1049
+ "syncPriceFromOracle(uint256)": {
1050
+ "details": "Emits a {SyncPriceFromOracle} event. Notes: - Oracle staleness is not validated on-chain when calling this function. Any price returned by the oracle is accepted. - Useful for syncing the price from oracle without calling {redeem} or {enter}. This function can be called by anyone to settle vault when the price is above the target price. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - The oracle must return a positive price.",
1051
+ "params": { "vaultId": "The ID of the vault to sync." },
1052
+ "returns": {
1053
+ "latestPrice": "The latest price fetched from the oracle, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1."
1054
+ }
1055
+ },
1056
+ "transferFeesToComptroller()": { "details": "Emits a {TransferFeesToComptroller} event." },
1057
+ "unstakeTokensViaAdapter(uint256)": {
1058
+ "details": "Emits an {UnstakeFromAdapter} event. Requirements: - `vaultId` must not reference a null vault. - The adapter set in the vault must not be zero address. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The vault must not have been unstaked already. - The amount staked must be greater than zero.",
1059
+ "params": { "vaultId": "The ID of the vault." },
1060
+ "returns": { "amountReceivedFromAdapter": "The amount of tokens received from the adapter." }
1061
+ }
1062
+ },
1063
+ "version": 1
1064
+ },
1065
+ "userdoc": {
1066
+ "kind": "user",
1067
+ "methods": {
1068
+ "calculateMinFeeWei(uint256)": {
1069
+ "notice": "Calculates the minimum fee in wei required to redeem from the given vault ID. Returns 0 for vaults with an adapter, since the fee is taken from yield generated."
1070
+ },
1071
+ "comptroller()": { "notice": "Retrieves the address of the comptroller contract." },
1072
+ "createVault(address,address,uint40,uint128)": {
1073
+ "notice": "Creates a new vault with the specified parameters."
1074
+ },
1075
+ "enter(uint256,uint128)": {
1076
+ "notice": "Enter into a vault by depositing tokens into it and minting share tokens to the caller."
1077
+ },
1078
+ "enterWithNativeToken(uint256)": {
1079
+ "notice": "Enter into a vault by depositing native token (such as ETH, POL, etc.) into it and minting share tokens to the caller."
1080
+ },
1081
+ "getAdapter(uint256)": { "notice": "Returns the adapter configured for a specific vault." },
1082
+ "getDefaultAdapterFor(address)": { "notice": "Returns the default adapter for a given token." },
1083
+ "getExpiry(uint256)": { "notice": "Returns the timestamp when the vault expires." },
1084
+ "getLastSyncedAt(uint256)": {
1085
+ "notice": "Returns the timestamp when the oracle price was last synced for a vault."
1086
+ },
1087
+ "getLastSyncedPrice(uint256)": { "notice": "Returns the oracle price stored for a vault." },
1088
+ "getOracle(uint256)": { "notice": "Returns the oracle address set for a vault." },
1089
+ "getShareToken(uint256)": { "notice": "Returns the address of the ERC-20 share token for a vault." },
1090
+ "getTargetPrice(uint256)": { "notice": "Returns the target price at which the vault settles." },
1091
+ "getUnderlyingToken(uint256)": { "notice": "Returns the ERC-20 token accepted for deposits in a vault." },
1092
+ "isStakedInAdapter(uint256)": { "notice": "Returns whether the vault tokens are staked in an adapter." },
1093
+ "nativeToken()": {
1094
+ "notice": "Retrieves the address of the ERC-20 interface of the native token, if it exists."
1095
+ },
1096
+ "nextVaultId()": { "notice": "Counter for vault IDs, incremented every time a new vault is created." },
1097
+ "onShareTransfer(uint256,address,address,uint256,uint256)": {
1098
+ "notice": "Called by adapter when share tokens for a given vault are transferred between users. This is required for accounting of the yield generated by the adapter. Requirements: - The caller must be the share token contract stored in the given vault. - The calculated wstETH transfer amount must not be zero."
1099
+ },
1100
+ "redeem(uint256)": { "notice": "Redeem the tokens by burning user shares." },
1101
+ "setComptroller(address)": { "notice": "Sets the comptroller to a new address." },
1102
+ "setDefaultAdapter(address,address)": { "notice": "Sets the default adapter for a specific token." },
1103
+ "setNativeToken(address)": { "notice": "Sets the native token address. Once set, it cannot be changed." },
1104
+ "statusOf(uint256)": { "notice": "Returns the vault status." },
1105
+ "syncPriceFromOracle(uint256)": {
1106
+ "notice": "Fetches the latest price from the oracle set for a vault and updates it in the vault storage."
1107
+ },
1108
+ "transferFeesToComptroller()": { "notice": "Transfers the fees to the comptroller contract." },
1109
+ "unstakeTokensViaAdapter(uint256)": { "notice": "Unstake all tokens from the adapter for a given vault." }
1110
+ },
1111
+ "version": 1
1112
+ }
1113
+ },
1114
+ "settings": {
1115
+ "remappings": [
1116
+ "@arbitrum/=node_modules/@arbitrum/",
1117
+ "@chainlink/=node_modules/@chainlink/",
1118
+ "@eth-optimism/=node_modules/@eth-optimism/",
1119
+ "@offchainlabs/=node_modules/@offchainlabs/",
1120
+ "@openzeppelin/=node_modules/@openzeppelin/",
1121
+ "@prb/=node_modules/@prb/",
1122
+ "@sablier/=node_modules/@sablier/",
1123
+ "@scroll-tech/=node_modules/@scroll-tech/",
1124
+ "@zksync/=node_modules/@zksync/",
1125
+ "forge-std/=node_modules/forge-std/"
1126
+ ],
1127
+ "optimizer": { "enabled": true, "runs": 1000000 },
1128
+ "metadata": { "bytecodeHash": "ipfs" },
1129
+ "compilationTarget": { "src/SablierBob.sol": "SablierBob" },
1130
+ "evmVersion": "shanghai",
1131
+ "libraries": {},
1132
+ "viaIR": true
1133
+ },
1134
+ "sources": {
1135
+ "node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol": {
1136
+ "keccak256": "0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0",
1137
+ "urls": [
1138
+ "bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9",
1139
+ "dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS"
1140
+ ],
1141
+ "license": "MIT"
1142
+ },
1143
+ "node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": {
1144
+ "keccak256": "0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7",
1145
+ "urls": [
1146
+ "bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b",
1147
+ "dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"
1148
+ ],
1149
+ "license": "MIT"
1150
+ },
1151
+ "node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": {
1152
+ "keccak256": "0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724",
1153
+ "urls": [
1154
+ "bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a",
1155
+ "dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"
1156
+ ],
1157
+ "license": "MIT"
1158
+ },
1159
+ "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": {
1160
+ "keccak256": "0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c",
1161
+ "urls": [
1162
+ "bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba",
1163
+ "dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"
1164
+ ],
1165
+ "license": "MIT"
1166
+ },
1167
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
1168
+ "keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
1169
+ "urls": [
1170
+ "bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
1171
+ "dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
1172
+ ],
1173
+ "license": "MIT"
1174
+ },
1175
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
1176
+ "keccak256": "0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b",
1177
+ "urls": [
1178
+ "bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b",
1179
+ "dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"
1180
+ ],
1181
+ "license": "MIT"
1182
+ },
1183
+ "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
1184
+ "keccak256": "0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a",
1185
+ "urls": [
1186
+ "bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a",
1187
+ "dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x"
1188
+ ],
1189
+ "license": "MIT"
1190
+ },
1191
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
1192
+ "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
1193
+ "urls": [
1194
+ "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
1195
+ "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
1196
+ ],
1197
+ "license": "MIT"
1198
+ },
1199
+ "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
1200
+ "keccak256": "0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330",
1201
+ "urls": [
1202
+ "bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf",
1203
+ "dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"
1204
+ ],
1205
+ "license": "MIT"
1206
+ },
1207
+ "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
1208
+ "keccak256": "0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5",
1209
+ "urls": [
1210
+ "bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508",
1211
+ "dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB"
1212
+ ],
1213
+ "license": "MIT"
1214
+ },
1215
+ "node_modules/@openzeppelin/contracts/utils/Context.sol": {
1216
+ "keccak256": "0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2",
1217
+ "urls": [
1218
+ "bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12",
1219
+ "dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"
1220
+ ],
1221
+ "license": "MIT"
1222
+ },
1223
+ "node_modules/@openzeppelin/contracts/utils/Panic.sol": {
1224
+ "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
1225
+ "urls": [
1226
+ "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
1227
+ "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
1228
+ ],
1229
+ "license": "MIT"
1230
+ },
1231
+ "node_modules/@openzeppelin/contracts/utils/ReentrancyGuard.sol": {
1232
+ "keccak256": "0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3",
1233
+ "urls": [
1234
+ "bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a",
1235
+ "dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"
1236
+ ],
1237
+ "license": "MIT"
1238
+ },
1239
+ "node_modules/@openzeppelin/contracts/utils/Strings.sol": {
1240
+ "keccak256": "0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae",
1241
+ "urls": [
1242
+ "bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6",
1243
+ "dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb"
1244
+ ],
1245
+ "license": "MIT"
1246
+ },
1247
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
1248
+ "keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8",
1249
+ "urls": [
1250
+ "bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621",
1251
+ "dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"
1252
+ ],
1253
+ "license": "MIT"
1254
+ },
1255
+ "node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
1256
+ "keccak256": "0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6",
1257
+ "urls": [
1258
+ "bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3",
1259
+ "dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"
1260
+ ],
1261
+ "license": "MIT"
1262
+ },
1263
+ "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
1264
+ "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54",
1265
+ "urls": [
1266
+ "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8",
1267
+ "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"
1268
+ ],
1269
+ "license": "MIT"
1270
+ },
1271
+ "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
1272
+ "keccak256": "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3",
1273
+ "urls": [
1274
+ "bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03",
1275
+ "dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"
1276
+ ],
1277
+ "license": "MIT"
1278
+ },
1279
+ "node_modules/@prb/math/src/Common.sol": {
1280
+ "keccak256": "0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99",
1281
+ "urls": [
1282
+ "bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05",
1283
+ "dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42"
1284
+ ],
1285
+ "license": "MIT"
1286
+ },
1287
+ "node_modules/@prb/math/src/UD60x18.sol": {
1288
+ "keccak256": "0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48",
1289
+ "urls": [
1290
+ "bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9",
1291
+ "dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp"
1292
+ ],
1293
+ "license": "MIT"
1294
+ },
1295
+ "node_modules/@prb/math/src/sd1x18/Casting.sol": {
1296
+ "keccak256": "0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c",
1297
+ "urls": [
1298
+ "bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11",
1299
+ "dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu"
1300
+ ],
1301
+ "license": "MIT"
1302
+ },
1303
+ "node_modules/@prb/math/src/sd1x18/Constants.sol": {
1304
+ "keccak256": "0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8",
1305
+ "urls": [
1306
+ "bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab",
1307
+ "dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos"
1308
+ ],
1309
+ "license": "MIT"
1310
+ },
1311
+ "node_modules/@prb/math/src/sd1x18/Errors.sol": {
1312
+ "keccak256": "0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6",
1313
+ "urls": [
1314
+ "bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca",
1315
+ "dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE"
1316
+ ],
1317
+ "license": "MIT"
1318
+ },
1319
+ "node_modules/@prb/math/src/sd1x18/ValueType.sol": {
1320
+ "keccak256": "0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0",
1321
+ "urls": [
1322
+ "bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353",
1323
+ "dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6"
1324
+ ],
1325
+ "license": "MIT"
1326
+ },
1327
+ "node_modules/@prb/math/src/sd21x18/Casting.sol": {
1328
+ "keccak256": "0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36",
1329
+ "urls": [
1330
+ "bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2",
1331
+ "dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd"
1332
+ ],
1333
+ "license": "MIT"
1334
+ },
1335
+ "node_modules/@prb/math/src/sd21x18/Constants.sol": {
1336
+ "keccak256": "0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4",
1337
+ "urls": [
1338
+ "bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396",
1339
+ "dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3"
1340
+ ],
1341
+ "license": "MIT"
1342
+ },
1343
+ "node_modules/@prb/math/src/sd21x18/Errors.sol": {
1344
+ "keccak256": "0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a",
1345
+ "urls": [
1346
+ "bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee",
1347
+ "dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML"
1348
+ ],
1349
+ "license": "MIT"
1350
+ },
1351
+ "node_modules/@prb/math/src/sd21x18/ValueType.sol": {
1352
+ "keccak256": "0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092",
1353
+ "urls": [
1354
+ "bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880",
1355
+ "dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf"
1356
+ ],
1357
+ "license": "MIT"
1358
+ },
1359
+ "node_modules/@prb/math/src/sd59x18/Casting.sol": {
1360
+ "keccak256": "0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39",
1361
+ "urls": [
1362
+ "bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d",
1363
+ "dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n"
1364
+ ],
1365
+ "license": "MIT"
1366
+ },
1367
+ "node_modules/@prb/math/src/sd59x18/Constants.sol": {
1368
+ "keccak256": "0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a",
1369
+ "urls": [
1370
+ "bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f",
1371
+ "dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si"
1372
+ ],
1373
+ "license": "MIT"
1374
+ },
1375
+ "node_modules/@prb/math/src/sd59x18/Errors.sol": {
1376
+ "keccak256": "0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2",
1377
+ "urls": [
1378
+ "bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf",
1379
+ "dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk"
1380
+ ],
1381
+ "license": "MIT"
1382
+ },
1383
+ "node_modules/@prb/math/src/sd59x18/Helpers.sol": {
1384
+ "keccak256": "0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716",
1385
+ "urls": [
1386
+ "bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed",
1387
+ "dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD"
1388
+ ],
1389
+ "license": "MIT"
1390
+ },
1391
+ "node_modules/@prb/math/src/sd59x18/Math.sol": {
1392
+ "keccak256": "0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84",
1393
+ "urls": [
1394
+ "bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462",
1395
+ "dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD"
1396
+ ],
1397
+ "license": "MIT"
1398
+ },
1399
+ "node_modules/@prb/math/src/sd59x18/ValueType.sol": {
1400
+ "keccak256": "0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d",
1401
+ "urls": [
1402
+ "bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919",
1403
+ "dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb"
1404
+ ],
1405
+ "license": "MIT"
1406
+ },
1407
+ "node_modules/@prb/math/src/ud21x18/Casting.sol": {
1408
+ "keccak256": "0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65",
1409
+ "urls": [
1410
+ "bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09",
1411
+ "dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL"
1412
+ ],
1413
+ "license": "MIT"
1414
+ },
1415
+ "node_modules/@prb/math/src/ud21x18/Constants.sol": {
1416
+ "keccak256": "0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601",
1417
+ "urls": [
1418
+ "bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60",
1419
+ "dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV"
1420
+ ],
1421
+ "license": "MIT"
1422
+ },
1423
+ "node_modules/@prb/math/src/ud21x18/Errors.sol": {
1424
+ "keccak256": "0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415",
1425
+ "urls": [
1426
+ "bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80",
1427
+ "dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq"
1428
+ ],
1429
+ "license": "MIT"
1430
+ },
1431
+ "node_modules/@prb/math/src/ud21x18/ValueType.sol": {
1432
+ "keccak256": "0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25",
1433
+ "urls": [
1434
+ "bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af",
1435
+ "dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU"
1436
+ ],
1437
+ "license": "MIT"
1438
+ },
1439
+ "node_modules/@prb/math/src/ud2x18/Casting.sol": {
1440
+ "keccak256": "0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6",
1441
+ "urls": [
1442
+ "bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae",
1443
+ "dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL"
1444
+ ],
1445
+ "license": "MIT"
1446
+ },
1447
+ "node_modules/@prb/math/src/ud2x18/Constants.sol": {
1448
+ "keccak256": "0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc",
1449
+ "urls": [
1450
+ "bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9",
1451
+ "dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC"
1452
+ ],
1453
+ "license": "MIT"
1454
+ },
1455
+ "node_modules/@prb/math/src/ud2x18/Errors.sol": {
1456
+ "keccak256": "0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd",
1457
+ "urls": [
1458
+ "bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437",
1459
+ "dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i"
1460
+ ],
1461
+ "license": "MIT"
1462
+ },
1463
+ "node_modules/@prb/math/src/ud2x18/ValueType.sol": {
1464
+ "keccak256": "0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0",
1465
+ "urls": [
1466
+ "bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41",
1467
+ "dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs"
1468
+ ],
1469
+ "license": "MIT"
1470
+ },
1471
+ "node_modules/@prb/math/src/ud60x18/Casting.sol": {
1472
+ "keccak256": "0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6",
1473
+ "urls": [
1474
+ "bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780",
1475
+ "dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr"
1476
+ ],
1477
+ "license": "MIT"
1478
+ },
1479
+ "node_modules/@prb/math/src/ud60x18/Constants.sol": {
1480
+ "keccak256": "0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90",
1481
+ "urls": [
1482
+ "bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b",
1483
+ "dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5"
1484
+ ],
1485
+ "license": "MIT"
1486
+ },
1487
+ "node_modules/@prb/math/src/ud60x18/Conversions.sol": {
1488
+ "keccak256": "0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2",
1489
+ "urls": [
1490
+ "bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932",
1491
+ "dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY"
1492
+ ],
1493
+ "license": "MIT"
1494
+ },
1495
+ "node_modules/@prb/math/src/ud60x18/Errors.sol": {
1496
+ "keccak256": "0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044",
1497
+ "urls": [
1498
+ "bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8",
1499
+ "dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6"
1500
+ ],
1501
+ "license": "MIT"
1502
+ },
1503
+ "node_modules/@prb/math/src/ud60x18/Helpers.sol": {
1504
+ "keccak256": "0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268",
1505
+ "urls": [
1506
+ "bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5",
1507
+ "dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr"
1508
+ ],
1509
+ "license": "MIT"
1510
+ },
1511
+ "node_modules/@prb/math/src/ud60x18/Math.sol": {
1512
+ "keccak256": "0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc",
1513
+ "urls": [
1514
+ "bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6",
1515
+ "dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr"
1516
+ ],
1517
+ "license": "MIT"
1518
+ },
1519
+ "node_modules/@prb/math/src/ud60x18/ValueType.sol": {
1520
+ "keccak256": "0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3",
1521
+ "urls": [
1522
+ "bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47",
1523
+ "dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n"
1524
+ ],
1525
+ "license": "MIT"
1526
+ },
1527
+ "node_modules/@sablier/evm-utils/src/Comptrollerable.sol": {
1528
+ "keccak256": "0xf48c3ba6a78b9f9f5735d72d07a10a8363d573c82251b5e53a0c7ce29ed1a921",
1529
+ "urls": [
1530
+ "bzz-raw://d62e6057b2202ee016aeec50b0ecd7e04324957237f1de53fb2a97c092b577cc",
1531
+ "dweb:/ipfs/QmaXSJam62Z7nkT8T1aN79fiAX2aQARHwufvXNRqFshFab"
1532
+ ],
1533
+ "license": "GPL-3.0-or-later"
1534
+ },
1535
+ "node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol": {
1536
+ "keccak256": "0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26",
1537
+ "urls": [
1538
+ "bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126",
1539
+ "dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4"
1540
+ ],
1541
+ "license": "GPL-3.0-or-later"
1542
+ },
1543
+ "node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol": {
1544
+ "keccak256": "0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522",
1545
+ "urls": [
1546
+ "bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b",
1547
+ "dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW"
1548
+ ],
1549
+ "license": "GPL-3.0-or-later"
1550
+ },
1551
+ "node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol": {
1552
+ "keccak256": "0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825",
1553
+ "urls": [
1554
+ "bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4",
1555
+ "dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV"
1556
+ ],
1557
+ "license": "GPL-3.0-or-later"
1558
+ },
1559
+ "node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol": {
1560
+ "keccak256": "0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba",
1561
+ "urls": [
1562
+ "bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c",
1563
+ "dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX"
1564
+ ],
1565
+ "license": "GPL-3.0-or-later"
1566
+ },
1567
+ "node_modules/@sablier/evm-utils/src/libraries/Errors.sol": {
1568
+ "keccak256": "0xc9a0fbcd6d582054420a32c538204ac7adb789320c6564f278ccf45baf4485c8",
1569
+ "urls": [
1570
+ "bzz-raw://a4da46b25df4fe89ce9f0315e1ef6561554f72b2dc7edbc43bdcdf9d65e8b709",
1571
+ "dweb:/ipfs/QmNW4VtuPSsLULst92GJmmcTCRHu4n5ndU9Jb4MbVes1jp"
1572
+ ],
1573
+ "license": "GPL-3.0-or-later"
1574
+ },
1575
+ "node_modules/@sablier/evm-utils/src/libraries/SafeOracle.sol": {
1576
+ "keccak256": "0x1c72d85e4731e46bf81504fad0f45f943527b8f03f4f9b54d4442ee124acd66d",
1577
+ "urls": [
1578
+ "bzz-raw://67caf33268b58f9e0c62131e24fb323a3b17b11dd2f7f5243e96fda0d75f017c",
1579
+ "dweb:/ipfs/QmeyuCM1RP1SF91QXhYcKFEHXdtYB5KLCLCmoa1fHJKjJw"
1580
+ ],
1581
+ "license": "GPL-3.0-or-later"
1582
+ },
1583
+ "node_modules/@sablier/evm-utils/src/libraries/SafeTokenSymbol.sol": {
1584
+ "keccak256": "0xdef58d124694ad1b61f24790a2693f21ee13edf21ee978b0461eab90e0f274ba",
1585
+ "urls": [
1586
+ "bzz-raw://cd22ee4d798eab721640750e91a1960c8044879dcb838d32256f6faddfe8e71d",
1587
+ "dweb:/ipfs/QmX7fWdLVm9zajfpsUeDrTDdJCZSuAVwXAbv1rgfDw5btT"
1588
+ ],
1589
+ "license": "GPL-3.0-or-later"
1590
+ },
1591
+ "src/BobVaultShare.sol": {
1592
+ "keccak256": "0x2b7da3845c067907963bbbc8053053ed03c21bd2354d1261982bb130d4cd9da4",
1593
+ "urls": [
1594
+ "bzz-raw://564315a1e60ca6f99746a8121b15cec5868aabfaa489a247d75b518836635ad8",
1595
+ "dweb:/ipfs/QmNmTGc8kgfY8wVZdSxUbHm4RRgonD6cBXKkBdKbN5hMQT"
1596
+ ],
1597
+ "license": "GPL-3.0-or-later"
1598
+ },
1599
+ "src/SablierBob.sol": {
1600
+ "keccak256": "0xc3205a5f73000164460cd66edd4890e3bd716b8bbd826280b06af61757f1b22b",
1601
+ "urls": [
1602
+ "bzz-raw://657e87cc9fbdda4e1241fae53404cb4b3294bbb32d7c1f8c3c44e53213ee856f",
1603
+ "dweb:/ipfs/QmXpqw1u5wSGdz51ZXme88s5a8iMgiuto8Cbpeie8QMqmB"
1604
+ ],
1605
+ "license": "GPL-3.0-or-later"
1606
+ },
1607
+ "src/abstracts/SablierBobState.sol": {
1608
+ "keccak256": "0x91cdd72d695a1117a873b9bee9d5cdd475c456208d1cb338f2622ce03324ae9e",
1609
+ "urls": [
1610
+ "bzz-raw://9028672fc234f405af19e2f23944e0795d08791dab6ccb3f87bda4d746c77f65",
1611
+ "dweb:/ipfs/QmWaPiaBc5FPJhrdB3oyQ7g4rV9mBtGkNsnrDqL4dhZwm5"
1612
+ ],
1613
+ "license": "GPL-3.0-or-later"
1614
+ },
1615
+ "src/interfaces/IBobVaultShare.sol": {
1616
+ "keccak256": "0x7e91f71800b33ce26fa757b8d74d0e89aaf2de6ee50260a706c4c26029ae4c22",
1617
+ "urls": [
1618
+ "bzz-raw://18e85a71eef03972eb19a277ca025c645b18aa768c03a2b1e7d81de9eeabe731",
1619
+ "dweb:/ipfs/QmbjGtkps9KvG6XBysNLB9eBoY5E47ixkTDtN8cYYRzA6b"
1620
+ ],
1621
+ "license": "GPL-3.0-or-later"
1622
+ },
1623
+ "src/interfaces/ISablierBob.sol": {
1624
+ "keccak256": "0x2c21ee1f24d0443a9daf745ef2f5ccfe339120f19484565d31a46a1af09e8edc",
1625
+ "urls": [
1626
+ "bzz-raw://1dce1fb1847e2c9fb562f9e5c8cb71d9a9d5a3b4a56ba9575ff0c7d5240b3af9",
1627
+ "dweb:/ipfs/QmZbFLtUYRV9TTw6PTsJmvhrD5BwautoUbLbj5WoVYiTPP"
1628
+ ],
1629
+ "license": "GPL-3.0-or-later"
1630
+ },
1631
+ "src/interfaces/ISablierBobAdapter.sol": {
1632
+ "keccak256": "0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921",
1633
+ "urls": [
1634
+ "bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e",
1635
+ "dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK"
1636
+ ],
1637
+ "license": "GPL-3.0-or-later"
1638
+ },
1639
+ "src/interfaces/ISablierBobState.sol": {
1640
+ "keccak256": "0xc216153d326b2b02f62fe2a02edea29a194bf850d6c5d4d1d1c618cd68bfdd5c",
1641
+ "urls": [
1642
+ "bzz-raw://0e1c2c6b58098552b70febc6a4876c2b89fb894994049c840882c346d7e094ee",
1643
+ "dweb:/ipfs/QmWxBShVcnGCrjHfBhPH15cdLA7mtmN6QaSBSM7ZWae85Q"
1644
+ ],
1645
+ "license": "GPL-3.0-or-later"
1646
+ },
1647
+ "src/interfaces/external/IWETH9.sol": {
1648
+ "keccak256": "0x1c3b4200172a52de8c9271172239a9cf41a197df289586480e2bfc6e14fe5bb3",
1649
+ "urls": [
1650
+ "bzz-raw://bf4c6da85bf6214d4281915625c208cef5afec832414c2c2d4473b9217112ef0",
1651
+ "dweb:/ipfs/QmTTdUP6dXAot7dXJy7Zsbew3yA6VRHNgKGwR2fSXLoxUq"
1652
+ ],
1653
+ "license": "GPL-3.0-or-later"
1654
+ },
1655
+ "src/libraries/Errors.sol": {
1656
+ "keccak256": "0x6c053ba4f029f4835883cf2fecd2b8adb1371b8e9820f5a3fdf679fd864ac682",
1657
+ "urls": [
1658
+ "bzz-raw://e1d64e7f44f0e8dcb3c6842a1baa119c3dd4b1b14f29c07c4c93b4185f0a566e",
1659
+ "dweb:/ipfs/QmUjf9S6JduDhmpD8VriK8bMRYXD8m7XMRohhnE91mjDc9"
1660
+ ],
1661
+ "license": "GPL-3.0-or-later"
1662
+ },
1663
+ "src/types/Bob.sol": {
1664
+ "keccak256": "0xf156bfc6b369fd9006e47e3a2531108e515878f60977987def9069b6148cbba3",
1665
+ "urls": [
1666
+ "bzz-raw://5e2d1205de5dc31ffc76045c05b5fc9ad927346ff3a6be9ee7ee9dcd6c28bb1a",
1667
+ "dweb:/ipfs/QmeuUm54PyaS2NZ728zy3Cqnsm5BZxaGAZdQrBY85Tejdx"
1668
+ ],
1669
+ "license": "GPL-3.0-or-later"
1670
+ },
1671
+ "src/types/Escrow.sol": {
1672
+ "keccak256": "0xc4c65957eab4cfd50d7806778ca69366aebe22e98736315c62fa36bda5cddba6",
1673
+ "urls": [
1674
+ "bzz-raw://ef915ead3c018cd9c629fd3738eba614dfa0499492d25162129e9374607756c1",
1675
+ "dweb:/ipfs/QmenoUAVQFvKU4XVNm9Pm7RxvrTgBBJFXF6uNjqHMV1wAU"
1676
+ ],
1677
+ "license": "GPL-3.0-or-later"
1678
+ }
1679
+ },
1680
+ "version": 1
1681
+ },
1682
+ "id": 81
1683
+ }