@ensuro/core 2.0.1 → 2.1.0-beta1
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.
- package/build/contracts/EToken.sol/EToken.json +58 -2
- package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +193 -9
- package/build/contracts/interfaces/ILPWhitelist.sol/ILPWhitelist.json +29 -0
- package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +2 -2
- package/contracts/EToken.sol +40 -4
- package/contracts/LPManualWhitelist.sol +97 -11
- package/contracts/interfaces/ILPWhitelist.sol +14 -0
- package/js/deploy.js +21 -12
- package/js/test-utils.js +2 -2
- package/package.json +1 -1
|
@@ -107,13 +107,35 @@
|
|
|
107
107
|
"type": "address"
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
+
"components": [
|
|
111
|
+
{
|
|
112
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
113
|
+
"name": "deposit",
|
|
114
|
+
"type": "uint8"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
118
|
+
"name": "withdraw",
|
|
119
|
+
"type": "uint8"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
123
|
+
"name": "sendTransfer",
|
|
124
|
+
"type": "uint8"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
128
|
+
"name": "receiveTransfer",
|
|
129
|
+
"type": "uint8"
|
|
130
|
+
}
|
|
131
|
+
],
|
|
110
132
|
"indexed": false,
|
|
111
|
-
"internalType": "
|
|
133
|
+
"internalType": "struct LPManualWhitelist.WhitelistStatus",
|
|
112
134
|
"name": "whitelisted",
|
|
113
|
-
"type": "
|
|
135
|
+
"type": "tuple"
|
|
114
136
|
}
|
|
115
137
|
],
|
|
116
|
-
"name": "
|
|
138
|
+
"name": "LPWhitelistStatusChanged",
|
|
117
139
|
"type": "event"
|
|
118
140
|
},
|
|
119
141
|
{
|
|
@@ -207,6 +229,19 @@
|
|
|
207
229
|
"stateMutability": "view",
|
|
208
230
|
"type": "function"
|
|
209
231
|
},
|
|
232
|
+
{
|
|
233
|
+
"inputs": [],
|
|
234
|
+
"name": "LP_WHITELIST_ADMIN_ROLE",
|
|
235
|
+
"outputs": [
|
|
236
|
+
{
|
|
237
|
+
"internalType": "bytes32",
|
|
238
|
+
"name": "",
|
|
239
|
+
"type": "bytes32"
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"stateMutability": "view",
|
|
243
|
+
"type": "function"
|
|
244
|
+
},
|
|
210
245
|
{
|
|
211
246
|
"inputs": [],
|
|
212
247
|
"name": "LP_WHITELIST_ROLE",
|
|
@@ -271,7 +306,7 @@
|
|
|
271
306
|
},
|
|
272
307
|
{
|
|
273
308
|
"internalType": "address",
|
|
274
|
-
"name": "",
|
|
309
|
+
"name": "providerFrom",
|
|
275
310
|
"type": "address"
|
|
276
311
|
},
|
|
277
312
|
{
|
|
@@ -296,6 +331,35 @@
|
|
|
296
331
|
"stateMutability": "view",
|
|
297
332
|
"type": "function"
|
|
298
333
|
},
|
|
334
|
+
{
|
|
335
|
+
"inputs": [
|
|
336
|
+
{
|
|
337
|
+
"internalType": "contract IEToken",
|
|
338
|
+
"name": "",
|
|
339
|
+
"type": "address"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"internalType": "address",
|
|
343
|
+
"name": "provider",
|
|
344
|
+
"type": "address"
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"internalType": "uint256",
|
|
348
|
+
"name": "",
|
|
349
|
+
"type": "uint256"
|
|
350
|
+
}
|
|
351
|
+
],
|
|
352
|
+
"name": "acceptsWithdrawal",
|
|
353
|
+
"outputs": [
|
|
354
|
+
{
|
|
355
|
+
"internalType": "bool",
|
|
356
|
+
"name": "",
|
|
357
|
+
"type": "bool"
|
|
358
|
+
}
|
|
359
|
+
],
|
|
360
|
+
"stateMutability": "view",
|
|
361
|
+
"type": "function"
|
|
362
|
+
},
|
|
299
363
|
{
|
|
300
364
|
"inputs": [],
|
|
301
365
|
"name": "currency",
|
|
@@ -311,6 +375,69 @@
|
|
|
311
375
|
},
|
|
312
376
|
{
|
|
313
377
|
"inputs": [],
|
|
378
|
+
"name": "getWhitelistDefaults",
|
|
379
|
+
"outputs": [
|
|
380
|
+
{
|
|
381
|
+
"components": [
|
|
382
|
+
{
|
|
383
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
384
|
+
"name": "deposit",
|
|
385
|
+
"type": "uint8"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
389
|
+
"name": "withdraw",
|
|
390
|
+
"type": "uint8"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
394
|
+
"name": "sendTransfer",
|
|
395
|
+
"type": "uint8"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
399
|
+
"name": "receiveTransfer",
|
|
400
|
+
"type": "uint8"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"internalType": "struct LPManualWhitelist.WhitelistStatus",
|
|
404
|
+
"name": "",
|
|
405
|
+
"type": "tuple"
|
|
406
|
+
}
|
|
407
|
+
],
|
|
408
|
+
"stateMutability": "view",
|
|
409
|
+
"type": "function"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"inputs": [
|
|
413
|
+
{
|
|
414
|
+
"components": [
|
|
415
|
+
{
|
|
416
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
417
|
+
"name": "deposit",
|
|
418
|
+
"type": "uint8"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
422
|
+
"name": "withdraw",
|
|
423
|
+
"type": "uint8"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
427
|
+
"name": "sendTransfer",
|
|
428
|
+
"type": "uint8"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
432
|
+
"name": "receiveTransfer",
|
|
433
|
+
"type": "uint8"
|
|
434
|
+
}
|
|
435
|
+
],
|
|
436
|
+
"internalType": "struct LPManualWhitelist.WhitelistStatus",
|
|
437
|
+
"name": "defaultStatus",
|
|
438
|
+
"type": "tuple"
|
|
439
|
+
}
|
|
440
|
+
],
|
|
314
441
|
"name": "initialize",
|
|
315
442
|
"outputs": [],
|
|
316
443
|
"stateMutability": "nonpayable",
|
|
@@ -380,6 +507,41 @@
|
|
|
380
507
|
"stateMutability": "view",
|
|
381
508
|
"type": "function"
|
|
382
509
|
},
|
|
510
|
+
{
|
|
511
|
+
"inputs": [
|
|
512
|
+
{
|
|
513
|
+
"components": [
|
|
514
|
+
{
|
|
515
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
516
|
+
"name": "deposit",
|
|
517
|
+
"type": "uint8"
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
521
|
+
"name": "withdraw",
|
|
522
|
+
"type": "uint8"
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
526
|
+
"name": "sendTransfer",
|
|
527
|
+
"type": "uint8"
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
531
|
+
"name": "receiveTransfer",
|
|
532
|
+
"type": "uint8"
|
|
533
|
+
}
|
|
534
|
+
],
|
|
535
|
+
"internalType": "struct LPManualWhitelist.WhitelistStatus",
|
|
536
|
+
"name": "newStatus",
|
|
537
|
+
"type": "tuple"
|
|
538
|
+
}
|
|
539
|
+
],
|
|
540
|
+
"name": "setWhitelistDefaults",
|
|
541
|
+
"outputs": [],
|
|
542
|
+
"stateMutability": "nonpayable",
|
|
543
|
+
"type": "function"
|
|
544
|
+
},
|
|
383
545
|
{
|
|
384
546
|
"inputs": [
|
|
385
547
|
{
|
|
@@ -445,9 +607,31 @@
|
|
|
445
607
|
"type": "address"
|
|
446
608
|
},
|
|
447
609
|
{
|
|
448
|
-
"
|
|
449
|
-
|
|
450
|
-
|
|
610
|
+
"components": [
|
|
611
|
+
{
|
|
612
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
613
|
+
"name": "deposit",
|
|
614
|
+
"type": "uint8"
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
618
|
+
"name": "withdraw",
|
|
619
|
+
"type": "uint8"
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
623
|
+
"name": "sendTransfer",
|
|
624
|
+
"type": "uint8"
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"internalType": "enum LPManualWhitelist.WhitelistOptions",
|
|
628
|
+
"name": "receiveTransfer",
|
|
629
|
+
"type": "uint8"
|
|
630
|
+
}
|
|
631
|
+
],
|
|
632
|
+
"internalType": "struct LPManualWhitelist.WhitelistStatus",
|
|
633
|
+
"name": "newStatus",
|
|
634
|
+
"type": "tuple"
|
|
451
635
|
}
|
|
452
636
|
],
|
|
453
637
|
"name": "whitelistAddress",
|
|
@@ -456,8 +640,8 @@
|
|
|
456
640
|
"type": "function"
|
|
457
641
|
}
|
|
458
642
|
],
|
|
459
|
-
"bytecode": "0x60c0604052306080523480156200001557600080fd5b5060405162001acd38038062001acd833981016040819052620000389162000197565b806001600160a01b038116620000bb5760405162461bcd60e51b815260206004820152603660248201527f506f6c696379506f6f6c436f6d706f6e656e743a20706f6c696379506f6f6c2060448201527f63616e6e6f74206265207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b620000c5620000d8565b6001600160a01b031660a05250620001c9565b600054610100900460ff1615620001425760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000b2565b60005460ff908116101562000195576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001aa57600080fd5b81516001600160a01b0381168114620001c257600080fd5b9392505050565b60805160a051611898620002356000396000818161025f015281816105a60152818161094e01528181610a7801528181610c0701528181610cf4015261102e015260008181610472015281816104bb015281816106b8015281816106f8015261078701526118986000f3fe60806040526004361061011f5760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461038a578063aad4148c1461039f578063b9a45aac146103d3578063e5a6b10f146103f3578063f67b2bad1461040857600080fd5b80635b494dd5146102bf5780635c975abb146102f35780635fcdca371461030b5780637ed5acfa146103485780638129fc1c1461037557600080fd5b8063468a8c9f116100e7578063468a8c9f146101e05780634a47a3e01461021c5780634d15eb03146102505780634f1ef2861461029757806352d1902d146102aa57600080fd5b806301ffc9a71461012457806324ea54f4146101595780633659cfe61461018957806337ee20dd146101ab5780633f4ba83a146101cb575b600080fd5b34801561013057600080fd5b5061014461013f366004611469565b61043c565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b5061017b60008051602061184383398151915281565b604051908152602001610150565b34801561019557600080fd5b506101a96101a43660046114a8565b610468565b005b3480156101b757600080fd5b506101446101c63660046114c5565b610550565b3480156101d757600080fd5b506101a9610574565b3480156101ec57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610150565b34801561022857600080fd5b5061017b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561025c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610150565b6101a96102a536600461151c565b6106ae565b3480156102b657600080fd5b5061017b61077a565b3480156102cb57600080fd5b5061017b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102ff57600080fd5b5060975460ff16610144565b34801561031757600080fd5b506101446103263660046115e0565b506001600160a01b0316600090815260fb602052604090205460ff1692915050565b34801561035457600080fd5b5061035f6201518081565b60405164ffffffffff9091168152602001610150565b34801561038157600080fd5b506101a961082d565b34801561039657600080fd5b506101a961093d565b3480156103ab57600080fd5b5061017b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103df57600080fd5b506101a96103ee366004611631565b610a55565b3480156103ff57600080fd5b5061027f610c03565b34801561041457600080fd5b5061017b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061044782610c8c565b8061046257506001600160e01b03198216633411f57560e11b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104b95760405162461bcd60e51b81526004016104b09061166f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105026000805160206117fc833981519152546001600160a01b031690565b6001600160a01b0316146105285760405162461bcd60e51b81526004016104b0906116bb565b61053181610cc2565b6040805160008082526020820190925261054d91839190610df9565b50565b6001600160a01b038216600090815260fb602052604090205460ff165b9392505050565b6000805160206118438339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190611707565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506106aa610f64565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106f65760405162461bcd60e51b81526004016104b09061166f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073f6000805160206117fc833981519152546001600160a01b031690565b6001600160a01b0316146107655760405162461bcd60e51b81526004016104b0906116bb565b61076e82610cc2565b6106aa82826001610df9565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104b0565b506000805160206117fc83398151915290565b600054610100900460ff161580801561084d5750600054600160ff909116105b806108675750303b158015610867575060005460ff166001145b6108ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b0565b6000805460ff1916600117905580156108ed576000805461ff0019166101001790555b6108f5610fb6565b801561054d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206118438339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190611707565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a3557600080fd5b505afa158015610a49573d6000803e3d6000fd5b5050505061054d610fef565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190611707565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610bfe576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c879190611707565b905090565b60006001600160e01b031982166301ffc9a760e01b148061046257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206118438339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d749190611707565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610dd857600080fd5b505afa158015610dec573d6000803e3d6000fd5b50505050610bfe8361102c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e2c57610bfe8361111d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e86575060408051601f3d908101601f19168201909252610e8391810190611724565b60015b610ee95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104b0565b6000805160206117fc8339815191528114610f585760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104b0565b50610bfe8383836111b9565b610f6c6111e4565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16610fdd5760405162461bcd60e51b81526004016104b09061173d565b610fe561122d565b610fed611254565b565b610ff7611283565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f993390565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190611707565b6001600160a01b03161461054d5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104b0565b6001600160a01b0381163b61118a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104b0565b6000805160206117fc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111c2836112c9565b6000825111806111cf5750805b15610bfe576111de8383611309565b50505050565b60975460ff16610fed5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104b0565b600054610100900460ff16610fed5760405162461bcd60e51b81526004016104b09061173d565b600054610100900460ff1661127b5760405162461bcd60e51b81526004016104b09061173d565b610fed6113fd565b60975460ff1615610fed5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104b0565b6112d28161111d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113715760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104b0565b600080846001600160a01b03168460405161138c91906117ac565b600060405180830381855af49150503d80600081146113c7576040519150601f19603f3d011682016040523d82523d6000602084013e6113cc565b606091505b50915091506113f4828260405180606001604052806027815260200161181c60279139611430565b95945050505050565b600054610100900460ff166114245760405162461bcd60e51b81526004016104b09061173d565b6097805460ff19169055565b6060831561143f57508161056d565b82511561144f5782518084602001fd5b8160405162461bcd60e51b81526004016104b091906117c8565b60006020828403121561147b57600080fd5b81356001600160e01b03198116811461056d57600080fd5b6001600160a01b038116811461054d57600080fd5b6000602082840312156114ba57600080fd5b813561056d81611493565b6000806000606084860312156114da57600080fd5b83356114e581611493565b925060208401356114f581611493565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561152f57600080fd5b823561153a81611493565b9150602083013567ffffffffffffffff8082111561155757600080fd5b818501915085601f83011261156b57600080fd5b81358181111561157d5761157d611506565b604051601f8201601f19908116603f011681019083821181831017156115a5576115a5611506565b816040528281528860208487010111156115be57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156115f657600080fd5b843561160181611493565b9350602085013561161181611493565b9250604085013561162181611493565b9396929550929360600135925050565b6000806040838503121561164457600080fd5b823561164f81611493565b91506020830135801515811461166457600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561171957600080fd5b815161056d81611493565b60006020828403121561173657600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156117a357818101518382015260200161178b565b50506000910152565b600082516117be818460208701611788565b9190910192915050565b60208152600082518060208401526117e7816040850160208701611788565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f7ed9332d11c18419a12719d24f2df48604b013f26abc7013c359a104deab22764736f6c63430008100033",
|
|
460
|
-
"deployedBytecode": "0x60806040526004361061011f5760003560e01c80635b494dd5116100a05780638456cb59116100645780638456cb591461038a578063aad4148c1461039f578063b9a45aac146103d3578063e5a6b10f146103f3578063f67b2bad1461040857600080fd5b80635b494dd5146102bf5780635c975abb146102f35780635fcdca371461030b5780637ed5acfa146103485780638129fc1c1461037557600080fd5b8063468a8c9f116100e7578063468a8c9f146101e05780634a47a3e01461021c5780634d15eb03146102505780634f1ef2861461029757806352d1902d146102aa57600080fd5b806301ffc9a71461012457806324ea54f4146101595780633659cfe61461018957806337ee20dd146101ab5780633f4ba83a146101cb575b600080fd5b34801561013057600080fd5b5061014461013f366004611469565b61043c565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b5061017b60008051602061184383398151915281565b604051908152602001610150565b34801561019557600080fd5b506101a96101a43660046114a8565b610468565b005b3480156101b757600080fd5b506101446101c63660046114c5565b610550565b3480156101d757600080fd5b506101a9610574565b3480156101ec57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff16602083015201610150565b34801561022857600080fd5b5061017b7fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b34801561025c57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610150565b6101a96102a536600461151c565b6106ae565b3480156102b657600080fd5b5061017b61077a565b3480156102cb57600080fd5b5061017b7f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b3480156102ff57600080fd5b5060975460ff16610144565b34801561031757600080fd5b506101446103263660046115e0565b506001600160a01b0316600090815260fb602052604090205460ff1692915050565b34801561035457600080fd5b5061035f6201518081565b60405164ffffffffff9091168152602001610150565b34801561038157600080fd5b506101a961082d565b34801561039657600080fd5b506101a961093d565b3480156103ab57600080fd5b5061017b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b3480156103df57600080fd5b506101a96103ee366004611631565b610a55565b3480156103ff57600080fd5b5061027f610c03565b34801561041457600080fd5b5061017b7fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b600061044782610c8c565b8061046257506001600160e01b03198216633411f57560e11b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104b95760405162461bcd60e51b81526004016104b09061166f565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105026000805160206117fc833981519152546001600160a01b031690565b6001600160a01b0316146105285760405162461bcd60e51b81526004016104b0906116bb565b61053181610cc2565b6040805160008082526020820190925261054d91839190610df9565b50565b6001600160a01b038216600090815260fb602052604090205460ff165b9392505050565b6000805160206118438339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106269190611707565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506106aa610f64565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106f65760405162461bcd60e51b81526004016104b09061166f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073f6000805160206117fc833981519152546001600160a01b031690565b6001600160a01b0316146107655760405162461bcd60e51b81526004016104b0906116bb565b61076e82610cc2565b6106aa82826001610df9565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461081a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104b0565b506000805160206117fc83398151915290565b600054610100900460ff161580801561084d5750600054600160ff909116105b806108675750303b158015610867575060005460ff166001145b6108ca5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104b0565b6000805460ff1916600117905580156108ed576000805461ff0019166101001790555b6108f5610fb6565b801561054d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000805160206118438339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ce9190611707565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526001606482015260840160006040518083038186803b158015610a3557600080fd5b505afa158015610a49573d6000803e3d6000fd5b5050505061054d610fef565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190611707565b6001600160a01b0316635ff57d2030833360405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526000606482015260840160006040518083038186803b158015610b5f57600080fd5b505afa158015610b73573d6000803e3d6000fd5b5050506001600160a01b038416600090815260fb602052604090205460ff161515831515149050610bfe576001600160a01b038316600081815260fb6020908152604091829020805460ff19168615159081179091558251938452908301527f8ef34cf5cfaa6ce2f80f1ba2912749c912a8b07c4fb8e9949e928e7cb592918f910160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c879190611707565b905090565b60006001600160e01b031982166301ffc9a760e01b148061046257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206118438339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d749190611707565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b158015610dd857600080fd5b505afa158015610dec573d6000803e3d6000fd5b50505050610bfe8361102c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610e2c57610bfe8361111d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e86575060408051601f3d908101601f19168201909252610e8391810190611724565b60015b610ee95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104b0565b6000805160206117fc8339815191528114610f585760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104b0565b50610bfe8383836111b9565b610f6c6111e4565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff16610fdd5760405162461bcd60e51b81526004016104b09061173d565b610fe561122d565b610fed611254565b565b610ff7611283565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f993390565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b89190611707565b6001600160a01b03161461054d5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b60648201526084016104b0565b6001600160a01b0381163b61118a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104b0565b6000805160206117fc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6111c2836112c9565b6000825111806111cf5750805b15610bfe576111de8383611309565b50505050565b60975460ff16610fed5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016104b0565b600054610100900460ff16610fed5760405162461bcd60e51b81526004016104b09061173d565b600054610100900460ff1661127b5760405162461bcd60e51b81526004016104b09061173d565b610fed6113fd565b60975460ff1615610fed5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016104b0565b6112d28161111d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6113715760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016104b0565b600080846001600160a01b03168460405161138c91906117ac565b600060405180830381855af49150503d80600081146113c7576040519150601f19603f3d011682016040523d82523d6000602084013e6113cc565b606091505b50915091506113f4828260405180606001604052806027815260200161181c60279139611430565b95945050505050565b600054610100900460ff166114245760405162461bcd60e51b81526004016104b09061173d565b6097805460ff19169055565b6060831561143f57508161056d565b82511561144f5782518084602001fd5b8160405162461bcd60e51b81526004016104b091906117c8565b60006020828403121561147b57600080fd5b81356001600160e01b03198116811461056d57600080fd5b6001600160a01b038116811461054d57600080fd5b6000602082840312156114ba57600080fd5b813561056d81611493565b6000806000606084860312156114da57600080fd5b83356114e581611493565b925060208401356114f581611493565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561152f57600080fd5b823561153a81611493565b9150602083013567ffffffffffffffff8082111561155757600080fd5b818501915085601f83011261156b57600080fd5b81358181111561157d5761157d611506565b604051601f8201601f19908116603f011681019083821181831017156115a5576115a5611506565b816040528281528860208487010111156115be57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080608085870312156115f657600080fd5b843561160181611493565b9350602085013561161181611493565b9250604085013561162181611493565b9396929550929360600135925050565b6000806040838503121561164457600080fd5b823561164f81611493565b91506020830135801515811461166457600080fd5b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561171957600080fd5b815161056d81611493565b60006020828403121561173657600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b838110156117a357818101518382015260200161178b565b50506000910152565b600082516117be818460208701611788565b9190910192915050565b60208152600082518060208401526117e7816040850160208701611788565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a2646970667358221220f7ed9332d11c18419a12719d24f2df48604b013f26abc7013c359a104deab22764736f6c63430008100033",
|
|
643
|
+
"bytecode": "0x60c0604052306080523480156200001557600080fd5b506040516200258938038062002589833981016040819052620000389162000197565b806001600160a01b038116620000bb5760405162461bcd60e51b815260206004820152603660248201527f506f6c696379506f6f6c436f6d706f6e656e743a20706f6c696379506f6f6c2060448201527f63616e6e6f74206265207a65726f20616464726573730000000000000000000060648201526084015b60405180910390fd5b620000c5620000d8565b6001600160a01b031660a05250620001c9565b600054610100900460ff1615620001425760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608401620000b2565b60005460ff908116101562000195576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600060208284031215620001aa57600080fd5b81516001600160a01b0381168114620001c257600080fd5b9392505050565b60805160a05161234d6200023c600039600081816102bf015281816106a501528181610a4001528181610b4d01528181610e3b01528181610f3e01528181611149015261168e0152600081816105220152818161056b015281816107b7015281816107f70152610886015261234d6000f3fe60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b95565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122f883398151915281565b3480156101f557600080fd5b50610209610204366004611bd4565b610518565b005b34801561021757600080fd5b50610170610226366004611bf1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c79565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611d21565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d8a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bf1565b610ca3565b34801561041957600080fd5b50610209610428366004611dc0565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611dc0565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e57565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e65565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b26000805160206122b1833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611eb1565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611ddc565b0361065257506000805260fb6020526000805160206122918339815191525460ff165b60015b81600281111561066757610667611ddc565b149150505b9392505050565b6000805160206122f88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611efd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e65565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6000805160206122b1833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611eb1565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b506000805160206122b183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611ddc565b0361098a57506000805260fb6020526000805160206122918339815191525462010000900460ff165b600181600281111561099e5761099e611ddc565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611ddc565b03610a0e57506000805260fb602052600080516020612291833981519152546301000000900460ff165b6001816002811115610a2257610a22611ddc565b149150505b949350505050565b6000805160206122f88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611efd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611f1a565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611efd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611f1a565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f51565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611ddc565b0361065257506000805260fb60205260008051602061229183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611efd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611f1a565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f51565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611efd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122918339815191528054829060ff16600281111561102957611029611ddc565b600281111561103a5761103a611ddc565b81528154602090910190610100900460ff16600281111561105d5761105d611ddc565b600281111561106e5761106e611ddc565b8152815460209091019062010000900460ff16600281111561109257611092611ddc565b60028111156110a3576110a3611ddc565b815281546020909101906301000000900460ff1660028111156110c8576110c8611ddc565b60028111156110d9576110d9611ddc565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122f88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611efd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361177d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fd6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b6000805160206122b183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e838383611819565b6113c1611844565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61141361188f565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611ddc565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611ddc565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611ddc565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611ddc565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fef565b600054610100900460ff166115605760405162461bcd60e51b81526004016105609061200c565b6115686118d5565b6105fd8161190c565b60006115806020830183612057565b600281111561159157611591611ddc565b141580156115c0575060006115ac6040830160208401612057565b60028111156115bd576115bd611ddc565b14155b80156115ed575060006115d96060830160408401612057565b60028111156115ea576115ea611ddc565b14155b801561161a575060006116066080830160608401612057565b600281111561161757611617611ddc565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611efd565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610560565b6001600160a01b0381163b6117ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b6000805160206122b183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6118228361199f565b60008251118061182f5750805b15610c9e5761183e83836119df565b50505050565b60975460ff1661188d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561188d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118fc5760405162461bcd60e51b81526004016105609061200c565b611904611ad3565b61188d611afa565b600054610100900460ff166119335760405162461bcd60e51b81526004016105609061200c565b61193c81611571565b6000805260fb6020528060008051602061229183398151915261195f82826120f3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611994929190612199565b60405180910390a150565b6119a88161177d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611a475760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610560565b600080846001600160a01b031684604051611a629190612241565b600060405180830381855af49150503d8060008114611a9d576040519150601f19603f3d011682016040523d82523d6000602084013e611aa2565b606091505b5091509150611aca82826040518060600160405280602781526020016122d160279139611b29565b95945050505050565b600054610100900460ff1661188d5760405162461bcd60e51b81526004016105609061200c565b600054610100900460ff16611b215760405162461bcd60e51b81526004016105609061200c565b61188d611b62565b60608315611b3857508161066c565b825115611b485782518084602001fd5b8160405162461bcd60e51b8152600401610560919061225d565b600054610100900460ff16611b895760405162461bcd60e51b81526004016105609061200c565b6097805460ff19169055565b600060208284031215611ba757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611be657600080fd5b813561066c81611bbf565b600080600060608486031215611c0657600080fd5b8335611c1181611bbf565b92506020840135611c2181611bbf565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c7157611c71611c32565b604052919050565b60008060408385031215611c8c57600080fd5b8235611c9781611bbf565b915060208381013567ffffffffffffffff80821115611cb557600080fd5b818601915086601f830112611cc957600080fd5b813581811115611cdb57611cdb611c32565b611ced601f8201601f19168501611c48565b91508082528784828501011115611d0357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d3757600080fd5b8435611d4281611bbf565b93506020850135611d5281611bbf565b92506040850135611d6281611bbf565b9396929550929360600135925050565b600060808284031215611d8457600080fd5b50919050565b60008060a08385031215611d9d57600080fd5b8235611da881611bbf565b9150611db78460208501611d72565b90509250929050565b600060808284031215611dd257600080fd5b61066c8383611d72565b634e487b7160e01b600052602160045260246000fd5b60038110611e1057634e487b7160e01b600052602160045260246000fd5b9052565b611e1f828251611df2565b6020810151611e316020840182611df2565b506040810151611e446040840182611df2565b506060810151610c9e6060840182611df2565b608081016105128284611e14565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611f0f57600080fd5b815161066c81611bbf565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f6357600080fd5b6040516080810181811067ffffffffffffffff82111715611f8657611f86611c32565b6040528235611f9481611f44565b81526020830135611fa481611f44565b60208201526040830135611fb781611f44565b60408201526060830135611fca81611f44565b60608201529392505050565b600060208284031215611fe857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611e14565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561206957600080fd5b813561066c81611f44565b6000813561051281611f44565b6003821061209f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120d757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120fe81611f44565b6003811061211c57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561213b81611f44565b6003811061215957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061218461217e60408401612074565b82612081565b6107a961219360608401612074565b826120b9565b6001600160a01b038316815260a0810182356121b481611f44565b6121c16020840182611df2565b5060208301356121d081611f44565b6121dd6040840182611df2565b5060408301356121ec81611f44565b6121f96060840182611df2565b50606083013561220881611f44565b6122156080840182611df2565b509392505050565b60005b83811015612238578181015183820152602001612220565b50506000910152565b6000825161225381846020870161221d565b9190910192915050565b602081526000825180602084015261227c81604085016020870161221d565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209d8e7e225e8fda000c166f5f0311960220729ec38657290252ef8ccd38865ad764736f6c63430008100033",
|
|
644
|
+
"deployedBytecode": "0x60806040526004361061014b5760003560e01c80635c975abb116100b6578063aa2f92fb1161006f578063aa2f92fb1461040d578063aad4148c1461042d578063cf273ca614610461578063e5a6b10f14610481578063ed716bf414610496578063f67b2bad146104b857600080fd5b80635c975abb146103535780635fcdca371461036b5780637ed5acfa1461038b5780638456cb59146103b8578063896ce44c146103cd5780639051c763146103ed57600080fd5b8063468a8c9f11610108578063468a8c9f146102405780634a47a3e01461027c5780634d15eb03146102b05780634f1ef286146102f757806352d1902d1461030a5780635b494dd51461031f57600080fd5b806301ffc9a7146101505780631e3b9c5e1461018557806324ea54f4146101c75780633659cfe6146101e957806337ee20dd1461020b5780633f4ba83a1461022b575b600080fd5b34801561015c57600080fd5b5061017061016b366004611b95565b6104ec565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b506101b97f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b60405190815260200161017c565b3480156101d357600080fd5b506101b96000805160206122f883398151915281565b3480156101f557600080fd5b50610209610204366004611bd4565b610518565b005b34801561021757600080fd5b50610170610226366004611bf1565b610600565b34801561023757600080fd5b50610209610673565b34801561024c57600080fd5b5060c9546040805164ffffffffff831681526501000000000090920466ffffffffffffff1660208301520161017c565b34801561028857600080fd5b506101b97fa82e22387fca439f316d78ca566f383218ab8ae1b3e830178c9c82cbd16749c081565b3480156102bc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161017c565b610209610305366004611c79565b6107ad565b34801561031657600080fd5b506101b9610879565b34801561032b57600080fd5b506101b97f5ec196419322369c6bac572d883f4d990ae5ec82f7d93cdf89b85dbb05b63c2781565b34801561035f57600080fd5b5060975460ff16610170565b34801561037757600080fd5b50610170610386366004611d21565b61092c565b34801561039757600080fd5b506103a26201518081565b60405164ffffffffff909116815260200161017c565b3480156103c457600080fd5b50610209610a2f565b3480156103d957600080fd5b506102096103e8366004611d8a565b610b2a565b3480156103f957600080fd5b50610170610408366004611bf1565b610ca3565b34801561041957600080fd5b50610209610428366004611dc0565b610d05565b34801561043957600080fd5b506101b97fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b34801561046d57600080fd5b5061020961047c366004611dc0565b610e18565b34801561048d57600080fd5b506102df610f3a565b3480156104a257600080fd5b506104ab610fc3565b60405161017c9190611e57565b3480156104c457600080fd5b506101b97fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb281565b60006104f7826110e1565b8061051257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105695760405162461bcd60e51b815260040161056090611e65565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105b26000805160206122b1833981519152546001600160a01b031690565b6001600160a01b0316146105d85760405162461bcd60e51b815260040161056090611eb1565b6105e181611117565b604080516000808252602082019092526105fd9183919061124e565b50565b6001600160a01b038216600090815260fb602052604081205460ff168181600281111561062f5761062f611ddc565b0361065257506000805260fb6020526000805160206122918339815191525460ff165b60015b81600281111561066757610667611ddc565b149150505b9392505050565b6000805160206122f88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190611efd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561078957600080fd5b505afa15801561079d573d6000803e3d6000fd5b505050506107a96113b9565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107f55760405162461bcd60e51b815260040161056090611e65565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083e6000805160206122b1833981519152546001600160a01b031690565b6001600160a01b0316146108645760405162461bcd60e51b815260040161056090611eb1565b61086d82611117565b6107a98282600161124e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109195760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610560565b506000805160206122b183398151915290565b6001600160a01b038316600090815260fb602052604081205462010000900460ff168181600281111561096157610961611ddc565b0361098a57506000805260fb6020526000805160206122918339815191525462010000900460ff165b600181600281111561099e5761099e611ddc565b146109ad576000915050610a27565b506001600160a01b038316600090815260fb60205260408120546301000000900460ff16908160028111156109e4576109e4611ddc565b03610a0e57506000805260fb602052600080516020612291833981519152546301000000900460ff165b6001816002811115610a2257610a22611ddc565b149150505b949350505050565b6000805160206122f88339815191527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190611efd565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b8152600401610af29493929190611f1a565b60006040518083038186803b158015610b0a57600080fd5b505afa158015610b1e573d6000803e3d6000fd5b505050506105fd61140b565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611efd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610bff9493929190611f1a565b60006040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b5050506001600160a01b0384169050610c865760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c74730000006044820152606401610560565b610c9e83610c9936859003850185611f51565b611448565b505050565b6001600160a01b038216600090815260fb6020526040812054610100900460ff1681816002811115610cd757610cd7611ddc565b0361065257506000805260fb60205260008051602061229183398151915254610100900460ff166001610655565b600054610100900460ff1615808015610d255750600054600160ff909116105b80610d3f5750303b158015610d3f575060005460ff166001145b610da25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610560565b6000805460ff191660011790558015610dc5576000805461ff0019166101001790555b610dce82611539565b80156107a9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebb9190611efd565b6001600160a01b0316635ff57d2030833360006040518563ffffffff1660e01b8152600401610eed9493929190611f1a565b60006040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b50505050610f2682611571565b6107a96000610c9936859003850185611f51565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190611efd565b905090565b610fee6040805160808101909152806000815260200160008152602001600081526020016000905290565b6000805260fb60205260408051608081019091526000805160206122918339815191528054829060ff16600281111561102957611029611ddc565b600281111561103a5761103a611ddc565b81528154602090910190610100900460ff16600281111561105d5761105d611ddc565b600281111561106e5761106e611ddc565b8152815460209091019062010000900460ff16600281111561109257611092611ddc565b60028111156110a3576110a3611ddc565b815281546020909101906301000000900460ff1660028111156110c8576110c8611ddc565b60028111156110d9576110d9611ddc565b905250919050565b60006001600160e01b031982166301ffc9a760e01b148061051257506001600160e01b03198216634d15eb0360e01b1492915050565b6000805160206122f88339815191527fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611efd565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a480820192600092909190829003018186803b15801561122d57600080fd5b505afa158015611241573d6000803e3d6000fd5b50505050610c9e8361168c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561128157610c9e8361177d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112db575060408051601f3d908101601f191682019092526112d891810190611fd6565b60015b61133e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610560565b6000805160206122b183398151915281146113ad5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610560565b50610c9e838383611819565b6113c1611844565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61141361188f565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113ee3390565b6001600160a01b038216600090815260fb602052604090208151815483929190829060ff1916600183600281111561148257611482611ddc565b021790555060208201518154829061ff0019166101008360028111156114aa576114aa611ddc565b021790555060408201518154829062ff00001916620100008360028111156114d4576114d4611ddc565b021790555060608201518154829063ff0000001916630100000083600281111561150057611500611ddc565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610e0c929190611fef565b600054610100900460ff166115605760405162461bcd60e51b81526004016105609061200c565b6115686118d5565b6105fd8161190c565b60006115806020830183612057565b600281111561159157611591611ddc565b141580156115c0575060006115ac6040830160208401612057565b60028111156115bd576115bd611ddc565b14155b80156115ed575060006115d96060830160408401612057565b60028111156115ea576115ea611ddc565b14155b801561161a575060006116066080830160608401612057565b600281111561161757611617611ddc565b14155b6105fd5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e73000000006064820152608401610560565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117189190611efd565b6001600160a01b0316146105fd5760405162461bcd60e51b815260206004820152602660248201527f43616e27742075706772616465206368616e67696e672074686520506f6c696360448201526579506f6f6c2160d01b6064820152608401610560565b6001600160a01b0381163b6117ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610560565b6000805160206122b183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6118228361199f565b60008251118061182f5750805b15610c9e5761183e83836119df565b50505050565b60975460ff1661188d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b565b60975460ff161561188d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b600054610100900460ff166118fc5760405162461bcd60e51b81526004016105609061200c565b611904611ad3565b61188d611afa565b600054610100900460ff166119335760405162461bcd60e51b81526004016105609061200c565b61193c81611571565b6000805260fb6020528060008051602061229183398151915261195f82826120f3565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a600082604051611994929190612199565b60405180910390a150565b6119a88161177d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611a475760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610560565b600080846001600160a01b031684604051611a629190612241565b600060405180830381855af49150503d8060008114611a9d576040519150601f19603f3d011682016040523d82523d6000602084013e611aa2565b606091505b5091509150611aca82826040518060600160405280602781526020016122d160279139611b29565b95945050505050565b600054610100900460ff1661188d5760405162461bcd60e51b81526004016105609061200c565b600054610100900460ff16611b215760405162461bcd60e51b81526004016105609061200c565b61188d611b62565b60608315611b3857508161066c565b825115611b485782518084602001fd5b8160405162461bcd60e51b8152600401610560919061225d565b600054610100900460ff16611b895760405162461bcd60e51b81526004016105609061200c565b6097805460ff19169055565b600060208284031215611ba757600080fd5b81356001600160e01b03198116811461066c57600080fd5b6001600160a01b03811681146105fd57600080fd5b600060208284031215611be657600080fd5b813561066c81611bbf565b600080600060608486031215611c0657600080fd5b8335611c1181611bbf565b92506020840135611c2181611bbf565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c7157611c71611c32565b604052919050565b60008060408385031215611c8c57600080fd5b8235611c9781611bbf565b915060208381013567ffffffffffffffff80821115611cb557600080fd5b818601915086601f830112611cc957600080fd5b813581811115611cdb57611cdb611c32565b611ced601f8201601f19168501611c48565b91508082528784828501011115611d0357600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215611d3757600080fd5b8435611d4281611bbf565b93506020850135611d5281611bbf565b92506040850135611d6281611bbf565b9396929550929360600135925050565b600060808284031215611d8457600080fd5b50919050565b60008060a08385031215611d9d57600080fd5b8235611da881611bbf565b9150611db78460208501611d72565b90509250929050565b600060808284031215611dd257600080fd5b61066c8383611d72565b634e487b7160e01b600052602160045260246000fd5b60038110611e1057634e487b7160e01b600052602160045260246000fd5b9052565b611e1f828251611df2565b6020810151611e316020840182611df2565b506040810151611e446040840182611df2565b506060810151610c9e6060840182611df2565b608081016105128284611e14565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600060208284031215611f0f57600080fd5b815161066c81611bbf565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b600381106105fd57600080fd5b600060808284031215611f6357600080fd5b6040516080810181811067ffffffffffffffff82111715611f8657611f86611c32565b6040528235611f9481611f44565b81526020830135611fa481611f44565b60208201526040830135611fb781611f44565b60408201526060830135611fca81611f44565b60608201529392505050565b600060208284031215611fe857600080fd5b5051919050565b6001600160a01b038316815260a0810161066c6020830184611e14565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561206957600080fd5b813561066c81611f44565b6000813561051281611f44565b6003821061209f57634e487b7160e01b600052602160045260246000fd5b805462ff00008360101b1662ff0000198216178255505050565b600382106120d757634e487b7160e01b600052602160045260246000fd5b805463ff0000008360181b1663ff000000198216178255505050565b81356120fe81611f44565b6003811061211c57634e487b7160e01b600052602160045260246000fd5b815460ff821691508160ff198216178355602084013561213b81611f44565b6003811061215957634e487b7160e01b600052602160045260246000fd5b61ff008160081b168361ffff1984161717845550505061218461217e60408401612074565b82612081565b6107a961219360608401612074565b826120b9565b6001600160a01b038316815260a0810182356121b481611f44565b6121c16020840182611df2565b5060208301356121d081611f44565b6121dd6040840182611df2565b5060408301356121ec81611f44565b6121f96060840182611df2565b50606083013561220881611f44565b6122156080840182611df2565b509392505050565b60005b83811015612238578181015183820152602001612220565b50506000910152565b6000825161225381846020870161221d565b9190910192915050565b602081526000825180602084015261227c81604085016020870161221d565b601f01601f1916919091016040019291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656455435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212209d8e7e225e8fda000c166f5f0311960220729ec38657290252ef8ccd38865ad764736f6c63430008100033",
|
|
461
645
|
"linkReferences": {},
|
|
462
646
|
"deployedLinkReferences": {}
|
|
463
647
|
}
|
|
@@ -65,6 +65,35 @@
|
|
|
65
65
|
],
|
|
66
66
|
"stateMutability": "view",
|
|
67
67
|
"type": "function"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"inputs": [
|
|
71
|
+
{
|
|
72
|
+
"internalType": "contract IEToken",
|
|
73
|
+
"name": "etoken",
|
|
74
|
+
"type": "address"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"internalType": "address",
|
|
78
|
+
"name": "provider",
|
|
79
|
+
"type": "address"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"internalType": "uint256",
|
|
83
|
+
"name": "amount",
|
|
84
|
+
"type": "uint256"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"name": "acceptsWithdrawal",
|
|
88
|
+
"outputs": [
|
|
89
|
+
{
|
|
90
|
+
"internalType": "bool",
|
|
91
|
+
"name": "",
|
|
92
|
+
"type": "bool"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"stateMutability": "view",
|
|
96
|
+
"type": "function"
|
|
68
97
|
}
|
|
69
98
|
],
|
|
70
99
|
"bytecode": "0x",
|
|
@@ -173,8 +173,8 @@
|
|
|
173
173
|
"type": "function"
|
|
174
174
|
}
|
|
175
175
|
],
|
|
176
|
-
"bytecode": "
|
|
177
|
-
"deployedBytecode": "
|
|
176
|
+
"bytecode": "0x608060405234801561001057600080fd5b506101dc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638b98dad01161008c578063a23a166111610066578063a23a16611461016e578063a88ecaa21461017c578063c1bd03a61461018a578063fef87f0b1461019857600080fd5b80638b98dad014610144578063933c234b1461015257806396047c991461016057600080fd5b806311f34418146100d45780632bac8ca3146100ff578063362466de1461010d578063731e0f7f1461011b5780637874bf9814610129578063800915a514610136575b600080fd5b6100e2632dd9c4bb60e21b81565b6040516001600160e01b0319909116815260200160405180910390f35b6100e263272b8c4760e01b81565b6100e2634d15eb0360e01b81565b6100e263a219a02560e01b81565b6100e2629d19af60e21b81565b6100e263f8722d8960e01b81565b6100e263da40804f60e01b81565b6100e2637965db0b60e01b81565b6100e26380ac58cd60e01b81565b6100e26301ffc9a760e01b81565b6100e2631e670a9760e21b81565b6100e26336372b0760e01b81565b6100e263191a7d6b60e11b8156fea2646970667358221220cddc8659dab91b70f841d76d5d02f97f233e334f038d92a7f054271ff1b35f1d64736f6c63430008100033",
|
|
177
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638b98dad01161008c578063a23a166111610066578063a23a16611461016e578063a88ecaa21461017c578063c1bd03a61461018a578063fef87f0b1461019857600080fd5b80638b98dad014610144578063933c234b1461015257806396047c991461016057600080fd5b806311f34418146100d45780632bac8ca3146100ff578063362466de1461010d578063731e0f7f1461011b5780637874bf9814610129578063800915a514610136575b600080fd5b6100e2632dd9c4bb60e21b81565b6040516001600160e01b0319909116815260200160405180910390f35b6100e263272b8c4760e01b81565b6100e2634d15eb0360e01b81565b6100e263a219a02560e01b81565b6100e2629d19af60e21b81565b6100e263f8722d8960e01b81565b6100e263da40804f60e01b81565b6100e2637965db0b60e01b81565b6100e26380ac58cd60e01b81565b6100e26301ffc9a760e01b81565b6100e2631e670a9760e21b81565b6100e26336372b0760e01b81565b6100e263191a7d6b60e11b8156fea2646970667358221220cddc8659dab91b70f841d76d5d02f97f233e334f038d92a7f054271ff1b35f1d64736f6c63430008100033",
|
|
178
178
|
"linkReferences": {},
|
|
179
179
|
"deployedLinkReferences": {}
|
|
180
180
|
}
|
package/contracts/EToken.sol
CHANGED
|
@@ -220,6 +220,36 @@ contract EToken is Reserve, IERC20Metadata, IEToken {
|
|
|
220
220
|
return _tsScaled.getScale(tokenInterestRate()).rayMul(principalBalance.wadToRay()).rayToWad();
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
+
// Methods following AAVE's IScaledBalanceToken, to simplify future integrations
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* @dev Returns the scaled balance of the user. The scaled balance is the sum of all the
|
|
227
|
+
* updated stored balance divided by the EToken's scale index
|
|
228
|
+
* @param user The user whose balance is calculated
|
|
229
|
+
* @return The scaled balance of the user
|
|
230
|
+
**/
|
|
231
|
+
function scaledBalanceOf(address user) external view returns (uint256) {
|
|
232
|
+
return _balances[user];
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @dev Returns the scaled balance of the user and the scaled total supply.
|
|
237
|
+
* @param user The address of the user
|
|
238
|
+
* @return The scaled balance of the user
|
|
239
|
+
* @return The scaled balance and the scaled total supply
|
|
240
|
+
**/
|
|
241
|
+
function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256) {
|
|
242
|
+
return (_balances[user], uint256(_tsScaled.amount));
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* @dev Returns the (un)scaled total supply of the EToken. Equals to the sum of `scaledBalanceOf(x)` of all users
|
|
247
|
+
* @return The scaled total supply
|
|
248
|
+
**/
|
|
249
|
+
function scaledTotalSupply() external view returns (uint256) {
|
|
250
|
+
return uint256(_tsScaled.amount);
|
|
251
|
+
}
|
|
252
|
+
|
|
223
253
|
/**
|
|
224
254
|
* @dev See {IERC20-transfer}.
|
|
225
255
|
*
|
|
@@ -500,9 +530,8 @@ contract EToken is Reserve, IERC20Metadata, IEToken {
|
|
|
500
530
|
}
|
|
501
531
|
|
|
502
532
|
function fundsAvailableToLock() public view returns (uint256) {
|
|
503
|
-
uint256
|
|
504
|
-
if (
|
|
505
|
-
return (totalSupply_ - uint256(_scr.scr)).wadMul(maxUtilizationRate());
|
|
533
|
+
uint256 supply = this.totalSupply().wadMul(maxUtilizationRate());
|
|
534
|
+
if (supply > uint256(_scr.scr)) return supply - uint256(_scr.scr);
|
|
506
535
|
else return 0;
|
|
507
536
|
}
|
|
508
537
|
|
|
@@ -645,8 +674,15 @@ contract EToken is Reserve, IERC20Metadata, IEToken {
|
|
|
645
674
|
* The only limit for withdraws is the `totalWithdrawable()` function, that's affected by the relation between the
|
|
646
675
|
* scr and the totalSupply.
|
|
647
676
|
*/
|
|
648
|
-
|
|
677
|
+
uint256 maxWithdraw = Math.min(balanceOf(provider), totalWithdrawable());
|
|
678
|
+
if (amount == type(uint256).max) amount = maxWithdraw;
|
|
649
679
|
if (amount == 0) return 0;
|
|
680
|
+
require(amount <= maxWithdraw, "amount > max withdrawable");
|
|
681
|
+
require(
|
|
682
|
+
address(_params.whitelist) == address(0) ||
|
|
683
|
+
_params.whitelist.acceptsWithdrawal(this, provider, amount),
|
|
684
|
+
"Liquidity Provider not whitelisted"
|
|
685
|
+
);
|
|
650
686
|
_burn(provider, amount);
|
|
651
687
|
_updateTokenInterestRate();
|
|
652
688
|
_transferTo(provider, amount);
|
|
@@ -14,10 +14,27 @@ import {IEToken} from "./interfaces/IEToken.sol";
|
|
|
14
14
|
*/
|
|
15
15
|
contract LPManualWhitelist is ILPWhitelist, PolicyPoolComponent {
|
|
16
16
|
bytes32 public constant LP_WHITELIST_ROLE = keccak256("LP_WHITELIST_ROLE");
|
|
17
|
+
bytes32 public constant LP_WHITELIST_ADMIN_ROLE = keccak256("LP_WHITELIST_ADMIN_ROLE");
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @dev Enum with the different options for whitelisting status
|
|
21
|
+
*/
|
|
22
|
+
enum WhitelistOptions {
|
|
23
|
+
undefined,
|
|
24
|
+
whitelisted,
|
|
25
|
+
blacklisted
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
struct WhitelistStatus {
|
|
29
|
+
WhitelistOptions deposit;
|
|
30
|
+
WhitelistOptions withdraw;
|
|
31
|
+
WhitelistOptions sendTransfer;
|
|
32
|
+
WhitelistOptions receiveTransfer;
|
|
33
|
+
}
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
mapping(address => WhitelistStatus) private _wlStatus;
|
|
36
|
+
|
|
37
|
+
event LPWhitelistStatusChanged(address provider, WhitelistStatus whitelisted);
|
|
21
38
|
|
|
22
39
|
/// @custom:oz-upgrades-unsafe-allow constructor
|
|
23
40
|
// solhint-disable-next-line no-empty-blocks
|
|
@@ -26,18 +43,62 @@ contract LPManualWhitelist is ILPWhitelist, PolicyPoolComponent {
|
|
|
26
43
|
/**
|
|
27
44
|
* @dev Initializes the Whitelist contract
|
|
28
45
|
*/
|
|
29
|
-
function initialize() public initializer {
|
|
46
|
+
function initialize(WhitelistStatus calldata defaultStatus) public initializer {
|
|
47
|
+
__LPManualWhitelist_init(defaultStatus);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// solhint-disable-next-line func-name-mixedcase
|
|
51
|
+
function __LPManualWhitelist_init(WhitelistStatus calldata defaultStatus)
|
|
52
|
+
internal
|
|
53
|
+
onlyInitializing
|
|
54
|
+
{
|
|
30
55
|
__PolicyPoolComponent_init();
|
|
56
|
+
__LPManualWhitelist_init_unchained(defaultStatus);
|
|
31
57
|
}
|
|
32
58
|
|
|
33
|
-
|
|
59
|
+
// solhint-disable-next-line func-name-mixedcase
|
|
60
|
+
function __LPManualWhitelist_init_unchained(WhitelistStatus calldata defaultStatus)
|
|
61
|
+
internal
|
|
62
|
+
onlyInitializing
|
|
63
|
+
{
|
|
64
|
+
_checkDefaultStatus(defaultStatus);
|
|
65
|
+
_wlStatus[address(0)] = defaultStatus;
|
|
66
|
+
emit LPWhitelistStatusChanged(address(0), defaultStatus);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function whitelistAddress(address provider, WhitelistStatus calldata newStatus)
|
|
34
70
|
external
|
|
35
71
|
onlyComponentRole(LP_WHITELIST_ROLE)
|
|
36
72
|
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
73
|
+
require(provider != address(0), "You can't change the defaults");
|
|
74
|
+
_whitelistAddress(provider, newStatus);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function _checkDefaultStatus(WhitelistStatus calldata newStatus) internal pure {
|
|
78
|
+
require(
|
|
79
|
+
newStatus.deposit != WhitelistOptions.undefined &&
|
|
80
|
+
newStatus.withdraw != WhitelistOptions.undefined &&
|
|
81
|
+
newStatus.sendTransfer != WhitelistOptions.undefined &&
|
|
82
|
+
newStatus.receiveTransfer != WhitelistOptions.undefined,
|
|
83
|
+
"You need to define the default status for all the operations"
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function setWhitelistDefaults(WhitelistStatus calldata newStatus)
|
|
88
|
+
external
|
|
89
|
+
onlyComponentRole(LP_WHITELIST_ADMIN_ROLE)
|
|
90
|
+
{
|
|
91
|
+
_checkDefaultStatus(newStatus);
|
|
92
|
+
_whitelistAddress(address(0), newStatus);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function getWhitelistDefaults() external view returns (WhitelistStatus memory) {
|
|
96
|
+
return _wlStatus[address(0)];
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function _whitelistAddress(address provider, WhitelistStatus memory newStatus) internal {
|
|
100
|
+
_wlStatus[provider] = newStatus;
|
|
101
|
+
emit LPWhitelistStatusChanged(provider, newStatus);
|
|
41
102
|
}
|
|
42
103
|
|
|
43
104
|
/**
|
|
@@ -52,16 +113,41 @@ contract LPManualWhitelist is ILPWhitelist, PolicyPoolComponent {
|
|
|
52
113
|
address provider,
|
|
53
114
|
uint256
|
|
54
115
|
) external view override returns (bool) {
|
|
55
|
-
|
|
116
|
+
WhitelistOptions wl = _wlStatus[provider].deposit;
|
|
117
|
+
if (wl == WhitelistOptions.undefined) {
|
|
118
|
+
wl = _wlStatus[address(0)].deposit;
|
|
119
|
+
}
|
|
120
|
+
return wl == WhitelistOptions.whitelisted;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function acceptsWithdrawal(
|
|
124
|
+
IEToken,
|
|
125
|
+
address provider,
|
|
126
|
+
uint256
|
|
127
|
+
) external view override returns (bool) {
|
|
128
|
+
WhitelistOptions wl = _wlStatus[provider].withdraw;
|
|
129
|
+
if (wl == WhitelistOptions.undefined) {
|
|
130
|
+
wl = _wlStatus[address(0)].withdraw;
|
|
131
|
+
}
|
|
132
|
+
return wl == WhitelistOptions.whitelisted;
|
|
56
133
|
}
|
|
57
134
|
|
|
58
135
|
function acceptsTransfer(
|
|
59
136
|
IEToken,
|
|
60
|
-
address,
|
|
137
|
+
address providerFrom,
|
|
61
138
|
address providerTo,
|
|
62
139
|
uint256
|
|
63
140
|
) external view override returns (bool) {
|
|
64
|
-
|
|
141
|
+
WhitelistOptions wl = _wlStatus[providerFrom].sendTransfer;
|
|
142
|
+
if (wl == WhitelistOptions.undefined) {
|
|
143
|
+
wl = _wlStatus[address(0)].sendTransfer;
|
|
144
|
+
}
|
|
145
|
+
if (wl != WhitelistOptions.whitelisted) return false;
|
|
146
|
+
wl = _wlStatus[providerTo].receiveTransfer;
|
|
147
|
+
if (wl == WhitelistOptions.undefined) {
|
|
148
|
+
wl = _wlStatus[address(0)].receiveTransfer;
|
|
149
|
+
}
|
|
150
|
+
return wl == WhitelistOptions.whitelisted;
|
|
65
151
|
}
|
|
66
152
|
|
|
67
153
|
/**
|