ETH Price: $2,935.78 (+0.41%)
Gas: 3 Gwei

Token

HZMCOIN (HZM)
 

Overview

Max Total Supply

4,450,000,000 HZM

Holders

1,125 ( -0.089%)

Market

Price

$0.00 @ 0.000000 ETH (-2.62%)

Onchain Market Cap

$2,454,531.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
LBank: Hot Wallet 3
Balance
19,478,867.2272 HZM

Value
$10,744.15 ( ~3.6597 Eth) [0.4377%]
0x120051a72966950b8ce12eb5496b5d1eeec1541b
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Follow the journey of the camel across Web3 and Metaverse, play games and communicate anonymously with Mejhool

Market

Volume (24H):$3,098.58
Market Capitalization:$0.00
Circulating Supply:0.00 HZM
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
WhiteBIT
HZM-USDT$0.0006
0.0000002 Eth
$3,096.91
5,617,591.000 HZM
100.0000%
2
BigONE
HZM-USDT$0.0005
0.0000002 Eth
$0.00
0.030 HZM
0.0000%

Contract Source Code Verified (Exact Match)

Contract Name:
HZMCOIN

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2022-05-26
*/

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
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 subtraction 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) {
        uint256 c = a + b;
        assert(c>=a && c>=b);
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        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) {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    /**
     * @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) {
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        assert(a == b * c + a % b);
        return c;
    }

    /**
     * @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) {
        require(b != 0, "SafeMath: modulo by zero");
        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;
        }
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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);
    }
}

// File: contract/HZMCOIN.sol



pragma solidity ^0.8.7;




contract HZMCOIN is Ownable,IERC20 {

    using SafeMath for uint256;

    uint256 public decimals = 8;   //How many decimals to show.
    uint256 private totalSupply_ = 4450000000 * 10**8;  // 4.45 billion tokens, 8 decimal places
    string constant public name = "HZMCOIN"; //fancy name: eg HZM COIN
    string constant public symbol = "HZM"; //An identifier: eg HZM
    string constant public version = "v2";  //Version 2 standard. Just an arbitrary versioning scheme

    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    mapping (address => bool) public frozenAccount;

    event FrozenFunds(address target, bool frozen);

    constructor()  {
        balances[_msgSender()] = totalSupply_;  // Give the creator all initial tokens
        emit Transfer(address(0), _msgSender(), totalSupply_);
    }

    function mint(uint256 _amount) public onlyOwner returns(bool) {                                                                                                                                                                                         
        require(_amount > 0, "Amount must be greater than zero");  // Don't Mint 0 Amount 
        
        totalSupply_ = totalSupply_.add(_amount);
        balances[ _msgSender()] = balances[ _msgSender()].add(_amount);

        emit Transfer(address(0),  _msgSender(), _amount);
        return true;
    }

    // Only owner can freeze and unfreeze of account
    function freezeAccount(address target, bool freeze) public onlyOwner {
        frozenAccount[target] = freeze;

        emit FrozenFunds(target, freeze);
    }

    function balanceOf(address _owner) public view override returns (uint256 balance) {
        return balances[_owner];
    }

    function totalSupply() public view override returns (uint256){
        return totalSupply_;
    }

    function approve(address spender, uint256 amount) public override returns (bool success) {
        require(balances[_msgSender()]>= amount && amount > 0,"Balances is not enough"); // Check if the sender has enough
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transfer(address _to, uint256 _amount) public override returns (bool success) {
        require(!frozenAccount[_msgSender()] ,"Your account is frozen account"); // Check for frozen account
        require(balances[_msgSender()]>= _amount && _amount > 0 ,"Amount is not enough");  // Check if the sender has enough
           
        _transfer(_msgSender(), _to, _amount);

        return true;
    }

    function transferFrom(address _spenderOwner, address _recipient, uint256 _amount) public override returns (bool) {
        require(!frozenAccount[_msgSender()],"Your account is frozen account"); // Check for frozen account
        require(!frozenAccount[_spenderOwner] ,"Spender owner's account is frozen account"); // Check for frozen account
        require(allowed[_spenderOwner][_msgSender()] >= _amount,"Amount is more then approve amount"); // Check allowance amount
        require(_amount > 0, "Transfer amount must be greater than zero");  // Don't allow 0Amount transfer
       
        _transfer(_spenderOwner,_recipient,_amount);
        _approve(_spenderOwner,_msgSender(),allowed[_spenderOwner][_msgSender()].sub(_amount,"ERC20: transfer amount exceeds allowance"));

        return true;
    }

    function _transfer(address from,address to, uint256 amount ) private {
        require(from != address(0),"ERC20: transfer from the zero address"); // check address
        require(to != address(0), "ERC20: transfer to the zero address");   // check address
    
        balances[to] = balances[to].add(amount);
        balances[from] = balances[from].sub(amount);
        emit Transfer(from, to, amount);
    }
    
    function _approve(address owner, address spender ,uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address"); // check address
        require(spender != address(0), "ERC20: approve to the zero address"); // check address
    
        allowed[owner][spender ] = amount;

        // Notify anyone listening that this approval done
        emit Approval(owner, spender, amount);
    }

    function allowance(address _owner, address _spender)  public override view returns (uint256 ) {
        return allowed[_owner][_spender];
    }

    /* Approves and then calls the receiving contract */
    function approveAndCall(address _spender, uint256 _amount, bytes memory _extraData) public returns (bool) {
        allowed[msg.sender][_spender] = _amount;
        emit Approval(msg.sender, _spender, _amount);
   
        (bool success, bytes memory data)  = (_spender).call(abi.encode( bytes4(bytes32(keccak256(abi.encodePacked("receiveApproval(address,uint256,address,bytes)")))), msg.sender, _amount, this, _extraData));
        require(success);
        
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"frozen","type":"bool"}],"name":"FrozenFunds","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","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":"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":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spenderOwner","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":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

