Updated initReserve() with proxies

This commit is contained in:
emilio 2020-08-17 21:28:50 +02:00
parent 45d12fd43d
commit 674b885b31
59 changed files with 2655 additions and 2418 deletions

View File

@ -32,6 +32,8 @@ contract LendingPoolConfigurator is VersionedInitializable {
event ReserveInitialized(
address indexed _reserve,
address indexed _aToken,
address _stableDebtToken,
address _variableDebtToken,
address _interestRateStrategyAddress
);
@ -168,36 +170,45 @@ contract LendingPoolConfigurator is VersionedInitializable {
* @dev initializes a reserve
* @param _reserve the address of the reserve to be initialized
* @param _aTokenImpl the address of the aToken contract implementation
* @param _stableDebtTokenAddress the address of the stable debt token contract
* @param _variableDebtTokenAddress the address of the variable debt token contract
* @param _stableDebtTokenImpl the address of the stable debt token contract
* @param _variableDebtTokenImpl the address of the variable debt token contract
* @param _underlyingAssetDecimals the decimals of the reserve underlying asset
* @param _interestRateStrategyAddress the address of the interest rate strategy contract for this reserve
**/
function initReserve(
address _reserve,
address _aTokenImpl,
address _stableDebtTokenAddress,
address _variableDebtTokenAddress,
address _stableDebtTokenImpl,
address _variableDebtTokenImpl,
uint8 _underlyingAssetDecimals,
address _interestRateStrategyAddress
) public onlyLendingPoolManager {
InitializableAdminUpgradeabilityProxy aTokenProxy = new InitializableAdminUpgradeabilityProxy();
bytes memory params = abi.encodeWithSignature(
'initialize(uint8,string,string)',
address aTokenProxyAddress = _initWithProxy(
_aTokenImpl,
_underlyingAssetDecimals,
IERC20Detailed(_aTokenImpl).name(),
IERC20Detailed(_aTokenImpl).symbol()
);
aTokenProxy.initialize(_aTokenImpl, address(this), params);
address stableDebtTokenProxyAddress = _initWithProxy(
_stableDebtTokenImpl,
_underlyingAssetDecimals,
IERC20Detailed(_stableDebtTokenImpl).name(),
IERC20Detailed(_stableDebtTokenImpl).symbol()
);
address variableDebtTokenProxyAddress = _initWithProxy(
_variableDebtTokenImpl,
_underlyingAssetDecimals,
IERC20Detailed(_variableDebtTokenImpl).name(),
IERC20Detailed(_variableDebtTokenImpl).symbol()
);
pool.initReserve(
_reserve,
address(aTokenProxy),
_stableDebtTokenAddress,
_variableDebtTokenAddress,
aTokenProxyAddress,
stableDebtTokenProxyAddress,
variableDebtTokenProxyAddress,
_interestRateStrategyAddress
);
@ -210,7 +221,13 @@ contract LendingPoolConfigurator is VersionedInitializable {
pool.setConfiguration(_reserve, currentConfig.data);
emit ReserveInitialized(_reserve, address(aTokenProxy), _interestRateStrategyAddress);
emit ReserveInitialized(
_reserve,
aTokenProxyAddress,
stableDebtTokenProxyAddress,
variableDebtTokenProxyAddress,
_interestRateStrategyAddress
);
}
/**
@ -488,4 +505,28 @@ contract LendingPoolConfigurator is VersionedInitializable {
pool.setReserveInterestRateStrategyAddress(_reserve, _rateStrategyAddress);
emit ReserveInterestRateStrategyChanged(_reserve, _rateStrategyAddress);
}
/**
*
*
**/
function _initWithProxy(
address _implementation,
uint8 _decimals,
string memory _name,
string memory _symbol
) internal returns (address) {
InitializableAdminUpgradeabilityProxy proxy = new InitializableAdminUpgradeabilityProxy();
bytes memory params = abi.encodeWithSignature(
'initialize(uint8,string,string)',
_decimals,
_name,
_symbol
);
proxy.initialize(_implementation, address(this), params);
return address(proxy);
}
}

View File

@ -24,6 +24,7 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase {
using WadRayMath for uint256;
using Address for address;
uint256 public constant DEBT_TOKEN_REVISION = 0x1;
struct UserData {
uint256 currentRate;
uint40 lastUpdateTimestamp;
@ -72,6 +73,14 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase {
DebtTokenBase(_pool, _underlyingAsset)
{}
/**
* @dev gets the revision of the stable debt token implementation
* @return the debt token implementation revision
**/
function getRevision() internal override pure returns(uint256) {
return DEBT_TOKEN_REVISION;
}
/**
* @dev returns the average stable rate across all the stable rate debt
* @return the average stable rate

View File

@ -20,6 +20,8 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken {
using WadRayMath for uint256;
using Address for address;
uint256 public constant DEBT_TOKEN_REVISION = 0x1;
mapping(address => uint256) private userIndexes;
/**
@ -63,6 +65,15 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken {
DebtTokenBase(_pool, _underlyingAsset)
{}
/**
* @dev gets the revision of the stable debt token implementation
* @return the debt token implementation revision
**/
function getRevision() internal virtual override pure returns(uint256) {
return DEBT_TOKEN_REVISION;
}
/**
* @dev calculates the accumulated debt balance of the user
* @return the debt balance of the user

View File

@ -6,6 +6,7 @@ import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol';
import {Address} from '@openzeppelin/contracts/utils/Address.sol';
import {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';
import {LendingPool} from '../../lendingpool/LendingPool.sol';
import {VersionedInitializable} from '../../libraries/openzeppelin-upgradeability/VersionedInitializable.sol';
/**
* @title contract DebtTokenBase
@ -13,7 +14,7 @@ import {LendingPool} from '../../lendingpool/LendingPool.sol';
* @notice base contract for StableDebtToken and VariableDebtToken
*/
abstract contract DebtTokenBase is IERC20 {
abstract contract DebtTokenBase is IERC20, VersionedInitializable {
using SafeMath for uint256;
using Address for address;
@ -45,11 +46,11 @@ abstract contract DebtTokenBase is IERC20 {
* @param _symbol the symbol of the token
* @param _decimals the decimals of the token
*/
function init(
function initialize(
uint8 _decimals,
string memory _name,
string memory _symbol,
uint8 _decimals
) public {
string memory _symbol
) public initializer {
name = _name;
symbol = _symbol;
decimals = _decimals;

View File

@ -5,7 +5,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x4da11393102f7c324f7Bfd07B58773264986e211",
"address": "0x666D47050E77ADB0B04076fB35DDcb74e95D1d7C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -15,7 +15,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x479182FBD6270898bf472583876527667dE6aC04",
"address": "0x1FB61ED838A993b8885Ceb08936524F742F525cf",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -25,7 +25,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x4cC8D5649e9d91a4bD054667691aebeC69B69FfB",
"address": "0xcBf7A8f676Bf5fa60339ba8dFab867D4a074c604",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -34,7 +34,7 @@
"address": "0xD9273d497eDBC967F39d419461CfcF382a0A822e"
},
"localhost": {
"address": "0x0f2cE53B3410a2007d6C4ad8940Ffa5AdCC2916C"
"address": "0x26aBe949b24C10cc9b1d33100Cd7fF3Aa5e4C698"
}
},
"LendingPoolParametersProvider": {
@ -52,7 +52,7 @@
"address": "0x9EC0480CF106d6dc1c7849BA141a56F874170F97"
},
"localhost": {
"address": "0x0ca5E5B6F09C97f30Ed6e5E99be65A38eE7edfaB"
"address": "0xaD0FdA3C2D467DEE48DFc3b4C123240F6e90D3c2"
}
},
"LendingPoolDataProvider": {
@ -65,7 +65,7 @@
"address": "0x6642B57e4265BAD868C17Fc1d1F4F88DBBA04Aa8"
},
"localhost": {
"address": "0x7FE8419fACf45dFa93d471644e87122923EC9D94"
"address": "0x29c1e17Ac4aAf9fEE3091A8DdAAf5B7798bcC4b9"
}
},
"PriceOracle": {
@ -74,7 +74,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xEDf104A35B3293F4BdB987be9D57EFe3b69C19c7",
"address": "0xfdAF4f6e47e854c05bE158993d32872e784F0502",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -84,7 +84,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x4CAf641bceba759b352e07B2aE3A079B5F409dA6",
"address": "0x8d0FF86F21174b33f86A2673E96e8D7a472659A3",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -94,7 +94,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xCb9cdF2CfeE567b43FD654f8b831528c2d54D901",
"address": "0xf6fFAbB561D5b265127459cB7e43c89f58b7cAbe",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -104,17 +104,17 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xeB3E3b080821399daF535D0C52f642b8f14993AC",
"address": "0x5DAe571bb5B70f9851eeef12E3a43f548dCF923c",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"DefaultReserveInterestRateStrategy": {
"buidlerevm": {
"address": "0x09d7cb7a0606a7f10DC8a37b3e0E420F39f0FAF1",
"address": "0x830bceA96E56DBC1F8578f75fBaC0AF16B32A07d",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x3888B5ac0089C12cDF21DD8B0234029f80645324",
"address": "0x5a3343A0CF72dC6933362676Bb5831784CaA0014",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -146,37 +146,37 @@
},
"TokenDistributor": {
"buidlerevm": {
"address": "0x22B37db37e9992728245A7dD0536892AF9bA1baB"
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4"
},
"localhost": {
"address": "0x39f713653d31a8e0D7a51061F1159861290e65Fd"
"address": "0x61751f72Fa303F3bB256707dD3cD368c89E82f1b"
}
},
"InitializableAdminUpgradeabilityProxy": {
"buidlerevm": {
"address": "0x22B37db37e9992728245A7dD0536892AF9bA1baB",
"address": "0x2cfcA5785261fbC88EFFDd46fCFc04c22525F9e4",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x39f713653d31a8e0D7a51061F1159861290e65Fd",
"address": "0x61751f72Fa303F3bB256707dD3cD368c89E82f1b",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockFlashLoanReceiver": {
"buidlerevm": {
"address": "0x850Fae11E1313e6C23Db7c2410Ec0985d9Ea325A"
"address": "0x3bDA11B584dDff7F66E0cFe1da1562c92B45db60"
},
"localhost": {
"address": "0xC4e948241c7A63d1f21fD98D652aE4B59180e07F"
"address": "0xdF19a9539Fdd701D8334299C6Dd04931e4022303"
}
},
"WalletBalanceProvider": {
"buidlerevm": {
"address": "0x22058276Dd278bD037591805E62E797012d666f6",
"address": "0x392E5355a0e88Bd394F717227c752670fb3a8020",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x5361A119A2b3daFB88585b24997aAB2232C655a3",
"address": "0xBe6d8642382C241c9B4B50c89574DbF3f4181E7D",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -186,7 +186,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xeb544bEfD42128e6b08A821aCCc5562c395E8c9d",
"address": "0x8733AfE8174BA7c04c6CD694bD673294079b7E10",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -196,7 +196,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xe3353ddEc0cf8aA6761a3C21D896D04ebd59bDe2",
"address": "0xA8083d78B6ABC328b4d3B714F76F384eCC7147e1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -206,7 +206,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xa7B8e0F888D416d7e08bD12029c6ec8b8Ed18373",
"address": "0xa497f1Ed4edeA8151fECe457aa26e1D6A4318B6A",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -216,7 +216,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x7dF045e4721203EBEDD3436b15391f32A375Cbc4",
"address": "0xB7b9568073C9e745acD84eEb30F1c32F74Ba4946",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -226,7 +226,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xbcd58cEF3F429f99CA32Dc06F28Ca7F7ea6aC5bB",
"address": "0x64999a4272342C910FB8f6a71C2Ca50b878a8658",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -236,7 +236,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xb528f2371502B38d87af537292e88721F4728915",
"address": "0xFB6800f1BB30e235587b574F8Ce6c7bba2242276",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -246,7 +246,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xC2CC8DD97D4680FCfE2338117D23fa7E4858E09B",
"address": "0x832D8fDeeE7Df842796582bC7F804802c2c666fd",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -256,7 +256,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xfC6d9227413D021f7a50EF3AAdF9545aA4ebb439",
"address": "0x8628E920E86DA923A79A57Ab4282CC9f89E12CEf",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -266,7 +266,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xdc006C4186148C29B57f52A8ad7694542ad4E675",
"address": "0x04C90bD686E03782737C3f4C6bDC88dc3C92bDec",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -276,7 +276,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x77488a02Baf7a80a5E7D1Da37921D0554C112c7F",
"address": "0x002164e9C8425D2F0c7dcde98E63317D305302C5",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -286,7 +286,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x107Aa2cc3FE981E78140424C3d4DD55aF00Ab24C",
"address": "0xAe407A0bD891d02E495D3E79cE577C17BB61f366",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -296,7 +296,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x512555303417D50E8E2a3BE333896f5f8c54205c",
"address": "0x96cf3831338c19F309121D48C12C3aB489FE7D5A",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -306,7 +306,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x8cD1B99Ff499438BC9B5A41F558E41e3Df10ff08",
"address": "0xfd1346a9ee71839D6103C76Bb63d1592971C23aE",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -316,7 +316,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x66F7097B8204A7a93850D5D29eAcdA6E2AA09A06",
"address": "0x9884cF2d612CdD7031cCaa12dd3Bc69D754fc701",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -326,7 +326,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xAfD2Ac057dA78019436cbc59E08a4567E1FDCB02",
"address": "0x48fc85A6fcD880e2421586f4F9116f14e854E109",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -336,7 +336,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xc989A9cB29D1e65F5fD1f5e54306D81EC2aae2d4",
"address": "0x1bfF9DBd010EF644863918f77aCF79BD35721c13",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -346,7 +346,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x5D5492e4659e8c26A86a4cB2122b59d3fC8afA23",
"address": "0xB42D37cB0E78aaCC5980eC6B2EcB98CBeCeB9df7",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -356,7 +356,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x67863e08EBA141fe927605A9A4C614751d550416",
"address": "0x8051CFC72E5c27fD752834a854eDD306c254D3b1",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -366,7 +366,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x83eDd07E49dFaBc288AF2215C9dC534C52AB549f",
"address": "0x2F16C47532625acE7C652FC5EE7E9a9080B352f5",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -376,7 +376,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x02D4086e063Ef6cc8d8e6e811bFc596Ed4aa7F0f",
"address": "0x7483ADEC5d3dA2203CCB2Fc5F837c6F8a1A92099",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -386,7 +386,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x1865BF8d8F8392a823D9063f55beC6D450c6756A",
"address": "0xe6688b6Cc79268D2e39f799C08673034a5350F13",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -396,7 +396,7 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x2f2abb208a543B0A076aF58cc806a899dE9EFfAC",
"address": "0xFa58524E6B3E432fb10B41A9fea95BAD32A608eF",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -406,51 +406,55 @@
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x4da11393102f7c324f7Bfd07B58773264986e211",
"address": "0x666D47050E77ADB0B04076fB35DDcb74e95D1d7C",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"AaveProtocolTestHelpers": {
"buidlerevm": {
"address": "0x6D3540a9F1a769bfd91A4A33169a8361aa82dC0F"
"address": "0x3b050AFb4ac4ACE646b31fF3639C1CD43aC31460"
},
"localhost": {
"address": "0x26af54A97F214dB563711B0670c4FbA2Eb935E37"
"address": "0x02BB514187B830d6A2111197cd7D8cb60650B970"
}
},
"StableDebtToken": {
"buidlerevm": {
"address": "0x5Ea694f66BD0CBd08FC7967af01b67Dcef68cC5c",
"address": "0xA0AB1cB92A4AF81f84dCd258155B5c25D247b54E",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xB76Ea4df0263F99daf33765541b1933AD5bB4410",
"address": "0xbC15a5eEA769cfB4BA6d7574c9942f0b8C40Ae03",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"VariableDebtToken": {
"buidlerevm": {
"address": "0xd4e934C2749CA8C1618659D02E7B28B074bf4df7",
"address": "0x5f7134cd38C826a7649f9Cc47dda24d834DD2967",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x7376e7b11aCE5dDa9068f770a27796826e66E305",
"address": "0x3c3AB51fF33032159e82E1FDEe6503dEd082F1d9",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"AToken": {
"localhost": {
"address": "0x2abb2787B4C39a5667E95f11E8a44c034a58aaac",
"address": "0x2d17b3E44e413F1fDa30E569895863EeD139CE6B",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"buidlerevm": {
"address": "0x8280D40C9E9F04229D2435EAad6e0011309ce81B",
"address": "0xE91bBe8ee03560E3dda2786f95335F5399813Ca0",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
"MockAToken": {
"buidlerevm": {
"address": "0x7f23223A2FAf869962B38f5eC4aAB7f37454A45e",
"address": "0xD4B5A49d5bA242572ec3f4A8E52B97a10AF2543a",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0xc2517909aE3cFacC0283EB8FB917EAe273a3aE9e",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
},
@ -458,6 +462,10 @@
"buidlerevm": {
"address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
},
"localhost": {
"address": "0x501A498e8FDA589038d6526C2153a9fdc9d8eDD2",
"deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
}
}
}

View File

@ -265,8 +265,6 @@ export const deployStableDebtToken = async ([
underlyingAsset,
]);
await token.init(name, symbol, decimals);
return token;
};
@ -282,8 +280,6 @@ export const deployVariableDebtToken = async ([
underlyingAsset,
]);
await token.init(name, symbol, decimals);
return token;
};

8
types/AToken.d.ts vendored
View File

@ -69,7 +69,7 @@ interface ATokenInterface extends Interface {
}>;
mintOnDeposit: TypedFunctionDescription<{
encode([_account, _amount]: [string, BigNumberish]): string;
encode([_user, _amount]: [string, BigNumberish]): string;
}>;
name: TypedFunctionDescription<{ encode([]: []): string }>;
@ -278,7 +278,7 @@ export class AToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<boolean>;
mintOnDeposit(
_account: string,
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -391,7 +391,7 @@ export class AToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<boolean>;
mintOnDeposit(
_account: string,
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -554,7 +554,7 @@ export class AToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<BigNumber>;
mintOnDeposit(_account: string, _amount: BigNumberish): Promise<BigNumber>;
mintOnDeposit(_user: string, _amount: BigNumberish): Promise<BigNumber>;
name(): Promise<BigNumber>;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -32,11 +32,11 @@ interface DebtTokenBaseInterface extends Interface {
encode([spender, addedValue]: [string, BigNumberish]): string;
}>;
init: TypedFunctionDescription<{
encode([_name, _symbol, _decimals]: [
initialize: TypedFunctionDescription<{
encode([_decimals, _name, _symbol]: [
BigNumberish,
string,
string,
BigNumberish
string
]): string;
}>;
@ -127,10 +127,10 @@ export class DebtTokenBase extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -182,10 +182,10 @@ export class DebtTokenBase extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -241,10 +241,10 @@ export class DebtTokenBase extends Contract {
addedValue: BigNumberish
): Promise<BigNumber>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish
_symbol: string
): Promise<BigNumber>;
name(): Promise<BigNumber>;

View File

@ -212,6 +212,11 @@ const _abi = [
},
{
inputs: [
{
internalType: "uint8",
name: "_decimals",
type: "uint8"
},
{
internalType: "string",
name: "_name",
@ -221,14 +226,9 @@ const _abi = [
internalType: "string",
name: "_symbol",
type: "string"
},
{
internalType: "uint8",
name: "_decimals",
type: "uint8"
}
],
name: "init",
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,12 @@
/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import {Contract, ContractFactory, Signer} from 'ethers';
import {Provider} from 'ethers/providers';
import {UnsignedTransaction} from 'ethers/utils/transaction';
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import {TransactionOverrides} from '.';
import {FeeProvider} from './FeeProvider';
import { TransactionOverrides } from ".";
import { FeeProvider } from "./FeeProvider";
export class FeeProviderFactory extends ContractFactory {
constructor(signer?: Signer) {
@ -25,7 +25,10 @@ export class FeeProviderFactory extends ContractFactory {
connect(signer: Signer): FeeProviderFactory {
return super.connect(signer) as FeeProviderFactory;
}
static connect(address: string, signerOrProvider: Signer | Provider): FeeProvider {
static connect(
address: string,
signerOrProvider: Signer | Provider
): FeeProvider {
return new Contract(address, _abi, signerOrProvider) as FeeProvider;
}
}
@ -33,81 +36,81 @@ export class FeeProviderFactory extends ContractFactory {
const _abi = [
{
inputs: [],
name: 'FEE_PROVIDER_REVISION',
name: "FEE_PROVIDER_REVISION",
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: 'view',
type: 'function',
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: 'address',
name: '_user',
type: 'address',
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: 'uint256',
name: '_amount',
type: 'uint256',
},
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: 'calculateLoanOriginationFee',
name: "calculateLoanOriginationFee",
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: 'view',
type: 'function',
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: 'getLoanOriginationFeePercentage',
name: "getLoanOriginationFeePercentage",
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: 'view',
type: 'function',
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: 'address',
name: '_addressesProvider',
type: 'address',
},
internalType: "address",
name: "_addressesProvider",
type: "address"
}
],
name: 'initialize',
name: "initialize",
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: 'originationFeePercentage',
name: "originationFeePercentage",
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: 'view',
type: 'function',
},
stateMutability: "view",
type: "function"
}
];
const _bytecode =
'0x60806040526000805534801561001457600080fd5b5061082d806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e14610076578063c211f9a41461007e578063c4d66de814610086578063e563a7d0146100ae575b600080fd5b6100646100da565b60408051918252519081900360200190f35b6100646100e0565b6100646100e5565b6100ac6004803603602081101561009c57600080fd5b50356001600160a01b03166100eb565b005b610064600480360360408110156100c457600080fd5b506001600160a01b03813516906020013561021f565b60345481565b600181565b60345490565b61011e6040518060400160405280601281526020017124b739b4b2329034b734ba34b0b634bd32b960711b81525061023f565b6000610128610381565b905061015a6040518060400160405280600e81526020016d5265766973696f6e20697320257360901b81525082610386565b61018460405180604001604052806008815260200167546869733a20257360c01b815250306104db565b60015460ff168061019857506101986105d4565b806101a4575060005481115b6101df5760405162461bcd60e51b815260040180806020018281038252602e8152602001806107ca602e913960400191505060405180910390fd5b60015460ff161580156101fe576001805460ff19168117905560008290555b6608e1bc9bf04000603455801561021a576001805460ff191690555b505050565b6000610236603454836105da90919063ffffffff16565b90505b92915050565b6040516020602482018181528351604484015283516000936a636f6e736f6c652e6c6f67938693928392606401918501908083838a5b8381101561028d578181015183820152602001610275565b50505050905090810190601f1680156102ba5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663104c13eb60e21b178152905182519295509350839250908083835b602083106103155780518252601f1990920191602091820191016102f6565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610375576040519150601f19603f3d011682016040523d82523d6000602084013e61037a565b606091505b5050505050565b600190565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156103e55781810151838201526020016103cd565b50505050905090810190601f1680156104125780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166309710a9d60e41b17815290518251929650945084935091508083835b6020831061046e5780518252601f19909201916020918201910161044f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146104ce576040519150601f19603f3d011682016040523d82523d6000602084013e6104d3565b606091505b505050505050565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b8381101561054c578181015183820152602001610534565b50505050905090810190601f1680156105795780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663319af33360e01b17815290518251929650945084935091508083836020831061046e5780518252601f19909201916020918201910161044f565b303b1590565b6000610236670de0b6b3a764000061060a6105fb868663ffffffff61061616565b6706f05b59d3b200009061066f565b9063ffffffff6106c916565b60008261062557506000610239565b8282028284828161063257fe5b04146102365760405162461bcd60e51b81526004018080602001828103825260218152602001806107a96021913960400191505060405180910390fd5b600082820183811015610236576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061023683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836107925760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075757818101518382015260200161073f565b50505050905090810190601f1680156107845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161079e57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a264697066735822122096e37c04d1727fcae260159451045b2fd3d49634fccba582da71becd432f644f64736f6c63430006080033';
"0x60806040526000805534801561001457600080fd5b50610411806100246000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80639403ed3a1461005c578063b0d73d4e14610076578063c211f9a41461007e578063c4d66de814610086578063e563a7d0146100ae575b600080fd5b6100646100da565b60408051918252519081900360200190f35b6100646100e0565b6100646100e5565b6100ac6004803603602081101561009c57600080fd5b50356001600160a01b03166100eb565b005b610064600480360360408110156100c457600080fd5b506001600160a01b038135169060200135610193565b60345481565b600181565b60345490565b60006100f56101b3565b60015490915060ff168061010c575061010c6101b8565b80610118575060005481115b6101535760405162461bcd60e51b815260040180806020018281038252602e8152602001806103ae602e913960400191505060405180910390fd5b60015460ff16158015610172576001805460ff19168117905560008290555b6608e1bc9bf04000603455801561018e576001805460ff191690555b505050565b60006101aa603454836101be90919063ffffffff16565b90505b92915050565b600190565b303b1590565b60006101aa670de0b6b3a76400006101ee6101df868663ffffffff6101fa16565b6706f05b59d3b2000090610253565b9063ffffffff6102ad16565b600082610209575060006101ad565b8282028284828161021657fe5b04146101aa5760405162461bcd60e51b815260040180806020018281038252602181526020018061038d6021913960400191505060405180910390fd5b6000828201838110156101aa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006101aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836103765760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561033b578181015183820152602001610323565b50505050905090810190601f1680156103685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161038257fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212204d77e8d34c5af357117493d51adeef06b96bfc607557f6e85a417e94e7bb28fe64736f6c63430006080033";

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,14 +1,18 @@
/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import {Contract, ContractTransaction, EventFilter, Signer} from 'ethers';
import {Listener, Provider} from 'ethers/providers';
import {Arrayish, BigNumber, BigNumberish, Interface} from 'ethers/utils';
import {TransactionOverrides, TypedEventDescription, TypedFunctionDescription} from '.';
import { Contract, ContractTransaction, EventFilter, Signer } from "ethers";
import { Listener, Provider } from "ethers/providers";
import { Arrayish, BigNumber, BigNumberish, Interface } from "ethers/utils";
import {
TransactionOverrides,
TypedEventDescription,
TypedFunctionDescription
} from ".";
interface LendingPoolConfiguratorInterface extends Interface {
functions: {
CONFIGURATOR_REVISION: TypedFunctionDescription<{encode([]: []): string}>;
CONFIGURATOR_REVISION: TypedFunctionDescription<{ encode([]: []): string }>;
activateReserve: TypedFunctionDescription<{
encode([_reserve]: [string]): string;
@ -35,12 +39,12 @@ interface LendingPoolConfiguratorInterface extends Interface {
}>;
enableReserveAsCollateral: TypedFunctionDescription<{
encode([_reserve, _baseLTVasCollateral, _liquidationThreshold, _liquidationBonus]: [
string,
BigNumberish,
BigNumberish,
BigNumberish
]): string;
encode([
_reserve,
_baseLTVasCollateral,
_liquidationThreshold,
_liquidationBonus
]: [string, BigNumberish, BigNumberish, BigNumberish]): string;
}>;
enableReserveStableRate: TypedFunctionDescription<{
@ -54,11 +58,11 @@ interface LendingPoolConfiguratorInterface extends Interface {
initReserve: TypedFunctionDescription<{
encode([
_reserve,
_aTokenInstance,
_stableDebtTokenAddress,
_variableDebtTokenAddress,
_aTokenImpl,
_stableDebtTokenImpl,
_variableDebtTokenImpl,
_underlyingAssetDecimals,
_interestRateStrategyAddress,
_interestRateStrategyAddress
]: [string, string, string, string, BigNumberish, string]): string;
}>;
@ -66,9 +70,9 @@ interface LendingPoolConfiguratorInterface extends Interface {
encode([_poolAddressesProvider]: [string]): string;
}>;
pool: TypedFunctionDescription<{encode([]: []): string}>;
pool: TypedFunctionDescription<{ encode([]: []): string }>;
poolAddressesProvider: TypedFunctionDescription<{encode([]: []): string}>;
poolAddressesProvider: TypedFunctionDescription<{ encode([]: []): string }>;
setLiquidationBonus: TypedFunctionDescription<{
encode([_reserve, _bonus]: [string, BigNumberish]): string;
@ -142,11 +146,13 @@ interface LendingPoolConfiguratorInterface extends Interface {
}>;
ReserveInitialized: TypedEventDescription<{
encodeTopics([_reserve, _aToken, _interestRateStrategyAddress]: [
string | null,
string | null,
null
]): string[];
encodeTopics([
_reserve,
_aToken,
_stableDebtToken,
_variableDebtToken,
_interestRateStrategyAddress
]: [string | null, string | null, null, null, null]): string[];
}>;
ReserveInterestRateStrategyChanged: TypedEventDescription<{
@ -176,13 +182,21 @@ interface LendingPoolConfiguratorInterface extends Interface {
}
export class LendingPoolConfigurator extends Contract {
connect(signerOrProvider: Signer | Provider | string): LendingPoolConfigurator;
connect(
signerOrProvider: Signer | Provider | string
): LendingPoolConfigurator;
attach(addressOrName: string): LendingPoolConfigurator;
deployed(): Promise<LendingPoolConfigurator>;
on(event: EventFilter | string, listener: Listener): LendingPoolConfigurator;
once(event: EventFilter | string, listener: Listener): LendingPoolConfigurator;
addListener(eventName: EventFilter | string, listener: Listener): LendingPoolConfigurator;
once(
event: EventFilter | string,
listener: Listener
): LendingPoolConfigurator;
addListener(
eventName: EventFilter | string,
listener: Listener
): LendingPoolConfigurator;
removeAllListeners(eventName: EventFilter | string): LendingPoolConfigurator;
removeListener(eventName: any, listener: Listener): LendingPoolConfigurator;
@ -235,13 +249,16 @@ export class LendingPoolConfigurator extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
freezeReserve(_reserve: string, overrides?: TransactionOverrides): Promise<ContractTransaction>;
freezeReserve(
_reserve: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initReserve(
_reserve: string,
_aTokenInstance: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string,
_aTokenImpl: string,
_stableDebtTokenImpl: string,
_variableDebtTokenImpl: string,
_underlyingAssetDecimals: BigNumberish,
_interestRateStrategyAddress: string,
overrides?: TransactionOverrides
@ -300,7 +317,10 @@ export class LendingPoolConfigurator extends Contract {
CONFIGURATOR_REVISION(): Promise<BigNumber>;
activateReserve(_reserve: string, overrides?: TransactionOverrides): Promise<ContractTransaction>;
activateReserve(
_reserve: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
deactivateReserve(
_reserve: string,
@ -341,13 +361,16 @@ export class LendingPoolConfigurator extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
freezeReserve(_reserve: string, overrides?: TransactionOverrides): Promise<ContractTransaction>;
freezeReserve(
_reserve: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
initReserve(
_reserve: string,
_aTokenInstance: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string,
_aTokenImpl: string,
_stableDebtTokenImpl: string,
_variableDebtTokenImpl: string,
_underlyingAssetDecimals: BigNumberish,
_interestRateStrategyAddress: string,
overrides?: TransactionOverrides
@ -392,7 +415,10 @@ export class LendingPoolConfigurator extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
unfreezeReserve(_reserve: string, overrides?: TransactionOverrides): Promise<ContractTransaction>;
unfreezeReserve(
_reserve: string,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
updateAToken(
_reserve: string,
@ -403,7 +429,10 @@ export class LendingPoolConfigurator extends Contract {
filters: {
BorrowingDisabledOnReserve(_reserve: string | null): EventFilter;
BorrowingEnabledOnReserve(_reserve: null, _stableRateEnabled: null): EventFilter;
BorrowingEnabledOnReserve(
_reserve: null,
_stableRateEnabled: null
): EventFilter;
ReserveActivated(_reserve: string | null): EventFilter;
@ -427,14 +456,22 @@ export class LendingPoolConfigurator extends Contract {
ReserveInitialized(
_reserve: string | null,
_aToken: string | null,
_stableDebtToken: null,
_variableDebtToken: null,
_interestRateStrategyAddress: null
): EventFilter;
ReserveInterestRateStrategyChanged(_reserve: null, _strategy: null): EventFilter;
ReserveInterestRateStrategyChanged(
_reserve: null,
_strategy: null
): EventFilter;
ReserveLiquidationBonusChanged(_reserve: null, _bonus: null): EventFilter;
ReserveLiquidationThresholdChanged(_reserve: null, _threshold: null): EventFilter;
ReserveLiquidationThresholdChanged(
_reserve: null,
_threshold: null
): EventFilter;
ReserveUnfreezed(_reserve: string | null): EventFilter;
@ -474,9 +511,9 @@ export class LendingPoolConfigurator extends Contract {
initReserve(
_reserve: string,
_aTokenInstance: string,
_stableDebtTokenAddress: string,
_variableDebtTokenAddress: string,
_aTokenImpl: string,
_stableDebtTokenImpl: string,
_variableDebtTokenImpl: string,
_underlyingAssetDecimals: BigNumberish,
_interestRateStrategyAddress: string
): Promise<BigNumber>;
@ -487,13 +524,22 @@ export class LendingPoolConfigurator extends Contract {
poolAddressesProvider(): Promise<BigNumber>;
setLiquidationBonus(_reserve: string, _bonus: BigNumberish): Promise<BigNumber>;
setLiquidationBonus(
_reserve: string,
_bonus: BigNumberish
): Promise<BigNumber>;
setLiquidationThreshold(_reserve: string, _threshold: BigNumberish): Promise<BigNumber>;
setLiquidationThreshold(
_reserve: string,
_threshold: BigNumberish
): Promise<BigNumber>;
setLtv(_reserve: string, _ltv: BigNumberish): Promise<BigNumber>;
setReserveDecimals(_reserve: string, _decimals: BigNumberish): Promise<BigNumber>;
setReserveDecimals(
_reserve: string,
_decimals: BigNumberish
): Promise<BigNumber>;
setReserveInterestRateStrategyAddress(
_reserve: string,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -69,7 +69,7 @@ interface MockATokenInterface extends Interface {
}>;
mintOnDeposit: TypedFunctionDescription<{
encode([_account, _amount]: [string, BigNumberish]): string;
encode([_user, _amount]: [string, BigNumberish]): string;
}>;
name: TypedFunctionDescription<{ encode([]: []): string }>;
@ -278,7 +278,7 @@ export class MockAToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<boolean>;
mintOnDeposit(
_account: string,
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -391,7 +391,7 @@ export class MockAToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<boolean>;
mintOnDeposit(
_account: string,
_user: string,
_amount: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -554,7 +554,7 @@ export class MockAToken extends Contract {
isTransferAllowed(_user: string, _amount: BigNumberish): Promise<BigNumber>;
mintOnDeposit(_account: string, _amount: BigNumberish): Promise<BigNumber>;
mintOnDeposit(_user: string, _amount: BigNumberish): Promise<BigNumber>;
name(): Promise<BigNumber>;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -171,4 +171,4 @@ const _abi = [
];
const _bytecode =
"0x60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516109663803806109668339818101604052602081101561004057600080fd5b5051600080546001600160a01b039092166001600160a01b03199092169190911790556108f4806100726000396000f3fe6080604052600436106100385760003560e01c8063388f70f114610044578063405b019d14610072578063c72c4d101461014a5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100706004803603602081101561006757600080fd5b5035151561017b565b005b34801561007e57600080fd5b50610070600480360360a081101561009557600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610199945050505050565b34801561015657600080fd5b5061015f61034e565b604080516001600160a01b039092168252519081900360200190f35b60008054911515600160a01b0260ff60a01b19909216919091179055565b846101a4308261035d565b8411156101f8576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b600054600160a01b900460ff161561025957604080516001600160a01b03881681526020810186905280820185905290517f816f6a6bc084e1996be1a831afa1af30763d0501b6b43b9e1922a11f347366d79181900360600190a150610347565b61026b866001600160a01b0316610412565b6102e257806001600160a01b031663a0712d68846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050506040513d60208110156102df57600080fd5b50505b6102fc86866102f7878763ffffffff61043716565b610498565b604080516001600160a01b03881681526020810186905280820185905290517f7d94e9d0c906b8d7b2b52a581b9e9ba728aa6f8cd8532bd87243d193f47401be9181900360600190a1505b5050505050565b6000546001600160a01b031681565b6000610371826001600160a01b0316610412565b1561038757506001600160a01b0382163161040c565b816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103dd57600080fd5b505afa1580156103f1573d6000803e3d6000fd5b505050506040513d602081101561040757600080fd5b505190505b92915050565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14919050565b600082820183811015610491576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6104a38284836104a8565b505050565b6104a36001600160a01b038316848363ffffffff6104c216565b806104cc576104a3565b6104d583610412565b15610581576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d806000811461052a576040519150601f19603f3d011682016040523d82523d6000602084013e61052f565b606091505b505090508061057b576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b506104a3565b6104a36001600160a01b038416838363ffffffff61059b16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104a3908490606061063d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166106999092919063ffffffff16565b8051909150156104a35780806020019051602081101561065c57600080fd5b50516104a35760405162461bcd60e51b815260040180806020018281038252602a815260200180610895602a913960400191505060405180910390fd5b60606106a884846000856106b0565b949350505050565b60606106bb8561085b565b61070c576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061074b5780518252601f19909201916020918201910161072c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107ad576040519150601f19603f3d011682016040523d82523d6000602084013e6107b2565b606091505b509150915081156107c65791506106a89050565b8051156107d65780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610820578181015183820152602001610808565b50505050905090810190601f16801561084d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906106a857505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220516cc8692ecd6324970df77ee93fb747bff000502ddb41784874b25d58bf1f1764736f6c63430006080033";
"0x60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516108073803806108078339818101604052602081101561004057600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610795806100726000396000f3fe6080604052600436106100385760003560e01c8063388f70f114610044578063405b019d14610072578063c72c4d101461014a5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100706004803603602081101561006757600080fd5b5035151561017b565b005b34801561007e57600080fd5b50610070600480360360a081101561009557600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610199945050505050565b34801561015657600080fd5b5061015f6103a2565b604080516001600160a01b039092168252519081900360200190f35b60008054911515600160a01b0260ff60a01b19909216919091179055565b604080516370a0823160e01b8152306004820152905186916001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d602081101561020c57600080fd5b5051841115610262576040805162461bcd60e51b815260206004820181905260248201527f496e76616c69642062616c616e636520666f722074686520636f6e7472616374604482015290519081900360640190fd5b600054600160a01b900460ff16156102c357604080516001600160a01b03881681526020810186905280820185905290517f816f6a6bc084e1996be1a831afa1af30763d0501b6b43b9e1922a11f347366d79181900360600190a15061039b565b806001600160a01b031663a0712d68846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b505050506040513d602081101561033357600080fd5b506103509050868661034b878763ffffffff6103b116565b610412565b604080516001600160a01b03881681526020810186905280820185905290517f7d94e9d0c906b8d7b2b52a581b9e9ba728aa6f8cd8532bd87243d193f47401be9181900360600190a1505b5050505050565b6000546001600160a01b031681565b60008282018381101561040b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b61041d828483610422565b505050565b61041d6001600160a01b038316848363ffffffff61043c16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261041d90849060606104de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661053a9092919063ffffffff16565b80519091501561041d578080602001905160208110156104fd57600080fd5b505161041d5760405162461bcd60e51b815260040180806020018281038252602a815260200180610736602a913960400191505060405180910390fd5b60606105498484600085610551565b949350505050565b606061055c856106fc565b6105ad576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106105ec5780518252601f1990920191602091820191016105cd565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461064e576040519150601f19603f3d011682016040523d82523d6000602084013e610653565b606091505b509150915081156106675791506105499050565b8051156106775780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106c15781810151838201526020016106a9565b50505050905090810190601f1680156106ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061054957505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a2ae2dcf10cb7c76a949954c150b9f788279726674dc38c1c4d33c369af7ea6864736f6c63430006080033";

File diff suppressed because one or more lines are too long

View File

@ -121,4 +121,4 @@ const _abi = [
];
const _bytecode =
"0x608060405234801561001057600080fd5b506040516106b53803806106b58339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610650806100656000396000f3fe6080604052600436106100295760003560e01c806329589f611461002e5780634f1b86eb146100ec575b600080fd5b6100da600480360361010081101561004557600080fd5b6001600160a01b0382358116926020810135926040820135831692606083013581169260808101359260a08201359260c0830135169190810190610100810160e082013564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460018302840111640100000000831117156100cf57600080fd5b50909250905061011d565b60408051918252519081900360200190f35b3480156100f857600080fd5b50610101610266565b604080516001600160a01b039092168252519081900360200190f35b600080546040805163140e25ad60e31b8152670de0b6b3a7640000600482015290516001600160a01b039092169163a0712d689160248082019260209290919082900301818787803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b505050506040513d602081101561019c57600080fd5b50516101ef576040805162461bcd60e51b815260206004820181905260248201527f54524144455f574954485f48494e542e205265766572746564206d696e742829604482015290519081900360640190fd5b6101f7610275565b6001600160a01b03168a6001600160a01b03161461022a5761022a6001600160a01b038b1633308c63ffffffff61028d16565b60005461024f906001600160a01b031633670de0b6b3a764000063ffffffff6102ed16565b50670de0b6b3a76400009998505050505050505050565b6000546001600160a01b031681565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526102e7908590610344565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261033f908490610344565b505050565b6060610399826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f59092919063ffffffff16565b80519091501561033f578080602001905160208110156103b857600080fd5b505161033f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806105f1602a913960400191505060405180910390fd5b6060610404848460008561040c565b949350505050565b6060610417856105b7565b610468576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106104a75780518252601f199092019160209182019101610488565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610509576040519150601f19603f3d011682016040523d82523d6000602084013e61050e565b606091505b509150915081156105225791506104049050565b8051156105325780518082602001fd5b8360405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561057c578181015183820152602001610564565b50505050905090810190601f1680156105a95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061040457505015159291505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122099f447de7dc340bb9fad6029140c928c6fde2d7c3b3f7bb83714a93e38cb1f2f64736f6c63430006080033";
"0x608060405234801561001057600080fd5b506040516105fd3803806105fd8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610598806100656000396000f3fe6080604052600436106100295760003560e01c806329589f611461002e5780634f1b86eb146100ec575b600080fd5b6100da600480360361010081101561004557600080fd5b6001600160a01b0382358116926020810135926040820135831692606083013581169260808101359260a08201359260c0830135169190810190610100810160e082013564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460018302840111640100000000831117156100cf57600080fd5b50909250905061011d565b60408051918252519081900360200190f35b3480156100f857600080fd5b50610101610266565b604080516001600160a01b039092168252519081900360200190f35b600080546040805163140e25ad60e31b8152670de0b6b3a7640000600482015290516001600160a01b039092169163a0712d689160248082019260209290919082900301818787803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b505050506040513d602081101561019c57600080fd5b50516101ef576040805162461bcd60e51b815260206004820181905260248201527f54524144455f574954485f48494e542e205265766572746564206d696e742829604482015290519081900360640190fd5b6101f7610275565b6001600160a01b03168a6001600160a01b03161461022a5761022a6001600160a01b038b1633308c63ffffffff61028d16565b60005461024f906001600160a01b031633670de0b6b3a764000063ffffffff6102ed16565b50670de0b6b3a76400009998505050505050505050565b6000546001600160a01b031681565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526102e7908590610344565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261033f908490610344565b505050565b610356826001600160a01b03166104fc565b6103a7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106103e55780518252601f1990920191602091820191016103c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610447576040519150601f19603f3d011682016040523d82523d6000602084013e61044c565b606091505b5091509150816104a3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156102e7578080602001905160208110156104bf57600080fd5b50516102e75760405162461bcd60e51b815260040180806020018281038252602a815260200180610539602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061053057508115155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204217cd7d546f66051c30fdaa4e283314470f9c5edda974b8ca382dab7b05781364736f6c63430006080033";

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,6 +12,8 @@ import {
interface StableDebtTokenInterface extends Interface {
functions: {
DEBT_TOKEN_REVISION: TypedFunctionDescription<{ encode([]: []): string }>;
allowance: TypedFunctionDescription<{
encode([owner, spender]: [string, string]): string;
}>;
@ -48,11 +50,11 @@ interface StableDebtTokenInterface extends Interface {
encode([spender, addedValue]: [string, BigNumberish]): string;
}>;
init: TypedFunctionDescription<{
encode([_name, _symbol, _decimals]: [
initialize: TypedFunctionDescription<{
encode([_decimals, _name, _symbol]: [
BigNumberish,
string,
string,
BigNumberish
string
]): string;
}>;
@ -148,6 +150,8 @@ export class StableDebtToken extends Contract {
interface: StableDebtTokenInterface;
functions: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
@ -184,10 +188,10 @@ export class StableDebtToken extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -222,6 +226,8 @@ export class StableDebtToken extends Contract {
underlyingAssetAddress(): Promise<string>;
};
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
@ -258,10 +264,10 @@ export class StableDebtToken extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -323,6 +329,8 @@ export class StableDebtToken extends Contract {
};
estimate: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(spender: string, _amount: BigNumberish): Promise<BigNumber>;
@ -349,10 +357,10 @@ export class StableDebtToken extends Contract {
addedValue: BigNumberish
): Promise<BigNumber>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish
_symbol: string
): Promise<BigNumber>;
mint(

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,6 +12,8 @@ import {
interface VariableDebtTokenInterface extends Interface {
functions: {
DEBT_TOKEN_REVISION: TypedFunctionDescription<{ encode([]: []): string }>;
allowance: TypedFunctionDescription<{
encode([owner, spender]: [string, string]): string;
}>;
@ -40,11 +42,11 @@ interface VariableDebtTokenInterface extends Interface {
encode([spender, addedValue]: [string, BigNumberish]): string;
}>;
init: TypedFunctionDescription<{
encode([_name, _symbol, _decimals]: [
initialize: TypedFunctionDescription<{
encode([_decimals, _name, _symbol]: [
BigNumberish,
string,
string,
BigNumberish
string
]): string;
}>;
@ -137,6 +139,8 @@ export class VariableDebtToken extends Contract {
interface: VariableDebtTokenInterface;
functions: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
@ -169,10 +173,10 @@ export class VariableDebtToken extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -206,6 +210,8 @@ export class VariableDebtToken extends Contract {
underlyingAssetAddress(): Promise<string>;
};
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(
@ -238,10 +244,10 @@ export class VariableDebtToken extends Contract {
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish,
overrides?: TransactionOverrides
): Promise<ContractTransaction>;
@ -303,6 +309,8 @@ export class VariableDebtToken extends Contract {
};
estimate: {
DEBT_TOKEN_REVISION(): Promise<BigNumber>;
allowance(owner: string, spender: string): Promise<BigNumber>;
approve(spender: string, _amount: BigNumberish): Promise<BigNumber>;
@ -325,10 +333,10 @@ export class VariableDebtToken extends Contract {
addedValue: BigNumberish
): Promise<BigNumber>;
init(
initialize(
_decimals: BigNumberish,
_name: string,
_symbol: string,
_decimals: BigNumberish
_symbol: string
): Promise<BigNumber>;
mint(_user: string, _amount: BigNumberish): Promise<BigNumber>;

File diff suppressed because one or more lines are too long

View File

@ -134,4 +134,4 @@ const _abi = [
];
const _bytecode =
"0x608060405234801561001057600080fd5b506040516109863803806109868339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610921806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a0945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b038135811691602001351661081c565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610694576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b6020026020010181815250505061068c565b61062784838151811061061157fe5b60200260200101516001600160a01b03166108c6565b15610666576106498885848151811061063c57fe5b602002602001015161081c565b83838151811061065557fe5b60200260200101818152505061068a565b876001600160a01b03163183838151811061067d57fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106be57600080fd5b506040519080825280602002602001820160405280156106e8578160200160208202803683370190505b50905060005b84518110156108125760005b845181101561080957600085518302905061071a86838151811061061157fe5b1561075c5786838151811061072b57fe5b60200260200101516001600160a01b031631848383018151811061074b57fe5b602002602001018181525050610800565b61078186838151811061076b57fe5b60200260200101516001600160a01b0316610320565b6107c2576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b6107e58784815181106107d157fe5b602002602001015187848151811061063c57fe5b84838301815181106107f357fe5b6020026020010181815250505b506001016106fa565b506001016106ee565b5090505b92915050565b6000610830826001600160a01b0316610320565b156108be57816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561088b57600080fd5b505afa15801561089f573d6000803e3d6000fd5b505050506040513d60208110156108b557600080fd5b50519050610816565b506000610816565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1491905056fea2646970667358221220ba894c2eba77f05be9d541a00a65fbec4e5924a19f513c8f596076cb70bd139c64736f6c63430006080033";
"0x608060405234801561001057600080fd5b506040516108bc3803806108bc8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610857806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061064d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610777565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b8251811015610641576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610639565b61061f8885848151811061061257fe5b6020026020010151610777565b83838151811061062b57fe5b602002602001018181525050505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff8111801561066b57600080fd5b50604051908082528060200260200182016040528015610695578160200160208202803683370190505b50905060005b845181101561076d5760005b84518110156107645760008551830290506106dd8683815181106106c757fe5b60200260200101516001600160a01b0316610320565b61071e576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61074187848151811061072d57fe5b602002602001015187848151811061061257fe5b848383018151811061074f57fe5b602002602001018181525050506001016106a7565b5060010161069b565b5090505b92915050565b600061078b826001600160a01b0316610320565b1561081957816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156107e657600080fd5b505afa1580156107fa573d6000803e3d6000fd5b505050506040513d602081101561081057600080fd5b50519050610771565b50600061077156fea26469706673582212200c49fc45bf8d6aedaf3cd09ab09eb29f7e718ec1bbd6342feaa0ae4422f04e7464736f6c63430006080033";