diff --git a/buidler.config.ts b/buidler.config.ts index c8ec7d05..df75b143 100644 --- a/buidler.config.ts +++ b/buidler.config.ts @@ -11,6 +11,7 @@ usePlugin('solidity-coverage'); usePlugin('@nomiclabs/buidler-waffle'); usePlugin('@nomiclabs/buidler-etherscan'); + ['misc', 'deployments', 'migrations'].forEach((folder) => { const tasksPath = path.join(__dirname, 'tasks', folder); fs.readdirSync(tasksPath).forEach((task) => require(`${tasksPath}/${task}`)); diff --git a/contracts/lendingpool/LendingPool.sol b/contracts/lendingpool/LendingPool.sol index 359b2458..8b163095 100644 --- a/contracts/lendingpool/LendingPool.sol +++ b/contracts/lendingpool/LendingPool.sol @@ -280,8 +280,8 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { bool isFirstDeposit = aToken.balanceOf(msg.sender) == 0; - reserve.updateCumulativeIndexes(); - reserve.updateInterestRatesAndTimestamp(_reserve, _amount, 0); + reserve.updateCumulativeIndexesAndTimestamp(); + reserve.updateInterestRates(_reserve, _amount, 0); if (isFirstDeposit) { user.useAsCollateral = true; @@ -320,8 +320,8 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { user.useAsCollateral = false; } - reserve.updateCumulativeIndexes(); - reserve.updateInterestRatesAndTimestamp(_reserve, 0, _amount); + reserve.updateCumulativeIndexesAndTimestamp(); + reserve.updateInterestRates(_reserve, 0, _amount); IERC20(_reserve).universalTransfer(_user, _amount); @@ -346,12 +346,9 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { CoreLibrary.ReserveData storage reserve = reserves[_reserve]; CoreLibrary.UserReserveData storage user = usersReserveData[msg.sender][_reserve]; - //calculating fees - uint256 borrowFee = feeProvider.calculateLoanOriginationFee(msg.sender, _amount); - uint256 amountInETH = IPriceOracleGetter(addressesProvider.getPriceOracle()) .getAssetPrice(_reserve) - .mul(_amount.add(borrowFee)) + .mul(_amount) .div(10 ** reserve.decimals); //price is in ether ValidationLogic.validateBorrow( @@ -361,7 +358,6 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { _amount, amountInETH, _interestRateMode, - borrowFee, MAX_STABLE_RATE_BORROW_SIZE_PERCENT, reserves, usersReserveData, @@ -370,21 +366,35 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { ); //borrow passed - reserve.updateCumulativeIndexes(); + reserve.updateCumulativeIndexesAndTimestamp(); + + //solium-disable-next-line + reserve.lastUpdateTimestamp = uint40(block.timestamp); + + uint256 userStableRate = reserve.currentStableBorrowRate; if(CoreLibrary.InterestRateMode(_interestRateMode) == CoreLibrary.InterestRateMode.STABLE) { - IStableDebtToken(reserve.stableDebtTokenAddress).mint(msg.sender, _amount, reserve.currentStableBorrowRate); + IStableDebtToken(reserve.stableDebtTokenAddress).mint(msg.sender, _amount, userStableRate); + uint40 stableRateLastUpdated = IStableDebtToken(reserve.stableDebtTokenAddress).getUserLastUpdated(msg.sender); + console.log("Stable rate last updated in borrow is %s", stableRateLastUpdated); + } else { IVariableDebtToken(reserve.variableDebtTokenAddress).mint(msg.sender, _amount); } - uint256 userStableRate = reserve.currentStableBorrowRate; - reserve.updateInterestRatesAndTimestamp(_reserve, 0, _amount); + reserve.updateInterestRates(_reserve, 0, _amount); + //if we reached this point, we can transfer IERC20(_reserve).universalTransfer(msg.sender, _amount); + (uint256 stableBalance, uint256 variableBalance) = UserLogic.getUserBorrowBalances(msg.sender, reserve); + + console.log("Debt balances: %s %s", stableBalance, variableBalance); + + console.log("User variable borrow index %s reserve index %s", IVariableDebtToken(reserve.variableDebtTokenAddress).getUserIndex(msg.sender), reserve.lastVariableBorrowCumulativeIndex); + console.log("User stable rate %s", IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(msg.sender)); emit Borrow( _reserve, msg.sender, @@ -427,20 +437,32 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { CoreLibrary.ReserveData storage reserve = reserves[_reserve]; CoreLibrary.UserReserveData storage user = usersReserveData[_onBehalfOf][_reserve]; + console.log("Getting balances..."); + ( vars.stableBorrowBalance, vars.variableBorrowBalance ) = UserLogic.getUserBorrowBalances(_onBehalfOf, reserve); + + console.log("Balances calculated, %s %s", vars.stableBorrowBalance, vars.variableBorrowBalance); + + console.log("Interest rate mode %s", _rateMode); + CoreLibrary.InterestRateMode rateMode = CoreLibrary.InterestRateMode(_rateMode); + console.log("Interest rate mode %s", _rateMode); + //default to max amount vars.paybackAmount = rateMode == CoreLibrary.InterestRateMode.STABLE ? vars.stableBorrowBalance : vars.variableBorrowBalance; + console.log("Payback amount %s stable rate %s", vars.paybackAmount, IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(_onBehalfOf)); + if (_amount != UINT_MAX_VALUE && _amount < vars.paybackAmount) { vars.paybackAmount = _amount; } + console.log("Validating repay..."); ValidationLogic.validateRepay( reserve, @@ -454,8 +476,9 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { msg.value ); - reserve.updateCumulativeIndexes(); + reserve.updateCumulativeIndexesAndTimestamp(); + console.log("Burning tokens..."); //burns an equivalent amount of debt tokens if(rateMode == CoreLibrary.InterestRateMode.STABLE) { IStableDebtToken(reserve.stableDebtTokenAddress).burn(_onBehalfOf, vars.paybackAmount); @@ -464,7 +487,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { IVariableDebtToken(reserve.variableDebtTokenAddress).burn(_onBehalfOf, vars.paybackAmount); } - reserve.updateInterestRatesAndTimestamp(_reserve, vars.paybackAmount, 0); + reserve.updateInterestRates(_reserve, vars.paybackAmount, 0); IERC20(_reserve).universalTransferFromSenderToThis(vars.paybackAmount, false); @@ -512,7 +535,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { TODO: Burn old tokens and mint new ones **/ - reserve.updateInterestRatesAndTimestamp(_reserve, 0, 0); + reserve.updateInterestRates(_reserve, 0, 0); /* CoreLibrary.InterestRateMode newRateMode = user.getCurrentBorrowRateMode(); emit Swap( @@ -580,7 +603,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { //solium-disable-next-line user.lastUpdateTimestamp = uint40(block.timestamp); - reserve.updateInterestRatesAndTimestamp(_reserve, 0, 0); + reserve.updateInterestRates(_reserve, 0, 0); emit RebalanceStableBorrowRate( _reserve, @@ -859,6 +882,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { uint256 stableBorrowRate, uint256 liquidityRate, uint256 variableBorrowIndex, + uint40 stableRateLastUpdated, bool usageAsCollateralEnabled ) { @@ -869,6 +893,8 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { (principalStableBorrowBalance, principalVariableBorrowBalance) = UserLogic.getUserPrincipalBorrowBalances(_user,reserve); liquidityRate = reserve.currentLiquidityRate; stableBorrowRate = IStableDebtToken(reserve.stableDebtTokenAddress).getUserStableRate(_user); + stableRateLastUpdated = IStableDebtToken(reserve.stableDebtTokenAddress).getUserLastUpdated(_user); + console.log("Stable rate last updated is %s", stableRateLastUpdated); usageAsCollateralEnabled = usersReserveData[_user][_reserve].useAsCollateral; variableBorrowIndex = IVariableDebtToken(reserve.variableDebtTokenAddress).getUserIndex(_user); } diff --git a/contracts/libraries/CoreLibrary.sol b/contracts/libraries/CoreLibrary.sol index 9f1b8884..a8d11635 100644 --- a/contracts/libraries/CoreLibrary.sol +++ b/contracts/libraries/CoreLibrary.sol @@ -111,7 +111,7 @@ library CoreLibrary { * a formal specification. * @param _self the reserve object **/ - function updateCumulativeIndexes(ReserveData storage _self) internal { + function updateCumulativeIndexesAndTimestamp(ReserveData storage _self) internal { uint256 totalBorrows = getTotalBorrows(_self); if (totalBorrows > 0) { @@ -133,6 +133,9 @@ library CoreLibrary { _self.lastVariableBorrowCumulativeIndex ); } + + //solium-disable-next-line + _self.lastUpdateTimestamp = uint40(block.timestamp); } /** @@ -244,7 +247,7 @@ library CoreLibrary { _self.usageAsCollateralEnabled = false; } - function getTotalBorrows(ReserveData storage _self) internal view returns(uint256) { + function getTotalBorrows(ReserveData storage _self) internal view returns (uint256) { return IERC20(_self.stableDebtTokenAddress).totalSupply().add( IERC20(_self.variableDebtTokenAddress).totalSupply() diff --git a/contracts/libraries/GenericLogic.sol b/contracts/libraries/GenericLogic.sol index 161e6a55..72fcf99f 100644 --- a/contracts/libraries/GenericLogic.sol +++ b/contracts/libraries/GenericLogic.sol @@ -150,6 +150,7 @@ library GenericLogic { CalculateUserAccountDataVars memory vars; for (vars.i = 0; vars.i < _reserves.length; vars.i++) { + vars.currentReserveAddress = _reserves[vars.i]; CoreLibrary.ReserveData storage currentReserve = _reservesData[vars diff --git a/contracts/libraries/ReserveLogic.sol b/contracts/libraries/ReserveLogic.sol index ae75c129..d14e4ae4 100644 --- a/contracts/libraries/ReserveLogic.sol +++ b/contracts/libraries/ReserveLogic.sol @@ -65,7 +65,7 @@ library ReserveLogic { uint256 _protocolFee ) external { //compounding the cumulated interest - _reserve.updateCumulativeIndexes(); + _reserve.updateCumulativeIndexesAndTimestamp(); uint256 totalLiquidityBefore = _availableLiquidityBefore.add(_reserve.getTotalBorrows()); @@ -73,7 +73,7 @@ library ReserveLogic { _reserve.cumulateToLiquidityIndex(totalLiquidityBefore, _income); //refresh interest rates - updateInterestRatesAndTimestamp(_reserve, _reserveAddress, _income, 0); + updateInterestRates(_reserve, _reserveAddress, _income, 0); } @@ -89,10 +89,10 @@ library ReserveLogic { uint256 _collateralToLiquidate, bool _liquidatorReceivesAToken ) external { - _collateralReserve.updateCumulativeIndexes(); + _collateralReserve.updateCumulativeIndexesAndTimestamp(); if (!_liquidatorReceivesAToken) { - updateInterestRatesAndTimestamp( + updateInterestRates( _collateralReserve, _collateralReserveAddress, 0, @@ -125,7 +125,7 @@ library ReserveLogic { * @param _liquidityAdded the amount of liquidity added to the protocol (deposit or repay) in the previous action * @param _liquidityTaken the amount of liquidity taken from the protocol (redeem or borrow) **/ - function updateInterestRatesAndTimestamp( + function updateInterestRates( CoreLibrary.ReserveData storage _reserve, address _reserveAddress, uint256 _liquidityAdded, @@ -156,9 +156,6 @@ library ReserveLogic { _reserve.currentStableBorrowRate = newStableRate; _reserve.currentVariableBorrowRate = newVariableRate; - //solium-disable-next-line - _reserve.lastUpdateTimestamp = uint40(block.timestamp); - emit ReserveDataUpdated( _reserveAddress, newLiquidityRate, diff --git a/contracts/libraries/ValidationLogic.sol b/contracts/libraries/ValidationLogic.sol index 508db194..2439e99e 100644 --- a/contracts/libraries/ValidationLogic.sol +++ b/contracts/libraries/ValidationLogic.sol @@ -84,7 +84,6 @@ library ValidationLogic { * @param _amount the amount to be borrowed * @param _amountInETH the amount to be borrowed, in ETH * @param _interestRateMode the interest rate mode at which the user is borrowing - * @param _borrowFee the fee * @param _maxStableLoanPercent the max amount of the liquidity that can be borrowed at stable rate, in percentage * @param _reservesData the state of all the reserves * @param _usersData the state of all the users for all the reserves @@ -99,7 +98,6 @@ library ValidationLogic { uint256 _amount, uint256 _amountInETH, uint256 _interestRateMode, - uint256 _borrowFee, uint256 _maxStableLoanPercent, mapping(address => CoreLibrary.ReserveData) storage _reservesData, mapping(address => mapping(address => CoreLibrary.UserReserveData)) storage _usersData, @@ -143,8 +141,6 @@ library ValidationLogic { require(vars.healthFactor > GenericLogic.HEALTH_FACTOR_LIQUIDATION_THRESHOLD, '8'); - require(_borrowFee > 0, 'The amount to borrow is too small'); - //add the current already borrowed amount to the amount requested to calculate the total collateral needed. vars.amountOfCollateralNeededETH = vars .userBorrowBalanceETH diff --git a/contracts/tokenization/StableDebtToken.sol b/contracts/tokenization/StableDebtToken.sol index f0aaf128..7912b354 100644 --- a/contracts/tokenization/StableDebtToken.sol +++ b/contracts/tokenization/StableDebtToken.sol @@ -43,6 +43,11 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase { return avgStableRate; } + function getUserLastUpdated(address _user) external virtual override view returns (uint40) { + return usersData[_user].lastUpdateTimestamp; + } + + function getUserStableRate(address _user) external virtual override view returns (uint256) { return usersData[_user].currentRate; } @@ -91,8 +96,9 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase { usersData[account].currentRate = usersData[account] .currentRate .rayMul(currentBalance.wadToRay()) - .add(amountInRay.wadMul(rate)) + .add(amountInRay.rayMul(rate)) .rayDiv(currentBalance.add(amount).wadToRay()); + usersData[account].lastUpdateTimestamp = uint40(block.timestamp); avgStableRate = avgStableRate @@ -143,6 +149,11 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase { .rayDiv(newSupply.wadToRay()); } + if(_amount == currentBalance){ + usersData[_account].currentRate = 0; + usersData[_account].lastUpdateTimestamp = 0; + } + internalBurn(_account, _amount); emit burnDebt(_account, _amount, previousBalance, currentBalance, balanceIncrease); @@ -163,6 +174,10 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase { { uint256 previousPrincipalBalance = balances[_user]; + if(previousPrincipalBalance == 0){ + return (0,0,0); + } + //calculate the accrued interest since the last accumulation uint256 balanceIncrease = balanceOf(_user).sub(previousPrincipalBalance); //mints an amount of tokens equivalent to the amount accumulated diff --git a/contracts/tokenization/VariableDebtToken.sol b/contracts/tokenization/VariableDebtToken.sol index a5f8d83a..9384092f 100644 --- a/contracts/tokenization/VariableDebtToken.sol +++ b/contracts/tokenization/VariableDebtToken.sol @@ -9,7 +9,6 @@ import {WadRayMath} from '../libraries/WadRayMath.sol'; import '@nomiclabs/buidler/console.sol'; import {IVariableDebtToken} from './interfaces/IVariableDebtToken.sol'; - contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { using SafeMath for uint256; using WadRayMath for uint256; @@ -38,7 +37,6 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public virtual override view returns (uint256) { - if (balances[account] == 0) { return 0; } @@ -47,12 +45,14 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { balances[account] .wadToRay() .rayMul(pool.getReserveNormalizedVariableDebt(underlyingAssetAddress)) + .rayDiv(userIndexes[account]) .rayToWad(); } - function getUserIndex(address _user) public virtual override view returns(uint256) { + function getUserIndex(address _user) public virtual override view returns (uint256) { return userIndexes[_user]; } + /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * @@ -63,17 +63,17 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { * - `to` cannot be the zero address. */ function mint(address account, uint256 amount) public override onlyLendingPool { - ( uint256 previousBalance, uint256 currentBalance, - uint256 balanceIncrease, - uint256 index + uint256 balanceIncrease ) = internalCumulateBalance(account); internalMint(account, amount); - emit mintDebt(account, amount, previousBalance, currentBalance, balanceIncrease, index); + userIndexes[account] = pool.getReserveNormalizedVariableDebt(underlyingAssetAddress); + + emit mintDebt(account, amount, previousBalance, currentBalance, balanceIncrease, userIndexes[account]); } /** @@ -91,13 +91,19 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { ( uint256 previousBalance, uint256 currentBalance, - uint256 balanceIncrease, - uint256 index + uint256 balanceIncrease ) = internalCumulateBalance(account); internalBurn(account, amount); - emit burnDebt(account, amount, previousBalance, currentBalance, balanceIncrease, index); + //if user repaid everything + if (currentBalance == amount) { + userIndexes[account] = 0; + } else { + userIndexes[account] = pool.getReserveNormalizedVariableDebt(underlyingAssetAddress); + } + + emit burnDebt(account, amount, previousBalance, currentBalance, balanceIncrease, userIndexes[account]); } /** @@ -109,7 +115,6 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { function internalCumulateBalance(address _user) internal returns ( - uint256, uint256, uint256, uint256 @@ -117,19 +122,20 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken { { uint256 previousPrincipalBalance = balances[_user]; + if (previousPrincipalBalance == 0) { + return (0, 0, 0); + } + //calculate the accrued interest since the last accumulation uint256 balanceIncrease = balanceOf(_user).sub(previousPrincipalBalance); + //mints an amount of tokens equivalent to the amount accumulated internalMint(_user, balanceIncrease); - //updates the user index - uint256 index = userIndexes[_user] = pool.getReserveNormalizedVariableDebt( - underlyingAssetAddress - ); + return ( previousPrincipalBalance, previousPrincipalBalance.add(balanceIncrease), - balanceIncrease, - index + balanceIncrease ); } } diff --git a/contracts/tokenization/interfaces/IStableDebtToken.sol b/contracts/tokenization/interfaces/IStableDebtToken.sol index c1bc1e40..7eaa166f 100644 --- a/contracts/tokenization/interfaces/IStableDebtToken.sol +++ b/contracts/tokenization/interfaces/IStableDebtToken.sol @@ -14,4 +14,6 @@ interface IStableDebtToken { function getAverageStableRate() external virtual view returns(uint256); function getUserStableRate(address _user) external virtual view returns(uint256); + + function getUserLastUpdated(address _user) external virtual view returns (uint40); } diff --git a/deployed-contracts.json b/deployed-contracts.json index 52ad8519..d01584b2 100644 --- a/deployed-contracts.json +++ b/deployed-contracts.json @@ -5,7 +5,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x749258D38b0473d96FEcc14cC5e7DCE12d7Bd6f6", + "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -15,7 +15,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xA29C2A7e59aa49C71aF084695337E3AA5e820758", + "address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -25,7 +25,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x4a2a69879B8fD38371e804eD0415c7A187A6aD13", + "address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -34,7 +34,7 @@ "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400" }, "localhost": { - "address": "0x6DCCc1c1A3b5eD8c3Ef8DA857ed06d806B6Db68A" + "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400" } }, "LendingPoolParametersProvider": { @@ -52,7 +52,7 @@ "address": "0x2C4603396dE2F08642354A3A102760827FfFe113" }, "localhost": { - "address": "0xf8EcabD263c539005407C99346E145d046AeC2E7" + "address": "0x2C4603396dE2F08642354A3A102760827FfFe113" } }, "LendingPoolDataProvider": { @@ -65,7 +65,7 @@ "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA" }, "localhost": { - "address": "0x2d2F372ba90F87Ac45e93eFEa29c20cDD696e764" + "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA" } }, "PriceOracle": { @@ -74,7 +74,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x8a854d2cf4f20b72B02e8c0F5781E3C11519d320", + "address": "0x8731324a6C09a1745bD15009Dc8FcceF11c05F4a", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -84,7 +84,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xfC6d9227413D021f7a50EF3AAdF9545aA4ebb439", + "address": "0x474d9b0D5F1Bb1602711F9346743a7a7478d6f52", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -94,7 +94,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xdc006C4186148C29B57f52A8ad7694542ad4E675", + "address": "0xf91aC1098F3b154671Ce83290114aaE45ac0225f", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -104,7 +104,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x107Aa2cc3FE981E78140424C3d4DD55aF00Ab24C", + "address": "0xf4830d6b1D70C8595d3BD8A63f9ed9F636DB9ef2", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -114,7 +114,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x77183A4B7c0375bA9A5090Ae68c32A5C567d77c6", + "address": "0xC8Df507578fEfb60aA626ABFDDB20B48ee439ad1", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -130,7 +130,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x5B51d8344769d18fB85DF29EDbaB8E94dbA38455", + "address": "0x4b2c297ba5be42610994974b9543D56B864CA011", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -140,7 +140,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xd8f831Ef919D3f38694f2797CD44D7Cc7d595A67", + "address": "0x24E420B42971372F060a93129846761F354Bc50B", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -149,7 +149,7 @@ "address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d" }, "localhost": { - "address": "0xc52Df73f1BBe582061C65a2bd36A1d685f0a2BE5" + "address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d" } }, "InitializableAdminUpgradeabilityProxy": { @@ -158,7 +158,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xc52Df73f1BBe582061C65a2bd36A1d685f0a2BE5", + "address": "0xb840b4fe440b5E26e1840cd2D6320FAda1C0ca5d", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -167,7 +167,7 @@ "address": "0x5c98c9202b73d27A618662d34A6805c34AB041B8" }, "localhost": { - "address": "0x09157249a5937Bd78fea52CE189887Bd55c13050" + "address": "0x5c98c9202b73d27A618662d34A6805c34AB041B8" } }, "WalletBalanceProvider": { @@ -176,7 +176,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x2848E572a05Ed122E538E8d611AB1bb76DF7E98d", + "address": "0x435250F99d9ec2D7956773c6768392caD183765e", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -186,7 +186,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x79B51482dA73373D7828Ed728F8fC8d3994c4141", + "address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -196,7 +196,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x8eF6CAbcAE15FB78b436e67B26FFE80Ba7ef8424", + "address": "0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -206,7 +206,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xd0FD468D3ff12932f997a8298fe267BE55a9cCC6", + "address": "0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -216,7 +216,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xA106BFbDB5C925A04358bE49db41aDd308a1458f", + "address": "0xf4e77E5Da47AC3125140c470c71cBca77B5c638c", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -226,7 +226,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x9c91aEaD98b1354C7B0EAfb8ff539d0796c79894", + "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -236,7 +236,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x48FAde2E719B770E1783d03466dAEe98b5183538", + "address": "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -246,7 +246,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x145b7B6368Df63e7F3497b0A948B30fC1A4d5E55", + "address": "0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -256,7 +256,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x1Dbf1BB6407f30661756b236D809930762BEa337", + "address": "0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -266,7 +266,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x142bFA0788F794d3D0aE1EC36373ee034aABC11f", + "address": "0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -276,7 +276,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xC052EC931CdA4aC288BD60c1F8D3E29412976837", + "address": "0xc4905364b78a742ccce7B890A89514061E47068D", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -286,7 +286,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x3894795f9e148D52731Bc35A9B21583F20E6e4A2", + "address": "0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -296,7 +296,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xe01B716332D22c496812c2c2BaAF6d20f299C069", + "address": "0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -306,7 +306,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x02e85B5D2BB248d76eb5be13826793AA841f01D1", + "address": "0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -316,7 +316,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xAAeA2C44686fBEE1e9972723D50f12977345A7aa", + "address": "0x20Ce94F404343aD2752A2D01b43fa407db9E0D00", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -326,7 +326,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xF657a556c7fE4F6C46fAEd02E876f70FA413318f", + "address": "0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -336,7 +336,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xaA9e95d9131774A1Fb02122111CF860a40A83B2f", + "address": "0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -346,7 +346,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x9Ec40e5F15c197F46350AA248910E8cDAc3fa5c9", + "address": "0x52d3b94181f8654db2530b0fEe1B19173f519C52", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -356,7 +356,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x477F33Ca315d5C9D64Dd23F2D5696d5F629b15c6", + "address": "0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -366,7 +366,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x8ae47ca16f5017d5E2369c71540C1DF582719a30", + "address": "0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -376,7 +376,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xe0c40bFb910c24368bBcd2dE9Dc3af45684F96d5", + "address": "0x5bcb88A0d20426e451332eE6C4324b0e663c50E0", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -386,7 +386,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xc2517909aE3cFacC0283EB8FB917EAe273a3aE9e", + "address": "0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -396,7 +396,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0xAd49512dFBaD6fc13D67d3935283c0606812E962", + "address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -406,7 +406,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x749258D38b0473d96FEcc14cC5e7DCE12d7Bd6f6", + "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -415,7 +415,7 @@ "address": "0xBE7fFcC01164C890e59D298FD755FcBE6B7941a9" }, "localhost": { - "address": "0xF85d6001ADaD5376ef63143bdf1f11D9b163ac4f" + "address": "0xBE7fFcC01164C890e59D298FD755FcBE6B7941a9" } }, "StableDebtToken": { @@ -424,7 +424,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x209bb253C2f894D3Cc53b9dC23d308Eb8593613A", + "address": "0xD325d114a728C2114Bd33Ad47152f790f2a29c5c", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } }, @@ -434,7 +434,7 @@ "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" }, "localhost": { - "address": "0x8744c818024B89571C9eB9e798a55fd7bad3Dc43", + "address": "0x910b6a78b413e47401f20aA2350d264b55ae0189", "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6" } } diff --git a/test/helpers/actions.ts b/test/helpers/actions.ts index d4e399c9..2990981b 100644 --- a/test/helpers/actions.ts +++ b/test/helpers/actions.ts @@ -61,13 +61,12 @@ const almostEqualOrEqual = function ( expect(expected[key] != undefined, `Property ${key} is undefined in the expected data`); if (actual[key] instanceof BigNumber) { - if(!expected[key]){ - console.log("Key ", key, " value ", expected[key], actual[key]); - + if (!expected[key]) { + console.log('Key ', key, ' value ', expected[key], actual[key]); } const actualValue = (actual[key]).decimalPlaces(0, BigNumber.ROUND_DOWN); const expectedValue = (expected[key]).decimalPlaces(0, BigNumber.ROUND_DOWN); - + this.assert( actualValue.eq(expectedValue) || actualValue.plus(1).eq(expectedValue) || @@ -82,7 +81,6 @@ const almostEqualOrEqual = function ( actualValue.toFixed(0) ); } else { - console.log("Key ", key, " value ", expected[key], actual[key]); this.assert( actual[key] !== null && expected[key] !== null && @@ -325,18 +323,14 @@ export const borrow = async ( const secondsToTravel = new BigNumber(timeTravel).multipliedBy(ONE_YEAR).div(365).toNumber(); await increaseTime(secondsToTravel); - } - const { reserveData: reserveDataAfter, userData: userDataAfter, timestamp, } = await getContractsData(reserve, user.address, testEnv); - console.log(txTimestamp, timestamp); - const expectedReserveData = calcExpectedReserveDataAfterBorrow( amountToBorrow.toString(), interestRateMode, @@ -441,12 +435,15 @@ export const repay = async ( } if (expectedResult === 'success') { + const txResult = await waitForTx( await pool .connect(user.signer) .repay(reserve, amountToRepay, rateMode, onBehalfOf.address, txOptions) ); + console.log('Done.'); + const {txCost, txTimestamp} = await getTxCostAndTimestamp(txResult); const { @@ -457,7 +454,7 @@ export const repay = async ( const expectedReserveData = calcExpectedReserveDataAfterRepay( amountToRepay, - (rateMode), + rateMode, reserveDataBefore, userDataBefore, txTimestamp, @@ -466,7 +463,7 @@ export const repay = async ( const expectedUserData = calcExpectedUserDataAfterRepay( amountToRepay, - (rateMode), + rateMode, reserveDataBefore, expectedReserveData, userDataBefore, @@ -491,7 +488,9 @@ export const repay = async ( // }); } else if (expectedResult === 'revert') { await expect( - pool.connect(user.signer).repay(reserve, amountToRepay, onBehalfOf.address, txOptions), + pool + .connect(user.signer) + .repay(reserve, amountToRepay, rateMode, onBehalfOf.address, txOptions), revertMessage ).to.be.reverted; } diff --git a/test/helpers/scenario-engine.ts b/test/helpers/scenario-engine.ts index d9d2d22a..e2fd8d51 100644 --- a/test/helpers/scenario-engine.ts +++ b/test/helpers/scenario-engine.ts @@ -175,6 +175,8 @@ const executeAction = async ( userToRepayOnBehalf = users[parseInt(onBehalfOfIndex)]; } + console.log(user.address, userToRepayOnBehalf.address) + await repay( reserve, amount, diff --git a/test/helpers/scenarios/borrow-repay-stable.json b/test/helpers/scenarios/borrow-repay-stable.json index 5dea86b9..194062c2 100644 --- a/test/helpers/scenarios/borrow-repay-stable.json +++ b/test/helpers/scenarios/borrow-repay-stable.json @@ -97,7 +97,8 @@ "reserve": "DAI", "amount": "-1", "user": "1", - "onBehalfOf": "1" + "onBehalfOf": "1", + "borrowRateMode": "stable" }, "expected": "success" } @@ -159,216 +160,6 @@ } ] }, - { - "description": "User 1 deposits 1000 DAI, user 2 deposits 0.92267103215 ETH, tries to borrow 187.5 DAI which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "mint", - "args": { - "reserve": "DAI", - "amount": "1000", - "user": "1" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "DAI", - "user": "1" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "DAI", - "amount": "1000", - "user": "1" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "0.92267103215", - "user": "2", - "sendValue": "0.92267103215" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "DAI", - "amount": "187.5", - "borrowRateMode": "stable", - "user": "2" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "2" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "DAI", - "amount": "-1", - "user": "1" - }, - "expected": "success" - } - ] - }, - { - "description": "User 1 deposits 1000 USDC, user 2 deposits 0.91928534104 ETH, tries to borrow 187.5 USDC which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "mint", - "args": { - "reserve": "USDC", - "amount": "1000", - "user": "1" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "USDC", - "user": "1" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "USDC", - "amount": "1000", - "user": "1" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "0.91928534104", - "user": "2", - "sendValue": "0.91928534104" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "USDC", - "amount": "187.5", - "borrowRateMode": "stable", - "user": "2" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "2" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "USDC", - "amount": "-1", - "user": "1" - }, - "expected": "success" - } - ] - }, - { - "description": "User 1 deposits 1.5 ETH, user 2 deposits 100 DAI, tries to borrow 0.276801309645 ETH which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "1.5", - "user": "1", - "sendValue": "1.5" - }, - "expected": "success" - }, - { - "name": "mint", - "args": { - "reserve": "DAI", - "amount": "100", - "user": "2" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "DAI", - "user": "2" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "DAI", - "amount": "100", - "user": "2" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "ETH", - "amount": "0.276801309645", - "borrowRateMode": "stable", - "user": "2" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "DAI", - "amount": "-1", - "user": "2" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "1" - }, - "expected": "success" - } - ] - }, { "description": "User 0 deposits 1000 DAI, user 1,2,3,4 deposit 1 ETH each and borrow 100 DAI at stable rate. Everything is repaid, user 0 redeems", "actions": [ @@ -506,16 +297,17 @@ "reserve": "DAI", "amount": "-1", "user": "1", - "onBehalfOf": "1" + "onBehalfOf": "1", + "borrowRateMode": "stable" }, "expected": "success" }, { "name": "mint", - "description": "Mint 15 DAI to cover the interest", + "description": "Mint 20 DAI to cover the interest", "args": { "reserve": "DAI", - "amount": "15", + "amount": "20", "user": "2" }, "expected": "success" @@ -534,7 +326,8 @@ "reserve": "DAI", "amount": "-1", "user": "2", - "onBehalfOf": "2" + "onBehalfOf": "2", + "borrowRateMode": "stable" }, "expected": "success" }, @@ -562,7 +355,9 @@ "reserve": "DAI", "amount": "-1", "user": "3", - "onBehalfOf": "3" + "onBehalfOf": "3", + "borrowRateMode": "stable" + }, "expected": "success" }, @@ -590,7 +385,8 @@ "reserve": "DAI", "amount": "-1", "user": "4", - "onBehalfOf": "4" + "onBehalfOf": "4", + "borrowRateMode": "stable" }, "expected": "success" }, @@ -690,7 +486,8 @@ "reserve": "DAI", "amount": "-1", "user": "1", - "onBehalfOf": "1" + "onBehalfOf": "1", + "borrowRateMode": "stable" }, "expected": "success" }, diff --git a/test/helpers/scenarios/borrow-repay-variable.json b/test/helpers/scenarios/borrow-repay-variable.json index d764ae47..fb677362 100644 --- a/test/helpers/scenarios/borrow-repay-variable.json +++ b/test/helpers/scenarios/borrow-repay-variable.json @@ -85,22 +85,6 @@ } ] }, - { - "description": "User 1 tries to borrow a very small amount of DAI, which would result in 0 fee accrued (revert expected)", - "actions": [ - { - "name": "borrow", - "args": { - "reserve": "DAI", - "amount": "0.000000000000000001", - "borrowRateMode": "variable", - "user": "1" - }, - "expected": "revert", - "revertMessage": "The amount to borrow is too small" - } - ] - }, { "description": "User 1 tries to borrow the rest of the DAI liquidity (revert expected)", "actions": [ @@ -134,7 +118,7 @@ ] }, { - "description": "User 1 repays a small amount of DAI, enough to cover the origination fee + a small part of the interest", + "description": "User 1 repays a small amount of DAI, enough to cover a small part of the interest", "actions": [ { "name": "approve", @@ -150,7 +134,8 @@ "reserve": "DAI", "amount": "1.25", "user": "1", - "onBehalfOf": "1" + "onBehalfOf": "1", + "borrowRateMode": "variable" }, "expected": "success" } @@ -175,7 +160,8 @@ "reserve": "DAI", "amount": "-1", "user": "1", - "onBehalfOf": "1" + "onBehalfOf": "1", + "borrowRateMode": "variable" }, "expected": "success" } @@ -520,8 +506,9 @@ "reserve": "USDC", "amount": "-1", "user": "1", - "onBehalfOf": "1" - }, + "onBehalfOf": "1", + "borrowRateMode": "variable" + }, "expected": "success" } ] @@ -718,216 +705,6 @@ } ] }, - { - "description": "User 4 deposits 1000 DAI, user 5 deposits 0.92267103215 ETH, tries to borrow 187.5 DAI which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "mint", - "args": { - "reserve": "DAI", - "amount": "1000", - "user": "4" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "DAI", - "user": "4" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "DAI", - "amount": "1000", - "user": "4" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "0.92267103215", - "user": "5", - "sendValue": "0.92267103215" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "DAI", - "amount": "187.5", - "borrowRateMode": "variable", - "user": "5" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "5" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "DAI", - "amount": "-1", - "user": "4" - }, - "expected": "success" - } - ] - }, - { - "description": "User 4 deposits 1000 USDC, user 5 deposits 0.91928534104 ETH, tries to borrow 187.5 USDC which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "mint", - "args": { - "reserve": "USDC", - "amount": "1000", - "user": "4" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "USDC", - "user": "4" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "USDC", - "amount": "1000", - "user": "4" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "0.91928534104", - "user": "5", - "sendValue": "0.91928534104" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "USDC", - "amount": "187.5", - "borrowRateMode": "variable", - "user": "5" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "5" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "USDC", - "amount": "-1", - "user": "4" - }, - "expected": "success" - } - ] - }, - { - "description": "User 4 deposits 1.5 ETH, user 5 deposits 100 DAI, tries to borrow 0.276801309645 ETH which is the maximum amount he can borrow, if fees were not considered. (revert expected)", - "actions": [ - { - "name": "deposit", - "args": { - "reserve": "ETH", - "amount": "1.5", - "user": "4", - "sendValue": "1.5" - }, - "expected": "success" - }, - { - "name": "mint", - "args": { - "reserve": "DAI", - "amount" : "100", - "user": "5" - }, - "expected": "success" - }, - { - "name": "approve", - "args": { - "reserve": "DAI", - "user": "5" - }, - "expected": "success" - }, - { - "name": "deposit", - "args": { - "reserve": "DAI", - "amount": "100", - "user": "5" - }, - "expected": "success" - }, - { - "name": "borrow", - "args": { - "reserve": "ETH", - "amount": "0.276801309645", - "borrowRateMode": "variable", - "user": "5" - }, - "expected": "revert", - "revertMessage": "There is not enough collateral to cover a new borrow" - }, - { - "name": "redeem", - "args": { - "reserve": "DAI", - "amount": "-1", - "user": "5" - }, - "expected": "success" - }, - { - "name": "redeem", - "args": { - "reserve": "ETH", - "amount": "-1", - "user": "4" - }, - "expected": "success" - } - ] - }, { "description": "User 0 deposits 1000 DAI, user 6 deposits 2 ETH and borrow 100 DAI at variable rate first, then 100 DAI at stable rate, repays everything. User 0 redeems", "actions": [ @@ -1013,7 +790,19 @@ "reserve": "DAI", "amount": "-1", "user": "6", - "onBehalfOf": "6" + "onBehalfOf": "6", + "borrowRateMode": "stable" + }, + "expected": "success" + }, + { + "name": "repay", + "args": { + "reserve": "DAI", + "amount": "-1", + "user": "6", + "onBehalfOf": "6", + "borrowRateMode": "variable" }, "expected": "success" }, diff --git a/test/helpers/utils/calculations.ts b/test/helpers/utils/calculations.ts index 53ff7e92..400e8e64 100644 --- a/test/helpers/utils/calculations.ts +++ b/test/helpers/utils/calculations.ts @@ -32,7 +32,6 @@ export const calcExpectedUserDataAfterDeposit = ( const expectedUserData = {}; expectedUserData.currentStableBorrowBalance = expectedUserData.principalStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -48,6 +47,7 @@ export const calcExpectedUserDataAfterDeposit = ( userDataBeforeAction.principalVariableBorrowBalance; expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; + expectedUserData.stableRateLastUpdated = userDataBeforeAction.stableRateLastUpdated; expectedUserData.liquidityRate = reserveDataAfterAction.liquidityRate; @@ -95,7 +95,6 @@ export const calcExpectedUserDataAfterDeposit = ( ); expectedUserData.currentStableBorrowBalance = expectedUserData.principalStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -143,7 +142,6 @@ export const calcExpectedUserDataAfterRedeem = ( ); expectedUserData.currentStableBorrowBalance = expectedUserData.principalStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -159,6 +157,7 @@ export const calcExpectedUserDataAfterRedeem = ( userDataBeforeAction.principalVariableBorrowBalance; expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; + expectedUserData.stableRateLastUpdated = userDataBeforeAction.stableRateLastUpdated; expectedUserData.liquidityRate = reserveDataAfterAction.liquidityRate; @@ -332,7 +331,6 @@ export const calcExpectedReserveDataAfterBorrow = ( const amountBorrowedBN = new BigNumber(amountBorrowed); const userStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -347,6 +345,7 @@ export const calcExpectedReserveDataAfterBorrow = ( const debtAccrued = userStableBorrowBalance.minus( userDataBeforeAction.principalStableBorrowBalance ); + expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus(debtAccrued); expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable @@ -354,9 +353,9 @@ export const calcExpectedReserveDataAfterBorrow = ( .plus(debtAccrued); expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( - expectedReserveData.averageStableBorrowRate, - expectedReserveData.totalBorrowsStable, - userDataBeforeAction.principalStableBorrowBalance.plus(amountBorrowedBN), + reserveDataBeforeAction.averageStableBorrowRate, + reserveDataBeforeAction.totalBorrowsStable, + userStableBorrowBalance.plus(amountBorrowedBN), reserveDataBeforeAction.stableBorrowRate ); expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; @@ -425,7 +424,6 @@ export const calcExpectedReserveDataAfterRepay = ( let amountRepaidBN = new BigNumber(amountRepaid); const userStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -450,6 +448,15 @@ export const calcExpectedReserveDataAfterRepay = ( userDataBeforeAction.principalStableBorrowBalance ); + console.log( + 'Debt accrued: ', + debtAccrued.toFixed(), + ' Total liquidity:', + reserveDataBeforeAction.totalLiquidity.toFixed(), + ' total borrow stable: ', + reserveDataBeforeAction.totalBorrowsStable.toFixed() + ); + expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus(debtAccrued); expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable @@ -457,9 +464,9 @@ export const calcExpectedReserveDataAfterRepay = ( .plus(debtAccrued); expectedReserveData.averageStableBorrowRate = calcExpectedAverageStableBorrowRate( - expectedReserveData.averageStableBorrowRate, - expectedReserveData.totalBorrowsStable, - userDataBeforeAction.principalStableBorrowBalance.minus(amountRepaidBN), + reserveDataBeforeAction.averageStableBorrowRate, + reserveDataBeforeAction.totalBorrowsStable.plus(debtAccrued), + amountRepaidBN.negated(), userDataBeforeAction.stableBorrowRate ); expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable; @@ -470,9 +477,10 @@ export const calcExpectedReserveDataAfterRepay = ( expectedReserveData.totalLiquidity = reserveDataBeforeAction.totalLiquidity.plus(debtAccrued); - expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable.minus( - amountRepaidBN - ); + expectedReserveData.totalBorrowsVariable = reserveDataBeforeAction.totalBorrowsVariable + .plus(debtAccrued) + .minus(amountRepaidBN); + expectedReserveData.totalBorrowsStable = reserveDataBeforeAction.totalBorrowsStable; expectedReserveData.averageStableBorrowRate = reserveDataBeforeAction.averageStableBorrowRate; } @@ -531,73 +539,74 @@ export const calcExpectedUserDataAfterBorrow = ( ): UserReserveData => { const expectedUserData = {}; - const stableBorrowBalanceBeforeTx = calcExpectedStableDebtTokenBalance( + const currentStableBorrowBalance = calcExpectedStableDebtTokenBalance( + userDataBeforeAction, + txTimestamp + ); + + const currentVariableBorrowBalance = calcExpectedVariableDebtTokenBalance( reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); - const variableBorrowBalanceBeforeTx = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, - userDataBeforeAction, - txTimestamp - ); + if (interestRateMode == RateMode.Stable) { + expectedUserData.principalStableBorrowBalance = currentStableBorrowBalance.plus( + amountBorrowed + ); + expectedUserData.principalVariableBorrowBalance = userDataBeforeAction.principalVariableBorrowBalance; - if (currentTimestamp.gt(txTimestamp)) { - if (interestRateMode == RateMode.Stable) { - expectedUserData.principalStableBorrowBalance = stableBorrowBalanceBeforeTx.plus( - amountBorrowed - ); + expectedUserData.stableBorrowRate = reserveDataBeforeAction.stableBorrowRate; - //calculate also the accrued balance after the time passed - expectedUserData.currentStableBorrowBalance = calcExpectedVariableDebtTokenBalance( - expectedDataAfterAction, - { - ...userDataBeforeAction, - currentStableBorrowBalance: expectedUserData.principalStableBorrowBalance, - principalStableBorrowBalance: expectedUserData.principalStableBorrowBalance, - variableBorrowIndex: expectedDataAfterAction.variableBorrowIndex, - lastUpdateTimestamp: txTimestamp, - }, - currentTimestamp - ); + expectedUserData.stableRateLastUpdated = txTimestamp; - expectedUserData.principalVariableBorrowBalance = - userDataBeforeAction.principalVariableBorrowBalance; - - expectedUserData.currentVariableBorrowBalance = variableBorrowBalanceBeforeTx; - expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; - } else { - expectedUserData.principalStableBorrowBalance = - userDataBeforeAction.principalStableBorrowBalance; - - expectedUserData.currentStableBorrowBalance = stableBorrowBalanceBeforeTx; - expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; - - - - - expectedUserData.principalVariableBorrowBalance = variableBorrowBalanceBeforeTx.plus( - amountBorrowed - ); - expectedUserData.variableBorrowIndex = expectedDataAfterAction.variableBorrowIndex; - - console.log("Variable borrow index is ", expectedUserData.variableBorrowIndex); - - //calculate also the accrued balance after the time passed - expectedUserData.currentVariableBorrowBalance = calcExpectedVariableDebtTokenBalance( - expectedDataAfterAction, - { - ...userDataBeforeAction, - currentVariableBorrowBalance: expectedUserData.principalVariableBorrowBalance, - principalVariableBorrowBalance: expectedUserData.principalVariableBorrowBalance, - variableBorrowIndex: expectedDataAfterAction.variableBorrowIndex, - lastUpdateTimestamp: txTimestamp, - }, - currentTimestamp - ); - } } else { + expectedUserData.principalVariableBorrowBalance = currentVariableBorrowBalance.plus( + amountBorrowed + ); + expectedUserData.principalStableBorrowBalance = userDataBeforeAction.principalStableBorrowBalance; + + expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; + + expectedUserData.stableRateLastUpdated = userDataBeforeAction.stableRateLastUpdated; + } + + //calculate also the accrued balance after the time passed + expectedUserData.currentStableBorrowBalance = calcExpectedStableDebtTokenBalance( + { + ...userDataBeforeAction, + currentStableBorrowBalance: expectedUserData.principalStableBorrowBalance, + principalStableBorrowBalance: expectedUserData.principalStableBorrowBalance, + stableBorrowRate: + interestRateMode == RateMode.Stable + ? reserveDataBeforeAction.stableBorrowRate + : userDataBeforeAction.stableBorrowRate, + stableRateLastUpdated: expectedUserData.stableRateLastUpdated, + }, + currentTimestamp + ); + + expectedUserData.currentVariableBorrowBalance = calcExpectedVariableDebtTokenBalance( + expectedDataAfterAction, + { + ...userDataBeforeAction, + currentVariableBorrowBalance: expectedUserData.principalVariableBorrowBalance, + principalVariableBorrowBalance: expectedUserData.principalVariableBorrowBalance, + variableBorrowIndex: + interestRateMode == RateMode.Variable + ? expectedDataAfterAction.variableBorrowIndex + : userDataBeforeAction.variableBorrowIndex + }, + currentTimestamp + ); + + if (expectedUserData.principalVariableBorrowBalance.eq(0)) { + expectedUserData.variableBorrowIndex = new BigNumber(0); + } else { + expectedUserData.variableBorrowIndex = + interestRateMode == RateMode.Variable + ? expectedDataAfterAction.variableBorrowIndex + : userDataBeforeAction.variableBorrowIndex; } expectedUserData.liquidityRate = expectedDataAfterAction.liquidityRate; @@ -615,6 +624,7 @@ export const calcExpectedUserDataAfterBorrow = ( expectedUserData.redirectionAddressRedirectedBalance = userDataBeforeAction.redirectionAddressRedirectedBalance; expectedUserData.currentATokenUserIndex = userDataBeforeAction.currentATokenUserIndex; + if (reserveDataBeforeAction.address === configuration.ethereumAddress) { expectedUserData.walletBalance = userDataBeforeAction.walletBalance .minus(txCost) @@ -647,39 +657,48 @@ export const calcExpectedUserDataAfterRepay = ( ); const stableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, currentTimestamp ); if (new BigNumber(totalRepaid).abs().eq(MAX_UINT_AMOUNT)) { - if (rateMode == RateMode.Stable) { - totalRepaid = stableBorrowBalance.toFixed(0); - expectedUserData.principalVariableBorrowBalance = - userDataBeforeAction.principalVariableBorrowBalance; - expectedUserData.currentVariableBorrowBalance = variableBorrowBalance; - expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; + totalRepaid = + rateMode == RateMode.Stable + ? stableBorrowBalance.toFixed(0) + : variableBorrowBalance.toFixed(); + } - expectedUserData.currentStableBorrowBalance = stableBorrowBalance.minus(totalRepaid); - if (expectedUserData.currentStableBorrowBalance.eq('0')) { - //user repaid everything - expectedUserData.stableBorrowRate = new BigNumber('0'); - } + if (rateMode == RateMode.Stable) { + + expectedUserData.principalVariableBorrowBalance = + userDataBeforeAction.principalVariableBorrowBalance; + expectedUserData.currentVariableBorrowBalance = variableBorrowBalance; + expectedUserData.variableBorrowIndex = userDataBeforeAction.variableBorrowIndex; + + expectedUserData.currentStableBorrowBalance = expectedUserData.principalStableBorrowBalance = stableBorrowBalance.minus( + totalRepaid + ); + + if (expectedUserData.currentStableBorrowBalance.eq('0')) { + //user repaid everything + expectedUserData.stableBorrowRate = expectedUserData.stableRateLastUpdated = new BigNumber('0'); + } + } else { + expectedUserData.currentStableBorrowBalance = stableBorrowBalance; + expectedUserData.principalStableBorrowBalance = + userDataBeforeAction.principalStableBorrowBalance; + expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; + expectedUserData.stableRateLastUpdated = userDataBeforeAction.stableRateLastUpdated; + + expectedUserData.currentVariableBorrowBalance = expectedUserData.principalVariableBorrowBalance = variableBorrowBalance.minus( + totalRepaid + ); + + if (expectedUserData.currentVariableBorrowBalance.eq('0')) { + //user repaid everything + expectedUserData.variableBorrowIndex = new BigNumber('0'); } else { - totalRepaid = variableBorrowBalance.toFixed(); - - expectedUserData.currentStableBorrowBalance = stableBorrowBalance; - expectedUserData.principalStableBorrowBalance = - userDataBeforeAction.principalStableBorrowBalance; - expectedUserData.stableBorrowRate = userDataBeforeAction.stableBorrowRate; - - expectedUserData.currentVariableBorrowBalance = variableBorrowBalance.minus(totalRepaid); expectedUserData.variableBorrowIndex = expectedDataAfterAction.variableBorrowIndex; - - if (expectedUserData.currentVariableBorrowBalance.eq('0')) { - //user repaid everything - expectedUserData.variableBorrowIndex = new BigNumber('0'); - } } } @@ -697,12 +716,7 @@ export const calcExpectedUserDataAfterRepay = ( expectedUserData.interestRedirectionAddress = userDataBeforeAction.interestRedirectionAddress; expectedUserData.redirectionAddressRedirectedBalance = userDataBeforeAction.redirectionAddressRedirectedBalance; - expectedUserData.currentATokenUserIndex = calcExpectedATokenUserIndex( - reserveDataBeforeAction, - expectedUserData.currentATokenBalance, - expectedUserData.redirectedBalance, - txTimestamp - ); + expectedUserData.currentATokenUserIndex = userDataBeforeAction.currentATokenUserIndex; if (user === onBehalfOf) { //if user repaid for himself, update the wallet balances @@ -756,7 +770,6 @@ export const calcExpectedReserveDataAfterSwapRateMode = ( ); const stableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -849,7 +862,6 @@ export const calcExpectedUserDataAfterSwapRateMode = ( ); const stableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -917,7 +929,6 @@ export const calcExpectedReserveDataAfterStableRateRebalance = ( expectedReserveData.address = reserveDataBeforeAction.address; const stableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -978,13 +989,12 @@ export const calcExpectedUserDataAfterStableRateRebalance = ( ): UserReserveData => { const expectedUserData = {...userDataBeforeAction}; - expectedUserData.principalVariableBorrowBalance = calcExpectedStableDebtTokenBalance( + expectedUserData.principalVariableBorrowBalance = calcExpectedVariableDebtTokenBalance( reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); expectedUserData.currentStableBorrowBalance = expectedUserData.principalStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, userDataBeforeAction, txTimestamp ); @@ -1041,7 +1051,6 @@ export const calcExpectedUsersDataAfterRedirectInterest = ( const expectedToData = {...toDataBeforeAction}; expectedFromData.currentStableBorrowBalance = calcExpectedStableDebtTokenBalance( - reserveDataBeforeAction, fromDataBeforeAction, txTimestamp ); @@ -1186,6 +1195,7 @@ const calcExpectedAverageStableBorrowRate = ( amountChanged: string | BigNumber, rate: BigNumber ) => { + console.log(avgStableRateBefore, totalBorrowsStableBefore); const weightedTotalBorrows = avgStableRateBefore.multipliedBy(totalBorrowsStableBefore); const weightedAmountBorrowed = rate.multipliedBy(amountChanged); const totalBorrowedStable = totalBorrowsStableBefore.plus(new BigNumber(amountChanged)); @@ -1214,22 +1224,14 @@ const calcExpectedVariableDebtTokenBalance = ( userDataBeforeAction: UserReserveData, currentTimestamp: BigNumber ) => { - console.log('Calculate normalized debt'); - const debt = calcExpectedReserveNormalizedDebt(reserveDataBeforeAction, currentTimestamp); - console.log('Normalized debt is, ', debt.toFixed()); - const {principalVariableBorrowBalance, variableBorrowIndex} = userDataBeforeAction; - console.log('Data fetched'); - if (variableBorrowIndex.eq(0)) { return principalVariableBorrowBalance; } - console.log('Principal variable balance: ', principalVariableBorrowBalance); - return principalVariableBorrowBalance .wadToRay() .rayMul(debt) @@ -1238,20 +1240,23 @@ const calcExpectedVariableDebtTokenBalance = ( }; const calcExpectedStableDebtTokenBalance = ( - reserveDataBeforeAction: ReserveData, userDataBeforeAction: UserReserveData, currentTimestamp: BigNumber ) => { - const {principalStableBorrowBalance, stableBorrowRate} = userDataBeforeAction; + const { + principalStableBorrowBalance, + stableBorrowRate, + stableRateLastUpdated, + } = userDataBeforeAction; - if (stableBorrowRate.eq(0)) { + if (stableBorrowRate.eq(0) || currentTimestamp.eq(stableRateLastUpdated) || stableRateLastUpdated.eq(0)) { return principalStableBorrowBalance; } const cumulatedInterest = calcCompoundedInterest( stableBorrowRate, currentTimestamp, - reserveDataBeforeAction.lastUpdateTimestamp + stableRateLastUpdated ); return principalStableBorrowBalance.wadToRay().rayMul(cumulatedInterest).rayToWad(); @@ -1411,13 +1416,6 @@ const calcExpectedReserveNormalizedDebt = ( return variableBorrowIndex; } - console.log( - 'Current timestamp is: ', - currentTimestamp, - 'Last updated timestamp is: ', - lastUpdateTimestamp - ); - const cumulatedInterest = calcCompoundedInterest( variableBorrowRate, currentTimestamp, @@ -1459,10 +1457,6 @@ const calcExpectedVariableBorrowIndex = (reserveData: ReserveData, timestamp: Bi return cumulatedInterest.rayMul(reserveData.variableBorrowIndex); }; -const calcExpectedOriginationFee = (amount: string): BigNumber => { - return new BigNumber(amount).multipliedBy(0.0025).decimalPlaces(0, BigNumber.ROUND_DOWN); -}; - export const calculateHealthFactorFromBalances = ( collateralBalanceETH: BigNumber, borrowBalanceETH: BigNumber, diff --git a/test/helpers/utils/helpers.ts b/test/helpers/utils/helpers.ts index 21a0d2e1..ad06e91a 100644 --- a/test/helpers/utils/helpers.ts +++ b/test/helpers/utils/helpers.ts @@ -101,6 +101,7 @@ export const getUserData = async ( stableBorrowRate: new BigNumber(userData.stableBorrowRate.toString()), liquidityRate: new BigNumber(userData.liquidityRate.toString()), usageAsCollateralEnabled: userData.usageAsCollateralEnabled, + stableRateLastUpdated: new BigNumber(userData.stableRateLastUpdated.toString()), walletBalance, }; }; diff --git a/test/helpers/utils/interfaces/index.ts b/test/helpers/utils/interfaces/index.ts index a7fdffd0..6ade6f9c 100644 --- a/test/helpers/utils/interfaces/index.ts +++ b/test/helpers/utils/interfaces/index.ts @@ -14,6 +14,7 @@ export interface UserReserveData { variableBorrowIndex: BigNumber liquidityRate: BigNumber stableBorrowRate: BigNumber + stableRateLastUpdated: BigNumber usageAsCollateralEnabled: Boolean walletBalance: BigNumber [key: string]: BigNumber | string | Boolean diff --git a/types/ATokenFactory.ts b/types/ATokenFactory.ts index 71caf9fb..198d6465 100644 --- a/types/ATokenFactory.ts +++ b/types/ATokenFactory.ts @@ -841,4 +841,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a264697066735822122019873305020cbc01aa77bbb897e23d81612ce64a19cddc5032e3ae3b0086ac6564736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220201915aed978df22aae3b77bb7cc0edce33b16d5661a00939351bdbf8dd2683564736f6c63430006080033"; diff --git a/types/AaveProtocolTestHelpersFactory.ts b/types/AaveProtocolTestHelpersFactory.ts index 70fc4a73..687f04c3 100644 --- a/types/AaveProtocolTestHelpersFactory.ts +++ b/types/AaveProtocolTestHelpersFactory.ts @@ -123,4 +123,4 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b50604051610a4a380380610a4a83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6109b3610097600039806083528060ab528061035f52506109b36000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630542975c14610046578063b316ff8914610064578063f561ae4114610079575b600080fd5b61004e610081565b60405161005b919061085f565b60405180910390f35b61006c6100a5565b60405161005b9190610873565b61006c610359565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010257600080fd5b505afa158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017757600080fd5b505afa15801561018b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b39190810190610672565b90506060815167ffffffffffffffff811180156101cf57600080fd5b5060405190808252806020026020018201604052801561020957816020015b6101f661061b565b8152602001906001900390816101ee5790505b50905060005b825181101561035157604051806040016040528084838151811061022f57fe5b60200260200101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316146102f05784838151811061026f57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102eb919081019061071d565b61030d565b6040518060400160405280600381526020016208aa8960eb1b8152505b815260200184838151811061031e57fe5b60200260200101516001600160a01b031681525082828151811061033e57fe5b602090810291909101015260010161020f565b509250505090565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ee9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561042b57600080fd5b505afa15801561043f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104679190810190610672565b90506060815167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104bd57816020015b6104aa61061b565b8152602001906001900390816104a25790505b50905060005b8251811015610351576000846001600160a01b0316633e1501418584815181106104e957fe5b60200260200101516040518263ffffffff1660e01b815260040161050d919061085f565b6101406040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906107a9565b50505050509450505050506040518060400160405280826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105ad57600080fd5b505afa1580156105c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e9919081019061071d565b8152602001826001600160a01b031681525083838151811061060757fe5b6020908102919091010152506001016104c3565b60408051808201909152606081526000602082015290565b80516001600160a01b038116811461064a57600080fd5b92915050565b600060208284031215610661578081fd5b61066b8383610633565b9392505050565b60006020808385031215610684578182fd5b825167ffffffffffffffff8082111561069b578384fd5b81850186601f8201126106ac578485fd5b80519250818311156106bc578485fd5b83830291506106cc84830161090c565b8381528481019082860184840187018a10156106e6578788fd5b8794505b85851015610710576106fc8a82610633565b8352600194909401939186019186016106ea565b5098975050505050505050565b60006020828403121561072e578081fd5b815167ffffffffffffffff80821115610745578283fd5b81840185601f820112610756578384fd5b8051925081831115610766578384fd5b610779601f8401601f191660200161090c565b915082825285602084830101111561078f578384fd5b6107a083602084016020840161093c565b50949350505050565b6000806000806000806000806000806101408b8d0312156107c8578586fd5b8a51995060208b0151985060408b015197506107e78c60608d01610633565b96506107f68c60808d01610633565b955060a08b01516108068161096c565b60c08c01519095506108178161096c565b60e08c01519094506108288161096c565b6101008c015190935061083a8161096c565b6101208c015190925061084c8161096c565b809150509295989b9194979a5092959850565b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156108fe57888303603f190185528151805187855280516108bd818a8801610933565b6108ca82828d860161093c565b928a01516001600160a01b0316958a01959095525094870194601f93909301601f1916929092019190860190600101610897565b509098975050505050505050565b60405181810167ffffffffffffffff8111828210171561092b57600080fd5b604052919050565b90815260200190565b60005b8381101561095757818101518382015260200161093f565b83811115610966576000848401525b50505050565b801515811461097a57600080fd5b5056fea26469706673582212208890c0585884c02ec7a65336c8d44641e2cdee255a694e2599af11771ae7494b64736f6c63430006080033"; + "0x60a060405234801561001057600080fd5b50604051610a4d380380610a4d83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6109b6610097600039806083528060ab528061035f52506109b66000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630542975c14610046578063b316ff8914610064578063f561ae4114610079575b600080fd5b61004e610081565b60405161005b919061086c565b60405180910390f35b61006c6100a5565b60405161005b9190610880565b61006c610359565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010257600080fd5b505afa158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017757600080fd5b505afa15801561018b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b39190810190610672565b90506060815167ffffffffffffffff811180156101cf57600080fd5b5060405190808252806020026020018201604052801561020957816020015b6101f661061b565b8152602001906001900390816101ee5790505b50905060005b825181101561035157604051806040016040528084838151811061022f57fe5b60200260200101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316146102f05784838151811061026f57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102eb919081019061071d565b61030d565b6040518060400160405280600381526020016208aa8960eb1b8152505b815260200184838151811061031e57fe5b60200260200101516001600160a01b031681525082828151811061033e57fe5b602090810291909101015260010161020f565b509250505090565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ee9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561042b57600080fd5b505afa15801561043f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104679190810190610672565b90506060815167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104bd57816020015b6104aa61061b565b8152602001906001900390816104a25790505b50905060005b8251811015610351576000846001600160a01b0316633e1501418584815181106104e957fe5b60200260200101516040518263ffffffff1660e01b815260040161050d919061086c565b6101406040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906107a9565b50505050509450505050506040518060400160405280826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105ad57600080fd5b505afa1580156105c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e9919081019061071d565b8152602001826001600160a01b031681525083838151811061060757fe5b6020908102919091010152506001016104c3565b60408051808201909152606081526000602082015290565b80516001600160a01b038116811461064a57600080fd5b92915050565b600060208284031215610661578081fd5b61066b8383610633565b9392505050565b60006020808385031215610684578182fd5b825167ffffffffffffffff8082111561069b578384fd5b81850186601f8201126106ac578485fd5b80519250818311156106bc578485fd5b83830291506106cc848301610918565b8381528481019082860184840187018a10156106e6578788fd5b8794505b85851015610710576106fc8a82610633565b8352600194909401939186019186016106ea565b5098975050505050505050565b60006020828403121561072e578081fd5b815167ffffffffffffffff80821115610745578283fd5b81840185601f820112610756578384fd5b8051925081831115610766578384fd5b610779601f8401601f1916602001610918565b915082825285602084830101111561078f578384fd5b6107a083602084016020840161093f565b50949350505050565b6000806000806000806000806000806101408b8d0312156107c8578586fd5b8a51995060208b0151985060408b015197506107e78c60608d01610633565b96506107f68c60808d01610633565b955060a08b01516108068161096f565b60c08c01519095506108178161096f565b60e08c01519094506108288161096f565b6101008c015190935061083a8161096f565b6101208c015190925061084c8161096f565b809150509295989b9194979a5092959850565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561090a57603f19898403018552815180518785528051808987015260606108d4828289018d860161093f565b8a84015192506108e68b88018461085f565b978a0197601f91909101601f191695909501909401935050908601906001016108a4565b509098975050505050505050565b60405181810167ffffffffffffffff8111828210171561093757600080fd5b604052919050565b60005b8381101561095a578181015183820152602001610942565b83811115610969576000848401525b50505050565b801515811461097d57600080fd5b5056fea2646970667358221220aff59e1edfd9ea45f770bdb4878666710db66844a06f4e0c34fd3a0aafb75ffc64736f6c63430006080033"; diff --git a/types/GenericLogicFactory.ts b/types/GenericLogicFactory.ts index 19618c94..b93dc05e 100644 --- a/types/GenericLogicFactory.ts +++ b/types/GenericLogicFactory.ts @@ -89,4 +89,4 @@ const _abi = [ ]; const _bytecode = - "0x610fc8610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634d9afd5e1461005b578063901d711414610114578063ab8bb39314610211578063c3525c2814610261575b600080fd5b610100600480360360e081101561007157600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b9193509150356001600160a01b0316610269565b604080519115158252519081900360200190f35b6101de600480360360a081101561012a57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b031691506104ca9050565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61024f600480360360a081101561022757600080fd5b50803590602081013590604081013590606081013590608001356001600160a01b0316610ac6565b60408051918252519081900360200190f35b61024f610bb1565b6000610273610e74565b6001600160a01b038a166000908152602088905260409020600c0154600160d01b900460ff1615806102c957506001600160a01b03808a16600090815260208881526040808320938e168352929052205460ff16155b156102d85760019150506104be565b6103198988888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92506104ca915050565b5060808601525060608401526040830181905260208301919091526103425760019150506104be565b61040e8760008c6001600160a01b03166001600160a01b0316815260200190815260200160002060080154600a0a6104028a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d60208110156103f457600080fd5b50519063ffffffff610bbd16565b9063ffffffff610c1f16565b60c0820181905260208201516104299163ffffffff610c6116565b60e0820181905261043e5760009150506104be565b6104898160e001516104026104648460a001518560c00151610bbd90919063ffffffff16565b6080850151602086015161047d9163ffffffff610bbd16565b9063ffffffff610c6116565b610100820181905260e0820151604083015160608401516000936104af93929190610ca3565b670de0b6b3a764000010925050505b98975050505050505050565b6000806000806000806104db610ed0565b60006101008201525b885181610100015110156109fe57888161010001518151811061050357fe5b60200260200101518161020001906001600160a01b031690816001600160a01b03168152505060008b60008361020001516001600160a01b03166001600160a01b0316815260200190815260200160002090508060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105c357600080fd5b505afa1580156105d7573d6000803e3d6000fd5b505050506040513d60208110156105ed57600080fd5b810190808051906020019092919050505082604001818152505080600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067457600080fd5b505afa158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b810190808051906020019092919050505082606001818152505061076581600b0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d602081101561075257600080fd5b505160608401519063ffffffff610cf216565b6060830152604082015115801561077e57506060820151155b1561078957506109ed565b8060080154600a0a826020018181525050886001600160a01b031663b3596f078b846101000151815181106107ba57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50518252604082015115610965576000610865836020015161040285604001518660000151610bbd90919063ffffffff16565b600c830154909150600160d01b900460ff1680156108dd57508b60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008c856101000151815181106108b557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15610963576101408301516108f8908263ffffffff610cf216565b610140840152600582015461092a9061091890839063ffffffff610bbd16565b6101a08501519063ffffffff610cf216565b6101a0840152600682015461095c9061094a90839063ffffffff610bbd16565b6101c08501519063ffffffff610cf216565b6101c08401525b505b6060820151156109eb576109a7610995836020015161040285606001518660000151610bbd90919063ffffffff16565b6101608401519063ffffffff610cf216565b6101608301526020820151825160e08401516109e4926109d29290916104029163ffffffff610bbd16565b6101808401519063ffffffff610cf216565b6101808301525b505b6101008101805160010190526104e4565b600081610140015111610a12576000610a2d565b6101408101516101a0820151610a2d9163ffffffff610c1f16565b6101a0820152610140810151610a44576000610a5f565b6101408101516101c0820151610a5f9163ffffffff610c1f16565b6101c08201819052610140820151610160830151610180840151610a8293610ca3565b61012082018190526101408201516101608301516101808401516101a08501516101c090950151929a50909850965091945090925090509550955095509550955095565b600080610ade6064610402898763ffffffff610bbd16565b905085811015610af2576000915050610ba8565b610b12610b05878763ffffffff610cf216565b829063ffffffff610c6116565b60408051630e563a7d60e41b81523360048201526024810183905290519192506000916001600160a01b0386169163e563a7d0916044808301926020929190829003018186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d6020811015610b8f57600080fd5b50519050610ba3828263ffffffff610c6116565b925050505b95945050505050565b670de0b6b3a764000081565b600082610bcc57506000610c19565b82820282848281610bd957fe5b0414610c165760405162461bcd60e51b8152600401808060200182810382526021815260200180610f726021913960400191505060405180910390fd5b90505b92915050565b6000610c1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d4c565b6000610c1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dee565b600083610cb35750600019610cea565b610ce7610cc6858563ffffffff610cf216565b610cdb6064610402898763ffffffff610bbd16565b9063ffffffff610e4816565b90505b949350505050565b600082820183811015610c16576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183610dd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d9d578181015183820152602001610d85565b50505050905090810190601f168015610dca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610de457fe5b0495945050505050565b60008184841115610e405760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d9d578181015183820152602001610d85565b505050900390565b600060028204610cea83610402610e6787670de0b6b3a7640000610bbd565b849063ffffffff610cf216565b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60405180610260016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600015158152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220e105d7aa0805a19fc16ee1209199001591380dfc79ed4361e75776f15ce7bbdd64736f6c63430006080033"; + "0x610fc8610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634d9afd5e1461005b578063901d711414610114578063ab8bb39314610211578063c3525c2814610261575b600080fd5b610100600480360360e081101561007157600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b9193509150356001600160a01b0316610269565b604080519115158252519081900360200190f35b6101de600480360360a081101561012a57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b031691506104ca9050565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61024f600480360360a081101561022757600080fd5b50803590602081013590604081013590606081013590608001356001600160a01b0316610ac6565b60408051918252519081900360200190f35b61024f610bb1565b6000610273610e74565b6001600160a01b038a166000908152602088905260409020600c0154600160d01b900460ff1615806102c957506001600160a01b03808a16600090815260208881526040808320938e168352929052205460ff16155b156102d85760019150506104be565b6103198988888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92506104ca915050565b5060808601525060608401526040830181905260208301919091526103425760019150506104be565b61040e8760008c6001600160a01b03166001600160a01b0316815260200190815260200160002060080154600a0a6104028a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d60208110156103f457600080fd5b50519063ffffffff610bbd16565b9063ffffffff610c1f16565b60c0820181905260208201516104299163ffffffff610c6116565b60e0820181905261043e5760009150506104be565b6104898160e001516104026104648460a001518560c00151610bbd90919063ffffffff16565b6080850151602086015161047d9163ffffffff610bbd16565b9063ffffffff610c6116565b610100820181905260e0820151604083015160608401516000936104af93929190610ca3565b670de0b6b3a764000010925050505b98975050505050505050565b6000806000806000806104db610ed0565b60006101008201525b885181610100015110156109fe57888161010001518151811061050357fe5b60200260200101518161020001906001600160a01b031690816001600160a01b03168152505060008b60008361020001516001600160a01b03166001600160a01b0316815260200190815260200160002090508060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105c357600080fd5b505afa1580156105d7573d6000803e3d6000fd5b505050506040513d60208110156105ed57600080fd5b810190808051906020019092919050505082604001818152505080600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067457600080fd5b505afa158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b810190808051906020019092919050505082606001818152505061076581600b0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d602081101561075257600080fd5b505160608401519063ffffffff610cf216565b6060830152604082015115801561077e57506060820151155b1561078957506109ed565b8060080154600a0a826020018181525050886001600160a01b031663b3596f078b846101000151815181106107ba57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50518252604082015115610965576000610865836020015161040285604001518660000151610bbd90919063ffffffff16565b600c830154909150600160d01b900460ff1680156108dd57508b60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008c856101000151815181106108b557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15610963576101408301516108f8908263ffffffff610cf216565b610140840152600582015461092a9061091890839063ffffffff610bbd16565b6101a08501519063ffffffff610cf216565b6101a0840152600682015461095c9061094a90839063ffffffff610bbd16565b6101c08501519063ffffffff610cf216565b6101c08401525b505b6060820151156109eb576109a7610995836020015161040285606001518660000151610bbd90919063ffffffff16565b6101608401519063ffffffff610cf216565b6101608301526020820151825160e08401516109e4926109d29290916104029163ffffffff610bbd16565b6101808401519063ffffffff610cf216565b6101808301525b505b6101008101805160010190526104e4565b600081610140015111610a12576000610a2d565b6101408101516101a0820151610a2d9163ffffffff610c1f16565b6101a0820152610140810151610a44576000610a5f565b6101408101516101c0820151610a5f9163ffffffff610c1f16565b6101c08201819052610140820151610160830151610180840151610a8293610ca3565b61012082018190526101408201516101608301516101808401516101a08501516101c090950151929a50909850965091945090925090509550955095509550955095565b600080610ade6064610402898763ffffffff610bbd16565b905085811015610af2576000915050610ba8565b610b12610b05878763ffffffff610cf216565b829063ffffffff610c6116565b60408051630e563a7d60e41b81523360048201526024810183905290519192506000916001600160a01b0386169163e563a7d0916044808301926020929190829003018186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d6020811015610b8f57600080fd5b50519050610ba3828263ffffffff610c6116565b925050505b95945050505050565b670de0b6b3a764000081565b600082610bcc57506000610c19565b82820282848281610bd957fe5b0414610c165760405162461bcd60e51b8152600401808060200182810382526021815260200180610f726021913960400191505060405180910390fd5b90505b92915050565b6000610c1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d4c565b6000610c1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dee565b600083610cb35750600019610cea565b610ce7610cc6858563ffffffff610cf216565b610cdb6064610402898763ffffffff610bbd16565b9063ffffffff610e4816565b90505b949350505050565b600082820183811015610c16576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183610dd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d9d578181015183820152602001610d85565b50505050905090810190601f168015610dca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610de457fe5b0495945050505050565b60008184841115610e405760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d9d578181015183820152602001610d85565b505050900390565b600060028204610cea83610402610e6787670de0b6b3a7640000610bbd565b849063ffffffff610cf216565b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60405180610260016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600015158152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220edb5353247c15b20fd4c404a048c2311d00308da0b0367281ec230b7d558c1df64736f6c63430006080033"; diff --git a/types/IStableDebtToken.d.ts b/types/IStableDebtToken.d.ts index 694bb8b1..361a27e7 100644 --- a/types/IStableDebtToken.d.ts +++ b/types/IStableDebtToken.d.ts @@ -18,6 +18,10 @@ interface IStableDebtTokenInterface extends Interface { getAverageStableRate: TypedFunctionDescription<{ encode([]: []): string }>; + getUserLastUpdated: TypedFunctionDescription<{ + encode([_user]: [string]): string; + }>; + getUserStableRate: TypedFunctionDescription<{ encode([_user]: [string]): string; }>; @@ -59,6 +63,8 @@ export class IStableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; mint( @@ -77,6 +83,8 @@ export class IStableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; mint( @@ -93,6 +101,8 @@ export class IStableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; mint( diff --git a/types/IStableDebtTokenFactory.ts b/types/IStableDebtTokenFactory.ts index 178cb735..30e82570 100644 --- a/types/IStableDebtTokenFactory.ts +++ b/types/IStableDebtTokenFactory.ts @@ -47,6 +47,25 @@ const _abi = [ stateMutability: "view", type: "function" }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address" + } + ], + name: "getUserLastUpdated", + outputs: [ + { + internalType: "uint40", + name: "", + type: "uint40" + } + ], + stateMutability: "view", + type: "function" + }, { inputs: [ { diff --git a/types/IVariableDebtToken.d.ts b/types/IVariableDebtToken.d.ts index 20c6df47..c72a866a 100644 --- a/types/IVariableDebtToken.d.ts +++ b/types/IVariableDebtToken.d.ts @@ -16,6 +16,10 @@ interface IVariableDebtTokenInterface extends Interface { encode([_account, _amount]: [string, BigNumberish]): string; }>; + getUserIndex: TypedFunctionDescription<{ + encode([_account]: [string]): string; + }>; + mint: TypedFunctionDescription<{ encode([account, amount]: [string, BigNumberish]): string; }>; @@ -47,6 +51,8 @@ export class IVariableDebtToken extends Contract { overrides?: TransactionOverrides ): Promise; + getUserIndex(_account: string): Promise; + mint( account: string, amount: BigNumberish, @@ -60,6 +66,8 @@ export class IVariableDebtToken extends Contract { overrides?: TransactionOverrides ): Promise; + getUserIndex(_account: string): Promise; + mint( account: string, amount: BigNumberish, @@ -71,6 +79,8 @@ export class IVariableDebtToken extends Contract { estimate: { burn(_account: string, _amount: BigNumberish): Promise; + getUserIndex(_account: string): Promise; + mint(account: string, amount: BigNumberish): Promise; }; } diff --git a/types/IVariableDebtTokenFactory.ts b/types/IVariableDebtTokenFactory.ts index b002efc9..5fb0c43d 100644 --- a/types/IVariableDebtTokenFactory.ts +++ b/types/IVariableDebtTokenFactory.ts @@ -34,6 +34,25 @@ const _abi = [ stateMutability: "nonpayable", type: "function" }, + { + inputs: [ + { + internalType: "address", + name: "_account", + type: "address" + } + ], + name: "getUserIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, { inputs: [ { diff --git a/types/LendingPool.d.ts b/types/LendingPool.d.ts index 0d071425..e61fc132 100644 --- a/types/LendingPool.d.ts +++ b/types/LendingPool.d.ts @@ -473,6 +473,7 @@ export class LendingPool extends Contract { stableBorrowRate: BigNumber; liquidityRate: BigNumber; variableBorrowIndex: BigNumber; + stableRateLastUpdated: number; usageAsCollateralEnabled: boolean; 0: BigNumber; 1: BigNumber; @@ -482,7 +483,8 @@ export class LendingPool extends Contract { 5: BigNumber; 6: BigNumber; 7: BigNumber; - 8: boolean; + 8: number; + 9: boolean; }>; initReserve( @@ -735,6 +737,7 @@ export class LendingPool extends Contract { stableBorrowRate: BigNumber; liquidityRate: BigNumber; variableBorrowIndex: BigNumber; + stableRateLastUpdated: number; usageAsCollateralEnabled: boolean; 0: BigNumber; 1: BigNumber; @@ -744,7 +747,8 @@ export class LendingPool extends Contract { 5: BigNumber; 6: BigNumber; 7: BigNumber; - 8: boolean; + 8: number; + 9: boolean; }>; initReserve( diff --git a/types/LendingPoolConfiguratorFactory.ts b/types/LendingPoolConfiguratorFactory.ts index 0a4556e5..827bc370 100644 --- a/types/LendingPoolConfiguratorFactory.ts +++ b/types/LendingPoolConfiguratorFactory.ts @@ -670,4 +670,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b50615192806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620001485760003560e01c8063a5bc826c11620000bd578063d466016f116200007b578063d466016f1462000530578063e8ae2f5b146200055f578063eede87c11462000588578063ef1f937314620005b9578063f53a251514620005e25762000148565b8063a5bc826c1462000451578063a8dc0f45146200048c578063b75d6f3414620004b5578063bf34418314620004de578063c4d66de814620005075762000148565b806366bbd928116200010b57806366bbd928146200038857806370fb84f414620003b75780637aca76eb14620003e65780637af635a6146200040f57806380e17d87146200042b5762000148565b80631133c0f7146200014d5780631d2118f914620002b35780633443a14b14620002e45780633e72a45414620003135780635dd9a189146200033c575b600080fd5b620002b1600480360360e08110156200016557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200019057600080fd5b820183602082011115620001a357600080fd5b803590602001918460018302840111600160201b83111715620001c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021857600080fd5b8201836020820111156200022b57600080fd5b803590602001918460018302840111600160201b831117156200024d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833581169450602084013581169360ff6040820135169350606001351690506200060b565b005b620002b160048036036040811015620002cb57600080fd5b506001600160a01b038135811691602001351662000965565b620002b160048036036040811015620002fc57600080fd5b506001600160a01b03813516906020013562000b4d565b620002b1600480360360208110156200032b57600080fd5b50356001600160a01b031662000d33565b620002b1600480360360a08110156200035457600080fd5b506001600160a01b03813581169160ff60208201351691604082013581169160608101358216916080909101351662000ff3565b620002b160048036036040811015620003a057600080fd5b506001600160a01b03813516906020013562001426565b620002b160048036036040811015620003cf57600080fd5b506001600160a01b0381351690602001356200160c565b620002b160048036036020811015620003fe57600080fd5b50356001600160a01b0316620017f2565b62000419620019c7565b60408051918252519081900360200190f35b62000435620019cc565b604080516001600160a01b039092168252519081900360200190f35b620002b1600480360360808110156200046957600080fd5b506001600160a01b038135169060208101359060408101359060600135620019db565b620002b160048036036020811015620004a457600080fd5b50356001600160a01b031662001bd9565b620002b160048036036020811015620004cd57600080fd5b50356001600160a01b031662001db3565b620002b160048036036020811015620004f657600080fd5b50356001600160a01b031662001f88565b620002b1600480360360208110156200051f57600080fd5b50356001600160a01b03166200215d565b620002b1600480360360408110156200054857600080fd5b506001600160a01b0381351690602001356200221f565b620002b1600480360360208110156200057757600080fd5b50356001600160a01b031662002405565b620002b160048036036040811015620005a057600080fd5b506001600160a01b0381351690602001351515620025d3565b620002b160048036036020811015620005d157600080fd5b50356001600160a01b0316620027c2565b620002b160048036036020811015620005fa57600080fd5b50356001600160a01b031662002995565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200065057600080fd5b505afa15801562000665573d6000803e3d6000fd5b505050506040513d60208110156200067c57600080fd5b50516001600160a01b031614620006c55760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6034546040516000916001600160a01b031690899085908a908a90620006eb9062002b73565b6001600160a01b038087168252851660208083019190915260ff8516604083015260a06060830181815285519184019190915284519091608084019160c085019187019080838360005b838110156200074f57818101518382015260200162000735565b50505050905090810190601f1680156200077d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620007b257818101518382015260200162000798565b50505050905090810190601f168015620007e05780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f08015801562000807573d6000803e3d6000fd5b509050603460009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200085957600080fd5b505afa1580156200086e573d6000803e3d6000fd5b505050506040513d60208110156200088557600080fd5b5051604080516309eab60f60e01b81526001600160a01b038b8116600483015284811660248301528881166044830152878116606483015260ff8716608483015285811660a4830152915191909216916309eab60f9160c480830192600092919082900301818387803b158015620008fc57600080fd5b505af115801562000911573d6000803e3d6000fd5b5050604080516001600160a01b03868116825291518286169450918c1692507f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e919081900360200190a35050505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620009aa57600080fd5b505afa158015620009bf573d6000803e3d6000fd5b505050506040513d6020811015620009d657600080fd5b50516001600160a01b03161462000a1f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505160408051631d2118f960e01b81526001600160a01b0386811660048301528581166024830152915192935090831691631d2118f99160448082019260009290919082900301818387803b15801562000aea57600080fd5b505af115801562000aff573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015281517f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a59450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000b9257600080fd5b505afa15801562000ba7573d6000803e3d6000fd5b505050506040513d602081101562000bbe57600080fd5b50516001600160a01b03161462000c075760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000c4d57600080fd5b505afa15801562000c62573d6000803e3d6000fd5b505050506040513d602081101562000c7957600080fd5b505160408051633443a14b60e01b81526001600160a01b03868116600483015260248201869052915192935090831691633443a14b9160448082019260009290919082900301818387803b15801562000cd157600080fd5b505af115801562000ce6573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67149450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000d7857600080fd5b505afa15801562000d8d573d6000803e3d6000fd5b505050506040513d602081101562000da457600080fd5b50516001600160a01b03161462000ded5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000e3357600080fd5b505afa15801562000e48573d6000803e3d6000fd5b505050506040513d602081101562000e5f57600080fd5b5051604080516335ea6a7560e01b81526001600160a01b038581166004830152915192935060009283928392908616916335ea6a759160248082019261014092909190829003018186803b15801562000eb757600080fd5b505afa15801562000ecc573d6000803e3d6000fd5b505050506040513d61014081101562000ee457600080fd5b508051602082015160409092015190945090925090508215801562000f07575081155b801562000f12575080155b62000f4f5760405162461bcd60e51b815260040180806020018281038252602a81526020018062005133602a913960400191505060405180910390fd5b6040805163b736aaeb60e01b81526001600160a01b03878116600483015260006024830181905292519087169263b736aaeb926044808201939182900301818387803b15801562000f9f57600080fd5b505af115801562000fb4573d6000803e3d6000fd5b50506040516001600160a01b03881692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200103857600080fd5b505afa1580156200104d573d6000803e3d6000fd5b505050506040513d60208110156200106457600080fd5b50516001600160a01b031614620010ad5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6060856001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620010e957600080fd5b505afa158015620010fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200112857600080fd5b8101908080516040519392919084600160201b8211156200114857600080fd5b9083019060208201858111156200115e57600080fd5b8251600160201b8111828201881017156200117857600080fd5b82525081516020918201929091019080838360005b83811015620011a75781810151838201526020016200118d565b50505050905090810190601f168015620011d55780820380516001836020036101000a031916815260200191505b50604052505050604051602001808075020b0bb329024b73a32b932b9ba103132b0b934b733960551b81525060160182805190602001908083835b60208310620012315780518252601f19909201916020918201910162001210565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060866001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620012a357600080fd5b505afa158015620012b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620012e257600080fd5b8101908080516040519392919084600160201b8211156200130257600080fd5b9083019060208201858111156200131857600080fd5b8251600160201b8111828201881017156200133257600080fd5b82525081516020918201929091019080838360005b838110156200136157818101518382015260200162001347565b50505050905090810190601f1680156200138f5780820380516001836020036101000a031916815260200191505b506040525050506040516020018080606160f81b81525060010182805190602001908083835b60208310620013d65780518252601f199092019160209182019101620013b5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506200141d87838387878b8b6200060b565b50505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200146b57600080fd5b505afa15801562001480573d6000803e3d6000fd5b505050506040513d60208110156200149757600080fd5b50516001600160a01b031614620014e05760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200152657600080fd5b505afa1580156200153b573d6000803e3d6000fd5b505050506040513d60208110156200155257600080fd5b505160408051630cd77b2560e31b81526001600160a01b038681166004830152602482018690529151929350908316916366bbd9289160448082019260009290919082900301818387803b158015620015aa57600080fd5b505af1158015620015bf573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631299450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200165157600080fd5b505afa15801562001666573d6000803e3d6000fd5b505050506040513d60208110156200167d57600080fd5b50516001600160a01b031614620016c65760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200170c57600080fd5b505afa15801562001721573d6000803e3d6000fd5b505050506040513d60208110156200173857600080fd5b505160408051631c3ee13d60e21b81526001600160a01b038681166004830152602482018690529151929350908316916370fb84f49160448082019260009290919082900301818387803b1580156200179057600080fd5b505af1158015620017a5573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec9450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200183757600080fd5b505afa1580156200184c573d6000803e3d6000fd5b505050506040513d60208110156200186357600080fd5b50516001600160a01b031614620018ac5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620018f257600080fd5b505afa15801562001907573d6000803e3d6000fd5b505050506040513d60208110156200191e57600080fd5b5051604080516325ba55f160e21b81526001600160a01b038581166004830152600160248301529151929350908316916396e957c49160448082019260009290919082900301818387803b1580156200197657600080fd5b505af11580156200198b573d6000803e3d6000fd5b50506040516001600160a01b03851692507fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc569150600090a25050565b600381565b6034546001600160a01b031681565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001a2057600080fd5b505afa15801562001a35573d6000803e3d6000fd5b505050506040513d602081101562001a4c57600080fd5b50516001600160a01b03161462001a955760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001adb57600080fd5b505afa15801562001af0573d6000803e3d6000fd5b505050506040513d602081101562001b0757600080fd5b50516040805163296f209b60e21b81526001600160a01b03888116600483015260248201889052604482018790526064820186905291519293509083169163a5bc826c9160848082019260009290919082900301818387803b15801562001b6d57600080fd5b505af115801562001b82573d6000803e3d6000fd5b5050604080518781526020810187905280820186905290516001600160a01b03891693507fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274492509081900360600190a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001c1e57600080fd5b505afa15801562001c33573d6000803e3d6000fd5b505050506040513d602081101562001c4a57600080fd5b50516001600160a01b03161462001c935760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001cd957600080fd5b505afa15801562001cee573d6000803e3d6000fd5b505050506040513d602081101562001d0557600080fd5b505160408051636ee365f960e01b81526001600160a01b038581166004830152600060248301819052604483018190529251939450841692636ee365f99260648084019391929182900301818387803b15801562001d6257600080fd5b505af115801562001d77573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001df857600080fd5b505afa15801562001e0d573d6000803e3d6000fd5b505050506040513d602081101562001e2457600080fd5b50516001600160a01b03161462001e6d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001eb357600080fd5b505afa15801562001ec8573d6000803e3d6000fd5b505050506040513d602081101562001edf57600080fd5b50516040805163b736aaeb60e01b81526001600160a01b0385811660048301526001602483015291519293509083169163b736aaeb9160448082019260009290919082900301818387803b15801562001f3757600080fd5b505af115801562001f4c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001fcd57600080fd5b505afa15801562001fe2573d6000803e3d6000fd5b505050506040513d602081101562001ff957600080fd5b50516001600160a01b031614620020425760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200208857600080fd5b505afa1580156200209d573d6000803e3d6000fd5b505050506040513d6020811015620020b457600080fd5b5051604080516339d9797960e11b81526001600160a01b038581166004830152600160248301529151929350908316916373b2f2f29160448082019260009290919082900301818387803b1580156200210c57600080fd5b505af115801562002121573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b60006200216962002b68565b60015490915060ff16806200218357506200218362002b6d565b8062002190575060005481115b620021cd5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005105602e913960400191505060405180910390fd5b60015460ff16158015620021ed576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03851617905580156200221a576001805460ff191690555b505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b505050506040513d60208110156200229057600080fd5b50516001600160a01b031614620022d95760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200231f57600080fd5b505afa15801562002334573d6000803e3d6000fd5b505050506040513d60208110156200234b57600080fd5b50516040805163d466016f60e01b81526001600160a01b0386811660048301526024820186905291519293509083169163d466016f9160448082019260009290919082900301818387803b158015620023a357600080fd5b505af1158015620023b8573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686649450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200244a57600080fd5b505afa1580156200245f573d6000803e3d6000fd5b505050506040513d60208110156200247657600080fd5b50516001600160a01b031614620024bf5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200250557600080fd5b505afa1580156200251a573d6000803e3d6000fd5b505050506040513d60208110156200253157600080fd5b50516040805163e8ae2f5b60e01b81526001600160a01b03858116600483015291519293509083169163e8ae2f5b9160248082019260009290919082900301818387803b1580156200258257600080fd5b505af115801562002597573d6000803e3d6000fd5b50506040516001600160a01b03851692507f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200261857600080fd5b505afa1580156200262d573d6000803e3d6000fd5b505050506040513d60208110156200264457600080fd5b50516001600160a01b0316146200268d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620026d357600080fd5b505afa158015620026e8573d6000803e3d6000fd5b505050506040513d6020811015620026ff57600080fd5b505160408051636ee365f960e01b81526001600160a01b038681166004830152851515602483015260016044830152915192935090831691636ee365f99160648082019260009290919082900301818387803b1580156200275f57600080fd5b505af115801562002774573d6000803e3d6000fd5b5050604080516001600160a01b0387168152851515602082015281517fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5089450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200280757600080fd5b505afa1580156200281c573d6000803e3d6000fd5b505050506040513d60208110156200283357600080fd5b50516001600160a01b0316146200287c5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620028c257600080fd5b505afa158015620028d7573d6000803e3d6000fd5b505050506040513d6020811015620028ee57600080fd5b5051604080516325ba55f160e21b81526001600160a01b03858116600483015260006024830181905292519394508416926396e957c49260448084019391929182900301818387803b1580156200294457600080fd5b505af115801562002959573d6000803e3d6000fd5b50506040516001600160a01b03851692507f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620029da57600080fd5b505afa158015620029ef573d6000803e3d6000fd5b505050506040513d602081101562002a0657600080fd5b50516001600160a01b03161462002a4f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562002a9557600080fd5b505afa15801562002aaa573d6000803e3d6000fd5b505050506040513d602081101562002ac157600080fd5b5051604080516339d9797960e11b81526001600160a01b03858116600483015260006024830181905292519394508416926373b2f2f29260448084019391929182900301818387803b15801562002b1757600080fd5b505af115801562002b2c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b600390565b303b1590565b61255a8062002b828339019056fe60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a264697066735822122019873305020cbc01aa77bbb897e23d81612ce64a19cddc5032e3ae3b0086ac6564736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a26469706673582212201048936da14a066ae066e469351afdefa900f6355d33b13a8bd9d77ae95501a364736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b50615192806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620001485760003560e01c8063a5bc826c11620000bd578063d466016f116200007b578063d466016f1462000530578063e8ae2f5b146200055f578063eede87c11462000588578063ef1f937314620005b9578063f53a251514620005e25762000148565b8063a5bc826c1462000451578063a8dc0f45146200048c578063b75d6f3414620004b5578063bf34418314620004de578063c4d66de814620005075762000148565b806366bbd928116200010b57806366bbd928146200038857806370fb84f414620003b75780637aca76eb14620003e65780637af635a6146200040f57806380e17d87146200042b5762000148565b80631133c0f7146200014d5780631d2118f914620002b35780633443a14b14620002e45780633e72a45414620003135780635dd9a189146200033c575b600080fd5b620002b1600480360360e08110156200016557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200019057600080fd5b820183602082011115620001a357600080fd5b803590602001918460018302840111600160201b83111715620001c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021857600080fd5b8201836020820111156200022b57600080fd5b803590602001918460018302840111600160201b831117156200024d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833581169450602084013581169360ff6040820135169350606001351690506200060b565b005b620002b160048036036040811015620002cb57600080fd5b506001600160a01b038135811691602001351662000965565b620002b160048036036040811015620002fc57600080fd5b506001600160a01b03813516906020013562000b4d565b620002b1600480360360208110156200032b57600080fd5b50356001600160a01b031662000d33565b620002b1600480360360a08110156200035457600080fd5b506001600160a01b03813581169160ff60208201351691604082013581169160608101358216916080909101351662000ff3565b620002b160048036036040811015620003a057600080fd5b506001600160a01b03813516906020013562001426565b620002b160048036036040811015620003cf57600080fd5b506001600160a01b0381351690602001356200160c565b620002b160048036036020811015620003fe57600080fd5b50356001600160a01b0316620017f2565b62000419620019c7565b60408051918252519081900360200190f35b62000435620019cc565b604080516001600160a01b039092168252519081900360200190f35b620002b1600480360360808110156200046957600080fd5b506001600160a01b038135169060208101359060408101359060600135620019db565b620002b160048036036020811015620004a457600080fd5b50356001600160a01b031662001bd9565b620002b160048036036020811015620004cd57600080fd5b50356001600160a01b031662001db3565b620002b160048036036020811015620004f657600080fd5b50356001600160a01b031662001f88565b620002b1600480360360208110156200051f57600080fd5b50356001600160a01b03166200215d565b620002b1600480360360408110156200054857600080fd5b506001600160a01b0381351690602001356200221f565b620002b1600480360360208110156200057757600080fd5b50356001600160a01b031662002405565b620002b160048036036040811015620005a057600080fd5b506001600160a01b0381351690602001351515620025d3565b620002b160048036036020811015620005d157600080fd5b50356001600160a01b0316620027c2565b620002b160048036036020811015620005fa57600080fd5b50356001600160a01b031662002995565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200065057600080fd5b505afa15801562000665573d6000803e3d6000fd5b505050506040513d60208110156200067c57600080fd5b50516001600160a01b031614620006c55760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6034546040516000916001600160a01b031690899085908a908a90620006eb9062002b73565b6001600160a01b038087168252851660208083019190915260ff8516604083015260a06060830181815285519184019190915284519091608084019160c085019187019080838360005b838110156200074f57818101518382015260200162000735565b50505050905090810190601f1680156200077d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620007b257818101518382015260200162000798565b50505050905090810190601f168015620007e05780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f08015801562000807573d6000803e3d6000fd5b509050603460009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200085957600080fd5b505afa1580156200086e573d6000803e3d6000fd5b505050506040513d60208110156200088557600080fd5b5051604080516309eab60f60e01b81526001600160a01b038b8116600483015284811660248301528881166044830152878116606483015260ff8716608483015285811660a4830152915191909216916309eab60f9160c480830192600092919082900301818387803b158015620008fc57600080fd5b505af115801562000911573d6000803e3d6000fd5b5050604080516001600160a01b03868116825291518286169450918c1692507f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e919081900360200190a35050505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620009aa57600080fd5b505afa158015620009bf573d6000803e3d6000fd5b505050506040513d6020811015620009d657600080fd5b50516001600160a01b03161462000a1f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505160408051631d2118f960e01b81526001600160a01b0386811660048301528581166024830152915192935090831691631d2118f99160448082019260009290919082900301818387803b15801562000aea57600080fd5b505af115801562000aff573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015281517f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a59450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000b9257600080fd5b505afa15801562000ba7573d6000803e3d6000fd5b505050506040513d602081101562000bbe57600080fd5b50516001600160a01b03161462000c075760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000c4d57600080fd5b505afa15801562000c62573d6000803e3d6000fd5b505050506040513d602081101562000c7957600080fd5b505160408051633443a14b60e01b81526001600160a01b03868116600483015260248201869052915192935090831691633443a14b9160448082019260009290919082900301818387803b15801562000cd157600080fd5b505af115801562000ce6573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67149450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000d7857600080fd5b505afa15801562000d8d573d6000803e3d6000fd5b505050506040513d602081101562000da457600080fd5b50516001600160a01b03161462000ded5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000e3357600080fd5b505afa15801562000e48573d6000803e3d6000fd5b505050506040513d602081101562000e5f57600080fd5b5051604080516335ea6a7560e01b81526001600160a01b038581166004830152915192935060009283928392908616916335ea6a759160248082019261014092909190829003018186803b15801562000eb757600080fd5b505afa15801562000ecc573d6000803e3d6000fd5b505050506040513d61014081101562000ee457600080fd5b508051602082015160409092015190945090925090508215801562000f07575081155b801562000f12575080155b62000f4f5760405162461bcd60e51b815260040180806020018281038252602a81526020018062005133602a913960400191505060405180910390fd5b6040805163b736aaeb60e01b81526001600160a01b03878116600483015260006024830181905292519087169263b736aaeb926044808201939182900301818387803b15801562000f9f57600080fd5b505af115801562000fb4573d6000803e3d6000fd5b50506040516001600160a01b03881692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200103857600080fd5b505afa1580156200104d573d6000803e3d6000fd5b505050506040513d60208110156200106457600080fd5b50516001600160a01b031614620010ad5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6060856001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620010e957600080fd5b505afa158015620010fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200112857600080fd5b8101908080516040519392919084600160201b8211156200114857600080fd5b9083019060208201858111156200115e57600080fd5b8251600160201b8111828201881017156200117857600080fd5b82525081516020918201929091019080838360005b83811015620011a75781810151838201526020016200118d565b50505050905090810190601f168015620011d55780820380516001836020036101000a031916815260200191505b50604052505050604051602001808075020b0bb329024b73a32b932b9ba103132b0b934b733960551b81525060160182805190602001908083835b60208310620012315780518252601f19909201916020918201910162001210565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060866001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620012a357600080fd5b505afa158015620012b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620012e257600080fd5b8101908080516040519392919084600160201b8211156200130257600080fd5b9083019060208201858111156200131857600080fd5b8251600160201b8111828201881017156200133257600080fd5b82525081516020918201929091019080838360005b838110156200136157818101518382015260200162001347565b50505050905090810190601f1680156200138f5780820380516001836020036101000a031916815260200191505b506040525050506040516020018080606160f81b81525060010182805190602001908083835b60208310620013d65780518252601f199092019160209182019101620013b5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506200141d87838387878b8b6200060b565b50505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200146b57600080fd5b505afa15801562001480573d6000803e3d6000fd5b505050506040513d60208110156200149757600080fd5b50516001600160a01b031614620014e05760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200152657600080fd5b505afa1580156200153b573d6000803e3d6000fd5b505050506040513d60208110156200155257600080fd5b505160408051630cd77b2560e31b81526001600160a01b038681166004830152602482018690529151929350908316916366bbd9289160448082019260009290919082900301818387803b158015620015aa57600080fd5b505af1158015620015bf573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631299450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200165157600080fd5b505afa15801562001666573d6000803e3d6000fd5b505050506040513d60208110156200167d57600080fd5b50516001600160a01b031614620016c65760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200170c57600080fd5b505afa15801562001721573d6000803e3d6000fd5b505050506040513d60208110156200173857600080fd5b505160408051631c3ee13d60e21b81526001600160a01b038681166004830152602482018690529151929350908316916370fb84f49160448082019260009290919082900301818387803b1580156200179057600080fd5b505af1158015620017a5573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec9450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200183757600080fd5b505afa1580156200184c573d6000803e3d6000fd5b505050506040513d60208110156200186357600080fd5b50516001600160a01b031614620018ac5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620018f257600080fd5b505afa15801562001907573d6000803e3d6000fd5b505050506040513d60208110156200191e57600080fd5b5051604080516325ba55f160e21b81526001600160a01b038581166004830152600160248301529151929350908316916396e957c49160448082019260009290919082900301818387803b1580156200197657600080fd5b505af11580156200198b573d6000803e3d6000fd5b50506040516001600160a01b03851692507fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc569150600090a25050565b600381565b6034546001600160a01b031681565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001a2057600080fd5b505afa15801562001a35573d6000803e3d6000fd5b505050506040513d602081101562001a4c57600080fd5b50516001600160a01b03161462001a955760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001adb57600080fd5b505afa15801562001af0573d6000803e3d6000fd5b505050506040513d602081101562001b0757600080fd5b50516040805163296f209b60e21b81526001600160a01b03888116600483015260248201889052604482018790526064820186905291519293509083169163a5bc826c9160848082019260009290919082900301818387803b15801562001b6d57600080fd5b505af115801562001b82573d6000803e3d6000fd5b5050604080518781526020810187905280820186905290516001600160a01b03891693507fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274492509081900360600190a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001c1e57600080fd5b505afa15801562001c33573d6000803e3d6000fd5b505050506040513d602081101562001c4a57600080fd5b50516001600160a01b03161462001c935760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001cd957600080fd5b505afa15801562001cee573d6000803e3d6000fd5b505050506040513d602081101562001d0557600080fd5b505160408051636ee365f960e01b81526001600160a01b038581166004830152600060248301819052604483018190529251939450841692636ee365f99260648084019391929182900301818387803b15801562001d6257600080fd5b505af115801562001d77573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001df857600080fd5b505afa15801562001e0d573d6000803e3d6000fd5b505050506040513d602081101562001e2457600080fd5b50516001600160a01b03161462001e6d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001eb357600080fd5b505afa15801562001ec8573d6000803e3d6000fd5b505050506040513d602081101562001edf57600080fd5b50516040805163b736aaeb60e01b81526001600160a01b0385811660048301526001602483015291519293509083169163b736aaeb9160448082019260009290919082900301818387803b15801562001f3757600080fd5b505af115801562001f4c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001fcd57600080fd5b505afa15801562001fe2573d6000803e3d6000fd5b505050506040513d602081101562001ff957600080fd5b50516001600160a01b031614620020425760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200208857600080fd5b505afa1580156200209d573d6000803e3d6000fd5b505050506040513d6020811015620020b457600080fd5b5051604080516339d9797960e11b81526001600160a01b038581166004830152600160248301529151929350908316916373b2f2f29160448082019260009290919082900301818387803b1580156200210c57600080fd5b505af115801562002121573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b60006200216962002b68565b60015490915060ff16806200218357506200218362002b6d565b8062002190575060005481115b620021cd5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005105602e913960400191505060405180910390fd5b60015460ff16158015620021ed576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03851617905580156200221a576001805460ff191690555b505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b505050506040513d60208110156200229057600080fd5b50516001600160a01b031614620022d95760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200231f57600080fd5b505afa15801562002334573d6000803e3d6000fd5b505050506040513d60208110156200234b57600080fd5b50516040805163d466016f60e01b81526001600160a01b0386811660048301526024820186905291519293509083169163d466016f9160448082019260009290919082900301818387803b158015620023a357600080fd5b505af1158015620023b8573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686649450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200244a57600080fd5b505afa1580156200245f573d6000803e3d6000fd5b505050506040513d60208110156200247657600080fd5b50516001600160a01b031614620024bf5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200250557600080fd5b505afa1580156200251a573d6000803e3d6000fd5b505050506040513d60208110156200253157600080fd5b50516040805163e8ae2f5b60e01b81526001600160a01b03858116600483015291519293509083169163e8ae2f5b9160248082019260009290919082900301818387803b1580156200258257600080fd5b505af115801562002597573d6000803e3d6000fd5b50506040516001600160a01b03851692507f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200261857600080fd5b505afa1580156200262d573d6000803e3d6000fd5b505050506040513d60208110156200264457600080fd5b50516001600160a01b0316146200268d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620026d357600080fd5b505afa158015620026e8573d6000803e3d6000fd5b505050506040513d6020811015620026ff57600080fd5b505160408051636ee365f960e01b81526001600160a01b038681166004830152851515602483015260016044830152915192935090831691636ee365f99160648082019260009290919082900301818387803b1580156200275f57600080fd5b505af115801562002774573d6000803e3d6000fd5b5050604080516001600160a01b0387168152851515602082015281517fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5089450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200280757600080fd5b505afa1580156200281c573d6000803e3d6000fd5b505050506040513d60208110156200283357600080fd5b50516001600160a01b0316146200287c5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620028c257600080fd5b505afa158015620028d7573d6000803e3d6000fd5b505050506040513d6020811015620028ee57600080fd5b5051604080516325ba55f160e21b81526001600160a01b03858116600483015260006024830181905292519394508416926396e957c49260448084019391929182900301818387803b1580156200294457600080fd5b505af115801562002959573d6000803e3d6000fd5b50506040516001600160a01b03851692507f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620029da57600080fd5b505afa158015620029ef573d6000803e3d6000fd5b505050506040513d602081101562002a0657600080fd5b50516001600160a01b03161462002a4f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562002a9557600080fd5b505afa15801562002aaa573d6000803e3d6000fd5b505050506040513d602081101562002ac157600080fd5b5051604080516339d9797960e11b81526001600160a01b03858116600483015260006024830181905292519394508416926373b2f2f29260448084019391929182900301818387803b15801562002b1757600080fd5b505af115801562002b2c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b600390565b303b1590565b61255a8062002b828339019056fe60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220201915aed978df22aae3b77bb7cc0edce33b16d5661a00939351bdbf8dd2683564736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a26469706673582212204dab0280c87c05ad41a249b2d8d737735b23111fcd68d1ed2e5a1cf5dfdafd4664736f6c63430006080033"; diff --git a/types/LendingPoolFactory.ts b/types/LendingPoolFactory.ts index 93d77c3e..1be46dbb 100644 --- a/types/LendingPoolFactory.ts +++ b/types/LendingPoolFactory.ts @@ -957,6 +957,11 @@ const _abi = [ name: "variableBorrowIndex", type: "uint256" }, + { + internalType: "uint40", + name: "stableRateLastUpdated", + type: "uint40" + }, { internalType: "bool", name: "usageAsCollateralEnabled", @@ -1348,7 +1353,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b5060016000556151728061002a6000396000f3fe6080604052600436106101fc5760003560e01c806373b2f2f21161010d578063c4d66de8116100a0578063d0fc81d21161006f578063d0fc81d214610afd578063d15e005314610b12578063d2d0e06614610b45578063d466016f14610b7b578063e8ae2f5b14610bb457610242565b8063c4d66de814610a31578063c72c4d1014610a64578063c858f5f914610a79578063cd11238214610ac257610242565b80639895e3d8116100dc5780639895e3d8146108fd578063a5bc826c14610946578063b736aaeb1461098b578063bf92857c146109c657610242565b806373b2f2f21461081b57806376e9d615146108565780638afaff02146108ad57806396e957c4146108c257610242565b80633e150141116101905780635a3b74b91161015f5780635a3b74b9146106585780635cffe9de1461069357806366bbd928146107665780636ee365f91461079f57806370fb84f4146107e257610242565b80633e1501411461051057806348ca1300146105a55780634fe7a6e5146105d8578063573ade811461061e57610242565b806328dd2d01116101cc57806328dd2d01146103845780633443a14b1461040857806335ea6a7514610441578063386497fd146104cb57610242565b8062a718a9146102475780630902f1ac1461028b57806309eab60f146102f05780631d2118f91461034957610242565b366102425761020a33610be7565b610240576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b610240600480360360a081101561025d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610c23565b34801561029757600080fd5b506102a0610fea565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102dc5781810151838201526020016102c4565b505050509050019250505060405180910390f35b3480156102fc57600080fd5b50610240600480360360c081101561031357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160808201359160a001351661104c565b34801561035557600080fd5b506102406004803603604081101561036c57600080fd5b506001600160a01b03813581169160200135166111b3565b34801561039057600080fd5b506103bf600480360360408110156103a757600080fd5b506001600160a01b0381358116916020013516611294565b60408051998a5260208a0198909852888801969096526060880194909452608087019290925260a086015260c085015260e0840152151561010083015251908190036101200190f35b34801561041457600080fd5b506102406004803603604081101561042b57600080fd5b506001600160a01b038135169060200135611438565b34801561044d57600080fd5b506104746004803603602081101561046457600080fd5b50356001600160a01b0316611507565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015264ffffffffff1661012083015251908190036101400190f35b3480156104d757600080fd5b506104fe600480360360208110156104ee57600080fd5b50356001600160a01b03166117f3565b60408051918252519081900360200190f35b34801561051c57600080fd5b506105436004803603602081101561053357600080fd5b50356001600160a01b031661181a565b604080519a8b5260208b0199909952898901979097526001600160a01b0395861660608a015293909416608088015290151560a0870152151560c086015290151560e08501521515610100840152151561012083015251908190036101400190f35b3480156105b157600080fd5b50610240600480360360208110156105c857600080fd5b50356001600160a01b0316611890565b3480156105e457600080fd5b50610602600480360360208110156105fb57600080fd5b503561193e565b604080516001600160a01b039092168252519081900360200190f35b6102406004803603608081101561063457600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611965565b34801561066457600080fd5b506102406004803603604081101561067b57600080fd5b506001600160a01b0381351690602001351515611d2f565b34801561069f57600080fd5b50610240600480360360808110156106b657600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106f157600080fd5b82018360208201111561070357600080fd5b8035906020019184600183028401116401000000008311171561072557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611f95945050505050565b34801561077257600080fd5b506102406004803603604081101561078957600080fd5b506001600160a01b03813516906020013561243e565b3480156107ab57600080fd5b50610240600480360360608110156107c257600080fd5b506001600160a01b0381351690602081013515159060400135151561250d565b3480156107ee57600080fd5b506102406004803603604081101561080557600080fd5b506001600160a01b0381351690602001356126d2565b34801561082757600080fd5b506102406004803603604081101561083e57600080fd5b506001600160a01b03813516906020013515156127a1565b34801561086257600080fd5b506108996004803603606081101561087957600080fd5b506001600160a01b03813581169160208101359091169060400135612889565b604080519115158252519081900360200190f35b3480156108b957600080fd5b506104fe612a19565b3480156108ce57600080fd5b50610240600480360360408110156108e557600080fd5b506001600160a01b0381351690602001351515612a1e565b34801561090957600080fd5b506102406004803603608081101561092057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612b06565b34801561095257600080fd5b506102406004803603608081101561096957600080fd5b506001600160a01b038135169060208101359060408101359060600135612ca2565b34801561099757600080fd5b50610240600480360360408110156109ae57600080fd5b506001600160a01b0381351690602001351515612deb565b3480156109d257600080fd5b506109f9600480360360208110156109e957600080fd5b50356001600160a01b0316612f35565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a3d57600080fd5b5061024060048036036020811015610a5457600080fd5b50356001600160a01b0316613196565b348015610a7057600080fd5b506106026132db565b348015610a8557600080fd5b5061024060048036036080811015610a9c57600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff166132ea565b348015610ace57600080fd5b5061024060048036036040811015610ae557600080fd5b506001600160a01b038135811691602001351661387c565b348015610b0957600080fd5b506104fe613932565b348015610b1e57600080fd5b506104fe60048036036020811015610b3557600080fd5b50356001600160a01b0316613938565b61024060048036036060811015610b5b57600080fd5b5080356001600160a01b0316906020810135906040013561ffff16613959565b348015610b8757600080fd5b5061024060048036036040811015610b9e57600080fd5b506001600160a01b038135169060200135613bc8565b348015610bc057600080fd5b5061024060048036036020811015610bd757600080fd5b50356001600160a01b0316613c97565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c1b57508115155b949350505050565b60026000541415610c69576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b158015610cb557600080fd5b505afa158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b5051604080516001600160a01b038981166024830152888116604483015287811660648301526084820187905285151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b60208310610d795780518252601f199092019160209182019101610d5a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610dd9576040519150601f19603f3d011682016040523d82523d6000602084013e610dde565b606091505b509150915081610e1a576040805162461bcd60e51b81526020600482015260026024820152610c8d60f21b604482015290519081900360640190fd5b60006060828060200190516040811015610e3357600080fd5b815160208301805160405192949293830192919084640100000000821115610e5a57600080fd5b908301906020820185811115610e6f57600080fd5b8251640100000000811182820188101715610e8957600080fd5b82525081516020918201929091019080838360005b83811015610eb6578181015183820152602001610e9e565b50505050905090810190601f168015610ee35780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610fd957806040516020018082805190602001908083835b60208310610f295780518252601f199092019160209182019101610f0a565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610f9e578181015183820152602001610f86565b50505050905090810190601f168015610fcb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505060016000555050505050505050565b6060603980548060200260200160405190810160405280929190818152602001828054801561104257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611024575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561109057600080fd5b505afa1580156110a4573d6000803e3d6000fd5b505050506040513d60208110156110ba57600080fd5b50516001600160a01b0316146110fc576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038087166000908152603760205260408082208151630b25f31560e01b815260048101919091528884166024820152878416604482015286841660648201526084810186905292841660a48401525173__$2ec35834968386f54fa313129cf94664e4$__92630b25f3159260c4808301939192829003018186803b15801561118a57600080fd5b505af415801561119e573d6000803e3d6000fd5b505050506111ab86613dc8565b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156111f757600080fd5b505afa15801561120b573d6000803e3d6000fd5b505050506040513d602081101561122157600080fd5b50516001600160a01b031614611263576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039182166000908152603760205260409020600c0180546001600160a01b03191691909216179055565b6001600160a01b038083166000908152603760209081526040808320600981015482516370a0823160e01b815287871660048201529251949586958695869586958695869586958695939492909116926370a082319260248082019391829003018186803b15801561130557600080fd5b505afa158015611319573d6000803e3d6000fd5b505050506040513d602081101561132f57600080fd5b5051995061133d8b82613e6b565b909950975061134c8b82613f6e565b80975081985050508060010154935080600a0160009054906101000a90046001600160a01b03166001600160a01b031663e78c9b3b8c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d60208110156113f257600080fd5b50516001600160a01b039b8c1660009081526038602090815260408083209f909e1682529d909d529a909b2054989b979a509598949793969495509093909260ff169150565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b50516001600160a01b0316146114e8576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060060155565b60008060008060008060008060008061151e614e7e565b506001600160a01b03808c16600081815260376020908152604091829020825161026081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201548416610120820152600a8201548416610140820152600b8201548416610160820152600c9091015492831661018082015264ffffffffff600160a01b8404166101a082015260ff600160c81b8404811615156101c0830152600160d01b8404811615156101e0830152600160d81b840481161515610200830152600160e01b840481161515610220830152600160e81b9093049092161515610240830152611651903063ffffffff61403a16565b8161014001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561168f57600080fd5b505afa1580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b5051610160830151604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561170357600080fd5b505afa158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b50516020848101516040808701516060880151610140890151835163487b7e7960e11b815293519495929491936001600160a01b03909116926390f6fcf292600480840193829003018186803b15801561178657600080fd5b505afa15801561179a573d6000803e3d6000fd5b505050506040513d60208110156117b057600080fd5b810190808051906020019092919050505087600001518860800151896101a001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b0381166000908152603760205260408120611814906140e4565b92915050565b6001600160a01b039081166000908152603760205260409020600581015460068201546007830154600c840154600990940154929591949093808216939091169160ff600160d01b8304811692600160c81b8104821692600160d81b8204831692600160e01b8304811692600160e81b90041690565b600260005414156118d6576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038216808252603760209081526040808420338086526038845282862094865293909252832090929091819061191a9085613e6b565b9092509050611932848660008063ffffffff61412516565b50506001600055505050565b6039818154811061194b57fe5b6000918252602090912001546001600160a01b0316905081565b600260005414156119ab576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b60026000556119b8614f1a565b6001600160a01b038086166000818152603760209081526040808320948716835260388252808320938352929052206119f18483613e6b565b602085015283526000856002811115611a0657fe5b90506001816002811115611a1657fe5b14611a25578360200151611a28565b83515b60608501526000198714801590611a425750836060015187105b15611a4f57606084018790525b73__$69254465eb8f179ea24caa73cf68b23524$__63d454c1cc848a8a858a8a600001518b602001518c60600151346040518a63ffffffff1660e01b8152600401808a8152602001896001600160a01b03166001600160a01b03168152602001888152602001876002811115611ac157fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001838152602001828152602001995050505050505050505060006040518083038186803b158015611b1c57600080fd5b505af4158015611b30573d6000803e3d6000fd5b50505050611b3d83614455565b6001816002811115611b4b57fe5b1415611bcb57600a830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611bae57600080fd5b505af1158015611bc2573d6000803e3d6000fd5b50505050611c41565b600b830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b505050505b6060840151611c5b9084908a90600063ffffffff61412516565b6060840151611c7c906001600160a01b038a1690600063ffffffff6144ec16565b611c8e886001600160a01b0316614611565b15611cd0576000611cac85606001513461464790919063ffffffff16565b90508015611cce57611cce6001600160a01b038a16338363ffffffff61468916565b505b606084015160408051918252426020830152805133926001600160a01b0389811693908d16927f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc9281900390910190a450506001600055505050505050565b60026000541415611d75576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168083526037602081815260408086203387526038808452828820958852948352958190206035548251631f94a27560e31b81529251919673__$69254465eb8f179ea24caa73cf68b23524$__9663d73dac72968a968d9691959294603994169263fca513a8926004808201939291829003018186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6020811015611e3357600080fd5b50516040516001600160e01b031960e089901b168152600481018781526001600160a01b0380881660248401526044830187905260648301869052831660a483015260c060848301908152845460c484018190529192909160e49091019085908015611ec857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611eaa575b505097505050505050505060006040518083038186803b158015611eeb57600080fd5b505af4158015611eff573d6000803e3d6000fd5b5050825460ff1916851580159190911784559150611f5390505760405133906001600160a01b038616907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3611f8a565b60405133906001600160a01b038616907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505060016000555050565b60026000541415611fdb576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b6002600055611fe8614f57565b6001600160a01b038416600081815260376020526040902090612011903063ffffffff61403a16565b825261203661271061202a86600963ffffffff61470b16565b9063ffffffff61476416565b60608301819052612057906127109061202a90610bb863ffffffff61470b16565b6080830152815184111561209c5760405162461bcd60e51b8152600401808060200182810382526031815260200180614fa76031913960400191505060405180910390fd5b600082606001511180156120b4575060008260800151115b6120ef5760405162461bcd60e51b81526004018080602001828103825260328152602001806150e16032913960400191505060405180910390fd5b858061210b6001600160a01b038816828863ffffffff61468916565b816001600160a01b031663ee87255888888760600151896040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561219257818101518382015260200161217a565b50505050905090810190601f1680156121bf5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156121e157600080fd5b505af11580156121f5573d6000803e3d6000fd5b50600092506122169150506001600160a01b0389163063ffffffff61403a16565b60608601518651919250612230919063ffffffff6147a616565b811461226d5760405162461bcd60e51b815260040180806020018281038252603281526020018061503c6032913960400191505060405180910390fd5b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__63a023726490918a88600001516122ab8a608001518b6060015161464790919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060006040518083038186803b15801561231257600080fd5b505af4158015612326573d6000803e3d6000fd5b505050506123c3603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561237b57600080fd5b505afa15801561238f573d6000803e3d6000fd5b505050506040513d60208110156123a557600080fd5b505160808701516001600160a01b038b16919063ffffffff61468916565b876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050600160005550505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d60208110156124ac57600080fd5b50516001600160a01b0316146124ee576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060080155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561255157600080fd5b505afa158015612565573d6000803e3d6000fd5b505050506040513d602081101561257b57600080fd5b50516001600160a01b0316146125bd576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b811561264e576001600160a01b0383166000908152603760205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b15801561263157600080fd5b505af4158015612645573d6000803e3d6000fd5b505050506126cd565b6001600160a01b03831660009081526037602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b1580156126b457600080fd5b505af41580156126c8573d6000803e3d6000fd5b505050505b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d602081101561274057600080fd5b50516001600160a01b031614612782576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060070155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156127e557600080fd5b505afa1580156127f9573d6000803e3d6000fd5b505050506040513d602081101561280f57600080fd5b50516001600160a01b031614612851576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160d81b0260ff60d81b19909216919091179055565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__634d9afd5e858585603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156128fc57600080fd5b505afa158015612910573d6000803e3d6000fd5b505050506040513d602081101561292657600080fd5b505160405160e089811b6001600160e01b03191682526001600160a01b0389811660048401908152898216602485015260448401899052606484018890526084840187905290841660c484015260a48301918252845460e4840181905290926101040190859080156129c157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129a3575b50509850505050505050505060206040518083038186803b1580156129e557600080fd5b505af41580156129f9573d6000803e3d6000fd5b505050506040513d6020811015612a0f57600080fd5b5051949350505050565b600281565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612a6257600080fd5b505afa158015612a76573d6000803e3d6000fd5b505050506040513d6020811015612a8c57600080fd5b50516001600160a01b031614612ace576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160e81b0260ff60e81b19909216919091179055565b60026000541415612b4c576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085209388168552603882528085208386529091528084208151630d9e1f7160e11b81526004810185905260248101939093526044830187905290519293909273__$69254465eb8f179ea24caa73cf68b23524$__92631b3c3ee2926064808301939192829003018186803b158015612be257600080fd5b505af4158015612bf6573d6000803e3d6000fd5b505050508260001415612c0c57805460ff191681555b612c1582614455565b612c28828760008763ffffffff61412516565b612c426001600160a01b038716868663ffffffff61468916565b846001600160a01b0316866001600160a01b03167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68642604051808381526020018281526020019250505060405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612ce657600080fd5b505afa158015612cfa573d6000803e3d6000fd5b505050506040513d6020811015612d1057600080fd5b50516001600160a01b031614612d52576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038416600090815260376020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b158015612dcd57600080fd5b505af4158015612de1573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612e2f57600080fd5b505afa158015612e43573d6000803e3d6000fd5b505050506040513d6020811015612e5957600080fd5b50516001600160a01b031614612e9b576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038216600090815260376020526040902081612ecc57600c8101805460ff60e01b191690556126cd565b805415801590612ee0575060008160040154115b612f1b5760405162461bcd60e51b815260040180806020018281038252602481526020018061506e6024913960400191505060405180910390fd5b600c8101805460ff60e01b1916600160e01b179055505050565b600080600080600080600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711489603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015612faf57600080fd5b505afa158015612fc3573d6000803e3d6000fd5b505050506040513d6020811015612fd957600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c4909101908590801561306a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161304c575b5050965050505050505060c06040518083038186803b15801561308c57600080fd5b505af41580156130a0573d6000803e3d6000fd5b505050506040513d60c08110156130b657600080fd5b5080516020808301516040808501516060860151608087015160a090970151603654845163ab8bb39360e01b8152600481018990526024810187905260448101859052606481018490526001600160a01b0390911660848201529351969e50939c50909a50949750939550935073__$7347ff53b2b46c21e26a37164ae7f6739f$__9263ab8bb3939260a48083019392829003018186803b15801561315a57600080fd5b505af415801561316e573d6000803e3d6000fd5b505050506040513d602081101561318457600080fd5b50519698959750939594919390925090565b60006131a0614800565b60025490915060ff16806131b757506131b7614805565b806131c3575060015481115b6131fe5760405162461bcd60e51b815260040180806020018281038252602e8152602001806150b3602e913960400191505060405180910390fd5b60025460ff1615801561321f576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b15801561327b57600080fd5b505afa15801561328f573d6000803e3d6000fd5b505050506040513d60208110156132a557600080fd5b5051603680546001600160a01b0319166001600160a01b0390921691909117905580156126cd576002805460ff19169055505050565b6035546001600160a01b031681565b60026000541415613330576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0380861680835260376020908152604080852033808752603884528287209487529383528186206036548351630e563a7d60e41b81526004810196909652602486018b9052925191969095909492169263e563a7d09260448082019391829003018186803b1580156133af57600080fd5b505afa1580156133c3573d6000803e3d6000fd5b505050506040513d60208110156133d957600080fd5b505160088401549091506000906134fc90600a0a61202a6134008a8663ffffffff6147a616565b603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561344e57600080fd5b505afa158015613462573d6000803e3d6000fd5b505050506040513d602081101561347857600080fd5b50516040805163b3596f0760e01b81526001600160a01b038f811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156134c457600080fd5b505afa1580156134d8573d6000803e3d6000fd5b505050506040513d60208110156134ee57600080fd5b50519063ffffffff61470b16565b905073__$69254465eb8f179ea24caa73cf68b23524$__634c20618285858b8b868c896019603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561357557600080fd5b505afa158015613589573d6000803e3d6000fd5b505050506040513d602081101561359f57600080fd5b50516040516001600160e01b031960e08f901b168152600481018d8152602482018d90526001600160a01b03808d166044840152606483018c9052608483018b905260a483018a905260c4830189905260e48301889052610104830187905261012483018690528316610164830152610180610144830190815284546101848401819052919290916101a4909101908590801561366557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613647575b50509d505050505050505050505050505060006040518083038186803b15801561368e57600080fd5b505af41580156136a2573d6000803e3d6000fd5b505050506136af84614455565b60018660028111156136bd57fe5b60028111156136c857fe5b141561374c57600a840154600385015460408051630ab714fb60e11b8152336004820152602481018b90526044810192909252516001600160a01b039092169163156e29f69160648082019260009290919082900301818387803b15801561372f57600080fd5b505af1158015613743573d6000803e3d6000fd5b505050506137ba565b600b840154604080516340c10f1960e01b8152336004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b1580156137a157600080fd5b505af11580156137b5573d6000803e3d6000fd5b505050505b60038401546137d2858a60008b63ffffffff61412516565b6137ec6001600160a01b038a16338a63ffffffff61468916565b61ffff8616336001600160a01b038b167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808b8b60018d600281111561382d57fe5b600281111561383857fe5b14613847578a60020154613849565b865b60408051938452602084019290925282820152426060830152519081900360800190a45050600160005550505050505050565b600260005414156138c2576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0380841680835260376020908152604080852093861685526038825280852092855291815292819020905162461bcd60e51b815260048101938452602f602482018190529293919282916044019061500d823960400191505060405180910390fd5b60001981565b6001600160a01b03811660009081526037602052604081206118149061480b565b6002600054141561399f576040805162461bcd60e51b815260206004820152601f6024820152600080516020614f87833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0384168082526037602090815260408084203385526038835281852093855292909152808320815163664f158360e01b8152600481018490526024810187905291519293909273__$69254465eb8f179ea24caa73cf68b23524$__9263664f1583926044808301939192829003018186803b158015613a2b57600080fd5b505af4158015613a3f573d6000803e3d6000fd5b5050506009830154604080516370a0823160e01b815233600482015290516001600160a01b03909216925060009183916370a08231916024808301926020929190829003018186803b158015613a9457600080fd5b505afa158015613aa8573d6000803e3d6000fd5b505050506040513d6020811015613abe57600080fd5b5051159050613acc84614455565b613adf848888600063ffffffff61412516565b8015613af157825460ff191660011783555b604080516394362e8b60e01b81523360048201526024810188905290516001600160a01b038416916394362e8b91604480830192600092919082900301818387803b158015613b3f57600080fd5b505af1158015613b53573d6000803e3d6000fd5b50613b6d925050506001600160a01b0388168760016144ec565b60408051878152426020820152815161ffff88169233926001600160a01b038c16927fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a4505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015613c0c57600080fd5b505afa158015613c20573d6000803e3d6000fd5b505050506040513d6020811015613c3657600080fd5b50516001600160a01b031614613c78576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060050155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015613cdb57600080fd5b505afa158015613cef573d6000803e3d6000fd5b505050506040513d6020811015613d0557600080fd5b50516001600160a01b031614613d47576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038116600090815260376020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b158015613dad57600080fd5b505af4158015613dc1573d6000803e3d6000fd5b5050505050565b6000805b603954811015613e1557826001600160a01b031660398281548110613ded57fe5b6000918252602090912001546001600160a01b03161415613e0d57600191505b600101613dcc565b5080613e6757603980546001810182556000919091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30180546001600160a01b0319166001600160a01b0384161790555b5050565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015613ebc57600080fd5b505afa158015613ed0573d6000803e3d6000fd5b505050506040513d6020811015613ee657600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015613f3757600080fd5b505afa158015613f4b573d6000803e3d6000fd5b505050506040513d6020811015613f6157600080fd5b5051909590945092505050565b600a8101546040805163631a6fd560e11b81526001600160a01b03858116600483015291516000938493169163c634dfaa916024808301926020929190829003018186803b158015613fbf57600080fd5b505afa158015613fd3573d6000803e3d6000fd5b505050506040513d6020811015613fe957600080fd5b5051600b8401546040805163631a6fd560e11b81526001600160a01b0388811660048301529151919092169163c634dfaa916024808301926020929190829003018186803b158015613f3757600080fd5b600061404583614611565b1561405b57506001600160a01b03811631611814565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156140b157600080fd5b505afa1580156140c5573d6000803e3d6000fd5b505050506040513d60208110156140db57600080fd5b50519392505050565b60008061411e8360040154614112856002015486600c0160149054906101000a900464ffffffffff16614839565b9063ffffffff61489e16565b9392505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561416c57600080fd5b505afa158015614180573d6000803e3d6000fd5b505050506040513d602081101561419657600080fd5b5051905060006141b56001600160a01b0386163063ffffffff61403a16565b90506141c9856001600160a01b0316614611565b156141e1576141de813463ffffffff61464716565b90505b600c860154600090819081906001600160a01b03166357e37af08961421c89614210898d63ffffffff6147a616565b9063ffffffff61464716565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561426c57600080fd5b505afa158015614280573d6000803e3d6000fd5b505050506040513d602081101561429657600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156142df57600080fd5b505afa1580156142f3573d6000803e3d6000fd5b505050506040513d602081101561430957600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b15801561436c57600080fd5b505afa158015614380573d6000803e3d6000fd5b505050506040513d606081101561439657600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e01819055600c8e01805464ffffffffff4216600160a01b0264ffffffffff60a01b199091161790558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b6000614460826148d6565b90508015613e67576001820154600c83015460009161448c91600160a01b900464ffffffffff166149d6565b83549091506144a290829063ffffffff61489e16565b83556002830154600c8401546000916144c891600160a01b900464ffffffffff16614839565b90506144e184600401548261489e90919063ffffffff16565b600485015550505050565b816144f6576126cd565b6144ff83614611565b156145f657813410156145435760405162461bcd60e51b8152600401808060200182810382526035815260200180614fd86035913960400191505060405180910390fd5b80156145f15760003361455c348563ffffffff61464716565b60405161c35091906000818181858888f193505050503d806000811461459e576040519150601f19603f3d011682016040523d82523d6000602084013e6145a3565b606091505b50509050806145ef576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b505b6126cd565b6126cd6001600160a01b03841633308563ffffffff614a4216565b60006001600160a01b03821615806118145750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600061411e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614aa2565b80614693576126cd565b61469c83614611565b156146f1576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d806000811461459e576040519150601f19603f3d011682016040523d82523d6000602084013e6145a3565b6126cd6001600160a01b038416838363ffffffff614afc16565b60008261471a57506000611814565b8282028284828161472757fe5b041461411e5760405162461bcd60e51b81526004018080602001828103825260218152602001806150926021913960400191505060405180910390fd5b600061411e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614b4e565b60008282018381101561411e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b60008061411e8360000154614112856001015486600c0160149054906101000a900464ffffffffff166149d6565b6000806148534264ffffffffff851663ffffffff61464716565b9050600061486b856301e1338063ffffffff61476416565b90506148958261488961487c614bb3565b849063ffffffff6147a616565b9063ffffffff614bc316565b95945050505050565b600061411e6b033b2e3c9fd0803ce800000061202a6148c3868663ffffffff61470b16565b6b019d971e4fe8401e74000000906147a6565b600061181482600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561492b57600080fd5b505afa15801561493f573d6000803e3d6000fd5b505050506040513d602081101561495557600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561499e57600080fd5b505afa1580156149b2573d6000803e3d6000fd5b505050506040513d60208110156149c857600080fd5b50519063ffffffff6147a616565b6000806149f04264ffffffffff851663ffffffff61464716565b90506000614a19614a046301e13380614c1d565b614a0d84614c1d565b9063ffffffff614c3316565b9050614895614a26614bb3565b614a36878463ffffffff61489e16565b9063ffffffff6147a616565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052614a9c908590614c56565b50505050565b60008184841115614af45760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f9e578181015183820152602001610f86565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526126cd908490614c56565b60008183614b9d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f9e578181015183820152602001610f86565b506000838581614ba957fe5b0495945050505050565b6b033b2e3c9fd0803ce800000090565b600060028206614bdf576b033b2e3c9fd0803ce8000000614be1565b825b90506002820491505b811561181457614bfa838461489e565b92506002820615614c1257614c0f818461489e565b90505b600282049150614bea565b600061181482633b9aca0063ffffffff61470b16565b600060028204610c1b8361202a61487c876b033b2e3c9fd0803ce800000061470b565b6060614cab826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d079092919063ffffffff16565b8051909150156126cd57808060200190516020811015614cca57600080fd5b50516126cd5760405162461bcd60e51b815260040180806020018281038252602a815260200180615113602a913960400191505060405180910390fd5b6060610c1b84846000856060614d1c85610be7565b614d6d576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310614dac5780518252601f199092019160209182019101614d8d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614e0e576040519150601f19603f3d011682016040523d82523d6000602084013e614e13565b606091505b50915091508115614e27579150610c1b9050565b805115614e375780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610f9e578181015183820152602001610f86565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f7754686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120466c6173684c6f616e2e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220280e18aa50b3d32a7b0c06a15e30d49e16e0d3f3aeb382ebb1163de8764f879064736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b506001600055615a14806200002b6000396000f3fe6080604052600436106101fc5760003560e01c806373b2f2f21161010d578063c4d66de8116100a0578063d0fc81d21161006f578063d0fc81d214610b0d578063d15e005314610b22578063d2d0e06614610b55578063d466016f14610b8b578063e8ae2f5b14610bc457610242565b8063c4d66de814610a41578063c72c4d1014610a74578063c858f5f914610a89578063cd11238214610ad257610242565b80639895e3d8116100dc5780639895e3d81461090d578063a5bc826c14610956578063b736aaeb1461099b578063bf92857c146109d657610242565b806373b2f2f21461082b57806376e9d615146108665780638afaff02146108bd57806396e957c4146108d257610242565b80633e150141116101905780635a3b74b91161015f5780635a3b74b9146106685780635cffe9de146106a357806366bbd928146107765780636ee365f9146107af57806370fb84f4146107f257610242565b80633e1501411461052057806348ca1300146105b55780634fe7a6e5146105e8578063573ade811461062e57610242565b806328dd2d01116101cc57806328dd2d01146103845780633443a14b1461041857806335ea6a7514610451578063386497fd146104db57610242565b8062a718a9146102475780630902f1ac1461028b57806309eab60f146102f05780631d2118f91461034957610242565b366102425761020a33610bf7565b610240576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b610240600480360360a081101561025d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610c33565b34801561029757600080fd5b506102a0610ffa565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102dc5781810151838201526020016102c4565b505050509050019250505060405180910390f35b3480156102fc57600080fd5b50610240600480360360c081101561031357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160808201359160a001351661105c565b34801561035557600080fd5b506102406004803603604081101561036c57600080fd5b506001600160a01b03813581169160200135166111c3565b34801561039057600080fd5b506103bf600480360360408110156103a757600080fd5b506001600160a01b03813581169160200135166112a4565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015264ffffffffff16610100840152151561012083015251908190036101400190f35b34801561042457600080fd5b506102406004803603604081101561043b57600080fd5b506001600160a01b0381351690602001356115cb565b34801561045d57600080fd5b506104846004803603602081101561047457600080fd5b50356001600160a01b031661169a565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015264ffffffffff1661012083015251908190036101400190f35b3480156104e757600080fd5b5061050e600480360360208110156104fe57600080fd5b50356001600160a01b0316611986565b60408051918252519081900360200190f35b34801561052c57600080fd5b506105536004803603602081101561054357600080fd5b50356001600160a01b03166119ad565b604080519a8b5260208b0199909952898901979097526001600160a01b0395861660608a015293909416608088015290151560a0870152151560c086015290151560e08501521515610100840152151561012083015251908190036101400190f35b3480156105c157600080fd5b50610240600480360360208110156105d857600080fd5b50356001600160a01b0316611a23565b3480156105f457600080fd5b506106126004803603602081101561060b57600080fd5b5035611ad1565b604080516001600160a01b039092168252519081900360200190f35b6102406004803603608081101561064457600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611af8565b34801561067457600080fd5b506102406004803603604081101561068b57600080fd5b506001600160a01b03813516906020013515156120ce565b3480156106af57600080fd5b50610240600480360360808110156106c657600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561070157600080fd5b82018360208201111561071357600080fd5b8035906020019184600183028401116401000000008311171561073557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612334945050505050565b34801561078257600080fd5b506102406004803603604081101561079957600080fd5b506001600160a01b0381351690602001356127dd565b3480156107bb57600080fd5b50610240600480360360608110156107d257600080fd5b506001600160a01b038135169060208101351515906040013515156128ac565b3480156107fe57600080fd5b506102406004803603604081101561081557600080fd5b506001600160a01b038135169060200135612a71565b34801561083757600080fd5b506102406004803603604081101561084e57600080fd5b506001600160a01b0381351690602001351515612b40565b34801561087257600080fd5b506108a96004803603606081101561088957600080fd5b506001600160a01b03813581169160208101359091169060400135612c28565b604080519115158252519081900360200190f35b3480156108c957600080fd5b5061050e612db8565b3480156108de57600080fd5b50610240600480360360408110156108f557600080fd5b506001600160a01b0381351690602001351515612dbd565b34801561091957600080fd5b506102406004803603608081101561093057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612ea5565b34801561096257600080fd5b506102406004803603608081101561097957600080fd5b506001600160a01b038135169060208101359060408101359060600135613041565b3480156109a757600080fd5b50610240600480360360408110156109be57600080fd5b506001600160a01b038135169060200135151561318a565b3480156109e257600080fd5b50610a09600480360360208110156109f957600080fd5b50356001600160a01b03166132d4565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a4d57600080fd5b5061024060048036036020811015610a6457600080fd5b50356001600160a01b0316613535565b348015610a8057600080fd5b5061061261367a565b348015610a9557600080fd5b5061024060048036036080811015610aac57600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff16613689565b348015610ade57600080fd5b5061024060048036036040811015610af557600080fd5b506001600160a01b0381358116916020013516613d24565b348015610b1957600080fd5b5061050e613dda565b348015610b2e57600080fd5b5061050e60048036036020811015610b4557600080fd5b50356001600160a01b0316613de0565b61024060048036036060811015610b6b57600080fd5b5080356001600160a01b0316906020810135906040013561ffff16613e01565b348015610b9757600080fd5b5061024060048036036040811015610bae57600080fd5b506001600160a01b038135169060200135614070565b348015610bd057600080fd5b5061024060048036036020811015610be757600080fd5b50356001600160a01b031661413f565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c2b57508115155b949350505050565b60026000541415610c79576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b158015610cc557600080fd5b505afa158015610cd9573d6000803e3d6000fd5b505050506040513d6020811015610cef57600080fd5b5051604080516001600160a01b038981166024830152888116604483015287811660648301526084820187905285151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b60208310610d895780518252601f199092019160209182019101610d6a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610de9576040519150601f19603f3d011682016040523d82523d6000602084013e610dee565b606091505b509150915081610e2a576040805162461bcd60e51b81526020600482015260026024820152610c8d60f21b604482015290519081900360640190fd5b60006060828060200190516040811015610e4357600080fd5b815160208301805160405192949293830192919084640100000000821115610e6a57600080fd5b908301906020820185811115610e7f57600080fd5b8251640100000000811182820188101715610e9957600080fd5b82525081516020918201929091019080838360005b83811015610ec6578181015183820152602001610eae565b50505050905090810190601f168015610ef35780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610fe957806040516020018082805190602001908083835b60208310610f395780518252601f199092019160209182019101610f1a565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610fae578181015183820152602001610f96565b50505050905090810190601f168015610fdb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505060016000555050505050505050565b6060603980548060200260200160405190810160405280929190818152602001828054801561105257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611034575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156110a057600080fd5b505afa1580156110b4573d6000803e3d6000fd5b505050506040513d60208110156110ca57600080fd5b50516001600160a01b03161461110c576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038087166000908152603760205260408082208151630b25f31560e01b815260048101919091528884166024820152878416604482015286841660648201526084810186905292841660a48401525173__$2ec35834968386f54fa313129cf94664e4$__92630b25f3159260c4808301939192829003018186803b15801561119a57600080fd5b505af41580156111ae573d6000803e3d6000fd5b505050506111bb86614270565b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561120757600080fd5b505afa15801561121b573d6000803e3d6000fd5b505050506040513d602081101561123157600080fd5b50516001600160a01b031614611273576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039182166000908152603760205260409020600c0180546001600160a01b03191691909216179055565b6001600160a01b038083166000908152603760209081526040808320600981015482516370a0823160e01b815287871660048201529251949586958695869586958695869586958695869593909216926370a08231926024808301939192829003018186803b15801561131657600080fd5b505afa15801561132a573d6000803e3d6000fd5b505050506040513d602081101561134057600080fd5b50519a5061134e8c82614313565b909a50985061135d8c82614416565b80985081995050508060010154945080600a0160009054906101000a90046001600160a01b03166001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d602081101561140357600080fd5b8101908080519060200190929190505050955080600a0160009054906101000a90046001600160a01b03166001600160a01b03166379ce6b8c8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561148357600080fd5b505afa158015611497573d6000803e3d6000fd5b505050506040513d60208110156114ad57600080fd5b81019080805190602001909291905050509250603860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060000160009054906101000a900460ff16915080600b0160009054906101000a90046001600160a01b03166001600160a01b031663ee9907a48d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561158857600080fd5b505afa15801561159c573d6000803e3d6000fd5b505050506040513d60208110156115b257600080fd5b50519a9d999c50979a5095989497939650919491929050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561160f57600080fd5b505afa158015611623573d6000803e3d6000fd5b505050506040513d602081101561163957600080fd5b50516001600160a01b03161461167b576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060060155565b6000806000806000806000806000806116b16156f2565b506001600160a01b03808c16600081815260376020908152604091829020825161026081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201548416610120820152600a8201548416610140820152600b8201548416610160820152600c9091015492831661018082015264ffffffffff600160a01b8404166101a082015260ff600160c81b8404811615156101c0830152600160d01b8404811615156101e0830152600160d81b840481161515610200830152600160e01b840481161515610220830152600160e81b90930490921615156102408301526117e4903063ffffffff6144e216565b8161014001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182257600080fd5b505afa158015611836573d6000803e3d6000fd5b505050506040513d602081101561184c57600080fd5b5051610160830151604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d60208110156118c057600080fd5b50516020848101516040808701516060880151610140890151835163487b7e7960e11b815293519495929491936001600160a01b03909116926390f6fcf292600480840193829003018186803b15801561191957600080fd5b505afa15801561192d573d6000803e3d6000fd5b505050506040513d602081101561194357600080fd5b810190808051906020019092919050505087600001518860800151896101a001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b03811660009081526037602052604081206119a79061458c565b92915050565b6001600160a01b039081166000908152603760205260409020600581015460068201546007830154600c840154600990940154929591949093808216939091169160ff600160d01b8304811692600160c81b8104821692600160d81b8204831692600160e01b8304811692600160e81b90041690565b60026000541415611a69576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0382168082526037602090815260408084203380865260388452828620948652939092528320909290918190611aad9085614313565b9092509050611ac5848660008063ffffffff6145cd16565b50506001600055505050565b60398181548110611ade57fe5b6000918252602090912001546001600160a01b0316905081565b60026000541415611b3e576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b6002600055611b4b61578e565b6001600160a01b038086166000818152603760209081526040808320948716835260388252808320938352928152908290208251808401909352601383527223b2ba3a34b733903130b630b731b2b997171760691b9183019190915290611bb1906148d9565b611bbb8483614313565b602080860191825291855260408051808201909152601a81527f42616c616e6365732063616c63756c617465642c2025732025730000000000009281019290925284519051611c0b929190614a0f565b611c4260405180604001604052806015815260200174496e7465726573742072617465206d6f646520257360581b81525086614b60565b6000856002811115611c5057fe5b9050611c8960405180604001604052806015815260200174496e7465726573742072617465206d6f646520257360581b81525087614b60565b6001816002811115611c9757fe5b14611ca6578360200151611ca9565b83515b6060850190815260408051808201825260208082527f5061796261636b20616d6f756e7420257320737461626c652072617465202573818301529251600a870154835163e78c9b3b60e01b81526001600160a01b038b811660048301529451611d669694959394939092169263e78c9b3b92602480840193829003018186803b158015611d3557600080fd5b505afa158015611d49573d6000803e3d6000fd5b505050506040513d6020811015611d5f57600080fd5b5051614a0f565b6000198714158015611d7b5750836060015187105b15611d8857606084018790525b611dbc604051806040016040528060138152602001722b30b634b230ba34b733903932b830bc97171760691b8152506148d9565b73__$69254465eb8f179ea24caa73cf68b23524$__63d454c1cc848a8a858a8a600001518b602001518c60600151346040518a63ffffffff1660e01b8152600401808a8152602001896001600160a01b03166001600160a01b03168152602001888152602001876002811115611e2e57fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001838152602001828152602001995050505050505050505060006040518083038186803b158015611e8957600080fd5b505af4158015611e9d573d6000803e3d6000fd5b50505050611eaa83614ca8565b611edc60405180604001604052806011815260200170213ab93734b733903a37b5b2b73997171760791b8152506148d9565b6001816002811115611eea57fe5b1415611f6a57600a830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611f4d57600080fd5b505af1158015611f61573d6000803e3d6000fd5b50505050611fe0565b600b830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611fc757600080fd5b505af1158015611fdb573d6000803e3d6000fd5b505050505b6060840151611ffa9084908a90600063ffffffff6145cd16565b606084015161201b906001600160a01b038a1690600063ffffffff614d6016565b61202d886001600160a01b0316614e85565b1561206f57600061204b856060015134614ebb90919063ffffffff16565b9050801561206d5761206d6001600160a01b038a16338363ffffffff614efd16565b505b606084015160408051918252426020830152805133926001600160a01b0389811693908d16927f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc9281900390910190a450506001600055505050505050565b60026000541415612114576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168083526037602081815260408086203387526038808452828820958852948352958190206035548251631f94a27560e31b81529251919673__$69254465eb8f179ea24caa73cf68b23524$__9663d73dac72968a968d9691959294603994169263fca513a8926004808201939291829003018186803b1580156121a857600080fd5b505afa1580156121bc573d6000803e3d6000fd5b505050506040513d60208110156121d257600080fd5b50516040516001600160e01b031960e089901b168152600481018781526001600160a01b0380881660248401526044830187905260648301869052831660a483015260c060848301908152845460c484018190529192909160e4909101908590801561226757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612249575b505097505050505050505060006040518083038186803b15801561228a57600080fd5b505af415801561229e573d6000803e3d6000fd5b5050825460ff19168515801591909117845591506122f290505760405133906001600160a01b038616907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3612329565b60405133906001600160a01b038616907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505060016000555050565b6002600054141561237a576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b60026000556123876157cb565b6001600160a01b0384166000818152603760205260409020906123b0903063ffffffff6144e216565b82526123d56127106123c986600963ffffffff614f7f16565b9063ffffffff614fd816565b606083018190526123f690612710906123c990610bb863ffffffff614f7f16565b6080830152815184111561243b5760405162461bcd60e51b815260040180806020018281038252603181526020018061581b6031913960400191505060405180910390fd5b60008260600151118015612453575060008260800151115b61248e5760405162461bcd60e51b81526004018080602001828103825260328152602001806159836032913960400191505060405180910390fd5b85806124aa6001600160a01b038816828863ffffffff614efd16565b816001600160a01b031663ee87255888888760600151896040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612531578181015183820152602001612519565b50505050905090810190601f16801561255e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561258057600080fd5b505af1158015612594573d6000803e3d6000fd5b50600092506125b59150506001600160a01b0389163063ffffffff6144e216565b606086015186519192506125cf919063ffffffff61501a16565b811461260c5760405162461bcd60e51b81526004018080602001828103825260328152602001806158b06032913960400191505060405180910390fd5b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__63a023726490918a886000015161264a8a608001518b60600151614ebb90919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060006040518083038186803b1580156126b157600080fd5b505af41580156126c5573d6000803e3d6000fd5b50505050612762603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561271a57600080fd5b505afa15801561272e573d6000803e3d6000fd5b505050506040513d602081101561274457600080fd5b505160808701516001600160a01b038b16919063ffffffff614efd16565b876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050600160005550505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561282157600080fd5b505afa158015612835573d6000803e3d6000fd5b505050506040513d602081101561284b57600080fd5b50516001600160a01b03161461288d576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060080155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156128f057600080fd5b505afa158015612904573d6000803e3d6000fd5b505050506040513d602081101561291a57600080fd5b50516001600160a01b03161461295c576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b81156129ed576001600160a01b0383166000908152603760205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b1580156129d057600080fd5b505af41580156129e4573d6000803e3d6000fd5b50505050612a6c565b6001600160a01b03831660009081526037602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b158015612a5357600080fd5b505af4158015612a67573d6000803e3d6000fd5b505050505b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d6020811015612adf57600080fd5b50516001600160a01b031614612b21576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060070155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612b8457600080fd5b505afa158015612b98573d6000803e3d6000fd5b505050506040513d6020811015612bae57600080fd5b50516001600160a01b031614612bf0576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160d81b0260ff60d81b19909216919091179055565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__634d9afd5e858585603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015612c9b57600080fd5b505afa158015612caf573d6000803e3d6000fd5b505050506040513d6020811015612cc557600080fd5b505160405160e089811b6001600160e01b03191682526001600160a01b0389811660048401908152898216602485015260448401899052606484018890526084840187905290841660c484015260a48301918252845460e484018190529092610104019085908015612d6057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612d42575b50509850505050505050505060206040518083038186803b158015612d8457600080fd5b505af4158015612d98573d6000803e3d6000fd5b505050506040513d6020811015612dae57600080fd5b5051949350505050565b600281565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612e0157600080fd5b505afa158015612e15573d6000803e3d6000fd5b505050506040513d6020811015612e2b57600080fd5b50516001600160a01b031614612e6d576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160e81b0260ff60e81b19909216919091179055565b60026000541415612eeb576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085209388168552603882528085208386529091528084208151630d9e1f7160e11b81526004810185905260248101939093526044830187905290519293909273__$69254465eb8f179ea24caa73cf68b23524$__92631b3c3ee2926064808301939192829003018186803b158015612f8157600080fd5b505af4158015612f95573d6000803e3d6000fd5b505050508260001415612fab57805460ff191681555b612fb482614ca8565b612fc7828760008763ffffffff6145cd16565b612fe16001600160a01b038716868663ffffffff614efd16565b846001600160a01b0316866001600160a01b03167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68642604051808381526020018281526020019250505060405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561308557600080fd5b505afa158015613099573d6000803e3d6000fd5b505050506040513d60208110156130af57600080fd5b50516001600160a01b0316146130f1576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038416600090815260376020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561316c57600080fd5b505af4158015613180573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156131ce57600080fd5b505afa1580156131e2573d6000803e3d6000fd5b505050506040513d60208110156131f857600080fd5b50516001600160a01b03161461323a576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03821660009081526037602052604090208161326b57600c8101805460ff60e01b19169055612a6c565b80541580159061327f575060008160040154115b6132ba5760405162461bcd60e51b81526004018080602001828103825260248152602001806158e26024913960400191505060405180910390fd5b600c8101805460ff60e01b1916600160e01b179055505050565b600080600080600080600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711489603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561334e57600080fd5b505afa158015613362573d6000803e3d6000fd5b505050506040513d602081101561337857600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c4909101908590801561340957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116133eb575b5050965050505050505060c06040518083038186803b15801561342b57600080fd5b505af415801561343f573d6000803e3d6000fd5b505050506040513d60c081101561345557600080fd5b5080516020808301516040808501516060860151608087015160a090970151603654845163ab8bb39360e01b8152600481018990526024810187905260448101859052606481018490526001600160a01b0390911660848201529351969e50939c50909a50949750939550935073__$7347ff53b2b46c21e26a37164ae7f6739f$__9263ab8bb3939260a48083019392829003018186803b1580156134f957600080fd5b505af415801561350d573d6000803e3d6000fd5b505050506040513d602081101561352357600080fd5b50519698959750939594919390925090565b600061353f615074565b60025490915060ff16806135565750613556615079565b80613562575060015481115b61359d5760405162461bcd60e51b815260040180806020018281038252602e815260200180615955602e913960400191505060405180910390fd5b60025460ff161580156135be576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b15801561361a57600080fd5b505afa15801561362e573d6000803e3d6000fd5b505050506040513d602081101561364457600080fd5b5051603680546001600160a01b0319166001600160a01b039092169190911790558015612a6c576002805460ff19169055505050565b6035546001600160a01b031681565b600260005414156136cf576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085203386526038835281862093865292825280852060088401546035548351631f94a27560e31b8152935195979296929561380195600a9390930a946123c9948d9493169263fca513a892600480840193829003018186803b15801561375357600080fd5b505afa158015613767573d6000803e3d6000fd5b505050506040513d602081101561377d57600080fd5b50516040805163b3596f0760e01b81526001600160a01b038e811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156137c957600080fd5b505afa1580156137dd573d6000803e3d6000fd5b505050506040513d60208110156137f357600080fd5b50519063ffffffff614f7f16565b905073__$69254465eb8f179ea24caa73cf68b23524$__6305011d4884848a8a868b6019603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561387957600080fd5b505afa15801561388d573d6000803e3d6000fd5b505050506040513d60208110156138a357600080fd5b50516040516001600160e01b031960e08e901b168152600481018c8152602482018c90526001600160a01b03808c166044840152606483018b9052608483018a905260a4830189905260c4830188905260e483018790526101048301869052831661014483015261016061012483019081528454610164840181905291929091610184909101908590801561396157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613943575b50509c5050505050505050505050505060006040518083038186803b15801561398957600080fd5b505af415801561399d573d6000803e3d6000fd5b505050506139aa83614ca8565b600c8301805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055600383015460018660028111156139df57fe5b60028111156139ea57fe5b1415613a6957600a84015460408051630ab714fb60e11b8152336004820152602481018a90526044810184905290516001600160a01b039092169163156e29f69160648082019260009290919082900301818387803b158015613a4c57600080fd5b505af1158015613a60573d6000803e3d6000fd5b50505050613ad7565b600b840154604080516340c10f1960e01b8152336004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015613abe57600080fd5b505af1158015613ad2573d6000803e3d6000fd5b505050505b613aea848960008a63ffffffff6145cd16565b613b046001600160a01b038916338963ffffffff614efd16565b600080613b113387614313565b91509150613b4c60405180604001604052806014815260200173446562742062616c616e6365733a20257320257360601b8152508383614a0f565b613beb6040518060600160405280602e8152602001615927602e9139600b88015460408051633ba641e960e21b815233600482015290516001600160a01b039092169163ee9907a491602480820192602092909190829003018186803b158015613bb557600080fd5b505afa158015613bc9573d6000803e3d6000fd5b505050506040513d6020811015613bdf57600080fd5b50516004890154614a0f565b60408051808201825260138152725573657220737461626c65207261746520257360681b602080830191909152600a890154835163e78c9b3b60e01b81523360048201529351613c93946001600160a01b039092169263e78c9b3b9260248082019391829003018186803b158015613c6257600080fd5b505afa158015613c76573d6000803e3d6000fd5b505050506040513d6020811015613c8c57600080fd5b5051614b60565b61ffff8716336001600160a01b038c167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808c8c60018e6002811115613cd457fe5b6002811115613cdf57fe5b14613cee578b60020154613cf0565b885b60408051938452602084019290925282820152426060830152519081900360800190a4505060016000555050505050505050565b60026000541415613d6a576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0380841680835260376020908152604080852093861685526038825280852092855291815292819020905162461bcd60e51b815260048101938452602f6024820181905292939192829160440190615881823960400191505060405180910390fd5b60001981565b6001600160a01b03811660009081526037602052604081206119a79061507f565b60026000541415613e47576040805162461bcd60e51b815260206004820152601f60248201526000805160206157fb833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0384168082526037602090815260408084203385526038835281852093855292909152808320815163664f158360e01b8152600481018490526024810187905291519293909273__$69254465eb8f179ea24caa73cf68b23524$__9263664f1583926044808301939192829003018186803b158015613ed357600080fd5b505af4158015613ee7573d6000803e3d6000fd5b5050506009830154604080516370a0823160e01b815233600482015290516001600160a01b03909216925060009183916370a08231916024808301926020929190829003018186803b158015613f3c57600080fd5b505afa158015613f50573d6000803e3d6000fd5b505050506040513d6020811015613f6657600080fd5b5051159050613f7484614ca8565b613f87848888600063ffffffff6145cd16565b8015613f9957825460ff191660011783555b604080516394362e8b60e01b81523360048201526024810188905290516001600160a01b038416916394362e8b91604480830192600092919082900301818387803b158015613fe757600080fd5b505af1158015613ffb573d6000803e3d6000fd5b50614015925050506001600160a01b038816876001614d60565b60408051878152426020820152815161ffff88169233926001600160a01b038c16927fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a4505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156140b457600080fd5b505afa1580156140c8573d6000803e3d6000fd5b505050506040513d60208110156140de57600080fd5b50516001600160a01b031614614120576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060050155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561418357600080fd5b505afa158015614197573d6000803e3d6000fd5b505050506040513d60208110156141ad57600080fd5b50516001600160a01b0316146141ef576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038116600090815260376020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b15801561425557600080fd5b505af4158015614269573d6000803e3d6000fd5b5050505050565b6000805b6039548110156142bd57826001600160a01b03166039828154811061429557fe5b6000918252602090912001546001600160a01b031614156142b557600191505b600101614274565b508061430f57603980546001810182556000919091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30180546001600160a01b0319166001600160a01b0384161790555b5050565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b15801561436457600080fd5b505afa158015614378573d6000803e3d6000fd5b505050506040513d602081101561438e57600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b1580156143df57600080fd5b505afa1580156143f3573d6000803e3d6000fd5b505050506040513d602081101561440957600080fd5b5051909590945092505050565b600a8101546040805163631a6fd560e11b81526001600160a01b03858116600483015291516000938493169163c634dfaa916024808301926020929190829003018186803b15801561446757600080fd5b505afa15801561447b573d6000803e3d6000fd5b505050506040513d602081101561449157600080fd5b5051600b8401546040805163631a6fd560e11b81526001600160a01b0388811660048301529151919092169163c634dfaa916024808301926020929190829003018186803b1580156143df57600080fd5b60006144ed83614e85565b1561450357506001600160a01b038116316119a7565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561455957600080fd5b505afa15801561456d573d6000803e3d6000fd5b505050506040513d602081101561458357600080fd5b50519392505050565b6000806145c683600401546145ba856002015486600c0160149054906101000a900464ffffffffff166150ad565b9063ffffffff61511216565b9392505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561461457600080fd5b505afa158015614628573d6000803e3d6000fd5b505050506040513d602081101561463e57600080fd5b50519050600061465d6001600160a01b0386163063ffffffff6144e216565b9050614671856001600160a01b0316614e85565b1561468957614686813463ffffffff614ebb16565b90505b600c860154600090819081906001600160a01b03166357e37af0896146c4896146b8898d63ffffffff61501a16565b9063ffffffff614ebb16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561471457600080fd5b505afa158015614728573d6000803e3d6000fd5b505050506040513d602081101561473e57600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561478757600080fd5b505afa15801561479b573d6000803e3d6000fd5b505050506040513d60208110156147b157600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b15801561481457600080fd5b505afa158015614828573d6000803e3d6000fd5b505050506040513d606081101561483e57600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b6040516020602482018181528351604484015283516000936a636f6e736f6c652e6c6f67938693928392606401918501908083838a5b8381101561492757818101518382015260200161490f565b50505050905090810190601f1680156149545780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663104c13eb60e21b178152905182519295509350839250908083835b602083106149af5780518252601f199092019160209182019101614990565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614269576040519150601f19603f3d011682016040523d82523d6000602084013e614269565b60006a636f6e736f6c652e6c6f676001600160a01b03168484846040516024018080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015614a75578181015183820152602001614a5d565b50505050905090810190601f168015614aa25780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663969cdd0360e01b178152905182519297509550859450925090508083835b60208310614b005780518252601f199092019160209182019101614ae1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612a67576040519150601f19603f3d011682016040523d82523d6000602084013e612a67565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015614bbf578181015183820152602001614ba7565b50505050905090810190601f168015614bec5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166309710a9d60e41b17815290518251929650945084935091508083835b60208310614c485780518252601f199092019160209182019101614c29565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146111bb576040519150601f19603f3d011682016040523d82523d6000602084013e6111bb565b6000614cb38261514a565b90508015614d3c576001820154600c830154600091614cdf91600160a01b900464ffffffffff1661524a565b8354909150614cf590829063ffffffff61511216565b83556002830154600c840154600091614d1b91600160a01b900464ffffffffff166150ad565b9050614d3484600401548261511290919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b81614d6a57612a6c565b614d7383614e85565b15614e6a5781341015614db75760405162461bcd60e51b815260040180806020018281038252603581526020018061584c6035913960400191505060405180910390fd5b8015614e6557600033614dd0348563ffffffff614ebb16565b60405161c35091906000818181858888f193505050503d8060008114614e12576040519150601f19603f3d011682016040523d82523d6000602084013e614e17565b606091505b5050905080614e63576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b505b612a6c565b612a6c6001600160a01b03841633308563ffffffff6152b616565b60006001600160a01b03821615806119a75750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60006145c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615316565b80614f0757612a6c565b614f1083614e85565b15614f65576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114614e12576040519150601f19603f3d011682016040523d82523d6000602084013e614e17565b612a6c6001600160a01b038416838363ffffffff61537016565b600082614f8e575060006119a7565b82820282848281614f9b57fe5b04146145c65760405162461bcd60e51b81526004018080602001828103825260218152602001806159066021913960400191505060405180910390fd5b60006145c683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506153c2565b6000828201838110156145c6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b6000806145c683600001546145ba856001015486600c0160149054906101000a900464ffffffffff1661524a565b6000806150c74264ffffffffff851663ffffffff614ebb16565b905060006150df856301e1338063ffffffff614fd816565b9050615109826150fd6150f0615427565b849063ffffffff61501a16565b9063ffffffff61543716565b95945050505050565b60006145c66b033b2e3c9fd0803ce80000006123c9615137868663ffffffff614f7f16565b6b019d971e4fe8401e740000009061501a565b60006119a782600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561519f57600080fd5b505afa1580156151b3573d6000803e3d6000fd5b505050506040513d60208110156151c957600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561521257600080fd5b505afa158015615226573d6000803e3d6000fd5b505050506040513d602081101561523c57600080fd5b50519063ffffffff61501a16565b6000806152644264ffffffffff851663ffffffff614ebb16565b9050600061528d6152786301e13380615491565b61528184615491565b9063ffffffff6154a716565b905061510961529a615427565b6152aa878463ffffffff61511216565b9063ffffffff61501a16565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526153109085906154ca565b50505050565b600081848411156153685760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fae578181015183820152602001610f96565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612a6c9084906154ca565b600081836154115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fae578181015183820152602001610f96565b50600083858161541d57fe5b0495945050505050565b6b033b2e3c9fd0803ce800000090565b600060028206615453576b033b2e3c9fd0803ce8000000615455565b825b90506002820491505b81156119a75761546e8384615112565b92506002820615615486576154838184615112565b90505b60028204915061545e565b60006119a782633b9aca0063ffffffff614f7f16565b600060028204610c2b836123c96150f0876b033b2e3c9fd0803ce8000000614f7f565b606061551f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661557b9092919063ffffffff16565b805190915015612a6c5780806020019051602081101561553e57600080fd5b5051612a6c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806159b5602a913960400191505060405180910390fd5b6060610c2b8484600085606061559085610bf7565b6155e1576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106156205780518252601f199092019160209182019101615601565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615682576040519150601f19603f3d011682016040523d82523d6000602084013e615687565b606091505b5091509150811561569b579150610c2b9050565b8051156156ab5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610fae578181015183820152602001610f96565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f7754686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7755736572207661726961626c6520626f72726f7720696e646578202573207265736572766520696e646578202573436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120466c6173684c6f616e2e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220a2d03ef5d202ffa661388bc7d0010bd20213170222ad0eb0dbd313a91226573d64736f6c63430006080033"; export interface LendingPoolLibraryAddresses { ["__$2ec35834968386f54fa313129cf94664e4$__"]: string; diff --git a/types/LendingPoolLiquidationManagerFactory.ts b/types/LendingPoolLiquidationManagerFactory.ts index 6f997de1..83031d0b 100644 --- a/types/LendingPoolLiquidationManagerFactory.ts +++ b/types/LendingPoolLiquidationManagerFactory.ts @@ -252,7 +252,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b50600160005561178d8061002a6000396000f3fe6080604052600436106100335760003560e01c8062a718a9146100385780634fe7a6e5146100fb578063c72c4d1014610141575b600080fd5b61007c600480360360a081101561004e57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610156565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100bf5781810151838201526020016100a7565b50505050905090810190601f1680156100ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561010757600080fd5b506101256004803603602081101561011e57600080fd5b5035610a06565b604080516001600160a01b039092168252519081900360200190f35b34801561014d57600080fd5b50610125610a2d565b6001600160a01b038481166000818152603760209081526040808320948a1680845281842033855260388452828520958552949092528083209183528220919360609390929091906101a6611551565b73__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711433603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d602081101561023f57600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156102d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102b2575b5050965050505050505060c06040518083038186803b1580156102f257600080fd5b505af4158015610306573d6000803e3d6000fd5b505050506040513d60c081101561031c57600080fd5b5060a001516101c08201819052670de0b6b3a764000011610360576004604051806060016040528060288152602001611706602891399650965050505050506109fc565b8b6001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d60208110156103e057600080fd5b505180825261042f5760016040518060400160405280601f81526020017f496e76616c696420636f6c6c61746572616c20746f206c6971756964617465008152509650965050505050506109fc565b600c840154600160d01b900460ff16801561044b5750815460ff165b151561020082018190526104825760026040518060600160405280602a81526020016116b2602a91399650965050505050506109fc565b61048c8a86610a3c565b60208301819052151590506104c45760036040518060600160405280602a815260200161172e602a91399650965050505050506109fc565b6104ed60646104e160328460200151610b3f90919063ffffffff16565b9063ffffffff610ba116565b6060820181905289116105005788610506565b80606001515b81608001818152505061052584868e8e85608001518660000151610be3565b6101a083018190526101808301919091526080820151111561054d576101a081015160808201525b876105a857600061056d6001600160a01b038e163063ffffffff610e6016565b90508161018001518110156105a657600560405180606001604052806033815260200161167f60339139975097505050505050506109fc565b505b6101808101516040805163f15e3b2160e01b8152600481018790526001600160a01b038f166024820152604481019290925289151560648301525173__$5e6137a1b5a0a366e2874209b5abf71c10$__9163f15e3b21916084808301926000929190829003018186803b15801561061e57600080fd5b505af4158015610632573d6000803e3d6000fd5b50505060098501546001600160a01b03166101e08301525087156106d2576101e08101516101808201516040805163f866c31960e01b81526001600160a01b038e8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b50505050610776565b806101e001516001600160a01b0316633edb7cb88b8361018001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b50505061018082015161077691506001600160a01b038e1690339063ffffffff610f0a16565b6080810151610797906001600160a01b038d1690600163ffffffff610fe816565b6101008101511561092e57806101e001516001600160a01b0316633edb7cb88b8361012001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050506108be603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516101208301516001600160a01b038f16919063ffffffff610f0a16565b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f36ca8b16d61dc13b1062adff83e3778ab92d14f9e35bfe9fd1283e02b13fb0a18461010001518561012001514260405180848152602001838152602001828152602001935050505060405180910390a45b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f56864757fd5b1fc9f38f5f3a981cd8ae512ce41b902cf73fc506ee369c6bc23784608001518561018001518660400151338f4260405180878152602001868152602001858152602001846001600160a01b03166001600160a01b0316815260200183151515158152602001828152602001965050505050505060405180910390a46000604051806040016040528060098152602001684e6f206572726f727360b81b8152509650965050505050505b9550959350505050565b60398181548110610a1357fe5b6000918252602090912001546001600160a01b0316905081565b6035546001600160a01b031681565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610a8d57600080fd5b505afa158015610aa1573d6000803e3d6000fd5b505050506040513d6020811015610ab757600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610b0857600080fd5b505afa158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051909590945092505050565b600082610b4e57506000610b9b565b82820282848281610b5b57fe5b0414610b985760405162461bcd60e51b815260040180806020018281038252602181526020018061165e6021913960400191505060405180910390fd5b90505b92915050565b6000610b9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110ba565b60355460408051631f94a27560e31b81529051600092839283926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d6020811015610c5957600080fd5b50519050610c656115eb565b816001600160a01b031663b3596f07896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b03898116600483015291519184169163b3596f0791602480820192602092909190829003018186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d6020811015610d6257600080fd5b5051606082015260078a0154602082018190526008808b015460a08401819052908c015460c08401526040830151610de0926064926104e192610dd491610db29190600a0a63ffffffff610b3f16565b6104e18760c00151600a0a610dd48e8a60600151610b3f90919063ffffffff16565b9063ffffffff610b3f16565b60808201819052851015610e4857849350610e4181602001516104e16064610dd4610e1f8660c00151600a0a8760600151610b3f90919063ffffffff16565b6104e18760a00151600a0a610dd48c8a60400151610b3f90919063ffffffff16565b9250610e53565b806080015193508592505b5050965096945050505050565b6000610e6b8361115c565b15610e8157506001600160a01b03811631610b9b565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610ed757600080fd5b505afa158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b50519050610b9b565b80610f1457610fe3565b610f1d8361115c565b15610fc9576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b606091505b5050905080610fc3576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50610fe3565b610fe36001600160a01b038416838363ffffffff61119516565b505050565b81610ff257610fe3565b610ffb8361115c565b1561109f578134101561103f5760405162461bcd60e51b81526004018080602001828103825260358152602001806116296035913960400191505060405180910390fd5b801561109a57600033611058348563ffffffff6111e716565b60405161c35091906000818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b610fe3565b610fe36001600160a01b03841633308563ffffffff61122916565b600081836111465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561110b5781810151838201526020016110f3565b50505050905090810190601f1680156111385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161115257fe5b0495945050505050565b60006001600160a01b0382161580610b9b57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610fe3908490611289565b6000610b9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133a565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611283908590611289565b50505050565b60606112de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113949092919063ffffffff16565b805190915015610fe3578080602001905160208110156112fd57600080fd5b5051610fe35760405162461bcd60e51b815260040180806020018281038252602a8152602001806116dc602a913960400191505060405180910390fd5b6000818484111561138c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561110b5781810151838201526020016110f3565b505050900390565b60606113a384846000856113ab565b949350505050565b60606113b685611518565b611407576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114465780518252601f199092019160209182019101611427565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114a8576040519150601f19603f3d011682016040523d82523d6000602084013e6114ad565b606091505b509150915081156114c15791506113a39050565b8051156114d15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561110b5781810151838201526020016110f3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113a3575050151592915050565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060028111156115b057fe5b81526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe54686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a264697066735822122074a8ccc848a4413a7fb89450bab7ee651ec1e519c50f0036dc330f94fc35481264736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b50600160005561178d8061002a6000396000f3fe6080604052600436106100335760003560e01c8062a718a9146100385780634fe7a6e5146100fb578063c72c4d1014610141575b600080fd5b61007c600480360360a081101561004e57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610156565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100bf5781810151838201526020016100a7565b50505050905090810190601f1680156100ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561010757600080fd5b506101256004803603602081101561011e57600080fd5b5035610a06565b604080516001600160a01b039092168252519081900360200190f35b34801561014d57600080fd5b50610125610a2d565b6001600160a01b038481166000818152603760209081526040808320948a1680845281842033855260388452828520958552949092528083209183528220919360609390929091906101a6611551565b73__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711433603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d602081101561023f57600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156102d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102b2575b5050965050505050505060c06040518083038186803b1580156102f257600080fd5b505af4158015610306573d6000803e3d6000fd5b505050506040513d60c081101561031c57600080fd5b5060a001516101c08201819052670de0b6b3a764000011610360576004604051806060016040528060288152602001611706602891399650965050505050506109fc565b8b6001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d60208110156103e057600080fd5b505180825261042f5760016040518060400160405280601f81526020017f496e76616c696420636f6c6c61746572616c20746f206c6971756964617465008152509650965050505050506109fc565b600c840154600160d01b900460ff16801561044b5750815460ff165b151561020082018190526104825760026040518060600160405280602a81526020016116b2602a91399650965050505050506109fc565b61048c8a86610a3c565b60208301819052151590506104c45760036040518060600160405280602a815260200161172e602a91399650965050505050506109fc565b6104ed60646104e160328460200151610b3f90919063ffffffff16565b9063ffffffff610ba116565b6060820181905289116105005788610506565b80606001515b81608001818152505061052584868e8e85608001518660000151610be3565b6101a083018190526101808301919091526080820151111561054d576101a081015160808201525b876105a857600061056d6001600160a01b038e163063ffffffff610e6016565b90508161018001518110156105a657600560405180606001604052806033815260200161167f60339139975097505050505050506109fc565b505b6101808101516040805163f15e3b2160e01b8152600481018790526001600160a01b038f166024820152604481019290925289151560648301525173__$5e6137a1b5a0a366e2874209b5abf71c10$__9163f15e3b21916084808301926000929190829003018186803b15801561061e57600080fd5b505af4158015610632573d6000803e3d6000fd5b50505060098501546001600160a01b03166101e08301525087156106d2576101e08101516101808201516040805163f866c31960e01b81526001600160a01b038e8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b50505050610776565b806101e001516001600160a01b0316633edb7cb88b8361018001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b50505061018082015161077691506001600160a01b038e1690339063ffffffff610f0a16565b6080810151610797906001600160a01b038d1690600163ffffffff610fe816565b6101008101511561092e57806101e001516001600160a01b0316633edb7cb88b8361012001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050506108be603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516101208301516001600160a01b038f16919063ffffffff610f0a16565b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f36ca8b16d61dc13b1062adff83e3778ab92d14f9e35bfe9fd1283e02b13fb0a18461010001518561012001514260405180848152602001838152602001828152602001935050505060405180910390a45b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f56864757fd5b1fc9f38f5f3a981cd8ae512ce41b902cf73fc506ee369c6bc23784608001518561018001518660400151338f4260405180878152602001868152602001858152602001846001600160a01b03166001600160a01b0316815260200183151515158152602001828152602001965050505050505060405180910390a46000604051806040016040528060098152602001684e6f206572726f727360b81b8152509650965050505050505b9550959350505050565b60398181548110610a1357fe5b6000918252602090912001546001600160a01b0316905081565b6035546001600160a01b031681565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610a8d57600080fd5b505afa158015610aa1573d6000803e3d6000fd5b505050506040513d6020811015610ab757600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610b0857600080fd5b505afa158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051909590945092505050565b600082610b4e57506000610b9b565b82820282848281610b5b57fe5b0414610b985760405162461bcd60e51b815260040180806020018281038252602181526020018061165e6021913960400191505060405180910390fd5b90505b92915050565b6000610b9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110ba565b60355460408051631f94a27560e31b81529051600092839283926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d6020811015610c5957600080fd5b50519050610c656115eb565b816001600160a01b031663b3596f07896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b03898116600483015291519184169163b3596f0791602480820192602092909190829003018186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d6020811015610d6257600080fd5b5051606082015260078a0154602082018190526008808b015460a08401819052908c015460c08401526040830151610de0926064926104e192610dd491610db29190600a0a63ffffffff610b3f16565b6104e18760c00151600a0a610dd48e8a60600151610b3f90919063ffffffff16565b9063ffffffff610b3f16565b60808201819052851015610e4857849350610e4181602001516104e16064610dd4610e1f8660c00151600a0a8760600151610b3f90919063ffffffff16565b6104e18760a00151600a0a610dd48c8a60400151610b3f90919063ffffffff16565b9250610e53565b806080015193508592505b5050965096945050505050565b6000610e6b8361115c565b15610e8157506001600160a01b03811631610b9b565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610ed757600080fd5b505afa158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b50519050610b9b565b80610f1457610fe3565b610f1d8361115c565b15610fc9576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b606091505b5050905080610fc3576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50610fe3565b610fe36001600160a01b038416838363ffffffff61119516565b505050565b81610ff257610fe3565b610ffb8361115c565b1561109f578134101561103f5760405162461bcd60e51b81526004018080602001828103825260358152602001806116296035913960400191505060405180910390fd5b801561109a57600033611058348563ffffffff6111e716565b60405161c35091906000818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b610fe3565b610fe36001600160a01b03841633308563ffffffff61122916565b600081836111465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561110b5781810151838201526020016110f3565b50505050905090810190601f1680156111385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161115257fe5b0495945050505050565b60006001600160a01b0382161580610b9b57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610fe3908490611289565b6000610b9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133a565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611283908590611289565b50505050565b60606112de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113949092919063ffffffff16565b805190915015610fe3578080602001905160208110156112fd57600080fd5b5051610fe35760405162461bcd60e51b815260040180806020018281038252602a8152602001806116dc602a913960400191505060405180910390fd5b6000818484111561138c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561110b5781810151838201526020016110f3565b505050900390565b60606113a384846000856113ab565b949350505050565b60606113b685611518565b611407576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114465780518252601f199092019160209182019101611427565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114a8576040519150601f19603f3d011682016040523d82523d6000602084013e6114ad565b606091505b509150915081156114c15791506113a39050565b8051156114d15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561110b5781810151838201526020016110f3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113a3575050151592915050565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060028111156115b057fe5b81526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe54686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a26469706673582212205931c29aaccd96d5b0fd81916e14cb5699bfb8845180b6da9fa02217491d57af64736f6c63430006080033"; export interface LendingPoolLiquidationManagerLibraryAddresses { ["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]: string; diff --git a/types/ReserveLogicFactory.ts b/types/ReserveLogicFactory.ts index e81a089c..671f5e27 100644 --- a/types/ReserveLogicFactory.ts +++ b/types/ReserveLogicFactory.ts @@ -86,4 +86,4 @@ const _abi = [ ]; const _bytecode = - "0x610d9d610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80639ada2ceb14610071578063a0237264146100af578063d9c477cc146100fc578063e1219abf14610119578063f15e3b2114610145578063f77efa6e1461018c575b600080fd5b61009d6004803603604081101561008757600080fd5b50803590602001356001600160a01b03166101af565b60408051918252519081900360200190f35b8180156100bb57600080fd5b506100fa600480360360a08110156100d257600080fd5b508035906001600160a01b036020820135169060408101359060608101359060800135610214565b005b61009d6004803603602081101561011257600080fd5b5035610260565b61009d6004803603604081101561012f57600080fd5b50803590602001356001600160a01b03166102fe565b81801561015157600080fd5b506100fa6004803603608081101561016857600080fd5b508035906001600160a01b0360208201351690604081013590606001351515610338565b61009d600480360360408110156101a257600080fd5b5080359060200135610359565b6000806101bb84610377565b9050806101cc57600091505061020e565b60006101e76001600160a01b0385163063ffffffff61047716565b90506102096101fc828463ffffffff61052116565b839063ffffffff61057b16565b925050505b92915050565b61021d856105bf565b600061023861022b87610377565b859063ffffffff61052116565b905061024b86828563ffffffff61065716565b61025886868560006106b5565b505050505050565b60008160020154600014156102f25781600c0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d60208110156102e957600080fd5b505190506102f9565b5060028101545b919050565b600061033161030c84610377565b6103256001600160a01b0385163063ffffffff61047716565b9063ffffffff61052116565b9392505050565b610341846105bf565b806103535761035384846000856106b5565b50505050565b60008260030154600014610371578260030154610331565b50919050565b600061020e82600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cc57600080fd5b505afa1580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561043f57600080fd5b505afa158015610453573d6000803e3d6000fd5b505050506040513d602081101561046957600080fd5b50519063ffffffff61052116565b6000610482836109e5565b1561049857506001600160a01b0381163161020e565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905061020e565b600082820183811015610331576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600282046105b7836105ab61059e876b033b2e3c9fd0803ce8000000610a1b565b849063ffffffff61052116565b9063ffffffff610a7416565b949350505050565b60006105ca82610377565b90508015610653576001820154600c8301546000916105f691600160a01b900464ffffffffff16610ab6565b835490915061060c90829063ffffffff610b0116565b83556002830154600c84015460009161063291600160a01b900464ffffffffff16610b39565b905061064b846004015482610b0190919063ffffffff16565b600485015550505b5050565b600061067a61066584610b88565b61066e84610b88565b9063ffffffff61057b16565b90506000610696610689610b9e565b839063ffffffff61052116565b85549091506106ac90829063ffffffff610b0116565b90945550505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b1580156106fc57600080fd5b505afa158015610710573d6000803e3d6000fd5b505050506040513d602081101561072657600080fd5b5051905060006107456001600160a01b0386163063ffffffff61047716565b9050610759856001600160a01b03166109e5565b156107715761076e813463ffffffff610bae16565b90505b600c860154600090819081906001600160a01b03166357e37af0896107ac896107a0898d63ffffffff61052116565b9063ffffffff610bae16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fc57600080fd5b505afa158015610810573d6000803e3d6000fd5b505050506040513d602081101561082657600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d606081101561092657600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e01819055600c8e01805464ffffffffff4216600160a01b0264ffffffffff60a01b199091161790558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b60006001600160a01b038216158061020e5750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600082610a2a5750600061020e565b82820282848281610a3757fe5b04146103315760405162461bcd60e51b8152600401808060200182810382526021815260200180610d476021913960400191505060405180910390fd5b600061033183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bf0565b600080610ad04264ffffffffff851663ffffffff610bae16565b90506000610ae46106656301e13380610b88565b9050610209610af1610b9e565b610325878463ffffffff610b0116565b60006103316b033b2e3c9fd0803ce80000006105ab610b26868663ffffffff610a1b16565b6b019d971e4fe8401e7400000090610521565b600080610b534264ffffffffff851663ffffffff610bae16565b90506000610b6b856301e1338063ffffffff610a7416565b905061020982610b7c61059e610b9e565b9063ffffffff610c9216565b600061020e82633b9aca0063ffffffff610a1b16565b6b033b2e3c9fd0803ce800000090565b600061033183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610cec565b60008183610c7c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c41578181015183820152602001610c29565b50505050905090810190601f168015610c6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c8857fe5b0495945050505050565b600060028206610cae576b033b2e3c9fd0803ce8000000610cb0565b825b90506002820491505b811561020e57610cc98384610b01565b92506002820615610ce157610cde8184610b01565b90505b600282049150610cb9565b60008184841115610d3e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c41578181015183820152602001610c29565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208bcc7f96258c14fc14b8e22b0688a406ee82aa15b5771015acfa0ef33d17253964736f6c63430006080033"; + "0x610d99610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80639ada2ceb14610071578063a0237264146100af578063d9c477cc146100fc578063e1219abf14610119578063f15e3b2114610145578063f77efa6e1461018c575b600080fd5b61009d6004803603604081101561008757600080fd5b50803590602001356001600160a01b03166101af565b60408051918252519081900360200190f35b8180156100bb57600080fd5b506100fa600480360360a08110156100d257600080fd5b508035906001600160a01b036020820135169060408101359060608101359060800135610214565b005b61009d6004803603602081101561011257600080fd5b5035610260565b61009d6004803603604081101561012f57600080fd5b50803590602001356001600160a01b03166102fe565b81801561015157600080fd5b506100fa6004803603608081101561016857600080fd5b508035906001600160a01b0360208201351690604081013590606001351515610338565b61009d600480360360408110156101a257600080fd5b5080359060200135610359565b6000806101bb84610377565b9050806101cc57600091505061020e565b60006101e76001600160a01b0385163063ffffffff61047716565b90506102096101fc828463ffffffff61052116565b839063ffffffff61057b16565b925050505b92915050565b61021d856105bf565b600061023861022b87610377565b859063ffffffff61052116565b905061024b86828563ffffffff61067716565b61025886868560006106d5565b505050505050565b60008160020154600014156102f25781600c0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d60208110156102e957600080fd5b505190506102f9565b5060028101545b919050565b600061033161030c84610377565b6103256001600160a01b0385163063ffffffff61047716565b9063ffffffff61052116565b9392505050565b610341846105bf565b806103535761035384846000856106d5565b50505050565b60008260030154600014610371578260030154610331565b50919050565b600061020e82600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cc57600080fd5b505afa1580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561043f57600080fd5b505afa158015610453573d6000803e3d6000fd5b505050506040513d602081101561046957600080fd5b50519063ffffffff61052116565b6000610482836109e1565b1561049857506001600160a01b0381163161020e565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905061020e565b600082820183811015610331576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600282046105b7836105ab61059e876b033b2e3c9fd0803ce8000000610a17565b849063ffffffff61052116565b9063ffffffff610a7016565b949350505050565b60006105ca82610377565b90508015610653576001820154600c8301546000916105f691600160a01b900464ffffffffff16610ab2565b835490915061060c90829063ffffffff610afd16565b83556002830154600c84015460009161063291600160a01b900464ffffffffff16610b35565b905061064b846004015482610afd90919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600061069a61068584610b84565b61068e84610b84565b9063ffffffff61057b16565b905060006106b66106a9610b9a565b839063ffffffff61052116565b85549091506106cc90829063ffffffff610afd16565b90945550505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d602081101561074657600080fd5b5051905060006107656001600160a01b0386163063ffffffff61047716565b9050610779856001600160a01b03166109e1565b156107915761078e813463ffffffff610baa16565b90505b600c860154600090819081906001600160a01b03166357e37af0896107cc896107c0898d63ffffffff61052116565b9063ffffffff610baa16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561081c57600080fd5b505afa158015610830573d6000803e3d6000fd5b505050506040513d602081101561084657600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d606081101561094657600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b60006001600160a01b038216158061020e5750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600082610a265750600061020e565b82820282848281610a3357fe5b04146103315760405162461bcd60e51b8152600401808060200182810382526021815260200180610d436021913960400191505060405180910390fd5b600061033183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bec565b600080610acc4264ffffffffff851663ffffffff610baa16565b90506000610ae06106856301e13380610b84565b9050610209610aed610b9a565b610325878463ffffffff610afd16565b60006103316b033b2e3c9fd0803ce80000006105ab610b22868663ffffffff610a1716565b6b019d971e4fe8401e7400000090610521565b600080610b4f4264ffffffffff851663ffffffff610baa16565b90506000610b67856301e1338063ffffffff610a7016565b905061020982610b7861059e610b9a565b9063ffffffff610c8e16565b600061020e82633b9aca0063ffffffff610a1716565b6b033b2e3c9fd0803ce800000090565b600061033183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ce8565b60008183610c785760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c3d578181015183820152602001610c25565b50505050905090810190601f168015610c6a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c8457fe5b0495945050505050565b600060028206610caa576b033b2e3c9fd0803ce8000000610cac565b825b90506002820491505b811561020e57610cc58384610afd565b92506002820615610cdd57610cda8184610afd565b90505b600282049150610cb5565b60008184841115610d3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c3d578181015183820152602001610c25565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122026a0ebe6b26d1bf45fd30cc3d53371c8e53c9653039103bd353ad548bb52ec1c64736f6c63430006080033"; diff --git a/types/StableDebtToken.d.ts b/types/StableDebtToken.d.ts index 027fff2f..2b25d851 100644 --- a/types/StableDebtToken.d.ts +++ b/types/StableDebtToken.d.ts @@ -36,6 +36,10 @@ interface StableDebtTokenInterface extends Interface { getAverageStableRate: TypedFunctionDescription<{ encode([]: []): string }>; + getUserLastUpdated: TypedFunctionDescription<{ + encode([_user]: [string]): string; + }>; + getUserStableRate: TypedFunctionDescription<{ encode([_user]: [string]): string; }>; @@ -172,6 +176,8 @@ export class StableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; increaseAllowance( @@ -246,6 +252,8 @@ export class StableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; increaseAllowance( @@ -338,6 +346,8 @@ export class StableDebtToken extends Contract { getAverageStableRate(): Promise; + getUserLastUpdated(_user: string): Promise; + getUserStableRate(_user: string): Promise; increaseAllowance( diff --git a/types/StableDebtTokenFactory.ts b/types/StableDebtTokenFactory.ts index 5bf5b76a..ddee61e7 100644 --- a/types/StableDebtTokenFactory.ts +++ b/types/StableDebtTokenFactory.ts @@ -299,6 +299,25 @@ const _abi = [ stateMutability: "view", type: "function" }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address" + } + ], + name: "getUserLastUpdated", + outputs: [ + { + internalType: "uint40", + name: "", + type: "uint40" + } + ], + stateMutability: "view", + type: "function" + }, { inputs: [ { @@ -525,4 +544,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111d8806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806389d1a0fc116100a2578063a457c2d711610071578063a457c2d71461027a578063a9059cbb14610473578063c634dfaa1461049f578063dd62ed3e146104c5578063e78c9b3b146104f357610116565b806389d1a0fc1461041357806390f6fcf21461043757806395d89b411461043f5780639dc29fac1461044757610116565b806323b872dd116100e957806323b872dd14610226578063313ce5671461025c578063395093511461027a57806370a08231146102a657806381e75277146102cc57610116565b806306fdde031461011b578063095ea7b314610198578063156e29f6146101d857806318160ddd1461020c575b600080fd5b610123610519565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015d578181015183820152602001610145565b50505050905090810190601f16801561018a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101c4600480360360408110156101ae57600080fd5b506001600160a01b0381351690602001356105a6565b604080519115158252519081900360200190f35b61020a600480360360608110156101ee57600080fd5b506001600160a01b0381351690602081013590604001356105ee565b005b6102146107da565b60408051918252519081900360200190f35b6101c46004803603606081101561023c57600080fd5b506001600160a01b038135811691602081013590911690604001356107e0565b610264610828565b6040805160ff9092168252519081900360200190f35b6101c46004803603604081101561029057600080fd5b506001600160a01b038135169060200135610831565b610214600480360360208110156102bc57600080fd5b50356001600160a01b0316610880565b61020a600480360360a08110156102e257600080fd5b8101906020810181356401000000008111156102fd57600080fd5b82018360208201111561030f57600080fd5b8035906020019184600183028401116401000000008311171561033157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460018302840111640100000000831117156103b857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b03602083013581169260400135169050610901565b61041b6109e6565b604080516001600160a01b039092168252519081900360200190f35b6102146109fa565b610123610a01565b61020a6004803603604081101561045d57600080fd5b506001600160a01b038135169060200135610a59565b6101c46004803603604081101561048957600080fd5b506001600160a01b0381351690602001356107e0565b610214600480360360208110156104b557600080fd5b50356001600160a01b0316610bac565b610214600480360360408110156104db57600080fd5b506001600160a01b0381358116916020013516610831565b6102146004803603602081101561050957600080fd5b50356001600160a01b0316610bc7565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561059e5780601f106105735761010080835404028352916020019161059e565b820191906000526020600020905b81548152906001019060200180831161058157829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6004546001600160a01b031633146106375760405162461bcd60e51b81526004018080602001828103825260328152602001806111716032913960400191505060405180910390fd5b600080600061064586610be2565b925092509250600061066286600054610c3890919063ffffffff16565b9050600061066f87610c9b565b90506106e861068c610687868a63ffffffff610c3816565b610c9b565b6106dc61069f848a63ffffffff610cb116565b6106d06106ab89610c9b565b6001600160a01b038e166000908152600760205260409020549063ffffffff610cf716565b9063ffffffff610c3816565b9063ffffffff610d3016565b6001600160a01b0389166000908152600760205260409020908155600101805464ffffffffff19164264ffffffffff1617905561075761072783610c9b565b6106dc61073a898563ffffffff610cf716565b6106d0610748600054610c9b565b6006549063ffffffff610cf716565b6006556107648888610d60565b6001600160a01b0388166000818152600760209081526040918290205482519384529083018a9052828201889052606083018790526080830186905260a0830152517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a15050505050505050565b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b03811660009081526007602052604081208054600182015483916108b19164ffffffffff16610dbe565b90506108f96108f4826108e860056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610c9b565b9063ffffffff610cf716565b610e16565b949350505050565b84516109149060019060208801906110b7565b5083516109289060029060208701906110b7565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b15801561099457600080fd5b505afa1580156109a8573d6000803e3d6000fd5b505050506040513d60208110156109be57600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6006545b90565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561059e5780601f106105735761010080835404028352916020019161059e565b6004546001600160a01b03163314610aa25760405162461bcd60e51b81526004018080602001828103825260328152602001806111716032913960400191505060405180910390fd5b6000806000610ab085610be2565b9250925092506000610acd85600054610e3690919063ffffffff16565b90506000610ada86610c9b565b905081610aeb576000600655610b42565b610b3e610af783610c9b565b6001600160a01b0389166000908152600760205260409020546106dc90610b24908563ffffffff610cf716565b610b32610748600054610c9b565b9063ffffffff610e3616565b6006555b610b4c8787610e78565b604080516001600160a01b038916815260208101889052808201879052606081018690526080810185905290517fecde08620c30706a4d7ba53e9163327f2e12a6cea2709dd6a9226fed28c2bb729181900360a00190a150505050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526007602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819081610c0d82610b3288610880565b9050610c198682610d60565b81610c2a818363ffffffff610c3816565b909790965090945092505050565b600082820183811015610c92576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610c9582633b9aca0063ffffffff610eb616565b6000610c92670de0b6b3a7640000610ceb610cd2868663ffffffff610eb616565b6002670de0b6b3a76400005b049063ffffffff610c3816565b9063ffffffff610f0f16565b6000610c926b033b2e3c9fd0803ce8000000610ceb610d1c868663ffffffff610eb616565b60026b033b2e3c9fd0803ce8000000610cde565b6000600282046108f983610ceb610d53876b033b2e3c9fd0803ce8000000610eb6565b849063ffffffff610c3816565b600054610d73908263ffffffff610c3816565b60009081556001600160a01b038316815260056020526040902054610d9e908263ffffffff610c3816565b6001600160a01b0390921660009081526005602052604090209190915550565b600080610dd84264ffffffffff851663ffffffff610e3616565b90506000610df0856301e1338063ffffffff610f0f16565b9050610e0d82610e01610d53610f51565b9063ffffffff610f6116565b95945050505050565b6000631dcd6500610e2f633b9aca00610ceb8386610c38565b9392505050565b6000610c9283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fbb565b600054610e8b908263ffffffff610e3616565b60009081556001600160a01b038316815260056020526040902054610d9e908263ffffffff610e3616565b600082610ec557506000610c95565b82820282848281610ed257fe5b0414610c925760405162461bcd60e51b81526004018080602001828103825260218152602001806111506021913960400191505060405180910390fd5b6000610c9283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611052565b6b033b2e3c9fd0803ce800000090565b600060028206610f7d576b033b2e3c9fd0803ce8000000610f7f565b825b90506002820491505b8115610c9557610f988384610cf7565b92506002820615610fb057610fad8184610cf7565b90505b600282049150610f88565b6000818484111561104a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561100f578181015183820152602001610ff7565b50505050905090810190601f16801561103c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836110a15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561100f578181015183820152602001610ff7565b5060008385816110ad57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106110f857805160ff1916838001178555611125565b82800160010185558215611125579182015b8281111561112557825182559160200191906001019061110a565b50611131929150611135565b5090565b6109fe91905b80821115611131576000815560010161113b56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca26469706673582212209b3422d4d9471994ed0d319c43454dbf4a454745294f00bd56049d72e0c0f21164736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50611278806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806381e75277116100ad578063a457c2d711610071578063a457c2d714610285578063a9059cbb146104be578063c634dfaa146104ea578063dd62ed3e14610510578063e78c9b3b1461053e57610121565b806381e752771461031757806389d1a0fc1461045e57806390f6fcf21461048257806395d89b411461048a5780639dc29fac1461049257610121565b806323b872dd116100f457806323b872dd14610231578063313ce56714610267578063395093511461028557806370a08231146102b157806379ce6b8c146102d757610121565b806306fdde0314610126578063095ea7b3146101a3578063156e29f6146101e357806318160ddd14610217575b600080fd5b61012e610564565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b0381351690602001356105f1565b604080519115158252519081900360200190f35b610215600480360360608110156101f957600080fd5b506001600160a01b038135169060208101359060400135610639565b005b61021f610825565b60408051918252519081900360200190f35b6101cf6004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561082b565b61026f610873565b6040805160ff9092168252519081900360200190f35b6101cf6004803603604081101561029b57600080fd5b506001600160a01b03813516906020013561087c565b61021f600480360360208110156102c757600080fd5b50356001600160a01b03166108cb565b6102fd600480360360208110156102ed57600080fd5b50356001600160a01b0316610975565b6040805164ffffffffff9092168252519081900360200190f35b610215600480360360a081101561032d57600080fd5b81019060208101813564010000000081111561034857600080fd5b82018360208201111561035a57600080fd5b8035906020019184600183028401116401000000008311171561037c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103cf57600080fd5b8201836020820111156103e157600080fd5b8035906020019184600183028401116401000000008311171561040357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b0360208301358116926040013516905061099a565b610466610a7f565b604080516001600160a01b039092168252519081900360200190f35b61021f610a93565b61012e610a9a565b610215600480360360408110156104a857600080fd5b506001600160a01b038135169060200135610af2565b6101cf600480360360408110156104d457600080fd5b506001600160a01b03813516906020013561082b565b61021f6004803603602081101561050057600080fd5b50356001600160a01b0316610c67565b61021f6004803603604081101561052657600080fd5b506001600160a01b038135811691602001351661087c565b61021f6004803603602081101561055457600080fd5b50356001600160a01b0316610c82565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6004546001600160a01b031633146106825760405162461bcd60e51b81526004018080602001828103825260328152602001806112116032913960400191505060405180910390fd5b600080600061069086610c9d565b92509250925060006106ad86600054610d0b90919063ffffffff16565b905060006106ba87610d6e565b90506107336106d76106d2868a63ffffffff610d0b16565b610d6e565b6107276106ea848a63ffffffff610d8416565b61071b6106f689610d6e565b6001600160a01b038e166000908152600760205260409020549063ffffffff610d8416565b9063ffffffff610d0b16565b9063ffffffff610dc816565b6001600160a01b0389166000908152600760205260409020908155600101805464ffffffffff19164264ffffffffff161790556107a261077283610d6e565b610727610785898563ffffffff610d8416565b61071b610793600054610d6e565b6006549063ffffffff610d8416565b6006556107af8888610e00565b6001600160a01b0388166000818152600760209081526040918290205482519384529083018a9052828201889052606083018790526080830186905260a0830152517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a15050505050505050565b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b0381166000908152600560205260408120546108f057506000610970565b6001600160a01b038216600090815260076020526040812080546001820154919291610923919064ffffffffff16610e5e565b905061096b6109668261095a60056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610d6e565b9063ffffffff610d8416565b610eb6565b925050505b919050565b6001600160a01b031660009081526007602052604090206001015464ffffffffff1690565b84516109ad906001906020880190611157565b5083516109c1906002906020870190611157565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b158015610a2d57600080fd5b505afa158015610a41573d6000803e3d6000fd5b505050506040513d6020811015610a5757600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6006545b90565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b6004546001600160a01b03163314610b3b5760405162461bcd60e51b81526004018080602001828103825260328152602001806112116032913960400191505060405180910390fd5b6000806000610b4985610c9d565b9250925092506000610b6685600054610ed690919063ffffffff16565b90506000610b7386610d6e565b905081610b84576000600655610bdb565b610bd7610b9083610d6e565b6001600160a01b03891660009081526007602052604090205461072790610bbd908563ffffffff610d8416565b610bcb610793600054610d6e565b9063ffffffff610ed616565b6006555b83861415610bfd576001600160a01b0387166000908152600760205260408120555b610c078787610f18565b604080516001600160a01b038916815260208101889052808201879052606081018690526080810185905290517fecde08620c30706a4d7ba53e9163327f2e12a6cea2709dd6a9226fed28c2bb729181900360a00190a150505050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526007602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610ccf575060009250829150819050610d04565b6000610cde82610bcb886108cb565b9050610cea8682610e00565b81610cfb818363ffffffff610d0b16565b90955093509150505b9193909250565b600082820183811015610d65576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610d6882633b9aca0063ffffffff610f5616565b6000610d656b033b2e3c9fd0803ce8000000610dbc610da9868663ffffffff610f5616565b6b019d971e4fe8401e7400000090610d0b565b9063ffffffff610faf16565b600060028204610df883610dbc610deb876b033b2e3c9fd0803ce8000000610f56565b849063ffffffff610d0b16565b949350505050565b600054610e13908263ffffffff610d0b16565b60009081556001600160a01b038316815260056020526040902054610e3e908263ffffffff610d0b16565b6001600160a01b0390921660009081526005602052604090209190915550565b600080610e784264ffffffffff851663ffffffff610ed616565b90506000610e90856301e1338063ffffffff610faf16565b9050610ead82610ea1610deb610ff1565b9063ffffffff61100116565b95945050505050565b6000631dcd6500610ecf633b9aca00610dbc8386610d0b565b9392505050565b6000610d6583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061105b565b600054610f2b908263ffffffff610ed616565b60009081556001600160a01b038316815260056020526040902054610e3e908263ffffffff610ed616565b600082610f6557506000610d68565b82820282848281610f7257fe5b0414610d655760405162461bcd60e51b81526004018080602001828103825260218152602001806111f06021913960400191505060405180910390fd5b6000610d6583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110f2565b6b033b2e3c9fd0803ce800000090565b60006002820661101d576b033b2e3c9fd0803ce800000061101f565b825b90506002820491505b8115610d68576110388384610d84565b925060028206156110505761104d8184610d84565b90505b600282049150611028565b600081848411156110ea5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110af578181015183820152602001611097565b50505050905090810190601f1680156110dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836111415760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110af578181015183820152602001611097565b50600083858161114d57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061119857805160ff19168380011785556111c5565b828001600101855582156111c5579182015b828111156111c55782518255916020019190600101906111aa565b506111d19291506111d5565b5090565b610a9791905b808211156111d157600081556001016111db56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca264697066735822122037001880c09492f82ed6b600e67543cbe9c07a8fc5c63de3eca25a77ecaf868464736f6c63430006080033"; diff --git a/types/VariableDebtToken.d.ts b/types/VariableDebtToken.d.ts index 29a962db..b4d18248 100644 --- a/types/VariableDebtToken.d.ts +++ b/types/VariableDebtToken.d.ts @@ -34,6 +34,10 @@ interface VariableDebtTokenInterface extends Interface { encode([spender, subtractedValue]: [string, BigNumberish]): string; }>; + getUserIndex: TypedFunctionDescription<{ + encode([_user]: [string]): string; + }>; + increaseAllowance: TypedFunctionDescription<{ encode([spender, addedValue]: [string, BigNumberish]): string; }>; @@ -161,6 +165,8 @@ export class VariableDebtToken extends Contract { overrides?: TransactionOverrides ): Promise; + getUserIndex(_user: string): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -230,6 +236,8 @@ export class VariableDebtToken extends Contract { overrides?: TransactionOverrides ): Promise; + getUserIndex(_user: string): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -318,6 +326,8 @@ export class VariableDebtToken extends Contract { subtractedValue: BigNumberish ): Promise; + getUserIndex(_user: string): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish diff --git a/types/VariableDebtTokenFactory.ts b/types/VariableDebtTokenFactory.ts index 2c5d5b6a..2de13c29 100644 --- a/types/VariableDebtTokenFactory.ts +++ b/types/VariableDebtTokenFactory.ts @@ -292,6 +292,25 @@ const _abi = [ stateMutability: "nonpayable", type: "function" }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address" + } + ], + name: "getUserIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256" + } + ], + stateMutability: "view", + type: "function" + }, { inputs: [ { @@ -494,4 +513,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611108806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806381e7527711610097578063a457c2d711610066578063a457c2d714610230578063a9059cbb1461044f578063c634dfaa1461047b578063dd62ed3e146104a157610100565b806381e75277146102b057806389d1a0fc146103f757806395d89b411461041b5780639dc29fac1461042357610100565b8063313ce567116100d3578063313ce56714610212578063395093511461023057806340c10f191461025c57806370a082311461028a57610100565b806306fdde0314610105578063095ea7b31461018257806318160ddd146101c257806323b872dd146101dc575b600080fd5b61010d6104cf565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014757818101518382015260200161012f565b50505050905090810190601f1680156101745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae6004803603604081101561019857600080fd5b506001600160a01b03813516906020013561055c565b604080519115158252519081900360200190f35b6101ca6105a4565b60408051918252519081900360200190f35b6101ae600480360360608110156101f257600080fd5b506001600160a01b038135811691602081013590911690604001356105aa565b61021a6105f2565b6040805160ff9092168252519081900360200190f35b6101ae6004803603604081101561024657600080fd5b506001600160a01b0381351690602001356105fb565b6102886004803603604081101561027257600080fd5b506001600160a01b03813516906020013561064a565b005b6101ca600480360360208110156102a057600080fd5b50356001600160a01b031661074e565b610288600480360360a08110156102c657600080fd5b8101906020810181356401000000008111156102e157600080fd5b8201836020820111156102f357600080fd5b8035906020019184600183028401116401000000008311171561031557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561036857600080fd5b82018360208201111561037a57600080fd5b8035906020019184600183028401116401000000008311171561039c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b03602083013581169260400135169050610813565b6103ff6108f8565b604080516001600160a01b039092168252519081900360200190f35b61010d61090c565b6102886004803603604081101561043957600080fd5b506001600160a01b038135169060200135610964565b6101ae6004803603604081101561046557600080fd5b506001600160a01b0381351690602001356105aa565b6101ca6004803603602081101561049157600080fd5b50356001600160a01b0316610a34565b6101ca600480360360408110156104b757600080fd5b506001600160a01b03813581169160200135166105fb565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105545780601f1061052957610100808354040283529160200191610554565b820191906000526020600020905b81548152906001019060200180831161053757829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6004546001600160a01b031633146106935760405162461bcd60e51b81526004018080602001828103825260328152602001806110a16032913960400191505060405180910390fd5b6106c76040518060400160405280601381526020017226b4b73a34b733903732bb903232b13a17171760691b815250610a4f565b6000806000806106d686610b91565b93509350935093506106e88686610c9b565b604080516001600160a01b038816815260208101879052808201869052606081018590526080810184905260a0810183905290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a1505050505050565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525160009361080d9361080893169163386497fd91602480820192602092909190829003018186803b1580156107ae57600080fd5b505afa1580156107c2573d6000803e3d6000fd5b505050506040513d60208110156107d857600080fd5b50516001600160a01b0385166000908152600560205260409020546107fc90610cf9565b9063ffffffff610d0f16565b610d5a565b92915050565b8451610826906001906020880190610fe4565b50835161083a906002906020870190610fe4565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b1580156108a657600080fd5b505afa1580156108ba573d6000803e3d6000fd5b505050506040513d60208110156108d057600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105545780601f1061052957610100808354040283529160200191610554565b6004546001600160a01b031633146109ad5760405162461bcd60e51b81526004018080602001828103825260328152602001806110a16032913960400191505060405180910390fd5b6000806000806109bc86610b91565b93509350935093506109ce8686610d73565b604080516001600160a01b038816815260208101879052808201869052606081018590526080810184905260a0810183905290517fc57f977ee00c44453a91f798753002bf12fca5f5ca2ee8db560720f51d4b0f629181900360c00190a1505050505050565b6001600160a01b031660009081526005602052604090205490565b6040516020602482018181528351604484015283516000936a636f6e736f6c652e6c6f67938693928392606401918501908083838a5b83811015610a9d578181015183820152602001610a85565b50505050905090810190601f168015610aca5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663104c13eb60e21b178152905182519295509350839250908083835b60208310610b255780518252601f199092019160209182019101610b06565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610b85576040519150601f19603f3d011682016040523d82523d6000602084013e610b8a565b606091505b5050505050565b6001600160a01b03811660009081526005602052604081205481908190819081610bca82610bbe8961074e565b9063ffffffff610db116565b9050610bd68782610c9b565b600480546003546040805163386497fd60e01b81526101009092046001600160a01b0390811694830194909452516000939092169163386497fd91602480820192602092909190829003018186803b158015610c3157600080fd5b505afa158015610c45573d6000803e3d6000fd5b505050506040513d6020811015610c5b57600080fd5b50516001600160a01b0389166000908152600660205260409020819055905082610c8b818463ffffffff610df316565b9099909850919650945092505050565b600054610cae908263ffffffff610df316565b60009081556001600160a01b038316815260056020526040902054610cd9908263ffffffff610df316565b6001600160a01b0390921660009081526005602052604090209190915550565b600061080d82633b9aca0063ffffffff610e4d16565b6000610d536b033b2e3c9fd0803ce8000000610d47610d34868663ffffffff610e4d16565b6b019d971e4fe8401e7400000090610df3565b9063ffffffff610ea616565b9392505050565b6000631dcd6500610d53633b9aca00610d478386610df3565b600054610d86908263ffffffff610db116565b60009081556001600160a01b038316815260056020526040902054610cd9908263ffffffff610db116565b6000610d5383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ee8565b600082820183811015610d53576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082610e5c5750600061080d565b82820282848281610e6957fe5b0414610d535760405162461bcd60e51b81526004018080602001828103825260218152602001806110806021913960400191505060405180910390fd5b6000610d5383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f7f565b60008184841115610f775760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f3c578181015183820152602001610f24565b50505050905090810190601f168015610f695780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610fce5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f3c578181015183820152602001610f24565b506000838581610fda57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061102557805160ff1916838001178555611052565b82800160010185558215611052579182015b82811115611052578251825591602001919060010190611037565b5061105e929150611062565b5090565b61107c91905b8082111561105e5760008155600101611068565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca26469706673582212204c2bf36af6a35e2546511ab6fb27daba24d543cbbcbdc6ce06967b9c721ad9c264736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50611132806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806381e75277116100a2578063a457c2d711610071578063a457c2d71461023b578063a9059cbb1461045a578063c634dfaa14610486578063dd62ed3e146104ac578063ee9907a4146104da5761010b565b806381e75277146102bb57806389d1a0fc1461040257806395d89b41146104265780639dc29fac1461042e5761010b565b8063313ce567116100de578063313ce5671461021d578063395093511461023b57806340c10f191461026757806370a08231146102955761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd57806323b872dd146101e7575b600080fd5b610118610500565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b03813516906020013561058d565b604080519115158252519081900360200190f35b6101d56105d5565b60408051918252519081900360200190f35b6101b9600480360360608110156101fd57600080fd5b506001600160a01b038135811691602081013590911690604001356105db565b610225610623565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561025157600080fd5b506001600160a01b03813516906020013561062c565b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561067b565b005b6101d5600480360360208110156102ab57600080fd5b50356001600160a01b03166107db565b610293600480360360a08110156102d157600080fd5b8101906020810181356401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460018302840111640100000000831117156103a757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506108e8565b61040a6109cd565b604080516001600160a01b039092168252519081900360200190f35b6101186109e1565b6102936004803603604081101561044457600080fd5b506001600160a01b038135169060200135610a39565b6101b96004803603604081101561047057600080fd5b506001600160a01b0381351690602001356105db565b6101d56004803603602081101561049c57600080fd5b50356001600160a01b0316610bd4565b6101d5600480360360408110156104c257600080fd5b506001600160a01b038135811691602001351661062c565b6101d5600480360360208110156104f057600080fd5b50356001600160a01b0316610bef565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b820191906000526020600020905b81548152906001019060200180831161056857829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6004546001600160a01b031633146106c45760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b60008060006106d285610c0a565b9250925092506106e28585610c84565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b50516001600160a01b03861660008181526006602090815260409182902084905581519283528201879052818101869052606082018590526080820184905260a082019290925290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a15050505050565b6001600160a01b038116600090815260056020526040812054610800575060006108e3565b6001600160a01b038083166000908152600660209081526040918290205460048054600354855163386497fd60e01b815261010090910487169281019290925293516108e0956108db9593946108cf949091169263386497fd9260248083019392829003018186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516001600160a01b0387166000908152600560205260409020546108c390610ce2565b9063ffffffff610cf816565b9063ffffffff610d4516565b610d7d565b90505b919050565b84516108fb90600190602088019061100e565b50835161090f90600290602087019061100e565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d60208110156109a557600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b6004546001600160a01b03163314610a825760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b6000806000610a9085610c0a565b925092509250610aa08585610d9d565b83821415610ac6576001600160a01b038516600090815260066020526040812055610b61565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b158015610b1b57600080fd5b505afa158015610b2f573d6000803e3d6000fd5b505050506040513d6020811015610b4557600080fd5b50516001600160a01b0386166000908152600660205260409020555b6001600160a01b038516600081815260066020908152604091829020548251938452908301879052828201869052606083018590526080830184905260a0830152517fc57f977ee00c44453a91f798753002bf12fca5f5ca2ee8db560720f51d4b0f629181900360c00190a15050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526006602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610c3c575060009250829150819050610c7d565b6000610c5782610c4b886107db565b9063ffffffff610ddb16565b9050610c638682610c84565b81610c74818363ffffffff610e1d16565b90955093509150505b9193909250565b600054610c97908263ffffffff610e1d16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610e1d16565b6001600160a01b0390921660009081526005602052604090209190915550565b60006108e082633b9aca0063ffffffff610e7716565b6000610d3c6b033b2e3c9fd0803ce8000000610d30610d1d868663ffffffff610e7716565b6b019d971e4fe8401e7400000090610e1d565b9063ffffffff610ed016565b90505b92915050565b600060028204610d7583610d30610d68876b033b2e3c9fd0803ce8000000610e77565b849063ffffffff610e1d16565b949350505050565b6000631dcd6500610d96633b9aca00610d308386610e1d565b9392505050565b600054610db0908263ffffffff610ddb16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610ddb16565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f12565b600082820183811015610d3c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082610e8657506000610d3f565b82820282848281610e9357fe5b0414610d3c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110aa6021913960400191505060405180910390fd5b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fa9565b60008184841115610fa15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578181015183820152602001610f4e565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610ff85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f66578181015183820152602001610f4e565b50600083858161100457fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061104f57805160ff191683800117855561107c565b8280016001018555821561107c579182015b8281111561107c578251825591602001919060010190611061565b5061108892915061108c565b5090565b6110a691905b808211156110885760008155600101611092565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca264697066735822122027c301ea80bd5f7019d7249e9b9c62752d89bc0613683c0b9f9e42416d7e37ca64736f6c63430006080033"; diff --git a/types/WalletBalanceProviderFactory.ts b/types/WalletBalanceProviderFactory.ts index 4d20cbb7..5c7d7b5c 100644 --- a/types/WalletBalanceProviderFactory.ts +++ b/types/WalletBalanceProviderFactory.ts @@ -134,4 +134,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161099e38038061099e8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610939806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610841565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b825181101561069d576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610695565b61060a6108eb565b6001600160a01b031684838151811061061f57fe5b60200260200101516001600160a01b03161461066f576106528885848151811061064557fe5b6020026020010151610841565b83838151811061065e57fe5b602002602001018181525050610693565b876001600160a01b03163183838151811061068657fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106c757600080fd5b506040519080825280602002602001820160405280156106f1578160200160208202803683370190505b50905060005b84518110156108375760005b845181101561082e57845182026107186108eb565b6001600160a01b031686838151811061072d57fe5b60200260200101516001600160a01b031614156107815786838151811061075057fe5b60200260200101516001600160a01b031631848383018151811061077057fe5b602002602001018181525050610825565b6107a686838151811061079057fe5b60200260200101516001600160a01b0316610320565b6107e7576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61080a8784815181106107f657fe5b602002602001015187848151811061064557fe5b848383018151811061081857fe5b6020026020010181815250505b50600101610703565b506001016106f7565b5090505b92915050565b6000610855826001600160a01b0316610320565b156108e357816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108b057600080fd5b505afa1580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b5051905061083b565b50600061083b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9056fea26469706673582212207285b910f911868636ce78fa21192b5ac0a86df35b25c04e8445ba9b97d183ea64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060405161099e38038061099e8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610939806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610841565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b825181101561069d576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610695565b61060a6108eb565b6001600160a01b031684838151811061061f57fe5b60200260200101516001600160a01b03161461066f576106528885848151811061064557fe5b6020026020010151610841565b83838151811061065e57fe5b602002602001018181525050610693565b876001600160a01b03163183838151811061068657fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106c757600080fd5b506040519080825280602002602001820160405280156106f1578160200160208202803683370190505b50905060005b84518110156108375760005b845181101561082e57845182026107186108eb565b6001600160a01b031686838151811061072d57fe5b60200260200101516001600160a01b031614156107815786838151811061075057fe5b60200260200101516001600160a01b031631848383018151811061077057fe5b602002602001018181525050610825565b6107a686838151811061079057fe5b60200260200101516001600160a01b0316610320565b6107e7576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61080a8784815181106107f657fe5b602002602001015187848151811061064557fe5b848383018151811061081857fe5b6020026020010181815250505b50600101610703565b506001016106f7565b5090505b92915050565b6000610855826001600160a01b0316610320565b156108e357816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108b057600080fd5b505afa1580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b5051905061083b565b50600061083b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9056fea26469706673582212201c3d00b6898c7cba8e1984b191e380cdb722e5f2a344c682d01a8f97133fa70e64736f6c63430006080033";