6080604052600860015567062cf5246d0c80006002553480156200002257600080fd5b5062000043620000376200011760201b60201c565b6200011f60201b60201c565b600254600360006200005a6200011760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620000a86200011760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600254604051620001099190620001f4565b60405180910390a36200021b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001ee8162000211565b82525050565b60006020820190506200020b6000830184620001e3565b92915050565b6000819050919050565b6125ad806200022b6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063b414d4b611610071578063b414d4b6146102be578063cae9ca51146102ee578063dd62ed3e1461031e578063e724529c1461034e578063f2fde38b1461036a5761010b565b80638da5cb5b1461022257806395d89b4114610240578063a0712d681461025e578063a9059cbb1461028e5761010b565b8063313ce567116100de578063313ce567146101ac57806354fd4d50146101ca57806370a08231146101e8578063715018a6146102185761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610386565b6040516101259190611c9c565b60405180910390f35b61014860048036038101906101439190611803565b6103bf565b6040516101559190611c27565b60405180910390f35b610166610472565b6040516101739190611e5e565b60405180910390f35b61019660048036038101906101919190611770565b61047c565b6040516101a39190611c27565b60405180910390f35b6101b461077f565b6040516101c19190611e5e565b60405180910390f35b6101d2610785565b6040516101df9190611c9c565b60405180910390f35b61020260048036038101906101fd9190611703565b6107be565b60405161020f9190611e5e565b60405180910390f35b610220610807565b005b61022a61088f565b6040516102379190611be3565b60405180910390f35b6102486108b8565b6040516102559190611c9c565b60405180910390f35b610278600480360381019061027391906118b2565b6108f1565b6040516102859190611c27565b60405180910390f35b6102a860048036038101906102a39190611803565b610ae6565b6040516102b59190611c27565b60405180910390f35b6102d860048036038101906102d39190611703565b610c2d565b6040516102e59190611c27565b60405180910390f35b61030860048036038101906103039190611843565b610c4d565b6040516103159190611c27565b60405180910390f35b61033860048036038101906103339190611730565b610e06565b6040516103459190611e5e565b60405180910390f35b610368600480360381019061036391906117c3565b610e8d565b005b610384600480360381019061037f9190611703565b610f9d565b005b6040518060400160405280600781526020017f485a4d434f494e0000000000000000000000000000000000000000000000000081525081565b600081600360006103ce611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156104175750600082115b610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90611d7e565b60405180910390fd5b610468610461611095565b848461109d565b6001905092915050565b6000600254905090565b60006005600061048a611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050990611d5e565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611d3e565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105e9611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065c90611e1e565b60405180910390fd5b600082116106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90611dbe565b60405180910390fd5b6106b3848484611268565b610774846106bf611095565b61076f8560405180606001604052806028815260200161255060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610725611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114dc9092919063ffffffff16565b61109d565b600190509392505050565b60015481565b6040518060400160405280600281526020017f763200000000000000000000000000000000000000000000000000000000000081525081565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61080f611095565b73ffffffffffffffffffffffffffffffffffffffff1661082d61088f565b73ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a90611d9e565b60405180910390fd5b61088d6000611531565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f485a4d000000000000000000000000000000000000000000000000000000000081525081565b60006108fb611095565b73ffffffffffffffffffffffffffffffffffffffff1661091961088f565b73ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690611d9e565b60405180910390fd5b600082116109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990611d1e565b60405180910390fd5b6109c7826002546115f590919063ffffffff16565b600281905550610a2682600360006109dd611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f590919063ffffffff16565b60036000610a32611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a78611095565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad59190611e5e565b60405180910390a360019050919050565b600060056000610af4611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390611d5e565b60405180910390fd5b8160036000610b89611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610bd25750600082115b610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890611e3e565b60405180910390fd5b610c23610c1c611095565b8484611268565b6001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610d2d9190611e5e565b60405180910390a36000808573ffffffffffffffffffffffffffffffffffffffff16604051602001610d5e90611bce565b6040516020818303038152906040528051906020012033873088604051602001610d8c959493929190611c42565b604051602081830303815290604052604051610da89190611bb7565b6000604051808303816000865af19150503d8060008114610de5576040519150601f19603f3d011682016040523d82523d6000602084013e610dea565b606091505b509150915081610df957600080fd5b6001925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e95611095565b73ffffffffffffffffffffffffffffffffffffffff16610eb361088f565b73ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090611d9e565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051610f91929190611bfe565b60405180910390a15050565b610fa5611095565b73ffffffffffffffffffffffffffffffffffffffff16610fc361088f565b73ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090611d9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090611cde565b60405180910390fd5b61109281611531565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490611dfe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490611cfe565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125b9190611e5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90611dde565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90611cbe565b60405180910390fd5b61139a81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061142f81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162d90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114cf9190611e5e565b60405180910390a3505050565b6000838311158290611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b9190611c9c565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082846116049190611f1d565b90508381101580156116165750828110155b611623576116226120c4565b5b8091505092915050565b6000828211156116405761163f6120c4565b5b818361164c9190611f73565b905092915050565b600061166761166284611e9e565b611e79565b90508281526020810184848401111561168357611682612156565b5b61168e848285612051565b509392505050565b6000813590506116a58161250a565b92915050565b6000813590506116ba81612521565b92915050565b600082601f8301126116d5576116d4612151565b5b81356116e5848260208601611654565b91505092915050565b6000813590506116fd81612538565b92915050565b60006020828403121561171957611718612160565b5b600061172784828501611696565b91505092915050565b6000806040838503121561174757611746612160565b5b600061175585828601611696565b925050602061176685828601611696565b9150509250929050565b60008060006060848603121561178957611788612160565b5b600061179786828701611696565b93505060206117a886828701611696565b92505060406117b9868287016116ee565b9150509250925092565b600080604083850312156117da576117d9612160565b5b60006117e885828601611696565b92505060206117f9858286016116ab565b9150509250929050565b6000806040838503121561181a57611819612160565b5b600061182885828601611696565b9250506020611839858286016116ee565b9150509250929050565b60008060006060848603121561185c5761185b612160565b5b600061186a86828701611696565b935050602061187b868287016116ee565b925050604084013567ffffffffffffffff81111561189c5761189b61215b565b5b6118a8868287016116c0565b9150509250925092565b6000602082840312156118c8576118c7612160565b5b60006118d6848285016116ee565b91505092915050565b6118e881611fa7565b82525050565b6118f781611fb9565b82525050565b61190681611fc5565b82525050565b600061191782611ecf565b6119218185611ee5565b9350611931818560208601612060565b61193a81612165565b840191505092915050565b600061195082611ecf565b61195a8185611ef6565b935061196a818560208601612060565b80840191505092915050565b61197f8161201b565b82525050565b600061199082611eda565b61199a8185611f01565b93506119aa818560208601612060565b6119b381612165565b840191505092915050565b60006119cb602383611f01565b91506119d682612176565b604082019050919050565b60006119ee602683611f01565b91506119f9826121c5565b604082019050919050565b6000611a11602283611f01565b9150611a1c82612214565b604082019050919050565b6000611a34602083611f01565b9150611a3f82612263565b602082019050919050565b6000611a57602983611f01565b9150611a628261228c565b604082019050919050565b6000611a7a601e83611f01565b9150611a85826122db565b602082019050919050565b6000611a9d601683611f01565b9150611aa882612304565b602082019050919050565b6000611ac0602e83611f12565b9150611acb8261232d565b602e82019050919050565b6000611ae3602083611f01565b9150611aee8261237c565b602082019050919050565b6000611b06602983611f01565b9150611b11826123a5565b604082019050919050565b6000611b29602583611f01565b9150611b34826123f4565b604082019050919050565b6000611b4c602483611f01565b9150611b5782612443565b604082019050919050565b6000611b6f602283611f01565b9150611b7a82612492565b604082019050919050565b6000611b92601483611f01565b9150611b9d826124e1565b602082019050919050565b611bb181612011565b82525050565b6000611bc38284611945565b915081905092915050565b6000611bd982611ab3565b9150819050919050565b6000602082019050611bf860008301846118df565b92915050565b6000604082019050611c1360008301856118df565b611c2060208301846118ee565b9392505050565b6000602082019050611c3c60008301846118ee565b92915050565b600060a082019050611c5760008301886118fd565b611c6460208301876118df565b611c716040830186611ba8565b611c7e6060830185611976565b8181036080830152611c90818461190c565b90509695505050505050565b60006020820190508181036000830152611cb68184611985565b905092915050565b60006020820190508181036000830152611cd7816119be565b9050919050565b60006020820190508181036000830152611cf7816119e1565b9050919050565b60006020820190508181036000830152611d1781611a04565b9050919050565b60006020820190508181036000830152611d3781611a27565b9050919050565b60006020820190508181036000830152611d5781611a4a565b9050919050565b60006020820190508181036000830152611d7781611a6d565b9050919050565b60006020820190508181036000830152611d9781611a90565b9050919050565b60006020820190508181036000830152611db781611ad6565b9050919050565b60006020820190508181036000830152611dd781611af9565b9050919050565b60006020820190508181036000830152611df781611b1c565b9050919050565b60006020820190508181036000830152611e1781611b3f565b9050919050565b60006020820190508181036000830152611e3781611b62565b9050919050565b60006020820190508181036000830152611e5781611b85565b9050919050565b6000602082019050611e736000830184611ba8565b92915050565b6000611e83611e94565b9050611e8f8282612093565b919050565b6000604051905090565b600067ffffffffffffffff821115611eb957611eb8612122565b5b611ec282612165565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000611f2882612011565b9150611f3383612011565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f6857611f676120f3565b5b828201905092915050565b6000611f7e82612011565b9150611f8983612011565b925082821015611f9c57611f9b6120f3565b5b828203905092915050565b6000611fb282611ff1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120268261202d565b9050919050565b60006120388261203f565b9050919050565b600061204a82611ff1565b9050919050565b82818337600083830152505050565b60005b8381101561207e578082015181840152602081019050612063565b8381111561208d576000848401525b50505050565b61209c82612165565b810181811067ffffffffffffffff821117156120bb576120ba612122565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b7f5370656e646572206f776e65722773206163636f756e742069732066726f7a6560008201527f6e206163636f756e740000000000000000000000000000000000000000000000602082015250565b7f596f7572206163636f756e742069732066726f7a656e206163636f756e740000600082015250565b7f42616c616e636573206973206e6f7420656e6f75676800000000000000000000600082015250565b7f72656365697665417070726f76616c28616464726573732c75696e743235362c60008201527f616464726573732c627974657329000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206973206d6f7265207468656e20617070726f766520616d6f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206973206e6f7420656e6f756768000000000000000000000000600082015250565b61251381611fa7565b811461251e57600080fd5b50565b61252a81611fb9565b811461253557600080fd5b50565b61254181612011565b811461254c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220090ff0fb17fdac5905a2ad31314e379e9df767a1829cc3aaaadb1d9b943d167264736f6c63430008070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638da5cb5b116100a2578063b414d4b611610071578063b414d4b6146102be578063cae9ca51146102ee578063dd62ed3e1461031e578063e724529c1461034e578063f2fde38b1461036a5761010b565b80638da5cb5b1461022257806395d89b4114610240578063a0712d681461025e578063a9059cbb1461028e5761010b565b8063313ce567116100de578063313ce567146101ac57806354fd4d50146101ca57806370a08231146101e8578063715018a6146102185761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610386565b6040516101259190611c9c565b60405180910390f35b61014860048036038101906101439190611803565b6103bf565b6040516101559190611c27565b60405180910390f35b610166610472565b6040516101739190611e5e565b60405180910390f35b61019660048036038101906101919190611770565b61047c565b6040516101a39190611c27565b60405180910390f35b6101b461077f565b6040516101c19190611e5e565b60405180910390f35b6101d2610785565b6040516101df9190611c9c565b60405180910390f35b61020260048036038101906101fd9190611703565b6107be565b60405161020f9190611e5e565b60405180910390f35b610220610807565b005b61022a61088f565b6040516102379190611be3565b60405180910390f35b6102486108b8565b6040516102559190611c9c565b60405180910390f35b610278600480360381019061027391906118b2565b6108f1565b6040516102859190611c27565b60405180910390f35b6102a860048036038101906102a39190611803565b610ae6565b6040516102b59190611c27565b60405180910390f35b6102d860048036038101906102d39190611703565b610c2d565b6040516102e59190611c27565b60405180910390f35b61030860048036038101906103039190611843565b610c4d565b6040516103159190611c27565b60405180910390f35b61033860048036038101906103339190611730565b610e06565b6040516103459190611e5e565b60405180910390f35b610368600480360381019061036391906117c3565b610e8d565b005b610384600480360381019061037f9190611703565b610f9d565b005b6040518060400160405280600781526020017f485a4d434f494e0000000000000000000000000000000000000000000000000081525081565b600081600360006103ce611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156104175750600082115b610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d90611d7e565b60405180910390fd5b610468610461611095565b848461109d565b6001905092915050565b6000600254905090565b60006005600061048a611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050990611d5e565b60405180910390fd5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561059f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611d3e565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105e9611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065c90611e1e565b60405180910390fd5b600082116106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90611dbe565b60405180910390fd5b6106b3848484611268565b610774846106bf611095565b61076f8560405180606001604052806028815260200161255060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610725611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114dc9092919063ffffffff16565b61109d565b600190509392505050565b60015481565b6040518060400160405280600281526020017f763200000000000000000000000000000000000000000000000000000000000081525081565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61080f611095565b73ffffffffffffffffffffffffffffffffffffffff1661082d61088f565b73ffffffffffffffffffffffffffffffffffffffff1614610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087a90611d9e565b60405180910390fd5b61088d6000611531565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f485a4d000000000000000000000000000000000000000000000000000000000081525081565b60006108fb611095565b73ffffffffffffffffffffffffffffffffffffffff1661091961088f565b73ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690611d9e565b60405180910390fd5b600082116109b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a990611d1e565b60405180910390fd5b6109c7826002546115f590919063ffffffff16565b600281905550610a2682600360006109dd611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f590919063ffffffff16565b60036000610a32611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a78611095565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad59190611e5e565b60405180910390a360019050919050565b600060056000610af4611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7390611d5e565b60405180910390fd5b8160036000610b89611095565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610bd25750600082115b610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0890611e3e565b60405180910390fd5b610c23610c1c611095565b8484611268565b6001905092915050565b60056020528060005260406000206000915054906101000a900460ff1681565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610d2d9190611e5e565b60405180910390a36000808573ffffffffffffffffffffffffffffffffffffffff16604051602001610d5e90611bce565b6040516020818303038152906040528051906020012033873088604051602001610d8c959493929190611c42565b604051602081830303815290604052604051610da89190611bb7565b6000604051808303816000865af19150503d8060008114610de5576040519150601f19603f3d011682016040523d82523d6000602084013e610dea565b606091505b509150915081610df957600080fd5b6001925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e95611095565b73ffffffffffffffffffffffffffffffffffffffff16610eb361088f565b73ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0090611d9e565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051610f91929190611bfe565b60405180910390a15050565b610fa5611095565b73ffffffffffffffffffffffffffffffffffffffff16610fc361088f565b73ffffffffffffffffffffffffffffffffffffffff1614611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090611d9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090611cde565b60405180910390fd5b61109281611531565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490611dfe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490611cfe565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125b9190611e5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90611dde565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90611cbe565b60405180910390fd5b61139a81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115f590919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061142f81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162d90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114cf9190611e5e565b60405180910390a3505050565b6000838311158290611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b9190611c9c565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008082846116049190611f1d565b90508381101580156116165750828110155b611623576116226120c4565b5b8091505092915050565b6000828211156116405761163f6120c4565b5b818361164c9190611f73565b905092915050565b600061166761166284611e9e565b611e79565b90508281526020810184848401111561168357611682612156565b5b61168e848285612051565b509392505050565b6000813590506116a58161250a565b92915050565b6000813590506116ba81612521565b92915050565b600082601f8301126116d5576116d4612151565b5b81356116e5848260208601611654565b91505092915050565b6000813590506116fd81612538565b92915050565b60006020828403121561171957611718612160565b5b600061172784828501611696565b91505092915050565b6000806040838503121561174757611746612160565b5b600061175585828601611696565b925050602061176685828601611696565b9150509250929050565b60008060006060848603121561178957611788612160565b5b600061179786828701611696565b93505060206117a886828701611696565b92505060406117b9868287016116ee565b9150509250925092565b600080604083850312156117da576117d9612160565b5b60006117e885828601611696565b92505060206117f9858286016116ab565b9150509250929050565b6000806040838503121561181a57611819612160565b5b600061182885828601611696565b9250506020611839858286016116ee565b9150509250929050565b60008060006060848603121561185c5761185b612160565b5b600061186a86828701611696565b935050602061187b868287016116ee565b925050604084013567ffffffffffffffff81111561189c5761189b61215b565b5b6118a8868287016116c0565b9150509250925092565b6000602082840312156118c8576118c7612160565b5b60006118d6848285016116ee565b91505092915050565b6118e881611fa7565b82525050565b6118f781611fb9565b82525050565b61190681611fc5565b82525050565b600061191782611ecf565b6119218185611ee5565b9350611931818560208601612060565b61193a81612165565b840191505092915050565b600061195082611ecf565b61195a8185611ef6565b935061196a818560208601612060565b80840191505092915050565b61197f8161201b565b82525050565b600061199082611eda565b61199a8185611f01565b93506119aa818560208601612060565b6119b381612165565b840191505092915050565b60006119cb602383611f01565b91506119d682612176565b604082019050919050565b60006119ee602683611f01565b91506119f9826121c5565b604082019050919050565b6000611a11602283611f01565b9150611a1c82612214565b604082019050919050565b6000611a34602083611f01565b9150611a3f82612263565b602082019050919050565b6000611a57602983611f01565b9150611a628261228c565b604082019050919050565b6000611a7a601e83611f01565b9150611a85826122db565b602082019050919050565b6000611a9d601683611f01565b9150611aa882612304565b602082019050919050565b6000611ac0602e83611f12565b9150611acb8261232d565b602e82019050919050565b6000611ae3602083611f01565b9150611aee8261237c565b602082019050919050565b6000611b06602983611f01565b9150611b11826123a5565b604082019050919050565b6000611b29602583611f01565b9150611b34826123f4565b604082019050919050565b6000611b4c602483611f01565b9150611b5782612443565b604082019050919050565b6000611b6f602283611f01565b9150611b7a82612492565b604082019050919050565b6000611b92601483611f01565b9150611b9d826124e1565b602082019050919050565b611bb181612011565b82525050565b6000611bc38284611945565b915081905092915050565b6000611bd982611ab3565b9150819050919050565b6000602082019050611bf860008301846118df565b92915050565b6000604082019050611c1360008301856118df565b611c2060208301846118ee565b9392505050565b6000602082019050611c3c60008301846118ee565b92915050565b600060a082019050611c5760008301886118fd565b611c6460208301876118df565b611c716040830186611ba8565b611c7e6060830185611976565b8181036080830152611c90818461190c565b90509695505050505050565b60006020820190508181036000830152611cb68184611985565b905092915050565b60006020820190508181036000830152611cd7816119be565b9050919050565b60006020820190508181036000830152611cf7816119e1565b9050919050565b60006020820190508181036000830152611d1781611a04565b9050919050565b60006020820190508181036000830152611d3781611a27565b9050919050565b60006020820190508181036000830152611d5781611a4a565b9050919050565b60006020820190508181036000830152611d7781611a6d565b9050919050565b60006020820190508181036000830152611d9781611a90565b9050919050565b60006020820190508181036000830152611db781611ad6565b9050919050565b60006020820190508181036000830152611dd781611af9565b9050919050565b60006020820190508181036000830152611df781611b1c565b9050919050565b60006020820190508181036000830152611e1781611b3f565b9050919050565b60006020820190508181036000830152611e3781611b62565b9050919050565b60006020820190508181036000830152611e5781611b85565b9050919050565b6000602082019050611e736000830184611ba8565b92915050565b6000611e83611e94565b9050611e8f8282612093565b919050565b6000604051905090565b600067ffffffffffffffff821115611eb957611eb8612122565b5b611ec282612165565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000611f2882612011565b9150611f3383612011565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f6857611f676120f3565b5b828201905092915050565b6000611f7e82612011565b9150611f8983612011565b925082821015611f9c57611f9b6120f3565b5b828203905092915050565b6000611fb282611ff1565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120268261202d565b9050919050565b60006120388261203f565b9050919050565b600061204a82611ff1565b9050919050565b82818337600083830152505050565b60005b8381101561207e578082015181840152602081019050612063565b8381111561208d576000848401525b50505050565b61209c82612165565b810181811067ffffffffffffffff821117156120bb576120ba612122565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b7f5370656e646572206f776e65722773206163636f756e742069732066726f7a6560008201527f6e206163636f756e740000000000000000000000000000000000000000000000602082015250565b7f596f7572206163636f756e742069732066726f7a656e206163636f756e740000600082015250565b7f42616c616e636573206973206e6f7420656e6f75676800000000000000000000600082015250565b7f72656365697665417070726f76616c28616464726573732c75696e743235362c60008201527f616464726573732c627974657329000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206973206d6f7265207468656e20617070726f766520616d6f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206973206e6f7420656e6f756768000000000000000000000000600082015250565b61251381611fa7565b811461251e57600080fd5b50565b61252a81611fb9565b811461253557600080fd5b50565b61254181612011565b811461254c57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220090ff0fb17fdac5905a2ad31314e379e9df767a1829cc3aaaadb1d9b943d167264736f6c63430008070033

