Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 9 from a total of 9 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Add I Token | 9492833 | 2164 days ago | IN | 0 ETH | 0.00035262 | ||||
| Add Pool | 9471380 | 2167 days ago | IN | 0 ETH | 0.00008394 | ||||
| Set_new_APR | 9437710 | 2172 days ago | IN | 0 ETH | 0.00014259 | ||||
| Set_new_APR | 9426037 | 2174 days ago | IN | 0 ETH | 0.00022805 | ||||
| Set_new_APR | 9426007 | 2174 days ago | IN | 0 ETH | 0.00022815 | ||||
| Set_new_APR | 9413859 | 2176 days ago | IN | 0 ETH | 0.00022815 | ||||
| Set_new_APR | 9413770 | 2176 days ago | IN | 0 ETH | 0.00022815 | ||||
| Set_new_APR | 9413723 | 2176 days ago | IN | 0 ETH | 0.00022815 | ||||
| Set_new_APR | 9413683 | 2176 days ago | IN | 0 ETH | 0.00022815 |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
IEarnAPRWithPool
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-02-04
*/
// File: @openzeppelin\contracts\token\ERC20\IERC20.sol
pragma solidity ^0.5.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function transfer(address recipient, uint256 amount) external returns (bool);
}
// 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 {
_owner = _msgSender();
emit OwnershipTransferred(address(0), _owner);
}
/**
* @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: @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.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing 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.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
// 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 != 0x0 && codehash != accountHash);
}
/**
* @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");
}
}
interface IUniswapROI {
function calcUniswapROI(address token) external view returns (uint256, uint256);
}
contract IUniswapAPR {
function getBlocksPerYear() external view returns (uint256);
function calcUniswapAPRFromROI(uint256 roi, uint256 createdAt) external view returns (uint256);
function calcUniswapAPR(address token, uint256 createdAt) external view returns (uint256);
}
interface APRWithPoolOracle {
function getDDEXAPR(address token) external view returns (uint256);
function getDDEXAPRAdjusted(address token, uint256 _supply) external view returns (uint256);
function getLENDFAPR(address token) external view returns (uint256);
function getLENDFAPRAdjusted(address token, uint256 _supply) external view returns (uint256);
function getCompoundAPR(address token) external view returns (uint256);
function getCompoundAPRAdjusted(address token, uint256 _supply) external view returns (uint256);
function getFulcrumAPR(address token) external view returns(uint256);
function getFulcrumAPRAdjusted(address token, uint256 _supply) external view returns(uint256);
function getDyDxAPR(uint256 marketId) external view returns(uint256);
function getDyDxAPRAdjusted(uint256 marketId, uint256 _supply) external view returns(uint256);
function getAaveCore() external view returns (address);
function getAaveAPR(address token) external view returns (uint256);
function getAaveAPRAdjusted(address token, uint256 _supply) external view returns (uint256);
}
interface IUniswapFactory {
function getExchange(address token) external view returns (address exchange);
}
interface IYToken {
function calcPoolValueInToken() external view returns (uint256);
function decimals() external view returns (uint256);
}
contract IEarnAPRWithPool is Ownable {
using SafeMath for uint;
using Address for address;
mapping(address => uint256) public pools;
mapping(address => address) public compound;
mapping(address => address) public fulcrum;
mapping(address => address) public aave;
mapping(address => address) public aaveUni;
mapping(address => uint256) public dydx;
mapping(address => address) public yTokens;
address public UNI;
address public UNIROI;
address public UNIAPR;
address public APR;
constructor() public {
UNI = address(0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95);
UNIROI = address(0xD04cA0Ae1cd8085438FDd8c22A76246F315c2687);
UNIAPR = address(0x4c70D89A4681b2151F56Dc2c3FD751aBb9CE3D95);
APR = address(0xe233b89c76C172E36Fe6985fE8B2731522Fc6177);
addPool(0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643, 9000629);
addPool(0xF5DCe57282A584D2746FaF1593d3121Fcac444dC, 7723867);
addPool(0x6B175474E89094C44Da98b954EedeAC495271d0F, 8939330);
addPool(0x0000000000085d4780B73119b644AE5ecd22b376, 7794100);
addPool(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 6783192);
addPool(0x57Ab1ec28D129707052df4dF418D58a2D46d5f51, 8623684);
addPool(0x0D8775F648430679A709E98d2b0Cb6250d2887EF, 6660894);
addPool(0x514910771AF9Ca656af840dff83E8264EcF986CA, 6627987);
addPool(0xdd974D5C2e2928deA5F71b9825b8b646686BD200, 6627984);
addPool(0x1985365e9f78359a9B6AD760e32412f4a445E862, 6627994);
addPool(0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2, 6627956);
addPool(0xE41d2489571d322189246DaFA5ebDe1F4699F498, 6627972);
addPool(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F, 8314762);
addPool(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 7004537);
addCToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643); // cDAI
addCToken(0x0D8775F648430679A709E98d2b0Cb6250d2887EF, 0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E); // cBAT
addCToken(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, 0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5); // cETH
addCToken(0x1985365e9f78359a9B6AD760e32412f4a445E862, 0x158079Ee67Fce2f58472A96584A73C7Ab9AC95c1); // cREP
addCToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0x39AA39c021dfbaE8faC545936693aC917d5E7563); // cUSDC
addCToken(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 0xC11b1268C1A384e55C48c2391d8d480264A3A7F4); // cWBTC
addCToken(0xE41d2489571d322189246DaFA5ebDe1F4699F498, 0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407); // cZRX
addAToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 0x6B175474E89094C44Da98b954EedeAC495271d0F); // aDAI
addAToken(0x0000000000085d4780B73119b644AE5ecd22b376, 0x0000000000085d4780B73119b644AE5ecd22b376); // aTUSD
addAToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); // aUSDC
addAToken(0xdAC17F958D2ee523a2206206994597C13D831ec7, 0xdAC17F958D2ee523a2206206994597C13D831ec7); // aUSDT
addAToken(0x57Ab1ec28D129707052df4dF418D58a2D46d5f51, 0x57Ab1ec28D129707052df4dF418D58a2D46d5f51); // aSUSD
addAToken(0x80fB784B7eD66730e8b1DBd9820aFD29931aab03, 0x80fB784B7eD66730e8b1DBd9820aFD29931aab03); // aLEND
addAToken(0x0D8775F648430679A709E98d2b0Cb6250d2887EF, 0x0D8775F648430679A709E98d2b0Cb6250d2887EF); // aBAT
addAToken(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); // aETH
addAToken(0x514910771AF9Ca656af840dff83E8264EcF986CA, 0x514910771AF9Ca656af840dff83E8264EcF986CA); // aLINK
addAToken(0xdd974D5C2e2928deA5F71b9825b8b646686BD200, 0xdd974D5C2e2928deA5F71b9825b8b646686BD200); // aKNC
addAToken(0x1985365e9f78359a9B6AD760e32412f4a445E862, 0x1985365e9f78359a9B6AD760e32412f4a445E862); // aREP
addAToken(0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2, 0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2); // aMKR
addAToken(0x0F5D2fB29fb7d3CFeE444a200298f468908cC942, 0x0F5D2fB29fb7d3CFeE444a200298f468908cC942); // aMANA
addAToken(0xE41d2489571d322189246DaFA5ebDe1F4699F498, 0xE41d2489571d322189246DaFA5ebDe1F4699F498); // aZRX
addAToken(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F, 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F); // aSNX
addAToken(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); // aWBTC
addAUniToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 0xfC1E690f61EFd961294b3e1Ce3313fBD8aa4f85d); // aDAI
addAUniToken(0x0000000000085d4780B73119b644AE5ecd22b376, 0x4DA9b813057D04BAef4e5800E36083717b4a0341); // aTUSD
addAUniToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0x9bA00D6856a4eDF4665BcA2C2309936572473B7E); // aUSDC
addAUniToken(0xdAC17F958D2ee523a2206206994597C13D831ec7, 0x71fc860F7D3A592A4a98740e39dB31d25db65ae8); // aUSDT
addAUniToken(0x57Ab1ec28D129707052df4dF418D58a2D46d5f51, 0x625aE63000f46200499120B906716420bd059240); // aSUSD
addAUniToken(0x80fB784B7eD66730e8b1DBd9820aFD29931aab03, 0x7D2D3688Df45Ce7C552E19c27e007673da9204B8); // aLEND
addAUniToken(0x0D8775F648430679A709E98d2b0Cb6250d2887EF, 0xE1BA0FB44CCb0D11b80F92f4f8Ed94CA3fF51D00); // aBAT
addAUniToken(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, 0x3a3A65aAb0dd2A17E3F1947bA16138cd37d08c04); // aETH
addAUniToken(0x514910771AF9Ca656af840dff83E8264EcF986CA, 0xA64BD6C70Cb9051F6A9ba1F163Fdc07E0DfB5F84); // aLINK
addAUniToken(0xdd974D5C2e2928deA5F71b9825b8b646686BD200, 0x9D91BE44C06d373a8a226E1f3b146956083803eB); // aKNC
addAUniToken(0x1985365e9f78359a9B6AD760e32412f4a445E862, 0x71010A9D003445aC60C4e6A7017c1E89A477B438); // aREP
addAUniToken(0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2, 0x7deB5e830be29F91E298ba5FF1356BB7f8146998); // aMKR
addAUniToken(0x0F5D2fB29fb7d3CFeE444a200298f468908cC942, 0x6FCE4A401B6B80ACe52baAefE4421Bd188e76F6f); // aMANA
addAUniToken(0xE41d2489571d322189246DaFA5ebDe1F4699F498, 0x6Fb0855c404E09c47C3fBCA25f08d4E41f9F062f); // aZRX
addAUniToken(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F, 0x328C4c80BC7aCa0834Db37e6600A6c49E12Da4DE); // aSNX
addAUniToken(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 0xFC4B8ED459e00e5400be803A9BB3954234FD50e3); // aWBTC
addIToken(0xE41d2489571d322189246DaFA5ebDe1F4699F498, 0xA7Eb2bc82df18013ecC2A6C533fc29446442EDEe); // iZRX
addIToken(0x1985365e9f78359a9B6AD760e32412f4a445E862, 0xBd56E9477Fc6997609Cf45F84795eFbDAC642Ff1); // iREP
addIToken(0xdd974D5C2e2928deA5F71b9825b8b646686BD200, 0x1cC9567EA2eB740824a45F8026cCF8e46973234D); // iKNC
addIToken(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 0xBA9262578EFef8b3aFf7F60Cd629d6CC8859C8b5); // iWBTC
addIToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xF013406A0B1d544238083DF0B93ad0d2cBE0f65f); // iUSDC
addIToken(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, 0x77f973FCaF871459aa58cd81881Ce453759281bC); // iETH
addIToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 0x493C57C4763932315A328269E1ADaD09653B9081); // iDAI
addIToken(0x514910771AF9Ca656af840dff83E8264EcF986CA, 0x1D496da96caf6b518b133736beca85D5C4F9cBc5); // iLINK
addIToken(0x57Ab1ec28D129707052df4dF418D58a2D46d5f51, 0x49f4592E641820e928F9919Ef4aBd92a719B4b49); // iSUSD
addDToken(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE, 0); // dETH
addDToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 2); // dUSDC
addDToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 3); // dDAI
addYToken(0x6B175474E89094C44Da98b954EedeAC495271d0F, 0x9D25057e62939D3408406975aD75Ffe834DA4cDd); // yDAI
addYToken(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, 0xa2609B2b43AC0F5EbE27deB944d2a399C201E3dA); // yUSDC
addYToken(0xdAC17F958D2ee523a2206206994597C13D831ec7, 0xa1787206d5b1bE0f432C4c4f96Dc4D1257A1Dd14); // yUSDT
addYToken(0x57Ab1ec28D129707052df4dF418D58a2D46d5f51, 0x36324b8168f960A12a8fD01406C9C78143d41380); // ySUSD
addYToken(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599, 0x04EF8121aD039ff41d10029c91EA1694432514e9); // yWBTC
}
function getAPROptionsInc(address _token) public view returns (
uint256 _uniswap,
uint256 _compound,
uint256 _unicompound,
uint256 _fulcrum,
uint256 _unifulcrum,
uint256 _aave,
uint256 _uniaave,
uint256 _dydx,
uint256 _ddex,
uint256 _lendf
) {
address yToken = yTokens[_token];
uint256 _supply = 0;
if (yToken != address(0)) {
_supply = IYToken(yToken).calcPoolValueInToken();
}
return getAPROptionsAdjusted(_token, _supply);
}
function getAPROptions(address _token) public view returns (
uint256 _uniswap,
uint256 _compound,
uint256 _unicompound,
uint256 _fulcrum,
uint256 _unifulcrum,
uint256 _aave,
uint256 _uniaave,
uint256 _dydx,
uint256 _ddex,
uint256 _lendf
) {
return getAPROptionsAdjusted(_token, 0);
}
function getAPROptionsAdjusted(address _token, uint256 _supply) public view returns (
uint256 _uniswap,
uint256 _compound,
uint256 _unicompound,
uint256 _fulcrum,
uint256 _unifulcrum,
uint256 _aave,
uint256 _uniaave,
uint256 _dydx,
uint256 _ddex,
uint256 _lendf
) {
uint256 created = pools[_token];
if (created > 0) {
_uniswap = IUniswapAPR(UNIAPR).calcUniswapAPR(_token, created);
}
address addr = compound[_token];
if (addr != address(0)) {
_compound = APRWithPoolOracle(APR).getCompoundAPR(addr);
created = pools[addr];
if (created > 0) {
_unicompound = IUniswapAPR(UNIAPR).calcUniswapAPR(addr, created);
}
}
addr = fulcrum[_token];
if (addr != address(0)) {
_fulcrum = APRWithPoolOracle(APR).getFulcrumAPRAdjusted(addr, _supply);
created = pools[addr];
if (created > 0) {
_unifulcrum = IUniswapAPR(UNIAPR).calcUniswapAPR(addr, created);
}
}
addr = aave[_token];
if (addr != address(0)) {
_aave = APRWithPoolOracle(APR).getAaveAPRAdjusted(addr, _supply);
addr = aaveUni[_token];
created = pools[addr];
if (created > 0) {
_uniaave = IUniswapAPR(UNIAPR).calcUniswapAPR(addr, created);
}
}
_dydx = dydx[_token];
if (_dydx > 0 || _token == address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) {
_dydx = APRWithPoolOracle(APR).getDyDxAPRAdjusted(_dydx, _supply);
}
_ddex = APRWithPoolOracle(APR).getDDEXAPRAdjusted(_token, _supply);
_lendf = APRWithPoolOracle(APR).getLENDFAPRAdjusted(_token, _supply);
return (
_uniswap,
_compound,
_unicompound,
_fulcrum,
_unifulcrum,
_aave,
_uniaave,
_dydx,
_ddex,
_lendf
);
}
function viewPool(address _token) public view returns (
address token,
address unipool,
uint256 created,
string memory name,
string memory symbol
) {
token = _token;
unipool = IUniswapFactory(UNI).getExchange(_token);
created = pools[_token];
name = IERC20(_token).name();
symbol = IERC20(_token).symbol();
return (token, unipool, created, name, symbol);
}
function addPool(
address token,
uint256 created
) public onlyOwner {
pools[token] = created;
}
function addCToken(
address token,
address cToken
) public onlyOwner {
compound[token] = cToken;
}
function addIToken(
address token,
address iToken
) public onlyOwner {
fulcrum[token] = iToken;
}
function addAToken(
address token,
address aToken
) public onlyOwner {
aave[token] = aToken;
}
function addAUniToken(
address token,
address aToken
) public onlyOwner {
aaveUni[token] = aToken;
}
function addYToken(
address token,
address yToken
) public onlyOwner {
yTokens[token] = yToken;
}
function addDToken(
address token,
uint256 dToken
) public onlyOwner {
dydx[token] = dToken;
}
function set_new_UNIROI(address _new_UNIROI) public onlyOwner {
UNIROI = _new_UNIROI;
}
function set_new_UNI(address _new_UNI) public onlyOwner {
UNI = _new_UNI;
}
function set_new_UNIAPR(address _new_UNIAPR) public onlyOwner {
UNIAPR = _new_UNIAPR;
}
function set_new_APR(address _new_APR) public onlyOwner {
APR = _new_APR;
}
// incase of half-way error
function inCaseTokenGetsStuck(IERC20 _TokenAddress) onlyOwner public {
uint qty = _TokenAddress.balanceOf(address(this));
_TokenAddress.transfer(msg.sender, qty);
}
// incase of half-way error
function inCaseETHGetsStuck() onlyOwner public{
(bool result, ) = msg.sender.call.value(address(this).balance)("");
require(result, "transfer of ETH failed");
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"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":true,"inputs":[],"name":"APR","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNI","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNIAPR","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNIROI","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"aave","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"aaveUni","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"aToken","type":"address"}],"name":"addAToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"aToken","type":"address"}],"name":"addAUniToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"cToken","type":"address"}],"name":"addCToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"dToken","type":"uint256"}],"name":"addDToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"iToken","type":"address"}],"name":"addIToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"created","type":"uint256"}],"name":"addPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"yToken","type":"address"}],"name":"addYToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"compound","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dydx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"fulcrum","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getAPROptions","outputs":[{"internalType":"uint256","name":"_uniswap","type":"uint256"},{"internalType":"uint256","name":"_compound","type":"uint256"},{"internalType":"uint256","name":"_unicompound","type":"uint256"},{"internalType":"uint256","name":"_fulcrum","type":"uint256"},{"internalType":"uint256","name":"_unifulcrum","type":"uint256"},{"internalType":"uint256","name":"_aave","type":"uint256"},{"internalType":"uint256","name":"_uniaave","type":"uint256"},{"internalType":"uint256","name":"_dydx","type":"uint256"},{"internalType":"uint256","name":"_ddex","type":"uint256"},{"internalType":"uint256","name":"_lendf","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"getAPROptionsAdjusted","outputs":[{"internalType":"uint256","name":"_uniswap","type":"uint256"},{"internalType":"uint256","name":"_compound","type":"uint256"},{"internalType":"uint256","name":"_unicompound","type":"uint256"},{"internalType":"uint256","name":"_fulcrum","type":"uint256"},{"internalType":"uint256","name":"_unifulcrum","type":"uint256"},{"internalType":"uint256","name":"_aave","type":"uint256"},{"internalType":"uint256","name":"_uniaave","type":"uint256"},{"internalType":"uint256","name":"_dydx","type":"uint256"},{"internalType":"uint256","name":"_ddex","type":"uint256"},{"internalType":"uint256","name":"_lendf","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getAPROptionsInc","outputs":[{"internalType":"uint256","name":"_uniswap","type":"uint256"},{"internalType":"uint256","name":"_compound","type":"uint256"},{"internalType":"uint256","name":"_unicompound","type":"uint256"},{"internalType":"uint256","name":"_fulcrum","type":"uint256"},{"internalType":"uint256","name":"_unifulcrum","type":"uint256"},{"internalType":"uint256","name":"_aave","type":"uint256"},{"internalType":"uint256","name":"_uniaave","type":"uint256"},{"internalType":"uint256","name":"_dydx","type":"uint256"},{"internalType":"uint256","name":"_ddex","type":"uint256"},{"internalType":"uint256","name":"_lendf","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"inCaseETHGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_TokenAddress","type":"address"}],"name":"inCaseTokenGetsStuck","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"pools","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_APR","type":"address"}],"name":"set_new_APR","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_UNI","type":"address"}],"name":"set_new_UNI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_UNIAPR","type":"address"}],"name":"set_new_UNIAPR","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_new_UNIROI","type":"address"}],"name":"set_new_UNIROI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"viewPool","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"unipool","type":"address"},{"internalType":"uint256","name":"created","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"yTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506200002262000f9d60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a373c0a47dfe034b400b47bdad5fecda2621de6c4d95600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d04ca0ae1cd8085438fdd8c22a76246f315c2687600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734c70d89a4681b2151f56dc2c3fd751abb9ce3d95600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e233b89c76c172e36fe6985fe8b2731522fc6177600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025a735d3a536e4d6dbd6114cc1ead35777bab948e3643628956b562000fa560201b60201c565b6200028373f5dce57282a584d2746faf1593d3121fcac444dc6275db5b62000fa560201b60201c565b620002ac736b175474e89094c44da98b954eedeac495271d0f6288674262000fa560201b60201c565b620002d06e085d4780b73119b644ae5ecd22b3766276edb462000fa560201b60201c565b620002f973a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48626780d862000fa560201b60201c565b620003227357ab1ec28d129707052df4df418d58a2d46d5f516283964462000fa560201b60201c565b6200034b730d8775f648430679a709e98d2b0cb6250d2887ef6265a31e62000fa560201b60201c565b6200037473514910771af9ca656af840dff83e8264ecf986ca6265229362000fa560201b60201c565b6200039d73dd974d5c2e2928dea5f71b9825b8b646686bd2006265229062000fa560201b60201c565b620003c6731985365e9f78359a9b6ad760e32412f4a445e8626265229a62000fa560201b60201c565b620003ef739f8f72aa9304c8b593d555f12ef6589cc3a579a26265227462000fa560201b60201c565b6200041873e41d2489571d322189246dafa5ebde1f4699f4986265228462000fa560201b60201c565b6200044173c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f627edf8a62000fa560201b60201c565b6200046a732260fac5e5542a773aa44fbcfedf7c193bc2c599626ae17962000fa560201b60201c565b620004a4736b175474e89094c44da98b954eedeac495271d0f735d3a536e4d6dbd6114cc1ead35777bab948e36436200107060201b60201c565b620004de730d8775f648430679a709e98d2b0cb6250d2887ef736c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e6200107060201b60201c565b6200051873eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee734ddc2d193948926d02f9b1fe9e1daa0718270ed56200107060201b60201c565b62000552731985365e9f78359a9b6ad760e32412f4a445e86273158079ee67fce2f58472a96584a73c7ab9ac95c16200107060201b60201c565b6200058c73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb487339aa39c021dfbae8fac545936693ac917d5e75636200107060201b60201c565b620005c6732260fac5e5542a773aa44fbcfedf7c193bc2c59973c11b1268c1a384e55c48c2391d8d480264a3a7f46200107060201b60201c565b6200060073e41d2489571d322189246dafa5ebde1f4699f49873b3319f5d18bc0d84dd1b4825dcde5d5f7266d4076200107060201b60201c565b62000626736b175474e89094c44da98b954eedeac495271d0f806200117560201b60201c565b620006476e085d4780b73119b644ae5ecd22b376806200117560201b60201c565b6200066d73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48806200117560201b60201c565b6200069373dac17f958d2ee523a2206206994597c13d831ec7806200117560201b60201c565b620006b97357ab1ec28d129707052df4df418d58a2d46d5f51806200117560201b60201c565b620006df7380fb784b7ed66730e8b1dbd9820afd29931aab03806200117560201b60201c565b62000705730d8775f648430679a709e98d2b0cb6250d2887ef806200117560201b60201c565b6200072b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee806200117560201b60201c565b6200075173514910771af9ca656af840dff83e8264ecf986ca806200117560201b60201c565b6200077773dd974d5c2e2928dea5f71b9825b8b646686bd200806200117560201b60201c565b6200079d731985365e9f78359a9b6ad760e32412f4a445e862806200117560201b60201c565b620007c3739f8f72aa9304c8b593d555f12ef6589cc3a579a2806200117560201b60201c565b620007e9730f5d2fb29fb7d3cfee444a200298f468908cc942806200117560201b60201c565b6200080f73e41d2489571d322189246dafa5ebde1f4699f498806200117560201b60201c565b6200083573c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f806200117560201b60201c565b6200085b732260fac5e5542a773aa44fbcfedf7c193bc2c599806200117560201b60201c565b62000895736b175474e89094c44da98b954eedeac495271d0f73fc1e690f61efd961294b3e1ce3313fbd8aa4f85d6200127a60201b60201c565b620008ca6e085d4780b73119b644ae5ecd22b376734da9b813057d04baef4e5800e36083717b4a03416200127a60201b60201c565b6200090473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48739ba00d6856a4edf4665bca2c2309936572473b7e6200127a60201b60201c565b6200093e73dac17f958d2ee523a2206206994597c13d831ec77371fc860f7d3a592a4a98740e39db31d25db65ae86200127a60201b60201c565b620009787357ab1ec28d129707052df4df418d58a2d46d5f5173625ae63000f46200499120b906716420bd0592406200127a60201b60201c565b620009b27380fb784b7ed66730e8b1dbd9820afd29931aab03737d2d3688df45ce7c552e19c27e007673da9204b86200127a60201b60201c565b620009ec730d8775f648430679a709e98d2b0cb6250d2887ef73e1ba0fb44ccb0d11b80f92f4f8ed94ca3ff51d006200127a60201b60201c565b62000a2673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee733a3a65aab0dd2a17e3f1947ba16138cd37d08c046200127a60201b60201c565b62000a6073514910771af9ca656af840dff83e8264ecf986ca73a64bd6c70cb9051f6a9ba1f163fdc07e0dfb5f846200127a60201b60201c565b62000a9a73dd974d5c2e2928dea5f71b9825b8b646686bd200739d91be44c06d373a8a226e1f3b146956083803eb6200127a60201b60201c565b62000ad4731985365e9f78359a9b6ad760e32412f4a445e8627371010a9d003445ac60c4e6a7017c1e89a477b4386200127a60201b60201c565b62000b0e739f8f72aa9304c8b593d555f12ef6589cc3a579a2737deb5e830be29f91e298ba5ff1356bb7f81469986200127a60201b60201c565b62000b48730f5d2fb29fb7d3cfee444a200298f468908cc942736fce4a401b6b80ace52baaefe4421bd188e76f6f6200127a60201b60201c565b62000b8273e41d2489571d322189246dafa5ebde1f4699f498736fb0855c404e09c47c3fbca25f08d4e41f9f062f6200127a60201b60201c565b62000bbc73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f73328c4c80bc7aca0834db37e6600a6c49e12da4de6200127a60201b60201c565b62000bf6732260fac5e5542a773aa44fbcfedf7c193bc2c59973fc4b8ed459e00e5400be803a9bb3954234fd50e36200127a60201b60201c565b62000c3073e41d2489571d322189246dafa5ebde1f4699f49873a7eb2bc82df18013ecc2a6c533fc29446442edee6200137f60201b60201c565b62000c6a731985365e9f78359a9b6ad760e32412f4a445e86273bd56e9477fc6997609cf45f84795efbdac642ff16200137f60201b60201c565b62000ca473dd974d5c2e2928dea5f71b9825b8b646686bd200731cc9567ea2eb740824a45f8026ccf8e46973234d6200137f60201b60201c565b62000cde732260fac5e5542a773aa44fbcfedf7c193bc2c59973ba9262578efef8b3aff7f60cd629d6cc8859c8b56200137f60201b60201c565b62000d1873a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873f013406a0b1d544238083df0b93ad0d2cbe0f65f6200137f60201b60201c565b62000d5273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee7377f973fcaf871459aa58cd81881ce453759281bc6200137f60201b60201c565b62000d8c736b175474e89094c44da98b954eedeac495271d0f73493c57c4763932315a328269e1adad09653b90816200137f60201b60201c565b62000dc673514910771af9ca656af840dff83e8264ecf986ca731d496da96caf6b518b133736beca85d5c4f9cbc56200137f60201b60201c565b62000e007357ab1ec28d129707052df4df418d58a2d46d5f517349f4592e641820e928f9919ef4abd92a719b4b496200137f60201b60201c565b62000e2773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60006200148460201b60201c565b62000e4e73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860026200148460201b60201c565b62000e75736b175474e89094c44da98b954eedeac495271d0f60036200148460201b60201c565b62000eaf736b175474e89094c44da98b954eedeac495271d0f739d25057e62939d3408406975ad75ffe834da4cdd6200154f60201b60201c565b62000ee973a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873a2609b2b43ac0f5ebe27deb944d2a399c201e3da6200154f60201b60201c565b62000f2373dac17f958d2ee523a2206206994597c13d831ec773a1787206d5b1be0f432c4c4f96dc4d1257a1dd146200154f60201b60201c565b62000f5d7357ab1ec28d129707052df4df418d58a2d46d5f517336324b8168f960a12a8fd01406c9c78143d413806200154f60201b60201c565b62000f97732260fac5e5542a773aa44fbcfedf7c193bc2c5997304ef8121ad039ff41d10029c91ea1694432514e96200154f60201b60201c565b620016ba565b600033905090565b62000fb56200165460201b60201c565b62001028576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b620010806200165460201b60201c565b620010f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b620011856200165460201b60201c565b620011f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6200128a6200165460201b60201c565b620012fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6200138f6200165460201b60201c565b62001402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b620014946200165460201b60201c565b62001507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6200155f6200165460201b60201c565b620015d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200169e62000f9d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61333580620016ca6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063832daf061161010f578063c205c6ef116100a2578063da07af3311610071578063da07af3314610d18578063f0a60d0414610d9c578063f2fde38b14610e20578063f60a15ed14610e64576101f0565b8063c205c6ef14610a96578063c4b5627314610aee578063d6542d4214610b38578063da03172e14610b82576101f0565b8063a4063dbc116100de578063a4063dbc14610919578063a9b946e914610971578063acbeec7e146109b5578063bd30558e14610a4c576101f0565b8063832daf06146107c55780638da5cb5b146108495780638f32d59b14610893578063926021d7146108b5576101f0565b8063463574731161018757806370c364bd1161015657806370c364bd1461068f578063715018a61461071357806377fe45001461071d578063811711c714610761576101f0565b80634635747314610539578063541bcb761461057d57806363beafef146105c757806366f45ba61461062b576101f0565b806328157bcb116101c357806328157bcb146103d5578063284dac23146104235780632e8d6e18146104a757806332a9caba146104eb576101f0565b80630849478e146101f5578063146b9f701461029657806314840295146102fa578063149b38dd1461033e575b600080fd5b6102416004803603604081101561020b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e6e565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b6102f8600480360360408110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b51565b005b61033c6004803603602081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b005b6103806004803603602081101561035457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0b565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b610421600480360360408110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e68565b005b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e9600480360360208110156104bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5d565b005b6105376004803603604081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061215a565b005b61057b6004803603602081101561054f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061221c565b005b6105856122da565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610629600480360360408110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612300565b005b61068d6004803603604081101561064157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fc565b005b6106d1600480360360208110156106a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61071b61252b565b005b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612664565b005b6107c36004803603604081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612722565b005b610807600480360360208110156107db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061281e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610851612851565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61089b61287a565b604051808215151515815260200191505060405180910390f35b610917600480360360408110156108cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d8565b005b61095b6004803603602081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d4565b6040518082815260200191505060405180910390f35b6109b36004803603602081101561098757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ec565b005b6109f7600480360360208110156109cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aaa565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b610a54612ae5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ad860048036036020811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b0b565b6040518082815260200191505060405180910390f35b610af6612b23565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b40612b49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bc460048036036020811015610b9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b6f565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610c72578082015181840152602081019050610c57565b50505050905090810190601f168015610c9f5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610cd8578082015181840152602081019050610cbd565b50505050905090810190601f168015610d055780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610d5a60048036036020811015610d2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dde60048036036020811015610db257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f98565b005b610e6c61301e565b005b6000806000806000806000806000806000600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115610faf57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb8e836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015610f7157600080fd5b505afa158015610f85573d6000803e3d6000fd5b505050506040513d6020811015610f9b57600080fd5b81019080805190602001909291905050509a505b6000600260008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461125457600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344e258b4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b81019080805190602001909291905050509a50600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561125357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b810190808051906020019092919050505099505b5b600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114ff57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634eff75d8828f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d60208110156113bb57600080fd5b81019080805190602001909291905050509850600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211156114fe57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d60208110156114ea57600080fd5b810190808051906020019092919050505097505b5b600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461180c57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663989eaa9c828f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561163c57600080fd5b505afa158015611650573d6000803e3d6000fd5b505050506040513d602081101561166657600080fd5b81019080805190602001909291905050509650600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561180b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156117cd57600080fd5b505afa1580156117e1573d6000803e3d6000fd5b505050506040513d60208110156117f757600080fd5b810190808051906020019092919050505095505b5b600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600085118061189c575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16145b1561195a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcc01c7b868f6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561191c57600080fd5b505afa158015611930573d6000803e3d6000fd5b505050506040513d602081101561194657600080fd5b810190808051906020019092919050505094505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373824dae8f8f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611a0157600080fd5b505afa158015611a15573d6000803e3d6000fd5b505050506040513d6020811015611a2b57600080fd5b81019080805190602001909291905050509350600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e775fd58f8f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611ae557600080fd5b505afa158015611af9573d6000803e3d6000fd5b505050506040513d6020811015611b0f57600080fd5b810190808051906020019092919050505092508b8b8b8b8b8b8b8b8b8b9b509b509b509b509b509b509b509b509b509b5050509295989b9194979a5092959850565b611b5961287a565b611bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611c5561287a565b611cc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000806000806000600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000809050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e3b578173ffffffffffffffffffffffffffffffffffffffff16637137ef996040518163ffffffff1660e01b815260040160206040518083038186803b158015611dfd57600080fd5b505afa158015611e11573d6000803e3d6000fd5b505050506040513d6020811015611e2757600080fd5b810190808051906020019092919050505090505b611e458d82610e6e565b9b509b509b509b509b509b509b509b509b509b5050509193959799509193959799565b611e7061287a565b611ee2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f6561287a565b611fd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561205657600080fd5b505afa15801561206a573d6000803e3d6000fd5b505050506040513d602081101561208057600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561211a57600080fd5b505af115801561212e573d6000803e3d6000fd5b505050506040513d602081101561214457600080fd5b8101908080519060200190929190505050505050565b61216261287a565b6121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61222461287a565b612296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61230861287a565b61237a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61240461287a565b612476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61253361287a565b6125a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61266c61287a565b6126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61272a61287a565b61279c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128bc61318e565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6128e061287a565b612952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60016020528060005260406000206000915090505481565b6129f461287a565b612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080612ac48b6000610e6e565b99509950995099509950995099509950995099509193959799509193959799565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000606080859450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c1957600080fd5b505afa158015612c2d573d6000803e3d6000fd5b505050506040513d6020811015612c4357600080fd5b81019080805190602001909291905050509350600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492508573ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015612cde57600080fd5b505afa158015612cf2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612d1c57600080fd5b8101908080516040519392919084640100000000821115612d3c57600080fd5b83820191506020820185811115612d5257600080fd5b8251866001820283011164010000000082111715612d6f57600080fd5b8083526020830192505050908051906020019080838360005b83811015612da3578082015181840152602081019050612d88565b50505050905090810190601f168015612dd05780820380516001836020036101000a031916815260200191505b5060405250505091508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015612e1f57600080fd5b505afa158015612e33573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612e5d57600080fd5b8101908080516040519392919084640100000000821115612e7d57600080fd5b83820191506020820185811115612e9357600080fd5b8251866001820283011164010000000082111715612eb057600080fd5b8083526020830192505050908051906020019080838360005b83811015612ee4578082015181840152602081019050612ec9565b50505050905090810190601f168015612f115780820380516001836020036101000a031916815260200191505b50604052505050905084848484849450945094509450945091939590929450565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612fa061287a565b613012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61301b81613196565b50565b61302661287a565b613098576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405180600001905060006040518083038185875af1925050503d806000811461310f576040519150601f19603f3d011682016040523d82523d6000602084013e613114565b606091505b505090508061318b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561321c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132db6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820472e1a2e6afb016d9f9619a5cd3b92f7c92187b3f21e393ed9dea0bd0577eac864736f6c634300050c0032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063832daf061161010f578063c205c6ef116100a2578063da07af3311610071578063da07af3314610d18578063f0a60d0414610d9c578063f2fde38b14610e20578063f60a15ed14610e64576101f0565b8063c205c6ef14610a96578063c4b5627314610aee578063d6542d4214610b38578063da03172e14610b82576101f0565b8063a4063dbc116100de578063a4063dbc14610919578063a9b946e914610971578063acbeec7e146109b5578063bd30558e14610a4c576101f0565b8063832daf06146107c55780638da5cb5b146108495780638f32d59b14610893578063926021d7146108b5576101f0565b8063463574731161018757806370c364bd1161015657806370c364bd1461068f578063715018a61461071357806377fe45001461071d578063811711c714610761576101f0565b80634635747314610539578063541bcb761461057d57806363beafef146105c757806366f45ba61461062b576101f0565b806328157bcb116101c357806328157bcb146103d5578063284dac23146104235780632e8d6e18146104a757806332a9caba146104eb576101f0565b80630849478e146101f5578063146b9f701461029657806314840295146102fa578063149b38dd1461033e575b600080fd5b6102416004803603604081101561020b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e6e565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b6102f8600480360360408110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b51565b005b61033c6004803603602081101561031057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c4d565b005b6103806004803603602081101561035457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d0b565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b610421600480360360408110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e68565b005b6104656004803603602081101561043957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f2a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e9600480360360208110156104bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5d565b005b6105376004803603604081101561050157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061215a565b005b61057b6004803603602081101561054f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061221c565b005b6105856122da565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610629600480360360408110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612300565b005b61068d6004803603604081101561064157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123fc565b005b6106d1600480360360208110156106a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61071b61252b565b005b61075f6004803603602081101561073357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612664565b005b6107c36004803603604081101561077757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612722565b005b610807600480360360208110156107db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061281e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610851612851565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61089b61287a565b604051808215151515815260200191505060405180910390f35b610917600480360360408110156108cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128d8565b005b61095b6004803603602081101561092f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d4565b6040518082815260200191505060405180910390f35b6109b36004803603602081101561098757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129ec565b005b6109f7600480360360208110156109cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612aaa565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b610a54612ae5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ad860048036036020811015610aac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b0b565b6040518082815260200191505060405180910390f35b610af6612b23565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b40612b49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bc460048036036020811015610b9857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b6f565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015610c72578082015181840152602081019050610c57565b50505050905090810190601f168015610c9f5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610cd8578082015181840152602081019050610cbd565b50505050905090810190601f168015610d055780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b610d5a60048036036020811015610d2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610dde60048036036020811015610db257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e6260048036036020811015610e3657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f98565b005b610e6c61301e565b005b6000806000806000806000806000806000600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115610faf57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb8e836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015610f7157600080fd5b505afa158015610f85573d6000803e3d6000fd5b505050506040513d6020811015610f9b57600080fd5b81019080805190602001909291905050509a505b6000600260008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461125457600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344e258b4826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b81019080805190602001909291905050509a50600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561125357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b810190808051906020019092919050505099505b5b600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114ff57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634eff75d8828f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561139157600080fd5b505afa1580156113a5573d6000803e3d6000fd5b505050506040513d60208110156113bb57600080fd5b81019080805190602001909291905050509850600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211156114fe57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156114c057600080fd5b505afa1580156114d4573d6000803e3d6000fd5b505050506040513d60208110156114ea57600080fd5b810190808051906020019092919050505097505b5b600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461180c57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663989eaa9c828f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561163c57600080fd5b505afa158015611650573d6000803e3d6000fd5b505050506040513d602081101561166657600080fd5b81019080805190602001909291905050509650600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111561180b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bd917eb82846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156117cd57600080fd5b505afa1580156117e1573d6000803e3d6000fd5b505050506040513d60208110156117f757600080fd5b810190808051906020019092919050505095505b5b600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549450600085118061189c575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff16145b1561195a57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcc01c7b868f6040518363ffffffff1660e01b8152600401808381526020018281526020019250505060206040518083038186803b15801561191c57600080fd5b505afa158015611930573d6000803e3d6000fd5b505050506040513d602081101561194657600080fd5b810190808051906020019092919050505094505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373824dae8f8f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611a0157600080fd5b505afa158015611a15573d6000803e3d6000fd5b505050506040513d6020811015611a2b57600080fd5b81019080805190602001909291905050509350600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e775fd58f8f6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015611ae557600080fd5b505afa158015611af9573d6000803e3d6000fd5b505050506040513d6020811015611b0f57600080fd5b810190808051906020019092919050505092508b8b8b8b8b8b8b8b8b8b9b509b509b509b509b509b509b509b509b509b5050509295989b9194979a5092959850565b611b5961287a565b611bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611c5561287a565b611cc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000806000806000806000806000600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000809050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e3b578173ffffffffffffffffffffffffffffffffffffffff16637137ef996040518163ffffffff1660e01b815260040160206040518083038186803b158015611dfd57600080fd5b505afa158015611e11573d6000803e3d6000fd5b505050506040513d6020811015611e2757600080fd5b810190808051906020019092919050505090505b611e458d82610e6e565b9b509b509b509b509b509b509b509b509b509b5050509193959799509193959799565b611e7061287a565b611ee2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f6561287a565b611fd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561205657600080fd5b505afa15801561206a573d6000803e3d6000fd5b505050506040513d602081101561208057600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561211a57600080fd5b505af115801561212e573d6000803e3d6000fd5b505050506040513d602081101561214457600080fd5b8101908080519060200190929190505050505050565b61216261287a565b6121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b61222461287a565b612296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61230861287a565b61237a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61240461287a565b612476576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61253361287a565b6125a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61266c61287a565b6126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61272a61287a565b61279c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128bc61318e565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6128e061287a565b612952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60016020528060005260406000206000915090505481565b6129f461287a565b612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600080612ac48b6000610e6e565b99509950995099509950995099509950995099509193959799509193959799565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000606080859450600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306f2bf62876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c1957600080fd5b505afa158015612c2d573d6000803e3d6000fd5b505050506040513d6020811015612c4357600080fd5b81019080805190602001909291905050509350600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205492508573ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015612cde57600080fd5b505afa158015612cf2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612d1c57600080fd5b8101908080516040519392919084640100000000821115612d3c57600080fd5b83820191506020820185811115612d5257600080fd5b8251866001820283011164010000000082111715612d6f57600080fd5b8083526020830192505050908051906020019080838360005b83811015612da3578082015181840152602081019050612d88565b50505050905090810190601f168015612dd05780820380516001836020036101000a031916815260200191505b5060405250505091508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015612e1f57600080fd5b505afa158015612e33573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612e5d57600080fd5b8101908080516040519392919084640100000000821115612e7d57600080fd5b83820191506020820185811115612e9357600080fd5b8251866001820283011164010000000082111715612eb057600080fd5b8083526020830192505050908051906020019080838360005b83811015612ee4578082015181840152602081019050612ec9565b50505050905090810190601f168015612f115780820380516001836020036101000a031916815260200191505b50604052505050905084848484849450945094509450945091939590929450565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612fa061287a565b613012576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61301b81613196565b50565b61302661287a565b613098576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff163160405180600001905060006040518083038185875af1925050503d806000811461310f576040519150601f19603f3d011682016040523d82523d6000602084013e613114565b606091505b505090508061318b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7472616e73666572206f6620455448206661696c65640000000000000000000081525060200191505060405180910390fd5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561321c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806132db6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820472e1a2e6afb016d9f9619a5cd3b92f7c92187b3f21e393ed9dea0bd0577eac864736f6c634300050c0032
Deployed Bytecode Sourcemap
14562:13527:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14562:13527:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23828:1989;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23828:1989:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26412:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26412:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27345:89;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27345:89:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;22891:551;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22891:551:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27103:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27103:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14717:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14717:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27677:187;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27677:187:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;26276:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26276:128:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27547:89;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27547:89:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;15008:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26824:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26824:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26965:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26965:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14767:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14767:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3373:140;;;:::i;:::-;;27440:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27440:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;26689:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26689:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14862:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14862:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2562:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2928:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26551:130;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26551:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14670:40;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14670:40:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27238:101;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27238:101:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;23450:370;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23450:370:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15089:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14911:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14911:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15033:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15061;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25825:443;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25825:443:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25825:443:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25825:443:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14816:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14816:39:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14957:42;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14957:42:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3668:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3668:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;27903:183;;;:::i;:::-;;23828:1989;23921:16;23946:17;23972:20;24001:16;24026:19;24054:13;24076:16;24101:13;24123;24145:14;24176:15;24194:5;:13;24200:6;24194:13;;;;;;;;;;;;;;;;24176:31;;24232:1;24222:7;:11;24218:100;;;24269:6;;;;;;;;;;;24257:34;;;24292:6;24300:7;24257:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24257:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24257:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24257:51:0;;;;;;;;;;;;;;;;24246:62;;24218:100;24326:12;24341:8;:16;24350:6;24341:16;;;;;;;;;;;;;;;;;;;;;;;;;24326:31;;24386:1;24370:18;;:4;:18;;;24366:248;;24431:3;;;;;;;;;;;24413:37;;;24451:4;24413:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24413:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24413:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24413:43:0;;;;;;;;;;;;;;;;24401:55;;24477:5;:11;24483:4;24477:11;;;;;;;;;;;;;;;;24467:21;;24513:1;24503:7;:11;24499:106;;;24556:6;;;;;;;;;;;24544:34;;;24579:4;24585:7;24544:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24544:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24544:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24544:49:0;;;;;;;;;;;;;;;;24529:64;;24499:106;24366:248;24629:7;:15;24637:6;24629:15;;;;;;;;;;;;;;;;;;;;;;;;;24622:22;;24673:1;24657:18;;:4;:18;;;24653:262;;24717:3;;;;;;;;;;;24699:44;;;24744:4;24750:7;24699:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24699:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24699:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24699:59:0;;;;;;;;;;;;;;;;24688:70;;24779:5;:11;24785:4;24779:11;;;;;;;;;;;;;;;;24769:21;;24815:1;24805:7;:11;24801:105;;;24857:6;;;;;;;;;;;24845:34;;;24880:4;24886:7;24845:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24845:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24845:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24845:49:0;;;;;;;;;;;;;;;;24831:63;;24801:105;24653:262;24930:4;:12;24935:6;24930:12;;;;;;;;;;;;;;;;;;;;;;;;;24923:19;;24971:1;24955:18;;:4;:18;;;24951:286;;25012:3;;;;;;;;;;;24994:41;;;25036:4;25042:7;24994:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24994:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24994:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24994:56:0;;;;;;;;;;;;;;;;24986:64;;25068:7;:15;25076:6;25068:15;;;;;;;;;;;;;;;;;;;;;;;;;25061:22;;25104:5;:11;25110:4;25104:11;;;;;;;;;;;;;;;;25094:21;;25140:1;25130:7;:11;25126:102;;;25179:6;;;;;;;;;;;25167:34;;;25202:4;25208:7;25167:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25167:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25167:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25167:49:0;;;;;;;;;;;;;;;;25156:60;;25126:102;24951:286;25255:4;:12;25260:6;25255:12;;;;;;;;;;;;;;;;25247:20;;25288:1;25280:5;:9;:74;;;;25311:42;25293:61;;:6;:61;;;25280:74;25276:166;;;25393:3;;;;;;;;;;;25375:41;;;25417:5;25424:7;25375:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25375:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25375:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25375:57:0;;;;;;;;;;;;;;;;25367:65;;25276:166;25478:3;;;;;;;;;;;25460:41;;;25502:6;25510:7;25460:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25460:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25460:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25460:58:0;;;;;;;;;;;;;;;;25452:66;;25554:3;;;;;;;;;;;25536:42;;;25579:6;25587:7;25536:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25536:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25536:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25536:59:0;;;;;;;;;;;;;;;;25527:68;;25624:8;25643:9;25663:12;25686:8;25705:11;25727:5;25743:8;25762:5;25778;25794:6;25606:203;;;;;;;;;;;;;;;;;;;;;;23828:1989;;;;;;;;;;;;;:::o;26412:131::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26529:6;26511:8;:15;26520:5;26511:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;26412:131;;:::o;27345:89::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27418:8;27412:3;;:14;;;;;;;;;;;;;;;;;;27345:89;:::o;22891:551::-;22962:16;22987:17;23013:20;23042:16;23067:19;23095:13;23117:16;23142:13;23164;23186:14;23217;23234:7;:15;23242:6;23234:15;;;;;;;;;;;;;;;;;;;;;;;;;23217:32;;23258:15;23276:1;23258:19;;23308:1;23290:20;;:6;:20;;;23286:95;;23341:6;23333:36;;;:38;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23333:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23333:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23333:38:0;;;;;;;;;;;;;;;;23323:48;;23286:95;23396:38;23418:6;23426:7;23396:21;:38::i;:::-;23389:45;;;;;;;;;;;;;;;;;;;;;;22891:551;;;;;;;;;;;:::o;27103:127::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27216:6;27202:4;:11;27207:5;27202:11;;;;;;;;;;;;;;;:20;;;;27103:127;;:::o;14717:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;27677:187::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27757:8;27768:13;:23;;;27800:4;27768:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27768:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27768:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27768:38:0;;;;;;;;;;;;;;;;27757:49;;27817:13;:22;;;27840:10;27852:3;27817:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27817:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27817:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27817:39:0;;;;;;;;;;;;;;;;;2831:1;27677:187;:::o;26276:128::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26389:7;26374:5;:12;26380:5;26374:12;;;;;;;;;;;;;;;:22;;;;26276:128;;:::o;27547:89::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27620:8;27614:3;;:14;;;;;;;;;;;;;;;;;;27547:89;:::o;15008:18::-;;;;;;;;;;;;;:::o;26824:133::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26943:6;26926:7;:14;26934:5;26926:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26824:133;;:::o;26965:130::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27081:6;27064:7;:14;27072:5;27064:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26965:130;;:::o;14767:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3373:140::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3472:1;3435:40;;3456:6;;;;;;;;;;;3435:40;;;;;;;;;;;;3503:1;3486:6;;:19;;;;;;;;;;;;;;;;;;3373:140::o;27440:101::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27522:11;27513:6;;:20;;;;;;;;;;;;;;;;;;27440:101;:::o;26689:127::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26802:6;26788:4;:11;26793:5;26788:11;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;26689:127;;:::o;14862:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;2562:79::-;2600:7;2627:6;;;;;;;;;;;2620:13;;2562:79;:::o;2928:94::-;2968:4;3008:6;;;;;;;;;;;2992:22;;:12;:10;:12::i;:::-;:22;;;2985:29;;2928:94;:::o;26551:130::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26667:6;26650:7;:14;26658:5;26650:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;26551:130;;:::o;14670:40::-;;;;;;;;;;;;;;;;;:::o;27238:101::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27320:11;27311:6;;:20;;;;;;;;;;;;;;;;;;27238:101;:::o;23450:370::-;23518:16;23543:17;23569:20;23598:16;23623:19;23651:13;23673:16;23698:13;23720;23742:14;23780:32;23802:6;23810:1;23780:21;:32::i;:::-;23773:39;;;;;;;;;;;;;;;;;;;;23450:370;;;;;;;;;;;:::o;15089:18::-;;;;;;;;;;;;;:::o;14911:39::-;;;;;;;;;;;;;;;;;:::o;15033:21::-;;;;;;;;;;;;;:::o;15061:::-;;;;;;;;;;;;;:::o;25825:443::-;25888:13;25910:15;25934;25958:18;25985:20;26030:6;26022:14;;26071:3;;;;;;;;;;;26055:32;;;26088:6;26055:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26055:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26055:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26055:40:0;;;;;;;;;;;;;;;;26045:50;;26114:5;:13;26120:6;26114:13;;;;;;;;;;;;;;;;26104:23;;26150:6;26143:19;;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26143:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26143:21:0;;;;;;39:16:-1;36:1;17:17;2:54;26143:21: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;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26143:21:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;26143:21:0;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26143:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26136:28;;26189:6;26182:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26182:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26182:23:0;;;;;;39:16:-1;36:1;17:17;2:54;26182:23: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;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26182:23:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;26182:23:0;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26182:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26173:32;;26222:5;26229:7;26238;26247:4;26253:6;26214:46;;;;;;;;;;25825:443;;;;;;;:::o;14816:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;14957:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;3668:109::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3741:28;3760:8;3741:18;:28::i;:::-;3668:109;:::o;27903:183::-;2774:9;:7;:9::i;:::-;2766:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27961:11;27978:10;:15;;28008:4;28000:21;;;27978:48;;;;;;;;;;;;;;;;;;;;;;;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;;27960:66:0;;;28045:6;28037:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2831:1;27903:183::o;1311:98::-;1356:15;1391:10;1384:17;;1311:98;:::o;3883:229::-;3977:1;3957:22;;:8;:22;;;;3949:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4067:8;4038:38;;4059:6;;;;;;;;;;;4038:38;;;;;;;;;;;;4096:8;4087:6;;:17;;;;;;;;;;;;;;;;;;3883:229;:::o
Swarm Source
bzzr://472e1a2e6afb016d9f9619a5cd3b92f7c92187b3f21e393ed9dea0bd0577eac8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.