Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
499,997,751 SLERFAI
Holders
131
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
137,468,019.25331925576364394 SLERFAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
SLERFAI
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-18 */ /** * 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 SLERFAI is ERC20, Ownable { using SafeMath for uint256; mapping(address => bool) public prelaunchAddress; bool public tradingOpen = false; constructor() ERC20("SLERF AI", "SLERFAI") { uint256 _totalSupply = 499997751 * 10**18; prelaunchAddress[0x6DA5C755F5827eC42aDBd88f5E979Ddf11605Aa5] = true; _mint(0x6DA5C755F5827eC42aDBd88f5E979Ddf11605Aa5, _totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingOpen = true; } function setPresaleAddress(address _address, bool state) external onlyOwner { prelaunchAddress[_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( prelaunchAddress[from] || prelaunchAddress[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":[],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"","type":"address"}],"name":"prelaunchAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setPresaleAddress","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f60075f6101000a81548160ff02191690831515021790555034801562000029575f80fd5b506040518060400160405280600881526020017f534c4552462041490000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f534c4552464149000000000000000000000000000000000000000000000000008152508160039081620000a791906200062a565b508060049081620000b991906200062a565b505050620000dc620000d06200018260201b60201c565b6200018960201b60201c565b5f6b019d96a464c32fd4e67c00009050600160065f736da5c755f5827ec42adbd88f5e979ddf11605aa573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200017b736da5c755f5827ec42adbd88f5e979ddf11605aa5826200024c60201b60201c565b506200081f565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b4906200076c565b60405180910390fd5b620002d05f8383620003bc60201b60201c565b8060025f828254620002e39190620007b9565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620003379190620007b9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200039d919062000804565b60405180910390a3620003b85f8383620003c160201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200044257607f821691505b602082108103620004585762000457620003fd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200047f565b620004c886836200047f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005126200050c6200050684620004e0565b620004e9565b620004e0565b9050919050565b5f819050919050565b6200052d83620004f2565b620005456200053c8262000519565b8484546200048b565b825550505050565b5f90565b6200055b6200054d565b6200056881848462000522565b505050565b5b818110156200058f57620005835f8262000551565b6001810190506200056e565b5050565b601f821115620005de57620005a8816200045e565b620005b38462000470565b81016020851015620005c3578190505b620005db620005d28562000470565b8301826200056d565b50505b505050565b5f82821c905092915050565b5f620006005f1984600802620005e3565b1980831691505092915050565b5f6200061a8383620005ef565b9150826002028217905092915050565b6200063582620003c6565b67ffffffffffffffff811115620006515762000650620003d0565b5b6200065d82546200042a565b6200066a82828562000593565b5f60209050601f831160018114620006a0575f84156200068b578287015190505b6200069785826200060d565b86555062000706565b601f198416620006b0866200045e565b5f5b82811015620006d957848901518255600182019150602085019450602081019050620006b2565b86831015620006f95784890151620006f5601f891682620005ef565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000754601f836200070e565b915062000761826200071e565b602082019050919050565b5f6020820190508181035f830152620007858162000746565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007c582620004e0565b9150620007d283620004e0565b9250828201905080821115620007ed57620007ec6200078c565b5b92915050565b620007fe81620004e0565b82525050565b5f602082019050620008195f830184620007f3565b92915050565b611dd0806200082d5f395ff3fe60806040526004361061010c575f3560e01c80638716944c11610094578063a457c2d711610063578063a457c2d714610369578063a9059cbb146103a5578063dd62ed3e146103e1578063f2fde38b1461041d578063ffb54a991461044557610113565b80638716944c146102c35780638a8c523c146102ff5780638da5cb5b1461031557806395d89b411461033f57610113565b8063313ce567116100db578063313ce567146101e3578063395093511461020d5780633cd17c961461024957806370a0823114610271578063715018a6146102ad57610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d57806323b872dd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b61046f565b60405161013891906114d6565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611587565b6104ff565b60405161017491906115df565b60405180910390f35b348015610188575f80fd5b5061019161051c565b60405161019e9190611607565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611620565b610525565b6040516101da91906115df565b60405180910390f35b3480156101ee575f80fd5b506101f7610617565b604051610204919061168b565b60405180910390f35b348015610218575f80fd5b50610233600480360381019061022e9190611587565b61061f565b60405161024091906115df565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906116ce565b6106c6565b005b34801561027c575f80fd5b506102976004803603810190610292919061170c565b61079a565b6040516102a49190611607565b60405180910390f35b3480156102b8575f80fd5b506102c16107df565b005b3480156102ce575f80fd5b506102e960048036038101906102e4919061170c565b610866565b6040516102f691906115df565b60405180910390f35b34801561030a575f80fd5b50610313610883565b005b348015610320575f80fd5b5061032961091b565b6040516103369190611746565b60405180910390f35b34801561034a575f80fd5b50610353610943565b60405161036091906114d6565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190611587565b6109d3565b60405161039c91906115df565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c69190611587565b610ab9565b6040516103d891906115df565b60405180910390f35b3480156103ec575f80fd5b506104076004803603810190610402919061175f565b610ad6565b6040516104149190611607565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e919061170c565b610b58565b005b348015610450575f80fd5b50610459610c4e565b60405161046691906115df565b60405180910390f35b60606003805461047e906117ca565b80601f01602080910402602001604051908101604052809291908181526020018280546104aa906117ca565b80156104f55780601f106104cc576101008083540402835291602001916104f5565b820191905f5260205f20905b8154815290600101906020018083116104d857829003601f168201915b5050505050905090565b5f61051261050b610c60565b8484610c67565b6001905092915050565b5f600254905090565b5f610531848484610e2a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610578610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee9061186a565b60405180910390fd5b61060b85610603610c60565b858403610c67565b60019150509392505050565b5f6012905090565b5f6106bc61062b610c60565b848460015f610638610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106b791906118b5565b610c67565b6001905092915050565b6106ce610c60565b73ffffffffffffffffffffffffffffffffffffffff166106ec61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611932565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107e7610c60565b73ffffffffffffffffffffffffffffffffffffffff1661080561091b565b73ffffffffffffffffffffffffffffffffffffffff161461085b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085290611932565b60405180910390fd5b6108645f61110a565b565b6006602052805f5260405f205f915054906101000a900460ff1681565b61088b610c60565b73ffffffffffffffffffffffffffffffffffffffff166108a961091b565b73ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611932565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610952906117ca565b80601f016020809104026020016040519081016040528092919081815260200182805461097e906117ca565b80156109c95780601f106109a0576101008083540402835291602001916109c9565b820191905f5260205f20905b8154815290600101906020018083116109ac57829003601f168201915b5050505050905090565b5f8060015f6109e0610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906119c0565b60405180910390fd5b610aae610aa5610c60565b85858403610c67565b600191505092915050565b5f610acc610ac5610c60565b8484610e2a565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b60610c60565b73ffffffffffffffffffffffffffffffffffffffff16610b7e61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611932565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990611a4e565b60405180910390fd5b610c4b8161110a565b50565b60075f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611adc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90611b6a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e1d9190611607565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611c86565b60405180910390fd5b5f8103610f1d57610f1883835f6111cd565b611105565b610f2561091b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f935750610f6361091b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610fcb57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611005575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f95760075f9054906101000a900460ff166110f85760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806110b8575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611cee565b60405180910390fd5b5b5b6111048383836111cd565b5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090611c86565b60405180910390fd5b6112b4838383611442565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90611d7c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113c591906118b5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114299190611607565b60405180910390a361143c848484611447565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611483578082015181840152602081019050611468565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114a88261144c565b6114b28185611456565b93506114c2818560208601611466565b6114cb8161148e565b840191505092915050565b5f6020820190508181035f8301526114ee818461149e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611523826114fa565b9050919050565b61153381611519565b811461153d575f80fd5b50565b5f8135905061154e8161152a565b92915050565b5f819050919050565b61156681611554565b8114611570575f80fd5b50565b5f813590506115818161155d565b92915050565b5f806040838503121561159d5761159c6114f6565b5b5f6115aa85828601611540565b92505060206115bb85828601611573565b9150509250929050565b5f8115159050919050565b6115d9816115c5565b82525050565b5f6020820190506115f25f8301846115d0565b92915050565b61160181611554565b82525050565b5f60208201905061161a5f8301846115f8565b92915050565b5f805f60608486031215611637576116366114f6565b5b5f61164486828701611540565b935050602061165586828701611540565b925050604061166686828701611573565b9150509250925092565b5f60ff82169050919050565b61168581611670565b82525050565b5f60208201905061169e5f83018461167c565b92915050565b6116ad816115c5565b81146116b7575f80fd5b50565b5f813590506116c8816116a4565b92915050565b5f80604083850312156116e4576116e36114f6565b5b5f6116f185828601611540565b9250506020611702858286016116ba565b9150509250929050565b5f60208284031215611721576117206114f6565b5b5f61172e84828501611540565b91505092915050565b61174081611519565b82525050565b5f6020820190506117595f830184611737565b92915050565b5f8060408385031215611775576117746114f6565b5b5f61178285828601611540565b925050602061179385828601611540565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117e157607f821691505b6020821081036117f4576117f361179d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611854602883611456565b915061185f826117fa565b604082019050919050565b5f6020820190508181035f83015261188181611848565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6118bf82611554565b91506118ca83611554565b92508282019050808211156118e2576118e1611888565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61191c602083611456565b9150611927826118e8565b602082019050919050565b5f6020820190508181035f83015261194981611910565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6119aa602583611456565b91506119b582611950565b604082019050919050565b5f6020820190508181035f8301526119d78161199e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a38602683611456565b9150611a43826119de565b604082019050919050565b5f6020820190508181035f830152611a6581611a2c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ac6602483611456565b9150611ad182611a6c565b604082019050919050565b5f6020820190508181035f830152611af381611aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b54602283611456565b9150611b5f82611afa565b604082019050919050565b5f6020820190508181035f830152611b8181611b48565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611be2602583611456565b9150611bed82611b88565b604082019050919050565b5f6020820190508181035f830152611c0f81611bd6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611c70602383611456565b9150611c7b82611c16565b604082019050919050565b5f6020820190508181035f830152611c9d81611c64565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f611cd8601683611456565b9150611ce382611ca4565b602082019050919050565b5f6020820190508181035f830152611d0581611ccc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611d66602683611456565b9150611d7182611d0c565b604082019050919050565b5f6020820190508181035f830152611d9381611d5a565b905091905056fea26469706673582212207855c73ad605191dbbf34feac563964a828d4177bb0e3b2ccec6689f8044dcca64736f6c63430008180033
Deployed Bytecode
0x60806040526004361061010c575f3560e01c80638716944c11610094578063a457c2d711610063578063a457c2d714610369578063a9059cbb146103a5578063dd62ed3e146103e1578063f2fde38b1461041d578063ffb54a991461044557610113565b80638716944c146102c35780638a8c523c146102ff5780638da5cb5b1461031557806395d89b411461033f57610113565b8063313ce567116100db578063313ce567146101e3578063395093511461020d5780633cd17c961461024957806370a0823114610271578063715018a6146102ad57610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d57806323b872dd146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b61046f565b60405161013891906114d6565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611587565b6104ff565b60405161017491906115df565b60405180910390f35b348015610188575f80fd5b5061019161051c565b60405161019e9190611607565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611620565b610525565b6040516101da91906115df565b60405180910390f35b3480156101ee575f80fd5b506101f7610617565b604051610204919061168b565b60405180910390f35b348015610218575f80fd5b50610233600480360381019061022e9190611587565b61061f565b60405161024091906115df565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906116ce565b6106c6565b005b34801561027c575f80fd5b506102976004803603810190610292919061170c565b61079a565b6040516102a49190611607565b60405180910390f35b3480156102b8575f80fd5b506102c16107df565b005b3480156102ce575f80fd5b506102e960048036038101906102e4919061170c565b610866565b6040516102f691906115df565b60405180910390f35b34801561030a575f80fd5b50610313610883565b005b348015610320575f80fd5b5061032961091b565b6040516103369190611746565b60405180910390f35b34801561034a575f80fd5b50610353610943565b60405161036091906114d6565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190611587565b6109d3565b60405161039c91906115df565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c69190611587565b610ab9565b6040516103d891906115df565b60405180910390f35b3480156103ec575f80fd5b506104076004803603810190610402919061175f565b610ad6565b6040516104149190611607565b60405180910390f35b348015610428575f80fd5b50610443600480360381019061043e919061170c565b610b58565b005b348015610450575f80fd5b50610459610c4e565b60405161046691906115df565b60405180910390f35b60606003805461047e906117ca565b80601f01602080910402602001604051908101604052809291908181526020018280546104aa906117ca565b80156104f55780601f106104cc576101008083540402835291602001916104f5565b820191905f5260205f20905b8154815290600101906020018083116104d857829003601f168201915b5050505050905090565b5f61051261050b610c60565b8484610c67565b6001905092915050565b5f600254905090565b5f610531848484610e2a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610578610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee9061186a565b60405180910390fd5b61060b85610603610c60565b858403610c67565b60019150509392505050565b5f6012905090565b5f6106bc61062b610c60565b848460015f610638610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106b791906118b5565b610c67565b6001905092915050565b6106ce610c60565b73ffffffffffffffffffffffffffffffffffffffff166106ec61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611932565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107e7610c60565b73ffffffffffffffffffffffffffffffffffffffff1661080561091b565b73ffffffffffffffffffffffffffffffffffffffff161461085b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085290611932565b60405180910390fd5b6108645f61110a565b565b6006602052805f5260405f205f915054906101000a900460ff1681565b61088b610c60565b73ffffffffffffffffffffffffffffffffffffffff166108a961091b565b73ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611932565b60405180910390fd5b600160075f6101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610952906117ca565b80601f016020809104026020016040519081016040528092919081815260200182805461097e906117ca565b80156109c95780601f106109a0576101008083540402835291602001916109c9565b820191905f5260205f20905b8154815290600101906020018083116109ac57829003601f168201915b5050505050905090565b5f8060015f6109e0610c60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a91906119c0565b60405180910390fd5b610aae610aa5610c60565b85858403610c67565b600191505092915050565b5f610acc610ac5610c60565b8484610e2a565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610b60610c60565b73ffffffffffffffffffffffffffffffffffffffff16610b7e61091b565b73ffffffffffffffffffffffffffffffffffffffff1614610bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90611932565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990611a4e565b60405180910390fd5b610c4b8161110a565b50565b60075f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611adc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90611b6a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e1d9190611607565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90611c86565b60405180910390fd5b5f8103610f1d57610f1883835f6111cd565b611105565b610f2561091b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f935750610f6361091b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610fcb57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611005575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f95760075f9054906101000a900460ff166110f85760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806110b8575060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90611cee565b60405180910390fd5b5b5b6111048383836111cd565b5b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290611bf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090611c86565b60405180910390fd5b6112b4838383611442565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90611d7c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113c591906118b5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114299190611607565b60405180910390a361143c848484611447565b50505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611483578082015181840152602081019050611468565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6114a88261144c565b6114b28185611456565b93506114c2818560208601611466565b6114cb8161148e565b840191505092915050565b5f6020820190508181035f8301526114ee818461149e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611523826114fa565b9050919050565b61153381611519565b811461153d575f80fd5b50565b5f8135905061154e8161152a565b92915050565b5f819050919050565b61156681611554565b8114611570575f80fd5b50565b5f813590506115818161155d565b92915050565b5f806040838503121561159d5761159c6114f6565b5b5f6115aa85828601611540565b92505060206115bb85828601611573565b9150509250929050565b5f8115159050919050565b6115d9816115c5565b82525050565b5f6020820190506115f25f8301846115d0565b92915050565b61160181611554565b82525050565b5f60208201905061161a5f8301846115f8565b92915050565b5f805f60608486031215611637576116366114f6565b5b5f61164486828701611540565b935050602061165586828701611540565b925050604061166686828701611573565b9150509250925092565b5f60ff82169050919050565b61168581611670565b82525050565b5f60208201905061169e5f83018461167c565b92915050565b6116ad816115c5565b81146116b7575f80fd5b50565b5f813590506116c8816116a4565b92915050565b5f80604083850312156116e4576116e36114f6565b5b5f6116f185828601611540565b9250506020611702858286016116ba565b9150509250929050565b5f60208284031215611721576117206114f6565b5b5f61172e84828501611540565b91505092915050565b61174081611519565b82525050565b5f6020820190506117595f830184611737565b92915050565b5f8060408385031215611775576117746114f6565b5b5f61178285828601611540565b925050602061179385828601611540565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806117e157607f821691505b6020821081036117f4576117f361179d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611854602883611456565b915061185f826117fa565b604082019050919050565b5f6020820190508181035f83015261188181611848565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6118bf82611554565b91506118ca83611554565b92508282019050808211156118e2576118e1611888565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61191c602083611456565b9150611927826118e8565b602082019050919050565b5f6020820190508181035f83015261194981611910565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6119aa602583611456565b91506119b582611950565b604082019050919050565b5f6020820190508181035f8301526119d78161199e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611a38602683611456565b9150611a43826119de565b604082019050919050565b5f6020820190508181035f830152611a6581611a2c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611ac6602483611456565b9150611ad182611a6c565b604082019050919050565b5f6020820190508181035f830152611af381611aba565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b54602283611456565b9150611b5f82611afa565b604082019050919050565b5f6020820190508181035f830152611b8181611b48565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611be2602583611456565b9150611bed82611b88565b604082019050919050565b5f6020820190508181035f830152611c0f81611bd6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611c70602383611456565b9150611c7b82611c16565b604082019050919050565b5f6020820190508181035f830152611c9d81611c64565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f611cd8601683611456565b9150611ce382611ca4565b602082019050919050565b5f6020820190508181035f830152611d0581611ccc565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611d66602683611456565b9150611d7182611d0c565b604082019050919050565b5f6020820190508181035f830152611d9381611d5a565b905091905056fea26469706673582212207855c73ad605191dbbf34feac563964a828d4177bb0e3b2ccec6689f8044dcca64736f6c63430008180033
Deployed Bytecode Sourcemap
23073:1529:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10891:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13185:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12003:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13867:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11845:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14801:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23634:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12174:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22219:103;;;;;;;;;;;;;:::i;:::-;;23150:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23545:81;;;;;;;;;;;;;:::i;:::-;;21570:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15593:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12560:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12839:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22477:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23205:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10891:100;10945:13;10978:5;10971:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10891:100;:::o;13185:210::-;13304:4;13326:39;13335:12;:10;:12::i;:::-;13349:7;13358:6;13326:8;:39::i;:::-;13383:4;13376:11;;13185:210;;;;:::o;12003:108::-;12064:7;12091:12;;12084:19;;12003:108;:::o;13867:529::-;14007:4;14024:36;14034:6;14042:9;14053:6;14024:9;:36::i;:::-;14073:24;14100:11;:19;14112:6;14100:19;;;;;;;;;;;;;;;:33;14120:12;:10;:12::i;:::-;14100:33;;;;;;;;;;;;;;;;14073:60;;14186:6;14166:16;:26;;14144:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;14296:57;14305:6;14313:12;:10;:12::i;:::-;14346:6;14327:16;:25;14296:8;:57::i;:::-;14384:4;14377:11;;;13867:529;;;;;:::o;11845:93::-;11903:5;11928:2;11921:9;;11845:93;:::o;14801:297::-;14916:4;14938:130;14961:12;:10;:12::i;:::-;14988:7;15047:10;15010:11;:25;15022:12;:10;:12::i;:::-;15010:25;;;;;;;;;;;;;;;:34;15036:7;15010:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14938:8;:130::i;:::-;15086:4;15079:11;;14801:297;;;;:::o;23634:152::-;21801:12;:10;:12::i;:::-;21790:23;;:7;:5;:7::i;:::-;:23;;;21782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23773:5:::1;23744:16;:26;23761:8;23744:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23634:152:::0;;:::o;12174:177::-;12293:7;12325:9;:18;12335:7;12325:18;;;;;;;;;;;;;;;;12318:25;;12174:177;;;:::o;22219:103::-;21801:12;:10;:12::i;:::-;21790:23;;:7;:5;:7::i;:::-;:23;;;21782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22284:30:::1;22311:1;22284:18;:30::i;:::-;22219:103::o:0;23150:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23545:81::-;21801:12;:10;:12::i;:::-;21790:23;;:7;:5;:7::i;:::-;:23;;;21782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23614:4:::1;23600:11;;:18;;;;;;;;;;;;;;;;;;23545:81::o:0;21570:87::-;21616:7;21643:6;;;;;;;;;;;21636:13;;21570:87;:::o;11110:104::-;11166:13;11199:7;11192:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11110:104;:::o;15593:482::-;15713:4;15735:24;15762:11;:25;15774:12;:10;:12::i;:::-;15762:25;;;;;;;;;;;;;;;:34;15788:7;15762:34;;;;;;;;;;;;;;;;15735:61;;15849:15;15829:16;:35;;15807:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;15965:67;15974:12;:10;:12::i;:::-;15988:7;16016:15;15997:16;:34;15965:8;:67::i;:::-;16063:4;16056:11;;;15593:482;;;;:::o;12560:216::-;12682:4;12704:42;12714:12;:10;:12::i;:::-;12728:9;12739:6;12704:9;:42::i;:::-;12764:4;12757:11;;12560:216;;;;:::o;12839:201::-;12973:7;13005:11;:18;13017:5;13005:18;;;;;;;;;;;;;;;:27;13024:7;13005:27;;;;;;;;;;;;;;;;12998:34;;12839:201;;;;:::o;22477:238::-;21801:12;:10;:12::i;:::-;21790:23;;:7;:5;:7::i;:::-;:23;;;21782:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22600:1:::1;22580:22;;:8;:22;;::::0;22558:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22679:28;22698:8;22679:18;:28::i;:::-;22477:238:::0;:::o;23205:31::-;;;;;;;;;;;;;:::o;9897:98::-;9950:7;9977:10;9970:17;;9897:98;:::o;19337:380::-;19490:1;19473:19;;:5;:19;;;19465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19571:1;19552:21;;:7;:21;;;19544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19655:6;19625:11;:18;19637:5;19625:18;;;;;;;;;;;;;;;:27;19644:7;19625:27;;;;;;;;;;;;;;;:36;;;;19693:7;19677:32;;19686:5;19677:32;;;19702:6;19677:32;;;;;;:::i;:::-;;;;;;;;19337:380;;;:::o;23794:805::-;23942:1;23926:18;;:4;:18;;;23918:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24019:1;24005:16;;:2;:16;;;23997:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24088:1;24078:6;:11;24074:93;;24106:28;24122:4;24128:2;24132:1;24106:15;:28::i;:::-;24149:7;;24074:93;24205:7;:5;:7::i;:::-;24197:15;;:4;:15;;;;:45;;;;;24235:7;:5;:7::i;:::-;24229:13;;:2;:13;;;;24197:45;:78;;;;;24273:1;24259:16;;:2;:16;;;;24197:78;:116;;;;;24306:6;24292:21;;:2;:21;;;;24197:116;24179:367;;;24345:11;;;;;;;;;;;24340:195;;24407:16;:22;24424:4;24407:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;24433:16;:20;24450:2;24433:20;;;;;;;;;;;;;;;;;;;;;;;;;24407:46;24377:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;24340:195;24179:367;24558:33;24574:4;24580:2;24584:6;24558:15;:33::i;:::-;23794:805;;;;:::o;22875:191::-;22949:16;22968:6;;;;;;;;;;;22949:25;;22994:8;22985:6;;:17;;;;;;;;;;;;;;;;;;23049:8;23018:40;;23039:8;23018:40;;;;;;;;;;;;22938:128;22875:191;:::o;16551:770::-;16709:1;16691:20;;:6;:20;;;16683:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16793:1;16772:23;;:9;:23;;;16764:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16848:47;16869:6;16877:9;16888:6;16848:20;:47::i;:::-;16908:21;16932:9;:17;16942:6;16932:17;;;;;;;;;;;;;;;;16908:41;;16999:6;16982:13;:23;;16960:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;17143:6;17127:13;:22;17107:9;:17;17117:6;17107:17;;;;;;;;;;;;;;;:42;;;;17195:6;17171:9;:20;17181:9;17171:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;17236:9;17219:35;;17228:6;17219:35;;;17247:6;17219:35;;;;;;:::i;:::-;;;;;;;;17267:46;17287:6;17295:9;17306:6;17267:19;:46::i;:::-;16672:649;16551:770;;;:::o;20295:125::-;;;;:::o;21002:124::-;;;;:::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:116::-;4923:21;4938:5;4923:21;:::i;:::-;4916:5;4913:32;4903:60;;4959:1;4956;4949:12;4903:60;4853:116;:::o;4975:133::-;5018:5;5056:6;5043:20;5034:29;;5072:30;5096:5;5072:30;:::i;:::-;4975:133;;;;:::o;5114:468::-;5179:6;5187;5236:2;5224:9;5215:7;5211:23;5207:32;5204:119;;;5242:79;;:::i;:::-;5204:119;5362:1;5387:53;5432:7;5423:6;5412:9;5408:22;5387:53;:::i;:::-;5377:63;;5333:117;5489:2;5515:50;5557:7;5548:6;5537:9;5533:22;5515:50;:::i;:::-;5505:60;;5460:115;5114:468;;;;;:::o;5588:329::-;5647:6;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5588:329;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::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:180::-;8345:77;8342:1;8335:88;8442:4;8439:1;8432:15;8466:4;8463:1;8456:15;8483:191;8523:3;8542:20;8560:1;8542:20;:::i;:::-;8537:25;;8576:20;8594:1;8576:20;:::i;:::-;8571:25;;8619:1;8616;8612:9;8605:16;;8640:3;8637:1;8634:10;8631:36;;;8647:18;;:::i;:::-;8631:36;8483:191;;;;:::o;8680:182::-;8820:34;8816:1;8808:6;8804:14;8797:58;8680:182;:::o;8868:366::-;9010:3;9031:67;9095:2;9090:3;9031:67;:::i;:::-;9024:74;;9107:93;9196:3;9107:93;:::i;:::-;9225:2;9220:3;9216:12;9209:19;;8868:366;;;:::o;9240:419::-;9406:4;9444:2;9433:9;9429:18;9421:26;;9493:9;9487:4;9483:20;9479:1;9468:9;9464:17;9457:47;9521:131;9647:4;9521:131;:::i;:::-;9513:139;;9240:419;;;:::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://7855c73ad605191dbbf34feac563964a828d4177bb0e3b2ccec6689f8044dcca
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.