Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 11951884 | 1343 days ago | IN | 0 ETH | 0.18666122 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
IdleAaveV2
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-01 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/GSN/Context.sol pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/interfaces/IAToken.sol pragma solidity 0.5.16; interface IAToken { function UNDERLYING_ASSET_ADDRESS() external view returns (address); } // File: contracts/interfaces/ILendingProtocol.sol pragma solidity 0.5.16; interface ILendingProtocol { function mint() external returns (uint256); function redeem(address account) external returns (uint256); function nextSupplyRate(uint256 amount) external view returns (uint256); function nextSupplyRateWithParams(uint256[] calldata params) external view returns (uint256); function getAPR() external view returns (uint256); function getPriceInToken() external view returns (uint256); function token() external view returns (address); function underlying() external view returns (address); function availableLiquidity() external view returns (uint256); } // File: contracts/interfaces/AaveLendingPoolProviderV2.sol pragma solidity 0.5.16; interface AaveLendingPoolProviderV2 { function getLendingPool() external view returns (address); } // File: contracts/interfaces/DataTypes.sol // SPDX-License-Identifier: agpl-3.0 pragma solidity 0.5.16; contract DataTypes { // refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties. struct ReserveData { //stores the reserve configuration ReserveConfigurationMap configuration; //the liquidity index. Expressed in ray uint128 liquidityIndex; //variable borrow index. Expressed in ray uint128 variableBorrowIndex; //the current supply rate. Expressed in ray uint128 currentLiquidityRate; //the current variable borrow rate. Expressed in ray uint128 currentVariableBorrowRate; //the current stable borrow rate. Expressed in ray uint128 currentStableBorrowRate; uint40 lastUpdateTimestamp; //tokens addresses address aTokenAddress; address stableDebtTokenAddress; address variableDebtTokenAddress; //address of the interest rate strategy address interestRateStrategyAddress; //the id of the reserve. Represents the position in the list of the active reserves uint8 id; } struct ReserveConfigurationMap { //bit 0-15: LTV //bit 16-31: Liq. threshold //bit 32-47: Liq. bonus //bit 48-55: Decimals //bit 56: Reserve is active //bit 57: reserve is frozen //bit 58: borrowing is enabled //bit 59: stable rate borrowing enabled //bit 60-63: reserved //bit 64-79: reserve factor uint256 data; } struct UserConfigurationMap { uint256 data; } enum InterestRateMode {NONE, STABLE, VARIABLE} // copied from https://github.com/aave/protocol-v2/blob/dbd77ad9312f607b420da746c2cb7385d734b015/contracts/protocol/libraries/configuration/ReserveConfiguration.sol#L242 function getReserveFactor(DataTypes.ReserveConfigurationMap memory self) internal pure returns (uint256) { uint256 RESERVE_FACTOR_MASK = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF; // prettier-ignore uint256 RESERVE_FACTOR_START_BIT_POSITION = 64; return (self.data & ~RESERVE_FACTOR_MASK) >> RESERVE_FACTOR_START_BIT_POSITION; } } // File: contracts/interfaces/AaveLendingPoolV2.sol pragma solidity 0.5.16; pragma experimental ABIEncoderV2; interface AaveLendingPoolV2 { function deposit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external; function withdraw(address asset, uint256 amount, address to) external; function getReserveData(address asset) external view returns (DataTypes.ReserveData memory); } // File: contracts/interfaces/IVariableDebtToken.sol pragma solidity 0.5.16; interface IVariableDebtToken { function scaledTotalSupply() external view returns (uint256); } // File: contracts/interfaces/IStableDebtToken.sol pragma solidity 0.5.16; interface IStableDebtToken { function getTotalSupplyAndAvgRate() external view returns (uint256, uint256); } // File: contracts/interfaces/AaveInterestRateStrategyV2.sol pragma solidity 0.5.16; interface AaveInterestRateStrategyV2 { function calculateInterestRates( address reserve, uint256 utilizationRate, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 averageStableBorrowRate, uint256 reserveFactor ) external view returns ( uint256 liquidityRate, uint256 stableBorrowRate, uint256 variableBorrowRate ); } // File: contracts/wrappers/IdleAaveV2.sol /** * @title: Aave wrapper * @summary: Used for interacting with Aave. Has * a common interface with all other protocol wrappers. * This contract holds assets only during a tx, after tx it should be empty * @author: Idle Labs Inc., idle.finance */ pragma solidity 0.5.16; contract IdleAaveV2 is ILendingProtocol, DataTypes, Ownable { using SafeERC20 for IERC20; using SafeMath for uint256; // protocol token (aToken) address address public token; // underlying token (token eg DAI) address address public underlying; address public idleToken; bool public initialized; AaveLendingPoolProviderV2 public provider; /** * @param _token : aToken address * @param _addressesProvider : aave addresses provider * @param _idleToken : idleToken address */ constructor(address _token, address _addressesProvider, address _idleToken) public { require(_token != address(0), 'AAVE: addr is 0'); token = _token; underlying = IAToken(_token).UNDERLYING_ASSET_ADDRESS(); idleToken = _idleToken; provider = AaveLendingPoolProviderV2(_addressesProvider); _approveProvider(); } function _approveProvider() public onlyOwner { require(!initialized, "Already approved"); IERC20(underlying).safeApprove(provider.getLendingPool(), uint256(-1)); initialized = true; } /** * Throws if called by any account other than IdleToken contract. */ modifier onlyIdle() { require(msg.sender == idleToken, "Ownable: caller is not IdleToken"); _; } /** * Not used */ function nextSupplyRateWithParams(uint256[] calldata) external view returns (uint256) { return 0; } /** * Calculate next supply rate for Aave, given an `_amount` supplied * * @param _amount : new underlying amount supplied (eg DAI) * @return : yearly net rate */ function nextSupplyRate(uint256 _amount) external view returns (uint256) { AaveLendingPoolV2 core = AaveLendingPoolV2(provider.getLendingPool()); DataTypes.ReserveData memory data = core.getReserveData(underlying); AaveInterestRateStrategyV2 apr = AaveInterestRateStrategyV2(data.interestRateStrategyAddress); (uint256 totalStableDebt, uint256 avgStableRate) = IStableDebtToken(data.stableDebtTokenAddress).getTotalSupplyAndAvgRate(); uint256 totalVariableDebt = IVariableDebtToken(data.variableDebtTokenAddress) .scaledTotalSupply() .mul(data.variableBorrowIndex).div(10**27); uint256 availableLiquidity = IERC20(underlying).balanceOf(data.aTokenAddress); (uint256 newLiquidityRate,,) = apr.calculateInterestRates( underlying, availableLiquidity.add(_amount), totalStableDebt, totalVariableDebt, avgStableRate, getReserveFactor(data.configuration) ); return newLiquidityRate.div(10**7); // .mul(100).div(10**9) } /** * @return current price of aToken in underlying, Aave price is always 1 */ function getPriceInToken() external view returns (uint256) { return 10**18; } /** * @return apr : current yearly net rate */ function getAPR() external view returns (uint256) { DataTypes.ReserveData memory data = AaveLendingPoolV2(provider.getLendingPool()).getReserveData(underlying); return uint256(data.currentLiquidityRate).div(10**7); // .mul(100).div(10**9) } /** * Gets all underlying tokens in this contract and mints aTokens * tokens are then transferred to msg.sender * NOTE: underlying tokens needs to be sent here before calling this * NOTE2: given that aToken price is always 1 token -> underlying.balanceOf(this) == token.balanceOf(this) * * @return aTokens minted */ function mint() external onlyIdle returns (uint256 tokens) { tokens = IERC20(underlying).balanceOf(address(this)); AaveLendingPoolV2 lendingPool = AaveLendingPoolV2(provider.getLendingPool()); lendingPool.deposit(underlying, tokens, msg.sender, 29); // 29 -> referral } /** * Gets all aTokens in this contract and redeems underlying tokens. * underlying tokens are then transferred to `_account` * NOTE: aTokens needs to be sent here before calling this * * @return underlying tokens redeemd */ function redeem(address _account) external onlyIdle returns (uint256 tokens) { tokens = IERC20(token).balanceOf(address(this)); AaveLendingPoolV2(provider.getLendingPool()).withdraw(underlying, tokens, _account); } /** * Get the underlying balance on the lending protocol * * @return underlying tokens available */ function availableLiquidity() external view returns (uint256) { return IERC20(underlying).balanceOf(token); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_addressesProvider","type":"address"},{"internalType":"address","name":"_idleToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":false,"inputs":[],"name":"_approveProvider","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"availableLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getPriceInToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"idleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"nextSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"name":"nextSupplyRateWithParams","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"provider","outputs":[{"internalType":"contract AaveLendingPoolProviderV2","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200290c3803806200290c83398101604081905262000034916200059e565b6000620000496001600160e01b03620001a316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038316620000c55760405162461bcd60e51b8152600401620000bc90620008b7565b60405180910390fd5b600180546001600160a01b0319166001600160a01b038516908117909155604080516358b50cef60e11b8152905163b16a19de91600480820192602092909190829003018186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200015591908101906200057d565b600280546001600160a01b03199081166001600160a01b0393841617909155600380548216848416179055600480549091169184169190911790556200019a620001a7565b505050620009a3565b3390565b620001ba6001600160e01b03620002cb16565b620001d95760405162461bcd60e51b8152600401620000bc90620008c9565b600354600160a01b900460ff1615620002065760405162461bcd60e51b8152600401620000bc9062000893565b620002b6600460009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025957600080fd5b505afa1580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200029491908101906200057d565b6002546001600160a01b031690600019620002fa602090811b6200101317901c565b6003805460ff60a01b1916600160a01b179055565b600080546001600160a01b0316620002eb6001600160e01b03620001a316565b6001600160a01b031614905090565b801580620003895750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9062000333903090869060040162000855565b60206040518083038186803b1580156200034c57600080fd5b505afa15801562000361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000387919081019062000613565b155b620003a85760405162461bcd60e51b8152600401620000bc90620008ed565b6040516200040690849063095ea7b360e01b90620003cd908690869060240162000874565b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b03938416179052906200040b16565b505050565b6200042a826001600160a01b03166200051360201b6200144e1760201c565b620004495760405162461bcd60e51b8152600401620000bc90620008ff565b60006060836001600160a01b03168360405162000467919062000840565b6000604051808303816000865af19150503d8060008114620004a6576040519150601f19603f3d011682016040523d82523d6000602084013e620004ab565b606091505b509150915081620004d05760405162461bcd60e51b8152600401620000bc90620008a5565b8051156200050d5780806020019051620004ee9190810190620005f2565b6200050d5760405162461bcd60e51b8152600401620000bc90620008db565b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200054857508115155b949350505050565b80516200055d8162000973565b92915050565b80516200055d816200098d565b80516200055d8162000998565b6000602082840312156200059057600080fd5b600062000548848462000550565b600080600060608486031215620005b457600080fd5b6000620005c2868662000550565b9350506020620005d58682870162000550565b9250506040620005e88682870162000550565b9150509250925092565b6000602082840312156200060557600080fd5b600062000548848462000563565b6000602082840312156200062657600080fd5b600062000548848462000570565b6200063f8162000923565b82525050565b6000620006528262000911565b6200065e818562000915565b93506200067081856020860162000944565b9290920192915050565b6000620006896010836200091a565b6f105b1c9958591e48185c1c1c9bdd995960821b815260200192915050565b6000620006b76020836200091a565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000620006f2600f836200091a565b6e0414156453a2061646472206973203608c1b815260200192915050565b60006200071f6020836200091a565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006200075a602a836200091a565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000620007a86036836200091a565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b600062000809601f836200091a565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6200063f8162000941565b60006200084e828462000645565b9392505050565b6040810162000865828562000634565b6200084e602083018462000634565b6040810162000884828562000634565b6200084e602083018462000835565b602080825281016200055d816200067a565b602080825281016200055d81620006a8565b602080825281016200055d81620006e3565b602080825281016200055d8162000710565b602080825281016200055d816200074b565b602080825281016200055d8162000799565b602080825281016200055d81620007fa565b5190565b919050565b90815260200190565b60006200055d8262000935565b151590565b6001600160a01b031690565b90565b60005b838110156200096157818101518382015260200162000947565b838111156200050d5750506000910152565b6200097e8162000923565b81146200098a57600080fd5b50565b6200097e8162000930565b6200097e8162000941565b611f5980620009b36000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063c2822e9e11610081578063ccdd014911610066578063ccdd0149146101e5578063f2fde38b146101f8578063fc0c546a1461020b5761011b565b8063c2822e9e146101d5578063c89d5b8b146101dd5761011b565b80638da5cb5b1461019f5780638f32d59b146101a757806393fd9219146101af57806395a2251f146101c25761011b565b80632dd60c5e116100ee5780632dd60c5e146101705780636f307dc314610185578063715018a61461018d57806374375359146101975761011b565b806302bbce4614610120578063085d48831461013e5780631249c58b14610153578063158ef93e1461015b575b600080fd5b610128610213565b6040516101359190611dc5565b60405180910390f35b61014661021f565b6040516101359190611d06565b61012861023b565b61016361045e565b6040516101359190611cf8565b61017861047f565b6040516101359190611bf4565b61017861049b565b6101956104b7565b005b61012861054a565b6101786105fd565b610163610619565b6101286101bd366004611731565b610657565b6101286101d03660046116f5565b610660565b610195610874565b6101286109fd565b6101286101f33660046117b0565b610b82565b6101956102063660046116f5565b610fc3565b610178610ff3565b670de0b6b3a764000090565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035460009073ffffffffffffffffffffffffffffffffffffffff16331461027e5760405162461bcd60e51b815260040161027590611d25565b60405180910390fd5b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a08231906102d4903090600401611bf4565b60206040518083038186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061032491908101906117ce565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039057600080fd5b505afa1580156103a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103c89190810190611713565b6002546040517fe8eda9df00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff8084169263e8eda9df9261042892169086903390601d90600401611c60565b600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050505090565b60035474010000000000000000000000000000000000000000900460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6104bf610619565b6104db5760405162461bcd60e51b815260040161027590611d85565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6002546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff908116926370a08231926105a89290911690600401611bf4565b60206040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105f891908101906117ce565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661063b61100f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60005b92915050565b60035460009073ffffffffffffffffffffffffffffffffffffffff16331461069a5760405162461bcd60e51b815260040161027590611d25565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a08231906106f0903090600401611bf4565b60206040518083038186803b15801561070857600080fd5b505afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061074091908101906117ce565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107e29190810190611713565b6002546040517f69328dec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316926369328dec9261083d9291169085908790600401611c38565b600060405180830381600087803b15801561085757600080fd5b505af115801561086b573d6000803e3d6000fd5b50505050919050565b61087c610619565b6108985760405162461bcd60e51b815260040161027590611d85565b60035474010000000000000000000000000000000000000000900460ff16156108d35760405162461bcd60e51b815260040161027590611d35565b6109bc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109769190810190611713565b60025473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61101316565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6000610a0761148a565b60048054604080517f0261bf8b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630261bf8b928282019260209290829003018186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aa79190810190611713565b6002546040517f35ea6a7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316926335ea6a7592610afe92911690600401611bf4565b6101806040518083038186803b158015610b1757600080fd5b505afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b4f9190810190611791565b6060810151909150610b7c906fffffffffffffffffffffffffffffffff166298968063ffffffff61119f16565b91505090565b60048054604080517f0261bf8b0000000000000000000000000000000000000000000000000000000081529051600093849373ffffffffffffffffffffffffffffffffffffffff1692630261bf8b9281830192602092829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c249190810190611713565b9050610c2e61148a565b6002546040517f35ea6a7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116926335ea6a7592610c869290911690600401611bf4565b6101806040518083038186803b158015610c9f57600080fd5b505afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cd79190810190611791565b90506000816101400151905060008083610100015173ffffffffffffffffffffffffffffffffffffffff1663f731e9be6040518163ffffffff1660e01b8152600401604080518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d6891908101906117ec565b915091506000610e336b033b2e3c9fd0803ce8000000610e2787604001516fffffffffffffffffffffffffffffffff1688610120015173ffffffffffffffffffffffffffffffffffffffff1663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610de357600080fd5b505afa158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e1b91908101906117ce565b9063ffffffff6111e816565b9063ffffffff61119f16565b60025460e08701516040517f70a0823100000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191610e9291600401611bf4565b60206040518083038186803b158015610eaa57600080fd5b505afa158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ee291908101906117ce565b60025490915060009073ffffffffffffffffffffffffffffffffffffffff80881691639584df289116610f1b858e63ffffffff61122216565b888789610f2b8e60000151611247565b6040518763ffffffff1660e01b8152600401610f4c96959493929190611c9e565b60606040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f9c9190810190611826565b50909150610fb59050816298968063ffffffff61119f16565b9a9950505050505050505050565b610fcb610619565b610fe75760405162461bcd60e51b815260040161027590611d85565b610ff081611252565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b8015806110c157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061106f9030908690600401611c02565b60206040518083038186803b15801561108757600080fd5b505afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110bf91908101906117ce565b155b6110dd5760405162461bcd60e51b815260040161027590611da5565b60405161119a9084907f095ea7b300000000000000000000000000000000000000000000000000000000906111189086908690602401611c1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611312565b505050565b60006111e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611417565b9392505050565b6000826111f75750600061065a565b8282028284828161120457fe5b04146111e15760405162461bcd60e51b815260040161027590611d75565b6000828201838110156111e15760405162461bcd60e51b815260040161027590611d55565b5160401c61ffff1690565b73ffffffffffffffffffffffffffffffffffffffff81166112855760405162461bcd60e51b815260040161027590611d45565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6113318273ffffffffffffffffffffffffffffffffffffffff1661144e565b61134d5760405162461bcd60e51b815260040161027590611db5565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516113769190611be8565b6000604051808303816000865af19150503d80600081146113b3576040519150601f19603f3d011682016040523d82523d6000602084013e6113b8565b606091505b5091509150816113da5760405162461bcd60e51b815260040161027590611d65565b80511561141157808060200190516113f59190810190611773565b6114115760405162461bcd60e51b815260040161027590611d95565b50505050565b600081836114385760405162461bcd60e51b81526004016102759190611d14565b50600083858161144457fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061148257508115155b949350505050565b60405180610180016040528061149e6114f5565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b803561065a81611ed5565b805161065a81611ed5565b60008083601f84011261153057600080fd5b50813567ffffffffffffffff81111561154857600080fd5b60208301915083602082028301111561156057600080fd5b9250929050565b805161065a81611ee9565b60006020828403121561158457600080fd5b61158e6020611dd3565b9050600061159c84846116d4565b82525092915050565b600061018082840312156115b857600080fd5b6115c3610180611dd3565b905060006115d18484611572565b82525060206115e2848483016116be565b60208301525060406115f6848285016116be565b604083015250606061160a848285016116be565b606083015250608061161e848285016116be565b60808301525060a0611632848285016116be565b60a08301525060c0611646848285016116df565b60c08301525060e061165a84828501611513565b60e08301525061010061166f84828501611513565b6101008301525061012061168584828501611513565b6101208301525061014061169b84828501611513565b610140830152506101606116b1848285016116ea565b6101608301525092915050565b805161065a81611ef2565b803561065a81611efb565b805161065a81611efb565b805161065a81611f04565b805161065a81611f0d565b60006020828403121561170757600080fd5b60006114828484611508565b60006020828403121561172557600080fd5b60006114828484611513565b6000806020838503121561174457600080fd5b823567ffffffffffffffff81111561175b57600080fd5b6117678582860161151e565b92509250509250929050565b60006020828403121561178557600080fd5b60006114828484611567565b600061018082840312156117a457600080fd5b600061148284846115a5565b6000602082840312156117c257600080fd5b600061148284846116c9565b6000602082840312156117e057600080fd5b600061148284846116d4565b600080604083850312156117ff57600080fd5b600061180b85856116d4565b925050602061181c858286016116d4565b9150509250929050565b60008060006060848603121561183b57600080fd5b600061184786866116d4565b9350506020611858868287016116d4565b9250506040611869868287016116d4565b9150509250925092565b61187c81611e64565b82525050565b61187c81611e0c565b61187c81611e17565b600061189f82611dfa565b6118a98185611dfe565b93506118b9818560208601611e81565b9290920192915050565b61187c81611e6b565b61187c81611e76565b60006118e082611dfa565b6118ea8185611e03565b93506118fa818560208601611e81565b61190381611ead565b9093019392505050565b600061191a602083611e03565b7f4f776e61626c653a2063616c6c6572206973206e6f742049646c65546f6b656e815260200192915050565b6000611953601083611e03565b7f416c726561647920617070726f76656400000000000000000000000000000000815260200192915050565b600061198c602683611e03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006119eb601b83611e03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611a24602083611e03565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611a5d602183611e03565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611abc602083611e03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611af5602a83611e03565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b6000611b54603683611e03565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b6000611bb3601f83611e03565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b61187c81611e51565b60006111e18284611894565b6020810161065a8284611882565b60408101611c108285611882565b6111e16020830184611882565b60408101611c2b8285611882565b6111e16020830184611bdf565b60608101611c468286611882565b611c536020830185611bdf565b6114826040830184611882565b60808101611c6e8287611882565b611c7b6020830186611bdf565b611c886040830185611873565b611c9560608301846118cc565b95945050505050565b60c08101611cac8289611882565b611cb96020830188611bdf565b611cc66040830187611bdf565b611cd36060830186611bdf565b611ce06080830185611bdf565b611ced60a0830184611bdf565b979650505050505050565b6020810161065a828461188b565b6020810161065a82846118c3565b602080825281016111e181846118d5565b6020808252810161065a8161190d565b6020808252810161065a81611946565b6020808252810161065a8161197f565b6020808252810161065a816119de565b6020808252810161065a81611a17565b6020808252810161065a81611a50565b6020808252810161065a81611aaf565b6020808252810161065a81611ae8565b6020808252810161065a81611b47565b6020808252810161065a81611ba6565b6020810161065a8284611bdf565b60405181810167ffffffffffffffff81118282101715611df257600080fd5b604052919050565b5190565b919050565b90815260200190565b600061065a82611e38565b151590565b6fffffffffffffffffffffffffffffffff1690565b61ffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b64ffffffffff1690565b60ff1690565b600061065a825b600061065a82611e0c565b600061065a82611e31565b60005b83811015611e9c578181015183820152602001611e84565b838111156114115750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b611ede81611e0c565b8114610ff057600080fd5b611ede81611e17565b611ede81611e1c565b611ede81611e51565b611ede81611e54565b611ede81611e5e56fea365627a7a72315820ce91f700ff970cf70cbc763a9240f6e00ac0bfc16dc394520cfbe3d2d9043b596c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000030ba81f1c18d280636f32af80b9aad02cf0854e000000000000000000000000b53c1a33016b2dc2ff3653530bff1848a515c8c5000000000000000000000000c8e6ca6e96a326dc448307a5fde90a0b21fd7f80
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063c2822e9e11610081578063ccdd014911610066578063ccdd0149146101e5578063f2fde38b146101f8578063fc0c546a1461020b5761011b565b8063c2822e9e146101d5578063c89d5b8b146101dd5761011b565b80638da5cb5b1461019f5780638f32d59b146101a757806393fd9219146101af57806395a2251f146101c25761011b565b80632dd60c5e116100ee5780632dd60c5e146101705780636f307dc314610185578063715018a61461018d57806374375359146101975761011b565b806302bbce4614610120578063085d48831461013e5780631249c58b14610153578063158ef93e1461015b575b600080fd5b610128610213565b6040516101359190611dc5565b60405180910390f35b61014661021f565b6040516101359190611d06565b61012861023b565b61016361045e565b6040516101359190611cf8565b61017861047f565b6040516101359190611bf4565b61017861049b565b6101956104b7565b005b61012861054a565b6101786105fd565b610163610619565b6101286101bd366004611731565b610657565b6101286101d03660046116f5565b610660565b610195610874565b6101286109fd565b6101286101f33660046117b0565b610b82565b6101956102063660046116f5565b610fc3565b610178610ff3565b670de0b6b3a764000090565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60035460009073ffffffffffffffffffffffffffffffffffffffff16331461027e5760405162461bcd60e51b815260040161027590611d25565b60405180910390fd5b6002546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a08231906102d4903090600401611bf4565b60206040518083038186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061032491908101906117ce565b90506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039057600080fd5b505afa1580156103a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103c89190810190611713565b6002546040517fe8eda9df00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff8084169263e8eda9df9261042892169086903390601d90600401611c60565b600060405180830381600087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050505090565b60035474010000000000000000000000000000000000000000900460ff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6104bf610619565b6104db5760405162461bcd60e51b815260040161027590611d85565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6002546001546040517f70a0823100000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff908116926370a08231926105a89290911690600401611bf4565b60206040518083038186803b1580156105c057600080fd5b505afa1580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105f891908101906117ce565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000805473ffffffffffffffffffffffffffffffffffffffff1661063b61100f565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60005b92915050565b60035460009073ffffffffffffffffffffffffffffffffffffffff16331461069a5760405162461bcd60e51b815260040161027590611d25565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a08231906106f0903090600401611bf4565b60206040518083038186803b15801561070857600080fd5b505afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061074091908101906117ce565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107e29190810190611713565b6002546040517f69328dec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316926369328dec9261083d9291169085908790600401611c38565b600060405180830381600087803b15801561085757600080fd5b505af115801561086b573d6000803e3d6000fd5b50505050919050565b61087c610619565b6108985760405162461bcd60e51b815260040161027590611d85565b60035474010000000000000000000000000000000000000000900460ff16156108d35760405162461bcd60e51b815260040161027590611d35565b6109bc600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561093e57600080fd5b505afa158015610952573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109769190810190611713565b60025473ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61101316565b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6000610a0761148a565b60048054604080517f0261bf8b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921692630261bf8b928282019260209290829003018186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aa79190810190611713565b6002546040517f35ea6a7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316926335ea6a7592610afe92911690600401611bf4565b6101806040518083038186803b158015610b1757600080fd5b505afa158015610b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b4f9190810190611791565b6060810151909150610b7c906fffffffffffffffffffffffffffffffff166298968063ffffffff61119f16565b91505090565b60048054604080517f0261bf8b0000000000000000000000000000000000000000000000000000000081529051600093849373ffffffffffffffffffffffffffffffffffffffff1692630261bf8b9281830192602092829003018186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c249190810190611713565b9050610c2e61148a565b6002546040517f35ea6a7500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116926335ea6a7592610c869290911690600401611bf4565b6101806040518083038186803b158015610c9f57600080fd5b505afa158015610cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cd79190810190611791565b90506000816101400151905060008083610100015173ffffffffffffffffffffffffffffffffffffffff1663f731e9be6040518163ffffffff1660e01b8152600401604080518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d6891908101906117ec565b915091506000610e336b033b2e3c9fd0803ce8000000610e2787604001516fffffffffffffffffffffffffffffffff1688610120015173ffffffffffffffffffffffffffffffffffffffff1663b1bf962d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610de357600080fd5b505afa158015610df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e1b91908101906117ce565b9063ffffffff6111e816565b9063ffffffff61119f16565b60025460e08701516040517f70a0823100000000000000000000000000000000000000000000000000000000815292935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191610e9291600401611bf4565b60206040518083038186803b158015610eaa57600080fd5b505afa158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ee291908101906117ce565b60025490915060009073ffffffffffffffffffffffffffffffffffffffff80881691639584df289116610f1b858e63ffffffff61122216565b888789610f2b8e60000151611247565b6040518763ffffffff1660e01b8152600401610f4c96959493929190611c9e565b60606040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f9c9190810190611826565b50909150610fb59050816298968063ffffffff61119f16565b9a9950505050505050505050565b610fcb610619565b610fe75760405162461bcd60e51b815260040161027590611d85565b610ff081611252565b50565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b3390565b8015806110c157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061106f9030908690600401611c02565b60206040518083038186803b15801561108757600080fd5b505afa15801561109b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110bf91908101906117ce565b155b6110dd5760405162461bcd60e51b815260040161027590611da5565b60405161119a9084907f095ea7b300000000000000000000000000000000000000000000000000000000906111189086908690602401611c1d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611312565b505050565b60006111e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611417565b9392505050565b6000826111f75750600061065a565b8282028284828161120457fe5b04146111e15760405162461bcd60e51b815260040161027590611d75565b6000828201838110156111e15760405162461bcd60e51b815260040161027590611d55565b5160401c61ffff1690565b73ffffffffffffffffffffffffffffffffffffffff81166112855760405162461bcd60e51b815260040161027590611d45565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6113318273ffffffffffffffffffffffffffffffffffffffff1661144e565b61134d5760405162461bcd60e51b815260040161027590611db5565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516113769190611be8565b6000604051808303816000865af19150503d80600081146113b3576040519150601f19603f3d011682016040523d82523d6000602084013e6113b8565b606091505b5091509150816113da5760405162461bcd60e51b815260040161027590611d65565b80511561141157808060200190516113f59190810190611773565b6114115760405162461bcd60e51b815260040161027590611d95565b50505050565b600081836114385760405162461bcd60e51b81526004016102759190611d14565b50600083858161144457fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061148257508115155b949350505050565b60405180610180016040528061149e6114f5565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820181905261014082018190526101609091015290565b6040518060200160405280600081525090565b803561065a81611ed5565b805161065a81611ed5565b60008083601f84011261153057600080fd5b50813567ffffffffffffffff81111561154857600080fd5b60208301915083602082028301111561156057600080fd5b9250929050565b805161065a81611ee9565b60006020828403121561158457600080fd5b61158e6020611dd3565b9050600061159c84846116d4565b82525092915050565b600061018082840312156115b857600080fd5b6115c3610180611dd3565b905060006115d18484611572565b82525060206115e2848483016116be565b60208301525060406115f6848285016116be565b604083015250606061160a848285016116be565b606083015250608061161e848285016116be565b60808301525060a0611632848285016116be565b60a08301525060c0611646848285016116df565b60c08301525060e061165a84828501611513565b60e08301525061010061166f84828501611513565b6101008301525061012061168584828501611513565b6101208301525061014061169b84828501611513565b610140830152506101606116b1848285016116ea565b6101608301525092915050565b805161065a81611ef2565b803561065a81611efb565b805161065a81611efb565b805161065a81611f04565b805161065a81611f0d565b60006020828403121561170757600080fd5b60006114828484611508565b60006020828403121561172557600080fd5b60006114828484611513565b6000806020838503121561174457600080fd5b823567ffffffffffffffff81111561175b57600080fd5b6117678582860161151e565b92509250509250929050565b60006020828403121561178557600080fd5b60006114828484611567565b600061018082840312156117a457600080fd5b600061148284846115a5565b6000602082840312156117c257600080fd5b600061148284846116c9565b6000602082840312156117e057600080fd5b600061148284846116d4565b600080604083850312156117ff57600080fd5b600061180b85856116d4565b925050602061181c858286016116d4565b9150509250929050565b60008060006060848603121561183b57600080fd5b600061184786866116d4565b9350506020611858868287016116d4565b9250506040611869868287016116d4565b9150509250925092565b61187c81611e64565b82525050565b61187c81611e0c565b61187c81611e17565b600061189f82611dfa565b6118a98185611dfe565b93506118b9818560208601611e81565b9290920192915050565b61187c81611e6b565b61187c81611e76565b60006118e082611dfa565b6118ea8185611e03565b93506118fa818560208601611e81565b61190381611ead565b9093019392505050565b600061191a602083611e03565b7f4f776e61626c653a2063616c6c6572206973206e6f742049646c65546f6b656e815260200192915050565b6000611953601083611e03565b7f416c726561647920617070726f76656400000000000000000000000000000000815260200192915050565b600061198c602683611e03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006119eb601b83611e03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611a24602083611e03565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000611a5d602183611e03565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611abc602083611e03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611af5602a83611e03565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e81527f6f74207375636365656400000000000000000000000000000000000000000000602082015260400192915050565b6000611b54603683611e03565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015260400192915050565b6000611bb3601f83611e03565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b61187c81611e51565b60006111e18284611894565b6020810161065a8284611882565b60408101611c108285611882565b6111e16020830184611882565b60408101611c2b8285611882565b6111e16020830184611bdf565b60608101611c468286611882565b611c536020830185611bdf565b6114826040830184611882565b60808101611c6e8287611882565b611c7b6020830186611bdf565b611c886040830185611873565b611c9560608301846118cc565b95945050505050565b60c08101611cac8289611882565b611cb96020830188611bdf565b611cc66040830187611bdf565b611cd36060830186611bdf565b611ce06080830185611bdf565b611ced60a0830184611bdf565b979650505050505050565b6020810161065a828461188b565b6020810161065a82846118c3565b602080825281016111e181846118d5565b6020808252810161065a8161190d565b6020808252810161065a81611946565b6020808252810161065a8161197f565b6020808252810161065a816119de565b6020808252810161065a81611a17565b6020808252810161065a81611a50565b6020808252810161065a81611aaf565b6020808252810161065a81611ae8565b6020808252810161065a81611b47565b6020808252810161065a81611ba6565b6020810161065a8284611bdf565b60405181810167ffffffffffffffff81118282101715611df257600080fd5b604052919050565b5190565b919050565b90815260200190565b600061065a82611e38565b151590565b6fffffffffffffffffffffffffffffffff1690565b61ffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b90565b64ffffffffff1690565b60ff1690565b600061065a825b600061065a82611e0c565b600061065a82611e31565b60005b83811015611e9c578181015183820152602001611e84565b838111156114115750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b611ede81611e0c565b8114610ff057600080fd5b611ede81611e17565b611ede81611e1c565b611ede81611e51565b611ede81611e54565b611ede81611e5e56fea365627a7a72315820ce91f700ff970cf70cbc763a9240f6e00ac0bfc16dc394520cfbe3d2d9043b596c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000030ba81f1c18d280636f32af80b9aad02cf0854e000000000000000000000000b53c1a33016b2dc2ff3653530bff1848a515c8c5000000000000000000000000c8e6ca6e96a326dc448307a5fde90a0b21fd7f80
-----Decoded View---------------
Arg [0] : _token (address): 0x030bA81f1c18d280636F32af80b9AAd02Cf0854e
Arg [1] : _addressesProvider (address): 0xB53C1a33016B2DC2fF3653530bfF1848a515c8c5
Arg [2] : _idleToken (address): 0xC8E6CA6E96a326dC448307A5fDE90a0b21fd7f80
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000030ba81f1c18d280636f32af80b9aad02cf0854e
Arg [1] : 000000000000000000000000b53c1a33016b2dc2ff3653530bff1848a515c8c5
Arg [2] : 000000000000000000000000c8e6ca6e96a326dc448307a5fde90a0b21fd7f80
Deployed Bytecode Sourcemap
23920:4614:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23920:4614:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26706:97;;;:::i;:::-;;;;;;;;;;;;;;;;24247:41;;;:::i;:::-;;;;;;;;27487:303;;;:::i;24217:23::-;;;:::i;:::-;;;;;;;;24188:24;;;:::i;:::-;;;;;;;;24158:25;;;:::i;18246:140::-;;;:::i;:::-;;28414:117;;;:::i;17435:79::-;;;:::i;17801:94::-;;;:::i;25232:117::-;;;;;;;;;:::i;28048:241::-;;;;;;;;;:::i;24798:201::-;;;:::i;26867:267::-;;;:::i;25541:1069::-;;;;;;;;;:::i;18541:109::-;;;;;;;;;:::i;24087:20::-;;;:::i;26706:97::-;26791:6;26706:97;:::o;24247:41::-;;;;;;:::o;27487:303::-;25137:9;;27540:14;;25137:9;;25123:10;:23;25115:68;;;;-1:-1:-1;;;25115:68:0;;;;;;;;;;;;;;;;;27581:10;;27574:43;;;;;27581:10;;;;;27574:28;;:43;;27611:4;;27574:43;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27574:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27574:43:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27574:43:0;;;;;;;;;27565:52;;27626:29;27676:8;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27676:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27676:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;27676:25:0;;;;;;;;;27731:10;;27711:55;;;;;27626:76;;-1:-1:-1;27711:19:0;;;;;;;:55;;27731:10;;27743:6;;27751:10;;27763:2;;27711:55;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27711:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27711:55:0;;;;25190:1;27487:303;:::o;24217:23::-;;;;;;;;;:::o;24188:24::-;;;;;;:::o;24158:25::-;;;;;;:::o;18246:140::-;17647:9;:7;:9::i;:::-;17639:54;;;;-1:-1:-1;;;17639:54:0;;;;;;;;;18345:1;18329:6;;18308:40;;;18329:6;;;;18308:40;;18345:1;;18308:40;18376:1;18359:19;;;;;;18246:140::o;28414:117::-;28497:10;;;28519:5;28490:35;;;;;28467:7;;28497:10;;;;;28490:28;;:35;;28519:5;;;;28490:35;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28490:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28490:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;28490:35:0;;;;;;;;;28483:42;;28414:117;:::o;17435:79::-;17473:7;17500:6;;;17435:79;:::o;17801:94::-;17841:4;17881:6;;;;17865:12;:10;:12::i;:::-;:22;;;17858:29;;17801:94;:::o;25232:117::-;25319:7;25232:117;;;;;:::o;28048:241::-;25137:9;;28119:14;;25137:9;;25123:10;:23;25115:68;;;;-1:-1:-1;;;25115:68:0;;;;;;;;;28160:5;;28153:38;;;;;28160:5;;;;;28153:23;;:38;;28185:4;;28153:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28153:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28153:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;28153:38:0;;;;;;;;;28144:47;;28218:8;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28218:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28218:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;28218:25:0;;;;;;;;;28254:10;;28200:83;;;;;:53;;;;;;;:83;;28254:10;;;28266:6;;28274:8;;28200:83;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28200:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28200:83:0;;;;28048:241;;;:::o;24798:201::-;17647:9;:7;:9::i;:::-;17639:54;;;;-1:-1:-1;;;17639:54:0;;;;;;;;;24859:11;;;;;;;24858:12;24850:41;;;;-1:-1:-1;;;24850:41:0;;;;;;;;;24898:70;24929:8;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24929:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24929:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24929:25:0;;;;;;;;;24905:10;;;;;24964:2;24898:70;:30;:70;:::i;:::-;24975:11;:18;;;;;;;;24798:201::o;26867:267::-;26918:7;26936:33;;:::i;:::-;26990:8;;;:25;;;;;;;;:8;;;;;:23;;:25;;;;;;;;;;;;:8;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;26990:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26990:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26990:25:0;;;;;;;;;27032:10;;26972:71;;;;;:59;;;;;;;:71;;27032:10;;;26972:71;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26972:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26972:71:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26972:71:0;;;;;;;;;27067:25;;;;26936:107;;-1:-1:-1;27059:45:0;;:34;;27098:5;27059:45;:38;:45;:::i;:::-;27052:52;;;26867:267;:::o;25541:1069::-;25676:8;;;:25;;;;;;;;25615:7;;;;25676:8;;;:23;;:25;;;;;;;;;;;:8;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;25676:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25676:25:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25676:25:0;;;;;;;;;25633:69;;25711:33;;:::i;:::-;25767:10;;25747:31;;;;;:19;;;;;;;:31;;25767:10;;;;25747:31;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25747:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25747:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25747:31:0;;;;;;;;;25711:67;;25787:30;25847:4;:32;;;25787:93;;25892:23;25917:21;25959:4;:27;;;25942:70;;;:72;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25942:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25942:72:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;25942:72:0;;;;;;;;;25891:123;;;;26025:25;26053:131;26177:6;26053:119;26147:4;:24;;;26053:119;;26072:4;:29;;;26053:77;;;:79;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26053:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26053:79:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26053:79:0;;;;;;;;;:93;:119;:93;:119;:::i;:::-;:123;:131;:123;:131;:::i;:::-;26231:10;;26253:18;;;;26224:48;;;;;26025:159;;-1:-1:-1;26195:26:0;;26231:10;;;;;26224:28;;:48;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26224:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26224:48:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26224:48:0;;;;;;;;;26351:10;;26195:77;;-1:-1:-1;26284:24:0;;26314:26;;;;;;;26351:10;26372:31;26195:77;26395:7;26372:31;:22;:31;:::i;:::-;26414:15;26440:17;26468:13;26492:36;26509:4;:18;;;26492:16;:36::i;:::-;26314:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26314:223:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26314:223:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;26314:223:0;;;;;;;;;-1:-1:-1;26283:254:0;;-1:-1:-1;26553:27:0;;-1:-1:-1;26283:254:0;26574:5;26553:27;:20;:27;:::i;:::-;26546:34;25541:1069;-1:-1:-1;;;;;;;;;;25541:1069:0:o;18541:109::-;17647:9;:7;:9::i;:::-;17639:54;;;;-1:-1:-1;;;17639:54:0;;;;;;;;;18614:28;18633:8;18614:18;:28::i;:::-;18541:109;:::o;24087:20::-;;;;;;:::o;16141:98::-;16221:10;16141:98;:::o;12519:621::-;12889:10;;;12888:62;;-1:-1:-1;12905:39:0;;;;;:15;;;;;;:39;;12929:4;;12936:7;;12905:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12905:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12905:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12905:39:0;;;;;;;;;:44;12888:62;12880:152;;;;-1:-1:-1;;;12880:152:0;;;;;;;;;13069:62;;13043:89;;13062:5;;13092:22;;13069:62;;13116:7;;13125:5;;13069:62;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;13069:62:0;;;49:4:-1;25:18;;61:17;;13069:62:0;182:15:-1;13069:62:0;;;;179:29:-1;;;;160:49;;;13043:18:0;:89::i;:::-;12519:621;;;:::o;6104:132::-;6162:7;6189:39;6193:1;6196;6189:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6182:46;6104:132;-1:-1:-1;;;6104:132:0:o;5165:471::-;5223:7;5468:6;5464:47;;-1:-1:-1;5498:1:0;5491:8;;5464:47;5535:5;;;5539:1;5535;:5;:1;5559:5;;;;;:10;5551:56;;;;-1:-1:-1;;;5551:56:0;;;;;;;;3793:181;3851:7;3883:5;;;3907:6;;;;3899:46;;;;-1:-1:-1;;;3899:46:0;;;;;;;;21853:373;22150:9;22131:2;22149:71;;;;21853:373::o;18756:229::-;18830:22;;;18822:73;;;;-1:-1:-1;;;18822:73:0;;;;;;;;;18932:6;;;18911:38;;;;;;;18932:6;;;18911:38;;;18960:6;:17;;;;;;;;;;;;;;;18756:229::o;14162:1114::-;14766:27;14774:5;14766:25;;;:27::i;:::-;14758:71;;;;-1:-1:-1;;;14758:71:0;;;;;;;;;14903:12;14917:23;14952:5;14944:19;;14964:4;14944:25;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;14902:67:0;;;;14988:7;14980:52;;;;-1:-1:-1;;;14980:52:0;;;;;;;;;15049:17;;:21;15045:224;;15191:10;15180:30;;;;;;;;;;;;;;15172:85;;;;-1:-1:-1;;;15172:85:0;;;;;;;;;14162:1114;;;;:::o;6766:345::-;6852:7;6954:12;6947:5;6939:28;;;;-1:-1:-1;;;6939:28:0;;;;;;;;;;;6978:9;6994:1;6990;:5;;;;;;;6766:345;-1:-1:-1;;;;;6766:345:0:o;9152:619::-;9212:4;9680:20;;9523:66;9720:23;;;;;;:42;;-1:-1:-1;9747:15:0;;;9720:42;9712:51;9152:619;-1:-1:-1;;;;9152:619:0:o;23920:4614::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;661:128;736:13;;754:30;736:13;754:30;;843:356;;979:4;967:9;962:3;958:19;954:30;951:2;;;997:1;994;987:12;951:2;1015:20;1030:4;1015:20;;;1006:29;-1:-1;1085:1;1117:60;1173:3;1153:9;1117:60;;;1092:86;;-1:-1;1103:5;945:254;-1:-1;;945:254;1241:2279;;1369:6;1357:9;1352:3;1348:19;1344:32;1341:2;;;1389:1;1386;1379:12;1341:2;1407:22;1422:6;1407:22;;;1398:31;-1:-1;1488:1;1520:96;1612:3;1592:9;1520:96;;;1495:122;;-1:-1;1688:2;1721:60;1777:3;1753:22;;;1721:60;;;1714:4;1707:5;1703:16;1696:86;1638:155;1858:2;1891:60;1947:3;1938:6;1927:9;1923:22;1891:60;;;1884:4;1877:5;1873:16;1866:86;1803:160;2029:2;2062:60;2118:3;2109:6;2098:9;2094:22;2062:60;;;2055:4;2048:5;2044:16;2037:86;1973:161;2205:3;2239:60;2295:3;2286:6;2275:9;2271:22;2239:60;;;2232:4;2225:5;2221:16;2214:86;2144:167;2380:3;2414:60;2470:3;2461:6;2450:9;2446:22;2414:60;;;2407:4;2400:5;2396:16;2389:86;2321:165;2551:3;2585:59;2640:3;2631:6;2620:9;2616:22;2585:59;;;2578:4;2571:5;2567:16;2560:85;2496:160;2715:3;2749:60;2805:3;2796:6;2785:9;2781:22;2749:60;;;2742:4;2735:5;2731:16;2724:86;2666:155;2889:3;2925:60;2981:3;2972:6;2961:9;2957:22;2925:60;;;2916:6;2909:5;2905:18;2898:88;2831:166;3067:3;3103:60;3159:3;3150:6;3139:9;3135:22;3103:60;;;3094:6;3087:5;3083:18;3076:88;3007:168;3248:3;3284:60;3340:3;3331:6;3320:9;3316:22;3284:60;;;3275:6;3268:5;3264:18;3257:88;3185:171;3404:3;3440:58;3494:3;3485:6;3474:9;3470:22;3440:58;;;3431:6;3424:5;3420:18;3413:86;3366:144;1335:2185;;;;;3527:134;3605:13;;3623:33;3605:13;3623:33;;3668:130;3735:20;;3760:33;3735:20;3760:33;;3805:134;3883:13;;3901:33;3883:13;3901:33;;3946:132;4023:13;;4041:32;4023:13;4041:32;;4085:130;4161:13;;4179:31;4161:13;4179:31;;4222:241;;4326:2;4314:9;4305:7;4301:23;4297:32;4294:2;;;4342:1;4339;4332:12;4294:2;4377:1;4394:53;4439:7;4419:9;4394:53;;4470:263;;4585:2;4573:9;4564:7;4560:23;4556:32;4553:2;;;4601:1;4598;4591:12;4553:2;4636:1;4653:64;4709:7;4689:9;4653:64;;4740:397;;;4879:2;4867:9;4858:7;4854:23;4850:32;4847:2;;;4895:1;4892;4885:12;4847:2;4930:31;;4981:18;4970:30;;4967:2;;;5013:1;5010;5003:12;4967:2;5041:80;5113:7;5104:6;5093:9;5089:22;5041:80;;;5031:90;;;;4909:218;4841:296;;;;;;5144:257;;5256:2;5244:9;5235:7;5231:23;5227:32;5224:2;;;5272:1;5269;5262:12;5224:2;5307:1;5324:61;5377:7;5357:9;5324:61;;5408:320;;5551:3;5539:9;5530:7;5526:23;5522:33;5519:2;;;5568:1;5565;5558:12;5519:2;5603:1;5620:92;5704:7;5684:9;5620:92;;5735:241;;5839:2;5827:9;5818:7;5814:23;5810:32;5807:2;;;5855:1;5852;5845:12;5807:2;5890:1;5907:53;5952:7;5932:9;5907:53;;5983:263;;6098:2;6086:9;6077:7;6073:23;6069:32;6066:2;;;6114:1;6111;6104:12;6066:2;6149:1;6166:64;6222:7;6202:9;6166:64;;6253:399;;;6385:2;6373:9;6364:7;6360:23;6356:32;6353:2;;;6401:1;6398;6391:12;6353:2;6436:1;6453:64;6509:7;6489:9;6453:64;;;6443:74;;6415:108;6554:2;6572:64;6628:7;6619:6;6608:9;6604:22;6572:64;;;6562:74;;6533:109;6347:305;;;;;;6659:535;;;;6808:2;6796:9;6787:7;6783:23;6779:32;6776:2;;;6824:1;6821;6814:12;6776:2;6859:1;6876:64;6932:7;6912:9;6876:64;;;6866:74;;6838:108;6977:2;6995:64;7051:7;7042:6;7031:9;7027:22;6995:64;;;6985:74;;6956:109;7096:2;7114:64;7170:7;7161:6;7150:9;7146:22;7114:64;;;7104:74;;7075:109;6770:424;;;;;;7201:142;7292:45;7331:5;7292:45;;;7287:3;7280:58;7274:69;;;7350:113;7433:24;7451:5;7433:24;;7470:104;7547:21;7562:5;7547:21;;7581:356;;7709:38;7741:5;7709:38;;;7759:88;7840:6;7835:3;7759:88;;;7752:95;;7852:52;7897:6;7892:3;7885:4;7878:5;7874:16;7852:52;;;7916:16;;;;;7689:248;-1:-1;;7689:248;7944:192;8060:70;8124:5;8060:70;;8143:142;8234:45;8273:5;8234:45;;8292:347;;8404:39;8437:5;8404:39;;;8455:71;8519:6;8514:3;8455:71;;;8448:78;;8531:52;8576:6;8571:3;8564:4;8557:5;8553:16;8531:52;;;8604:29;8626:6;8604:29;;;8595:39;;;;8384:255;-1:-1;;;8384:255;8647:332;;8807:67;8871:2;8866:3;8807:67;;;8907:34;8887:55;;8970:2;8961:12;;8793:186;-1:-1;;8793:186;8988:316;;9148:67;9212:2;9207:3;9148:67;;;9248:18;9228:39;;9295:2;9286:12;;9134:170;-1:-1;;9134:170;9313:375;;9473:67;9537:2;9532:3;9473:67;;;9573:34;9553:55;;9642:8;9637:2;9628:12;;9621:30;9679:2;9670:12;;9459:229;-1:-1;;9459:229;9697:327;;9857:67;9921:2;9916:3;9857:67;;;9957:29;9937:50;;10015:2;10006:12;;9843:181;-1:-1;;9843:181;10033:332;;10193:67;10257:2;10252:3;10193:67;;;10293:34;10273:55;;10356:2;10347:12;;10179:186;-1:-1;;10179:186;10374:370;;10534:67;10598:2;10593:3;10534:67;;;10634:34;10614:55;;10703:3;10698:2;10689:12;;10682:25;10735:2;10726:12;;10520:224;-1:-1;;10520:224;10753:332;;10913:67;10977:2;10972:3;10913:67;;;11013:34;10993:55;;11076:2;11067:12;;10899:186;-1:-1;;10899:186;11094:379;;11254:67;11318:2;11313:3;11254:67;;;11354:34;11334:55;;11423:12;11418:2;11409:12;;11402:34;11464:2;11455:12;;11240:233;-1:-1;;11240:233;11482:391;;11642:67;11706:2;11701:3;11642:67;;;11742:34;11722:55;;11811:24;11806:2;11797:12;;11790:46;11864:2;11855:12;;11628:245;-1:-1;;11628:245;11882:331;;12042:67;12106:2;12101:3;12042:67;;;12142:33;12122:54;;12204:2;12195:12;;12028:185;-1:-1;;12028:185;12221:113;12304:24;12322:5;12304:24;;12341:262;;12485:93;12574:3;12565:6;12485:93;;12610:213;12728:2;12713:18;;12742:71;12717:9;12786:6;12742:71;;12830:324;12976:2;12961:18;;12990:71;12965:9;13034:6;12990:71;;;13072:72;13140:2;13129:9;13125:18;13116:6;13072:72;;13161:324;13307:2;13292:18;;13321:71;13296:9;13365:6;13321:71;;;13403:72;13471:2;13460:9;13456:18;13447:6;13403:72;;13492:435;13666:2;13651:18;;13680:71;13655:9;13724:6;13680:71;;;13762:72;13830:2;13819:9;13815:18;13806:6;13762:72;;;13845;13913:2;13902:9;13898:18;13889:6;13845:72;;13934:579;14152:3;14137:19;;14167:71;14141:9;14211:6;14167:71;;;14249:72;14317:2;14306:9;14302:18;14293:6;14249:72;;;14332:80;14408:2;14397:9;14393:18;14384:6;14332:80;;;14423;14499:2;14488:9;14484:18;14475:6;14423:80;;;14123:390;;;;;;;;14520:771;14778:3;14763:19;;14793:71;14767:9;14837:6;14793:71;;;14875:72;14943:2;14932:9;14928:18;14919:6;14875:72;;;14958;15026:2;15015:9;15011:18;15002:6;14958:72;;;15041;15109:2;15098:9;15094:18;15085:6;15041:72;;;15124:73;15192:3;15181:9;15177:19;15168:6;15124:73;;;15208;15276:3;15265:9;15261:19;15252:6;15208:73;;;14749:542;;;;;;;;;;15298:201;15410:2;15395:18;;15424:65;15399:9;15462:6;15424:65;;15506:279;15657:2;15642:18;;15671:104;15646:9;15748:6;15671:104;;15792:301;15930:2;15944:47;;;15915:18;;16005:78;15915:18;16069:6;16005:78;;16100:407;16291:2;16305:47;;;16276:18;;16366:131;16276:18;16366:131;;16514:407;16705:2;16719:47;;;16690:18;;16780:131;16690:18;16780:131;;16928:407;17119:2;17133:47;;;17104:18;;17194:131;17104:18;17194:131;;17342:407;17533:2;17547:47;;;17518:18;;17608:131;17518:18;17608:131;;17756:407;17947:2;17961:47;;;17932:18;;18022:131;17932:18;18022:131;;18170:407;18361:2;18375:47;;;18346:18;;18436:131;18346:18;18436:131;;18584:407;18775:2;18789:47;;;18760:18;;18850:131;18760:18;18850:131;;18998:407;19189:2;19203:47;;;19174:18;;19264:131;19174:18;19264:131;;19412:407;19603:2;19617:47;;;19588:18;;19678:131;19588:18;19678:131;;19826:407;20017:2;20031:47;;;20002:18;;20092:131;20002:18;20092:131;;20240:213;20358:2;20343:18;;20372:71;20347:9;20416:6;20372:71;;20460:256;20522:2;20516:9;20548:17;;;20623:18;20608:34;;20644:22;;;20605:62;20602:2;;;20680:1;20677;20670:12;20602:2;20696;20689:22;20500:216;;-1:-1;20500:216;20723:121;20810:12;;20781:63;20981:144;21116:3;21094:31;-1:-1;21094:31;21134:163;21237:19;;;21286:4;21277:14;;21230:67;21305:91;;21367:24;21385:5;21367:24;;21403:85;21469:13;21462:21;;21445:43;21495:113;21568:34;21557:46;;21540:68;21615:84;21687:6;21676:18;;21659:40;21706:121;21779:42;21768:54;;21751:76;21834:72;21896:5;21879:27;21913:90;21985:12;21974:24;;21957:46;22010:81;22081:4;22070:16;;22053:38;22098:129;;22185:37;22216:5;22234:187;;22346:70;22410:5;22346:70;;22576:115;;22663:23;22680:5;22663:23;;22942:268;23007:1;23014:101;23028:6;23025:1;23022:13;23014:101;;;23095:11;;;23089:18;23076:11;;;23069:39;23050:2;23043:10;23014:101;;;23130:6;23127:1;23124:13;23121:2;;;-1:-1;;23195:1;23177:16;;23170:27;22991:219;23218:97;23306:2;23286:14;23302:7;23282:28;;23266:49;23323:117;23392:24;23410:5;23392:24;;;23385:5;23382:35;23372:2;;23431:1;23428;23421:12;23447:111;23513:21;23528:5;23513:21;;23565:117;23634:24;23652:5;23634:24;;23689:117;23758:24;23776:5;23758:24;;23813:115;23881:23;23898:5;23881:23;;23935:113;24002:22;24018:5;24002:22;
Swarm Source
bzzr://ce91f700ff970cf70cbc763a9240f6e00ac0bfc16dc394520cfbe3d2d9043b59
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.