From 8218d97ebef72844657fed8e57aeecc8fadfe84a Mon Sep 17 00:00:00 2001 From: dhruvinparikh Date: Wed, 6 Apr 2022 20:27:22 -0400 Subject: [PATCH 1/5] =?UTF-8?q?chore(deploy):=20mumbai=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deployments/mumbai/.chainId | 1 + deployments/mumbai/AaveAdapter.json | 901 +++++++ deployments/mumbai/Registry.json | 2142 +++++++++++++++++ deployments/mumbai/RegistryProxy.json | 1338 ++++++++++ deployments/mumbai/RiskManager.json | 188 ++ deployments/mumbai/RiskManagerProxy.json | 175 ++ deployments/mumbai/StrategyProvider.json | 420 ++++ deployments/mumbai/opUSDCgrow.json | 1492 ++++++++++++ .../mumbai/opUSDCgrow_Implementation.json | 1320 ++++++++++ deployments/mumbai/opUSDCgrow_Proxy.json | 232 ++ .../2db89642daf7ebd20cbbef9f4540b20d.json | 39 + hardhat.config.ts | 1 + 12 files changed, 8249 insertions(+) create mode 100644 deployments/mumbai/.chainId create mode 100644 deployments/mumbai/AaveAdapter.json create mode 100644 deployments/mumbai/Registry.json create mode 100644 deployments/mumbai/RegistryProxy.json create mode 100644 deployments/mumbai/RiskManager.json create mode 100644 deployments/mumbai/RiskManagerProxy.json create mode 100644 deployments/mumbai/StrategyProvider.json create mode 100644 deployments/mumbai/opUSDCgrow.json create mode 100644 deployments/mumbai/opUSDCgrow_Implementation.json create mode 100644 deployments/mumbai/opUSDCgrow_Proxy.json create mode 100644 deployments/mumbai/solcInputs/2db89642daf7ebd20cbbef9f4540b20d.json diff --git a/deployments/mumbai/.chainId b/deployments/mumbai/.chainId new file mode 100644 index 000000000..d7e2f72ce --- /dev/null +++ b/deployments/mumbai/.chainId @@ -0,0 +1 @@ +80001 \ No newline at end of file diff --git a/deployments/mumbai/AaveAdapter.json b/deployments/mumbai/AaveAdapter.json new file mode 100644 index 000000000..fc3e7c013 --- /dev/null +++ b/deployments/mumbai/AaveAdapter.json @@ -0,0 +1,901 @@ +{ + "address": "0x2A68c377a4bca734746D8d1acd6e58dfC4cBD55F", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxDepositAmount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMaxDepositAmount", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxDepositPoolPct", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMaxDepositPoolPct", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "enum MaxExposure", + "name": "maxDepositProtocolMode", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMaxDepositProtocolMode", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxDepositProtocolPct", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMaxDepositProtocolPct", + "type": "event" + }, + { + "inputs": [], + "name": "PROTOCOL_DATA_PROVIDER_ID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WMATIC", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_underlyingTokenAmount", + "type": "uint256" + } + ], + "name": "calculateAmountInLPToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_redeemAmount", + "type": "uint256" + } + ], + "name": "calculateRedeemableLPTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canStake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + } + ], + "name": "getAddLiquidityCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + } + ], + "name": "getAllAmountInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getClaimRewardTokenCode", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + } + ], + "name": "getDepositAllCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "getDepositSomeCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getHarvestAllCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_rewardTokenAmount", + "type": "uint256" + } + ], + "name": "getHarvestSomeCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + } + ], + "name": "getLiquidityPoolToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + } + ], + "name": "getLiquidityPoolTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + } + ], + "name": "getPoolValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getRewardToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_liquidityPoolTokenAmount", + "type": "uint256" + } + ], + "name": "getSomeAmountInToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "getUnclaimedRewardTokenAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "_codes", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolToken", + "type": "address" + } + ], + "name": "getUnderlyingTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "_underlyingTokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + } + ], + "name": "getWithdrawAllCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "getWithdrawSomeCodes", + "outputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "incentivesController", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_vault", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_liquidityPoolAddressProviderRegistry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_redeemAmount", + "type": "uint256" + } + ], + "name": "isRedeemableAmountSufficient", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxDepositAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxDepositPoolPct", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxDepositProtocolMode", + "outputs": [ + { + "internalType": "enum MaxExposure", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxDepositProtocolPct", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quickSwapV2Router02", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IAdapterRegistryBase", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_liquidityPool", + "type": "address" + }, + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_maxDepositAmount", + "type": "uint256" + } + ], + "name": "setMaxDepositAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_liquidityPool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_maxDepositPoolPct", + "type": "uint256" + } + ], + "name": "setMaxDepositPoolPct", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum MaxExposure", + "name": "_mode", + "type": "uint8" + } + ], + "name": "setMaxDepositProtocolMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxDepositProtocolPct", + "type": "uint256" + } + ], + "name": "setMaxDepositProtocolPct", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x8acff55801281f56ef13e3774d679d6f09d576ca640d7ad676bd6da26e5c15ee", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x2A68c377a4bca734746D8d1acd6e58dfC4cBD55F", + "transactionIndex": 0, + "gasUsed": "2021538", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0xb0c4634322da206661ac182f71a6b9726d9ef0ed67beae34d88f8c15de044594", + "transactionHash": "0x8acff55801281f56ef13e3774d679d6f09d576ca640d7ad676bd6da26e5c15ee", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826467, + "transactionHash": "0x8acff55801281f56ef13e3774d679d6f09d576ca640d7ad676bd6da26e5c15ee", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x00000000000000000000000000000000000000000000000001d2d3939643364e00000000000000000000000000000000000000000000000007191136dbfda000000000000000000000000000000000000000000000000a14058c95dd2eb33b0200000000000000000000000000000000000000000000000005463da345ba69b2000000000000000000000000000000000000000000000a14075f6970c4f67150", + "logIndex": 0, + "blockHash": "0xb0c4634322da206661ac182f71a6b9726d9ef0ed67beae34d88f8c15de044594" + } + ], + "blockNumber": 25826467, + "cumulativeGasUsed": "2021538", + "status": 1, + "byzantium": true + }, + "args": ["0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C"], + "bytecode": "0x608060405234801561001057600080fd5b50604051620023663803806200236683398101604081905261003191610064565b600080546127106001556001600160a01b03929092166001600160a81b031990921691909117600160a01b179055610094565b60006020828403121561007657600080fd5b81516001600160a01b038116811461008d57600080fd5b9392505050565b6122c280620000a46000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80637c47b3f41161011a578063d463fcf6116100ad578063e49d5ecc1161007c578063e49d5ecc146104ba578063ee665bed146103f3578063ef856be9146104cd578063f1aacbb7146104ed578063f49307ca1461050057600080fd5b8063d463fcf61461046e578063d74baaf814610481578063da699f9614610494578063df935722146104a757600080fd5b8063919b69d7116100e9578063919b69d71461041a578063a91ee0dc1461042d578063af1df25514610440578063b3fe7f5a1461045b57600080fd5b80637c47b3f4146103c85780637df50ed8146103dd57806385541e44146103f357806390e616051461040757600080fd5b8063489b52951161019d5780634f83b52d1161016c5780634f83b52d1461035c578063609257791461037c57806364dd5f801461038f5780636d267d7c146103a257806377078872146103b557600080fd5b8063489b5295146103005780634ad36e02146103135780634d41a1e5146103265780634d95cad91461034157600080fd5b806328c1f99b116101d957806328c1f99b1461027d5780632af06b96146102a85780632de77838146102c957806336d8bf93146102dc57600080fd5b8063027a304d1461020b5780630c9d8d5c14610249578063119d610514610269578063191c194b14610274575b600080fd5b610236610219366004611a59565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61025c610257366004611a92565b610513565b6040516102409190611b2a565b610236600160f81b81565b61023660015481565b600054610290906001600160a01b031681565b6040516001600160a01b039091168152602001610240565b6000546102bc90600160a01b900460ff1681565b6040516102409190611ba2565b6102366102d7366004611a59565b6105a5565b6102f06102ea366004611bca565b50600090565b6040519015158152602001610240565b61025c61030e366004611a92565b6105b9565b610236610321366004611be7565b610637565b61029073a5e0829caced8ffdd4de3c43696c57f7d7a678ff81565b610290730d500b1d8e8ef31e21c99d1db9a6444d3adf127081565b61023661036a366004611bca565b60036020526000908152604090205481565b61025c61038a366004611be7565b610641565b61023661039d366004611a92565b610830565b61025c6103b0366004611a59565b61083d565b6102906103c3366004611bca565b610917565b6103db6103d6366004611c38565b61098f565b005b61025c6103eb366004611a59565b606092915050565b610236610401366004611c59565b92915050565b610236610415366004611a92565b610ab3565b6103db610428366004611c9a565b610b2c565b6103db61043b366004611bca565b610c1a565b61029073357d51124f59836ded84c8a1730d72b749d8bc2381565b610236610469366004611a92565b610d11565b61025c61047c366004611be7565b610d54565b61029061048f366004611a59565b610d6b565b6103db6104a2366004611cc6565b610df5565b61025c6104b5366004611be7565b610ecf565b6102f06104c8366004611be7565b6110a2565b6104e06104db366004611a59565b6110bd565b6040516102409190611d23565b6103db6104fb366004611c59565b61117a565b61025c61050e366004611a92565b611278565b606060006105216000610917565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190611d36565b905061059c8585600084610d54565b95945050505050565b60006105b18383611295565b519392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301526060916000918516906370a0823190602401602060405180830381865afa158015610605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106299190611d36565b905061059c85858584610ecf565b805b949350505050565b606081156106395760006106548461136f565b905060006106628686610d6b565b60408051600380825260808201909252919250816020015b606081526020019060019003908161067a579050506040516001600160a01b038416602482015260006044820152909350819060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b17905290516106e993929101611d65565b6040516020818303038152906040528360008151811061070b5761070b611d89565b60209081029190910101526040516001600160a01b038316602482015260448101859052819060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b179052905161076d93929101611d65565b6040516020818303038152906040528360018151811061078f5761078f611d89565b60209081029190910101526040516001600160a01b0380881660248301526044820186905288166064820152829060840160408051601f19818403018152918152602080830180516001600160e01b0316631a4ca37b60e21b17905290516107f993929101611d65565b6040516020818303038152906040528360028151811061081b5761081b611d89565b60200260200101819052505050949350505050565b6000610639848484610ab3565b6060600061084d84600080610d11565b60408051600180825281830190925291925060609190816020015b606081526020019060019003908161086857905050925073357d51124f59836ded84c8a1730d72b749d8bc238183876040516024016108a993929190611d9f565b60408051601f19818403018152918152602080830180516001600160e01b0316633111e7b360e01b17905290516108e293929101611d65565b6040516020818303038152906040528360008151811061090457610904611d89565b6020026020010181905250505092915050565b600073357d51124f59836ded84c8a1730d72b749d8bc236001600160a01b03166399248ea76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190611de2565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190611de2565b6001600160a01b0316336001600160a01b031614610a3d5760405162461bcd60e51b8152600401610a3490611dff565b60405180910390fd5b6000805482919060ff60a01b1916600160a01b836001811115610a6257610a62611b8c565b02179055506000543390600160a01b900460ff166001811115610a8757610a87611b8c565b6040517f68e3b01155b193b02181f2c0ed491c934a74348d211ff023f8fc6ac5edf22aa090600090a350565b6000610abf8383610d6b565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a08231906024015b602060405180830381865afa158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190611d36565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba19190611de2565b6001600160a01b0316336001600160a01b031614610bd15760405162461bcd60e51b8152600401610a3490611dff565b6001600160a01b03821660009081526003602052604080822083905551339183917fac58e29a41d996caca756d050dce90806b277f0c939337653638329247e16f4c9190a35050565b60008054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190611de2565b6001600160a01b0316336001600160a01b031614610cef5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610a34565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b604051630cc7d40f60e11b81526001600160a01b038416600482015260009073357d51124f59836ded84c8a1730d72b749d8bc239063198fa81e90602401610aeb565b606061059c85610d646000610917565b86856113b7565b600080610d778361136f565b6040516335ea6a7560e01b81526001600160a01b0386811660048301529192506000918316906335ea6a759060240161018060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611f3d565b60e0015195945050505050565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6a9190611de2565b6001600160a01b0316336001600160a01b031614610e9a5760405162461bcd60e51b8152600401610a3490611dff565b6001819055604051339082907f19c60b0612798cc65bd298cd47e17d9fd07e74e0d3baa6c0019411bb334d9bda90600090a350565b60606000610ee8848685610ee3888a6105a5565b61167a565b90508015611099576000610efb8561136f565b60408051600380825260808201909252919250816020015b6060815260200190600190039081610f13579050506040516001600160a01b038316602482015260006044820152909350869060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b1790529051610f8293929101611d65565b60405160208183030381529060405283600081518110610fa457610fa4611d89565b60209081029190910101526040516001600160a01b038216602482015260448101839052869060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b179052905161100693929101611d65565b6040516020818303038152906040528360018151811061102857611028611d89565b60209081029190910101526040516001600160a01b038088166024830152604482018490528816606482015260006084820152819060a40160408051601f19818403018152918152602080830180516001600160e01b031663e8eda9df60e01b17905290516107f993929101611d65565b50949350505050565b6000806110b0868686610830565b9092111595945050505050565b60408051600180825281830190925260609160208083019080368337019050509050816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111419190611de2565b8160008151811061115457611154611d89565b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190611de2565b6001600160a01b0316336001600160a01b03161461121f5760405162461bcd60e51b8152600401610a3490611dff565b6001600160a01b03838116600090815260026020908152604080832093861683529290528181208390559051339183917f197807a6a2633dd9bde6550aca985cfc69e655e9130930314c0e9da01a75cc549190a3505050565b60606000611287858585610ab3565b905061059c85858584610641565b6112f2604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b6112fb836116f2565b6040516335ea6a7560e01b81526001600160a01b03848116600483015291909116906335ea6a759060240161014060405180830381865afa158015611344573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611368919061202a565b9392505050565b600061137a82611747565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096b573d6000803e3d6000fd5b6060811561063957600073a5e0829caced8ffdd4de3c43696c57f7d7a678ff63d06ca61f846113e688886117d0565b6040518363ffffffff1660e01b81526004016114039291906120a9565b600060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261144891908101906120e6565b90506000816001835161145b9190612192565b8151811061146b5761146b611d89565b60200260200101511115611099576040805160038082526080820190925290816020015b606081526020019060019003908161148f5750506040805173a5e0829caced8ffdd4de3c43696c57f7d7a678ff602482015260006044808301919091528251808303909101815260649091018252602080820180516001600160e01b031663095ea7b360e01b179052915192945061150992889201611d65565b6040516020818303038152906040528260008151811061152b5761152b611d89565b6020908102919091018101919091526040805173a5e0829caced8ffdd4de3c43696c57f7d7a678ff60248201526044808201879052825180830390910181526064909101825280830180516001600160e01b031663095ea7b360e01b17905290516115999288929101611d65565b604051602081830303815290604052826001815181106115bb576115bb611d89565b602090810291909101015273a5e0829caced8ffdd4de3c43696c57f7d7a678ff806338ed17398560006115ee8a8a6117d0565b8b6000196040516024016116069594939291906121a9565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050604051602001611644929190611d65565b6040516020818303038152906040528260028151811061166657611666611d89565b602002602001018190525050949350505050565b6000806001600054600160a01b900460ff16600181111561169d5761169d611b8c565b146116cd576001600160a01b038087166000908152600260209081526040808320938916835292905220546116d7565b6116d786846119ea565b90508084116116e657836116e8565b805b9695505050505050565b60006116fd82611747565b6040516321f8a72160e01b8152600160f81b60048201526001600160a01b0391909116906321f8a72190602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b6000816001600160a01b031663365ccbbf6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611787573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117af91908101906121e5565b6000815181106117c1576117c1611d89565b60200260200101519050919050565b60606001600160a01b038216730d500b1d8e8ef31e21c99d1db9a6444d3adf12701415611898576040805160028082526060820183529091602083019080368337019050509050828160008151811061182b5761182b611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050730d500b1d8e8ef31e21c99d1db9a6444d3adf12708160018151811061187357611873611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050610401565b6001600160a01b038316730d500b1d8e8ef31e21c99d1db9a6444d3adf12701415611939576040805160028082526060820183529091602083019080368337019050509050730d500b1d8e8ef31e21c99d1db9a6444d3adf12708160008151811061190557611905611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061187357611873611d89565b604080516003808252608082019092529060208201606080368337019050509050828160008151811061196e5761196e611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050730d500b1d8e8ef31e21c99d1db9a6444d3adf1270816001815181106119b6576119b6611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050818160028151811061115457611154611d89565b6001600160a01b038216600090815260036020526040812054818115611a2657612710611a178386612274565b611a219190612293565b61059c565b61271060015485611a379190612274565b61059c9190612293565b6001600160a01b0381168114611a5657600080fd5b50565b60008060408385031215611a6c57600080fd5b8235611a7781611a41565b91506020830135611a8781611a41565b809150509250929050565b600080600060608486031215611aa757600080fd5b8335611ab281611a41565b92506020840135611ac281611a41565b91506040840135611ad281611a41565b809150509250925092565b6000815180845260005b81811015611b0357602081850181015186830182015201611ae7565b81811115611b15576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b7f57603f19888603018452611b6d858351611add565b94509285019290850190600101611b51565b5092979650505050505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310611bc457634e487b7160e01b600052602160045260246000fd5b91905290565b600060208284031215611bdc57600080fd5b813561136881611a41565b60008060008060808587031215611bfd57600080fd5b8435611c0881611a41565b93506020850135611c1881611a41565b92506040850135611c2881611a41565b9396929550929360600135925050565b600060208284031215611c4a57600080fd5b81356002811061136857600080fd5b600080600060608486031215611c6e57600080fd5b8335611c7981611a41565b92506020840135611c8981611a41565b929592945050506040919091013590565b60008060408385031215611cad57600080fd5b8235611cb881611a41565b946020939093013593505050565b600060208284031215611cd857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611d185781516001600160a01b031687529582019590820190600101611cf3565b509495945050505050565b6020815260006113686020830184611cdf565b600060208284031215611d4857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038316815260406020820181905260009061063990830184611add565b634e487b7160e01b600052603260045260246000fd5b606081526000611db26060830186611cdf565b6020830194909452506001600160a01b0391909116604090910152919050565b8051611ddd81611a41565b919050565b600060208284031215611df457600080fd5b815161136881611a41565b6020808252601e908201527f63616c6c6572206973206e6f7420746865207269736b4f70657261746f720000604082015260600190565b604051610180810167ffffffffffffffff81118282101715611e5a57611e5a611d4f565b60405290565b604051610140810167ffffffffffffffff81118282101715611e5a57611e5a611d4f565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ead57611ead611d4f565b604052919050565b600060208284031215611ec757600080fd5b6040516020810181811067ffffffffffffffff82111715611eea57611eea611d4f565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611ddd57600080fd5b805164ffffffffff81168114611ddd57600080fd5b805160ff81168114611ddd57600080fd5b60006101808284031215611f5057600080fd5b611f58611e36565b611f628484611eb5565b8152611f7060208401611ef7565b6020820152611f8160408401611ef7565b6040820152611f9260608401611ef7565b6060820152611fa360808401611ef7565b6080820152611fb460a08401611ef7565b60a0820152611fc560c08401611f17565b60c0820152611fd660e08401611dd2565b60e0820152610100611fe9818501611dd2565b90820152610120611ffb848201611dd2565b9082015261014061200d848201611dd2565b9082015261016061201f848201611f2c565b908201529392505050565b6000610140828403121561203d57600080fd5b612045611e60565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012061201f818501611f17565b8281526040602082015260006106396040830184611cdf565b600067ffffffffffffffff8211156120dc576120dc611d4f565b5060051b60200190565b600060208083850312156120f957600080fd5b825167ffffffffffffffff81111561211057600080fd5b8301601f8101851361212157600080fd5b805161213461212f826120c2565b611e84565b81815260059190911b8201830190838101908783111561215357600080fd5b928401925b8284101561217157835182529284019290840190612158565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156121a4576121a461217c565b500390565b85815284602082015260a0604082015260006121c860a0830186611cdf565b6001600160a01b0394909416606083015250608001529392505050565b600060208083850312156121f857600080fd5b825167ffffffffffffffff81111561220f57600080fd5b8301601f8101851361222057600080fd5b805161222e61212f826120c2565b81815260059190911b8201830190838101908783111561224d57600080fd5b928401925b8284101561217157835161226581611a41565b82529284019290840190612252565b600081600019048311821515161561228e5761228e61217c565b500290565b6000826122b057634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c634300080b000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c80637c47b3f41161011a578063d463fcf6116100ad578063e49d5ecc1161007c578063e49d5ecc146104ba578063ee665bed146103f3578063ef856be9146104cd578063f1aacbb7146104ed578063f49307ca1461050057600080fd5b8063d463fcf61461046e578063d74baaf814610481578063da699f9614610494578063df935722146104a757600080fd5b8063919b69d7116100e9578063919b69d71461041a578063a91ee0dc1461042d578063af1df25514610440578063b3fe7f5a1461045b57600080fd5b80637c47b3f4146103c85780637df50ed8146103dd57806385541e44146103f357806390e616051461040757600080fd5b8063489b52951161019d5780634f83b52d1161016c5780634f83b52d1461035c578063609257791461037c57806364dd5f801461038f5780636d267d7c146103a257806377078872146103b557600080fd5b8063489b5295146103005780634ad36e02146103135780634d41a1e5146103265780634d95cad91461034157600080fd5b806328c1f99b116101d957806328c1f99b1461027d5780632af06b96146102a85780632de77838146102c957806336d8bf93146102dc57600080fd5b8063027a304d1461020b5780630c9d8d5c14610249578063119d610514610269578063191c194b14610274575b600080fd5b610236610219366004611a59565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61025c610257366004611a92565b610513565b6040516102409190611b2a565b610236600160f81b81565b61023660015481565b600054610290906001600160a01b031681565b6040516001600160a01b039091168152602001610240565b6000546102bc90600160a01b900460ff1681565b6040516102409190611ba2565b6102366102d7366004611a59565b6105a5565b6102f06102ea366004611bca565b50600090565b6040519015158152602001610240565b61025c61030e366004611a92565b6105b9565b610236610321366004611be7565b610637565b61029073a5e0829caced8ffdd4de3c43696c57f7d7a678ff81565b610290730d500b1d8e8ef31e21c99d1db9a6444d3adf127081565b61023661036a366004611bca565b60036020526000908152604090205481565b61025c61038a366004611be7565b610641565b61023661039d366004611a92565b610830565b61025c6103b0366004611a59565b61083d565b6102906103c3366004611bca565b610917565b6103db6103d6366004611c38565b61098f565b005b61025c6103eb366004611a59565b606092915050565b610236610401366004611c59565b92915050565b610236610415366004611a92565b610ab3565b6103db610428366004611c9a565b610b2c565b6103db61043b366004611bca565b610c1a565b61029073357d51124f59836ded84c8a1730d72b749d8bc2381565b610236610469366004611a92565b610d11565b61025c61047c366004611be7565b610d54565b61029061048f366004611a59565b610d6b565b6103db6104a2366004611cc6565b610df5565b61025c6104b5366004611be7565b610ecf565b6102f06104c8366004611be7565b6110a2565b6104e06104db366004611a59565b6110bd565b6040516102409190611d23565b6103db6104fb366004611c59565b61117a565b61025c61050e366004611a92565b611278565b606060006105216000610917565b6040516370a0823160e01b81526001600160a01b03878116600483015291909116906370a0823190602401602060405180830381865afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058d9190611d36565b905061059c8585600084610d54565b95945050505050565b60006105b18383611295565b519392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301526060916000918516906370a0823190602401602060405180830381865afa158015610605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106299190611d36565b905061059c85858584610ecf565b805b949350505050565b606081156106395760006106548461136f565b905060006106628686610d6b565b60408051600380825260808201909252919250816020015b606081526020019060019003908161067a579050506040516001600160a01b038416602482015260006044820152909350819060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b17905290516106e993929101611d65565b6040516020818303038152906040528360008151811061070b5761070b611d89565b60209081029190910101526040516001600160a01b038316602482015260448101859052819060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b179052905161076d93929101611d65565b6040516020818303038152906040528360018151811061078f5761078f611d89565b60209081029190910101526040516001600160a01b0380881660248301526044820186905288166064820152829060840160408051601f19818403018152918152602080830180516001600160e01b0316631a4ca37b60e21b17905290516107f993929101611d65565b6040516020818303038152906040528360028151811061081b5761081b611d89565b60200260200101819052505050949350505050565b6000610639848484610ab3565b6060600061084d84600080610d11565b60408051600180825281830190925291925060609190816020015b606081526020019060019003908161086857905050925073357d51124f59836ded84c8a1730d72b749d8bc238183876040516024016108a993929190611d9f565b60408051601f19818403018152918152602080830180516001600160e01b0316633111e7b360e01b17905290516108e293929101611d65565b6040516020818303038152906040528360008151811061090457610904611d89565b6020026020010181905250505092915050565b600073357d51124f59836ded84c8a1730d72b749d8bc236001600160a01b03166399248ea76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104019190611de2565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190611de2565b6001600160a01b0316336001600160a01b031614610a3d5760405162461bcd60e51b8152600401610a3490611dff565b60405180910390fd5b6000805482919060ff60a01b1916600160a01b836001811115610a6257610a62611b8c565b02179055506000543390600160a01b900460ff166001811115610a8757610a87611b8c565b6040517f68e3b01155b193b02181f2c0ed491c934a74348d211ff023f8fc6ac5edf22aa090600090a350565b6000610abf8383610d6b565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a08231906024015b602060405180830381865afa158015610b08573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190611d36565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba19190611de2565b6001600160a01b0316336001600160a01b031614610bd15760405162461bcd60e51b8152600401610a3490611dff565b6001600160a01b03821660009081526003602052604080822083905551339183917fac58e29a41d996caca756d050dce90806b277f0c939337653638329247e16f4c9190a35050565b60008054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190611de2565b6001600160a01b0316336001600160a01b031614610cef5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610a34565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b604051630cc7d40f60e11b81526001600160a01b038416600482015260009073357d51124f59836ded84c8a1730d72b749d8bc239063198fa81e90602401610aeb565b606061059c85610d646000610917565b86856113b7565b600080610d778361136f565b6040516335ea6a7560e01b81526001600160a01b0386811660048301529192506000918316906335ea6a759060240161018060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190611f3d565b60e0015195945050505050565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6a9190611de2565b6001600160a01b0316336001600160a01b031614610e9a5760405162461bcd60e51b8152600401610a3490611dff565b6001819055604051339082907f19c60b0612798cc65bd298cd47e17d9fd07e74e0d3baa6c0019411bb334d9bda90600090a350565b60606000610ee8848685610ee3888a6105a5565b61167a565b90508015611099576000610efb8561136f565b60408051600380825260808201909252919250816020015b6060815260200190600190039081610f13579050506040516001600160a01b038316602482015260006044820152909350869060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b1790529051610f8293929101611d65565b60405160208183030381529060405283600081518110610fa457610fa4611d89565b60209081029190910101526040516001600160a01b038216602482015260448101839052869060640160408051601f19818403018152918152602080830180516001600160e01b031663095ea7b360e01b179052905161100693929101611d65565b6040516020818303038152906040528360018151811061102857611028611d89565b60209081029190910101526040516001600160a01b038088166024830152604482018490528816606482015260006084820152819060a40160408051601f19818403018152918152602080830180516001600160e01b031663e8eda9df60e01b17905290516107f993929101611d65565b50949350505050565b6000806110b0868686610830565b9092111595945050505050565b60408051600180825281830190925260609160208083019080368337019050509050816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111419190611de2565b8160008151811061115457611154611d89565b60200260200101906001600160a01b031690816001600160a01b03168152505092915050565b60008054906101000a90046001600160a01b03166001600160a01b0316637af0e5576040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ef9190611de2565b6001600160a01b0316336001600160a01b03161461121f5760405162461bcd60e51b8152600401610a3490611dff565b6001600160a01b03838116600090815260026020908152604080832093861683529290528181208390559051339183917f197807a6a2633dd9bde6550aca985cfc69e655e9130930314c0e9da01a75cc549190a3505050565b60606000611287858585610ab3565b905061059c85858584610641565b6112f2604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600064ffffffffff1681525090565b6112fb836116f2565b6040516335ea6a7560e01b81526001600160a01b03848116600483015291909116906335ea6a759060240161014060405180830381865afa158015611344573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611368919061202a565b9392505050565b600061137a82611747565b6001600160a01b0316630261bf8b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096b573d6000803e3d6000fd5b6060811561063957600073a5e0829caced8ffdd4de3c43696c57f7d7a678ff63d06ca61f846113e688886117d0565b6040518363ffffffff1660e01b81526004016114039291906120a9565b600060405180830381865afa158015611420573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261144891908101906120e6565b90506000816001835161145b9190612192565b8151811061146b5761146b611d89565b60200260200101511115611099576040805160038082526080820190925290816020015b606081526020019060019003908161148f5750506040805173a5e0829caced8ffdd4de3c43696c57f7d7a678ff602482015260006044808301919091528251808303909101815260649091018252602080820180516001600160e01b031663095ea7b360e01b179052915192945061150992889201611d65565b6040516020818303038152906040528260008151811061152b5761152b611d89565b6020908102919091018101919091526040805173a5e0829caced8ffdd4de3c43696c57f7d7a678ff60248201526044808201879052825180830390910181526064909101825280830180516001600160e01b031663095ea7b360e01b17905290516115999288929101611d65565b604051602081830303815290604052826001815181106115bb576115bb611d89565b602090810291909101015273a5e0829caced8ffdd4de3c43696c57f7d7a678ff806338ed17398560006115ee8a8a6117d0565b8b6000196040516024016116069594939291906121a9565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050604051602001611644929190611d65565b6040516020818303038152906040528260028151811061166657611666611d89565b602002602001018190525050949350505050565b6000806001600054600160a01b900460ff16600181111561169d5761169d611b8c565b146116cd576001600160a01b038087166000908152600260209081526040808320938916835292905220546116d7565b6116d786846119ea565b90508084116116e657836116e8565b805b9695505050505050565b60006116fd82611747565b6040516321f8a72160e01b8152600160f81b60048201526001600160a01b0391909116906321f8a72190602401602060405180830381865afa15801561096b573d6000803e3d6000fd5b6000816001600160a01b031663365ccbbf6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611787573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117af91908101906121e5565b6000815181106117c1576117c1611d89565b60200260200101519050919050565b60606001600160a01b038216730d500b1d8e8ef31e21c99d1db9a6444d3adf12701415611898576040805160028082526060820183529091602083019080368337019050509050828160008151811061182b5761182b611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050730d500b1d8e8ef31e21c99d1db9a6444d3adf12708160018151811061187357611873611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050610401565b6001600160a01b038316730d500b1d8e8ef31e21c99d1db9a6444d3adf12701415611939576040805160028082526060820183529091602083019080368337019050509050730d500b1d8e8ef31e21c99d1db9a6444d3adf12708160008151811061190557611905611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050818160018151811061187357611873611d89565b604080516003808252608082019092529060208201606080368337019050509050828160008151811061196e5761196e611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050730d500b1d8e8ef31e21c99d1db9a6444d3adf1270816001815181106119b6576119b6611d89565b60200260200101906001600160a01b031690816001600160a01b031681525050818160028151811061115457611154611d89565b6001600160a01b038216600090815260036020526040812054818115611a2657612710611a178386612274565b611a219190612293565b61059c565b61271060015485611a379190612274565b61059c9190612293565b6001600160a01b0381168114611a5657600080fd5b50565b60008060408385031215611a6c57600080fd5b8235611a7781611a41565b91506020830135611a8781611a41565b809150509250929050565b600080600060608486031215611aa757600080fd5b8335611ab281611a41565b92506020840135611ac281611a41565b91506040840135611ad281611a41565b809150509250925092565b6000815180845260005b81811015611b0357602081850181015186830182015201611ae7565b81811115611b15576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611b7f57603f19888603018452611b6d858351611add565b94509285019290850190600101611b51565b5092979650505050505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310611bc457634e487b7160e01b600052602160045260246000fd5b91905290565b600060208284031215611bdc57600080fd5b813561136881611a41565b60008060008060808587031215611bfd57600080fd5b8435611c0881611a41565b93506020850135611c1881611a41565b92506040850135611c2881611a41565b9396929550929360600135925050565b600060208284031215611c4a57600080fd5b81356002811061136857600080fd5b600080600060608486031215611c6e57600080fd5b8335611c7981611a41565b92506020840135611c8981611a41565b929592945050506040919091013590565b60008060408385031215611cad57600080fd5b8235611cb881611a41565b946020939093013593505050565b600060208284031215611cd857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611d185781516001600160a01b031687529582019590820190600101611cf3565b509495945050505050565b6020815260006113686020830184611cdf565b600060208284031215611d4857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038316815260406020820181905260009061063990830184611add565b634e487b7160e01b600052603260045260246000fd5b606081526000611db26060830186611cdf565b6020830194909452506001600160a01b0391909116604090910152919050565b8051611ddd81611a41565b919050565b600060208284031215611df457600080fd5b815161136881611a41565b6020808252601e908201527f63616c6c6572206973206e6f7420746865207269736b4f70657261746f720000604082015260600190565b604051610180810167ffffffffffffffff81118282101715611e5a57611e5a611d4f565b60405290565b604051610140810167ffffffffffffffff81118282101715611e5a57611e5a611d4f565b604051601f8201601f1916810167ffffffffffffffff81118282101715611ead57611ead611d4f565b604052919050565b600060208284031215611ec757600080fd5b6040516020810181811067ffffffffffffffff82111715611eea57611eea611d4f565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611ddd57600080fd5b805164ffffffffff81168114611ddd57600080fd5b805160ff81168114611ddd57600080fd5b60006101808284031215611f5057600080fd5b611f58611e36565b611f628484611eb5565b8152611f7060208401611ef7565b6020820152611f8160408401611ef7565b6040820152611f9260608401611ef7565b6060820152611fa360808401611ef7565b6080820152611fb460a08401611ef7565b60a0820152611fc560c08401611f17565b60c0820152611fd660e08401611dd2565b60e0820152610100611fe9818501611dd2565b90820152610120611ffb848201611dd2565b9082015261014061200d848201611dd2565b9082015261016061201f848201611f2c565b908201529392505050565b6000610140828403121561203d57600080fd5b612045611e60565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e082015261010080840151818301525061012061201f818501611f17565b8281526040602082015260006106396040830184611cdf565b600067ffffffffffffffff8211156120dc576120dc611d4f565b5060051b60200190565b600060208083850312156120f957600080fd5b825167ffffffffffffffff81111561211057600080fd5b8301601f8101851361212157600080fd5b805161213461212f826120c2565b611e84565b81815260059190911b8201830190838101908783111561215357600080fd5b928401925b8284101561217157835182529284019290840190612158565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156121a4576121a461217c565b500390565b85815284602082015260a0604082015260006121c860a0830186611cdf565b6001600160a01b0394909416606083015250608001529392505050565b600060208083850312156121f857600080fd5b825167ffffffffffffffff81111561220f57600080fd5b8301601f8101851361222057600080fd5b805161222e61212f826120c2565b81815260059190911b8201830190838101908783111561224d57600080fd5b928401925b8284101561217157835161226581611a41565b82529284019290840190612252565b600081600019048311821515161561228e5761228e61217c565b500290565b6000826122b057634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c634300080b000a" +} diff --git a/deployments/mumbai/Registry.json b/deployments/mumbai/Registry.json new file mode 100644 index 000000000..872c70031 --- /dev/null +++ b/deployments/mumbai/Registry.json @@ -0,0 +1,2142 @@ +{ + "address": "0xEe10F4F3b8A38c178Ed375f8E1064b1b5C964ad5", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "allowWhitelistedState", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogAllowWhitelistedStateVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogCreditPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "discontinued", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogDiscontinueVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "isLimitedState", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLimitStateVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLiquidityPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "adapter", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLiquidityPoolToAdapter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "minimumDepositAmount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMinimumDepositAmountVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "queueCap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogQueueCapVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRPPoolRatings", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "rate", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRateCreditPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "rate", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRateLiquidityPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "exists", + "type": "bool" + }, + { + "indexed": true, + "internalType": "bool", + "name": "canBorrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRiskProfile", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "tokensHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogTokensToTokensHash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUnpauseVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "userDepositCap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUserDepositCapVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "totalValueLockedLimitInUnderlying", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogVaultTotalValueLockedLimitInUnderlying", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "financeOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferFinanceOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "optyDistributor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferOPTYDistributor", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "riskOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferRiskOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategyOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferStrategyOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferTreasury", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "bool", + "name": "_canBorrow", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRatingsRange", + "name": "_poolRatingRange", + "type": "tuple" + } + ], + "name": "addRiskProfile", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_riskProfileCodes", + "type": "uint256[]" + }, + { + "internalType": "string[]", + "name": "_names", + "type": "string[]" + }, + { + "internalType": "string[]", + "name": "_symbols", + "type": "string[]" + }, + { + "internalType": "bool[]", + "name": "_canBorrow", + "type": "bool[]" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRatingsRange[]", + "name": "_poolRatingRanges", + "type": "tuple[]" + } + ], + "name": "addRiskProfile", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "approveCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_pools", + "type": "address[]" + } + ], + "name": "approveCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "approveLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_pools", + "type": "address[]" + } + ], + "name": "approveLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "adapter", + "type": "address" + } + ], + "internalType": "struct DataTypes.PoolAdapter[]", + "name": "_poolAdapters", + "type": "tuple[]" + } + ], + "name": "approveLiquidityPoolAndMapToAdapter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + }, + { + "internalType": "address", + "name": "_adapter", + "type": "address" + } + ], + "name": "approveLiquidityPoolAndMapToAdapter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "approveToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_tokens", + "type": "address[]" + } + ], + "name": "approveToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_tokensHash", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "_tokens", + "type": "address[]" + } + ], + "name": "approveTokenAndMapToTokensHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "tokensHash", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "internalType": "struct DataTypes.TokensHashDetail[]", + "name": "_tokensHashesDetails", + "type": "tuple[]" + } + ], + "name": "approveTokenAndMapToTokensHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "aprOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract RegistryProxy", + "name": "_registryProxy", + "type": "address" + } + ], + "name": "become", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "creditPools", + "outputs": [ + { + "internalType": "uint8", + "name": "rating", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isLiquidityPool", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "financeOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFinanceOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGovernance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHarvestCodeProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "getLiquidityPool", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "rating", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isLiquidityPool", + "type": "bool" + } + ], + "internalType": "struct DataTypes.LiquidityPool", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "getLiquidityPoolToAdapter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getODEFIVaultBooster", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOPTYDistributor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRiskManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRiskOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + } + ], + "name": "getRiskProfile", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "canBorrow", + "type": "bool" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRatingsRange", + "name": "poolRatingsRange", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "exists", + "type": "bool" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "internalType": "struct DataTypes.RiskProfile", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRiskProfileList", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStrategyOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStrategyProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTokenHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getTokensHashByIndex", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_tokensHash", + "type": "bytes32" + } + ], + "name": "getTokensHashIndexByHash", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_tokensHash", + "type": "bytes32" + } + ], + "name": "getTokensHashToTokenList", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "harvestCodeProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "investStrategyRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "isApprovedToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "liquidityPoolToAdapter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "liquidityPools", + "outputs": [ + { + "internalType": "uint8", + "name": "rating", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isLiquidityPool", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "odefiVaultBooster", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opty", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "optyDistributor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "optyStakingRateBalancer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingRegistryImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + }, + { + "internalType": "uint8", + "name": "_rate", + "type": "uint8" + } + ], + "name": "rateCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rate", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRate[]", + "name": "_poolRates", + "type": "tuple[]" + } + ], + "name": "rateCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "uint8", + "name": "rate", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRate[]", + "name": "_poolRates", + "type": "tuple[]" + } + ], + "name": "rateLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + }, + { + "internalType": "uint8", + "name": "_rate", + "type": "uint8" + } + ], + "name": "rateLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "registryImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "removeRiskProfile", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_pools", + "type": "address[]" + } + ], + "name": "revokeCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "revokeCreditPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_pools", + "type": "address[]" + } + ], + "name": "revokeLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + } + ], + "name": "revokeLiquidityPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "revokeToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_tokens", + "type": "address[]" + } + ], + "name": "revokeToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "riskManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "riskProfilesArray", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_financeOperator", + "type": "address" + } + ], + "name": "setFinanceOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_harvestCodeProvider", + "type": "address" + } + ], + "name": "setHarvestCodeProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_pool", + "type": "address" + }, + { + "internalType": "address", + "name": "_adapter", + "type": "address" + } + ], + "name": "setLiquidityPoolToAdapter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "adapter", + "type": "address" + } + ], + "internalType": "struct DataTypes.PoolAdapter[]", + "name": "_poolAdapters", + "type": "tuple[]" + } + ], + "name": "setLiquidityPoolToAdapter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_odefiVaultBooster", + "type": "address" + } + ], + "name": "setODEFIVaultBooster", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_opty", + "type": "address" + } + ], + "name": "setOPTY", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_optyDistributor", + "type": "address" + } + ], + "name": "setOPTYDistributor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "setOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_riskManager", + "type": "address" + } + ], + "name": "setRiskManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_riskOperator", + "type": "address" + } + ], + "name": "setRiskOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_strategyOperator", + "type": "address" + } + ], + "name": "setStrategyOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_strategyProvider", + "type": "address" + } + ], + "name": "setStrategyProvider", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_tokensHash", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "_tokens", + "type": "address[]" + } + ], + "name": "setTokensHashToTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "tokensHash", + "type": "bytes32" + }, + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "internalType": "struct DataTypes.TokensHashDetail[]", + "name": "_tokensHashesDetails", + "type": "tuple[]" + } + ], + "name": "setTokensHashToTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_treasury", + "type": "address" + } + ], + "name": "setTreasury", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokensHashIndexes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "tokensHashToTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + } + ], + "internalType": "struct DataTypes.PoolRatingsRange", + "name": "_poolRatingRange", + "type": "tuple" + } + ], + "name": "updateRPPoolRatings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_canBorrow", + "type": "bool" + } + ], + "name": "updateRiskProfileBorrow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "vaultToVaultConfiguration", + "outputs": [ + { + "internalType": "bool", + "name": "discontinued", + "type": "bool" + }, + { + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isLimitedState", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowWhitelistedState", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "withdrawalFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userDepositCap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalValueLockedLimitInUnderlying", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "queueCap", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistedUsers", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawalFeeRange", + "outputs": [ + { + "internalType": "uint256", + "name": "lowerLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "upperLimit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x29a70465a103b228bd43a8b05991e40838da5d3edcf6777cf05e48e31aac4127", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0xEe10F4F3b8A38c178Ed375f8E1064b1b5C964ad5", + "transactionIndex": 0, + "gasUsed": "3504759", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0x0f99a3e2cb56ecee0f1f0d2850255abf4d7e9d5accef0e63af5388b531e96642", + "transactionHash": "0x29a70465a103b228bd43a8b05991e40838da5d3edcf6777cf05e48e31aac4127", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826446, + "transactionHash": "0x29a70465a103b228bd43a8b05991e40838da5d3edcf6777cf05e48e31aac4127", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x0000000000000000000000000000000000000000000000000329576216e522e30000000000000000000000000000000000000000000000000cbf8023bd98f800000000000000000000000000000000000000000000000a13e8be5fb619caf3b7000000000000000000000000000000000000000000000000099628c1a6b3d51d000000000000000000000000000000000000000000000a13ebe7b71830b0169a", + "logIndex": 0, + "blockHash": "0x0f99a3e2cb56ecee0f1f0d2850255abf4d7e9d5accef0e63af5388b531e96642" + } + ], + "blockNumber": 25826446, + "cumulativeGasUsed": "3504759", + "status": 1, + "byzantium": true + }, + "args": [], + "bytecode": "0x608060405234801561001057600080fd5b50613e67806100206000396000f3fe608060405234801561001057600080fd5b50600436106104e35760003560e01c80638a16ce861161028e578063ae0cd29911610167578063e4860339116100d9578063f192e82c11610092578063f192e82c14610a5e578063f39c38a014610a71578063fa0ad89614610a79578063fabee0e614610a8c578063fc50f22414610a94578063fe794f9314610aa7576104e3565b8063e486033914610a02578063e7f43c6814610a15578063e990b46c14610a1d578063edd0fd7e14610a30578063ef1bbb9814610a38578063f0f4426014610a4b576104e3565b8063d117f0f21161012b578063d117f0f2146109b1578063d3af584c146109c4578063d41fa529146109d7578063d71f05e6146109df578063d9cafe72146109e7578063e1e1a62e146109fa576104e3565b8063ae0cd2991461095d578063b3ab15fb14610970578063b7407bf614610983578063bcd2c20f1461098b578063cbd6e6c31461099e576104e3565b80639ec39e2f11610200578063a7b61c51116101c4578063a7b61c51146108f6578063a7d8c1a4146108fe578063a91624c614610911578063a99e772114610924578063a9f9e68614610937578063adbd11551461094a576104e3565b80639ec39e2f146108925780639fac5d4a146108b2578063a1194c8e146108ba578063a2631006146108cd578063a3c0c800146108e3576104e3565b8063933f4eef11610252578063933f4eef14610841578063941074fe1461085457806394990bd8146108675780639611ad2d1461086f578063992812b7146108775780639be142831461087f576104e3565b80638a16ce86146107d85780638bb01810146107e05780638fca99b21461080857806390d8c5a41461081b578063923bb7ff1461082e576104e3565b8063570ca735116103c05780636fa97306116103325780637af0e557116102f65780637af0e5571461077a5780637f70cc921461078257806380b2edd81461078a5780638346525f1461079d57806384e37fbf146107bd578063884a7e19146107c5576104e3565b80636fa973061461071957806370011e611461072e5780637445a23b14610741578063761125fc1461075457806379b39f8d14610767576104e3565b806361660c5e1161038457806361660c5e146106d357806361d027b3146106db57806362ca8460146106e3578063689589a2146106f65780636afe4cbe146106fe5780636cc1761e14610711576104e3565b8063570ca735146106955780635812de431461069d5780635967f7ee146106b05780635aa6e675146106b85780635d3cae15146106c0576104e3565b80632e465b2911610459578063466dbe801161041d578063466dbe8014610639578063478426631461064c5780634a5175f4146106545780634ad8efe6146106675780634cacbb421461067a5780634d911ab414610682576104e3565b80632e465b29146105f05780632ea8f44e14610603578063314e5fee1461060b5780633753c6371461061e57806339b70e3814610631576104e3565b80631e57e187116104ab5780631e57e1871461056f57806321310c2b1461058257806326c29c1c14610595578063289b3c0d146105a85780632ae94863146105b05780632d5ad3d5146105d0576104e3565b806305415996146104e85780630af3a496146105065780630b0fd47e1461051b5780630dfbe91b1461053c5780631d1628b31461054f575b600080fd5b6104f0610aba565b6040516104fd919061389d565b60405180910390f35b6105196105143660046133ad565b610ac9565b005b61052e610529366004613301565b610b30565b6040516104fd929190613ddb565b61052e61054a366004613301565b610b4e565b61056261055d366004613701565b610b6c565b6040516104fd9190613982565b61051961057d366004613719565b610b7e565b6105196105903660046133ad565b610be3565b6105196105a3366004613301565b610c3d565b6104f0610c89565b6105c36105be366004613301565b610c98565b6040516104fd9190613d28565b6105e36105de366004613301565b610ce0565b6040516104fd9190613936565b6105196105fe366004613301565b610cfe565b6104f0610d34565b610519610619366004613301565b610d43565b61051961062c366004613301565b610e30565b6104f0610ed3565b61051961064736600461356a565b610ee2565b6104f0610faa565b6105196106623660046134b1565b610fb9565b610519610675366004613340565b61102f565b6104f06110a0565b61051961069036600461379a565b6110af565b6104f06110ed565b6105626106ab366004613701565b6110fc565b6104f061111d565b6104f061112c565b6105196106ce366004613701565b61113b565b6104f061116e565b6104f061117d565b6105196106f1366004613301565b61118c565b6104f0611279565b61051961070c366004613829565b611288565b6104f06112bc565b6107216112cb565b6040516104fd91906138fe565b61051961073c366004613719565b611323565b61051961074f366004613378565b61137c565b6105196107623660046133e8565b6113b0565b610519610775366004613301565b611446565b6104f0611533565b6104f0611542565b610519610798366004613301565b611551565b6107b06107ab366004613701565b611584565b6040516104fd91906138b1565b6104f06115f3565b6105196107d3366004613301565b611602565b6104f0611635565b6107f36107ee366004613301565b611644565b6040516104fd99989796959493929190613941565b6105e3610816366004613340565b611698565b6105196108293660046133ad565b6116b8565b6104f061083c366004613301565b611712565b61051961084f366004613301565b611730565b610519610862366004613776565b611763565b6104f0611797565b6104f06117a6565b6104f06117b5565b6104f061088d366004613301565b6117c4565b6108a56108a0366004613701565b6117df565b6040516104fd9190613d44565b6104f061197a565b6105196108c8366004613301565b611989565b6108d5611ae9565b6040516104fd929190613dcd565b6105196108f1366004613635565b611af2565b6104f0611c49565b61051961090c3660046133ad565b611c58565b61051961091f366004613301565b611cb2565b6105196109323660046133ad565b611ce5565b6105196109453660046133ad565b611d3f565b610562610958366004613701565b611d8c565b61051961096b366004613301565b611d9e565b61051961097e366004613301565b611e41565b6104f0611ee4565b61051961099936600461356a565b611ef3565b6105626109ac366004613701565b611f7c565b6105196109bf366004613301565b611f9a565b6105196109d2366004613301565b612045565b610721612078565b6104f06120ce565b6105196109f5366004613340565b6120dd565b6104f0612110565b6105e3610a10366004613301565b61211f565b6104f0612134565b610519610a2b366004613301565b612143565b6104f06121e6565b610519610a463660046133e8565b6121f5565b610519610a59366004613301565b61229b565b610519610a6c3660046134b1565b61233e565b6104f06123b4565b610519610a87366004613378565b6123c3565b6104f06123f7565b610519610aa2366004613301565b612406565b610562610ab5366004613701565b6124f3565b6001546001600160a01b031690565b6004546001600160a01b03163314610afc5760405162461bcd60e51b8152600401610af390613b51565b60405180910390fd5b60005b8151811015610b2c57610b24828281518110610b1757fe5b6020026020010151612500565b600101610aff565b5050565b600c6020526000908152604090205460ff8082169161010090041682565b600d6020526000908152604090205460ff8082169161010090041682565b600b6020526000908152604090205481565b6004546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610bd857610bd0828281518110610bc357fe5b602002602001015161255a565b600101610bab565b50610b2c82826125b3565b6004546001600160a01b03163314610c0d5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57610c35828281518110610c2857fe5b602002602001015161266b565b600101610c10565b6004546001600160a01b03163314610c675760405162461bcd60e51b8152600401610af390613b51565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b610ca0612ec6565b506001600160a01b0381166000908152600c602090815260409182902082518084019093525460ff8082168452610100909104161515908201525b919050565b6001600160a01b03166000908152600a602052604090205460ff1690565b6004546001600160a01b03163314610d285760405162461bcd60e51b8152600401610af390613b51565b610d31816126c5565b50565b6002546001600160a01b031681565b6004546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190613324565b6001600160a01b031614610e0e5760405162461bcd60e51b8152600401610af390613c60565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116610e805760405162461bcd60e51b8152600401610af3906139c2565b600180546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce90600090a350565b601a546001600160a01b031681565b6004546001600160a01b03163314610f0c5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c5760005b828281518110610f2757fe5b60200260200101516020015151811015610f6957610f61838381518110610f4a57fe5b6020026020010151602001518281518110610bc357fe5b600101610f1b565b50610fa2828281518110610f7957fe5b602002602001015160000151838381518110610f9157fe5b6020026020010151602001516125b3565b600101610f0f565b6018546001600160a01b031681565b6002546001600160a01b03163314610fe35760405162461bcd60e51b8152600401610af390613c29565b60005b8151811015610b2c57611027828281518110610ffe57fe5b60200260200101516000015183838151811061101657fe5b602002602001015160200151612723565b600101610fe6565b6004546001600160a01b031633146110595760405162461bcd60e51b8152600401610af390613b51565b6001600160a01b0382166000908152600c6020526040902054610100900460ff166110965760405162461bcd60e51b8152600401610af390613bd1565b610b2c82826127bf565b6016546001600160a01b031681565b6002546001600160a01b031633146110d95760405162461bcd60e51b8152600401610af390613c29565b6110e685858585856128ba565b5050505050565b6004546001600160a01b031681565b60006014828154811061110b57fe5b90600052602060002001549050919050565b601e546001600160a01b031690565b6000546001600160a01b031681565b6002546001600160a01b031633146111655760405162461bcd60e51b8152600401610af390613c29565b610d3181612abc565b6001546001600160a01b031681565b6005546001600160a01b031681565b6004546001600160a01b031633146111b65760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f957600080fd5b505afa15801561120d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112319190613324565b6001600160a01b0316146112575760405162461bcd60e51b8152600401610af390613c60565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031681565b6002546001600160a01b031633146112b25760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612b93565b601e546001600160a01b031681565b6060601480548060200260200160405190810160405280929190818152602001828054801561131957602002820191906000526020600020905b815481526020019060010190808311611305575b5050505050905090565b6004546001600160a01b0316331461134d5760405162461bcd60e51b8152600401610af390613b51565b61135681612c3a565b6113725760405162461bcd60e51b8152600401610af390613b07565b610b2c82826125b3565b6002546001600160a01b031633146113a65760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612c9d565b6004546001600160a01b031633146113da5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c576114068282815181106113f557fe5b6020026020010151600001516126c5565b61143e82828151811061141557fe5b60200260200101516000015183838151811061142d57fe5b6020026020010151602001516127bf565b6001016113dd565b6004546001600160a01b031633146114705760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b357600080fd5b505afa1580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb9190613324565b6001600160a01b0316146115115760405162461bcd60e51b8152600401610af390613c60565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031690565b601b546001600160a01b031681565b6004546001600160a01b0316331461157b5760405162461bcd60e51b8152600401610af390613b51565b610d318161255a565b6000818152600b60209081526040918290206001018054835181840281018401909452808452606093928301828280156115e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115c9575b50505050509050919050565b6009546001600160a01b031681565b6004546001600160a01b0316331461162c5760405162461bcd60e51b8152600401610af390613b51565b610d3181612d39565b6019546001600160a01b031690565b60106020526000908152604090208054600282015460038301546004840154600585015460069095015460ff8086169661010087048216966201000081048316966301000000909104909216949193919289565b601160209081526000928352604080842090915290825290205460ff1681565b6004546001600160a01b031633146116e25760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c5761170a8282815181106116fd57fe5b6020026020010151612d39565b6001016116e5565b6001600160a01b039081166000908152600e60205260409020541690565b6004546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610af390613b51565b610d3181612d97565b6002546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612de4565b601c546001600160a01b031681565b6003546001600160a01b031681565b6016546001600160a01b031690565b600e602052600090815260409020546001600160a01b031681565b6117e7612edd565b6000828152600f6020908152604091829020825160c0810184528154815260018083015460ff90811615158386015285518087018752600280860154808416835261010090819004841683890152858901929092526003860154909216151560608501526004850180548851948116159092026000190190911691909104601f8101869004860283018601909652858252919492936080860193919291908301828280156118d65780601f106118ab576101008083540402835291602001916118d6565b820191906000526020600020905b8154815290600101906020018083116118b957829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815293820193929183018282801561196a5780601f1061193f5761010080835404028352916020019161196a565b820191906000526020600020905b81548152906001019060200180831161194d57829003601f168201915b5050505050815250509050919050565b601d546001600160a01b031681565b806001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c257600080fd5b505afa1580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190613324565b6001600160a01b0316336001600160a01b031614611a2a5760405162461bcd60e51b8152600401610af3906139e7565b806001600160a01b03166315ba56e56040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611a6557600080fd5b505af1158015611a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9d919061375e565b15611aba5760405162461bcd60e51b8152600401610af390613ae0565b50601780546001600160a01b0319908116909155601c805482169055601a805482169055601d80549091169055565b60125460135482565b6002546001600160a01b03163314611b1c5760405162461bcd60e51b8152600401610af390613c29565b6000855111611b3d5760405162461bcd60e51b8152600401610af390613b88565b8051855114611b5e5760405162461bcd60e51b8152600401610af390613bfa565b8151855114611b7f5760405162461bcd60e51b8152600401610af390613a88565b8351855114611ba05760405162461bcd60e51b8152600401610af390613cdb565b8251855114611bc15760405162461bcd60e51b8152600401610af390613a5d565b60005b8551811015611c4157611c39868281518110611bdc57fe5b6020026020010151868381518110611bf057fe5b6020026020010151868481518110611c0457fe5b6020026020010151868581518110611c1857fe5b6020026020010151868681518110611c2c57fe5b60200260200101516128ba565b600101611bc4565b505050505050565b6019546001600160a01b031681565b6004546001600160a01b03163314611c825760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611caa828281518110611c9d57fe5b6020026020010151612d97565b600101611c85565b6004546001600160a01b03163314611cdc5760405162461bcd60e51b8152600401610af390613b51565b610d318161266b565b6004546001600160a01b03163314611d0f5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611d37828281518110611d2a57fe5b60200260200101516126c5565b600101611d12565b6004546001600160a01b03163314611d695760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611d84828281518110610bc357fe5b600101611d6c565b6000908152600b602052604090205490565b6000546001600160a01b03163314611dc85760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116611dee5760405162461bcd60e51b8152600401610af3906139c2565b600280546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e90600090a350565b6000546001600160a01b03163314611e6b5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116611e915760405162461bcd60e51b8152600401610af3906139c2565b600480546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac07690600090a350565b6017546001600160a01b031681565b6004546001600160a01b03163314611f1d5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611f49828281518110611f3857fe5b602002602001015160200151612c3a565b611f655760405162461bcd60e51b8152600401610af390613b07565b611f74828281518110610f7957fe5b600101611f20565b60158181548110611f8957fe5b600091825260209091200154905081565b6000546001600160a01b03163314611fc45760405162461bcd60e51b8152600401610af39061398b565b611fd6816001600160a01b0316612e7c565b611ff25760405162461bcd60e51b8152600401610af390613c8b565b600680546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907ff7ce03f54d3113e6c232684aee8d4326c04d0d25d0880532d5fe20aff52a385290600090a350565b6004546001600160a01b0316331461206f5760405162461bcd60e51b8152600401610af390613b51565b610d3181612500565b606060158054806020026020016040519081016040528092919081815260200182805480156113195760200282019190600052602060002090815481526020019060010190808311611305575050505050905090565b6018546001600160a01b031690565b6004546001600160a01b031633146121075760405162461bcd60e51b8152600401610af390613b51565b611096826126c5565b6006546001600160a01b031690565b600a6020526000908152604090205460ff1681565b6004546001600160a01b031690565b6000546001600160a01b0316331461216d5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b0381166121935760405162461bcd60e51b8152600401610af3906139c2565b600380546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f1522538090600090a350565b6008546001600160a01b031681565b6004546001600160a01b0316331461221f5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57600c600083838151811061223b57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002054610100900460ff166122845760405162461bcd60e51b8152600401610af390613bd1565b61229382828151811061141557fe5b600101612222565b6000546001600160a01b031633146122c55760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b0381166122eb5760405162461bcd60e51b8152600401610af3906139c2565b600580546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907f62416168b36f7c9244e51510f415e6512f57da42e56fa145081a482f5d5ce4b190600090a350565b6002546001600160a01b031633146123685760405162461bcd60e51b8152600401610af390613c29565b60005b8151811015610b2c576123ac82828151811061238357fe5b60200260200101516000015183838151811061239b57fe5b602002602001015160200151612c9d565b60010161236b565b6007546001600160a01b031681565b6002546001600160a01b031633146123ed5760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612723565b6003546001600160a01b031690565b6004546001600160a01b031633146124305760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561247357600080fd5b505afa158015612487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ab9190613324565b6001600160a01b0316146124d15760405162461bcd60e51b8152600401610af390613c60565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60148181548110611f8957fe5b6001600160a01b0381166000818152600c6020526040808220805461ff001916908190559051339361010090920460ff161515927f70ef6484131845f6ad6f5fbca17ba970d81b6d88facffe0a86445a26844b735f91a450565b6001600160a01b0381166000818152600a6020526040808220805460ff1916600117908190559051339360ff929092161515927f77708ed8f9bdf7c080ae7c78963aa6f52e70010691041c0b8b938a5eb573059991a450565b6125bc82612e82565b6125d85760405162461bcd60e51b8152600401610af390613cb0565b60148054600180820183557fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec90910184905590546000848152600b602090815260409091206000199092018255835161263993929092019190840190612f15565b50604051339083907f116e2ff1d8e145cf56c90f52edfa42b39a6cea0a2f09e5dc9a165bc545b9dd8c90600090a35050565b6001600160a01b0381166000818152600d6020526040808220805461ff001916908190559051339361010090920460ff161515927fac5e05816217145d56701047113cfd15a5b83238ecc0778cb0d807d7bab1c78391a450565b6001600160a01b0381166000818152600c6020526040808220805461ff00191661010090811791829055915133949290910460ff161515927f70ef6484131845f6ad6f5fbca17ba970d81b6d88facffe0a86445a26844b735f91a450565b6001600160a01b0382166000908152600c6020526040902054610100900460ff166127605760405162461bcd60e51b8152600401610af390613bd1565b6001600160a01b0382166000818152600c6020526040808220805460ff191660ff868116919091179182905591513394919092169290917fcf84b287f966c5e78b7ee4a4e83629c9f8e12d5103506289ed75f665f9be60349190a45050565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561280257600080fd5b505afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613324565b6001600160a01b0316146128605760405162461bcd60e51b8152600401610af390613c60565b6001600160a01b038281166000818152600e602052604080822080546001600160a01b031916948616948517905551339392917f1e71d63d9ed2b661b86f8983b9ae7b77b0765ffce598e3a86665d1482823211f91a45050565b6000858152600f602052604090206003015460ff16156128ec5760405162461bcd60e51b8152600401610af390613ab5565b600084511161290d5760405162461bcd60e51b8152600401610af390613a0c565b600083511161292e5760405162461bcd60e51b8152600401610af390613b28565b60158054600181019091557f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475018590556000858152600f60209081526040909120855161298392600490920191870190612f7a565b506000858152600f6020908152604090912084516129a992600590920191860190612f7a565b506000858152600f60209081526040918290206001808201805460ff19908116881515179182905586516002850180549689015196831660ff9283161761ff0019166101009783169790970296909617909555601554600019018085556003909401805490911690921791829055935193831615159392161515917ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612a5190339061389d565b60405180910390a46000858152600f60205260409081902060028101549054915160ff6101008304811693921691907f4094bfe2123affbdc4bb8b026f1f9e040399a1f1ea10d34debea7d9767b8532390612aad90339061389d565b60405180910390a45050505050565b601554811115612ade5760405162461bcd60e51b8152600401610af390613a33565b600060158281548110612aed57fe5b6000918252602080832090910154808352600f90915260409091206003015490915060ff16612b2e5760405162461bcd60e51b8152600401610af390613d04565b6000818152600f602052604080822060038101805460ff1916905560010154905160ff9091161515919084907ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612b8790339061389d565b60405180910390a45050565b6000828152600f602052604090206003015460ff16612bc45760405162461bcd60e51b8152600401610af390613d04565b80516000838152600f60209081526040918290206002810180549286015160ff1990931660ff9586161761ff00191661010093861684021790819055905492519181048416931691907f4094bfe2123affbdc4bb8b026f1f9e040399a1f1ea10d34debea7d9767b8532390612b8790339061389d565b6000805b8251811015612c9457600a6000848381518110612c5757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612c8c576000915050610cdb565b600101612c3e565b50600192915050565b6001600160a01b0382166000908152600d6020526040902054610100900460ff16612cda5760405162461bcd60e51b8152600401610af390613bab565b6001600160a01b0382166000818152600d6020526040808220805460ff191660ff868116919091179182905591513394919092169290917f3500e655253e4fffbb615b83796bac7caee09deb85f6937161144e70a10617a19190a45050565b6001600160a01b0381166000818152600d6020526040808220805461ff00191661010090811791829055915133949290910460ff161515927fac5e05816217145d56701047113cfd15a5b83238ecc0778cb0d807d7bab1c78391a450565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055513392907f77708ed8f9bdf7c080ae7c78963aa6f52e70010691041c0b8b938a5eb5730599908390a450565b6000828152600f602052604090206003015460ff16612e155760405162461bcd60e51b8152600401610af390613d04565b6000828152600f60205260409081902060018101805460ff1916841515179081905560038201549154925160ff918216151593919092161515917ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612b8790339061389d565b3b151590565b601454600090612e9457506001610cdb565b6000828152600b6020526040902054601480548492908110612eb257fe5b906000526020600020015414159050919050565b604080518082019091526000808252602082015290565b6040805160c08101825260008082526020820152908101612efc612ec6565b8152600060208201526060604082018190529081015290565b828054828255906000526020600020908101928215612f6a579160200282015b82811115612f6a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f35565b50612f76929150612ff4565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fbb57805160ff1916838001178555612fe8565b82800160010185558215612fe8579182015b82811115612fe8578251825591602001919060010190612fcd565b50612f76929150613013565b5b80821115612f765780546001600160a01b0319168155600101612ff5565b5b80821115612f765760008155600101613014565b803561303381613e37565b92915050565b600082601f830112613049578081fd5b813561305c61305782613e17565b613df0565b81815291506020808301908481018184028601820187101561307d57600080fd5b60005b848110156130a557813561309381613e37565b84529282019290820190600101613080565b505050505092915050565b600082601f8301126130c0578081fd5b81356130ce61305782613e17565b8181529150602080830190848101818402860182018710156130ef57600080fd5b6000805b8581101561311c578235801515811461310a578283fd5b855293830193918301916001016130f3565b50505050505092915050565b600082601f830112613138578081fd5b813561314661305782613e17565b818152915060208083019084810160005b848110156130a55761316e888484358a0101613246565b84529282019290820190600101613157565b600082601f830112613190578081fd5b813561319e61305782613e17565b81815291506020808301908481016040808502870183018810156131c157600080fd5b60005b8581101561311c576131d689846132af565b855293830193918101916001016131c4565b600082601f8301126131f8578081fd5b813561320661305782613e17565b81815291506020808301908481018184028601820187101561322757600080fd5b60005b848110156130a55781358452928201929082019060010161322a565b600082601f830112613256578081fd5b813567ffffffffffffffff81111561326c578182fd5b61327f601f8201601f1916602001613df0565b915080825283602082850101111561329657600080fd5b8060208401602084013760009082016020015292915050565b6000604082840312156132c0578081fd5b6132ca6040613df0565b90506132d683836132f0565b81526132e583602084016132f0565b602082015292915050565b803560ff8116811461303357600080fd5b600060208284031215613312578081fd5b813561331d81613e37565b9392505050565b600060208284031215613335578081fd5b815161331d81613e37565b60008060408385031215613352578081fd5b823561335d81613e37565b9150602083013561336d81613e37565b809150509250929050565b6000806040838503121561338a578182fd5b823561339581613e37565b91506133a484602085016132f0565b90509250929050565b6000602082840312156133be578081fd5b813567ffffffffffffffff8111156133d4578182fd5b6133e084828501613039565b949350505050565b600060208083850312156133fa578182fd5b823567ffffffffffffffff811115613410578283fd5b8301601f81018513613420578283fd5b803561342e61305782613e17565b818152838101908385016040808502860187018a101561344c578788fd5b8795505b848610156134a35780828b031215613466578788fd5b61346f81613df0565b823561347a81613e37565b81528288013561348981613e37565b818901528452600195909501949286019290810190613450565b509098975050505050505050565b600060208083850312156134c3578182fd5b823567ffffffffffffffff8111156134d9578283fd5b8301601f810185136134e9578283fd5b80356134f761305782613e17565b818152838101908385016040808502860187018a1015613515578788fd5b8795505b848610156134a35780828b03121561352f578788fd5b61353881613df0565b6135428b84613028565b81526135508b8985016132f0565b818901528452600195909501949286019290810190613519565b6000602080838503121561357c578182fd5b823567ffffffffffffffff80821115613593578384fd5b818501915085601f8301126135a6578384fd5b81356135b461305782613e17565b81815284810190848601875b848110156136265781358701604080601f19838f030112156135e0578a8bfd5b6135e981613df0565b828b01358152908201359088821115613600578b8cfd5b61360e8e8c84860101613039565b818c01528652505092870192908701906001016135c0565b50909998505050505050505050565b600080600080600060a0868803121561364c578081fd5b853567ffffffffffffffff80821115613663578283fd5b61366f89838a016131e8565b96506020880135915080821115613684578283fd5b61369089838a01613128565b955060408801359150808211156136a5578283fd5b6136b189838a01613128565b945060608801359150808211156136c6578283fd5b6136d289838a016130b0565b935060808801359150808211156136e7578283fd5b506136f488828901613180565b9150509295509295909350565b600060208284031215613712578081fd5b5035919050565b6000806040838503121561372b578182fd5b82359150602083013567ffffffffffffffff811115613748578182fd5b61375485828601613039565b9150509250929050565b60006020828403121561376f578081fd5b5051919050565b60008060408385031215613788578182fd5b82359150602083013561336d81613e4c565b600080600080600060c086880312156137b1578283fd5b85359450602086013567ffffffffffffffff808211156137cf578485fd5b6137db89838a01613246565b955060408801359150808211156137f0578485fd5b506137fd88828901613246565b935050606086013561380e81613e4c565b915061381d87608088016132af565b90509295509295909350565b6000806060838503121561383b578182fd5b823591506133a484602085016132af565b15159052565b60008151808452815b818110156138775760208185018101518683018201520161385b565b818111156138885782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156138f25783516001600160a01b0316835292840192918401916001016138cd565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156138f25783518352928401929184019160010161391a565b901515815260200190565b9815158952961515602089015294151560408801529215156060870152608086019190915260a085015260c084015260e08301526101008201526101200190565b90815260200190565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b6020808252600b908201526a216164647265737328302960a81b604082015260600190565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b6020808252600d908201526c52505f6e616d655f656d70747960981b604082015260600190565b60208082526010908201526f092dcecc2d8d2c8bea4e0bed2dcc8caf60831b604082015260600190565b602080825260119082015270042a4a0bee6f2dac4ded8e698cadccee8d607b1b604082015260600190565b602080825260139082015272042a4a0bec6c2dc84dee4e4deee98cadccee8d606b1b604082015260600190565b60208082526011908201527052505f616c72656164795f65786973747360781b604082015260600190565b6020808252600d908201526c085d5b985d5d1a1bdc9a5e9959609a1b604082015260600190565b60208082526007908201526621746f6b656e7360c81b604082015260600190565b6020808252600f908201526e52505f73796d626f6c5f656d70747960881b604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b6020808252600990820152680216c656e6774683e360bc1b604082015260600190565b6020808252600c908201526b21637265646974506f6f6c7360a01b604082015260600190565b6020808252600f908201526e216c6971756964697479506f6f6c7360881b604082015260600190565b602080825260159082015274042a4a0bea0deded8a4c2e8d2dccee698cadccee8d605b1b604082015260600190565b6020808252601f908201527f63616c6c6572206973206e6f7420746865207269736b206f70657261746f7200604082015260600190565b602080825260119082015270085c9959da5cdd1c9e50dbdb9d1c9858dd607a1b604082015260600190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b602080825260119082015270042bed2e69ccaeea8ded6cadce690c2e6d607b1b604082015260600190565b6020808252600f908201526e042a4a0bedcc2dacae698cadccee8d608b1b604082015260600190565b6020808252600a90820152692152705f45786973747360b01b604082015260600190565b815160ff16815260209182015115159181019190915260400190565b60006020825282516020830152602083015115156040830152604083015160ff815116606084015260ff6020820151166080840152506060830151613d8c60a084018261384c565b50608083015160e060c0840152613da7610100840182613852565b905060a0840151601f198483030160e0850152613dc48282613852565b95945050505050565b918252602082015260400190565b60ff9290921682521515602082015260400190565b60405181810167ffffffffffffffff81118282101715613e0f57600080fd5b604052919050565b600067ffffffffffffffff821115613e2d578081fd5b5060209081020190565b6001600160a01b0381168114610d3157600080fd5b8015158114610d3157600080fdfea164736f6c634300060c000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104e35760003560e01c80638a16ce861161028e578063ae0cd29911610167578063e4860339116100d9578063f192e82c11610092578063f192e82c14610a5e578063f39c38a014610a71578063fa0ad89614610a79578063fabee0e614610a8c578063fc50f22414610a94578063fe794f9314610aa7576104e3565b8063e486033914610a02578063e7f43c6814610a15578063e990b46c14610a1d578063edd0fd7e14610a30578063ef1bbb9814610a38578063f0f4426014610a4b576104e3565b8063d117f0f21161012b578063d117f0f2146109b1578063d3af584c146109c4578063d41fa529146109d7578063d71f05e6146109df578063d9cafe72146109e7578063e1e1a62e146109fa576104e3565b8063ae0cd2991461095d578063b3ab15fb14610970578063b7407bf614610983578063bcd2c20f1461098b578063cbd6e6c31461099e576104e3565b80639ec39e2f11610200578063a7b61c51116101c4578063a7b61c51146108f6578063a7d8c1a4146108fe578063a91624c614610911578063a99e772114610924578063a9f9e68614610937578063adbd11551461094a576104e3565b80639ec39e2f146108925780639fac5d4a146108b2578063a1194c8e146108ba578063a2631006146108cd578063a3c0c800146108e3576104e3565b8063933f4eef11610252578063933f4eef14610841578063941074fe1461085457806394990bd8146108675780639611ad2d1461086f578063992812b7146108775780639be142831461087f576104e3565b80638a16ce86146107d85780638bb01810146107e05780638fca99b21461080857806390d8c5a41461081b578063923bb7ff1461082e576104e3565b8063570ca735116103c05780636fa97306116103325780637af0e557116102f65780637af0e5571461077a5780637f70cc921461078257806380b2edd81461078a5780638346525f1461079d57806384e37fbf146107bd578063884a7e19146107c5576104e3565b80636fa973061461071957806370011e611461072e5780637445a23b14610741578063761125fc1461075457806379b39f8d14610767576104e3565b806361660c5e1161038457806361660c5e146106d357806361d027b3146106db57806362ca8460146106e3578063689589a2146106f65780636afe4cbe146106fe5780636cc1761e14610711576104e3565b8063570ca735146106955780635812de431461069d5780635967f7ee146106b05780635aa6e675146106b85780635d3cae15146106c0576104e3565b80632e465b2911610459578063466dbe801161041d578063466dbe8014610639578063478426631461064c5780634a5175f4146106545780634ad8efe6146106675780634cacbb421461067a5780634d911ab414610682576104e3565b80632e465b29146105f05780632ea8f44e14610603578063314e5fee1461060b5780633753c6371461061e57806339b70e3814610631576104e3565b80631e57e187116104ab5780631e57e1871461056f57806321310c2b1461058257806326c29c1c14610595578063289b3c0d146105a85780632ae94863146105b05780632d5ad3d5146105d0576104e3565b806305415996146104e85780630af3a496146105065780630b0fd47e1461051b5780630dfbe91b1461053c5780631d1628b31461054f575b600080fd5b6104f0610aba565b6040516104fd919061389d565b60405180910390f35b6105196105143660046133ad565b610ac9565b005b61052e610529366004613301565b610b30565b6040516104fd929190613ddb565b61052e61054a366004613301565b610b4e565b61056261055d366004613701565b610b6c565b6040516104fd9190613982565b61051961057d366004613719565b610b7e565b6105196105903660046133ad565b610be3565b6105196105a3366004613301565b610c3d565b6104f0610c89565b6105c36105be366004613301565b610c98565b6040516104fd9190613d28565b6105e36105de366004613301565b610ce0565b6040516104fd9190613936565b6105196105fe366004613301565b610cfe565b6104f0610d34565b610519610619366004613301565b610d43565b61051961062c366004613301565b610e30565b6104f0610ed3565b61051961064736600461356a565b610ee2565b6104f0610faa565b6105196106623660046134b1565b610fb9565b610519610675366004613340565b61102f565b6104f06110a0565b61051961069036600461379a565b6110af565b6104f06110ed565b6105626106ab366004613701565b6110fc565b6104f061111d565b6104f061112c565b6105196106ce366004613701565b61113b565b6104f061116e565b6104f061117d565b6105196106f1366004613301565b61118c565b6104f0611279565b61051961070c366004613829565b611288565b6104f06112bc565b6107216112cb565b6040516104fd91906138fe565b61051961073c366004613719565b611323565b61051961074f366004613378565b61137c565b6105196107623660046133e8565b6113b0565b610519610775366004613301565b611446565b6104f0611533565b6104f0611542565b610519610798366004613301565b611551565b6107b06107ab366004613701565b611584565b6040516104fd91906138b1565b6104f06115f3565b6105196107d3366004613301565b611602565b6104f0611635565b6107f36107ee366004613301565b611644565b6040516104fd99989796959493929190613941565b6105e3610816366004613340565b611698565b6105196108293660046133ad565b6116b8565b6104f061083c366004613301565b611712565b61051961084f366004613301565b611730565b610519610862366004613776565b611763565b6104f0611797565b6104f06117a6565b6104f06117b5565b6104f061088d366004613301565b6117c4565b6108a56108a0366004613701565b6117df565b6040516104fd9190613d44565b6104f061197a565b6105196108c8366004613301565b611989565b6108d5611ae9565b6040516104fd929190613dcd565b6105196108f1366004613635565b611af2565b6104f0611c49565b61051961090c3660046133ad565b611c58565b61051961091f366004613301565b611cb2565b6105196109323660046133ad565b611ce5565b6105196109453660046133ad565b611d3f565b610562610958366004613701565b611d8c565b61051961096b366004613301565b611d9e565b61051961097e366004613301565b611e41565b6104f0611ee4565b61051961099936600461356a565b611ef3565b6105626109ac366004613701565b611f7c565b6105196109bf366004613301565b611f9a565b6105196109d2366004613301565b612045565b610721612078565b6104f06120ce565b6105196109f5366004613340565b6120dd565b6104f0612110565b6105e3610a10366004613301565b61211f565b6104f0612134565b610519610a2b366004613301565b612143565b6104f06121e6565b610519610a463660046133e8565b6121f5565b610519610a59366004613301565b61229b565b610519610a6c3660046134b1565b61233e565b6104f06123b4565b610519610a87366004613378565b6123c3565b6104f06123f7565b610519610aa2366004613301565b612406565b610562610ab5366004613701565b6124f3565b6001546001600160a01b031690565b6004546001600160a01b03163314610afc5760405162461bcd60e51b8152600401610af390613b51565b60405180910390fd5b60005b8151811015610b2c57610b24828281518110610b1757fe5b6020026020010151612500565b600101610aff565b5050565b600c6020526000908152604090205460ff8082169161010090041682565b600d6020526000908152604090205460ff8082169161010090041682565b600b6020526000908152604090205481565b6004546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610bd857610bd0828281518110610bc357fe5b602002602001015161255a565b600101610bab565b50610b2c82826125b3565b6004546001600160a01b03163314610c0d5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57610c35828281518110610c2857fe5b602002602001015161266b565b600101610c10565b6004546001600160a01b03163314610c675760405162461bcd60e51b8152600401610af390613b51565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b610ca0612ec6565b506001600160a01b0381166000908152600c602090815260409182902082518084019093525460ff8082168452610100909104161515908201525b919050565b6001600160a01b03166000908152600a602052604090205460ff1690565b6004546001600160a01b03163314610d285760405162461bcd60e51b8152600401610af390613b51565b610d31816126c5565b50565b6002546001600160a01b031681565b6004546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610db057600080fd5b505afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de89190613324565b6001600160a01b031614610e0e5760405162461bcd60e51b8152600401610af390613c60565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116610e805760405162461bcd60e51b8152600401610af3906139c2565b600180546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce90600090a350565b601a546001600160a01b031681565b6004546001600160a01b03163314610f0c5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c5760005b828281518110610f2757fe5b60200260200101516020015151811015610f6957610f61838381518110610f4a57fe5b6020026020010151602001518281518110610bc357fe5b600101610f1b565b50610fa2828281518110610f7957fe5b602002602001015160000151838381518110610f9157fe5b6020026020010151602001516125b3565b600101610f0f565b6018546001600160a01b031681565b6002546001600160a01b03163314610fe35760405162461bcd60e51b8152600401610af390613c29565b60005b8151811015610b2c57611027828281518110610ffe57fe5b60200260200101516000015183838151811061101657fe5b602002602001015160200151612723565b600101610fe6565b6004546001600160a01b031633146110595760405162461bcd60e51b8152600401610af390613b51565b6001600160a01b0382166000908152600c6020526040902054610100900460ff166110965760405162461bcd60e51b8152600401610af390613bd1565b610b2c82826127bf565b6016546001600160a01b031681565b6002546001600160a01b031633146110d95760405162461bcd60e51b8152600401610af390613c29565b6110e685858585856128ba565b5050505050565b6004546001600160a01b031681565b60006014828154811061110b57fe5b90600052602060002001549050919050565b601e546001600160a01b031690565b6000546001600160a01b031681565b6002546001600160a01b031633146111655760405162461bcd60e51b8152600401610af390613c29565b610d3181612abc565b6001546001600160a01b031681565b6005546001600160a01b031681565b6004546001600160a01b031633146111b65760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111f957600080fd5b505afa15801561120d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112319190613324565b6001600160a01b0316146112575760405162461bcd60e51b8152600401610af390613c60565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031681565b6002546001600160a01b031633146112b25760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612b93565b601e546001600160a01b031681565b6060601480548060200260200160405190810160405280929190818152602001828054801561131957602002820191906000526020600020905b815481526020019060010190808311611305575b5050505050905090565b6004546001600160a01b0316331461134d5760405162461bcd60e51b8152600401610af390613b51565b61135681612c3a565b6113725760405162461bcd60e51b8152600401610af390613b07565b610b2c82826125b3565b6002546001600160a01b031633146113a65760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612c9d565b6004546001600160a01b031633146113da5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c576114068282815181106113f557fe5b6020026020010151600001516126c5565b61143e82828151811061141557fe5b60200260200101516000015183838151811061142d57fe5b6020026020010151602001516127bf565b6001016113dd565b6004546001600160a01b031633146114705760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b357600080fd5b505afa1580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb9190613324565b6001600160a01b0316146115115760405162461bcd60e51b8152600401610af390613c60565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031690565b601b546001600160a01b031681565b6004546001600160a01b0316331461157b5760405162461bcd60e51b8152600401610af390613b51565b610d318161255a565b6000818152600b60209081526040918290206001018054835181840281018401909452808452606093928301828280156115e757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115c9575b50505050509050919050565b6009546001600160a01b031681565b6004546001600160a01b0316331461162c5760405162461bcd60e51b8152600401610af390613b51565b610d3181612d39565b6019546001600160a01b031690565b60106020526000908152604090208054600282015460038301546004840154600585015460069095015460ff8086169661010087048216966201000081048316966301000000909104909216949193919289565b601160209081526000928352604080842090915290825290205460ff1681565b6004546001600160a01b031633146116e25760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c5761170a8282815181106116fd57fe5b6020026020010151612d39565b6001016116e5565b6001600160a01b039081166000908152600e60205260409020541690565b6004546001600160a01b0316331461175a5760405162461bcd60e51b8152600401610af390613b51565b610d3181612d97565b6002546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612de4565b601c546001600160a01b031681565b6003546001600160a01b031681565b6016546001600160a01b031690565b600e602052600090815260409020546001600160a01b031681565b6117e7612edd565b6000828152600f6020908152604091829020825160c0810184528154815260018083015460ff90811615158386015285518087018752600280860154808416835261010090819004841683890152858901929092526003860154909216151560608501526004850180548851948116159092026000190190911691909104601f8101869004860283018601909652858252919492936080860193919291908301828280156118d65780601f106118ab576101008083540402835291602001916118d6565b820191906000526020600020905b8154815290600101906020018083116118b957829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815293820193929183018282801561196a5780601f1061193f5761010080835404028352916020019161196a565b820191906000526020600020905b81548152906001019060200180831161194d57829003601f168201915b5050505050815250509050919050565b601d546001600160a01b031681565b806001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c257600080fd5b505afa1580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190613324565b6001600160a01b0316336001600160a01b031614611a2a5760405162461bcd60e51b8152600401610af3906139e7565b806001600160a01b03166315ba56e56040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611a6557600080fd5b505af1158015611a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9d919061375e565b15611aba5760405162461bcd60e51b8152600401610af390613ae0565b50601780546001600160a01b0319908116909155601c805482169055601a805482169055601d80549091169055565b60125460135482565b6002546001600160a01b03163314611b1c5760405162461bcd60e51b8152600401610af390613c29565b6000855111611b3d5760405162461bcd60e51b8152600401610af390613b88565b8051855114611b5e5760405162461bcd60e51b8152600401610af390613bfa565b8151855114611b7f5760405162461bcd60e51b8152600401610af390613a88565b8351855114611ba05760405162461bcd60e51b8152600401610af390613cdb565b8251855114611bc15760405162461bcd60e51b8152600401610af390613a5d565b60005b8551811015611c4157611c39868281518110611bdc57fe5b6020026020010151868381518110611bf057fe5b6020026020010151868481518110611c0457fe5b6020026020010151868581518110611c1857fe5b6020026020010151868681518110611c2c57fe5b60200260200101516128ba565b600101611bc4565b505050505050565b6019546001600160a01b031681565b6004546001600160a01b03163314611c825760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611caa828281518110611c9d57fe5b6020026020010151612d97565b600101611c85565b6004546001600160a01b03163314611cdc5760405162461bcd60e51b8152600401610af390613b51565b610d318161266b565b6004546001600160a01b03163314611d0f5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611d37828281518110611d2a57fe5b60200260200101516126c5565b600101611d12565b6004546001600160a01b03163314611d695760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611d84828281518110610bc357fe5b600101611d6c565b6000908152600b602052604090205490565b6000546001600160a01b03163314611dc85760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116611dee5760405162461bcd60e51b8152600401610af3906139c2565b600280546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e90600090a350565b6000546001600160a01b03163314611e6b5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b038116611e915760405162461bcd60e51b8152600401610af3906139c2565b600480546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac07690600090a350565b6017546001600160a01b031681565b6004546001600160a01b03163314611f1d5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57611f49828281518110611f3857fe5b602002602001015160200151612c3a565b611f655760405162461bcd60e51b8152600401610af390613b07565b611f74828281518110610f7957fe5b600101611f20565b60158181548110611f8957fe5b600091825260209091200154905081565b6000546001600160a01b03163314611fc45760405162461bcd60e51b8152600401610af39061398b565b611fd6816001600160a01b0316612e7c565b611ff25760405162461bcd60e51b8152600401610af390613c8b565b600680546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907ff7ce03f54d3113e6c232684aee8d4326c04d0d25d0880532d5fe20aff52a385290600090a350565b6004546001600160a01b0316331461206f5760405162461bcd60e51b8152600401610af390613b51565b610d3181612500565b606060158054806020026020016040519081016040528092919081815260200182805480156113195760200282019190600052602060002090815481526020019060010190808311611305575050505050905090565b6018546001600160a01b031690565b6004546001600160a01b031633146121075760405162461bcd60e51b8152600401610af390613b51565b611096826126c5565b6006546001600160a01b031690565b600a6020526000908152604090205460ff1681565b6004546001600160a01b031690565b6000546001600160a01b0316331461216d5760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b0381166121935760405162461bcd60e51b8152600401610af3906139c2565b600380546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f1522538090600090a350565b6008546001600160a01b031681565b6004546001600160a01b0316331461221f5760405162461bcd60e51b8152600401610af390613b51565b60005b8151811015610b2c57600c600083838151811061223b57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002054610100900460ff166122845760405162461bcd60e51b8152600401610af390613bd1565b61229382828151811061141557fe5b600101612222565b6000546001600160a01b031633146122c55760405162461bcd60e51b8152600401610af39061398b565b6001600160a01b0381166122eb5760405162461bcd60e51b8152600401610af3906139c2565b600580546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907f62416168b36f7c9244e51510f415e6512f57da42e56fa145081a482f5d5ce4b190600090a350565b6002546001600160a01b031633146123685760405162461bcd60e51b8152600401610af390613c29565b60005b8151811015610b2c576123ac82828151811061238357fe5b60200260200101516000015183838151811061239b57fe5b602002602001015160200151612c9d565b60010161236b565b6007546001600160a01b031681565b6002546001600160a01b031633146123ed5760405162461bcd60e51b8152600401610af390613c29565b610b2c8282612723565b6003546001600160a01b031690565b6004546001600160a01b031633146124305760405162461bcd60e51b8152600401610af390613b51565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561247357600080fd5b505afa158015612487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ab9190613324565b6001600160a01b0316146124d15760405162461bcd60e51b8152600401610af390613c60565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b60148181548110611f8957fe5b6001600160a01b0381166000818152600c6020526040808220805461ff001916908190559051339361010090920460ff161515927f70ef6484131845f6ad6f5fbca17ba970d81b6d88facffe0a86445a26844b735f91a450565b6001600160a01b0381166000818152600a6020526040808220805460ff1916600117908190559051339360ff929092161515927f77708ed8f9bdf7c080ae7c78963aa6f52e70010691041c0b8b938a5eb573059991a450565b6125bc82612e82565b6125d85760405162461bcd60e51b8152600401610af390613cb0565b60148054600180820183557fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec90910184905590546000848152600b602090815260409091206000199092018255835161263993929092019190840190612f15565b50604051339083907f116e2ff1d8e145cf56c90f52edfa42b39a6cea0a2f09e5dc9a165bc545b9dd8c90600090a35050565b6001600160a01b0381166000818152600d6020526040808220805461ff001916908190559051339361010090920460ff161515927fac5e05816217145d56701047113cfd15a5b83238ecc0778cb0d807d7bab1c78391a450565b6001600160a01b0381166000818152600c6020526040808220805461ff00191661010090811791829055915133949290910460ff161515927f70ef6484131845f6ad6f5fbca17ba970d81b6d88facffe0a86445a26844b735f91a450565b6001600160a01b0382166000908152600c6020526040902054610100900460ff166127605760405162461bcd60e51b8152600401610af390613bd1565b6001600160a01b0382166000818152600c6020526040808220805460ff191660ff868116919091179182905591513394919092169290917fcf84b287f966c5e78b7ee4a4e83629c9f8e12d5103506289ed75f665f9be60349190a45050565b306001600160a01b0316816001600160a01b03166328c1f99b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561280257600080fd5b505afa158015612816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283a9190613324565b6001600160a01b0316146128605760405162461bcd60e51b8152600401610af390613c60565b6001600160a01b038281166000818152600e602052604080822080546001600160a01b031916948616948517905551339392917f1e71d63d9ed2b661b86f8983b9ae7b77b0765ffce598e3a86665d1482823211f91a45050565b6000858152600f602052604090206003015460ff16156128ec5760405162461bcd60e51b8152600401610af390613ab5565b600084511161290d5760405162461bcd60e51b8152600401610af390613a0c565b600083511161292e5760405162461bcd60e51b8152600401610af390613b28565b60158054600181019091557f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475018590556000858152600f60209081526040909120855161298392600490920191870190612f7a565b506000858152600f6020908152604090912084516129a992600590920191860190612f7a565b506000858152600f60209081526040918290206001808201805460ff19908116881515179182905586516002850180549689015196831660ff9283161761ff0019166101009783169790970296909617909555601554600019018085556003909401805490911690921791829055935193831615159392161515917ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612a5190339061389d565b60405180910390a46000858152600f60205260409081902060028101549054915160ff6101008304811693921691907f4094bfe2123affbdc4bb8b026f1f9e040399a1f1ea10d34debea7d9767b8532390612aad90339061389d565b60405180910390a45050505050565b601554811115612ade5760405162461bcd60e51b8152600401610af390613a33565b600060158281548110612aed57fe5b6000918252602080832090910154808352600f90915260409091206003015490915060ff16612b2e5760405162461bcd60e51b8152600401610af390613d04565b6000818152600f602052604080822060038101805460ff1916905560010154905160ff9091161515919084907ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612b8790339061389d565b60405180910390a45050565b6000828152600f602052604090206003015460ff16612bc45760405162461bcd60e51b8152600401610af390613d04565b80516000838152600f60209081526040918290206002810180549286015160ff1990931660ff9586161761ff00191661010093861684021790819055905492519181048416931691907f4094bfe2123affbdc4bb8b026f1f9e040399a1f1ea10d34debea7d9767b8532390612b8790339061389d565b6000805b8251811015612c9457600a6000848381518110612c5757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612c8c576000915050610cdb565b600101612c3e565b50600192915050565b6001600160a01b0382166000908152600d6020526040902054610100900460ff16612cda5760405162461bcd60e51b8152600401610af390613bab565b6001600160a01b0382166000818152600d6020526040808220805460ff191660ff868116919091179182905591513394919092169290917f3500e655253e4fffbb615b83796bac7caee09deb85f6937161144e70a10617a19190a45050565b6001600160a01b0381166000818152600d6020526040808220805461ff00191661010090811791829055915133949290910460ff161515927fac5e05816217145d56701047113cfd15a5b83238ecc0778cb0d807d7bab1c78391a450565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055513392907f77708ed8f9bdf7c080ae7c78963aa6f52e70010691041c0b8b938a5eb5730599908390a450565b6000828152600f602052604090206003015460ff16612e155760405162461bcd60e51b8152600401610af390613d04565b6000828152600f60205260409081902060018101805460ff1916841515179081905560038201549154925160ff918216151593919092161515917ff1399df5dc4422c1043b8e73d714594b13e53e28b0b6ac5fd34a4ddb3bc0eaad90612b8790339061389d565b3b151590565b601454600090612e9457506001610cdb565b6000828152600b6020526040902054601480548492908110612eb257fe5b906000526020600020015414159050919050565b604080518082019091526000808252602082015290565b6040805160c08101825260008082526020820152908101612efc612ec6565b8152600060208201526060604082018190529081015290565b828054828255906000526020600020908101928215612f6a579160200282015b82811115612f6a57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f35565b50612f76929150612ff4565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612fbb57805160ff1916838001178555612fe8565b82800160010185558215612fe8579182015b82811115612fe8578251825591602001919060010190612fcd565b50612f76929150613013565b5b80821115612f765780546001600160a01b0319168155600101612ff5565b5b80821115612f765760008155600101613014565b803561303381613e37565b92915050565b600082601f830112613049578081fd5b813561305c61305782613e17565b613df0565b81815291506020808301908481018184028601820187101561307d57600080fd5b60005b848110156130a557813561309381613e37565b84529282019290820190600101613080565b505050505092915050565b600082601f8301126130c0578081fd5b81356130ce61305782613e17565b8181529150602080830190848101818402860182018710156130ef57600080fd5b6000805b8581101561311c578235801515811461310a578283fd5b855293830193918301916001016130f3565b50505050505092915050565b600082601f830112613138578081fd5b813561314661305782613e17565b818152915060208083019084810160005b848110156130a55761316e888484358a0101613246565b84529282019290820190600101613157565b600082601f830112613190578081fd5b813561319e61305782613e17565b81815291506020808301908481016040808502870183018810156131c157600080fd5b60005b8581101561311c576131d689846132af565b855293830193918101916001016131c4565b600082601f8301126131f8578081fd5b813561320661305782613e17565b81815291506020808301908481018184028601820187101561322757600080fd5b60005b848110156130a55781358452928201929082019060010161322a565b600082601f830112613256578081fd5b813567ffffffffffffffff81111561326c578182fd5b61327f601f8201601f1916602001613df0565b915080825283602082850101111561329657600080fd5b8060208401602084013760009082016020015292915050565b6000604082840312156132c0578081fd5b6132ca6040613df0565b90506132d683836132f0565b81526132e583602084016132f0565b602082015292915050565b803560ff8116811461303357600080fd5b600060208284031215613312578081fd5b813561331d81613e37565b9392505050565b600060208284031215613335578081fd5b815161331d81613e37565b60008060408385031215613352578081fd5b823561335d81613e37565b9150602083013561336d81613e37565b809150509250929050565b6000806040838503121561338a578182fd5b823561339581613e37565b91506133a484602085016132f0565b90509250929050565b6000602082840312156133be578081fd5b813567ffffffffffffffff8111156133d4578182fd5b6133e084828501613039565b949350505050565b600060208083850312156133fa578182fd5b823567ffffffffffffffff811115613410578283fd5b8301601f81018513613420578283fd5b803561342e61305782613e17565b818152838101908385016040808502860187018a101561344c578788fd5b8795505b848610156134a35780828b031215613466578788fd5b61346f81613df0565b823561347a81613e37565b81528288013561348981613e37565b818901528452600195909501949286019290810190613450565b509098975050505050505050565b600060208083850312156134c3578182fd5b823567ffffffffffffffff8111156134d9578283fd5b8301601f810185136134e9578283fd5b80356134f761305782613e17565b818152838101908385016040808502860187018a1015613515578788fd5b8795505b848610156134a35780828b03121561352f578788fd5b61353881613df0565b6135428b84613028565b81526135508b8985016132f0565b818901528452600195909501949286019290810190613519565b6000602080838503121561357c578182fd5b823567ffffffffffffffff80821115613593578384fd5b818501915085601f8301126135a6578384fd5b81356135b461305782613e17565b81815284810190848601875b848110156136265781358701604080601f19838f030112156135e0578a8bfd5b6135e981613df0565b828b01358152908201359088821115613600578b8cfd5b61360e8e8c84860101613039565b818c01528652505092870192908701906001016135c0565b50909998505050505050505050565b600080600080600060a0868803121561364c578081fd5b853567ffffffffffffffff80821115613663578283fd5b61366f89838a016131e8565b96506020880135915080821115613684578283fd5b61369089838a01613128565b955060408801359150808211156136a5578283fd5b6136b189838a01613128565b945060608801359150808211156136c6578283fd5b6136d289838a016130b0565b935060808801359150808211156136e7578283fd5b506136f488828901613180565b9150509295509295909350565b600060208284031215613712578081fd5b5035919050565b6000806040838503121561372b578182fd5b82359150602083013567ffffffffffffffff811115613748578182fd5b61375485828601613039565b9150509250929050565b60006020828403121561376f578081fd5b5051919050565b60008060408385031215613788578182fd5b82359150602083013561336d81613e4c565b600080600080600060c086880312156137b1578283fd5b85359450602086013567ffffffffffffffff808211156137cf578485fd5b6137db89838a01613246565b955060408801359150808211156137f0578485fd5b506137fd88828901613246565b935050606086013561380e81613e4c565b915061381d87608088016132af565b90509295509295909350565b6000806060838503121561383b578182fd5b823591506133a484602085016132af565b15159052565b60008151808452815b818110156138775760208185018101518683018201520161385b565b818111156138885782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156138f25783516001600160a01b0316835292840192918401916001016138cd565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156138f25783518352928401929184019160010161391a565b901515815260200190565b9815158952961515602089015294151560408801529215156060870152608086019190915260a085015260c084015260e08301526101008201526101200190565b90815260200190565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b6020808252600b908201526a216164647265737328302960a81b604082015260600190565b6020808252600b908201526a21676f7665726e616e636560a81b604082015260600190565b6020808252600d908201526c52505f6e616d655f656d70747960981b604082015260600190565b60208082526010908201526f092dcecc2d8d2c8bea4e0bed2dcc8caf60831b604082015260600190565b602080825260119082015270042a4a0bee6f2dac4ded8e698cadccee8d607b1b604082015260600190565b602080825260139082015272042a4a0bec6c2dc84dee4e4deee98cadccee8d606b1b604082015260600190565b60208082526011908201527052505f616c72656164795f65786973747360781b604082015260600190565b6020808252600d908201526c085d5b985d5d1a1bdc9a5e9959609a1b604082015260600190565b60208082526007908201526621746f6b656e7360c81b604082015260600190565b6020808252600f908201526e52505f73796d626f6c5f656d70747960881b604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b6020808252600990820152680216c656e6774683e360bc1b604082015260600190565b6020808252600c908201526b21637265646974506f6f6c7360a01b604082015260600190565b6020808252600f908201526e216c6971756964697479506f6f6c7360881b604082015260600190565b602080825260159082015274042a4a0bea0deded8a4c2e8d2dccee698cadccee8d605b1b604082015260600190565b6020808252601f908201527f63616c6c6572206973206e6f7420746865207269736b206f70657261746f7200604082015260600190565b602080825260119082015270085c9959da5cdd1c9e50dbdb9d1c9858dd607a1b604082015260600190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b602080825260119082015270042bed2e69ccaeea8ded6cadce690c2e6d607b1b604082015260600190565b6020808252600f908201526e042a4a0bedcc2dacae698cadccee8d608b1b604082015260600190565b6020808252600a90820152692152705f45786973747360b01b604082015260600190565b815160ff16815260209182015115159181019190915260400190565b60006020825282516020830152602083015115156040830152604083015160ff815116606084015260ff6020820151166080840152506060830151613d8c60a084018261384c565b50608083015160e060c0840152613da7610100840182613852565b905060a0840151601f198483030160e0850152613dc48282613852565b95945050505050565b918252602082015260400190565b60ff9290921682521515602082015260400190565b60405181810167ffffffffffffffff81118282101715613e0f57600080fd5b604052919050565b600067ffffffffffffffff821115613e2d578081fd5b5060209081020190565b6001600160a01b0381168114610d3157600080fd5b8015158114610d3157600080fdfea164736f6c634300060c000a" +} diff --git a/deployments/mumbai/RegistryProxy.json b/deployments/mumbai/RegistryProxy.json new file mode 100644 index 000000000..b3f62a5d7 --- /dev/null +++ b/deployments/mumbai/RegistryProxy.json @@ -0,0 +1,1338 @@ +{ + "address": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "allowWhitelistedState", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogAllowWhitelistedStateVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogCreditPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "discontinued", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogDiscontinueVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "isLimitedState", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLimitStateVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLiquidityPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "adapter", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogLiquidityPoolToAdapter", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "minimumDepositAmount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMinimumDepositAmountVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "queueCap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogQueueCapVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "lowerLimit", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "upperLimit", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRPPoolRatings", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "rate", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRateCreditPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint8", + "name": "rate", + "type": "uint8" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRateLiquidityPool", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "bool", + "name": "exists", + "type": "bool" + }, + { + "indexed": true, + "internalType": "bool", + "name": "canBorrow", + "type": "bool" + }, + { + "indexed": false, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogRiskProfile", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "enabled", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "tokensHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogTokensToTokensHash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUnpauseVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "userDepositCap", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUserDepositCapVault", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "vault", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "totalValueLockedLimitInUnderlying", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogVaultTotalValueLockedLimitInUnderlying", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldGovernance", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newGovernance", + "type": "address" + } + ], + "name": "NewGovernance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingGovernance", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingGovernance", + "type": "address" + } + ], + "name": "NewPendingGovernance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "NewPendingImplementation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "financeOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferFinanceOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "optyDistributor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferOPTYDistributor", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "riskOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferRiskOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "strategyOperator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferStrategyOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "treasury", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "TransferTreasury", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "acceptGovernance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "acceptImplementation", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "aprOracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "creditPools", + "outputs": [ + { + "internalType": "uint8", + "name": "rating", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isLiquidityPool", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "financeOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "harvestCodeProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "investStrategyRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "liquidityPoolToAdapter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "liquidityPools", + "outputs": [ + { + "internalType": "uint8", + "name": "rating", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isLiquidityPool", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "odefiVaultBooster", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "operator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opty", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "optyDistributor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "optyStakingRateBalancer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingRegistryImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registryImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "riskProfilesArray", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_financeOperator", + "type": "address" + } + ], + "name": "setFinanceOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_optyDistributor", + "type": "address" + } + ], + "name": "setOPTYDistributor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "setOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newPendingGovernance", + "type": "address" + } + ], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "setPendingImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_riskOperator", + "type": "address" + } + ], + "name": "setRiskOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_strategyOperator", + "type": "address" + } + ], + "name": "setStrategyOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "strategyManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyOperator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "strategyProvider", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "tokensHashIndexes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "tokensHashToTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "vaultToVaultConfiguration", + "outputs": [ + { + "internalType": "bool", + "name": "discontinued", + "type": "bool" + }, + { + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isLimitedState", + "type": "bool" + }, + { + "internalType": "bool", + "name": "allowWhitelistedState", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "withdrawalFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "userDepositCap", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalValueLockedLimitInUnderlying", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "queueCap", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "whitelistedUsers", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawalFeeRange", + "outputs": [ + { + "internalType": "uint256", + "name": "lowerLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "upperLimit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "transactionIndex": 0, + "gasUsed": "1252404", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000001000001000000000010000108000000000000000000000000000004000000000000000000000000000800000000000000008000100000110000000000000000000000000000000000000040000000000000080000000000000000000000000000000000000000000020000000000000080000000000000000000200000000008000020000000000000000041000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000840000000000002000000000000000000000000000000000000002000100000", + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0", + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826444, + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "address": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "topics": [ + "0xcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0" + }, + { + "transactionIndex": 0, + "blockNumber": 25826444, + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "address": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "topics": [ + "0xe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0" + }, + { + "transactionIndex": 0, + "blockNumber": 25826444, + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "address": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "topics": [ + "0xbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f15225380", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542" + ], + "data": "0x", + "logIndex": 2, + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0" + }, + { + "transactionIndex": 0, + "blockNumber": 25826444, + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "address": "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "topics": [ + "0xa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac076", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542" + ], + "data": "0x", + "logIndex": 3, + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0" + }, + { + "transactionIndex": 0, + "blockNumber": 25826444, + "transactionHash": "0x7729b358be15207f47c23c25e534df7b89ae7929dba2eddd79b160c014346446", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x0000000000000000000000000000000000000000000000000121368fe8f8d1c40000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000a13e47fba428806022b0000000000000000000000000000000000000000000000000cbf8023be6b2e3c000000000000000000000000000000000000000000000a13e5a0f0d270fed3ef", + "logIndex": 4, + "blockHash": "0x314a17714f0874284f334c1857cb62efb7d6734ca24c99218dfc7e82cd3950f0" + } + ], + "blockNumber": 25826444, + "cumulativeGasUsed": "1252404", + "status": 1, + "byzantium": true + }, + "args": [], + "bytecode": "0x60806040523480156200001157600080fd5b50600080546001600160a01b03191633908117909155620000329062000059565b6200003d3362000145565b620000483362000231565b62000053336200031d565b62000409565b6000546001600160a01b03163314620000a8576040805162461bcd60e51b815260206004820152601f60248201526000805160206200175d833981519152604482015290519081900360640190fd5b6001600160a01b038116620000f2576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce90600090a350565b6000546001600160a01b0316331462000194576040805162461bcd60e51b815260206004820152601f60248201526000805160206200175d833981519152604482015290519081900360640190fd5b6001600160a01b038116620001de576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e90600090a350565b6000546001600160a01b0316331462000280576040805162461bcd60e51b815260206004820152601f60248201526000805160206200175d833981519152604482015290519081900360640190fd5b6001600160a01b038116620002ca576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f1522538090600090a350565b6000546001600160a01b031633146200036c576040805162461bcd60e51b815260206004820152601f60248201526000805160206200175d833981519152604482015290519081900360640190fd5b6001600160a01b038116620003b6576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac07690600090a350565b61134480620004196000396000f3fe6080604052600436106102295760003560e01c806384e37fbf11610123578063ae0cd299116100ab578063e48603391161006f578063e4860339146107aa578063e990b46c146107dd578063edd0fd7e14610810578063f39c38a014610825578063fe794f931461083a57610233565b8063ae0cd299146106d2578063b3ab15fb14610705578063b7407bf614610738578063cbd6e6c31461074d578063d117f0f21461077757610233565b80639611ad2d116100f25780639611ad2d146106325780639be14283146106475780639fac5d4a1461067a578063a26310061461068f578063a7b61c51146106bd57610233565b806384e37fbf1461053d5780638bb01810146105525780638fca99b2146105ce57806394990bd81461061d57610233565b806339b70e38116101b157806361660c5e1161017557806361660c5e146104d457806361d027b3146104e9578063689589a2146104fe5780636cc1761e146105135780637f70cc921461052857610233565b806339b70e381461046b57806347842663146104805780634cacbb4214610495578063570ca735146104aa5780635aa6e675146104bf57610233565b806315ba56e5116101f857806315ba56e5146103a15780631d1628b3146103c8578063238efcbc146103f25780632ea8f44e146104075780633753c6371461043857610233565b806309ed43c9146102b65780630abb6035146102eb5780630b0fd47e1461031e5780630dfbe91b1461036e57610233565b3661023357600080fd5b6008546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610296576040519150601f19603f3d011682016040523d82523d6000602084013e61029b565b606091505b505090506040513d6000823e8180156102b2573d82f35b3d82fd5b3480156102c257600080fd5b506102e9600480360360208110156102d957600080fd5b50356001600160a01b0316610864565b005b3480156102f757600080fd5b506102e96004803603602081101561030e57600080fd5b50356001600160a01b0316610925565b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b03166109e7565b6040805160ff909316835290151560208301528051918290030190f35b34801561037a57600080fd5b506103516004803603602081101561039157600080fd5b50356001600160a01b0316610a05565b3480156103ad57600080fd5b506103b6610a23565b60408051918252519081900360200190f35b3480156103d457600080fd5b506103b6600480360360208110156103eb57600080fd5b5035610b57565b3480156103fe57600080fd5b506103b6610b69565b34801561041357600080fd5b5061041c610c87565b604080516001600160a01b039092168252519081900360200190f35b34801561044457600080fd5b506102e96004803603602081101561045b57600080fd5b50356001600160a01b0316610c96565b34801561047757600080fd5b5061041c610d7f565b34801561048c57600080fd5b5061041c610d8e565b3480156104a157600080fd5b5061041c610d9d565b3480156104b657600080fd5b5061041c610dac565b3480156104cb57600080fd5b5061041c610dbb565b3480156104e057600080fd5b5061041c610dca565b3480156104f557600080fd5b5061041c610dd9565b34801561050a57600080fd5b5061041c610de8565b34801561051f57600080fd5b5061041c610df7565b34801561053457600080fd5b5061041c610e06565b34801561054957600080fd5b5061041c610e15565b34801561055e57600080fd5b506105856004803603602081101561057557600080fd5b50356001600160a01b0316610e24565b604080519915158a5297151560208a0152951515888801529315156060880152608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b3480156105da57600080fd5b50610609600480360360408110156105f157600080fd5b506001600160a01b0381358116916020013516610e78565b604080519115158252519081900360200190f35b34801561062957600080fd5b5061041c610e98565b34801561063e57600080fd5b5061041c610ea7565b34801561065357600080fd5b5061041c6004803603602081101561066a57600080fd5b50356001600160a01b0316610eb6565b34801561068657600080fd5b5061041c610ed1565b34801561069b57600080fd5b506106a4610ee0565b6040805192835260208301919091528051918290030190f35b3480156106c957600080fd5b5061041c610ee9565b3480156106de57600080fd5b506102e9600480360360208110156106f557600080fd5b50356001600160a01b0316610ef8565b34801561071157600080fd5b506102e96004803603602081101561072857600080fd5b50356001600160a01b0316610fe1565b34801561074457600080fd5b5061041c6110ca565b34801561075957600080fd5b506103b66004803603602081101561077057600080fd5b50356110d9565b34801561078357600080fd5b506102e96004803603602081101561079a57600080fd5b50356001600160a01b03166110f7565b3480156107b657600080fd5b50610609600480360360208110156107cd57600080fd5b50356001600160a01b03166111e8565b3480156107e957600080fd5b506102e96004803603602081101561080057600080fd5b50356001600160a01b03166111fd565b34801561081c57600080fd5b5061041c6112e6565b34801561083157600080fd5b5061041c6112f5565b34801561084657600080fd5b506103b66004803603602081101561085d57600080fd5b5035611304565b6004546001600160a01b031633146108c3576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600980546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a15050565b6004546001600160a01b03163314610984576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600780546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f0624249fed898b3afc1360fbd5a7665f029603fbdc8824ba2713aba4f1702587929181900390910190a15050565b600c6020526000908152604090205460ff8082169161010090041682565b600d6020526000908152604090205460ff8082169161010090041682565b6009546000906001600160a01b031633148015610a4a57506009546001600160a01b031615155b610a9b576040805162461bcd60e51b815260206004820152601e60248201527f2170656e64696e675265676973747279496d706c656d656e746174696f6e0000604482015290519081900360640190fd5b60088054600980546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600954604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160009250505090565b600b6020526000908152604090205481565b6007546000906001600160a01b031633148015610b8557503315155b610bcb576040805162461bcd60e51b81526020600482015260126024820152712170656e64696e67476f7665726e616e636560701b604482015290519081900360640190fd5b60008054600780546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927f48da34dfe9ebb4198c3f70d8382467788dcee33984c79a74fa850772c4e5e36f92908290030190a1600754604080516001600160a01b038085168252909216602083015280517f0624249fed898b3afc1360fbd5a7665f029603fbdc8824ba2713aba4f17025879281900390910190a160009250505090565b6002546001600160a01b031681565b6000546001600160a01b03163314610ce3576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116610d2c576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce90600090a350565b601a546001600160a01b031681565b6018546001600160a01b031681565b6016546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b6006546001600160a01b031681565b601e546001600160a01b031681565b601b546001600160a01b031681565b6009546001600160a01b031681565b60106020526000908152604090208054600282015460038301546004840154600585015460069095015460ff8086169661010087048216966201000081048316966301000000909104909216949193919289565b601160209081526000928352604080842090915290825290205460ff1681565b601c546001600160a01b031681565b6003546001600160a01b031681565b600e602052600090815260409020546001600160a01b031681565b601d546001600160a01b031681565b60125460135482565b6019546001600160a01b031681565b6000546001600160a01b03163314610f45576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116610f8e576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e90600090a350565b6000546001600160a01b0316331461102e576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116611077576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac07690600090a350565b6017546001600160a01b031681565b601581815481106110e657fe5b600091825260209091200154905081565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b611156816001600160a01b0316611311565b611195576040805162461bcd60e51b815260206004820152600b60248201526a085a5cd0dbdb9d1c9858dd60aa1b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907ff7ce03f54d3113e6c232684aee8d4326c04d0d25d0880532d5fe20aff52a385290600090a350565b600a6020526000908152604090205460ff1681565b6000546001600160a01b0316331461124a576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116611293576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f1522538090600090a350565b6008546001600160a01b031681565b6007546001600160a01b031681565b601481815481106110e657fe5b3b15159056fe63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500a164736f6c634300060c000a63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500", + "deployedBytecode": "0x6080604052600436106102295760003560e01c806384e37fbf11610123578063ae0cd299116100ab578063e48603391161006f578063e4860339146107aa578063e990b46c146107dd578063edd0fd7e14610810578063f39c38a014610825578063fe794f931461083a57610233565b8063ae0cd299146106d2578063b3ab15fb14610705578063b7407bf614610738578063cbd6e6c31461074d578063d117f0f21461077757610233565b80639611ad2d116100f25780639611ad2d146106325780639be14283146106475780639fac5d4a1461067a578063a26310061461068f578063a7b61c51146106bd57610233565b806384e37fbf1461053d5780638bb01810146105525780638fca99b2146105ce57806394990bd81461061d57610233565b806339b70e38116101b157806361660c5e1161017557806361660c5e146104d457806361d027b3146104e9578063689589a2146104fe5780636cc1761e146105135780637f70cc921461052857610233565b806339b70e381461046b57806347842663146104805780634cacbb4214610495578063570ca735146104aa5780635aa6e675146104bf57610233565b806315ba56e5116101f857806315ba56e5146103a15780631d1628b3146103c8578063238efcbc146103f25780632ea8f44e146104075780633753c6371461043857610233565b806309ed43c9146102b65780630abb6035146102eb5780630b0fd47e1461031e5780630dfbe91b1461036e57610233565b3661023357600080fd5b6008546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610296576040519150601f19603f3d011682016040523d82523d6000602084013e61029b565b606091505b505090506040513d6000823e8180156102b2573d82f35b3d82fd5b3480156102c257600080fd5b506102e9600480360360208110156102d957600080fd5b50356001600160a01b0316610864565b005b3480156102f757600080fd5b506102e96004803603602081101561030e57600080fd5b50356001600160a01b0316610925565b34801561032a57600080fd5b506103516004803603602081101561034157600080fd5b50356001600160a01b03166109e7565b6040805160ff909316835290151560208301528051918290030190f35b34801561037a57600080fd5b506103516004803603602081101561039157600080fd5b50356001600160a01b0316610a05565b3480156103ad57600080fd5b506103b6610a23565b60408051918252519081900360200190f35b3480156103d457600080fd5b506103b6600480360360208110156103eb57600080fd5b5035610b57565b3480156103fe57600080fd5b506103b6610b69565b34801561041357600080fd5b5061041c610c87565b604080516001600160a01b039092168252519081900360200190f35b34801561044457600080fd5b506102e96004803603602081101561045b57600080fd5b50356001600160a01b0316610c96565b34801561047757600080fd5b5061041c610d7f565b34801561048c57600080fd5b5061041c610d8e565b3480156104a157600080fd5b5061041c610d9d565b3480156104b657600080fd5b5061041c610dac565b3480156104cb57600080fd5b5061041c610dbb565b3480156104e057600080fd5b5061041c610dca565b3480156104f557600080fd5b5061041c610dd9565b34801561050a57600080fd5b5061041c610de8565b34801561051f57600080fd5b5061041c610df7565b34801561053457600080fd5b5061041c610e06565b34801561054957600080fd5b5061041c610e15565b34801561055e57600080fd5b506105856004803603602081101561057557600080fd5b50356001600160a01b0316610e24565b604080519915158a5297151560208a0152951515888801529315156060880152608087019290925260a086015260c085015260e084015261010083015251908190036101200190f35b3480156105da57600080fd5b50610609600480360360408110156105f157600080fd5b506001600160a01b0381358116916020013516610e78565b604080519115158252519081900360200190f35b34801561062957600080fd5b5061041c610e98565b34801561063e57600080fd5b5061041c610ea7565b34801561065357600080fd5b5061041c6004803603602081101561066a57600080fd5b50356001600160a01b0316610eb6565b34801561068657600080fd5b5061041c610ed1565b34801561069b57600080fd5b506106a4610ee0565b6040805192835260208301919091528051918290030190f35b3480156106c957600080fd5b5061041c610ee9565b3480156106de57600080fd5b506102e9600480360360208110156106f557600080fd5b50356001600160a01b0316610ef8565b34801561071157600080fd5b506102e96004803603602081101561072857600080fd5b50356001600160a01b0316610fe1565b34801561074457600080fd5b5061041c6110ca565b34801561075957600080fd5b506103b66004803603602081101561077057600080fd5b50356110d9565b34801561078357600080fd5b506102e96004803603602081101561079a57600080fd5b50356001600160a01b03166110f7565b3480156107b657600080fd5b50610609600480360360208110156107cd57600080fd5b50356001600160a01b03166111e8565b3480156107e957600080fd5b506102e96004803603602081101561080057600080fd5b50356001600160a01b03166111fd565b34801561081c57600080fd5b5061041c6112e6565b34801561083157600080fd5b5061041c6112f5565b34801561084657600080fd5b506103b66004803603602081101561085d57600080fd5b5035611304565b6004546001600160a01b031633146108c3576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600980546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a15050565b6004546001600160a01b03163314610984576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600780546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f0624249fed898b3afc1360fbd5a7665f029603fbdc8824ba2713aba4f1702587929181900390910190a15050565b600c6020526000908152604090205460ff8082169161010090041682565b600d6020526000908152604090205460ff8082169161010090041682565b6009546000906001600160a01b031633148015610a4a57506009546001600160a01b031615155b610a9b576040805162461bcd60e51b815260206004820152601e60248201527f2170656e64696e675265676973747279496d706c656d656e746174696f6e0000604482015290519081900360640190fd5b60088054600980546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600954604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160009250505090565b600b6020526000908152604090205481565b6007546000906001600160a01b031633148015610b8557503315155b610bcb576040805162461bcd60e51b81526020600482015260126024820152712170656e64696e67476f7665726e616e636560701b604482015290519081900360640190fd5b60008054600780546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927f48da34dfe9ebb4198c3f70d8382467788dcee33984c79a74fa850772c4e5e36f92908290030190a1600754604080516001600160a01b038085168252909216602083015280517f0624249fed898b3afc1360fbd5a7665f029603fbdc8824ba2713aba4f17025879281900390910190a160009250505090565b6002546001600160a01b031681565b6000546001600160a01b03163314610ce3576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116610d2c576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fcebe670e32fa7e67739a1eb996a0fa247dec70da938e96fd5b0a5dadd80a93ce90600090a350565b601a546001600160a01b031681565b6018546001600160a01b031681565b6016546001600160a01b031681565b6004546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b6005546001600160a01b031681565b6006546001600160a01b031681565b601e546001600160a01b031681565b601b546001600160a01b031681565b6009546001600160a01b031681565b60106020526000908152604090208054600282015460038301546004840154600585015460069095015460ff8086169661010087048216966201000081048316966301000000909104909216949193919289565b601160209081526000928352604080842090915290825290205460ff1681565b601c546001600160a01b031681565b6003546001600160a01b031681565b600e602052600090815260409020546001600160a01b031681565b601d546001600160a01b031681565b60125460135482565b6019546001600160a01b031681565b6000546001600160a01b03163314610f45576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116610f8e576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fe0b30518e12df67a42f08188523b49c69cbf481de8356250e3cdf8c2aaf7497e90600090a350565b6000546001600160a01b0316331461102e576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116611077576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fa3fa0a434ea340b210144ceac453176b4e181b4467d8692e7144a6b0ab4ac07690600090a350565b6017546001600160a01b031681565b601581815481106110e657fe5b600091825260209091200154905081565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b611156816001600160a01b0316611311565b611195576040805162461bcd60e51b815260206004820152600b60248201526a085a5cd0dbdb9d1c9858dd60aa1b604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907ff7ce03f54d3113e6c232684aee8d4326c04d0d25d0880532d5fe20aff52a385290600090a350565b600a6020526000908152604090205460ff1681565b6000546001600160a01b0316331461124a576040805162461bcd60e51b815260206004820152601f6024820152600080516020611318833981519152604482015290519081900360640190fd5b6001600160a01b038116611293576040805162461bcd60e51b815260206004820152600b60248201526a216164647265737328302960a81b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0383811691909117918290556040513392909116907fbea13b980bfe82b1aba43f1b930ab26252fdea6ef746815f1a17238f1522538090600090a350565b6008546001600160a01b031681565b6007546001600160a01b031681565b601481815481106110e657fe5b3b15159056fe63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500a164736f6c634300060c000a" +} diff --git a/deployments/mumbai/RiskManager.json b/deployments/mumbai/RiskManager.json new file mode 100644 index 000000000..79421a18a --- /dev/null +++ b/deployments/mumbai/RiskManager.json @@ -0,0 +1,188 @@ +{ + "address": "0x4bd545F438A73E4d9dBC0C29ca6Dfa6522F95B48", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "contract RiskManagerProxy", + "name": "_riskManagerProxy", + "type": "address" + } + ], + "name": "become", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "getBestStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "getVaultRewardTokenStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "hold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "convert", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.VaultRewardStrategy", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingRiskManagerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskManagerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0xb4518ee4bfe66b4d04ff27d92d2ba1a05c468342e2ccf5e7ec954db66383d81b", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x4bd545F438A73E4d9dBC0C29ca6Dfa6522F95B48", + "transactionIndex": 0, + "gasUsed": "1043442", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0x196eac55bf39f6e88a1a3177772f88a1eff23bf231f9f8e8a2006eaa0e1d4c1c", + "transactionHash": "0xb4518ee4bfe66b4d04ff27d92d2ba1a05c468342e2ccf5e7ec954db66383d81b", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826455, + "transactionHash": "0xb4518ee4bfe66b4d04ff27d92d2ba1a05c468342e2ccf5e7ec954db66383d81b", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x00000000000000000000000000000000000000000000000000f0f552b53ee4a800000000000000000000000000000000000000000000000008f86f25e094fe00000000000000000000000000000000000000000000000a13fb1078e560b50155000000000000000000000000000000000000000000000000080779d32b561958000000000000000000000000000000000000000000000a13fc016e3815f3e5fd", + "logIndex": 0, + "blockHash": "0x196eac55bf39f6e88a1a3177772f88a1eff23bf231f9f8e8a2006eaa0e1d4c1c" + } + ], + "blockNumber": 25826455, + "cumulativeGasUsed": "1043442", + "status": 1, + "byzantium": true + }, + "args": ["0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C"], + "bytecode": "0x608060405234801561001057600080fd5b5060405161120a38038061120a83398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b611179806100916000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638db4fab41161005b5780638db4fab4146100c8578063a1194c8e146100d0578063a64e1e7b146100e5578063a91ee0dc146101055761007d565b8063231921511461008257806328c1f99b146100ab57806343aa3987146100c0575b600080fd5b610095610090366004610d98565b610118565b6040516100a291906110dd565b60405180910390f35b6100b3610226565b6040516100a29190610f31565b6100b3610235565b6100b3610244565b6100e36100de366004610c08565b610253565b005b6100f86100f3366004610f10565b6103a5565b6040516100a29190610f45565b6100e3610113366004610c08565b6103b8565b610120610a5f565b600260009054906101000a90046001600160a01b03166001600160a01b031663992812b76040518163ffffffff1660e01b815260040160206040518083038186803b15801561016e57600080fd5b505afa158015610182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a69190610c24565b6001600160a01b031663f4448faf836040518263ffffffff1660e01b81526004016101d19190610fac565b604080518083038186803b1580156101e857600080fd5b505afa1580156101fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102209190610ec5565b92915050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610c24565b6001600160a01b0316336001600160a01b0316146103125760405162461bcd60e51b815260040161030990610fb5565b60405180910390fd5b806001600160a01b03166315ba56e56040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561034d57600080fd5b505af1158015610361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103859190610ef8565b156103a25760405162461bcd60e51b81526004016103099061100c565b50565b60606103b183836104be565b9392505050565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190610c24565b6001600160a01b0316336001600160a01b03161461046e5760405162461bcd60e51b815260040161030990611033565b610480816001600160a01b031661090e565b61049c5760405162461bcd60e51b815260040161030990611094565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051638346525f60e01b815260609182916001600160a01b0390911690638346525f906104f3908690600401610fac565b60006040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105479190810190610c40565b9050600081511161056a5760405162461bcd60e51b81526004016103099061106a565b60005b81518110156106315760025482516001600160a01b0390911690632d5ad3d59084908490811061059957fe5b60200260200101516040518263ffffffff1660e01b81526004016105bd9190610f31565b60206040518083038186803b1580156105d557600080fd5b505afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190610d7c565b6106295760405162461bcd60e51b815260040161030990610fec565b60010161056d565b5061063a610a79565b600254604051639ec39e2f60e01b81526001600160a01b0390911690639ec39e2f9061066a908890600401610fac565b60006040518083038186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106be9190810190610df7565b905080606001516106e15760405162461bcd60e51b8152600401610309906110b9565b6002546040805163992812b760e01b815290516060926001600160a01b03169163992812b7916004808301926020929190829003018186803b15801561072657600080fd5b505afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190610c24565b6001600160a01b031663d11917d587876040518363ffffffff1660e01b815260040161078b9291906110f4565b60006040518083038186803b1580156107a357600080fd5b505afa1580156107b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107df9190810190610cde565b90508051600014806107f657506107f68183610914565b1561090557600260009054906101000a90046001600160a01b03166001600160a01b031663992812b76040518163ffffffff1660e01b815260040160206040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190610c24565b6001600160a01b031663f0e182e787876040518363ffffffff1660e01b81526004016108ae9291906110f4565b60006040518083038186803b1580156108c657600080fd5b505afa1580156108da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109029190810190610cde565b90505b95945050505050565b3b151590565b6000805b8351811015610a5557610929610ab1565b60025485516001600160a01b0390911690632ae948639087908590811061094c57fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016109749190610f31565b604080518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c39190610db0565b9050600081602001511580610a045750604085015151825160ff918216911610801590610a02575084604001516020015160ff16826000015160ff1611155b155b90508460200151158015610a16575080155b610a205780610a39565b858381518110610a2c57fe5b6020026020010151604001515b90508015610a4b579250610220915050565b5050600101610918565b5060009392505050565b604051806040016040528060008152602001600081525090565b6040805160c08101825260008082526020820152908101610a98610ab1565b8152600060208201526060604082018190529081015290565b604080518082019091526000808252602082015290565b8051801515811461022057600080fd5b600082601f830112610ae8578081fd5b815167ffffffffffffffff811115610afe578182fd5b6020610b12601f8301601f19168201611102565b92508183528481838601011115610b2857600080fd5b60005b82811015610b46578481018201518482018301528101610b2b565b82811115610b575760008284860101525b50505092915050565b600060408284031215610b71578081fd5b610b7b6040611102565b9050610b878383610bf7565b8152610b968360208401610bf7565b602082015292915050565b600060608284031215610bb2578081fd5b610bbc6060611102565b90508151610bc981611149565b81526020820151610bd981611149565b60208201526040820151610bec8161115e565b604082015292915050565b805160ff8116811461022057600080fd5b600060208284031215610c19578081fd5b81356103b181611149565b600060208284031215610c35578081fd5b81516103b181611149565b60006020808385031215610c52578182fd5b825167ffffffffffffffff811115610c68578283fd5b8301601f81018513610c78578283fd5b8051610c8b610c8682611129565b611102565b8181528381019083850185840285018601891015610ca7578687fd5b8694505b83851015610cd2578051610cbe81611149565b835260019490940193918501918501610cab565b50979650505050505050565b60006020808385031215610cf0578182fd5b825167ffffffffffffffff811115610d06578283fd5b8301601f81018513610d16578283fd5b8051610d24610c8682611129565b818152838101908385016060808502860187018a1015610d42578788fd5b8795505b84861015610d6e57610d588a83610ba1565b8452600195909501949286019290810190610d46565b509098975050505050505050565b600060208284031215610d8d578081fd5b81516103b18161115e565b600060208284031215610da9578081fd5b5035919050565b600060408284031215610dc1578081fd5b610dcb6040611102565b825160ff81168114610ddb578283fd5b81526020830151610deb8161115e565b60208201529392505050565b600060208284031215610e08578081fd5b815167ffffffffffffffff80821115610e1f578283fd5b9083019060e08286031215610e32578283fd5b610e3c60c0611102565b82518152610e4d8660208501610ac8565b6020820152610e5f8660408501610b60565b6040820152610e718660808501610ac8565b606082015260a083015182811115610e87578485fd5b610e9387828601610ad8565b60808301525060c083015182811115610eaa578485fd5b610eb687828601610ad8565b60a08301525095945050505050565b600060408284031215610ed6578081fd5b610ee06040611102565b82518152602083015160208201528091505092915050565b600060208284031215610f09578081fd5b5051919050565b60008060408385031215610f22578081fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b602080825282518282018190526000919060409081850190868401855b82811015610f9f57815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101610f62565b5091979650505050505050565b90815260200190565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b60208082526006908201526510aa37b5b2b760d11b604082015260600190565b6020808252600d908201526c085d5b985d5d1a1bdc9a5e9959609a1b604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b60208082526010908201526f21546f6b656e4861736845786973747360801b604082015260600190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b6020808252600a90820152692152705f45786973747360b01b604082015260600190565b815181526020918201519181019190915260400190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561112157600080fd5b604052919050565b600067ffffffffffffffff82111561113f578081fd5b5060209081020190565b6001600160a01b03811681146103a257600080fd5b80151581146103a257600080fdfea164736f6c634300060c000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638db4fab41161005b5780638db4fab4146100c8578063a1194c8e146100d0578063a64e1e7b146100e5578063a91ee0dc146101055761007d565b8063231921511461008257806328c1f99b146100ab57806343aa3987146100c0575b600080fd5b610095610090366004610d98565b610118565b6040516100a291906110dd565b60405180910390f35b6100b3610226565b6040516100a29190610f31565b6100b3610235565b6100b3610244565b6100e36100de366004610c08565b610253565b005b6100f86100f3366004610f10565b6103a5565b6040516100a29190610f45565b6100e3610113366004610c08565b6103b8565b610120610a5f565b600260009054906101000a90046001600160a01b03166001600160a01b031663992812b76040518163ffffffff1660e01b815260040160206040518083038186803b15801561016e57600080fd5b505afa158015610182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a69190610c24565b6001600160a01b031663f4448faf836040518263ffffffff1660e01b81526004016101d19190610fac565b604080518083038186803b1580156101e857600080fd5b505afa1580156101fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102209190610ec5565b92915050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102a157600080fd5b505afa1580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d99190610c24565b6001600160a01b0316336001600160a01b0316146103125760405162461bcd60e51b815260040161030990610fb5565b60405180910390fd5b806001600160a01b03166315ba56e56040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561034d57600080fd5b505af1158015610361573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103859190610ef8565b156103a25760405162461bcd60e51b81526004016103099061100c565b50565b60606103b183836104be565b9392505050565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190610c24565b6001600160a01b0316336001600160a01b03161461046e5760405162461bcd60e51b815260040161030990611033565b610480816001600160a01b031661090e565b61049c5760405162461bcd60e51b815260040161030990611094565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051638346525f60e01b815260609182916001600160a01b0390911690638346525f906104f3908690600401610fac565b60006040518083038186803b15801561050b57600080fd5b505afa15801561051f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105479190810190610c40565b9050600081511161056a5760405162461bcd60e51b81526004016103099061106a565b60005b81518110156106315760025482516001600160a01b0390911690632d5ad3d59084908490811061059957fe5b60200260200101516040518263ffffffff1660e01b81526004016105bd9190610f31565b60206040518083038186803b1580156105d557600080fd5b505afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190610d7c565b6106295760405162461bcd60e51b815260040161030990610fec565b60010161056d565b5061063a610a79565b600254604051639ec39e2f60e01b81526001600160a01b0390911690639ec39e2f9061066a908890600401610fac565b60006040518083038186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106be9190810190610df7565b905080606001516106e15760405162461bcd60e51b8152600401610309906110b9565b6002546040805163992812b760e01b815290516060926001600160a01b03169163992812b7916004808301926020929190829003018186803b15801561072657600080fd5b505afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190610c24565b6001600160a01b031663d11917d587876040518363ffffffff1660e01b815260040161078b9291906110f4565b60006040518083038186803b1580156107a357600080fd5b505afa1580156107b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107df9190810190610cde565b90508051600014806107f657506107f68183610914565b1561090557600260009054906101000a90046001600160a01b03166001600160a01b031663992812b76040518163ffffffff1660e01b815260040160206040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108819190610c24565b6001600160a01b031663f0e182e787876040518363ffffffff1660e01b81526004016108ae9291906110f4565b60006040518083038186803b1580156108c657600080fd5b505afa1580156108da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109029190810190610cde565b90505b95945050505050565b3b151590565b6000805b8351811015610a5557610929610ab1565b60025485516001600160a01b0390911690632ae948639087908590811061094c57fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016109749190610f31565b604080518083038186803b15801561098b57600080fd5b505afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c39190610db0565b9050600081602001511580610a045750604085015151825160ff918216911610801590610a02575084604001516020015160ff16826000015160ff1611155b155b90508460200151158015610a16575080155b610a205780610a39565b858381518110610a2c57fe5b6020026020010151604001515b90508015610a4b579250610220915050565b5050600101610918565b5060009392505050565b604051806040016040528060008152602001600081525090565b6040805160c08101825260008082526020820152908101610a98610ab1565b8152600060208201526060604082018190529081015290565b604080518082019091526000808252602082015290565b8051801515811461022057600080fd5b600082601f830112610ae8578081fd5b815167ffffffffffffffff811115610afe578182fd5b6020610b12601f8301601f19168201611102565b92508183528481838601011115610b2857600080fd5b60005b82811015610b46578481018201518482018301528101610b2b565b82811115610b575760008284860101525b50505092915050565b600060408284031215610b71578081fd5b610b7b6040611102565b9050610b878383610bf7565b8152610b968360208401610bf7565b602082015292915050565b600060608284031215610bb2578081fd5b610bbc6060611102565b90508151610bc981611149565b81526020820151610bd981611149565b60208201526040820151610bec8161115e565b604082015292915050565b805160ff8116811461022057600080fd5b600060208284031215610c19578081fd5b81356103b181611149565b600060208284031215610c35578081fd5b81516103b181611149565b60006020808385031215610c52578182fd5b825167ffffffffffffffff811115610c68578283fd5b8301601f81018513610c78578283fd5b8051610c8b610c8682611129565b611102565b8181528381019083850185840285018601891015610ca7578687fd5b8694505b83851015610cd2578051610cbe81611149565b835260019490940193918501918501610cab565b50979650505050505050565b60006020808385031215610cf0578182fd5b825167ffffffffffffffff811115610d06578283fd5b8301601f81018513610d16578283fd5b8051610d24610c8682611129565b818152838101908385016060808502860187018a1015610d42578788fd5b8795505b84861015610d6e57610d588a83610ba1565b8452600195909501949286019290810190610d46565b509098975050505050505050565b600060208284031215610d8d578081fd5b81516103b18161115e565b600060208284031215610da9578081fd5b5035919050565b600060408284031215610dc1578081fd5b610dcb6040611102565b825160ff81168114610ddb578283fd5b81526020830151610deb8161115e565b60208201529392505050565b600060208284031215610e08578081fd5b815167ffffffffffffffff80821115610e1f578283fd5b9083019060e08286031215610e32578283fd5b610e3c60c0611102565b82518152610e4d8660208501610ac8565b6020820152610e5f8660408501610b60565b6040820152610e718660808501610ac8565b606082015260a083015182811115610e87578485fd5b610e9387828601610ad8565b60808301525060c083015182811115610eaa578485fd5b610eb687828601610ad8565b60a08301525095945050505050565b600060408284031215610ed6578081fd5b610ee06040611102565b82518152602083015160208201528091505092915050565b600060208284031215610f09578081fd5b5051919050565b60008060408385031215610f22578081fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b602080825282518282018190526000919060409081850190868401855b82811015610f9f57815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101610f62565b5091979650505050505050565b90815260200190565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b60208082526006908201526510aa37b5b2b760d11b604082015260600190565b6020808252600d908201526c085d5b985d5d1a1bdc9a5e9959609a1b604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b60208082526010908201526f21546f6b656e4861736845786973747360801b604082015260600190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b6020808252600a90820152692152705f45786973747360b01b604082015260600190565b815181526020918201519181019190915260400190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561112157600080fd5b604052919050565b600067ffffffffffffffff82111561113f578081fd5b5060209081020190565b6001600160a01b03811681146103a257600080fd5b80151581146103a257600080fdfea164736f6c634300060c000a" +} diff --git a/deployments/mumbai/RiskManagerProxy.json b/deployments/mumbai/RiskManagerProxy.json new file mode 100644 index 000000000..af6f5a0f8 --- /dev/null +++ b/deployments/mumbai/RiskManagerProxy.json @@ -0,0 +1,175 @@ +{ + "address": "0x46F0FD86744AbF60D4beA64564EED55970e3a459", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "NewImplementation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingImplementation", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "NewPendingImplementation", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "acceptImplementation", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pendingRiskManagerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskManagerImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newPendingImplementation", + "type": "address" + } + ], + "name": "setPendingImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "transactionHash": "0xad9936e402b4c9e9bf8aa1fab704edae29eb1f3e8d4fc17d29b7179fa44ec3b3", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x46F0FD86744AbF60D4beA64564EED55970e3a459", + "transactionIndex": 0, + "gasUsed": "398206", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0x5903b61aac15d02d1c06ee7534ad6cee9d8e5863f08ceced9e356ff39b17505a", + "transactionHash": "0xad9936e402b4c9e9bf8aa1fab704edae29eb1f3e8d4fc17d29b7179fa44ec3b3", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826453, + "transactionHash": "0xad9936e402b4c9e9bf8aa1fab704edae29eb1f3e8d4fc17d29b7179fa44ec3b3", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x000000000000000000000000000000000000000000000000005bf4ce5a3f8218000000000000000000000000000000000000000000000000095463f43b1d6a00000000000000000000000000000000000000000000000a13f8426b63822b6bfb00000000000000000000000000000000000000000000000008f86f25e0dde7e8000000000000000000000000000000000000000000000a13f89e6031dc6aee13", + "logIndex": 0, + "blockHash": "0x5903b61aac15d02d1c06ee7534ad6cee9d8e5863f08ceced9e356ff39b17505a" + } + ], + "blockNumber": 25826453, + "cumulativeGasUsed": "398206", + "status": 1, + "byzantium": true + }, + "args": ["0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C"], + "bytecode": "0x608060405234801561001057600080fd5b506040516106333803806106338339818101604052602081101561003357600080fd5b5051600280546001600160a01b0319166001600160a01b039092169190911790556105d0806100636000396000f3fe6080604052600436106100595760003560e01c806309ed43c9146100e657806315ba56e51461011b57806328c1f99b1461014257806343aa3987146101735780638db4fab414610188578063a91ee0dc1461019d57610063565b3661006357600080fd5b600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100c6576040519150601f19603f3d011682016040523d82523d6000602084013e6100cb565b606091505b505090506040513d6000823e8180156100e2573d82f35b3d82fd5b3480156100f257600080fd5b506101196004803603602081101561010957600080fd5b50356001600160a01b03166101d0565b005b34801561012757600080fd5b50610130610308565b60408051918252519081900360200190f35b34801561014e57600080fd5b50610157610426565b604080516001600160a01b039092168252519081900360200190f35b34801561017f57600080fd5b50610157610435565b34801561019457600080fd5b50610157610444565b3480156101a957600080fd5b50610119600480360360208110156101c057600080fd5b50356001600160a01b0316610453565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561021e57600080fd5b505afa158015610232573d6000803e3d6000fd5b505050506040513d602081101561024857600080fd5b50516001600160a01b031633146102a6576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a15050565b6001546000906001600160a01b03163314801561032f57506001546001600160a01b031615155b61036a5760405162461bcd60e51b81526004018080602001828103825260218152602001806105a36021913960400191505060405180910390fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160009250505090565b6002546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a157600080fd5b505afa1580156104b5573d6000803e3d6000fd5b505050506040513d60208110156104cb57600080fd5b50516001600160a01b03163314610529576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b61053b816001600160a01b031661059c565b61057a576040805162461bcd60e51b815260206004820152600b60248201526a085a5cd0dbdb9d1c9858dd60aa1b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3b15159056fe2170656e64696e675269736b4d616e61676572496d706c656d656e746174696f6ea164736f6c634300060c000a", + "deployedBytecode": "0x6080604052600436106100595760003560e01c806309ed43c9146100e657806315ba56e51461011b57806328c1f99b1461014257806343aa3987146101735780638db4fab414610188578063a91ee0dc1461019d57610063565b3661006357600080fd5b600080546040516001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146100c6576040519150601f19603f3d011682016040523d82523d6000602084013e6100cb565b606091505b505090506040513d6000823e8180156100e2573d82f35b3d82fd5b3480156100f257600080fd5b506101196004803603602081101561010957600080fd5b50356001600160a01b03166101d0565b005b34801561012757600080fd5b50610130610308565b60408051918252519081900360200190f35b34801561014e57600080fd5b50610157610426565b604080516001600160a01b039092168252519081900360200190f35b34801561017f57600080fd5b50610157610435565b34801561019457600080fd5b50610157610444565b3480156101a957600080fd5b50610119600480360360208110156101c057600080fd5b50356001600160a01b0316610453565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561021e57600080fd5b505afa158015610232573d6000803e3d6000fd5b505050506040513d602081101561024857600080fd5b50516001600160a01b031633146102a6576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a15050565b6001546000906001600160a01b03163314801561032f57506001546001600160a01b031615155b61036a5760405162461bcd60e51b81526004018080602001828103825260218152602001806105a36021913960400191505060405180910390fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159281900390910190a160009250505090565b6002546001600160a01b031681565b6000546001600160a01b031681565b6001546001600160a01b031681565b600260009054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156104a157600080fd5b505afa1580156104b5573d6000803e3d6000fd5b505050506040513d60208110156104cb57600080fd5b50516001600160a01b03163314610529576040805162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604482015290519081900360640190fd5b61053b816001600160a01b031661059c565b61057a576040805162461bcd60e51b815260206004820152600b60248201526a085a5cd0dbdb9d1c9858dd60aa1b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3b15159056fe2170656e64696e675269736b4d616e61676572496d706c656d656e746174696f6ea164736f6c634300060c000a" +} diff --git a/deployments/mumbai/StrategyProvider.json b/deployments/mumbai/StrategyProvider.json new file mode 100644 index 000000000..bb507a97b --- /dev/null +++ b/deployments/mumbai/StrategyProvider.json @@ -0,0 +1,420 @@ +{ + "address": "0xc3Ae5186FcCb1971eAb1579A9E49988CEadF0936", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "getRpToTokenToBestStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "getRpToTokenToDefaultStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_vaultRewardTokenHash", + "type": "bytes32" + } + ], + "name": "getVaultRewardTokenHashToVaultRewardTokenStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "hold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "convert", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.VaultRewardStrategy", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rpToTokenToBestStrategy", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "rpToTokenToDefaultStrategy", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_strategySteps", + "type": "tuple[]" + } + ], + "name": "setBestDefaultStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_strategySteps", + "type": "tuple[]" + } + ], + "name": "setBestStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_vaultRewardTokenHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "hold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "convert", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.VaultRewardStrategy", + "name": "_vaultRewardStrategy", + "type": "tuple" + } + ], + "name": "setVaultRewardStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "hold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "convert", + "type": "uint256" + } + ], + "internalType": "struct DataTypes.VaultRewardStrategy", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "vaultRewardTokenHashToVaultRewardTokenStrategy", + "outputs": [ + { + "internalType": "uint256", + "name": "hold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "convert", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x749f8bbac0c21f5060527ce30415ee6d72feeeb0b4cbe3ec000b52e03ad06cc7", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0xc3Ae5186FcCb1971eAb1579A9E49988CEadF0936", + "transactionIndex": 0, + "gasUsed": "797383", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0xfa927a812aa49fd035a0357e9f450ee8be8159508f1fe1b71dcdbf70305ccfb0", + "transactionHash": "0x749f8bbac0c21f5060527ce30415ee6d72feeeb0b4cbe3ec000b52e03ad06cc7", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826463, + "transactionHash": "0x749f8bbac0c21f5060527ce30415ee6d72feeeb0b4cbe3ec000b52e03ad06cc7", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x00000000000000000000000000000000000000000000000000b82303cfbeda3a00000000000000000000000000000000000000000000000007de55ced9be1c00000000000000000000000000000000000000000000000a1402390b34824aa5be000000000000000000000000000000000000000000000000072632cb09ff41c6000000000000000000000000000000000000000000000a1402f12e3852097ff8", + "logIndex": 0, + "blockHash": "0xfa927a812aa49fd035a0357e9f450ee8be8159508f1fe1b71dcdbf70305ccfb0" + } + ], + "blockNumber": 25826463, + "cumulativeGasUsed": "797383", + "status": 1, + "byzantium": true + }, + "args": ["0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C"], + "bytecode": "0x608060405234801561001057600080fd5b50604051610d96380380610d9683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610082565b600060208284031215610065578081fd5b81516001600160a01b038116811461007b578182fd5b9392505050565b610d05806100916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063a91ee0dc11610071578063a91ee0dc14610144578063b06eed5e14610157578063d11917d51461016a578063e914aac51461018a578063f0e182e71461019d578063f4448faf146101b0576100a9565b80631ae5c8cb146100ae57806328c1f99b146100d95780632f5fa900146100ee5780632f647a2314610103578063373b9a8a14610124575b600080fd5b6100c16100bc366004610b2f565b6101c3565b6040516100d093929190610b5a565b60405180910390f35b6100e1610221565b6040516100d09190610be5565b6101016100fc366004610a6e565b610230565b005b6101166101113660046109e6565b6103bc565b6040516100d0929190610cae565b6101376101323660046109fe565b6103d5565b6040516100d09190610c97565b6101016101523660046109a7565b6104c6565b610101610165366004610a6e565b6105ca565b61017d610178366004610a4d565b610747565b6040516100d09190610b7e565b6100c1610198366004610b2f565b6107e9565b61017d6101ab366004610a4d565b61080e565b6101376101be3660046109e6565b6108a1565b600260205282600052604060002060205281600052604060002081815481106101e857fe5b6000918252602090912060029091020180546001909101546001600160a01b0391821694509081169250600160a01b900460ff16905083565b6000546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b491906109ca565b6001600160a01b0316336001600160a01b0316146102ed5760405162461bcd60e51b81526004016102e490610c30565b60405180910390fd5b6000838152600260209081526040808320858452909152812061030f916108d9565b60005b81518110156103b65760008481526002602090815260408083208684529091529020825183908390811061034257fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b9115159190910217905501610312565b50505050565b6003602052600090815260409020805460019091015482565b6103dd6108fd565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561042957600080fd5b505afa15801561043d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046191906109ca565b6001600160a01b0316336001600160a01b0316146104915760405162461bcd60e51b81526004016102e490610c30565b508051600092835260036020908152604093849020828155928101516001909301839055835180850190945290835282015290565b60008054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a91906109ca565b6001600160a01b0316336001600160a01b03161461057a5760405162461bcd60e51b81526004016102e490610bf9565b61058c816001600160a01b03166108d3565b6105a85760405162461bcd60e51b81526004016102e490610c72565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e91906109ca565b6001600160a01b0316336001600160a01b03161461067e5760405162461bcd60e51b81526004016102e490610c30565b600083815260016020908152604080832085845290915281206106a0916108d9565b60005b81518110156103b6576000848152600160209081526040808320868452909152902082518390839081106106d357fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b91151591909102179055016106a3565b60008281526001602090815260408083208484528252808320805482518185028101850190935280835260609492939192909184015b828210156107dd576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161077d565b50505050905092915050565b600160205282600052604060002060205281600052604060002081815481106101e857fe5b600082815260026020908152604080832084845282528083208054825181850281018501909352808352606094929391929091840182156107dd576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161077d565b6108a96108fd565b50600090815260036020908152604091829020825180840190935280548352600101549082015290565b3b151590565b50805460008255600202906000526020600020908101906108fa9190610917565b50565b604051806040016040528060008152602001600081525090565b5b808211156109485780546001600160a01b03191681556001810180546001600160a81b0319169055600201610918565b5090565b60006060828403121561095d578081fd5b6109676060610cbc565b9050813561097481610ce3565b8152602082013561098481610ce3565b60208201526040820135801515811461099c57600080fd5b604082015292915050565b6000602082840312156109b8578081fd5b81356109c381610ce3565b9392505050565b6000602082840312156109db578081fd5b81516109c381610ce3565b6000602082840312156109f7578081fd5b5035919050565b6000808284036060811215610a11578182fd5b833592506040601f1982011215610a26578182fd5b50610a316040610cbc565b6020840135815260408401356020820152809150509250929050565b60008060408385031215610a5f578182fd5b50508035926020909101359150565b60008060006060808587031215610a83578182fd5b843593506020808601359350604086013567ffffffffffffffff80821115610aa9578485fd5b818801915088601f830112610abc578485fd5b813581811115610aca578586fd5b610ad78485830201610cbc565b8181528481019250838501868302850186018c1015610af4578788fd5b8794505b82851015610b1e57610b0a8c8261094c565b845260019490940193928501928601610af8565b508096505050505050509250925092565b600080600060608486031215610b43578283fd5b505081359360208301359350604090920135919050565b6001600160a01b039384168152919092166020820152901515604082015260600190565b602080825282518282018190526000919060409081850190868401855b82811015610bd857815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101610b9b565b5091979650505050505050565b6001600160a01b0391909116815260200190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b60208082526022908201527f63616c6c6572206973206e6f74207468652073747261746567794f706572617460408201526137b960f11b606082015260800190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b815181526020918201519181019190915260400190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610cdb57600080fd5b604052919050565b6001600160a01b03811681146108fa57600080fdfea164736f6c634300060c000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063a91ee0dc11610071578063a91ee0dc14610144578063b06eed5e14610157578063d11917d51461016a578063e914aac51461018a578063f0e182e71461019d578063f4448faf146101b0576100a9565b80631ae5c8cb146100ae57806328c1f99b146100d95780632f5fa900146100ee5780632f647a2314610103578063373b9a8a14610124575b600080fd5b6100c16100bc366004610b2f565b6101c3565b6040516100d093929190610b5a565b60405180910390f35b6100e1610221565b6040516100d09190610be5565b6101016100fc366004610a6e565b610230565b005b6101166101113660046109e6565b6103bc565b6040516100d0929190610cae565b6101376101323660046109fe565b6103d5565b6040516100d09190610c97565b6101016101523660046109a7565b6104c6565b610101610165366004610a6e565b6105ca565b61017d610178366004610a4d565b610747565b6040516100d09190610b7e565b6100c1610198366004610b2f565b6107e9565b61017d6101ab366004610a4d565b61080e565b6101376101be3660046109e6565b6108a1565b600260205282600052604060002060205281600052604060002081815481106101e857fe5b6000918252602090912060029091020180546001909101546001600160a01b0391821694509081169250600160a01b900460ff16905083565b6000546001600160a01b031681565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561027c57600080fd5b505afa158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b491906109ca565b6001600160a01b0316336001600160a01b0316146102ed5760405162461bcd60e51b81526004016102e490610c30565b60405180910390fd5b6000838152600260209081526040808320858452909152812061030f916108d9565b60005b81518110156103b65760008481526002602090815260408083208684529091529020825183908390811061034257fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b9115159190910217905501610312565b50505050565b6003602052600090815260409020805460019091015482565b6103dd6108fd565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561042957600080fd5b505afa15801561043d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046191906109ca565b6001600160a01b0316336001600160a01b0316146104915760405162461bcd60e51b81526004016102e490610c30565b508051600092835260036020908152604093849020828155928101516001909301839055835180850190945290835282015290565b60008054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a91906109ca565b6001600160a01b0316336001600160a01b03161461057a5760405162461bcd60e51b81526004016102e490610bf9565b61058c816001600160a01b03166108d3565b6105a85760405162461bcd60e51b81526004016102e490610c72565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008054906101000a90046001600160a01b03166001600160a01b031663fabee0e66040518163ffffffff1660e01b815260040160206040518083038186803b15801561061657600080fd5b505afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e91906109ca565b6001600160a01b0316336001600160a01b03161461067e5760405162461bcd60e51b81526004016102e490610c30565b600083815260016020908152604080832085845290915281206106a0916108d9565b60005b81518110156103b6576000848152600160209081526040808320868452909152902082518390839081106106d357fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b91151591909102179055016106a3565b60008281526001602090815260408083208484528252808320805482518185028101850190935280835260609492939192909184015b828210156107dd576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161077d565b50505050905092915050565b600160205282600052604060002060205281600052604060002081815481106101e857fe5b600082815260026020908152604080832084845282528083208054825181850281018501909352808352606094929391929091840182156107dd576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161077d565b6108a96108fd565b50600090815260036020908152604091829020825180840190935280548352600101549082015290565b3b151590565b50805460008255600202906000526020600020908101906108fa9190610917565b50565b604051806040016040528060008152602001600081525090565b5b808211156109485780546001600160a01b03191681556001810180546001600160a81b0319169055600201610918565b5090565b60006060828403121561095d578081fd5b6109676060610cbc565b9050813561097481610ce3565b8152602082013561098481610ce3565b60208201526040820135801515811461099c57600080fd5b604082015292915050565b6000602082840312156109b8578081fd5b81356109c381610ce3565b9392505050565b6000602082840312156109db578081fd5b81516109c381610ce3565b6000602082840312156109f7578081fd5b5035919050565b6000808284036060811215610a11578182fd5b833592506040601f1982011215610a26578182fd5b50610a316040610cbc565b6020840135815260408401356020820152809150509250929050565b60008060408385031215610a5f578182fd5b50508035926020909101359150565b60008060006060808587031215610a83578182fd5b843593506020808601359350604086013567ffffffffffffffff80821115610aa9578485fd5b818801915088601f830112610abc578485fd5b813581811115610aca578586fd5b610ad78485830201610cbc565b8181528481019250838501868302850186018c1015610af4578788fd5b8794505b82851015610b1e57610b0a8c8261094c565b845260019490940193928501928601610af8565b508096505050505050509250925092565b600080600060608486031215610b43578283fd5b505081359360208301359350604090920135919050565b6001600160a01b039384168152919092166020820152901515604082015260600190565b602080825282518282018190526000919060409081850190868401855b82811015610bd857815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101610b9b565b5091979650505050505050565b6001600160a01b0391909116815260200190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b60208082526022908201527f63616c6c6572206973206e6f74207468652073747261746567794f706572617460408201526137b960f11b606082015260800190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b815181526020918201519181019190915260400190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715610cdb57600080fd5b604052919050565b6001600160a01b03811681146108fa57600080fdfea164736f6c634300060c000a" +} diff --git a/deployments/mumbai/opUSDCgrow.json b/deployments/mumbai/opUSDCgrow.json new file mode 100644 index 000000000..8cedfa8d2 --- /dev/null +++ b/deployments/mumbai/opUSDCgrow.json @@ -0,0 +1,1492 @@ +{ + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ProxyImplementationUpdated", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "id", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "emergencyShutdown", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogEmergencyShutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "minimumDepositValueUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMinimumDepositValueUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "totalValueLockedLimitUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogTotalValueLockedLimitUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUnpause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "userDepositCapUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUserDepositCapUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "name": "adminCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balanceUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "blockToBlockVaultValues", + "outputs": [ + { + "internalType": "uint256", + "name": "actualVaultValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockMinVaultValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockMaxVaultValue", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositUT", + "type": "uint256" + } + ], + "name": "calcDepositFeeUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userWithdrawUT", + "type": "uint256" + } + ], + "name": "calcWithdrawalFeeUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_investStrategySteps", + "type": "tuple[]" + } + ], + "name": "computeInvestStrategyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getInvestStrategySteps", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_investStrategySteps", + "type": "tuple[]" + } + ], + "name": "getLastStrategyStepBalanceLP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextBestInvestStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPricePerFullShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "investStrategyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "investStrategySteps", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_diff", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_currentVaultValue", + "type": "uint256" + } + ], + "name": "isMaxVaultValueJumpAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumDepositValueUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opTOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingDeposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "queue", + "outputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_active", + "type": "bool" + } + ], + "name": "setEmergencyShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumDepositValueUT", + "type": "uint256" + } + ], + "name": "setMinimumDepositValueUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + } + ], + "name": "setRiskProfileCode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_totalValueLockedLimitUT", + "type": "uint256" + } + ], + "name": "setTotalValueLockedLimitUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "setUnderlyingTokensHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_unpaused", + "type": "bool" + } + ], + "name": "setUnpaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositCapUT", + "type": "uint256" + } + ], + "name": "setUserDepositCapUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositCapUT", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minimumDepositValueUT", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_totalValueLockedLimitUT", + "type": "uint256" + } + ], + "name": "setValueControlParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_vaultConfiguration", + "type": "uint256" + } + ], + "name": "setVaultConfiguration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_whitelistedAccountsRoot", + "type": "bytes32" + } + ], + "name": "setWhitelistedAccountsRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_whitelistedCodesRoot", + "type": "bytes32" + } + ], + "name": "setWhitelistedCodesRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "totalDeposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalValueLockedLimitUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underlyingToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "underlyingTokensHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userDepositCapUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "bool", + "name": "_addUserDepositUT", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "_userDepositUTWithDeductions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_deductions", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userDepositPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositUT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userDepositVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_userWithdrawVT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userWithdrawPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userWithdrawVT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userWithdrawVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultConfiguration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultDepositAllToStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultDepositPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultWithdrawPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "whitelistedAccountsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "whitelistedCodesRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + } + ], + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x72aba46f25C4c270d20c575D023627B45E307446", + "transactionIndex": 0, + "gasUsed": "825168", + "logsBloom": "0x00000000000008000000000000000000000000000000000400800000000000000000000000000000001400000000000000008000008000000000000000000000000000000000000000000000000000800001000000000000000100000000004008000000020000000000000000000800000000000000010080000000000000400000000000000000000000000000000000000020000080000000000000000000200000000000000000000000000200000000000000000000000000000000004000000000000000000001000000000000000000000000000400100040000020020000000000000000200400000000000000000000000000000000002000100000", + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1", + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "topics": [ + "0x5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b7379068296", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000004e4e888d767823c44c3f3f9e879fb843b961fcfe" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + }, + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000320305a31dd2af0195c66f733662646a74c09c4f" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + }, + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000be188d6641e8b680743a4815dfa0f6208038960f" + ], + "data": "0x00000000000000000000000000000000000000000000000000be8d95c65bce30000000000000000000000000000000000000000000000000070af0b440877200000000000000000000000000000000000000000000000ee5a6efc85896a4bbbc000000000000000000000000000000000000000000000000064c631e7a2ba3d0000000000000000000000000000000000000000000000ee5a7ae55ee5d0089ec", + "logIndex": 2, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + } + ], + "blockNumber": 25826498, + "cumulativeGasUsed": "825168", + "status": 1, + "byzantium": true + }, + "args": [ + "0x4E4E888d767823c44C3f3F9E879fb843B961FCfE", + "0x320305A31dd2aF0195C66F733662646a74C09C4F", + "0x76e57d0300000000000000000000000032bd1a6fdaec327b57cdb2cfde0855afb3255d7cc929d122f2ee0e0a6364f59c9c9f4f01383050c42ebefae1b80ae28b1bc9d8fe00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000f5553444320436f696e2028506f5329000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000" + ], + "solcInputHash": "2db89642daf7ebd20cbbef9f4540b20d", + "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ProxyImplementationUpdated\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"id\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Proxy implementing EIP173 for ownership management\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.7/proxy/EIP173Proxy.sol\":\"EIP173Proxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.7/proxy/EIP173Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\nimport \\\"./Proxy.sol\\\";\\n\\ninterface ERC165 {\\n function supportsInterface(bytes4 id) external view returns (bool);\\n}\\n\\n///@notice Proxy implementing EIP173 for ownership management\\ncontract EIP173Proxy is Proxy {\\n // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////\\n\\n constructor(\\n address implementationAddress,\\n address ownerAddress,\\n bytes memory data\\n ) payable {\\n _setImplementation(implementationAddress, data);\\n _setOwner(ownerAddress);\\n }\\n\\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n function owner() external view returns (address) {\\n return _owner();\\n }\\n\\n function supportsInterface(bytes4 id) external view returns (bool) {\\n if (id == 0x01ffc9a7 || id == 0x7f5828d0) {\\n return true;\\n }\\n if (id == 0xFFFFFFFF) {\\n return false;\\n }\\n\\n ERC165 implementation;\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n implementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n }\\n\\n // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure\\n // because it is itself inside `supportsInterface` that might only get 30,000 gas.\\n // In practise this is unlikely to be an issue.\\n try implementation.supportsInterface(id) returns (bool support) {\\n return support;\\n } catch {\\n return false;\\n }\\n }\\n\\n function transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n function upgradeTo(address newImplementation) external onlyOwner {\\n _setImplementation(newImplementation, \\\"\\\");\\n }\\n\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable onlyOwner {\\n _setImplementation(newImplementation, data);\\n }\\n\\n // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////\\n\\n modifier onlyOwner() {\\n require(msg.sender == _owner(), \\\"NOT_AUTHORIZED\\\");\\n _;\\n }\\n\\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n function _owner() internal view returns (address adminAddress) {\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n adminAddress := sload(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n address previousOwner = _owner();\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n sstore(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103, newOwner)\\n }\\n emit OwnershipTransferred(previousOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x7f9bbb686cd29ade05acf0cec1bfded16f0ad8d7e3fcb9cf35cc8b04efdda744\",\"license\":\"MIT\"},\"solc_0.7/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\n// EIP-1967\\nabstract contract Proxy {\\n // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////\\n\\n event ProxyImplementationUpdated(address indexed previousImplementation, address indexed newImplementation);\\n\\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n receive() external payable virtual {\\n revert(\\\"ETHER_REJECTED\\\"); // explicit reject by default\\n }\\n\\n fallback() external payable {\\n _fallback();\\n }\\n\\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n function _fallback() internal {\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n let implementationAddress := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n calldatacopy(0x0, 0x0, calldatasize())\\n let success := delegatecall(gas(), implementationAddress, 0x0, calldatasize(), 0, 0)\\n let retSz := returndatasize()\\n returndatacopy(0, 0, retSz)\\n switch success\\n case 0 {\\n revert(0, retSz)\\n }\\n default {\\n return(0, retSz)\\n }\\n }\\n }\\n\\n function _setImplementation(address newImplementation, bytes memory data) internal {\\n address previousImplementation;\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n previousImplementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n }\\n\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, newImplementation)\\n }\\n\\n emit ProxyImplementationUpdated(previousImplementation, newImplementation);\\n\\n if (data.length > 0) {\\n (bool success, ) = newImplementation.delegatecall(data);\\n if (!success) {\\n assembly {\\n // This assembly ensure the revert contains the exact string data\\n let returnDataSize := returndatasize()\\n returndatacopy(0, 0, returnDataSize)\\n revert(0, returnDataSize)\\n }\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfa071ffed5c967384ac4787576322a46a4863d89bf39cd6fde58d4780b42e0ed\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x6080604052604051610bed380380610bed8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b506040525050506100f1838261010260201b60201c565b6100fa82610225565b505050610299565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8054908390556040516001600160a01b0380851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a3815115610220576000836001600160a01b0316836040518082805190602001908083835b602083106101a55780518252601f199092019160209182019101610186565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610205576040519150601f19603f3d011682016040523d82523d6000602084013e61020a565b606091505b505090508061021e573d806000803e806000fd5b505b505050565b600061022f610286565b905081600080516020610bcd83398151915255816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080516020610bcd8339815191525490565b610925806102a86000396000f3fe60806040526004361061005e5760003560e01c80634f1ef286116100435780634f1ef286146101745780638da5cb5b14610201578063f2fde38b1461023f576100ca565b806301ffc9a7146100d45780633659cfe614610134576100ca565b366100ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45544845525f52454a4543544544000000000000000000000000000000000000604482015290519081900360640190fd5b6100d261027f565b005b3480156100e057600080fd5b50610120600480360360208110156100f757600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102ca565b604080519115158252519081900360200190f35b34801561014057600080fd5b506100d26004803603602081101561015757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661048d565b6100d26004803603604081101561018a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111640100000000831117156101f657600080fd5b50909250905061054a565b34801561020d57600080fd5b50610216610630565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024b57600080fd5b506100d26004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661063f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e8280156102c0578183f35b8183fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061035d57507f7f5828d0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b1561036a57506001610488565b7fffffffff00000000000000000000000000000000000000000000000000000000808316141561039c57506000610488565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000085166004820152905173ffffffffffffffffffffffffffffffffffffffff8316916301ffc9a7916024808301926020929190829003018186803b15801561044c57600080fd5b505afa92505050801561047157506040513d602081101561046c57600080fd5b505160015b61047f576000915050610488565b91506104889050565b919050565b6104956106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b610547816040518060200160405280600081525061070e565b50565b6105526106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61062b8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061070e92505050565b505050565b600061063a6106e9565b905090565b6106476106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61054781610862565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80549083905560405173ffffffffffffffffffffffffffffffffffffffff80851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a381511561062b5760008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106107e957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107ac565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050806102c4573d806000803e806000fd5b600061086c6106e9565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505056fea26469706673582212208c8442845e51519fe66269cee8fe054b83b7617dbcd8cf4d60740d273fa0b8a464736f6c63430007060033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + "deployedBytecode": "0x60806040526004361061005e5760003560e01c80634f1ef286116100435780634f1ef286146101745780638da5cb5b14610201578063f2fde38b1461023f576100ca565b806301ffc9a7146100d45780633659cfe614610134576100ca565b366100ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45544845525f52454a4543544544000000000000000000000000000000000000604482015290519081900360640190fd5b6100d261027f565b005b3480156100e057600080fd5b50610120600480360360208110156100f757600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102ca565b604080519115158252519081900360200190f35b34801561014057600080fd5b506100d26004803603602081101561015757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661048d565b6100d26004803603604081101561018a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111640100000000831117156101f657600080fd5b50909250905061054a565b34801561020d57600080fd5b50610216610630565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024b57600080fd5b506100d26004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661063f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e8280156102c0578183f35b8183fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061035d57507f7f5828d0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b1561036a57506001610488565b7fffffffff00000000000000000000000000000000000000000000000000000000808316141561039c57506000610488565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000085166004820152905173ffffffffffffffffffffffffffffffffffffffff8316916301ffc9a7916024808301926020929190829003018186803b15801561044c57600080fd5b505afa92505050801561047157506040513d602081101561046c57600080fd5b505160015b61047f576000915050610488565b91506104889050565b919050565b6104956106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b610547816040518060200160405280600081525061070e565b50565b6105526106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61062b8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061070e92505050565b505050565b600061063a6106e9565b905090565b6106476106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61054781610862565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80549083905560405173ffffffffffffffffffffffffffffffffffffffff80851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a381511561062b5760008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106107e957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107ac565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050806102c4573d806000803e806000fd5b600061086c6106e9565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505056fea26469706673582212208c8442845e51519fe66269cee8fe054b83b7617dbcd8cf4d60740d273fa0b8a464736f6c63430007060033", + "execute": { + "methodName": "initialize", + "args": [ + "0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", + "0xc929d122f2ee0e0a6364f59c9c9f4f01383050c42ebefae1b80ae28b1bc9d8fe", + "USDC Coin (PoS)", + "USDC", + "1" + ] + }, + "implementation": "0x4E4E888d767823c44C3f3F9E879fb843B961FCfE", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Proxy implementing EIP173 for ownership management", + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} diff --git a/deployments/mumbai/opUSDCgrow_Implementation.json b/deployments/mumbai/opUSDCgrow_Implementation.json new file mode 100644 index 000000000..ebcf3bc98 --- /dev/null +++ b/deployments/mumbai/opUSDCgrow_Implementation.json @@ -0,0 +1,1320 @@ +{ + "address": "0x4E4E888d767823c44C3f3F9E879fb843B961FCfE", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_riskProfileName", + "type": "string" + }, + { + "internalType": "string", + "name": "_riskProfileSymbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "emergencyShutdown", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogEmergencyShutdown", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "minimumDepositValueUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogMinimumDepositValueUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "totalValueLockedLimitUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogTotalValueLockedLimitUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bool", + "name": "unpaused", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUnpause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "userDepositCapUT", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "LogUserDepositCapUT", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "_codes", + "type": "bytes[]" + } + ], + "name": "adminCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "balanceUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "blockToBlockVaultValues", + "outputs": [ + { + "internalType": "uint256", + "name": "actualVaultValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockMinVaultValue", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "blockMaxVaultValue", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositUT", + "type": "uint256" + } + ], + "name": "calcDepositFeeUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userWithdrawUT", + "type": "uint256" + } + ], + "name": "calcWithdrawalFeeUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_investStrategySteps", + "type": "tuple[]" + } + ], + "name": "computeInvestStrategyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getInvestStrategySteps", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "_investStrategySteps", + "type": "tuple[]" + } + ], + "name": "getLastStrategyStepBalanceLP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNextBestInvestStrategy", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "internalType": "struct DataTypes.StrategyStep[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPricePerFullShare", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "investStrategyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "investStrategySteps", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "internalType": "address", + "name": "outputToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "isBorrow", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_diff", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_currentVaultValue", + "type": "uint256" + } + ], + "name": "isMaxVaultValueJumpAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumDepositValueUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "opTOKEN_REVISION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "pendingDeposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "queue", + "outputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rebalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "registryContract", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_active", + "type": "bool" + } + ], + "name": "setEmergencyShutdown", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_minimumDepositValueUT", + "type": "uint256" + } + ], + "name": "setMinimumDepositValueUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + } + ], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_riskProfileCode", + "type": "uint256" + } + ], + "name": "setRiskProfileCode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_totalValueLockedLimitUT", + "type": "uint256" + } + ], + "name": "setTotalValueLockedLimitUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_underlyingTokensHash", + "type": "bytes32" + } + ], + "name": "setUnderlyingTokensHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_unpaused", + "type": "bool" + } + ], + "name": "setUnpaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositCapUT", + "type": "uint256" + } + ], + "name": "setUserDepositCapUT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositCapUT", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minimumDepositValueUT", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_totalValueLockedLimitUT", + "type": "uint256" + } + ], + "name": "setValueControlParams", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_vaultConfiguration", + "type": "uint256" + } + ], + "name": "setVaultConfiguration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_whitelistedAccountsRoot", + "type": "bytes32" + } + ], + "name": "setWhitelistedAccountsRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_whitelistedCodesRoot", + "type": "bytes32" + } + ], + "name": "setWhitelistedCodesRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "totalDeposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalValueLockedLimitUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underlyingToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "underlyingTokensHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userDepositCapUT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "bool", + "name": "_addUserDepositUT", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "_userDepositUTWithDeductions", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_deductions", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userDepositPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userDepositUT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userDepositVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_userWithdrawVT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userWithdrawPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userWithdrawVT", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "_accountsProof", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_codesProof", + "type": "bytes32[]" + } + ], + "name": "userWithdrawVault", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultConfiguration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultDepositAllToStrategy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "vaultDepositPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "vaultWithdrawPermitted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + }, + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "whitelistedAccountsRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "whitelistedCodesRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x9aa154e246418d468438b759ff57ba533b6e6d61c4f576ec627a58561857993b", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x4E4E888d767823c44C3f3F9E879fb843B961FCfE", + "transactionIndex": 0, + "gasUsed": "5460356", + "logsBloom": "0x00000000000000020000000000000000000000000000000400000000000000000000000000000000001000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000020000000000000000001000000000000000000000000004000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000002000100000", + "blockHash": "0x58bde772313844f6134754e3f9f6c3f854899a29d34f72ed127d4838392e834e", + "transactionHash": "0x9aa154e246418d468438b759ff57ba533b6e6d61c4f576ec627a58561857993b", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826475, + "transactionHash": "0x9aa154e246418d468438b759ff57ba533b6e6d61c4f576ec627a58561857993b", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000c26880a0af2ea0c7e8130e6ec47af756465452e8" + ], + "data": "0x00000000000000000000000000000000000000000000000004ecf0b71f564a5c000000000000000000000000000000000000000000000000050786118f199a00000000000000000000000000000000000000000000000a140cccef8b81f42da9000000000000000000000000000000000000000000000000001a955a6fc34fa4000000000000000000000000000000000000000000000a1411b9e042a14a7805", + "logIndex": 0, + "blockHash": "0x58bde772313844f6134754e3f9f6c3f854899a29d34f72ed127d4838392e834e" + } + ], + "blockNumber": 25826475, + "cumulativeGasUsed": "5460356", + "status": 1, + "byzantium": true + }, + "args": ["0x32bD1a6FdaeC327B57cdB2CFDe0855AfB3255d7C", "USD Coin (PoS)", "USDC", "Growth", "grow"], + "bytecode": "0x6080604052600080553480156200001557600080fd5b50604051620063823803806200638283398101604081905262000038916200020f565b8484836040516020016200004e92919062000327565b604051602081830303815290604052848360405160200162000072929190620002e3565b60408051601f19818403018152919052815162000097906037906020850190620000f2565b508051620000ad906038906020840190620000f2565b5050603980546001600160a01b0390931661010002610100600160a81b031960ff19909416601217939093169290921790915550506001603a5550620003a992505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013557805160ff191683800117855562000165565b8280016001018555821562000165579182015b828111156200016557825182559160200191906001019062000148565b506200017392915062000177565b5090565b5b8082111562000173576000815560010162000178565b600082601f8301126200019f578081fd5b81516001600160401b0380821115620001b6578283fd5b604051601f8301601f191681016020018281118282101715620001d7578485fd5b604052828152925082848301602001861015620001f357600080fd5b6200020683602083016020880162000376565b50505092915050565b600080600080600060a0868803121562000227578081fd5b85516001600160a01b03811681146200023e578182fd5b60208701519095506001600160401b03808211156200025b578283fd5b6200026989838a016200018e565b955060408801519150808211156200027f578283fd5b6200028d89838a016200018e565b94506060880151915080821115620002a3578283fd5b620002b189838a016200018e565b93506080880151915080821115620002c7578283fd5b50620002d6888289016200018e565b9150509295509295909350565b60006106f760f41b825283516200030281600285016020880162000376565b8351908301906200031b81600284016020880162000376565b01600201949350505050565b600062037b8160ed1b825283516200034781600385016020880162000376565b600160fd1b60039184019182015283516200036a81600484016020880162000376565b01600401949350505050565b60005b838110156200039357818101518382015260200162000379565b83811115620003a3576000848401525b50505050565b615fc980620003b96000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806387a53e7a116101de578063b1ff85221161010f578063d5802ec2116100ad578063dd62ed3e1161007c578063dd62ed3e1461071d578063ddf0b00914610730578063e940325614610751578063eb3349b9146107645761038e565b8063d5802ec2146106dc578063d952ca50146106ef578063da7058e414610702578063db7e5632146107155761038e565b8063c66da8e8116100e9578063c66da8e8146106a6578063c9dd6b24146106ae578063cf85f080146106b6578063d07c179b146106c95761038e565b8063b1ff852214610678578063b318b82d1461068b578063b8332c49146106935761038e565b8063a37085841161017c578063a91ee0dc11610156578063a91ee0dc14610642578063a9b497c814610655578063ae78b1b01461065d578063b00fce2a146106655761038e565b8063a370858414610614578063a457c2d71461061c578063a9059cbb1461062f5761038e565b80638c0e0357116101b85780638c0e0357146105e95780638d1efd78146105f157806395d89b4114610604578063a30b72711461060c5761038e565b806387a53e7a146105b0578063890ddde8146105c35780638aa2e4b4146105d65761038e565b80632e40939c116102c35780636889d6731161026157806376e57d031161023057806376e57d031461058557806377c7b8fc146105985780637c8eb82a146105a05780637d7c2a1c146105a85761038e565b80636889d6731461052a5780636db5eeb21461053d57806370a082311461055f57806371679bcb146105725761038e565b806337d62e541161029d57806337d62e54146104e957806339509351146104fc5780633c870dcf1461050f57806357a194ab146105175761038e565b80632e40939c146104b95780632e935aa7146104c1578063313ce567146104d45761038e565b806318160ddd116103305780632495a5991161030a5780632495a5991461048157806328c1f99b1461049657806329dc06581461049e5780632a4d7943146104a65761038e565b806318160ddd1461044457806323b872dd1461044c57806323bb5fac1461045f5761038e565b806306fdde031161036c57806306fdde03146103e757806307134773146103fc578063095ea7b31461041157806314c64402146104315761038e565b806301dcad0f1461039357806303f2e589146103bd5780630537df97146103d2575b600080fd5b6103a66103a13660046151a2565b610777565b6040516103b49291906159d8565b60405180910390f35b6103c561089e565b6040516103b4919061579f565b6103da6108a4565b6040516103b49190615973565b6103ef6109be565b6040516103b491906159f3565b61040f61040a366004615549565b610a54565b005b61042461041f366004615177565b610b18565b6040516103b491906159cd565b61040f61043f366004615511565b610b36565b6103c5610cf0565b61042461045a36600461501c565b610cf6565b61047261046d3660046156bc565b610d7e565b6040516103b493929190615e4c565b610489610dbd565b6040516103b49190615897565b610489610dcc565b6103c5610de0565b61040f6104b43660046152b6565b610de6565b6103a6610ec3565b61040f6104cf3660046156dd565b610f14565b6104dc610fea565b6040516103b49190615e62565b61040f6104f7366004615511565b610ff3565b61042461050a366004615177565b6111a8565b61040f6111f6565b61040f610525366004615549565b6112c9565b61040f610538366004615549565b611388565b61055061054b366004615549565b611447565b6040516103b493929190615912565b6103c561056d366004614f5e565b61148a565b61040f610580366004615646565b6114a9565b61040f6105933660046150f3565b6116a9565b6103c5611950565b6103a6611993565b61040f6119fc565b61040f6105be366004615549565b611d00565b6103c56105d13660046153b8565b611dbb565b61040f6105e4366004615549565b611ee2565b6103c5611fa1565b6103c56105ff366004615549565b611fa7565b6103ef611fef565b6103c5612050565b6103da612055565b61042461062a366004615177565b6120e2565b61042461063d366004615177565b61214a565b61040f610650366004614f5e565b61215e565b6103c561226a565b6103c5612270565b6103a661067336600461505c565b612276565b6103c56106863660046153b8565b61242e565b6103c5612456565b6104246106a13660046156bc565b61245c565b6103c561248a565b6103c561250b565b61040f6106c4366004615549565b612511565b61040f6106d7366004615549565b6125cc565b6103c56106ea366004615549565b612719565b61040f6106fd366004615549565b612757565b61040f610710366004615646565b612816565b6103c5612b21565b6103c561072b366004614fe4565b612b27565b61074361073e366004615549565b612b52565b6040516103b492919061595a565b6103c561075f366004614f5e565b612b87565b6103c5610772366004614f5e565b612b99565b60006060604254600160fa1b166000141580156107a357506107a161079b87612bab565b85612bdb565b155b156107ca5750506040805180820190915260018152600760fb1b6020820152600090610895565b6001600160a01b03861632148015906107eb57506107e9868585612bea565b155b156108125750506040805180820190915260018152603960f81b6020820152600090610895565b604254600160f91b166108425750506040805180820190915260028152610c4d60f21b6020820152600090610895565b60008511801561085a57506108568661148a565b8511155b6108805750506040805180820190915260018152603160f81b6020820152600090610895565b50506040805160208101909152600081526001905b94509492505050565b60445481565b6060603960019054906101000a90046001600160a01b03166001600160a01b031663d71f05e66040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190614f7a565b6001600160a01b031663a64e1e7b60f0604254901c60ff166047546040518363ffffffff1660e01b81526004016109649291906157e2565b60006040518083038186803b15801561097c57600080fd5b505afa158015610990573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b89190810190615482565b90505b90565b60378054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190614f7a565b6001600160a01b0316336001600160a01b031614610b135760405162461bcd60e51b8152600401610b0a90615a06565b60405180910390fd5b604455565b6000610b2c610b25612c27565b8484612c2b565b5060015b92915050565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8457600080fd5b505afa158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190614f7a565b6001600160a01b0316336001600160a01b031614610bec5760405162461bcd60e51b8152600401610b0a90615a06565b60428054600160ff60f81b031690558015610cb65760428054600160f81b179055603f5415610cb657610ca36048805480602002602001604051908101604052809291908181526020016000905b82821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b50505050612cdf565b6000603f819055610cb690604890614c10565b6042546040513391600160f81b161515907f3f14e04c219cb203de89f60db463113cc68cf16c00a46ef96a1fce6ca8abb5bb90600090a350565b60365490565b6000610d03848484612cf1565b610d7384610d0f612c27565b610d6e85604051806060016040528060288152602001615f70602891396001600160a01b038a16600090815260356020526040812090610d4d612c27565b6001600160a01b031681526020810191909152604001600020549190612e06565b612c2b565b5060015b9392505050565b603e6020528160005260406000208181548110610d9757fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b6043546001600160a01b031681565b60395461010090046001600160a01b031681565b60455481565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3457600080fd5b505afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c9190614f7a565b6001600160a01b0316336001600160a01b031614610e9c5760405162461bcd60e51b8152600401610b0a90615b30565b610ec08160405180604001604052806002815260200161313560f01b815250612e32565b50565b60006060604254600160f91b1660001415610efb5750506040805180820190915260028152610c4d60f21b6020820152600090610f10565b50506040805160208101909152600081526001905b9091565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a9190614f7a565b6001600160a01b0316336001600160a01b031614610fca5760405162461bcd60e51b8152600401610b0a90615bdf565b610fd383612e63565b610fdc82612e96565b610fe581612ecb565b505050565b60395460ff1690565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104157600080fd5b505afa158015611055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110799190614f7a565b6001600160a01b0316336001600160a01b0316146110a95760405162461bcd60e51b8152600401610b0a90615a06565b604280546001607f60f91b031690558061116157603f541561115c5761114960488054806020026020016040519081016040528092919081815260200160009082821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b6000603f81905561115c90604890614c10565b61116e565b60428054600160f91b1790555b6042546040513391600160f91b161515907fbef546d8099130f7f80a42b7eb7f2aa81c1dd73f07fc569fe30338e102bba27390600090a350565b6000610b2c6111b5612c27565b84610d6e85603560006111c6612c27565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612f00565b60006060611202611993565b915091508181906112265760405162461bcd60e51b8152600401610b0a91906159f3565b50603f54156112c5576112c56048805480602002602001604051908101604052809291908181526020016000905b828210156112b4576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611254565b505050506112c061248a565b612f25565b5050565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190614f7a565b6001600160a01b0316336001600160a01b03161461137f5760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612e63565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d657600080fd5b505afa1580156113ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140e9190614f7a565b6001600160a01b0316336001600160a01b03161461143e5760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612e96565b6048818154811061145457fe5b6000918252602090912060029091020180546001909101546001600160a01b03918216925090811690600160a01b900460ff1683565b6001600160a01b0381166000908152603460205260409020545b919050565b6002603a5414156114cc5760405162461bcd60e51b8152600401610b0a90615dde565b6002603a55600060606114dd611993565b915091508181906115015760405162461bcd60e51b8152600401610b0a91906159f3565b50505061151461150f612fd2565b613099565b600061151e6132e9565b9050600061152a61248a565b604354909150611545906001600160a01b031633308a6132fe565b600061154f61248a565b9050600061155d8284613356565b9050600061156a82612719565b905060006115788383613356565b90506115fd33600083858e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061337e92505050565b336000908152603d60205260409020546116179082612f00565b336000908152603d6020526040902055811561164c5760425460435461164c916001600160a01b039091169060501c846133bf565b85158061165e575061165c610cf0565b155b156116725761166d33826133de565b611697565b611697336116928861168c611685610cf0565b869061349e565b906134d8565b6133de565b50506001603a55505050505050505050565b60006116b361350a565b60015490915060ff16806116ca57506116ca61350f565b806116d6575060005481115b6116f25760405162461bcd60e51b8152600401610b0a90615c20565b60015460ff16158015611711576001805460ff19168117905560008290555b6000855111604051806040016040528060018152602001600d60fa1b8152509061174e5760405162461bcd60e51b8152600401610b0a91906159f3565b506000845111604051806040016040528060018152602001600d60fa1b8152509061178c5760405162461bcd60e51b8152600401610b0a91906159f3565b5060398054610100600160a81b0319166101006001600160a01b038a16021790556117b5614c31565b603954604051639ec39e2f60e01b81526101009091046001600160a01b031690639ec39e2f906117e990879060040161579f565b60006040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261183d9190810190615561565b905061184d848260600151613515565b61185687613566565b61188486826080015160405160200161187092919061584c565b604051602081830303815290604052613756565b6118b2858260a0015160405160200161189e92919061580c565b604051602081830303815290604052613769565b6043546040805163313ce56760e01b81529051611935926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119309190615708565b61377c565b508015611947576001805460ff191690555b50505050505050565b600061195a610cf0565b1561198b5761198461196a610cf0565b61168c670de0b6b3a764000061197e6132e9565b9061349e565b90506109bb565b5060006109bb565b60006060604254600160f91b16600014156119cb5750506040805180820190915260028152610c4d60f21b6020820152600090610f10565b604254600160f81b1615610efb575050604080518082019091526002815261313360f01b6020820152600090610f10565b60006060611a08611993565b91509150818190611a2c5760405162461bcd60e51b8152600401610b0a91906159f3565b5060006060611a39610ec3565b91509150818190611a5d5760405162461bcd60e51b8152600401610b0a91906159f3565b50611a6e611a696108a4565b613792565b6000611afe6049805480602002602001604051908101604052809291908181526020016000905b82821015611af5576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611a95565b50505050611dbb565b9050603f548114611c4657603f5415611b9557611b9560488054806020026020016040519081016040528092919081815260200160009082821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b611ba160486000614c10565b60005b604954811015611c3f57604860498281548110611bbd57fe5b6000918252602080832084546001818101875595855291909320600292830290930180549190920290920180546001600160a01b03199081166001600160a01b03948516178255918401805491850180549093169190931617808255915460ff600160a01b918290041615150260ff60a01b1990921691909117905501611ba4565b50603f8190555b6000611c5061248a565b603f5490915015801590611c645750600081115b15611cf857611cf86048805480602002602001604051908101604052809291908181526020016000905b82821015611cee576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611c8e565b5050505082612f25565b505050505050565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4e57600080fd5b505afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190614f7a565b6001600160a01b0316336001600160a01b031614611db65760405162461bcd60e51b8152600401610b0a90615a06565b604655565b805160009015611eda57606082516001600160401b0381118015611dde57600080fd5b50604051908082528060200260200182016040528015611e08578160200160208202803683370190505b50905060005b8351811015611ea657838181518110611e2357fe5b602002602001015160000151848281518110611e3b57fe5b602002602001015160200151858381518110611e5357fe5b602002602001015160400151604051602001611e719392919061576c565b60405160208183030381529060405280519060200120828281518110611e9357fe5b6020908102919091010152600101611e0e565b5060475481604051602001611ebc9291906157a8565b604051602081830303815290604052805190602001209150506114a4565b506000919050565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190614f7a565b6001600160a01b0316336001600160a01b031614611f985760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612ecb565b60405481565b6000610b30611fb4610fea565b60ff16600a0a6020604254901c61ffff1602611fe961271061168c6030604254901c61ffff168761349e90919063ffffffff16565b90612f00565b60388054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b600381565b60606048805480602002602001604051908101604052809291908181526020016000905b828210156120d9576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101612079565b50505050905090565b6000610b2c6120ef612c27565b84610d6e85604051806060016040528060258152602001615f986025913960356000612119612c27565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612e06565b6000610b2c612157612c27565b8484612cf1565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e49190614f7a565b6001600160a01b0316336001600160a01b0316146122145760405162461bcd60e51b8152600401610b0a90615b30565b612226816001600160a01b031661382c565b6122425760405162461bcd60e51b8152600401610b0a90615cf4565b603980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b603f5481565b60415481565b60006060604254600160fa1b1660001415801561229c575061229a61079b89612bab565b155b156122c35750506040805180820190915260018152600760fb1b6020820152600090612423565b6001600160a01b03881632148015906122e457506122e2888585612bea565b155b1561230b5750506040805180820190915260018152603960f81b6020820152600090612423565b604154861015612338575050604080518082019091526002815261031360f41b6020820152600090612423565b60006123426132e9565b90508715801561235c575060455461235a8288613356565b115b15612385575050604080518082019091526002815261313160f01b602082015260009150612423565b6045546123928289612f00565b11156123bc575050604080518082019091526002815261313160f01b602082015260009150612423565b604080546001600160a01b038b166000908152603d60205291909120546123e39089612f00565b111561240d575050604080518082019091526002815261189960f11b602082015260009150612423565b5050604080516020810190915260008152600191505b965096945050505050565b603954604354600091610b309184916001600160a01b03610100909104811691309116613832565b60465481565b60006040604254901c61ffff166124828361168c6127108761349e90919063ffffffff16565b109392505050565b6043546040516370a0823160e01b81526000916001600160a01b0316906370a08231906124bb903090600401615897565b60206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b8919061562e565b60475481565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561255f57600080fd5b505afa158015612573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125979190614f7a565b6001600160a01b0316336001600160a01b0316146125c75760405162461bcd60e51b8152600401610b0a90615a06565b604255565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561261a57600080fd5b505afa15801561262e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126529190614f7a565b6001600160a01b0316336001600160a01b0316146126825760405162461bcd60e51b8152600401610b0a90615a06565b603954604051639ec39e2f60e01b8152610ec09183916101009091046001600160a01b031690639ec39e2f906126bc90849060040161579f565b60006040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127109190810190615561565b60600151613515565b6000610b30612726610fea565b60ff16600a0a60425461ffff1602611fe961271061168c6010604254901c61ffff168761349e90919063ffffffff16565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614f7a565b6001600160a01b0316336001600160a01b03161461280d5760405162461bcd60e51b8152600401610b0a90615b30565b610ec081613566565b6002603a5414156128395760405162461bcd60e51b8152600401610b0a90615dde565b6002603a556000606061284a610ec3565b9150915081819061286e5760405162461bcd60e51b8152600401610b0a91906159f3565b50505061287c61150f612fd2565b6128eb338686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250613a6292505050565b600061290a6128f8610cf0565b61168c6129036132e9565b899061349e565b90506129163387613a96565b600061292061248a565b905081811015612abf5760006129368383613356565b60395460435460488054604080516020808402820181019092528281529596506000956129f0956001600160a01b03610100909104811695169388939192909190889084015b828210156129dc576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161297c565b50505050613b6c909392919063ffffffff16565b9050612a816048805480602002602001604051908101604052809291908181526020016000905b82821015612a77576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101612a17565b5050505082613ce4565b6000612a8b61248a565b90506000612a998286613356565b905083811015612aba57612ab7612ab08583613356565b8790613356565b95505b505050505b6000612aca83611fa7565b90508015612af157604254604354612af1916001600160a01b039091169060501c836133bf565b612b1233612aff8584613356565b6043546001600160a01b031691906133bf565b50506001603a55505050505050565b60425481565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603b8181548110612b5f57fe5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b603d6020526000908152604090205481565b603c6020526000908152604090205481565b600081604051602001612bbe919061574f565b604051602081830303815290604052805190602001209050919050565b6000610d778260445485613d71565b6000612bfe612bf885612bab565b84612bdb565b8015612c1f5750612c1f612c19612c1486613e0e565b613e12565b83613e25565b949350505050565b3390565b6001600160a01b038316612c515760405162461bcd60e51b8152600401610b0a90615d19565b6001600160a01b038216612c775760405162461bcd60e51b8152600401610b0a90615a80565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612cd290859061579f565b60405180910390a3505050565b610ec081612cec8361242e565b613ce4565b6001600160a01b038316612d175760405162461bcd60e51b8152600401610b0a90615caf565b6001600160a01b038216612d3d5760405162461bcd60e51b8152600401610b0a90615a3d565b612d48838383613e34565b612d8581604051806060016040528060268152602001615f4a602691396001600160a01b0386166000908152603460205260409020549190612e06565b6001600160a01b038085166000908152603460205260408082209390935590841681522054612db49082612f00565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612cd290859061579f565b60008184841115612e2a5760405162461bcd60e51b8152600401610b0a91906159f3565b505050900390565b60005b8251811015610fe557612e5b838281518110612e4d57fe5b602002602001015183613e77565b600101612e35565b604081815551339082907f70c87424f133fbd8c8e63b0dc9c2d2702db0a79d7d4139b25a5035f250b9f73890600090a350565b6041819055604051339082907f7af95a1df120276e178a852832ba64d58429b2b5986955c772448d80c08ef39290600090a350565b6045819055604051339082907fae4cf6e16f407af30e4a8e158871dd4eb7d4ad22f2438ccc43c5855fcd6ebbee90600090a350565b600082820183811015610d775760405162461bcd60e51b8152600401610b0a90615ac2565b603954600090612f4490849061010090046001600160a01b0316613f13565b905060005b81811015612fcc576040805160c0810182526039546001600160a01b03610100909104811682523060208301526043541691810191909152606081018490526080810182905260a08101839052612fc490612fa5908690614045565b604051806040016040528060018152602001601960f91b815250612e32565b600101612f49565b50505050565b603f54600090612fe35760006109b8565b60395460435460488054604080516020808402820181019092528281526109b8956001600160a01b036101009091048116953095911693919290919060009084015b82821015613085576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101613025565b5050505061442c909392919063ffffffff16565b436000908152603e6020526040902054801561329357436000818152603e6020818152604080842081516060810190925287825294909352908152825490820190839060001986019081106130ea57fe5b906000526020600020906003020160010154851061313857436000908152603e602052604090208054600019860190811061312157fe5b90600052602060002090600302016001015461313a565b845b8152602001603e6000438152602001908152602001600020600185038154811061316057fe5b90600052602060002090600302016002015485116131ae57436000908152603e602052604090208054600019860190811061319757fe5b9060005260206000209060030201600201546131b0565b845b90528154600181810184556000938452602080852084516003909402019283558084015191830191909155604092830151600290920191909155438352603e9052902080546132549161324e918490811061320757fe5b906000526020600020906003020160010154603e6000438152602001908152602001600020848154811061323757fe5b906000526020600020906003020160020154614742565b8361245c565b60405180604001604052806002815260200161189b60f11b8152509061328d5760405162461bcd60e51b8152600401610b0a91906159f3565b506112c5565b436000908152603e60209081526040808320815160608101835286815280840187815292810187815282546001818101855593875294909520905160039094020192835590519082015590516002909101555050565b60006109b86132f661248a565b611fe9612fd2565b612fcc846323b872dd60e01b85858560405160240161331f93929190615936565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614764565b6000828211156133785760405162461bcd60e51b8152600401610b0a90615af9565b50900390565b60006060613390888888888888612276565b915091508181906133b45760405162461bcd60e51b8152600401610b0a91906159f3565b505050505050505050565b610fe58363a9059cbb60e01b848460405160240161331f92919061595a565b6001600160a01b0382166134045760405162461bcd60e51b8152600401610b0a90615e15565b61341060008383613e34565b60365461341d9082612f00565b6036556001600160a01b0382166000908152603460205260409020546134439082612f00565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061349290859061579f565b60405180910390a35050565b6000826134ad57506000610b30565b828202828482816134ba57fe5b0414610d775760405162461bcd60e51b8152600401610b0a90615b9e565b60008082116134f95760405162461bcd60e51b8152600401610b0a90615b67565b81838161350257fe5b049392505050565b600390565b303b1590565b6040805180820190915260018152603560f81b60208201528161354b5760405162461bcd60e51b8152600401610b0a91906159f3565b5060425460ff60f01b191660f083901b176042819055505050565b603954604051638346525f60e01b815260609161010090046001600160a01b031690638346525f9061359c90859060040161579f565b60006040518083038186803b1580156135b457600080fd5b505afa1580156135c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f0919081019061521e565b9050805160011460405180604001604052806002815260200161313760f01b815250906136305760405162461bcd60e51b8152600401610b0a91906159f3565b50603960019054906101000a90046001600160a01b03166001600160a01b0316632d5ad3d58260008151811061366257fe5b60200260200101516040518263ffffffff1660e01b81526004016136869190615897565b60206040518083038186803b15801561369e57600080fd5b505afa1580156136b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d6919061552d565b60405180604001604052806002815260200161313960f01b8152509061370f5760405162461bcd60e51b8152600401610b0a91906159f3565b50816047819055508060008151811061372457fe5b6020026020010151604360006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b80516112c5906037906020840190614c69565b80516112c5906038906020840190614c69565b6039805460ff191660ff92909216919091179055565b61379e60496000614c10565b60005b81518110156112c55760498282815181106137b857fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b91151591909102179055016137a1565b3b151590565b6000808560018751038151811061384557fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016138819190615897565b60206040518083038186803b15801561389957600080fd5b505afa1580156138ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d19190614f7a565b6040516336d8bf9360e01b81529091506001600160a01b038216906336d8bf9390613900908590600401615897565b60206040518083038186803b15801561391857600080fd5b505afa15801561392c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613950919061552d565b6139d9576040516390e6160560e01b81526001600160a01b038216906390e6160590613984908890889087906004016158c5565b60206040518083038186803b15801561399c57600080fd5b505afa1580156139b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d4919061562e565b613a57565b60405163afd908d960e01b81526001600160a01b0382169063afd908d990613a0790889086906004016158ab565b60206040518083038186803b158015613a1f57600080fd5b505afa158015613a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a57919061562e565b979650505050505050565b60006060613a7286868686610777565b915091508181906119475760405162461bcd60e51b8152600401610b0a91906159f3565b6001600160a01b038216613abc5760405162461bcd60e51b8152600401610b0a90615c6e565b613ac882600083613e34565b613b0581604051806060016040528060228152602001615f28602291396001600160a01b0385166000908152603460205260409020549190612e06565b6001600160a01b038316600090815260346020526040902055603654613b2b9082613356565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061349290859061579f565b8351600090815b81811015613cda576000878281518110613b8957fe5b60200260200101516000015190506000876001600160a01b031663923bb7ff836040518263ffffffff1660e01b8152600401613bc59190615897565b60206040518083038186803b158015613bdd57600080fd5b505afa158015613bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c159190614f7a565b9050868315613c3c57896001850381518110613c2d57fe5b60200260200101516020015190505b6001600160a01b0382166385541e4482858715613c595789613c5b565b8a5b6040518463ffffffff1660e01b8152600401613c7993929190615936565b60206040518083038186803b158015613c9157600080fd5b505afa158015613ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc9919061562e565b95505060019092019150613b739050565b5050949350505050565b815160005b81811015612fcc576040805160c0810182526039546001600160a01b036101009091048116825230602083015260435416918101919091526060810184905281830360001901608082015260a08101839052613d6990613d4a9086906147f3565b604051806040016040528060018152602001603360f81b815250612e32565b600101613ce9565b600081815b8551811015613e03576000868281518110613d8d57fe5b60200260200101519050808311613dce578281604051602001613db19291906157e2565b604051602081830303815290604052805190602001209250613dfa565b8083604051602001613de19291906157e2565b6040516020818303038152906040528051906020012092505b50600101613d76565b509092149392505050565b3f90565b600081604051602001612bbe919061579f565b6000610d778260465485613d71565b604080518082019091526002815261062760f31b60208201526001600160a01b038316301415612fcc5760405162461bcd60e51b8152600401610b0a91906159f3565b6000606083806020019051810190613e8f9190614f96565b915091506000826001600160a01b031682604051613ead91906157f0565b6000604051808303816000865af19150503d8060008114613eea576040519150601f19603f3d011682016040523d82523d6000602084013e613eef565b606091505b50509050808490611cf85760405162461bcd60e51b8152600401610b0a91906159f3565b815160009081846000198301838110613f2857fe5b6020026020010151600001519050836001600160a01b031663923bb7ff826040518263ffffffff1660e01b8152600401613f629190615897565b60206040518083038186803b158015613f7a57600080fd5b505afa158015613f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb29190614f7a565b6001600160a01b03166336d8bf93826040518263ffffffff1660e01b8152600401613fdd9190615897565b60206040518083038186803b158015613ff557600080fd5b505afa158015614009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402d919061552d565b1561403d57506001019050610b30565b509392505050565b8051604082015160608381015185516080860151929493928114156142435760008760018860800151038151811061407957fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016140b59190615897565b60206040518083038186803b1580156140cd57600080fd5b505afa1580156140e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141059190614f7a565b90508860018960800151038151811061411a57fe5b602002602001015160200151945087604001516001600160a01b03166370a0823189602001516040518263ffffffff1660e01b815260040161415c9190615897565b60206040518083038186803b15801561417457600080fd5b505afa158015614188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ac919061562e565b9350806001600160a01b03166374df3b2f89602001518a60400151856040518463ffffffff1660e01b81526004016141e6939291906158c5565b60006040518083038186803b1580156141fe57600080fd5b505afa158015614212573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261423a919081019061533e565b96505050614422565b60008787608001518151811061425557fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016142919190615897565b60206040518083038186803b1580156142a957600080fd5b505afa1580156142bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e19190614f7a565b90508760800151600014614393578860018960800151038151811061430257fe5b6020026020010151602001519450846001600160a01b03166370a0823189602001516040518263ffffffff1660e01b81526004016143409190615897565b60206040518083038186803b15801561435857600080fd5b505afa15801561436c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614390919061562e565b93505b6020880151604051636fc9ab9160e11b81526001600160a01b0383169163df935722916143c99190899087908a906004016158e8565b60006040518083038186803b1580156143e157600080fd5b505afa1580156143f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261441d919081019061533e565b965050505b5050505092915050565b835160009081805b828110156147375760008160018503039050600089828151811061445457fe5b60200260200101516000015190506000896001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016144909190615897565b60206040518083038186803b1580156144a857600080fd5b505afa1580156144bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e09190614f7a565b9050878315614507578b60018503815181106144f857fe5b60200260200101516020015190505b600187038414156146a1576040516336d8bf9360e01b81526001600160a01b038316906336d8bf939061453e908690600401615897565b60206040518083038186803b15801561455657600080fd5b505afa15801561456a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458e919061552d565b1561461a57604051632627a09960e01b81526001600160a01b03831690632627a099906145c3908d90859088906004016158c5565b60206040518083038186803b1580156145db57600080fd5b505afa1580156145ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614613919061562e565b975061469c565b60405162c9babf60e71b81526001600160a01b038316906364dd5f8090614649908d90859088906004016158c5565b60206040518083038186803b15801561466157600080fd5b505afa158015614675573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614699919061562e565b97505b614724565b60405163ee665bed60e01b81526001600160a01b0383169063ee665bed906146d190849087908b90600401615936565b60206040518083038186803b1580156146e957600080fd5b505afa1580156146fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614721919061562e565b97505b5086945050600190920191506144349050565b505050949350505050565b600081831161475a576147558284613356565b610d77565b610d778383613356565b60606147b9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b3d9092919063ffffffff16565b805190915015610fe557808060200190518101906147d7919061552d565b610fe55760405162461bcd60e51b8152600401610b0a90615d94565b606060008383608001518151811061480757fe5b602090810291909101015151835160405163923bb7ff60e01b8152919250906000906001600160a01b0383169063923bb7ff90614848908690600401615897565b60206040518083038186803b15801561486057600080fd5b505afa158015614874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148989190614f7a565b6040860151606087015160808801519293509091156148d357876001886080015103815181106148c457fe5b60200260200101516020015191505b60018760a001510387608001511461498357878760800151815181106148f557fe5b6020026020010151602001516001600160a01b03166370a0823188602001516040518263ffffffff1660e01b81526004016149309190615897565b60206040518083038186803b15801561494857600080fd5b505afa15801561495c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614980919061562e565b90505b60018760a00151038760800151148015614a1457506040516336d8bf9360e01b81526001600160a01b038416906336d8bf93906149c4908890600401615897565b60206040518083038186803b1580156149dc57600080fd5b505afa1580156149f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a14919061552d565b614aa7576020870151604051636092577960e01b81526001600160a01b03851691636092577991614a4e919086908a9087906004016158e8565b60006040518083038186803b158015614a6657600080fd5b505afa158015614a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614aa2919081019061533e565b614b31565b6020870151604051631496678160e11b81526001600160a01b0385169163292ccf0291614add919086908a9087906004016158e8565b60006040518083038186803b158015614af557600080fd5b505afa158015614b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b31919081019061533e565b98975050505050505050565b6060612c1f848460008585614b518561382c565b614b6d5760405162461bcd60e51b8152600401610b0a90615d5d565b60006060866001600160a01b03168587604051614b8a91906157f0565b60006040518083038185875af1925050503d8060008114614bc7576040519150601f19603f3d011682016040523d82523d6000602084013e614bcc565b606091505b5091509150613a5782828660608315614be6575081610d77565b825115614bf65782518084602001fd5b8160405162461bcd60e51b8152600401610b0a91906159f3565b5080546000825560020290600052602060002090810190610ec09190614ce7565b6040805160c08101825260008082526020820152908101614c50614d18565b8152600060208201526060604082018190529081015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614caa57805160ff1916838001178555614cd7565b82800160010185558215614cd7579182015b82811115614cd7578251825591602001919060010190614cbc565b50614ce3929150614d2f565b5090565b5b80821115614ce35780546001600160a01b03191681556001810180546001600160a81b0319169055600201614ce8565b604080518082019091526000808252602082015290565b5b80821115614ce35760008155600101614d30565b8035610b3081615f04565b60008083601f840112614d60578182fd5b5081356001600160401b03811115614d76578182fd5b6020830191508360208083028501011115614d9057600080fd5b9250929050565b600082601f830112614da7578081fd5b8135614dba614db582615e96565b615e70565b818152915060208083019084810181840286018201871015614ddb57600080fd5b60005b84811015614dfa57813584529282019290820190600101614dde565b505050505092915050565b8035610b3081615f19565b8051610b3081615f19565b600082601f830112614e2b578081fd5b8135614e39614db582615eb5565b9150808252836020828501011115614e5057600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112614e79578081fd5b8151614e87614db582615eb5565b9150808252836020828501011115614e9e57600080fd5b614eaf816020840160208601615ed8565b5092915050565b600060408284031215614ec7578081fd5b614ed16040615e70565b9050614edd8383614f4d565b8152614eec8360208401614f4d565b602082015292915050565b600060608284031215614f08578081fd5b614f126060615e70565b90508151614f1f81615f04565b81526020820151614f2f81615f04565b60208201526040820151614f4281615f19565b604082015292915050565b805160ff81168114610b3057600080fd5b600060208284031215614f6f578081fd5b8135610d7781615f04565b600060208284031215614f8b578081fd5b8151610d7781615f04565b60008060408385031215614fa8578081fd5b8251614fb381615f04565b60208401519092506001600160401b03811115614fce578182fd5b614fda85828601614e69565b9150509250929050565b60008060408385031215614ff6578182fd5b823561500181615f04565b9150602083013561501181615f04565b809150509250929050565b600080600060608486031215615030578081fd5b833561503b81615f04565b9250602084013561504b81615f04565b929592945050506040919091013590565b60008060008060008060c08789031215615074578384fd5b863561507f81615f04565b9550602087013561508f81615f19565b9450604087013593506060870135925060808701356001600160401b03808211156150b8578384fd5b6150c48a838b01614d97565b935060a08901359150808211156150d9578283fd5b506150e689828a01614d97565b9150509295509295509295565b600080600080600060a0868803121561510a578283fd5b853561511581615f04565b94506020860135935060408601356001600160401b0380821115615137578485fd5b61514389838a01614e1b565b94506060880135915080821115615158578283fd5b5061516588828901614e1b565b95989497509295608001359392505050565b60008060408385031215615189578182fd5b823561519481615f04565b946020939093013593505050565b600080600080608085870312156151b7578182fd5b84356151c281615f04565b93506020850135925060408501356001600160401b03808211156151e4578384fd5b6151f088838901614d97565b93506060870135915080821115615205578283fd5b5061521287828801614d97565b91505092959194509250565b60006020808385031215615230578182fd5b82516001600160401b03811115615245578283fd5b8301601f81018513615255578283fd5b8051615263614db582615e96565b818152838101908385018584028501860189101561527f578687fd5b8694505b838510156152aa57805161529681615f04565b835260019490940193918501918501615283565b50979650505050505050565b600060208083850312156152c8578182fd5b82356001600160401b038111156152dd578283fd5b8301601f810185136152ed578283fd5b80356152fb614db582615e96565b81815283810190838501865b848110156153305761531e8a888435890101614e1b565b84529286019290860190600101615307565b509098975050505050505050565b60006020808385031215615350578182fd5b82516001600160401b03811115615365578283fd5b8301601f81018513615375578283fd5b8051615383614db582615e96565b81815283810190838501865b84811015615330576153a68a888451890101614e69565b8452928601929086019060010161538f565b600060208083850312156153ca578182fd5b82356001600160401b038111156153df578283fd5b8301601f810185136153ef578283fd5b80356153fd614db582615e96565b818152838101908385016060808502860187018a101561541b578788fd5b8795505b848610156153305780828b031215615435578788fd5b61543e81615e70565b6154488b84614d44565b81526154568b898501614d44565b8882015260406154688c828601614e05565b90820152845260019590950194928601929081019061541f565b60006020808385031215615494578182fd5b82516001600160401b038111156154a9578283fd5b8301601f810185136154b9578283fd5b80516154c7614db582615e96565b818152838101908385016060808502860187018a10156154e5578788fd5b8795505b84861015615330576154fb8a83614ef7565b84526001959095019492860192908101906154e9565b600060208284031215615522578081fd5b8135610d7781615f19565b60006020828403121561553e578081fd5b8151610d7781615f19565b60006020828403121561555a578081fd5b5035919050565b600060208284031215615572578081fd5b81516001600160401b0380821115615588578283fd5b9083019060e0828603121561559b578283fd5b6155a560c0615e70565b825181526155b68660208501614e10565b60208201526155c88660408501614eb6565b60408201526155da8660808501614e10565b606082015260a0830151828111156155f0578485fd5b6155fc87828601614e69565b60808301525060c083015182811115615613578485fd5b61561f87828601614e69565b60a08301525095945050505050565b60006020828403121561563f578081fd5b5051919050565b60008060008060006060868803121561565d578283fd5b8535945060208601356001600160401b038082111561567a578485fd5b61568689838a01614d4f565b9096509450604088013591508082111561569e578283fd5b506156ab88828901614d4f565b969995985093965092949392505050565b600080604083850312156156ce578182fd5b50508035926020909101359150565b6000806000606084860312156156f1578081fd5b505081359360208301359350604090920135919050565b600060208284031215615719578081fd5b610d778383614f4d565b6000815180845261573b816020860160208601615ed8565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b6bffffffffffffffffffffffff19606094851b811682529290931b9091166014830152151560f81b602882015260290190565b90815260200190565b600083825260208083018451828601845b828110156157d5578151845292840192908401906001016157b9565b5091979650505050505050565b918252602082015260400190565b60008251615802818460208701615ed8565b9190910192915050565b60006106f760f41b82528351615829816002850160208801615ed8565b835190830190615840816002840160208801615ed8565b01600201949350505050565b600062037b8160ed1b8252835161586a816003850160208801615ed8565b600160fd1b600391840191820152835161588b816004840160208801615ed8565b01600401949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000919060409081850190868401855b828110156157d557815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101615990565b901515815260200190565b6000831515825260406020830152612c1f6040830184615723565b600060208252610d776020830184615723565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526021908201527f63616c6c6572206973206e6f74207468652066696e616e63654f70657261746f6040820152603960f91b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b0381118282101715615e8e57600080fd5b604052919050565b60006001600160401b03821115615eab578081fd5b5060209081020190565b60006001600160401b03821115615eca578081fd5b50601f01601f191660200190565b60005b83811015615ef3578181015183820152602001615edb565b83811115612fcc5750506000910152565b6001600160a01b0381168114610ec057600080fd5b8015158114610ec057600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c634300060c000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038e5760003560e01c806387a53e7a116101de578063b1ff85221161010f578063d5802ec2116100ad578063dd62ed3e1161007c578063dd62ed3e1461071d578063ddf0b00914610730578063e940325614610751578063eb3349b9146107645761038e565b8063d5802ec2146106dc578063d952ca50146106ef578063da7058e414610702578063db7e5632146107155761038e565b8063c66da8e8116100e9578063c66da8e8146106a6578063c9dd6b24146106ae578063cf85f080146106b6578063d07c179b146106c95761038e565b8063b1ff852214610678578063b318b82d1461068b578063b8332c49146106935761038e565b8063a37085841161017c578063a91ee0dc11610156578063a91ee0dc14610642578063a9b497c814610655578063ae78b1b01461065d578063b00fce2a146106655761038e565b8063a370858414610614578063a457c2d71461061c578063a9059cbb1461062f5761038e565b80638c0e0357116101b85780638c0e0357146105e95780638d1efd78146105f157806395d89b4114610604578063a30b72711461060c5761038e565b806387a53e7a146105b0578063890ddde8146105c35780638aa2e4b4146105d65761038e565b80632e40939c116102c35780636889d6731161026157806376e57d031161023057806376e57d031461058557806377c7b8fc146105985780637c8eb82a146105a05780637d7c2a1c146105a85761038e565b80636889d6731461052a5780636db5eeb21461053d57806370a082311461055f57806371679bcb146105725761038e565b806337d62e541161029d57806337d62e54146104e957806339509351146104fc5780633c870dcf1461050f57806357a194ab146105175761038e565b80632e40939c146104b95780632e935aa7146104c1578063313ce567146104d45761038e565b806318160ddd116103305780632495a5991161030a5780632495a5991461048157806328c1f99b1461049657806329dc06581461049e5780632a4d7943146104a65761038e565b806318160ddd1461044457806323b872dd1461044c57806323bb5fac1461045f5761038e565b806306fdde031161036c57806306fdde03146103e757806307134773146103fc578063095ea7b31461041157806314c64402146104315761038e565b806301dcad0f1461039357806303f2e589146103bd5780630537df97146103d2575b600080fd5b6103a66103a13660046151a2565b610777565b6040516103b49291906159d8565b60405180910390f35b6103c561089e565b6040516103b4919061579f565b6103da6108a4565b6040516103b49190615973565b6103ef6109be565b6040516103b491906159f3565b61040f61040a366004615549565b610a54565b005b61042461041f366004615177565b610b18565b6040516103b491906159cd565b61040f61043f366004615511565b610b36565b6103c5610cf0565b61042461045a36600461501c565b610cf6565b61047261046d3660046156bc565b610d7e565b6040516103b493929190615e4c565b610489610dbd565b6040516103b49190615897565b610489610dcc565b6103c5610de0565b61040f6104b43660046152b6565b610de6565b6103a6610ec3565b61040f6104cf3660046156dd565b610f14565b6104dc610fea565b6040516103b49190615e62565b61040f6104f7366004615511565b610ff3565b61042461050a366004615177565b6111a8565b61040f6111f6565b61040f610525366004615549565b6112c9565b61040f610538366004615549565b611388565b61055061054b366004615549565b611447565b6040516103b493929190615912565b6103c561056d366004614f5e565b61148a565b61040f610580366004615646565b6114a9565b61040f6105933660046150f3565b6116a9565b6103c5611950565b6103a6611993565b61040f6119fc565b61040f6105be366004615549565b611d00565b6103c56105d13660046153b8565b611dbb565b61040f6105e4366004615549565b611ee2565b6103c5611fa1565b6103c56105ff366004615549565b611fa7565b6103ef611fef565b6103c5612050565b6103da612055565b61042461062a366004615177565b6120e2565b61042461063d366004615177565b61214a565b61040f610650366004614f5e565b61215e565b6103c561226a565b6103c5612270565b6103a661067336600461505c565b612276565b6103c56106863660046153b8565b61242e565b6103c5612456565b6104246106a13660046156bc565b61245c565b6103c561248a565b6103c561250b565b61040f6106c4366004615549565b612511565b61040f6106d7366004615549565b6125cc565b6103c56106ea366004615549565b612719565b61040f6106fd366004615549565b612757565b61040f610710366004615646565b612816565b6103c5612b21565b6103c561072b366004614fe4565b612b27565b61074361073e366004615549565b612b52565b6040516103b492919061595a565b6103c561075f366004614f5e565b612b87565b6103c5610772366004614f5e565b612b99565b60006060604254600160fa1b166000141580156107a357506107a161079b87612bab565b85612bdb565b155b156107ca5750506040805180820190915260018152600760fb1b6020820152600090610895565b6001600160a01b03861632148015906107eb57506107e9868585612bea565b155b156108125750506040805180820190915260018152603960f81b6020820152600090610895565b604254600160f91b166108425750506040805180820190915260028152610c4d60f21b6020820152600090610895565b60008511801561085a57506108568661148a565b8511155b6108805750506040805180820190915260018152603160f81b6020820152600090610895565b50506040805160208101909152600081526001905b94509492505050565b60445481565b6060603960019054906101000a90046001600160a01b03166001600160a01b031663d71f05e66040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190614f7a565b6001600160a01b031663a64e1e7b60f0604254901c60ff166047546040518363ffffffff1660e01b81526004016109649291906157e2565b60006040518083038186803b15801561097c57600080fd5b505afa158015610990573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109b89190810190615482565b90505b90565b60378054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa257600080fd5b505afa158015610ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ada9190614f7a565b6001600160a01b0316336001600160a01b031614610b135760405162461bcd60e51b8152600401610b0a90615a06565b60405180910390fd5b604455565b6000610b2c610b25612c27565b8484612c2b565b5060015b92915050565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8457600080fd5b505afa158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190614f7a565b6001600160a01b0316336001600160a01b031614610bec5760405162461bcd60e51b8152600401610b0a90615a06565b60428054600160ff60f81b031690558015610cb65760428054600160f81b179055603f5415610cb657610ca36048805480602002602001604051908101604052809291908181526020016000905b82821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b50505050612cdf565b6000603f819055610cb690604890614c10565b6042546040513391600160f81b161515907f3f14e04c219cb203de89f60db463113cc68cf16c00a46ef96a1fce6ca8abb5bb90600090a350565b60365490565b6000610d03848484612cf1565b610d7384610d0f612c27565b610d6e85604051806060016040528060288152602001615f70602891396001600160a01b038a16600090815260356020526040812090610d4d612c27565b6001600160a01b031681526020810191909152604001600020549190612e06565b612c2b565b5060015b9392505050565b603e6020528160005260406000208181548110610d9757fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b6043546001600160a01b031681565b60395461010090046001600160a01b031681565b60455481565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3457600080fd5b505afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c9190614f7a565b6001600160a01b0316336001600160a01b031614610e9c5760405162461bcd60e51b8152600401610b0a90615b30565b610ec08160405180604001604052806002815260200161313560f01b815250612e32565b50565b60006060604254600160f91b1660001415610efb5750506040805180820190915260028152610c4d60f21b6020820152600090610f10565b50506040805160208101909152600081526001905b9091565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a9190614f7a565b6001600160a01b0316336001600160a01b031614610fca5760405162461bcd60e51b8152600401610b0a90615bdf565b610fd383612e63565b610fdc82612e96565b610fe581612ecb565b505050565b60395460ff1690565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561104157600080fd5b505afa158015611055573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110799190614f7a565b6001600160a01b0316336001600160a01b0316146110a95760405162461bcd60e51b8152600401610b0a90615a06565b604280546001607f60f91b031690558061116157603f541561115c5761114960488054806020026020016040519081016040528092919081815260200160009082821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b6000603f81905561115c90604890614c10565b61116e565b60428054600160f91b1790555b6042546040513391600160f91b161515907fbef546d8099130f7f80a42b7eb7f2aa81c1dd73f07fc569fe30338e102bba27390600090a350565b6000610b2c6111b5612c27565b84610d6e85603560006111c6612c27565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612f00565b60006060611202611993565b915091508181906112265760405162461bcd60e51b8152600401610b0a91906159f3565b50603f54156112c5576112c56048805480602002602001604051908101604052809291908181526020016000905b828210156112b4576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611254565b505050506112c061248a565b612f25565b5050565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b15801561131757600080fd5b505afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f9190614f7a565b6001600160a01b0316336001600160a01b03161461137f5760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612e63565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d657600080fd5b505afa1580156113ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140e9190614f7a565b6001600160a01b0316336001600160a01b03161461143e5760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612e96565b6048818154811061145457fe5b6000918252602090912060029091020180546001909101546001600160a01b03918216925090811690600160a01b900460ff1683565b6001600160a01b0381166000908152603460205260409020545b919050565b6002603a5414156114cc5760405162461bcd60e51b8152600401610b0a90615dde565b6002603a55600060606114dd611993565b915091508181906115015760405162461bcd60e51b8152600401610b0a91906159f3565b50505061151461150f612fd2565b613099565b600061151e6132e9565b9050600061152a61248a565b604354909150611545906001600160a01b031633308a6132fe565b600061154f61248a565b9050600061155d8284613356565b9050600061156a82612719565b905060006115788383613356565b90506115fd33600083858e8e80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d8d8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061337e92505050565b336000908152603d60205260409020546116179082612f00565b336000908152603d6020526040902055811561164c5760425460435461164c916001600160a01b039091169060501c846133bf565b85158061165e575061165c610cf0565b155b156116725761166d33826133de565b611697565b611697336116928861168c611685610cf0565b869061349e565b906134d8565b6133de565b50506001603a55505050505050505050565b60006116b361350a565b60015490915060ff16806116ca57506116ca61350f565b806116d6575060005481115b6116f25760405162461bcd60e51b8152600401610b0a90615c20565b60015460ff16158015611711576001805460ff19168117905560008290555b6000855111604051806040016040528060018152602001600d60fa1b8152509061174e5760405162461bcd60e51b8152600401610b0a91906159f3565b506000845111604051806040016040528060018152602001600d60fa1b8152509061178c5760405162461bcd60e51b8152600401610b0a91906159f3565b5060398054610100600160a81b0319166101006001600160a01b038a16021790556117b5614c31565b603954604051639ec39e2f60e01b81526101009091046001600160a01b031690639ec39e2f906117e990879060040161579f565b60006040518083038186803b15801561180157600080fd5b505afa158015611815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261183d9190810190615561565b905061184d848260600151613515565b61185687613566565b61188486826080015160405160200161187092919061584c565b604051602081830303815290604052613756565b6118b2858260a0015160405160200161189e92919061580c565b604051602081830303815290604052613769565b6043546040805163313ce56760e01b81529051611935926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156118f857600080fd5b505afa15801561190c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119309190615708565b61377c565b508015611947576001805460ff191690555b50505050505050565b600061195a610cf0565b1561198b5761198461196a610cf0565b61168c670de0b6b3a764000061197e6132e9565b9061349e565b90506109bb565b5060006109bb565b60006060604254600160f91b16600014156119cb5750506040805180820190915260028152610c4d60f21b6020820152600090610f10565b604254600160f81b1615610efb575050604080518082019091526002815261313360f01b6020820152600090610f10565b60006060611a08611993565b91509150818190611a2c5760405162461bcd60e51b8152600401610b0a91906159f3565b5060006060611a39610ec3565b91509150818190611a5d5760405162461bcd60e51b8152600401610b0a91906159f3565b50611a6e611a696108a4565b613792565b6000611afe6049805480602002602001604051908101604052809291908181526020016000905b82821015611af5576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611a95565b50505050611dbb565b9050603f548114611c4657603f5415611b9557611b9560488054806020026020016040519081016040528092919081815260200160009082821015610c9a576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101610c3a565b611ba160486000614c10565b60005b604954811015611c3f57604860498281548110611bbd57fe5b6000918252602080832084546001818101875595855291909320600292830290930180549190920290920180546001600160a01b03199081166001600160a01b03948516178255918401805491850180549093169190931617808255915460ff600160a01b918290041615150260ff60a01b1990921691909117905501611ba4565b50603f8190555b6000611c5061248a565b603f5490915015801590611c645750600081115b15611cf857611cf86048805480602002602001604051908101604052809291908181526020016000905b82821015611cee576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101611c8e565b5050505082612f25565b505050505050565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d4e57600080fd5b505afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190614f7a565b6001600160a01b0316336001600160a01b031614611db65760405162461bcd60e51b8152600401610b0a90615a06565b604655565b805160009015611eda57606082516001600160401b0381118015611dde57600080fd5b50604051908082528060200260200182016040528015611e08578160200160208202803683370190505b50905060005b8351811015611ea657838181518110611e2357fe5b602002602001015160000151848281518110611e3b57fe5b602002602001015160200151858381518110611e5357fe5b602002602001015160400151604051602001611e719392919061576c565b60405160208183030381529060405280519060200120828281518110611e9357fe5b6020908102919091010152600101611e0e565b5060475481604051602001611ebc9291906157a8565b604051602081830303815290604052805190602001209150506114a4565b506000919050565b603960019054906101000a90046001600160a01b03166001600160a01b031663054159966040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190614f7a565b6001600160a01b0316336001600160a01b031614611f985760405162461bcd60e51b8152600401610b0a90615bdf565b610ec081612ecb565b60405481565b6000610b30611fb4610fea565b60ff16600a0a6020604254901c61ffff1602611fe961271061168c6030604254901c61ffff168761349e90919063ffffffff16565b90612f00565b60388054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b600381565b60606048805480602002602001604051908101604052809291908181526020016000905b828210156120d9576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101612079565b50505050905090565b6000610b2c6120ef612c27565b84610d6e85604051806060016040528060258152602001615f986025913960356000612119612c27565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612e06565b6000610b2c612157612c27565b8484612cf1565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156121ac57600080fd5b505afa1580156121c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e49190614f7a565b6001600160a01b0316336001600160a01b0316146122145760405162461bcd60e51b8152600401610b0a90615b30565b612226816001600160a01b031661382c565b6122425760405162461bcd60e51b8152600401610b0a90615cf4565b603980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b603f5481565b60415481565b60006060604254600160fa1b1660001415801561229c575061229a61079b89612bab565b155b156122c35750506040805180820190915260018152600760fb1b6020820152600090612423565b6001600160a01b03881632148015906122e457506122e2888585612bea565b155b1561230b5750506040805180820190915260018152603960f81b6020820152600090612423565b604154861015612338575050604080518082019091526002815261031360f41b6020820152600090612423565b60006123426132e9565b90508715801561235c575060455461235a8288613356565b115b15612385575050604080518082019091526002815261313160f01b602082015260009150612423565b6045546123928289612f00565b11156123bc575050604080518082019091526002815261313160f01b602082015260009150612423565b604080546001600160a01b038b166000908152603d60205291909120546123e39089612f00565b111561240d575050604080518082019091526002815261189960f11b602082015260009150612423565b5050604080516020810190915260008152600191505b965096945050505050565b603954604354600091610b309184916001600160a01b03610100909104811691309116613832565b60465481565b60006040604254901c61ffff166124828361168c6127108761349e90919063ffffffff16565b109392505050565b6043546040516370a0823160e01b81526000916001600160a01b0316906370a08231906124bb903090600401615897565b60206040518083038186803b1580156124d357600080fd5b505afa1580156124e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b8919061562e565b60475481565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561255f57600080fd5b505afa158015612573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125979190614f7a565b6001600160a01b0316336001600160a01b0316146125c75760405162461bcd60e51b8152600401610b0a90615a06565b604255565b603960019054906101000a90046001600160a01b03166001600160a01b031663289b3c0d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561261a57600080fd5b505afa15801561262e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126529190614f7a565b6001600160a01b0316336001600160a01b0316146126825760405162461bcd60e51b8152600401610b0a90615a06565b603954604051639ec39e2f60e01b8152610ec09183916101009091046001600160a01b031690639ec39e2f906126bc90849060040161579f565b60006040518083038186803b1580156126d457600080fd5b505afa1580156126e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127109190810190615561565b60600151613515565b6000610b30612726610fea565b60ff16600a0a60425461ffff1602611fe961271061168c6010604254901c61ffff168761349e90919063ffffffff16565b603960019054906101000a90046001600160a01b03166001600160a01b031663e7f43c686040518163ffffffff1660e01b815260040160206040518083038186803b1580156127a557600080fd5b505afa1580156127b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127dd9190614f7a565b6001600160a01b0316336001600160a01b03161461280d5760405162461bcd60e51b8152600401610b0a90615b30565b610ec081613566565b6002603a5414156128395760405162461bcd60e51b8152600401610b0a90615dde565b6002603a556000606061284a610ec3565b9150915081819061286e5760405162461bcd60e51b8152600401610b0a91906159f3565b50505061287c61150f612fd2565b6128eb338686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250613a6292505050565b600061290a6128f8610cf0565b61168c6129036132e9565b899061349e565b90506129163387613a96565b600061292061248a565b905081811015612abf5760006129368383613356565b60395460435460488054604080516020808402820181019092528281529596506000956129f0956001600160a01b03610100909104811695169388939192909190889084015b828210156129dc576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff16151591830191909152908352909201910161297c565b50505050613b6c909392919063ffffffff16565b9050612a816048805480602002602001604051908101604052809291908181526020016000905b82821015612a77576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101612a17565b5050505082613ce4565b6000612a8b61248a565b90506000612a998286613356565b905083811015612aba57612ab7612ab08583613356565b8790613356565b95505b505050505b6000612aca83611fa7565b90508015612af157604254604354612af1916001600160a01b039091169060501c836133bf565b612b1233612aff8584613356565b6043546001600160a01b031691906133bf565b50506001603a55505050505050565b60425481565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b603b8181548110612b5f57fe5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b603d6020526000908152604090205481565b603c6020526000908152604090205481565b600081604051602001612bbe919061574f565b604051602081830303815290604052805190602001209050919050565b6000610d778260445485613d71565b6000612bfe612bf885612bab565b84612bdb565b8015612c1f5750612c1f612c19612c1486613e0e565b613e12565b83613e25565b949350505050565b3390565b6001600160a01b038316612c515760405162461bcd60e51b8152600401610b0a90615d19565b6001600160a01b038216612c775760405162461bcd60e51b8152600401610b0a90615a80565b6001600160a01b0380841660008181526035602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612cd290859061579f565b60405180910390a3505050565b610ec081612cec8361242e565b613ce4565b6001600160a01b038316612d175760405162461bcd60e51b8152600401610b0a90615caf565b6001600160a01b038216612d3d5760405162461bcd60e51b8152600401610b0a90615a3d565b612d48838383613e34565b612d8581604051806060016040528060268152602001615f4a602691396001600160a01b0386166000908152603460205260409020549190612e06565b6001600160a01b038085166000908152603460205260408082209390935590841681522054612db49082612f00565b6001600160a01b0380841660008181526034602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612cd290859061579f565b60008184841115612e2a5760405162461bcd60e51b8152600401610b0a91906159f3565b505050900390565b60005b8251811015610fe557612e5b838281518110612e4d57fe5b602002602001015183613e77565b600101612e35565b604081815551339082907f70c87424f133fbd8c8e63b0dc9c2d2702db0a79d7d4139b25a5035f250b9f73890600090a350565b6041819055604051339082907f7af95a1df120276e178a852832ba64d58429b2b5986955c772448d80c08ef39290600090a350565b6045819055604051339082907fae4cf6e16f407af30e4a8e158871dd4eb7d4ad22f2438ccc43c5855fcd6ebbee90600090a350565b600082820183811015610d775760405162461bcd60e51b8152600401610b0a90615ac2565b603954600090612f4490849061010090046001600160a01b0316613f13565b905060005b81811015612fcc576040805160c0810182526039546001600160a01b03610100909104811682523060208301526043541691810191909152606081018490526080810182905260a08101839052612fc490612fa5908690614045565b604051806040016040528060018152602001601960f91b815250612e32565b600101612f49565b50505050565b603f54600090612fe35760006109b8565b60395460435460488054604080516020808402820181019092528281526109b8956001600160a01b036101009091048116953095911693919290919060009084015b82821015613085576000848152602090819020604080516060810182526002860290920180546001600160a01b03908116845260019182015490811684860152600160a01b900460ff161515918301919091529083529092019101613025565b5050505061442c909392919063ffffffff16565b436000908152603e6020526040902054801561329357436000818152603e6020818152604080842081516060810190925287825294909352908152825490820190839060001986019081106130ea57fe5b906000526020600020906003020160010154851061313857436000908152603e602052604090208054600019860190811061312157fe5b90600052602060002090600302016001015461313a565b845b8152602001603e6000438152602001908152602001600020600185038154811061316057fe5b90600052602060002090600302016002015485116131ae57436000908152603e602052604090208054600019860190811061319757fe5b9060005260206000209060030201600201546131b0565b845b90528154600181810184556000938452602080852084516003909402019283558084015191830191909155604092830151600290920191909155438352603e9052902080546132549161324e918490811061320757fe5b906000526020600020906003020160010154603e6000438152602001908152602001600020848154811061323757fe5b906000526020600020906003020160020154614742565b8361245c565b60405180604001604052806002815260200161189b60f11b8152509061328d5760405162461bcd60e51b8152600401610b0a91906159f3565b506112c5565b436000908152603e60209081526040808320815160608101835286815280840187815292810187815282546001818101855593875294909520905160039094020192835590519082015590516002909101555050565b60006109b86132f661248a565b611fe9612fd2565b612fcc846323b872dd60e01b85858560405160240161331f93929190615936565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614764565b6000828211156133785760405162461bcd60e51b8152600401610b0a90615af9565b50900390565b60006060613390888888888888612276565b915091508181906133b45760405162461bcd60e51b8152600401610b0a91906159f3565b505050505050505050565b610fe58363a9059cbb60e01b848460405160240161331f92919061595a565b6001600160a01b0382166134045760405162461bcd60e51b8152600401610b0a90615e15565b61341060008383613e34565b60365461341d9082612f00565b6036556001600160a01b0382166000908152603460205260409020546134439082612f00565b6001600160a01b0383166000818152603460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061349290859061579f565b60405180910390a35050565b6000826134ad57506000610b30565b828202828482816134ba57fe5b0414610d775760405162461bcd60e51b8152600401610b0a90615b9e565b60008082116134f95760405162461bcd60e51b8152600401610b0a90615b67565b81838161350257fe5b049392505050565b600390565b303b1590565b6040805180820190915260018152603560f81b60208201528161354b5760405162461bcd60e51b8152600401610b0a91906159f3565b5060425460ff60f01b191660f083901b176042819055505050565b603954604051638346525f60e01b815260609161010090046001600160a01b031690638346525f9061359c90859060040161579f565b60006040518083038186803b1580156135b457600080fd5b505afa1580156135c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135f0919081019061521e565b9050805160011460405180604001604052806002815260200161313760f01b815250906136305760405162461bcd60e51b8152600401610b0a91906159f3565b50603960019054906101000a90046001600160a01b03166001600160a01b0316632d5ad3d58260008151811061366257fe5b60200260200101516040518263ffffffff1660e01b81526004016136869190615897565b60206040518083038186803b15801561369e57600080fd5b505afa1580156136b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d6919061552d565b60405180604001604052806002815260200161313960f01b8152509061370f5760405162461bcd60e51b8152600401610b0a91906159f3565b50816047819055508060008151811061372457fe5b6020026020010151604360006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b80516112c5906037906020840190614c69565b80516112c5906038906020840190614c69565b6039805460ff191660ff92909216919091179055565b61379e60496000614c10565b60005b81518110156112c55760498282815181106137b857fe5b602090810291909101810151825460018082018555600094855293839020825160029092020180546001600160a01b03199081166001600160a01b039384161782559383015190850180546040909401519390941691161760ff60a01b1916600160a01b91151591909102179055016137a1565b3b151590565b6000808560018751038151811061384557fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016138819190615897565b60206040518083038186803b15801561389957600080fd5b505afa1580156138ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d19190614f7a565b6040516336d8bf9360e01b81529091506001600160a01b038216906336d8bf9390613900908590600401615897565b60206040518083038186803b15801561391857600080fd5b505afa15801561392c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613950919061552d565b6139d9576040516390e6160560e01b81526001600160a01b038216906390e6160590613984908890889087906004016158c5565b60206040518083038186803b15801561399c57600080fd5b505afa1580156139b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d4919061562e565b613a57565b60405163afd908d960e01b81526001600160a01b0382169063afd908d990613a0790889086906004016158ab565b60206040518083038186803b158015613a1f57600080fd5b505afa158015613a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a57919061562e565b979650505050505050565b60006060613a7286868686610777565b915091508181906119475760405162461bcd60e51b8152600401610b0a91906159f3565b6001600160a01b038216613abc5760405162461bcd60e51b8152600401610b0a90615c6e565b613ac882600083613e34565b613b0581604051806060016040528060228152602001615f28602291396001600160a01b0385166000908152603460205260409020549190612e06565b6001600160a01b038316600090815260346020526040902055603654613b2b9082613356565b6036556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061349290859061579f565b8351600090815b81811015613cda576000878281518110613b8957fe5b60200260200101516000015190506000876001600160a01b031663923bb7ff836040518263ffffffff1660e01b8152600401613bc59190615897565b60206040518083038186803b158015613bdd57600080fd5b505afa158015613bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c159190614f7a565b9050868315613c3c57896001850381518110613c2d57fe5b60200260200101516020015190505b6001600160a01b0382166385541e4482858715613c595789613c5b565b8a5b6040518463ffffffff1660e01b8152600401613c7993929190615936565b60206040518083038186803b158015613c9157600080fd5b505afa158015613ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc9919061562e565b95505060019092019150613b739050565b5050949350505050565b815160005b81811015612fcc576040805160c0810182526039546001600160a01b036101009091048116825230602083015260435416918101919091526060810184905281830360001901608082015260a08101839052613d6990613d4a9086906147f3565b604051806040016040528060018152602001603360f81b815250612e32565b600101613ce9565b600081815b8551811015613e03576000868281518110613d8d57fe5b60200260200101519050808311613dce578281604051602001613db19291906157e2565b604051602081830303815290604052805190602001209250613dfa565b8083604051602001613de19291906157e2565b6040516020818303038152906040528051906020012092505b50600101613d76565b509092149392505050565b3f90565b600081604051602001612bbe919061579f565b6000610d778260465485613d71565b604080518082019091526002815261062760f31b60208201526001600160a01b038316301415612fcc5760405162461bcd60e51b8152600401610b0a91906159f3565b6000606083806020019051810190613e8f9190614f96565b915091506000826001600160a01b031682604051613ead91906157f0565b6000604051808303816000865af19150503d8060008114613eea576040519150601f19603f3d011682016040523d82523d6000602084013e613eef565b606091505b50509050808490611cf85760405162461bcd60e51b8152600401610b0a91906159f3565b815160009081846000198301838110613f2857fe5b6020026020010151600001519050836001600160a01b031663923bb7ff826040518263ffffffff1660e01b8152600401613f629190615897565b60206040518083038186803b158015613f7a57600080fd5b505afa158015613f8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb29190614f7a565b6001600160a01b03166336d8bf93826040518263ffffffff1660e01b8152600401613fdd9190615897565b60206040518083038186803b158015613ff557600080fd5b505afa158015614009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402d919061552d565b1561403d57506001019050610b30565b509392505050565b8051604082015160608381015185516080860151929493928114156142435760008760018860800151038151811061407957fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016140b59190615897565b60206040518083038186803b1580156140cd57600080fd5b505afa1580156140e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141059190614f7a565b90508860018960800151038151811061411a57fe5b602002602001015160200151945087604001516001600160a01b03166370a0823189602001516040518263ffffffff1660e01b815260040161415c9190615897565b60206040518083038186803b15801561417457600080fd5b505afa158015614188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ac919061562e565b9350806001600160a01b03166374df3b2f89602001518a60400151856040518463ffffffff1660e01b81526004016141e6939291906158c5565b60006040518083038186803b1580156141fe57600080fd5b505afa158015614212573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261423a919081019061533e565b96505050614422565b60008787608001518151811061425557fe5b60200260200101516000015190506000856001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016142919190615897565b60206040518083038186803b1580156142a957600080fd5b505afa1580156142bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142e19190614f7a565b90508760800151600014614393578860018960800151038151811061430257fe5b6020026020010151602001519450846001600160a01b03166370a0823189602001516040518263ffffffff1660e01b81526004016143409190615897565b60206040518083038186803b15801561435857600080fd5b505afa15801561436c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614390919061562e565b93505b6020880151604051636fc9ab9160e11b81526001600160a01b0383169163df935722916143c99190899087908a906004016158e8565b60006040518083038186803b1580156143e157600080fd5b505afa1580156143f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261441d919081019061533e565b965050505b5050505092915050565b835160009081805b828110156147375760008160018503039050600089828151811061445457fe5b60200260200101516000015190506000896001600160a01b031663923bb7ff836040518263ffffffff1660e01b81526004016144909190615897565b60206040518083038186803b1580156144a857600080fd5b505afa1580156144bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144e09190614f7a565b9050878315614507578b60018503815181106144f857fe5b60200260200101516020015190505b600187038414156146a1576040516336d8bf9360e01b81526001600160a01b038316906336d8bf939061453e908690600401615897565b60206040518083038186803b15801561455657600080fd5b505afa15801561456a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458e919061552d565b1561461a57604051632627a09960e01b81526001600160a01b03831690632627a099906145c3908d90859088906004016158c5565b60206040518083038186803b1580156145db57600080fd5b505afa1580156145ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614613919061562e565b975061469c565b60405162c9babf60e71b81526001600160a01b038316906364dd5f8090614649908d90859088906004016158c5565b60206040518083038186803b15801561466157600080fd5b505afa158015614675573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614699919061562e565b97505b614724565b60405163ee665bed60e01b81526001600160a01b0383169063ee665bed906146d190849087908b90600401615936565b60206040518083038186803b1580156146e957600080fd5b505afa1580156146fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614721919061562e565b97505b5086945050600190920191506144349050565b505050949350505050565b600081831161475a576147558284613356565b610d77565b610d778383613356565b60606147b9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b3d9092919063ffffffff16565b805190915015610fe557808060200190518101906147d7919061552d565b610fe55760405162461bcd60e51b8152600401610b0a90615d94565b606060008383608001518151811061480757fe5b602090810291909101015151835160405163923bb7ff60e01b8152919250906000906001600160a01b0383169063923bb7ff90614848908690600401615897565b60206040518083038186803b15801561486057600080fd5b505afa158015614874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148989190614f7a565b6040860151606087015160808801519293509091156148d357876001886080015103815181106148c457fe5b60200260200101516020015191505b60018760a001510387608001511461498357878760800151815181106148f557fe5b6020026020010151602001516001600160a01b03166370a0823188602001516040518263ffffffff1660e01b81526004016149309190615897565b60206040518083038186803b15801561494857600080fd5b505afa15801561495c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614980919061562e565b90505b60018760a00151038760800151148015614a1457506040516336d8bf9360e01b81526001600160a01b038416906336d8bf93906149c4908890600401615897565b60206040518083038186803b1580156149dc57600080fd5b505afa1580156149f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a14919061552d565b614aa7576020870151604051636092577960e01b81526001600160a01b03851691636092577991614a4e919086908a9087906004016158e8565b60006040518083038186803b158015614a6657600080fd5b505afa158015614a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614aa2919081019061533e565b614b31565b6020870151604051631496678160e11b81526001600160a01b0385169163292ccf0291614add919086908a9087906004016158e8565b60006040518083038186803b158015614af557600080fd5b505afa158015614b09573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614b31919081019061533e565b98975050505050505050565b6060612c1f848460008585614b518561382c565b614b6d5760405162461bcd60e51b8152600401610b0a90615d5d565b60006060866001600160a01b03168587604051614b8a91906157f0565b60006040518083038185875af1925050503d8060008114614bc7576040519150601f19603f3d011682016040523d82523d6000602084013e614bcc565b606091505b5091509150613a5782828660608315614be6575081610d77565b825115614bf65782518084602001fd5b8160405162461bcd60e51b8152600401610b0a91906159f3565b5080546000825560020290600052602060002090810190610ec09190614ce7565b6040805160c08101825260008082526020820152908101614c50614d18565b8152600060208201526060604082018190529081015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614caa57805160ff1916838001178555614cd7565b82800160010185558215614cd7579182015b82811115614cd7578251825591602001919060010190614cbc565b50614ce3929150614d2f565b5090565b5b80821115614ce35780546001600160a01b03191681556001810180546001600160a81b0319169055600201614ce8565b604080518082019091526000808252602082015290565b5b80821115614ce35760008155600101614d30565b8035610b3081615f04565b60008083601f840112614d60578182fd5b5081356001600160401b03811115614d76578182fd5b6020830191508360208083028501011115614d9057600080fd5b9250929050565b600082601f830112614da7578081fd5b8135614dba614db582615e96565b615e70565b818152915060208083019084810181840286018201871015614ddb57600080fd5b60005b84811015614dfa57813584529282019290820190600101614dde565b505050505092915050565b8035610b3081615f19565b8051610b3081615f19565b600082601f830112614e2b578081fd5b8135614e39614db582615eb5565b9150808252836020828501011115614e5057600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112614e79578081fd5b8151614e87614db582615eb5565b9150808252836020828501011115614e9e57600080fd5b614eaf816020840160208601615ed8565b5092915050565b600060408284031215614ec7578081fd5b614ed16040615e70565b9050614edd8383614f4d565b8152614eec8360208401614f4d565b602082015292915050565b600060608284031215614f08578081fd5b614f126060615e70565b90508151614f1f81615f04565b81526020820151614f2f81615f04565b60208201526040820151614f4281615f19565b604082015292915050565b805160ff81168114610b3057600080fd5b600060208284031215614f6f578081fd5b8135610d7781615f04565b600060208284031215614f8b578081fd5b8151610d7781615f04565b60008060408385031215614fa8578081fd5b8251614fb381615f04565b60208401519092506001600160401b03811115614fce578182fd5b614fda85828601614e69565b9150509250929050565b60008060408385031215614ff6578182fd5b823561500181615f04565b9150602083013561501181615f04565b809150509250929050565b600080600060608486031215615030578081fd5b833561503b81615f04565b9250602084013561504b81615f04565b929592945050506040919091013590565b60008060008060008060c08789031215615074578384fd5b863561507f81615f04565b9550602087013561508f81615f19565b9450604087013593506060870135925060808701356001600160401b03808211156150b8578384fd5b6150c48a838b01614d97565b935060a08901359150808211156150d9578283fd5b506150e689828a01614d97565b9150509295509295509295565b600080600080600060a0868803121561510a578283fd5b853561511581615f04565b94506020860135935060408601356001600160401b0380821115615137578485fd5b61514389838a01614e1b565b94506060880135915080821115615158578283fd5b5061516588828901614e1b565b95989497509295608001359392505050565b60008060408385031215615189578182fd5b823561519481615f04565b946020939093013593505050565b600080600080608085870312156151b7578182fd5b84356151c281615f04565b93506020850135925060408501356001600160401b03808211156151e4578384fd5b6151f088838901614d97565b93506060870135915080821115615205578283fd5b5061521287828801614d97565b91505092959194509250565b60006020808385031215615230578182fd5b82516001600160401b03811115615245578283fd5b8301601f81018513615255578283fd5b8051615263614db582615e96565b818152838101908385018584028501860189101561527f578687fd5b8694505b838510156152aa57805161529681615f04565b835260019490940193918501918501615283565b50979650505050505050565b600060208083850312156152c8578182fd5b82356001600160401b038111156152dd578283fd5b8301601f810185136152ed578283fd5b80356152fb614db582615e96565b81815283810190838501865b848110156153305761531e8a888435890101614e1b565b84529286019290860190600101615307565b509098975050505050505050565b60006020808385031215615350578182fd5b82516001600160401b03811115615365578283fd5b8301601f81018513615375578283fd5b8051615383614db582615e96565b81815283810190838501865b84811015615330576153a68a888451890101614e69565b8452928601929086019060010161538f565b600060208083850312156153ca578182fd5b82356001600160401b038111156153df578283fd5b8301601f810185136153ef578283fd5b80356153fd614db582615e96565b818152838101908385016060808502860187018a101561541b578788fd5b8795505b848610156153305780828b031215615435578788fd5b61543e81615e70565b6154488b84614d44565b81526154568b898501614d44565b8882015260406154688c828601614e05565b90820152845260019590950194928601929081019061541f565b60006020808385031215615494578182fd5b82516001600160401b038111156154a9578283fd5b8301601f810185136154b9578283fd5b80516154c7614db582615e96565b818152838101908385016060808502860187018a10156154e5578788fd5b8795505b84861015615330576154fb8a83614ef7565b84526001959095019492860192908101906154e9565b600060208284031215615522578081fd5b8135610d7781615f19565b60006020828403121561553e578081fd5b8151610d7781615f19565b60006020828403121561555a578081fd5b5035919050565b600060208284031215615572578081fd5b81516001600160401b0380821115615588578283fd5b9083019060e0828603121561559b578283fd5b6155a560c0615e70565b825181526155b68660208501614e10565b60208201526155c88660408501614eb6565b60408201526155da8660808501614e10565b606082015260a0830151828111156155f0578485fd5b6155fc87828601614e69565b60808301525060c083015182811115615613578485fd5b61561f87828601614e69565b60a08301525095945050505050565b60006020828403121561563f578081fd5b5051919050565b60008060008060006060868803121561565d578283fd5b8535945060208601356001600160401b038082111561567a578485fd5b61568689838a01614d4f565b9096509450604088013591508082111561569e578283fd5b506156ab88828901614d4f565b969995985093965092949392505050565b600080604083850312156156ce578182fd5b50508035926020909101359150565b6000806000606084860312156156f1578081fd5b505081359360208301359350604090920135919050565b600060208284031215615719578081fd5b610d778383614f4d565b6000815180845261573b816020860160208601615ed8565b601f01601f19169290920160200192915050565b60609190911b6bffffffffffffffffffffffff1916815260140190565b6bffffffffffffffffffffffff19606094851b811682529290931b9091166014830152151560f81b602882015260290190565b90815260200190565b600083825260208083018451828601845b828110156157d5578151845292840192908401906001016157b9565b5091979650505050505050565b918252602082015260400190565b60008251615802818460208701615ed8565b9190910192915050565b60006106f760f41b82528351615829816002850160208801615ed8565b835190830190615840816002840160208801615ed8565b01600201949350505050565b600062037b8160ed1b8252835161586a816003850160208801615ed8565b600160fd1b600391840191820152835161588b816004840160208801615ed8565b01600401949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000919060409081850190868401855b828110156157d557815180516001600160a01b03908116865287820151168786015285015115158585015260609093019290850190600101615990565b901515815260200190565b6000831515825260406020830152612c1f6040830184615723565b600060208252610d776020830184615723565b6020808252601f908201527f63616c6c6572206973206e6f7420686176696e6720676f7665726e616e636500604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b6020808252601a908201527f63616c6c6572206973206e6f7420746865206f70657261746f72000000000000604082015260600190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526021908201527f63616c6c6572206973206e6f74207468652066696e616e63654f70657261746f6040820152603960f91b606082015260800190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600b908201526a085a5cd0dbdb9d1c9858dd60aa1b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b0381118282101715615e8e57600080fd5b604052919050565b60006001600160401b03821115615eab578081fd5b5060209081020190565b60006001600160401b03821115615eca578081fd5b50601f01601f191660200190565b60005b83811015615ef3578181015183820152602001615edb565b83811115612fcc5750506000910152565b6001600160a01b0381168114610ec057600080fd5b8015158114610ec057600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c634300060c000a" +} diff --git a/deployments/mumbai/opUSDCgrow_Proxy.json b/deployments/mumbai/opUSDCgrow_Proxy.json new file mode 100644 index 000000000..ed5aeec54 --- /dev/null +++ b/deployments/mumbai/opUSDCgrow_Proxy.json @@ -0,0 +1,232 @@ +{ + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ProxyImplementationUpdated", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "id", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "receipt": { + "to": null, + "from": "0xD26Ec7401C198ADAc340d3A4Cb8B52b845F3A542", + "contractAddress": "0x72aba46f25C4c270d20c575D023627B45E307446", + "transactionIndex": 0, + "gasUsed": "825168", + "logsBloom": "0x00000000000008000000000000000000000000000000000400800000000000000000000000000000001400000000000000008000008000000000000000000000000000000000000000000000000000800001000000000000000100000000004008000000020000000000000000000800000000000000010080000000000000400000000000000000000000000000000000000020000080000000000000000000200000000000000000000000000200000000000000000000000000000000004000000000000000000001000000000000000000000000000400100040000020020000000000000000200400000000000000000000000000000000002000100000", + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1", + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "logs": [ + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "topics": [ + "0x5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b7379068296", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000004e4e888d767823c44c3f3f9e879fb843b961fcfe" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + }, + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x72aba46f25C4c270d20c575D023627B45E307446", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000320305a31dd2af0195c66f733662646a74c09c4f" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + }, + { + "transactionIndex": 0, + "blockNumber": 25826498, + "transactionHash": "0x4a22c118c455b663576430c8998127ecb87013f174b6e702406b1b6093005d59", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d26ec7401c198adac340d3a4cb8b52b845f3a542", + "0x000000000000000000000000be188d6641e8b680743a4815dfa0f6208038960f" + ], + "data": "0x00000000000000000000000000000000000000000000000000be8d95c65bce30000000000000000000000000000000000000000000000000070af0b440877200000000000000000000000000000000000000000000000ee5a6efc85896a4bbbc000000000000000000000000000000000000000000000000064c631e7a2ba3d0000000000000000000000000000000000000000000000ee5a7ae55ee5d0089ec", + "logIndex": 2, + "blockHash": "0x68bac6d3f6854210d7ebe9513ce2cb8159926c80dc0dda8818a045fdcb2a95f1" + } + ], + "blockNumber": 25826498, + "cumulativeGasUsed": "825168", + "status": 1, + "byzantium": true + }, + "args": [ + "0x4E4E888d767823c44C3f3F9E879fb843B961FCfE", + "0x320305A31dd2aF0195C66F733662646a74C09C4F", + "0x76e57d0300000000000000000000000032bd1a6fdaec327b57cdb2cfde0855afb3255d7cc929d122f2ee0e0a6364f59c9c9f4f01383050c42ebefae1b80ae28b1bc9d8fe00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000f5553444320436f696e2028506f5329000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000" + ], + "solcInputHash": "2db89642daf7ebd20cbbef9f4540b20d", + "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ProxyImplementationUpdated\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"id\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Proxy implementing EIP173 for ownership management\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.7/proxy/EIP173Proxy.sol\":\"EIP173Proxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.7/proxy/EIP173Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\nimport \\\"./Proxy.sol\\\";\\n\\ninterface ERC165 {\\n function supportsInterface(bytes4 id) external view returns (bool);\\n}\\n\\n///@notice Proxy implementing EIP173 for ownership management\\ncontract EIP173Proxy is Proxy {\\n // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////\\n\\n constructor(\\n address implementationAddress,\\n address ownerAddress,\\n bytes memory data\\n ) payable {\\n _setImplementation(implementationAddress, data);\\n _setOwner(ownerAddress);\\n }\\n\\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n function owner() external view returns (address) {\\n return _owner();\\n }\\n\\n function supportsInterface(bytes4 id) external view returns (bool) {\\n if (id == 0x01ffc9a7 || id == 0x7f5828d0) {\\n return true;\\n }\\n if (id == 0xFFFFFFFF) {\\n return false;\\n }\\n\\n ERC165 implementation;\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n implementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n }\\n\\n // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure\\n // because it is itself inside `supportsInterface` that might only get 30,000 gas.\\n // In practise this is unlikely to be an issue.\\n try implementation.supportsInterface(id) returns (bool support) {\\n return support;\\n } catch {\\n return false;\\n }\\n }\\n\\n function transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n function upgradeTo(address newImplementation) external onlyOwner {\\n _setImplementation(newImplementation, \\\"\\\");\\n }\\n\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable onlyOwner {\\n _setImplementation(newImplementation, data);\\n }\\n\\n // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////\\n\\n modifier onlyOwner() {\\n require(msg.sender == _owner(), \\\"NOT_AUTHORIZED\\\");\\n _;\\n }\\n\\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n function _owner() internal view returns (address adminAddress) {\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n adminAddress := sload(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n address previousOwner = _owner();\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n sstore(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103, newOwner)\\n }\\n emit OwnershipTransferred(previousOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x7f9bbb686cd29ade05acf0cec1bfded16f0ad8d7e3fcb9cf35cc8b04efdda744\",\"license\":\"MIT\"},\"solc_0.7/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\n// EIP-1967\\nabstract contract Proxy {\\n // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////\\n\\n event ProxyImplementationUpdated(address indexed previousImplementation, address indexed newImplementation);\\n\\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n receive() external payable virtual {\\n revert(\\\"ETHER_REJECTED\\\"); // explicit reject by default\\n }\\n\\n fallback() external payable {\\n _fallback();\\n }\\n\\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n function _fallback() internal {\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n let implementationAddress := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n calldatacopy(0x0, 0x0, calldatasize())\\n let success := delegatecall(gas(), implementationAddress, 0x0, calldatasize(), 0, 0)\\n let retSz := returndatasize()\\n returndatacopy(0, 0, retSz)\\n switch success\\n case 0 {\\n revert(0, retSz)\\n }\\n default {\\n return(0, retSz)\\n }\\n }\\n }\\n\\n function _setImplementation(address newImplementation, bytes memory data) internal {\\n address previousImplementation;\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n previousImplementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n }\\n\\n // solhint-disable-next-line security/no-inline-assembly\\n assembly {\\n sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, newImplementation)\\n }\\n\\n emit ProxyImplementationUpdated(previousImplementation, newImplementation);\\n\\n if (data.length > 0) {\\n (bool success, ) = newImplementation.delegatecall(data);\\n if (!success) {\\n assembly {\\n // This assembly ensure the revert contains the exact string data\\n let returnDataSize := returndatasize()\\n returndatacopy(0, 0, returnDataSize)\\n revert(0, returnDataSize)\\n }\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0xfa071ffed5c967384ac4787576322a46a4863d89bf39cd6fde58d4780b42e0ed\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x6080604052604051610bed380380610bed8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b506040525050506100f1838261010260201b60201c565b6100fa82610225565b505050610299565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8054908390556040516001600160a01b0380851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a3815115610220576000836001600160a01b0316836040518082805190602001908083835b602083106101a55780518252601f199092019160209182019101610186565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610205576040519150601f19603f3d011682016040523d82523d6000602084013e61020a565b606091505b505090508061021e573d806000803e806000fd5b505b505050565b600061022f610286565b905081600080516020610bcd83398151915255816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080516020610bcd8339815191525490565b610925806102a86000396000f3fe60806040526004361061005e5760003560e01c80634f1ef286116100435780634f1ef286146101745780638da5cb5b14610201578063f2fde38b1461023f576100ca565b806301ffc9a7146100d45780633659cfe614610134576100ca565b366100ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45544845525f52454a4543544544000000000000000000000000000000000000604482015290519081900360640190fd5b6100d261027f565b005b3480156100e057600080fd5b50610120600480360360208110156100f757600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102ca565b604080519115158252519081900360200190f35b34801561014057600080fd5b506100d26004803603602081101561015757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661048d565b6100d26004803603604081101561018a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111640100000000831117156101f657600080fd5b50909250905061054a565b34801561020d57600080fd5b50610216610630565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024b57600080fd5b506100d26004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661063f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e8280156102c0578183f35b8183fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061035d57507f7f5828d0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b1561036a57506001610488565b7fffffffff00000000000000000000000000000000000000000000000000000000808316141561039c57506000610488565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000085166004820152905173ffffffffffffffffffffffffffffffffffffffff8316916301ffc9a7916024808301926020929190829003018186803b15801561044c57600080fd5b505afa92505050801561047157506040513d602081101561046c57600080fd5b505160015b61047f576000915050610488565b91506104889050565b919050565b6104956106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b610547816040518060200160405280600081525061070e565b50565b6105526106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61062b8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061070e92505050565b505050565b600061063a6106e9565b905090565b6106476106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61054781610862565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80549083905560405173ffffffffffffffffffffffffffffffffffffffff80851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a381511561062b5760008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106107e957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107ac565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050806102c4573d806000803e806000fd5b600061086c6106e9565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505056fea26469706673582212208c8442845e51519fe66269cee8fe054b83b7617dbcd8cf4d60740d273fa0b8a464736f6c63430007060033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103", + "deployedBytecode": "0x60806040526004361061005e5760003560e01c80634f1ef286116100435780634f1ef286146101745780638da5cb5b14610201578063f2fde38b1461023f576100ca565b806301ffc9a7146100d45780633659cfe614610134576100ca565b366100ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45544845525f52454a4543544544000000000000000000000000000000000000604482015290519081900360640190fd5b6100d261027f565b005b3480156100e057600080fd5b50610120600480360360208110156100f757600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102ca565b604080519115158252519081900360200190f35b34801561014057600080fd5b506100d26004803603602081101561015757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661048d565b6100d26004803603604081101561018a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101c257600080fd5b8201836020820111156101d457600080fd5b803590602001918460018302840111640100000000831117156101f657600080fd5b50909250905061054a565b34801561020d57600080fd5b50610216610630565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024b57600080fd5b506100d26004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661063f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e8280156102c0578183f35b8183fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061035d57507f7f5828d0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b1561036a57506001610488565b7fffffffff00000000000000000000000000000000000000000000000000000000808316141561039c57506000610488565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000085166004820152905173ffffffffffffffffffffffffffffffffffffffff8316916301ffc9a7916024808301926020929190829003018186803b15801561044c57600080fd5b505afa92505050801561047157506040513d602081101561046c57600080fd5b505160015b61047f576000915050610488565b91506104889050565b919050565b6104956106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461052e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b610547816040518060200160405280600081525061070e565b50565b6105526106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61062b8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061070e92505050565b505050565b600061063a6106e9565b905090565b6106476106e9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015290519081900360640190fd5b61054781610862565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80549083905560405173ffffffffffffffffffffffffffffffffffffffff80851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a381511561062b5760008373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b602083106107e957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107ac565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610849576040519150601f19603f3d011682016040523d82523d6000602084013e61084e565b606091505b50509050806102c4573d806000803e806000fd5b600061086c6106e9565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505056fea26469706673582212208c8442845e51519fe66269cee8fe054b83b7617dbcd8cf4d60740d273fa0b8a464736f6c63430007060033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "Proxy implementing EIP173 for ownership management", + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} diff --git a/deployments/mumbai/solcInputs/2db89642daf7ebd20cbbef9f4540b20d.json b/deployments/mumbai/solcInputs/2db89642daf7ebd20cbbef9f4540b20d.json new file mode 100644 index 000000000..965551510 --- /dev/null +++ b/deployments/mumbai/solcInputs/2db89642daf7ebd20cbbef9f4540b20d.json @@ -0,0 +1,39 @@ +{ + "language": "Solidity", + "sources": { + "solc_0.7/proxy/EIP173Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nimport \"./Proxy.sol\";\n\ninterface ERC165 {\n function supportsInterface(bytes4 id) external view returns (bool);\n}\n\n///@notice Proxy implementing EIP173 for ownership management\ncontract EIP173Proxy is Proxy {\n // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////\n\n constructor(\n address implementationAddress,\n address ownerAddress,\n bytes memory data\n ) payable {\n _setImplementation(implementationAddress, data);\n _setOwner(ownerAddress);\n }\n\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\n\n function owner() external view returns (address) {\n return _owner();\n }\n\n function supportsInterface(bytes4 id) external view returns (bool) {\n if (id == 0x01ffc9a7 || id == 0x7f5828d0) {\n return true;\n }\n if (id == 0xFFFFFFFF) {\n return false;\n }\n\n ERC165 implementation;\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n implementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\n }\n\n // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure\n // because it is itself inside `supportsInterface` that might only get 30,000 gas.\n // In practise this is unlikely to be an issue.\n try implementation.supportsInterface(id) returns (bool support) {\n return support;\n } catch {\n return false;\n }\n }\n\n function transferOwnership(address newOwner) external onlyOwner {\n _setOwner(newOwner);\n }\n\n function upgradeTo(address newImplementation) external onlyOwner {\n _setImplementation(newImplementation, \"\");\n }\n\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable onlyOwner {\n _setImplementation(newImplementation, data);\n }\n\n // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////\n\n modifier onlyOwner() {\n require(msg.sender == _owner(), \"NOT_AUTHORIZED\");\n _;\n }\n\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\n\n function _owner() internal view returns (address adminAddress) {\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n adminAddress := sload(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103)\n }\n }\n\n function _setOwner(address newOwner) internal {\n address previousOwner = _owner();\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n sstore(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103, newOwner)\n }\n emit OwnershipTransferred(previousOwner, newOwner);\n }\n}\n" + }, + "solc_0.7/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\n// EIP-1967\nabstract contract Proxy {\n // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////\n\n event ProxyImplementationUpdated(address indexed previousImplementation, address indexed newImplementation);\n\n // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\n\n receive() external payable virtual {\n revert(\"ETHER_REJECTED\"); // explicit reject by default\n }\n\n fallback() external payable {\n _fallback();\n }\n\n // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\n\n function _fallback() internal {\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n let implementationAddress := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\n calldatacopy(0x0, 0x0, calldatasize())\n let success := delegatecall(gas(), implementationAddress, 0x0, calldatasize(), 0, 0)\n let retSz := returndatasize()\n returndatacopy(0, 0, retSz)\n switch success\n case 0 {\n revert(0, retSz)\n }\n default {\n return(0, retSz)\n }\n }\n }\n\n function _setImplementation(address newImplementation, bytes memory data) internal {\n address previousImplementation;\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n previousImplementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\n }\n\n // solhint-disable-next-line security/no-inline-assembly\n assembly {\n sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, newImplementation)\n }\n\n emit ProxyImplementationUpdated(previousImplementation, newImplementation);\n\n if (data.length > 0) {\n (bool success, ) = newImplementation.delegatecall(data);\n if (!success) {\n assembly {\n // This assembly ensure the revert contains the exact string data\n let returnDataSize := returndatasize()\n returndatacopy(0, 0, returnDataSize)\n revert(0, returnDataSize)\n }\n }\n }\n }\n}\n" + }, + "solc_0.7/proxy/EIP173ProxyWithReceive.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.7.0;\n\nimport \"./EIP173Proxy.sol\";\n\n///@notice Proxy implementing EIP173 for ownership management that accept ETH via receive\ncontract EIP173ProxyWithReceive is EIP173Proxy {\n constructor(\n address implementationAddress,\n address ownerAddress,\n bytes memory data\n ) payable EIP173Proxy(implementationAddress, ownerAddress, data) {}\n\n receive() external payable override {}\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 999999 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": ["ast"] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} diff --git a/hardhat.config.ts b/hardhat.config.ts index 1afb69954..54bb401c4 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -60,6 +60,7 @@ const getCommonNetworkConfig = (rpcUrl: string, networkName: eEVMNetwork, networ chainId: networkId, deploy: [`deploy`, `deploy_${NETWORK_NAME}`], timeout: 100000, + accounts: process.env.PK?.split(","), }); const config: HardhatUserConfig = { From 8fe098e5fc467df7aafccd0dccb1e871c90abc86 Mon Sep 17 00:00:00 2001 From: dhruvinparikh Date: Wed, 6 Apr 2022 20:44:03 -0400 Subject: [PATCH 2/5] refactor(tasks): add vault deposit all to strategy --- cli.md | 2 +- tasks/actions/vault-actions.ts | 42 ++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/cli.md b/cli.md index 03bd3dcde..40dbeb056 100644 --- a/cli.md +++ b/cli.md @@ -390,7 +390,7 @@ Usage: perform actions in the vault contract Options: --vault required
the address of vault --user required
account address of the user ---action required "DEPOSIT" || "WITHDRAW" || "REBALANCE" +--action required "DEPOSIT" || "WITHDRAW" || "REBALANCE" || "VAULT-DEPOSIT-ALL-TO-STRATEGY" --merkle-proof required merkle proofs in stringified form --useall optional use whole balance (default: false) --amount optional amount of token (default: 0) diff --git a/tasks/actions/vault-actions.ts b/tasks/actions/vault-actions.ts index 0f1b4229b..5cc8296de 100644 --- a/tasks/actions/vault-actions.ts +++ b/tasks/actions/vault-actions.ts @@ -9,13 +9,18 @@ import { getAllowWhitelistState } from "../../helpers/utils"; task(TASKS.ACTION_TASKS.VAULT_ACTIONS.NAME, TASKS.ACTION_TASKS.VAULT_ACTIONS.DESCRIPTION) .addParam("vault", "the address of vault", "", types.string) - .addParam("action", "deposit, withdraw or rebalance", "DEPOSIT" || "WITHDRAW" || "REBALANCE", types.string) + .addParam( + "action", + "deposit, withdraw or rebalance", + "DEPOSIT" || "WITHDRAW" || "REBALANCE" || "VAULT-DEPOSIT-ALL-TO-STRATEGY", + types.string, + ) .addParam("user", "account address of the user", "", types.string) .addParam("merkleProof", "user merkle proof", "", types.string) .addOptionalParam("useall", "use whole balance", false, types.boolean) .addOptionalParam("amount", "amount of token", 0, types.int) .setAction(async ({ vault, action, user, amount, useall, merkleProof }, hre) => { - const ACTIONS = ["DEPOSIT", "WITHDRAW", "REBALANCE"]; + const ACTIONS = ["DEPOSIT", "WITHDRAW", "REBALANCE", "VAULT-DEPOSIT-ALL-TO-STRATEGY"]; if (vault === "") { throw new Error("vault cannot be empty"); } @@ -229,6 +234,39 @@ task(TASKS.ACTION_TASKS.VAULT_ACTIONS.NAME, TASKS.ACTION_TASKS.VAULT_ACTIONS.DES } break; } + case "VAULT-DEPOSIT-ALL-TO-STRATEGY": { + try { + let strategyHash = await vaultContract.investStrategyHash(); + console.log(`Invest strategy : ${strategyHash}`); + console.log("Depositing all to strategy.."); + console.log("Block before : ", await hre.ethers.provider.getBlockNumber()); + console.log( + "total supply before : ", + hre.ethers.utils.formatUnits(await vaultContract.totalSupply(), tokenDecimals), + ); + console.log( + "Price per full share before : ", + hre.ethers.utils.formatEther(await vaultContract.getPricePerFullShare()), + ); + const tx3 = await vaultContract.connect(userSigner).vaultDepositAllToStrategy(); + await tx3.wait(1); + console.log("Block after : ", await hre.ethers.provider.getBlockNumber()); + console.log( + "total supply after : ", + hre.ethers.utils.formatUnits(await vaultContract.totalSupply(), tokenDecimals), + ); + console.log( + "Price per full share after : ", + hre.ethers.utils.formatEther(await vaultContract.getPricePerFullShare()), + ); + strategyHash = await vaultContract.investStrategyHash(); + console.log(`Invest strategy : ${strategyHash}`); + console.log("vaultDepositAllToStrategy successfully"); + } catch (error) { + throw new Error(`#vaultDepositAllToStrategy : ${error}`); + } + break; + } } console.log("Finished executing Vault actions"); } catch (error) { From c20340e2cedcadf5e2ee73d8c643ef51aff17bcf Mon Sep 17 00:00:00 2001 From: dhruvinparikh Date: Wed, 6 Apr 2022 20:46:38 -0400 Subject: [PATCH 3/5] refactor(lint): harvest scripts --- scripts/harvest/001_swap_SNX_CRV_CVX_to_USDC.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/harvest/001_swap_SNX_CRV_CVX_to_USDC.ts b/scripts/harvest/001_swap_SNX_CRV_CVX_to_USDC.ts index 5dbf7b446..027ceedfb 100644 --- a/scripts/harvest/001_swap_SNX_CRV_CVX_to_USDC.ts +++ b/scripts/harvest/001_swap_SNX_CRV_CVX_to_USDC.ts @@ -1,4 +1,3 @@ -import { BigNumber } from "ethers"; import { ethers } from "hardhat"; import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; import { ERC20, IUniswapV2Router02, Registry, Vault } from "../../typechain"; From 0a193512da93912e203043257ecaac3201ab7e60 Mon Sep 17 00:00:00 2001 From: dhruvinparikh Date: Thu, 7 Apr 2022 20:15:23 -0400 Subject: [PATCH 4/5] feat(tasks): admin tasks --- cli.md | 158 ++++++++++++++++++ helper-hardhat-config.ts | 4 +- tasks/actions/accept-governance.ts | 35 ++++ tasks/actions/change-vault-proxy-v2-admin.ts | 104 ++++++++++++ tasks/actions/set-pending-governance.ts | 40 +++++ tasks/actions/transfer-finance-operator.ts | 37 ++++ tasks/actions/transfer-operation-ownership.ts | 36 ++++ tasks/actions/transfer-operator.ts | 37 ++++ tasks/actions/transfer-risk-operator.ts | 37 ++++ tasks/actions/transfer-strategy-operator.ts | 37 ++++ tasks/task-names.ts | 11 ++ 11 files changed, 534 insertions(+), 2 deletions(-) create mode 100644 tasks/actions/accept-governance.ts create mode 100644 tasks/actions/change-vault-proxy-v2-admin.ts create mode 100644 tasks/actions/set-pending-governance.ts create mode 100644 tasks/actions/transfer-finance-operator.ts create mode 100644 tasks/actions/transfer-operation-ownership.ts create mode 100644 tasks/actions/transfer-operator.ts create mode 100644 tasks/actions/transfer-risk-operator.ts create mode 100644 tasks/actions/transfer-strategy-operator.ts diff --git a/cli.md b/cli.md index 40dbeb056..a83db1dc7 100644 --- a/cli.md +++ b/cli.md @@ -591,3 +591,161 @@ Options: --vault 0x0000000000000000000000000000000000000000 \ --block-number 1234567 ``` + +### change-vault-proxy-v2-admin + +``` +Usage: change vault proxy admin + +Options: +--vault required
the address of vault +--new-admin required the address of new admin +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` + yarn hardhat change-vault-proxy-v2-admin \ + --network localhost \ + --vault 0x0000000000000000000000000000000000000000 \ + --new-admin 0x0000000000000000000000000000000000000000 +``` + +### set-pending-governance + +``` +Usage: set pending governance + +Options: +--registry required
the address of registry +--new-pending-governance required the address of pending governance +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` + yarn hardhat set-pending-governance \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-pending-governance 0x0000000000000000000000000000000000000000 +``` + +### accept-pending-governance + +``` +Usage: accept pending governance + +Options: +--registry required
the address of registry +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` + yarn hardhat accept-pending-governance \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ +``` + +### transfer-operation-ownership + +``` +Usage: transfer all operator roles to same address + +Options: +--registry required
the address of registry +--new-operator required
the address of new operator +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` +yarn hardhat transfer-operation-ownership \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-operator 0x0000000000000000000000000000000000000000 \ +``` + +### transfer-operator + +``` +Usage: transfer operator + +Options: +--registry required
the address of registry +--new-operator required
the address of new finance operator +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` +yarn hardhat transfer-operator \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-operator 0x0000000000000000000000000000000000000000 \ +``` + +### transfer-finance-operator + +``` +Usage: transfer finance operator + +Options: +--registry required
the address of registry +--new-finance-operator required
the address of new finance operator +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` +yarn hardhat transfer-finance-operator \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-finance-operator 0x0000000000000000000000000000000000000000 \ +``` + +### transfer-risk-operator + +``` +Usage: transfer risk operator + +Options: +--registry required
the address of registry +--new-risk-operator required
the address of new risk operator +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` +yarn hardhat transfer-risk-operator \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-risk-operator 0x0000000000000000000000000000000000000000 \ +``` + +### transfer-strategy-operator + +``` +Usage: transfer strategy operator + +Options: +--registry required
the address of registry +--new-strategy-operator required
the address of new strategy operator +--network optional name of the network provider (default: hardhat) +``` + +- Example: + +``` +yarn hardhat transfer-strategy-operator \ + --network localhost \ + --registry 0x0000000000000000000000000000000000000000 \ + --new-strategy-operator 0x0000000000000000000000000000000000000000 \ +``` diff --git a/helper-hardhat-config.ts b/helper-hardhat-config.ts index 7635cdc6f..8c878d869 100644 --- a/helper-hardhat-config.ts +++ b/helper-hardhat-config.ts @@ -65,9 +65,9 @@ export const NETWORKS_DEFAULT_GAS: iEVMParamsPerNetwork = { [eEVMNetwork.mainnet]: "auto", [eEVMNetwork.hardhat]: "auto", [eEVMNetwork.staging]: "auto", - [eEVMNetwork.polygon]: 65 * GWEI, + [eEVMNetwork.polygon]: 30 * GWEI, [eEVMNetwork.avalanche]: 65 * GWEI, - [eEVMNetwork.mumbai]: 65 * GWEI, + [eEVMNetwork.mumbai]: 30 * GWEI, [eEVMNetwork.ganache]: "auto", [eEVMNetwork.dashboard]: "auto", [eEVMNetwork.tenderly]: 65 * GWEI, diff --git a/tasks/actions/accept-governance.ts b/tasks/actions/accept-governance.ts new file mode 100644 index 000000000..724362ea1 --- /dev/null +++ b/tasks/actions/accept-governance.ts @@ -0,0 +1,35 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { RegistryProxy } from "../../typechain"; + +task(TASKS.ACTION_TASKS.ACCEPT_GOVERNANCE.NAME, TASKS.ACTION_TASKS.ACCEPT_GOVERNANCE.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .setAction(async ({ registry }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + try { + const registryProxyInstance = ( + await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY_PROXY, registry) + ); + const currentPendingGovernance = await registryProxyInstance.pendingGovernance(); + console.log("current pending governance ", currentPendingGovernance); + const currentGovernance = await registryProxyInstance.governance(); + console.log("current governance ", currentGovernance); + if (getAddress(currentPendingGovernance) != hre.ethers.constants.AddressZero) { + const currentPendingGovernanceSigner = await hre.ethers.getSigner(currentPendingGovernance); + const tx = await registryProxyInstance.connect(currentPendingGovernanceSigner).acceptGovernance(); + await tx.wait(1); + const actualNewGovernance = await registryProxyInstance.governance(); + console.log("The new governance is ", actualNewGovernance); + } else { + console.log("please set pending governance first"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.ACCEPT_GOVERNANCE.NAME}: `, error); + } + }); diff --git a/tasks/actions/change-vault-proxy-v2-admin.ts b/tasks/actions/change-vault-proxy-v2-admin.ts new file mode 100644 index 000000000..fdb561ada --- /dev/null +++ b/tasks/actions/change-vault-proxy-v2-admin.ts @@ -0,0 +1,104 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; + +task(TASKS.ACTION_TASKS.CHANGE_VAULT_PROXY_V2_ADMIN.NAME, TASKS.ACTION_TASKS.CHANGE_VAULT_PROXY_V2_ADMIN.DESCRIPTION) + .addParam("vault", "the address of vault", "", types.string) + .addParam("newAdmin", "address of the new admin", "", types.string) + .setAction(async ({ vault, newAdmin }, hre) => { + if (!isAddress(vault)) { + throw new Error("vault address is invalid"); + } + + if (!isAddress(newAdmin)) { + throw new Error("new admin address is invalid"); + } + + try { + const vaultProxyInstance = await hre.ethers.getContractAt(EIP173_ABI, vault); + const currentAdmin = await vaultProxyInstance.owner(); + console.log("current admin ", currentAdmin); + if (getAddress(newAdmin) != getAddress(currentAdmin)) { + const currentAdminSigner = await hre.ethers.getSigner(currentAdmin); + const tx = await vaultProxyInstance.connect(currentAdminSigner).transferOwnership(newAdmin); + await tx.wait(1); + const actualNewAdmin = await vaultProxyInstance.owner(); + console.log("The new admin is ", actualNewAdmin); + } else { + console.log("current admin is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.CHANGE_VAULT_PROXY_V2_ADMIN.NAME}: `, error); + } + }); + +const EIP173_ABI = [ + { + inputs: [ + { internalType: "address", name: "implementationAddress", type: "address" }, + { internalType: "address", name: "ownerAddress", type: "address" }, + { internalType: "bytes", name: "data", type: "bytes" }, + ], + stateMutability: "payable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "previousOwner", type: "address" }, + { indexed: true, internalType: "address", name: "newOwner", type: "address" }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "address", name: "previousImplementation", type: "address" }, + { indexed: true, internalType: "address", name: "newImplementation", type: "address" }, + ], + name: "ProxyImplementationUpdated", + type: "event", + }, + { stateMutability: "payable", type: "fallback" }, + { + inputs: [], + name: "owner", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "bytes4", name: "id", type: "bytes4" }], + name: "supportsInterface", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "newOwner", type: "address" }], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "address", name: "newImplementation", type: "address" }], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { internalType: "address", name: "newImplementation", type: "address" }, + { internalType: "bytes", name: "data", type: "bytes" }, + ], + name: "upgradeToAndCall", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { stateMutability: "payable", type: "receive" }, +]; diff --git a/tasks/actions/set-pending-governance.ts b/tasks/actions/set-pending-governance.ts new file mode 100644 index 000000000..c3aeed9f6 --- /dev/null +++ b/tasks/actions/set-pending-governance.ts @@ -0,0 +1,40 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { RegistryProxy } from "../../typechain"; + +task(TASKS.ACTION_TASKS.SET_PENDING_GOVERNANCE.NAME, TASKS.ACTION_TASKS.SET_PENDING_GOVERNANCE.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newPendingGovernance", "address of the new operator", "", types.string) + .setAction(async ({ registry, newPendingGovernance }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newPendingGovernance)) { + throw new Error("new pending governance address is invalid"); + } + + try { + const registryProxyInstance = ( + await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY_PROXY, registry) + ); + const currentPendingGovernance = await registryProxyInstance.pendingGovernance(); + console.log("current pending governance ", currentPendingGovernance); + if (getAddress(newPendingGovernance) != getAddress(currentPendingGovernance)) { + const currentPendingGovernanceSigner = await hre.ethers.getSigner(currentPendingGovernance); + const tx = await registryProxyInstance + .connect(currentPendingGovernanceSigner) + .setPendingGovernance(newPendingGovernance); + await tx.wait(1); + const actualNewPendingGovernance = await registryProxyInstance.pendingGovernance(); + console.log("The new pending governance is ", actualNewPendingGovernance); + } else { + console.log("current new pending governance is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.SET_PENDING_GOVERNANCE.NAME}: `, error); + } + }); diff --git a/tasks/actions/transfer-finance-operator.ts b/tasks/actions/transfer-finance-operator.ts new file mode 100644 index 000000000..bb8958294 --- /dev/null +++ b/tasks/actions/transfer-finance-operator.ts @@ -0,0 +1,37 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { Registry } from "../../typechain"; + +task(TASKS.ACTION_TASKS.TRANSFER_FINANCE_OPERATOR.NAME, TASKS.ACTION_TASKS.TRANSFER_FINANCE_OPERATOR.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newFinanceOperator", "address of the new finance operator", "", types.string) + .setAction(async ({ registry, newFinanceOperator }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newFinanceOperator)) { + throw new Error("new finance operator address is invalid"); + } + + try { + const registryInstance = await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY, registry); + const currentFinanceOperator = await registryInstance.getFinanceOperator(); + console.log("current finance operator ", currentFinanceOperator); + if (getAddress(newFinanceOperator) != getAddress(currentFinanceOperator)) { + const governance = await registryInstance.governance(); + const governanceSigner = await hre.ethers.getSigner(governance); + const tx = await registryInstance.connect(governanceSigner).setFinanceOperator(newFinanceOperator); + await tx.wait(1); + const actualNewFinanceOperator = await registryInstance.getFinanceOperator(); + console.log("The new finance operator is ", actualNewFinanceOperator); + } else { + console.log("current finance operator is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.TRANSFER_FINANCE_OPERATOR.NAME}: `, error); + } + }); diff --git a/tasks/actions/transfer-operation-ownership.ts b/tasks/actions/transfer-operation-ownership.ts new file mode 100644 index 000000000..6fe5cabde --- /dev/null +++ b/tasks/actions/transfer-operation-ownership.ts @@ -0,0 +1,36 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; + +task(TASKS.ACTION_TASKS.TRANSFER_OPERATION_OWNERSHIP.NAME, TASKS.ACTION_TASKS.TRANSFER_OPERATION_OWNERSHIP.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newOperator", "address of the new operator", "", types.string) + .setAction(async ({ registry, newOperator }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newOperator)) { + throw new Error("new operator address is invalid"); + } + + await hre.run(TASKS.ACTION_TASKS.TRANSFER_OPERATOR.NAME, { + registry: registry, + newOperator: newOperator, + }); + + await hre.run(TASKS.ACTION_TASKS.TRANSFER_FINANCE_OPERATOR.NAME, { + registry: registry, + newFinanceOperator: newOperator, + }); + + await hre.run(TASKS.ACTION_TASKS.TRANSFER_RISK_OPERATOR.NAME, { + registry: registry, + newRiskOperator: newOperator, + }); + + await hre.run(TASKS.ACTION_TASKS.TRANSFER_STRATEGY_OPERATOR.NAME, { + registry: registry, + newStrategyOperator: newOperator, + }); + }); diff --git a/tasks/actions/transfer-operator.ts b/tasks/actions/transfer-operator.ts new file mode 100644 index 000000000..5bac680ce --- /dev/null +++ b/tasks/actions/transfer-operator.ts @@ -0,0 +1,37 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { Registry } from "../../typechain"; + +task(TASKS.ACTION_TASKS.TRANSFER_OPERATOR.NAME, TASKS.ACTION_TASKS.TRANSFER_OPERATOR.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newOperator", "address of the new operator", "", types.string) + .setAction(async ({ registry, newOperator }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newOperator)) { + throw new Error("new operator address is invalid"); + } + + try { + const registryInstance = await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY, registry); + const currentOperator = await registryInstance.getOperator(); + console.log("current operator ", currentOperator); + if (getAddress(newOperator) != getAddress(currentOperator)) { + const governance = await registryInstance.governance(); + const governanceSigner = await hre.ethers.getSigner(governance); + const tx = await registryInstance.connect(governanceSigner).setOperator(newOperator); + await tx.wait(1); + const actualNewOperator = await registryInstance.getOperator(); + console.log("The new operator is ", actualNewOperator); + } else { + console.log("current operator is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.TRANSFER_OPERATOR.NAME}: `, error); + } + }); diff --git a/tasks/actions/transfer-risk-operator.ts b/tasks/actions/transfer-risk-operator.ts new file mode 100644 index 000000000..53efd3cc6 --- /dev/null +++ b/tasks/actions/transfer-risk-operator.ts @@ -0,0 +1,37 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { Registry } from "../../typechain"; + +task(TASKS.ACTION_TASKS.TRANSFER_RISK_OPERATOR.NAME, TASKS.ACTION_TASKS.TRANSFER_RISK_OPERATOR.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newRiskOperator", "address of the new risk operator", "", types.string) + .setAction(async ({ registry, newRiskOperator }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newRiskOperator)) { + throw new Error("new risk operator address is invalid"); + } + + try { + const registryInstance = await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY, registry); + const currentRiskOperator = await registryInstance.getRiskOperator(); + console.log("current risk operator ", currentRiskOperator); + if (getAddress(newRiskOperator) != getAddress(currentRiskOperator)) { + const governance = await registryInstance.governance(); + const governanceSigner = await hre.ethers.getSigner(governance); + const tx = await registryInstance.connect(governanceSigner).setRiskOperator(newRiskOperator); + await tx.wait(1); + const actualNewRiskOperator = await registryInstance.getRiskOperator(); + console.log("The new risk operator is ", actualNewRiskOperator); + } else { + console.log("current risk operator is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.TRANSFER_RISK_OPERATOR.NAME}: `, error); + } + }); diff --git a/tasks/actions/transfer-strategy-operator.ts b/tasks/actions/transfer-strategy-operator.ts new file mode 100644 index 000000000..3f5dd90fd --- /dev/null +++ b/tasks/actions/transfer-strategy-operator.ts @@ -0,0 +1,37 @@ +import { task, types } from "hardhat/config"; +import { isAddress } from "../../helpers/helpers"; +import TASKS from "../task-names"; +import { getAddress } from "ethers/lib/utils"; +import { ESSENTIAL_CONTRACTS } from "../../helpers/constants/essential-contracts-name"; +import { Registry } from "../../typechain"; + +task(TASKS.ACTION_TASKS.TRANSFER_STRATEGY_OPERATOR.NAME, TASKS.ACTION_TASKS.TRANSFER_STRATEGY_OPERATOR.DESCRIPTION) + .addParam("registry", "the address of registry", "", types.string) + .addParam("newStrategyOperator", "address of the new strategy operator", "", types.string) + .setAction(async ({ registry, newStrategyOperator }, hre) => { + if (!isAddress(registry)) { + throw new Error("registry address is invalid"); + } + + if (!isAddress(newStrategyOperator)) { + throw new Error("new strategy operator address is invalid"); + } + + try { + const registryInstance = await hre.ethers.getContractAt(ESSENTIAL_CONTRACTS.REGISTRY, registry); + const currentStrategyOperator = await registryInstance.getStrategyOperator(); + console.log("current strategy operator ", currentStrategyOperator); + if (getAddress(newStrategyOperator) != getAddress(currentStrategyOperator)) { + const governance = await registryInstance.governance(); + const governanceSigner = await hre.ethers.getSigner(governance); + const tx = await registryInstance.connect(governanceSigner).setStrategyOperator(newStrategyOperator); + await tx.wait(1); + const actualNewStrategyOperator = await registryInstance.getStrategyOperator(); + console.log("The new strategy operator is ", actualNewStrategyOperator); + } else { + console.log("current strategy operator is upto date"); + } + } catch (error: any) { + console.error(`${TASKS.ACTION_TASKS.TRANSFER_STRATEGY_OPERATOR.NAME}: `, error); + } + }); diff --git a/tasks/task-names.ts b/tasks/task-names.ts index f35dfee5d..109cfb0d9 100644 --- a/tasks/task-names.ts +++ b/tasks/task-names.ts @@ -47,5 +47,16 @@ export default { DESCRIPTION: "Get price per full share of the vault", }, GET_TOTAL_SUPPLY: { NAME: "get-total-supply", DESCRIPTION: "Get total supply of the vault" }, + TRANSFER_OPERATOR: { NAME: "transfer-operator", DESCRIPTION: "Transfer operator" }, + TRANSFER_FINANCE_OPERATOR: { NAME: "transfer-finance-operator", DESCRIPTION: "Transfer finance operator" }, + TRANSFER_RISK_OPERATOR: { NAME: "transfer-risk-operator", DESCRIPTION: "Transfer risk operator" }, + TRANSFER_STRATEGY_OPERATOR: { NAME: "transfer-strategy-operator", DESCRIPTION: "Transfer strategy operator" }, + TRANSFER_OPERATION_OWNERSHIP: { + NAME: "transfer-operation-ownership", + DESCRIPTION: "Transfer financeOperator, riskOperator, strategyOperator anf operator one by one", + }, + SET_PENDING_GOVERNANCE: { NAME: "set-pending-governance", DESCRIPTION: "set pending governance" }, + ACCEPT_GOVERNANCE: { NAME: "accept-governance", DESCRIPTION: "accept governance" }, + CHANGE_VAULT_PROXY_V2_ADMIN: { NAME: "change-vault-proxy-v2-admin", DESCRIPTION: "change vault proxy v2 admin" }, }, }; From ffe2095171fd2714dcb7df348e969bf3873c8c65 Mon Sep 17 00:00:00 2001 From: dhruvinparikh Date: Thu, 7 Apr 2022 20:22:15 -0400 Subject: [PATCH 5/5] docs(cli): formatting --- cli.md | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/cli.md b/cli.md index a83db1dc7..176daa793 100644 --- a/cli.md +++ b/cli.md @@ -532,8 +532,8 @@ Usage: execute a get action in smart contract Options: --name required
the name of contract --address required
the address of smart contract ---functionabi required a get function abi ---params optional the required params of the function (default: "") +--functionabi required a get function abi +--params optional the required params of the function (default: "") --network optional name of the network provider (default: hardhat) ``` @@ -559,7 +559,7 @@ Usage: get price per full share of the vault Options: --vault required
the address of vault ---block-number block number +--block-number optional block number (default: current block number) --network optional name of the network provider (default: hardhat) ``` @@ -579,7 +579,7 @@ Usage: get total supply of the vault Options: --vault required
the address of vault ---block-number block number +--block-number optional block number (default: current block number) --network optional name of the network provider (default: hardhat) ``` @@ -598,9 +598,9 @@ Options: Usage: change vault proxy admin Options: ---vault required
the address of vault ---new-admin required the address of new admin ---network optional name of the network provider (default: hardhat) +--vault required
the address of vault +--new-admin required the address of new admin +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -618,9 +618,9 @@ Options: Usage: set pending governance Options: ---registry required
the address of registry ---new-pending-governance required the address of pending governance ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-pending-governance required the address of pending governance +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -638,8 +638,8 @@ Options: Usage: accept pending governance Options: ---registry required
the address of registry ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -656,9 +656,9 @@ Options: Usage: transfer all operator roles to same address Options: ---registry required
the address of registry ---new-operator required
the address of new operator ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-operator required
the address of new operator +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -676,9 +676,9 @@ yarn hardhat transfer-operation-ownership \ Usage: transfer operator Options: ---registry required
the address of registry ---new-operator required
the address of new finance operator ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-operator required
the address of new finance operator +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -696,9 +696,9 @@ yarn hardhat transfer-operator \ Usage: transfer finance operator Options: ---registry required
the address of registry ---new-finance-operator required
the address of new finance operator ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-finance-operator required
the address of new finance operator +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -716,9 +716,9 @@ yarn hardhat transfer-finance-operator \ Usage: transfer risk operator Options: ---registry required
the address of registry ---new-risk-operator required
the address of new risk operator ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-risk-operator required
the address of new risk operator +--network optional name of the network provider (default: hardhat) ``` - Example: @@ -736,9 +736,9 @@ yarn hardhat transfer-risk-operator \ Usage: transfer strategy operator Options: ---registry required
the address of registry ---new-strategy-operator required
the address of new strategy operator ---network optional name of the network provider (default: hardhat) +--registry required
the address of registry +--new-strategy-operator required
the address of new strategy operator +--network optional name of the network provider (default: hardhat) ``` - Example: