ERC-20
Overview
Max Total Supply
21,000,000 ETF
Holders
579
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000000007 ETFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ETF
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-20 */ /** * SPDX-License-Identifier: MIT */ pragma solidity >=0.8.19; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's / operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's - operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by account. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves amount tokens from the caller's account to recipient. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that spender will be * allowed to spend on behalf of owner through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets amount as the allowance of spender over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves amount tokens from sender to recipient using the * allowance mechanism. amount is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when value tokens are moved from one account (`from`) to * another (`to`). * * Note that value may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a spender for an owner is set by * a call to {approve}. value is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if decimals equals 2, a balance of 505 tokens should * be displayed to a user as 5.05 (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - recipient cannot be the zero address. * - the caller must have a balance of at least amount. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - spender cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - sender and recipient cannot be the zero address. * - sender must have a balance of at least amount. * - the caller must have allowance for ``sender``'s tokens of at least * amount. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to spender by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - spender cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to spender by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - spender cannot be the zero address. * - spender must have allowance for the caller of at least * subtractedValue. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves amount of tokens from sender to recipient. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - sender cannot be the zero address. * - recipient cannot be the zero address. * - sender must have a balance of at least amount. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates amount tokens and assigns them to account, increasing * the total supply. * * Emits a {Transfer} event with from set to the zero address. * * Requirements: * * - account cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys amount tokens from account, reducing the * total supply. * * Emits a {Transfer} event with to set to the zero address. * * Requirements: * * - account cannot be the zero address. * - account must have at least amount tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets amount as the allowance of spender over the owner s tokens. * * This internal function is equivalent to approve, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - owner cannot be the zero address. * - spender cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when from and to are both non-zero, amount of ``from``'s tokens * will be transferred to to. * - when from is zero, amount tokens will be minted for to. * - when to is zero, amount of ``from``'s tokens will be burned. * - from and to are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when from and to are both non-zero, amount of ``from``'s tokens * has been transferred to to. * - when from is zero, amount tokens have been minted for to. * - when to is zero, amount of ``from``'s tokens have been burned. * - from and to are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract 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() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual onlyOwner { _transferOwnership(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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract ETF is ERC20, Ownable { using SafeMath for uint256; bool public tradingOpen = false; mapping(address => bool) public whitelist; constructor() ERC20("ETF", "ETF") { uint256 totalSupply = 21000000 * 10**18; whitelist[msg.sender] = true; _mint(msg.sender, totalSupply); } receive() external payable {} function startTrading() external onlyOwner { tradingOpen = true; } function whitelistPresaleContract(address _address, bool state) external onlyOwner { whitelist[_address] = state; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ) { if (!tradingOpen) { require( whitelist[from] || whitelist[to], "Trading is not active." ); } } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"whitelistPresaleContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600560146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600381526020017f45544600000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45544600000000000000000000000000000000000000000000000000000000008152508160039081620000aa91906200062a565b508060049081620000bc91906200062a565b505050620000df620000d36200016060201b60201c565b6200016860201b60201c565b60006a115eec47f6cf7e3500000090506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200015933826200022e60201b60201c565b506200082c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002979062000772565b60405180910390fd5b620002b460008383620003a660201b60201c565b8060026000828254620002c89190620007c3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200031f9190620007c3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200038691906200080f565b60405180910390a3620003a260008383620003ab60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043257607f821691505b602082108103620004485762000447620003ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000473565b620004be868362000473565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200050b62000505620004ff84620004d6565b620004e0565b620004d6565b9050919050565b6000819050919050565b6200052783620004ea565b6200053f620005368262000512565b84845462000480565b825550505050565b600090565b6200055662000547565b620005638184846200051c565b505050565b5b818110156200058b576200057f6000826200054c565b60018101905062000569565b5050565b601f821115620005da57620005a4816200044e565b620005af8462000463565b81016020851015620005bf578190505b620005d7620005ce8562000463565b83018262000568565b50505b505050565b600082821c905092915050565b6000620005ff60001984600802620005df565b1980831691505092915050565b60006200061a8383620005ec565b9150826002028217905092915050565b6200063582620003b0565b67ffffffffffffffff811115620006515762000650620003bb565b5b6200065d825462000419565b6200066a8282856200058f565b600060209050601f831160018114620006a257600084156200068d578287015190505b6200069985826200060c565b86555062000709565b601f198416620006b2866200044e565b60005b82811015620006dc57848901518255600182019150602085019450602081019050620006b5565b86831015620006fc5784890151620006f8601f891682620005ec565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200075a601f8362000711565b9150620007678262000722565b602082019050919050565b600060208201905081810360008301526200078d816200074b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d082620004d6565b9150620007dd83620004d6565b9250828201905080821115620007f857620007f762000794565b5b92915050565b6200080981620004d6565b82525050565b6000602082019050620008266000830184620007fe565b92915050565b611e85806200083c6000396000f3fe60806040526004361061010d5760003560e01c80638da5cb5b11610095578063a457c2d711610064578063a457c2d714610378578063a9059cbb146103b5578063dd62ed3e146103f2578063f2fde38b1461042f578063ffb54a991461045857610114565b80638da5cb5b146102bc57806395d89b41146102e75780639b19251a146103125780639d6d24a31461034f57610114565b8063293230b8116100dc578063293230b8146101e9578063313ce56714610200578063395093511461022b57806370a0823114610268578063715018a6146102a557610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610483565b60405161013b919061153c565b60405180910390f35b34801561015057600080fd5b5061016b600480360381019061016691906115f7565b610515565b6040516101789190611652565b60405180910390f35b34801561018d57600080fd5b50610196610533565b6040516101a3919061167c565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190611697565b61053d565b6040516101e09190611652565b60405180910390f35b3480156101f557600080fd5b506101fe610635565b005b34801561020c57600080fd5b506102156106ce565b6040516102229190611706565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906115f7565b6106d7565b60405161025f9190611652565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190611721565b610783565b60405161029c919061167c565b60405180910390f35b3480156102b157600080fd5b506102ba6107cb565b005b3480156102c857600080fd5b506102d1610853565b6040516102de919061175d565b60405180910390f35b3480156102f357600080fd5b506102fc61087d565b604051610309919061153c565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190611721565b61090f565b6040516103469190611652565b60405180910390f35b34801561035b57600080fd5b50610376600480360381019061037191906117a4565b61092f565b005b34801561038457600080fd5b5061039f600480360381019061039a91906115f7565b610a06565b6040516103ac9190611652565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d791906115f7565b610af1565b6040516103e99190611652565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906117e4565b610b0f565b604051610426919061167c565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611721565b610b96565b005b34801561046457600080fd5b5061046d610c8d565b60405161047a9190611652565b60405180910390f35b60606003805461049290611853565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90611853565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905090565b6000610529610522610ca0565b8484610ca8565b6001905092915050565b6000600254905090565b600061054a848484610e71565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610595610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c906118f6565b60405180910390fd5b61062985610621610ca0565b858403610ca8565b60019150509392505050565b61063d610ca0565b73ffffffffffffffffffffffffffffffffffffffff1661065b610853565b73ffffffffffffffffffffffffffffffffffffffff16146106b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a890611962565b60405180910390fd5b6001600560146101000a81548160ff021916908315150217905550565b60006012905090565b60006107796106e4610ca0565b8484600160006106f2610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461077491906119b1565b610ca8565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107d3610ca0565b73ffffffffffffffffffffffffffffffffffffffff166107f1610853565b73ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90611962565b60405180910390fd5b610851600061115d565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461088c90611853565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611853565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050905090565b60066020528060005260406000206000915054906101000a900460ff1681565b610937610ca0565b73ffffffffffffffffffffffffffffffffffffffff16610955610853565b73ffffffffffffffffffffffffffffffffffffffff16146109ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a290611962565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060016000610a15610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990611a57565b60405180910390fd5b610ae6610add610ca0565b85858403610ca8565b600191505092915050565b6000610b05610afe610ca0565b8484610e71565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b9e610ca0565b73ffffffffffffffffffffffffffffffffffffffff16610bbc610853565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990611962565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7890611ae9565b60405180910390fd5b610c8a8161115d565b50565b600560149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90611b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611c0d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e64919061167c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790611c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690611d31565b60405180910390fd5b60008103610f6857610f6383836000611223565b611158565b610f70610853565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610fde5750610fae610853565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110175750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611051575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561114c57600560149054906101000a900460ff1661114b57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061110b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190611d9d565b60405180910390fd5b5b5b611157838383611223565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990611c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890611d31565b60405180910390fd5b61130c8383836114a2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990611e2f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142591906119b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611489919061167c565b60405180910390a361149c8484846114a7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114e65780820151818401526020810190506114cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061150e826114ac565b61151881856114b7565b93506115288185602086016114c8565b611531816114f2565b840191505092915050565b600060208201905081810360008301526115568184611503565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061158e82611563565b9050919050565b61159e81611583565b81146115a957600080fd5b50565b6000813590506115bb81611595565b92915050565b6000819050919050565b6115d4816115c1565b81146115df57600080fd5b50565b6000813590506115f1816115cb565b92915050565b6000806040838503121561160e5761160d61155e565b5b600061161c858286016115ac565b925050602061162d858286016115e2565b9150509250929050565b60008115159050919050565b61164c81611637565b82525050565b60006020820190506116676000830184611643565b92915050565b611676816115c1565b82525050565b6000602082019050611691600083018461166d565b92915050565b6000806000606084860312156116b0576116af61155e565b5b60006116be868287016115ac565b93505060206116cf868287016115ac565b92505060406116e0868287016115e2565b9150509250925092565b600060ff82169050919050565b611700816116ea565b82525050565b600060208201905061171b60008301846116f7565b92915050565b6000602082840312156117375761173661155e565b5b6000611745848285016115ac565b91505092915050565b61175781611583565b82525050565b6000602082019050611772600083018461174e565b92915050565b61178181611637565b811461178c57600080fd5b50565b60008135905061179e81611778565b92915050565b600080604083850312156117bb576117ba61155e565b5b60006117c9858286016115ac565b92505060206117da8582860161178f565b9150509250929050565b600080604083850312156117fb576117fa61155e565b5b6000611809858286016115ac565b925050602061181a858286016115ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061186b57607f821691505b60208210810361187e5761187d611824565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006118e06028836114b7565b91506118eb82611884565b604082019050919050565b6000602082019050818103600083015261190f816118d3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061194c6020836114b7565b915061195782611916565b602082019050919050565b6000602082019050818103600083015261197b8161193f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119bc826115c1565b91506119c7836115c1565b92508282019050808211156119df576119de611982565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a416025836114b7565b9150611a4c826119e5565b604082019050919050565b60006020820190508181036000830152611a7081611a34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ad36026836114b7565b9150611ade82611a77565b604082019050919050565b60006020820190508181036000830152611b0281611ac6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b656024836114b7565b9150611b7082611b09565b604082019050919050565b60006020820190508181036000830152611b9481611b58565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bf76022836114b7565b9150611c0282611b9b565b604082019050919050565b60006020820190508181036000830152611c2681611bea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c896025836114b7565b9150611c9482611c2d565b604082019050919050565b60006020820190508181036000830152611cb881611c7c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d1b6023836114b7565b9150611d2682611cbf565b604082019050919050565b60006020820190508181036000830152611d4a81611d0e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000611d876016836114b7565b9150611d9282611d51565b602082019050919050565b60006020820190508181036000830152611db681611d7a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e196026836114b7565b9150611e2482611dbd565b604082019050919050565b60006020820190508181036000830152611e4881611e0c565b905091905056fea2646970667358221220379ae42d7a68bd76eef451fef3754acd26cf28bd2d991ea98070d1a2256bc8c164736f6c63430008130033
Deployed Bytecode
0x60806040526004361061010d5760003560e01c80638da5cb5b11610095578063a457c2d711610064578063a457c2d714610378578063a9059cbb146103b5578063dd62ed3e146103f2578063f2fde38b1461042f578063ffb54a991461045857610114565b80638da5cb5b146102bc57806395d89b41146102e75780639b19251a146103125780639d6d24a31461034f57610114565b8063293230b8116100dc578063293230b8146101e9578063313ce56714610200578063395093511461022b57806370a0823114610268578063715018a6146102a557610114565b806306fdde0314610119578063095ea7b31461014457806318160ddd1461018157806323b872dd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e610483565b60405161013b919061153c565b60405180910390f35b34801561015057600080fd5b5061016b600480360381019061016691906115f7565b610515565b6040516101789190611652565b60405180910390f35b34801561018d57600080fd5b50610196610533565b6040516101a3919061167c565b60405180910390f35b3480156101b857600080fd5b506101d360048036038101906101ce9190611697565b61053d565b6040516101e09190611652565b60405180910390f35b3480156101f557600080fd5b506101fe610635565b005b34801561020c57600080fd5b506102156106ce565b6040516102229190611706565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906115f7565b6106d7565b60405161025f9190611652565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a9190611721565b610783565b60405161029c919061167c565b60405180910390f35b3480156102b157600080fd5b506102ba6107cb565b005b3480156102c857600080fd5b506102d1610853565b6040516102de919061175d565b60405180910390f35b3480156102f357600080fd5b506102fc61087d565b604051610309919061153c565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190611721565b61090f565b6040516103469190611652565b60405180910390f35b34801561035b57600080fd5b50610376600480360381019061037191906117a4565b61092f565b005b34801561038457600080fd5b5061039f600480360381019061039a91906115f7565b610a06565b6040516103ac9190611652565b60405180910390f35b3480156103c157600080fd5b506103dc60048036038101906103d791906115f7565b610af1565b6040516103e99190611652565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906117e4565b610b0f565b604051610426919061167c565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611721565b610b96565b005b34801561046457600080fd5b5061046d610c8d565b60405161047a9190611652565b60405180910390f35b60606003805461049290611853565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90611853565b801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905090565b6000610529610522610ca0565b8484610ca8565b6001905092915050565b6000600254905090565b600061054a848484610e71565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610595610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c906118f6565b60405180910390fd5b61062985610621610ca0565b858403610ca8565b60019150509392505050565b61063d610ca0565b73ffffffffffffffffffffffffffffffffffffffff1661065b610853565b73ffffffffffffffffffffffffffffffffffffffff16146106b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a890611962565b60405180910390fd5b6001600560146101000a81548160ff021916908315150217905550565b60006012905090565b60006107796106e4610ca0565b8484600160006106f2610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461077491906119b1565b610ca8565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107d3610ca0565b73ffffffffffffffffffffffffffffffffffffffff166107f1610853565b73ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e90611962565b60405180910390fd5b610851600061115d565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461088c90611853565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611853565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050905090565b60066020528060005260406000206000915054906101000a900460ff1681565b610937610ca0565b73ffffffffffffffffffffffffffffffffffffffff16610955610853565b73ffffffffffffffffffffffffffffffffffffffff16146109ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a290611962565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060016000610a15610ca0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990611a57565b60405180910390fd5b610ae6610add610ca0565b85858403610ca8565b600191505092915050565b6000610b05610afe610ca0565b8484610e71565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b9e610ca0565b73ffffffffffffffffffffffffffffffffffffffff16610bbc610853565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990611962565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7890611ae9565b60405180910390fd5b610c8a8161115d565b50565b600560149054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0e90611b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611c0d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e64919061167c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790611c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4690611d31565b60405180910390fd5b60008103610f6857610f6383836000611223565b611158565b610f70610853565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610fde5750610fae610853565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156110175750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611051575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561114c57600560149054906101000a900460ff1661114b57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061110b5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190611d9d565b60405180910390fd5b5b5b611157838383611223565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990611c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890611d31565b60405180910390fd5b61130c8383836114a2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990611e2f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142591906119b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611489919061167c565b60405180910390a361149c8484846114a7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114e65780820151818401526020810190506114cb565b60008484015250505050565b6000601f19601f8301169050919050565b600061150e826114ac565b61151881856114b7565b93506115288185602086016114c8565b611531816114f2565b840191505092915050565b600060208201905081810360008301526115568184611503565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061158e82611563565b9050919050565b61159e81611583565b81146115a957600080fd5b50565b6000813590506115bb81611595565b92915050565b6000819050919050565b6115d4816115c1565b81146115df57600080fd5b50565b6000813590506115f1816115cb565b92915050565b6000806040838503121561160e5761160d61155e565b5b600061161c858286016115ac565b925050602061162d858286016115e2565b9150509250929050565b60008115159050919050565b61164c81611637565b82525050565b60006020820190506116676000830184611643565b92915050565b611676816115c1565b82525050565b6000602082019050611691600083018461166d565b92915050565b6000806000606084860312156116b0576116af61155e565b5b60006116be868287016115ac565b93505060206116cf868287016115ac565b92505060406116e0868287016115e2565b9150509250925092565b600060ff82169050919050565b611700816116ea565b82525050565b600060208201905061171b60008301846116f7565b92915050565b6000602082840312156117375761173661155e565b5b6000611745848285016115ac565b91505092915050565b61175781611583565b82525050565b6000602082019050611772600083018461174e565b92915050565b61178181611637565b811461178c57600080fd5b50565b60008135905061179e81611778565b92915050565b600080604083850312156117bb576117ba61155e565b5b60006117c9858286016115ac565b92505060206117da8582860161178f565b9150509250929050565b600080604083850312156117fb576117fa61155e565b5b6000611809858286016115ac565b925050602061181a858286016115ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061186b57607f821691505b60208210810361187e5761187d611824565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006118e06028836114b7565b91506118eb82611884565b604082019050919050565b6000602082019050818103600083015261190f816118d3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061194c6020836114b7565b915061195782611916565b602082019050919050565b6000602082019050818103600083015261197b8161193f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119bc826115c1565b91506119c7836115c1565b92508282019050808211156119df576119de611982565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a416025836114b7565b9150611a4c826119e5565b604082019050919050565b60006020820190508181036000830152611a7081611a34565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611ad36026836114b7565b9150611ade82611a77565b604082019050919050565b60006020820190508181036000830152611b0281611ac6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611b656024836114b7565b9150611b7082611b09565b604082019050919050565b60006020820190508181036000830152611b9481611b58565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bf76022836114b7565b9150611c0282611b9b565b604082019050919050565b60006020820190508181036000830152611c2681611bea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611c896025836114b7565b9150611c9482611c2d565b604082019050919050565b60006020820190508181036000830152611cb881611c7c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d1b6023836114b7565b9150611d2682611cbf565b604082019050919050565b60006020820190508181036000830152611d4a81611d0e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000611d876016836114b7565b9150611d9282611d51565b602082019050919050565b60006020820190508181036000830152611db681611d7a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e196026836114b7565b9150611e2482611dbd565b604082019050919050565b60006020820190508181036000830152611e4881611e0c565b905091905056fea2646970667358221220379ae42d7a68bd76eef451fef3754acd26cf28bd2d991ea98070d1a2256bc8c164736f6c63430008130033
Deployed Bytecode Sourcemap
23038:1503:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10992:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13209:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12136:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13868:506;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23433:82;;;;;;;;;;;;;:::i;:::-;;11971:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14793:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12314:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22197:105;;;;;;;;;;;;;:::i;:::-;;21529:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11219:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23156:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23525:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15522:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12656:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22463:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23114:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10992:102;11046:13;11080:5;11073:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10992:102;:::o;13209:172::-;13292:4;13310:39;13319:12;:10;:12::i;:::-;13333:7;13342:6;13310:8;:39::i;:::-;13368:4;13361:11;;13209:172;;;;:::o;12136:110::-;12197:7;12225:12;;12218:19;;12136:110;:::o;13868:506::-;14012:4;14030:36;14040:6;14048:9;14059:6;14030:9;:36::i;:::-;14081:24;14108:11;:19;14120:6;14108:19;;;;;;;;;;;;;;;:33;14128:12;:10;:12::i;:::-;14108:33;;;;;;;;;;;;;;;;14081:60;;14181:6;14161:16;:26;;14153:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;14270:57;14279:6;14287:12;:10;:12::i;:::-;14320:6;14301:16;:25;14270:8;:57::i;:::-;14361:4;14354:11;;;13868:506;;;;;:::o;23433:82::-;21768:12;:10;:12::i;:::-;21757:23;;:7;:5;:7::i;:::-;:23;;;21749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23502:4:::1;23488:11;;:18;;;;;;;;;;;;;;;;;;23433:82::o:0;11971:95::-;12029:5;12055:2;12048:9;;11971:95;:::o;14793:218::-;14881:4;14899:80;14908:12;:10;:12::i;:::-;14922:7;14968:10;14931:11;:25;14943:12;:10;:12::i;:::-;14931:25;;;;;;;;;;;;;;;:34;14957:7;14931:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14899:8;:80::i;:::-;14998:4;14991:11;;14793:218;;;;:::o;12314:129::-;12388:7;12416:9;:18;12426:7;12416:18;;;;;;;;;;;;;;;;12409:25;;12314:129;;;:::o;22197:105::-;21768:12;:10;:12::i;:::-;21757:23;;:7;:5;:7::i;:::-;:23;;;21749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22263:30:::1;22290:1;22263:18;:30::i;:::-;22197:105::o:0;21529:89::-;21575:7;21603:6;;;;;;;;;;;21596:13;;21529:89;:::o;11219:106::-;11275:13;11309:7;11302:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11219:106;:::o;23156:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;23525:131::-;21768:12;:10;:12::i;:::-;21757:23;;:7;:5;:7::i;:::-;:23;;;21749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23642:5:::1;23620:9;:19;23630:8;23620:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23525:131:::0;;:::o;15522:421::-;15615:4;15633:24;15660:11;:25;15672:12;:10;:12::i;:::-;15660:25;;;;;;;;;;;;;;;:34;15686:7;15660:34;;;;;;;;;;;;;;;;15633:61;;15734:15;15714:16;:35;;15706:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15829:67;15838:12;:10;:12::i;:::-;15852:7;15880:15;15861:16;:34;15829:8;:67::i;:::-;15930:4;15923:11;;;15522:421;;;;:::o;12656:178::-;12742:4;12760:42;12770:12;:10;:12::i;:::-;12784:9;12795:6;12760:9;:42::i;:::-;12821:4;12814:11;;12656:178;;;;:::o;12902:153::-;12991:7;13019:11;:18;13031:5;13019:18;;;;;;;;;;;;;;;:27;13038:7;13019:27;;;;;;;;;;;;;;;;13012:34;;12902:153;;;;:::o;22463:204::-;21768:12;:10;:12::i;:::-;21757:23;;:7;:5;:7::i;:::-;:23;;;21749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22573:1:::1;22553:22;;:8;:22;;::::0;22545:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22630:28;22649:8;22630:18;:28::i;:::-;22463:204:::0;:::o;23114:31::-;;;;;;;;;;;;;:::o;9962:100::-;10015:7;10043:10;10036:17;;9962:100;:::o;19259:390::-;19417:1;19400:19;;:5;:19;;;19392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19499:1;19480:21;;:7;:21;;;19472:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19585:6;19555:11;:18;19567:5;19555:18;;;;;;;;;;;;;;;:27;19574:7;19555:27;;;;;;;;;;;;;;;:36;;;;19624:7;19608:32;;19617:5;19608:32;;;19633:6;19608:32;;;;;;:::i;:::-;;;;;;;;19259:390;;;:::o;23666:871::-;23819:1;23803:18;;:4;:18;;;23795:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23897:1;23883:16;;:2;:16;;;23875:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23968:1;23958:6;:11;23954:96;;23987:28;24003:4;24009:2;24013:1;23987:15;:28::i;:::-;24031:7;;23954:96;24099:7;:5;:7::i;:::-;24091:15;;:4;:15;;;;:50;;;;;24134:7;:5;:7::i;:::-;24128:13;;:2;:13;;;;24091:50;:88;;;;;24177:1;24163:16;;:2;:16;;;;24091:88;:131;;;;;24215:6;24201:21;;:2;:21;;;;24091:131;24068:413;;;24264:11;;;;;;;;;;;24259:206;;24336:9;:15;24346:4;24336:15;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;24355:9;:13;24365:2;24355:13;;;;;;;;;;;;;;;;;;;;;;;;;24336:32;24301:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;24259:206;24068:413;24495:33;24511:4;24517:2;24521:6;24495:15;:33::i;:::-;23666:871;;;;:::o;22833:195::-;22908:16;22927:6;;;;;;;;;;;22908:25;;22954:8;22945:6;;:17;;;;;;;;;;;;;;;;;;23010:8;22979:40;;23000:8;22979:40;;;;;;;;;;;;22896:132;22833:195;:::o;16435:744::-;16598:1;16580:20;;:6;:20;;;16572:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16674:1;16653:23;;:9;:23;;;16645:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16731:47;16752:6;16760:9;16771:6;16731:20;:47::i;:::-;16793:21;16817:9;:17;16827:6;16817:17;;;;;;;;;;;;;;;;16793:41;;16871:6;16854:13;:23;;16846:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16994:6;16978:13;:22;16958:9;:17;16968:6;16958:17;;;;;;;;;;;;;;;:42;;;;17048:6;17024:9;:20;17034:9;17024:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17091:9;17074:35;;17083:6;17074:35;;;17102:6;17074:35;;;;;;:::i;:::-;;;;;;;;17124:46;17144:6;17152:9;17163:6;17124:19;:46::i;:::-;16560:619;16435:744;;;:::o;20243:129::-;;;;:::o;20964:128::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:116::-;5610:21;5625:5;5610:21;:::i;:::-;5603:5;5600:32;5590:60;;5646:1;5643;5636:12;5590:60;5540:116;:::o;5662:133::-;5705:5;5743:6;5730:20;5721:29;;5759:30;5783:5;5759:30;:::i;:::-;5662:133;;;;:::o;5801:468::-;5866:6;5874;5923:2;5911:9;5902:7;5898:23;5894:32;5891:119;;;5929:79;;:::i;:::-;5891:119;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:50;6244:7;6235:6;6224:9;6220:22;6202:50;:::i;:::-;6192:60;;6147:115;5801:468;;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:180::-;6803:77;6800:1;6793:88;6900:4;6897:1;6890:15;6924:4;6921:1;6914:15;6941:320;6985:6;7022:1;7016:4;7012:12;7002:22;;7069:1;7063:4;7059:12;7090:18;7080:81;;7146:4;7138:6;7134:17;7124:27;;7080:81;7208:2;7200:6;7197:14;7177:18;7174:38;7171:84;;7227:18;;:::i;:::-;7171:84;6992:269;6941:320;;;:::o;7267:227::-;7407:34;7403:1;7395:6;7391:14;7384:58;7476:10;7471:2;7463:6;7459:15;7452:35;7267:227;:::o;7500:366::-;7642:3;7663:67;7727:2;7722:3;7663:67;:::i;:::-;7656:74;;7739:93;7828:3;7739:93;:::i;:::-;7857:2;7852:3;7848:12;7841:19;;7500:366;;;:::o;7872:419::-;8038:4;8076:2;8065:9;8061:18;8053:26;;8125:9;8119:4;8115:20;8111:1;8100:9;8096:17;8089:47;8153:131;8279:4;8153:131;:::i;:::-;8145:139;;7872:419;;;:::o;8297:182::-;8437:34;8433:1;8425:6;8421:14;8414:58;8297:182;:::o;8485:366::-;8627:3;8648:67;8712:2;8707:3;8648:67;:::i;:::-;8641:74;;8724:93;8813:3;8724:93;:::i;:::-;8842:2;8837:3;8833:12;8826:19;;8485:366;;;:::o;8857:419::-;9023:4;9061:2;9050:9;9046:18;9038:26;;9110:9;9104:4;9100:20;9096:1;9085:9;9081:17;9074:47;9138:131;9264:4;9138:131;:::i;:::-;9130:139;;8857:419;;;:::o;9282:180::-;9330:77;9327:1;9320:88;9427:4;9424:1;9417:15;9451:4;9448:1;9441:15;9468:191;9508:3;9527:20;9545:1;9527:20;:::i;:::-;9522:25;;9561:20;9579:1;9561:20;:::i;:::-;9556:25;;9604:1;9601;9597:9;9590:16;;9625:3;9622:1;9619:10;9616:36;;;9632:18;;:::i;:::-;9616:36;9468:191;;;;:::o;9665:224::-;9805:34;9801:1;9793:6;9789:14;9782:58;9874:7;9869:2;9861:6;9857:15;9850:32;9665:224;:::o;9895:366::-;10037:3;10058:67;10122:2;10117:3;10058:67;:::i;:::-;10051:74;;10134:93;10223:3;10134:93;:::i;:::-;10252:2;10247:3;10243:12;10236:19;;9895:366;;;:::o;10267:419::-;10433:4;10471:2;10460:9;10456:18;10448:26;;10520:9;10514:4;10510:20;10506:1;10495:9;10491:17;10484:47;10548:131;10674:4;10548:131;:::i;:::-;10540:139;;10267:419;;;:::o;10692:225::-;10832:34;10828:1;10820:6;10816:14;10809:58;10901:8;10896:2;10888:6;10884:15;10877:33;10692:225;:::o;10923:366::-;11065:3;11086:67;11150:2;11145:3;11086:67;:::i;:::-;11079:74;;11162:93;11251:3;11162:93;:::i;:::-;11280:2;11275:3;11271:12;11264:19;;10923:366;;;:::o;11295:419::-;11461:4;11499:2;11488:9;11484:18;11476:26;;11548:9;11542:4;11538:20;11534:1;11523:9;11519:17;11512:47;11576:131;11702:4;11576:131;:::i;:::-;11568:139;;11295:419;;;:::o;11720:223::-;11860:34;11856:1;11848:6;11844:14;11837:58;11929:6;11924:2;11916:6;11912:15;11905:31;11720:223;:::o;11949:366::-;12091:3;12112:67;12176:2;12171:3;12112:67;:::i;:::-;12105:74;;12188:93;12277:3;12188:93;:::i;:::-;12306:2;12301:3;12297:12;12290:19;;11949:366;;;:::o;12321:419::-;12487:4;12525:2;12514:9;12510:18;12502:26;;12574:9;12568:4;12564:20;12560:1;12549:9;12545:17;12538:47;12602:131;12728:4;12602:131;:::i;:::-;12594:139;;12321:419;;;:::o;12746:221::-;12886:34;12882:1;12874:6;12870:14;12863:58;12955:4;12950:2;12942:6;12938:15;12931:29;12746:221;:::o;12973:366::-;13115:3;13136:67;13200:2;13195:3;13136:67;:::i;:::-;13129:74;;13212:93;13301:3;13212:93;:::i;:::-;13330:2;13325:3;13321:12;13314:19;;12973:366;;;:::o;13345:419::-;13511:4;13549:2;13538:9;13534:18;13526:26;;13598:9;13592:4;13588:20;13584:1;13573:9;13569:17;13562:47;13626:131;13752:4;13626:131;:::i;:::-;13618:139;;13345:419;;;:::o;13770:224::-;13910:34;13906:1;13898:6;13894:14;13887:58;13979:7;13974:2;13966:6;13962:15;13955:32;13770:224;:::o;14000:366::-;14142:3;14163:67;14227:2;14222:3;14163:67;:::i;:::-;14156:74;;14239:93;14328:3;14239:93;:::i;:::-;14357:2;14352:3;14348:12;14341:19;;14000:366;;;:::o;14372:419::-;14538:4;14576:2;14565:9;14561:18;14553:26;;14625:9;14619:4;14615:20;14611:1;14600:9;14596:17;14589:47;14653:131;14779:4;14653:131;:::i;:::-;14645:139;;14372:419;;;:::o;14797:222::-;14937:34;14933:1;14925:6;14921:14;14914:58;15006:5;15001:2;14993:6;14989:15;14982:30;14797:222;:::o;15025:366::-;15167:3;15188:67;15252:2;15247:3;15188:67;:::i;:::-;15181:74;;15264:93;15353:3;15264:93;:::i;:::-;15382:2;15377:3;15373:12;15366:19;;15025:366;;;:::o;15397:419::-;15563:4;15601:2;15590:9;15586:18;15578:26;;15650:9;15644:4;15640:20;15636:1;15625:9;15621:17;15614:47;15678:131;15804:4;15678:131;:::i;:::-;15670:139;;15397:419;;;:::o;15822:172::-;15962:24;15958:1;15950:6;15946:14;15939:48;15822:172;:::o;16000:366::-;16142:3;16163:67;16227:2;16222:3;16163:67;:::i;:::-;16156:74;;16239:93;16328:3;16239:93;:::i;:::-;16357:2;16352:3;16348:12;16341:19;;16000:366;;;:::o;16372:419::-;16538:4;16576:2;16565:9;16561:18;16553:26;;16625:9;16619:4;16615:20;16611:1;16600:9;16596:17;16589:47;16653:131;16779:4;16653:131;:::i;:::-;16645:139;;16372:419;;;:::o;16797:225::-;16937:34;16933:1;16925:6;16921:14;16914:58;17006:8;17001:2;16993:6;16989:15;16982:33;16797:225;:::o;17028:366::-;17170:3;17191:67;17255:2;17250:3;17191:67;:::i;:::-;17184:74;;17267:93;17356:3;17267:93;:::i;:::-;17385:2;17380:3;17376:12;17369:19;;17028:366;;;:::o;17400:419::-;17566:4;17604:2;17593:9;17589:18;17581:26;;17653:9;17647:4;17643:20;17639:1;17628:9;17624:17;17617:47;17681:131;17807:4;17681:131;:::i;:::-;17673:139;;17400:419;;;:::o
Swarm Source
ipfs://379ae42d7a68bd76eef451fef3754acd26cf28bd2d991ea98070d1a2256bc8c1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.