Deployed Bytecode Sourcemap

13699:5058:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13941:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15624:293;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15517:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16349:818;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13778:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14081:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15385:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12812:103;;;:::i;:::-;;12161:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14013:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14587:565;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15925:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14294:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18258:494;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18047:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15214:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13070:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13941:39;;;;;;;;;;;;;;;;;;;:::o;15624:293::-;15699:12;15757:6;15732:8;:22;15741:12;:10;:12::i;:::-;15732:22;;;;;;;;;;;;;;;;:31;;:45;;;;;15776:1;15767:6;:10;15732:45;15724:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15848:39;15857:12;:10;:12::i;:::-;15871:7;15880:6;15848:8;:39::i;:::-;15905:4;15898:11;;15624:293;;;;:::o;15517:99::-;15570:7;15596:12;;15589:19;;15517:99;:::o;16349:818::-;16456:4;16482:13;:27;16496:12;:10;:12::i;:::-;16482:27;;;;;;;;;;;;;;;;;;;;;;;;;16481:28;16473:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;16591:13;:28;16605:13;16591:28;;;;;;;;;;;;;;;;;;;;;;;;;16590:29;16582:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;16752:7;16712;:22;16720:13;16712:22;;;;;;;;;;;;;;;:36;16735:12;:10;:12::i;:::-;16712:36;;;;;;;;;;;;;;;;:47;;16704:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16852:1;16842:7;:11;16834:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16952:43;16962:13;16976:10;16987:7;16952:9;:43::i;:::-;17006:129;17015:13;17029:12;:10;:12::i;:::-;17042:92;17083:7;17042:92;;;;;;;;;;;;;;;;;:7;:22;17050:13;17042:22;;;;;;;;;;;;;;;:36;17065:12;:10;:12::i;:::-;17042:36;;;;;;;;;;;;;;;;:40;;:92;;;;;:::i;:::-;17006:8;:129::i;:::-;17155:4;17148:11;;16349:818;;;;;:::o;13778:27::-;;;;:::o;14081:37::-;;;;;;;;;;;;;;;;;;;:::o;15385:124::-;15450:15;15485:8;:16;15494:6;15485:16;;;;;;;;;;;;;;;;15478:23;;15385:124;;;:::o;12812:103::-;12392:12;:10;:12::i;:::-;12381:23;;:7;:5;:7::i;:::-;:23;;;12373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12877:30:::1;12904:1;12877:18;:30::i;:::-;12812:103::o:0;12161:87::-;12207:7;12234:6;;;;;;;;;;;12227:13;;12161:87;:::o;14013:37::-;;;;;;;;;;;;;;;;;;;:::o;14587:565::-;14643:4;12392:12;:10;:12::i;:::-;12381:23;;:7;:5;:7::i;:::-;:23;;;12373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14863:1:::1;14853:7;:11;14845:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14962:25;14979:7;14962:12;;:16;;:25;;;;:::i;:::-;14947:12;:40;;;;15024:36;15052:7;15024:8;:23;15034:12;:10;:12::i;:::-;15024:23;;;;;;;;;;;;;;;;:27;;:36;;;;:::i;:::-;14998:8;:23;15008:12;:10;:12::i;:::-;14998:23;;;;;;;;;;;;;;;:62;;;;15100:12;:10;:12::i;:::-;15078:44;;15095:1;15078:44;;;15114:7;15078:44;;;;;;:::i;:::-;;;;;;;;15140:4;15133:11;;14587:565:::0;;;:::o;15925:416::-;15998:12;16032:13;:27;16046:12;:10;:12::i;:::-;16032:27;;;;;;;;;;;;;;;;;;;;;;;;;16031:28;16023:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16166:7;16141:8;:22;16150:12;:10;:12::i;:::-;16141:22;;;;;;;;;;;;;;;;:32;;:47;;;;;16187:1;16177:7;:11;16141:47;16133:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16272:37;16282:12;:10;:12::i;:::-;16296:3;16301:7;16272:9;:37::i;:::-;16329:4;16322:11;;15925:416;;;;:::o;14294:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;18258:494::-;18358:4;18407:7;18375;:19;18383:10;18375:19;;;;;;;;;;;;;;;:29;18395:8;18375:29;;;;;;;;;;;;;;;:39;;;;18451:8;18430:39;;18439:10;18430:39;;;18461:7;18430:39;;;;;;:::i;:::-;;;;;;;;18486:12;18500:17;18523:8;18522:15;;18575:66;;;;;;;:::i;:::-;;;;;;;;;;;;;18565:77;;;;;;18646:10;18658:7;18667:4;18673:10;18538:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18522:163;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18485:200;;;;18704:7;18696:16;;;;;;18740:4;18733:11;;;;18258:494;;;;;:::o;18047:145::-;18131:7;18159;:15;18167:6;18159:15;;;;;;;;;;;;;;;:25;18175:8;18159:25;;;;;;;;;;;;;;;;18152:32;;18047:145;;;;:::o;15214:163::-;12392:12;:10;:12::i;:::-;12381:23;;:7;:5;:7::i;:::-;:23;;;12373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15318:6:::1;15294:13;:21;15308:6;15294:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15342:27;15354:6;15362;15342:27;;;;;;;:::i;:::-;;;;;;;;15214:163:::0;;:::o;13070:201::-;12392:12;:10;:12::i;:::-;12381:23;;:7;:5;:7::i;:::-;:23;;;12373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13179:1:::1;13159:22;;:8;:22;;;;13151:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13235:28;13254:8;13235:18;:28::i;:::-;13070:201:::0;:::o;10885:98::-;10938:7;10965:10;10958:17;;10885:98;:::o;17605:434::-;17715:1;17698:19;;:5;:19;;;;17690:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17813:1;17794:21;;:7;:21;;;;17786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17915:6;17888:7;:14;17896:5;17888:14;;;;;;;;;;;;;;;:24;17903:7;17888:24;;;;;;;;;;;;;;;:33;;;;18015:7;17999:32;;18008:5;17999:32;;;18024:6;17999:32;;;;;;:::i;:::-;;;;;;;;17605:434;;;:::o;17175:418::-;17279:1;17263:18;;:4;:18;;;;17255:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17372:1;17358:16;;:2;:16;;;;17350:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17465:24;17482:6;17465:8;:12;17474:2;17465:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;17450:8;:12;17459:2;17450:12;;;;;;;;;;;;;;;:39;;;;17517:26;17536:6;17517:8;:14;17526:4;17517:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;17500:8;:14;17509:4;17500:14;;;;;;;;;;;;;;;:43;;;;17574:2;17559:26;;17568:4;17559:26;;;17578:6;17559:26;;;;;;:::i;:::-;;;;;;;;17175:418;;;:::o;5474:240::-;5594:7;5652:1;5647;:6;;5655:12;5639:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5694:1;5690;:5;5683:12;;5474:240;;;;;:::o;13431:191::-;13505:16;13524:6;;;;;;;;;;;13505:25;;13550:8;13541:6;;:17;;;;;;;;;;;;;;;;;;13605:8;13574:40;;13595:8;13574:40;;;;;;;;;;;;13494:128;13431:191;:::o;2876:153::-;2934:7;2954:9;2970:1;2966;:5;;;;:::i;:::-;2954:17;;2992:1;2989;:4;;:12;;;;;3000:1;2997;:4;;2989:12;2982:20;;;;:::i;:::-;;3020:1;3013:8;;;2876:153;;;;:::o;3312:123::-;3370:7;3402:1;3397;:6;;3390:14;;;;:::i;:::-;;3426:1;3422;:5;;;;:::i;:::-;3415:12;;3312:123;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;720:338::-;775:5;824:3;817:4;809:6;805:17;801:27;791:122;;832:79;;:::i;:::-;791:122;949:6;936:20;974:78;1048:3;1040:6;1033:4;1025:6;1021:17;974:78;:::i;:::-;965:87;;781:277;720:338;;;;:::o;1064:139::-;1110:5;1148:6;1135:20;1126:29;;1164:33;1191:5;1164:33;:::i;:::-;1064:139;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:474::-;1612:6;1620;1669:2;1657:9;1648:7;1644:23;1640:32;1637:119;;;1675:79;;:::i;:::-;1637:119;1795:1;1820:53;1865:7;1856:6;1845:9;1841:22;1820:53;:::i;:::-;1810:63;;1766:117;1922:2;1948:53;1993:7;1984:6;1973:9;1969:22;1948:53;:::i;:::-;1938:63;;1893:118;1544:474;;;;;:::o;2024:619::-;2101:6;2109;2117;2166:2;2154:9;2145:7;2141:23;2137:32;2134:119;;;2172:79;;:::i;:::-;2134:119;2292:1;2317:53;2362:7;2353:6;2342:9;2338:22;2317:53;:::i;:::-;2307:63;;2263:117;2419:2;2445:53;2490:7;2481:6;2470:9;2466:22;2445:53;:::i;:::-;2435:63;;2390:118;2547:2;2573:53;2618:7;2609:6;2598:9;2594:22;2573:53;:::i;:::-;2563:63;;2518:118;2024:619;;;;;:::o;2649:468::-;2714:6;2722;2771:2;2759:9;2750:7;2746:23;2742:32;2739:119;;;2777:79;;:::i;:::-;2739:119;2897:1;2922:53;2967:7;2958:6;2947:9;2943:22;2922:53;:::i;:::-;2912:63;;2868:117;3024:2;3050:50;3092:7;3083:6;3072:9;3068:22;3050:50;:::i;:::-;3040:60;;2995:115;2649:468;;;;;:::o;3123:474::-;3191:6;3199;3248:2;3236:9;3227:7;3223:23;3219:32;3216:119;;;3254:79;;:::i;:::-;3216:119;3374:1;3399:53;3444:7;3435:6;3424:9;3420:22;3399:53;:::i;:::-;3389:63;;3345:117;3501:2;3527:53;3572:7;3563:6;3552:9;3548:22;3527:53;:::i;:::-;3517:63;;3472:118;3123:474;;;;;:::o;3603:797::-;3689:6;3697;3705;3754:2;3742:9;3733:7;3729:23;3725:32;3722:119;;;3760:79;;:::i;:::-;3722:119;3880:1;3905:53;3950:7;3941:6;3930:9;3926:22;3905:53;:::i;:::-;3895:63;;3851:117;4007:2;4033:53;4078:7;4069:6;4058:9;4054:22;4033:53;:::i;:::-;4023:63;;3978:118;4163:2;4152:9;4148:18;4135:32;4194:18;4186:6;4183:30;4180:117;;;4216:79;;:::i;:::-;4180:117;4321:62;4375:7;4366:6;4355:9;4351:22;4321:62;:::i;:::-;4311:72;;4106:287;3603:797;;;;;:::o;4406:329::-;4465:6;4514:2;4502:9;4493:7;4489:23;4485:32;4482:119;;;4520:79;;:::i;:::-;4482:119;4640:1;4665:53;4710:7;4701:6;4690:9;4686:22;4665:53;:::i;:::-;4655:63;;4611:117;4406:329;;;;:::o;4741:118::-;4828:24;4846:5;4828:24;:::i;:::-;4823:3;4816:37;4741:118;;:::o;4865:109::-;4946:21;4961:5;4946:21;:::i;:::-;4941:3;4934:34;4865:109;;:::o;4980:115::-;5065:23;5082:5;5065:23;:::i;:::-;5060:3;5053:36;4980:115;;:::o;5101:360::-;5187:3;5215:38;5247:5;5215:38;:::i;:::-;5269:70;5332:6;5327:3;5269:70;:::i;:::-;5262:77;;5348:52;5393:6;5388:3;5381:4;5374:5;5370:16;5348:52;:::i;:::-;5425:29;5447:6;5425:29;:::i;:::-;5420:3;5416:39;5409:46;;5191:270;5101:360;;;;:::o;5467:373::-;5571:3;5599:38;5631:5;5599:38;:::i;:::-;5653:88;5734:6;5729:3;5653:88;:::i;:::-;5646:95;;5750:52;5795:6;5790:3;5783:4;5776:5;5772:16;5750:52;:::i;:::-;5827:6;5822:3;5818:16;5811:23;;5575:265;5467:373;;;;:::o;5846:163::-;5949:53;5996:5;5949:53;:::i;:::-;5944:3;5937:66;5846:163;;:::o;6015:364::-;6103:3;6131:39;6164:5;6131:39;:::i;:::-;6186:71;6250:6;6245:3;6186:71;:::i;:::-;6179:78;;6266:52;6311:6;6306:3;6299:4;6292:5;6288:16;6266:52;:::i;:::-;6343:29;6365:6;6343:29;:::i;:::-;6338:3;6334:39;6327:46;;6107:272;6015:364;;;;:::o;6385:366::-;6527:3;6548:67;6612:2;6607:3;6548:67;:::i;:::-;6541:74;;6624:93;6713:3;6624:93;:::i;:::-;6742:2;6737:3;6733:12;6726:19;;6385:366;;;:::o;6757:::-;6899:3;6920:67;6984:2;6979:3;6920:67;:::i;:::-;6913:74;;6996:93;7085:3;6996:93;:::i;:::-;7114:2;7109:3;7105:12;7098:19;;6757:366;;;:::o;7129:::-;7271:3;7292:67;7356:2;7351:3;7292:67;:::i;:::-;7285:74;;7368:93;7457:3;7368:93;:::i;:::-;7486:2;7481:3;7477:12;7470:19;;7129:366;;;:::o;7501:::-;7643:3;7664:67;7728:2;7723:3;7664:67;:::i;:::-;7657:74;;7740:93;7829:3;7740:93;:::i;:::-;7858:2;7853:3;7849:12;7842:19;;7501:366;;;:::o;7873:::-;8015:3;8036:67;8100:2;8095:3;8036:67;:::i;:::-;8029:74;;8112:93;8201:3;8112:93;:::i;:::-;8230:2;8225:3;8221:12;8214:19;;7873:366;;;:::o;8245:::-;8387:3;8408:67;8472:2;8467:3;8408:67;:::i;:::-;8401:74;;8484:93;8573:3;8484:93;:::i;:::-;8602:2;8597:3;8593:12;8586:19;;8245:366;;;:::o;8617:::-;8759:3;8780:67;8844:2;8839:3;8780:67;:::i;:::-;8773:74;;8856:93;8945:3;8856:93;:::i;:::-;8974:2;8969:3;8965:12;8958:19;;8617:366;;;:::o;8989:402::-;9149:3;9170:85;9252:2;9247:3;9170:85;:::i;:::-;9163:92;;9264:93;9353:3;9264:93;:::i;:::-;9382:2;9377:3;9373:12;9366:19;;8989:402;;;:::o;9397:366::-;9539:3;9560:67;9624:2;9619:3;9560:67;:::i;:::-;9553:74;;9636:93;9725:3;9636:93;:::i;:::-;9754:2;9749:3;9745:12;9738:19;;9397:366;;;:::o;9769:::-;9911:3;9932:67;9996:2;9991:3;9932:67;:::i;:::-;9925:74;;10008:93;10097:3;10008:93;:::i;:::-;10126:2;10121:3;10117:12;10110:19;;9769:366;;;:::o;10141:::-;10283:3;10304:67;10368:2;10363:3;10304:67;:::i;:::-;10297:74;;10380:93;10469:3;10380:93;:::i;:::-;10498:2;10493:3;10489:12;10482:19;;10141:366;;;:::o;10513:::-;10655:3;10676:67;10740:2;10735:3;10676:67;:::i;:::-;10669:74;;10752:93;10841:3;10752:93;:::i;:::-;10870:2;10865:3;10861:12;10854:19;;10513:366;;;:::o;10885:::-;11027:3;11048:67;11112:2;11107:3;11048:67;:::i;:::-;11041:74;;11124:93;11213:3;11124:93;:::i;:::-;11242:2;11237:3;11233:12;11226:19;;10885:366;;;:::o;11257:::-;11399:3;11420:67;11484:2;11479:3;11420:67;:::i;:::-;11413:74;;11496:93;11585:3;11496:93;:::i;:::-;11614:2;11609:3;11605:12;11598:19;;11257:366;;;:::o;11629:118::-;11716:24;11734:5;11716:24;:::i;:::-;11711:3;11704:37;11629:118;;:::o;11753:271::-;11883:3;11905:93;11994:3;11985:6;11905:93;:::i;:::-;11898:100;;12015:3;12008:10;;11753:271;;;;:::o;12030:381::-;12215:3;12237:148;12381:3;12237:148;:::i;:::-;12230:155;;12402:3;12395:10;;12030:381;;;:::o;12417:222::-;12510:4;12548:2;12537:9;12533:18;12525:26;;12561:71;12629:1;12618:9;12614:17;12605:6;12561:71;:::i;:::-;12417:222;;;;:::o;12645:320::-;12760:4;12798:2;12787:9;12783:18;12775:26;;12811:71;12879:1;12868:9;12864:17;12855:6;12811:71;:::i;:::-;12892:66;12954:2;12943:9;12939:18;12930:6;12892:66;:::i;:::-;12645:320;;;;;:::o;12971:210::-;13058:4;13096:2;13085:9;13081:18;13073:26;;13109:65;13171:1;13160:9;13156:17;13147:6;13109:65;:::i;:::-;12971:210;;;;:::o;13187:779::-;13424:4;13462:3;13451:9;13447:19;13439:27;;13476:69;13542:1;13531:9;13527:17;13518:6;13476:69;:::i;:::-;13555:72;13623:2;13612:9;13608:18;13599:6;13555:72;:::i;:::-;13637;13705:2;13694:9;13690:18;13681:6;13637:72;:::i;:::-;13719:88;13803:2;13792:9;13788:18;13779:6;13719:88;:::i;:::-;13855:9;13849:4;13845:20;13839:3;13828:9;13824:19;13817:49;13883:76;13954:4;13945:6;13883:76;:::i;:::-;13875:84;;13187:779;;;;;;;;:::o;13972:313::-;14085:4;14123:2;14112:9;14108:18;14100:26;;14172:9;14166:4;14162:20;14158:1;14147:9;14143:17;14136:47;14200:78;14273:4;14264:6;14200:78;:::i;:::-;14192:86;;13972:313;;;;:::o;14291:419::-;14457:4;14495:2;14484:9;14480:18;14472:26;;14544:9;14538:4;14534:20;14530:1;14519:9;14515:17;14508:47;14572:131;14698:4;14572:131;:::i;:::-;14564:139;;14291:419;;;:::o;14716:::-;14882:4;14920:2;14909:9;14905:18;14897:26;;14969:9;14963:4;14959:20;14955:1;14944:9;14940:17;14933:47;14997:131;15123:4;14997:131;:::i;:::-;14989:139;;14716:419;;;:::o;15141:::-;15307:4;15345:2;15334:9;15330:18;15322:26;;15394:9;15388:4;15384:20;15380:1;15369:9;15365:17;15358:47;15422:131;15548:4;15422:131;:::i;:::-;15414:139;;15141:419;;;:::o;15566:::-;15732:4;15770:2;15759:9;15755:18;15747:26;;15819:9;15813:4;15809:20;15805:1;15794:9;15790:17;15783:47;15847:131;15973:4;15847:131;:::i;:::-;15839:139;;15566:419;;;:::o;15991:::-;16157:4;16195:2;16184:9;16180:18;16172:26;;16244:9;16238:4;16234:20;16230:1;16219:9;16215:17;16208:47;16272:131;16398:4;16272:131;:::i;:::-;16264:139;;15991:419;;;:::o;16416:::-;16582:4;16620:2;16609:9;16605:18;16597:26;;16669:9;16663:4;16659:20;16655:1;16644:9;16640:17;16633:47;16697:131;16823:4;16697:131;:::i;:::-;16689:139;;16416:419;;;:::o;16841:::-;17007:4;17045:2;17034:9;17030:18;17022:26;;17094:9;17088:4;17084:20;17080:1;17069:9;17065:17;17058:47;17122:131;17248:4;17122:131;:::i;:::-;17114:139;;16841:419;;;:::o;17266:::-;17432:4;17470:2;17459:9;17455:18;17447:26;;17519:9;17513:4;17509:20;17505:1;17494:9;17490:17;17483:47;17547:131;17673:4;17547:131;:::i;:::-;17539:139;;17266:419;;;:::o;17691:::-;17857:4;17895:2;17884:9;17880:18;17872:26;;17944:9;17938:4;17934:20;17930:1;17919:9;17915:17;17908:47;17972:131;18098:4;17972:131;:::i;:::-;17964:139;;17691:419;;;:::o;18116:::-;18282:4;18320:2;18309:9;18305:18;18297:26;;18369:9;18363:4;18359:20;18355:1;18344:9;18340:17;18333:47;18397:131;18523:4;18397:131;:::i;:::-;18389:139;;18116:419;;;:::o;18541:::-;18707:4;18745:2;18734:9;18730:18;18722:26;;18794:9;18788:4;18784:20;18780:1;18769:9;18765:17;18758:47;18822:131;18948:4;18822:131;:::i;:::-;18814:139;;18541:419;;;:::o;18966:::-;19132:4;19170:2;19159:9;19155:18;19147:26;;19219:9;19213:4;19209:20;19205:1;19194:9;19190:17;19183:47;19247:131;19373:4;19247:131;:::i;:::-;19239:139;;18966:419;;;:::o;19391:::-;19557:4;19595:2;19584:9;19580:18;19572:26;;19644:9;19638:4;19634:20;19630:1;19619:9;19615:17;19608:47;19672:131;19798:4;19672:131;:::i;:::-;19664:139;;19391:419;;;:::o;19816:222::-;19909:4;19947:2;19936:9;19932:18;19924:26;;19960:71;20028:1;20017:9;20013:17;20004:6;19960:71;:::i;:::-;19816:222;;;;:::o;20044:129::-;20078:6;20105:20;;:::i;:::-;20095:30;;20134:33;20162:4;20154:6;20134:33;:::i;:::-;20044:129;;;:::o;20179:75::-;20212:6;20245:2;20239:9;20229:19;;20179:75;:::o;20260:307::-;20321:4;20411:18;20403:6;20400:30;20397:56;;;20433:18;;:::i;:::-;20397:56;20471:29;20493:6;20471:29;:::i;:::-;20463:37;;20555:4;20549;20545:15;20537:23;;20260:307;;;:::o;20573:98::-;20624:6;20658:5;20652:12;20642:22;;20573:98;;;:::o;20677:99::-;20729:6;20763:5;20757:12;20747:22;;20677:99;;;:::o;20782:168::-;20865:11;20899:6;20894:3;20887:19;20939:4;20934:3;20930:14;20915:29;;20782:168;;;;:::o;20956:147::-;21057:11;21094:3;21079:18;;20956:147;;;;:::o;21109:169::-;21193:11;21227:6;21222:3;21215:19;21267:4;21262:3;21258:14;21243:29;;21109:169;;;;:::o;21284:148::-;21386:11;21423:3;21408:18;;21284:148;;;;:::o;21438:305::-;21478:3;21497:20;21515:1;21497:20;:::i;:::-;21492:25;;21531:20;21549:1;21531:20;:::i;:::-;21526:25;;21685:1;21617:66;21613:74;21610:1;21607:81;21604:107;;;21691:18;;:::i;:::-;21604:107;21735:1;21732;21728:9;21721:16;;21438:305;;;;:::o;21749:191::-;21789:4;21809:20;21827:1;21809:20;:::i;:::-;21804:25;;21843:20;21861:1;21843:20;:::i;:::-;21838:25;;21882:1;21879;21876:8;21873:34;;;21887:18;;:::i;:::-;21873:34;21932:1;21929;21925:9;21917:17;;21749:191;;;;:::o;21946:96::-;21983:7;22012:24;22030:5;22012:24;:::i;:::-;22001:35;;21946:96;;;:::o;22048:90::-;22082:7;22125:5;22118:13;22111:21;22100:32;;22048:90;;;:::o;22144:149::-;22180:7;22220:66;22213:5;22209:78;22198:89;;22144:149;;;:::o;22299:126::-;22336:7;22376:42;22369:5;22365:54;22354:65;;22299:126;;;:::o;22431:77::-;22468:7;22497:5;22486:16;;22431:77;;;:::o;22514:142::-;22580:9;22613:37;22644:5;22613:37;:::i;:::-;22600:50;;22514:142;;;:::o;22662:126::-;22712:9;22745:37;22776:5;22745:37;:::i;:::-;22732:50;;22662:126;;;:::o;22794:113::-;22844:9;22877:24;22895:5;22877:24;:::i;:::-;22864:37;;22794:113;;;:::o;22913:154::-;22997:6;22992:3;22987;22974:30;23059:1;23050:6;23045:3;23041:16;23034:27;22913:154;;;:::o;23073:307::-;23141:1;23151:113;23165:6;23162:1;23159:13;23151:113;;;23250:1;23245:3;23241:11;23235:18;23231:1;23226:3;23222:11;23215:39;23187:2;23184:1;23180:10;23175:15;;23151:113;;;23282:6;23279:1;23276:13;23273:101;;;23362:1;23353:6;23348:3;23344:16;23337:27;23273:101;23122:258;23073:307;;;:::o;23386:281::-;23469:27;23491:4;23469:27;:::i;:::-;23461:6;23457:40;23599:6;23587:10;23584:22;23563:18;23551:10;23548:34;23545:62;23542:88;;;23610:18;;:::i;:::-;23542:88;23650:10;23646:2;23639:22;23429:238;23386:281;;:::o;23673:180::-;23721:77;23718:1;23711:88;23818:4;23815:1;23808:15;23842:4;23839:1;23832:15;23859:180;23907:77;23904:1;23897:88;24004:4;24001:1;23994:15;24028:4;24025:1;24018:15;24045:180;24093:77;24090:1;24083:88;24190:4;24187:1;24180:15;24214:4;24211:1;24204:15;24231:117;24340:1;24337;24330:12;24354:117;24463:1;24460;24453:12;24477:117;24586:1;24583;24576:12;24600:117;24709:1;24706;24699:12;24723:102;24764:6;24815:2;24811:7;24806:2;24799:5;24795:14;24791:28;24781:38;;24723:102;;;:::o;24831:222::-;24971:34;24967:1;24959:6;24955:14;24948:58;25040:5;25035:2;25027:6;25023:15;25016:30;24831:222;:::o;25059:225::-;25199:34;25195:1;25187:6;25183:14;25176:58;25268:8;25263:2;25255:6;25251:15;25244:33;25059:225;:::o;25290:221::-;25430:34;25426:1;25418:6;25414:14;25407:58;25499:4;25494:2;25486:6;25482:15;25475:29;25290:221;:::o;25517:182::-;25657:34;25653:1;25645:6;25641:14;25634:58;25517:182;:::o;25705:228::-;25845:34;25841:1;25833:6;25829:14;25822:58;25914:11;25909:2;25901:6;25897:15;25890:36;25705:228;:::o;25939:180::-;26079:32;26075:1;26067:6;26063:14;26056:56;25939:180;:::o;26125:172::-;26265:24;26261:1;26253:6;26249:14;26242:48;26125:172;:::o;26303:233::-;26443:34;26439:1;26431:6;26427:14;26420:58;26512:16;26507:2;26499:6;26495:15;26488:41;26303:233;:::o;26542:182::-;26682:34;26678:1;26670:6;26666:14;26659:58;26542:182;:::o;26730:228::-;26870:34;26866:1;26858:6;26854:14;26847:58;26939:11;26934:2;26926:6;26922:15;26915:36;26730:228;:::o;26964:224::-;27104:34;27100:1;27092:6;27088:14;27081:58;27173:7;27168:2;27160:6;27156:15;27149:32;26964:224;:::o;27194:223::-;27334:34;27330:1;27322:6;27318:14;27311:58;27403:6;27398:2;27390:6;27386:15;27379:31;27194:223;:::o;27423:221::-;27563:34;27559:1;27551:6;27547:14;27540:58;27632:4;27627:2;27619:6;27615:15;27608:29;27423:221;:::o;27650:170::-;27790:22;27786:1;27778:6;27774:14;27767:46;27650:170;:::o;27826:122::-;27899:24;27917:5;27899:24;:::i;:::-;27892:5;27889:35;27879:63;;27938:1;27935;27928:12;27879:63;27826:122;:::o;27954:116::-;28024:21;28039:5;28024:21;:::i;:::-;28017:5;28014:32;28004:60;;28060:1;28057;28050:12;28004:60;27954:116;:::o;28076:122::-;28149:24;28167:5;28149:24;:::i;:::-;28142:5;28139:35;28129:63;;28188:1;28185;28178:12;28129:63;28076:122;:::o

Swarm Source

ipfs://090ff0fb17fdac5905a2ad31314e379e9df767a1829cc3aaaadb1d9b943d1672
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.