ETH Price: $2,416.56 (+0.08%)

Token

INKK (INKK)
 

Overview

Max Total Supply

1,263,627.999596325759031947 INKK

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
42,197.870370370370370369 INKK

Value
$0.00
0x7d88b3f3cfccbd60ae132bac4637089756b75faf
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
INKK

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-03
*/

// SPDX-License-Identifier: MIT
/*

   ______  ________  _________   _____  ____  _____  ___  ____   ___  ____   ________  ______    _  
 .' ___  ||_   __  ||  _   _  | |_   _||_   \|_   _||_  ||_  _| |_  ||_  _| |_   __  ||_   _ `. | | 
/ .'   \_|  | |_ \_||_/ | | \_|   | |    |   \ | |    | |_/ /     | |_/ /     | |_ \_|  | | `. \| | 
| |   ____  |  _| _     | |       | |    | |\ \| |    |  __'.     |  __'.     |  _| _   | |  | || | 
\ `.___]  |_| |__/ |   _| |_     _| |_  _| |_\   |_  _| |  \ \_  _| |  \ \_  _| |__/ | _| |_.' /|_| 
 `._____.'|________|  |_____|   |_____||_____|\____||____||____||____||____||________||______.' (_) 
                                                                                                    
*/
// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.0 (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.0 (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: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

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


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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 {}
}

// File: contracts/Inkk.sol



pragma solidity ^0.8.9;



contract INKK is ERC20("INKK", "INKK"), Ownable {
    mapping(address => bool) public managers;

    function addManager(address _address) external onlyOwner {
        managers[_address] = true;
    }

    function removeManager(address _address) external onlyOwner {
        managers[_address] = false;
    }

    function mint(address _to, uint _amount) external {
        require(managers[msg.sender] == true, "This address is not allowed to interact with the contract");
        _mint(_to, _amount);
    }

    function burn(address _from, uint _amount) external {
        require(managers[msg.sender] == true, "This address is not allowed to interact with the contract");
        _burn(_from, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"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":"_address","type":"address"}],"name":"addManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"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":"_address","type":"address"}],"name":"removeManager","outputs":[],"stateMutability":"nonpayable","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":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600481526020017f494e4b4b000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f494e4b4b00000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620001a6565b508060049080519060200190620000af929190620001a6565b505050620000d2620000c6620000d860201b60201c565b620000e060201b60201c565b620002bb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001b49062000285565b90600052602060002090601f016020900481019282620001d8576000855562000224565b82601f10620001f357805160ff191683800117855562000224565b8280016001018555821562000224579182015b828111156200022357825182559160200191906001019062000206565b5b50905062000233919062000237565b5090565b5b808211156200025257600081600090555060010162000238565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200029e57607f821691505b60208210811415620002b557620002b462000256565b5b50919050565b61213b80620002cb6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030a578063ac18de431461033a578063dd62ed3e14610356578063f2fde38b14610386578063fdff9b4d146103a257610121565b8063715018a6146102785780638da5cb5b1461028257806395d89b41146102a05780639dc29fac146102be578063a457c2d7146102da57610121565b80632d06177a116100f45780632d06177a146101c2578063313ce567146101de57806339509351146101fc57806340c10f191461022c57806370a082311461024857610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b9190611651565b60405180910390f35b61015e6004803603810190610159919061170c565b610464565b60405161016b9190611767565b60405180910390f35b61017c610482565b6040516101899190611791565b60405180910390f35b6101ac60048036038101906101a791906117ac565b61048c565b6040516101b99190611767565b60405180910390f35b6101dc60048036038101906101d791906117ff565b610584565b005b6101e661065b565b6040516101f39190611848565b60405180910390f35b6102166004803603810190610211919061170c565b610664565b6040516102239190611767565b60405180910390f35b6102466004803603810190610241919061170c565b610710565b005b610262600480360381019061025d91906117ff565b6107b1565b60405161026f9190611791565b60405180910390f35b6102806107f9565b005b61028a610881565b6040516102979190611872565b60405180910390f35b6102a86108ab565b6040516102b59190611651565b60405180910390f35b6102d860048036038101906102d3919061170c565b61093d565b005b6102f460048036038101906102ef919061170c565b6109de565b6040516103019190611767565b60405180910390f35b610324600480360381019061031f919061170c565b610ac9565b6040516103319190611767565b60405180910390f35b610354600480360381019061034f91906117ff565b610ae7565b005b610370600480360381019061036b919061188d565b610bbe565b60405161037d9190611791565b60405180910390f35b6103a0600480360381019061039b91906117ff565b610c45565b005b6103bc60048036038101906103b791906117ff565b610d3d565b6040516103c99190611767565b60405180910390f35b6060600380546103e1906118fc565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118fc565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d5d565b8484610d65565b6001905092915050565b6000600254905090565b6000610499848484610f30565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b906119a0565b60405180910390fd5b61057885610570610d5d565b858403610d65565b60019150509392505050565b61058c610d5d565b73ffffffffffffffffffffffffffffffffffffffff166105aa610881565b73ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f790611a0c565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000610706610671610d5d565b84846001600061067f610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107019190611a5b565b610d65565b6001905092915050565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90611b23565b60405180910390fd5b6107ad82826111b1565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610801610d5d565b73ffffffffffffffffffffffffffffffffffffffff1661081f610881565b73ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611a0c565b60405180910390fd5b61087f6000611311565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108ba906118fc565b80601f01602080910402602001604051908101604052809291908181526020018280546108e6906118fc565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b5050505050905090565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790611b23565b60405180910390fd5b6109da82826113d7565b5050565b600080600160006109ed610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611bb5565b60405180910390fd5b610abe610ab5610d5d565b85858403610d65565b600191505092915050565b6000610add610ad6610d5d565b8484610f30565b6001905092915050565b610aef610d5d565b73ffffffffffffffffffffffffffffffffffffffff16610b0d610881565b73ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611a0c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c4d610d5d565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610881565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890611a0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890611c47565b60405180910390fd5b610d3a81611311565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90611cd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611d6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f239190611791565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790611dfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790611e8f565b60405180910390fd5b61101b8383836115ae565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890611f21565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111349190611a5b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111989190611791565b60405180910390a36111ab8484846115b3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890611f8d565b60405180910390fd5b61122d600083836115ae565b806002600082825461123f9190611a5b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112949190611a5b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112f99190611791565b60405180910390a361130d600083836115b3565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e9061201f565b60405180910390fd5b611453826000836115ae565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906120b1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461153091906120d1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115959190611791565b60405180910390a36115a9836000846115b3565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115f25780820151818401526020810190506115d7565b83811115611601576000848401525b50505050565b6000601f19601f8301169050919050565b6000611623826115b8565b61162d81856115c3565b935061163d8185602086016115d4565b61164681611607565b840191505092915050565b6000602082019050818103600083015261166b8184611618565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116a382611678565b9050919050565b6116b381611698565b81146116be57600080fd5b50565b6000813590506116d0816116aa565b92915050565b6000819050919050565b6116e9816116d6565b81146116f457600080fd5b50565b600081359050611706816116e0565b92915050565b6000806040838503121561172357611722611673565b5b6000611731858286016116c1565b9250506020611742858286016116f7565b9150509250929050565b60008115159050919050565b6117618161174c565b82525050565b600060208201905061177c6000830184611758565b92915050565b61178b816116d6565b82525050565b60006020820190506117a66000830184611782565b92915050565b6000806000606084860312156117c5576117c4611673565b5b60006117d3868287016116c1565b93505060206117e4868287016116c1565b92505060406117f5868287016116f7565b9150509250925092565b60006020828403121561181557611814611673565b5b6000611823848285016116c1565b91505092915050565b600060ff82169050919050565b6118428161182c565b82525050565b600060208201905061185d6000830184611839565b92915050565b61186c81611698565b82525050565b60006020820190506118876000830184611863565b92915050565b600080604083850312156118a4576118a3611673565b5b60006118b2858286016116c1565b92505060206118c3858286016116c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061191457607f821691505b60208210811415611928576119276118cd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061198a6028836115c3565b91506119958261192e565b604082019050919050565b600060208201905081810360008301526119b98161197d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119f66020836115c3565b9150611a01826119c0565b602082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a66826116d6565b9150611a71836116d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aa657611aa5611a2c565b5b828201905092915050565b7f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960008201527f6e74657261637420776974682074686520636f6e747261637400000000000000602082015250565b6000611b0d6039836115c3565b9150611b1882611ab1565b604082019050919050565b60006020820190508181036000830152611b3c81611b00565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b9f6025836115c3565b9150611baa82611b43565b604082019050919050565b60006020820190508181036000830152611bce81611b92565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c316026836115c3565b9150611c3c82611bd5565b604082019050919050565b60006020820190508181036000830152611c6081611c24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cc36024836115c3565b9150611cce82611c67565b604082019050919050565b60006020820190508181036000830152611cf281611cb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d556022836115c3565b9150611d6082611cf9565b604082019050919050565b60006020820190508181036000830152611d8481611d48565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611de76025836115c3565b9150611df282611d8b565b604082019050919050565b60006020820190508181036000830152611e1681611dda565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e796023836115c3565b9150611e8482611e1d565b604082019050919050565b60006020820190508181036000830152611ea881611e6c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f0b6026836115c3565b9150611f1682611eaf565b604082019050919050565b60006020820190508181036000830152611f3a81611efe565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f77601f836115c3565b9150611f8282611f41565b602082019050919050565b60006020820190508181036000830152611fa681611f6a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120096021836115c3565b915061201482611fad565b604082019050919050565b6000602082019050818103600083015261203881611ffc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061209b6022836115c3565b91506120a68261203f565b604082019050919050565b600060208201905081810360008301526120ca8161208e565b9050919050565b60006120dc826116d6565b91506120e7836116d6565b9250828210156120fa576120f9611a2c565b5b82820390509291505056fea264697066735822122035351c088cd103ef826d8fb46876edc78db24a748e5c436bdc3b688828757b2764736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030a578063ac18de431461033a578063dd62ed3e14610356578063f2fde38b14610386578063fdff9b4d146103a257610121565b8063715018a6146102785780638da5cb5b1461028257806395d89b41146102a05780639dc29fac146102be578063a457c2d7146102da57610121565b80632d06177a116100f45780632d06177a146101c2578063313ce567146101de57806339509351146101fc57806340c10f191461022c57806370a082311461024857610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b9190611651565b60405180910390f35b61015e6004803603810190610159919061170c565b610464565b60405161016b9190611767565b60405180910390f35b61017c610482565b6040516101899190611791565b60405180910390f35b6101ac60048036038101906101a791906117ac565b61048c565b6040516101b99190611767565b60405180910390f35b6101dc60048036038101906101d791906117ff565b610584565b005b6101e661065b565b6040516101f39190611848565b60405180910390f35b6102166004803603810190610211919061170c565b610664565b6040516102239190611767565b60405180910390f35b6102466004803603810190610241919061170c565b610710565b005b610262600480360381019061025d91906117ff565b6107b1565b60405161026f9190611791565b60405180910390f35b6102806107f9565b005b61028a610881565b6040516102979190611872565b60405180910390f35b6102a86108ab565b6040516102b59190611651565b60405180910390f35b6102d860048036038101906102d3919061170c565b61093d565b005b6102f460048036038101906102ef919061170c565b6109de565b6040516103019190611767565b60405180910390f35b610324600480360381019061031f919061170c565b610ac9565b6040516103319190611767565b60405180910390f35b610354600480360381019061034f91906117ff565b610ae7565b005b610370600480360381019061036b919061188d565b610bbe565b60405161037d9190611791565b60405180910390f35b6103a0600480360381019061039b91906117ff565b610c45565b005b6103bc60048036038101906103b791906117ff565b610d3d565b6040516103c99190611767565b60405180910390f35b6060600380546103e1906118fc565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118fc565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d5d565b8484610d65565b6001905092915050565b6000600254905090565b6000610499848484610f30565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b906119a0565b60405180910390fd5b61057885610570610d5d565b858403610d65565b60019150509392505050565b61058c610d5d565b73ffffffffffffffffffffffffffffffffffffffff166105aa610881565b73ffffffffffffffffffffffffffffffffffffffff1614610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f790611a0c565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000610706610671610d5d565b84846001600061067f610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107019190611a5b565b610d65565b6001905092915050565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079a90611b23565b60405180910390fd5b6107ad82826111b1565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610801610d5d565b73ffffffffffffffffffffffffffffffffffffffff1661081f610881565b73ffffffffffffffffffffffffffffffffffffffff1614610875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086c90611a0c565b60405180910390fd5b61087f6000611311565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108ba906118fc565b80601f01602080910402602001604051908101604052809291908181526020018280546108e6906118fc565b80156109335780601f1061090857610100808354040283529160200191610933565b820191906000526020600020905b81548152906001019060200180831161091657829003601f168201915b5050505050905090565b60011515600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c790611b23565b60405180910390fd5b6109da82826113d7565b5050565b600080600160006109ed610d5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190611bb5565b60405180910390fd5b610abe610ab5610d5d565b85858403610d65565b600191505092915050565b6000610add610ad6610d5d565b8484610f30565b6001905092915050565b610aef610d5d565b73ffffffffffffffffffffffffffffffffffffffff16610b0d610881565b73ffffffffffffffffffffffffffffffffffffffff1614610b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5a90611a0c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c4d610d5d565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610881565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890611a0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890611c47565b60405180910390fd5b610d3a81611311565b50565b60066020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc90611cd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90611d6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f239190611791565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790611dfd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611010576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100790611e8f565b60405180910390fd5b61101b8383836115ae565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109890611f21565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111349190611a5b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111989190611791565b60405180910390a36111ab8484846115b3565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890611f8d565b60405180910390fd5b61122d600083836115ae565b806002600082825461123f9190611a5b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112949190611a5b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112f99190611791565b60405180910390a361130d600083836115b3565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e9061201f565b60405180910390fd5b611453826000836115ae565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906120b1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461153091906120d1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115959190611791565b60405180910390a36115a9836000846115b3565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115f25780820151818401526020810190506115d7565b83811115611601576000848401525b50505050565b6000601f19601f8301169050919050565b6000611623826115b8565b61162d81856115c3565b935061163d8185602086016115d4565b61164681611607565b840191505092915050565b6000602082019050818103600083015261166b8184611618565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116a382611678565b9050919050565b6116b381611698565b81146116be57600080fd5b50565b6000813590506116d0816116aa565b92915050565b6000819050919050565b6116e9816116d6565b81146116f457600080fd5b50565b600081359050611706816116e0565b92915050565b6000806040838503121561172357611722611673565b5b6000611731858286016116c1565b9250506020611742858286016116f7565b9150509250929050565b60008115159050919050565b6117618161174c565b82525050565b600060208201905061177c6000830184611758565b92915050565b61178b816116d6565b82525050565b60006020820190506117a66000830184611782565b92915050565b6000806000606084860312156117c5576117c4611673565b5b60006117d3868287016116c1565b93505060206117e4868287016116c1565b92505060406117f5868287016116f7565b9150509250925092565b60006020828403121561181557611814611673565b5b6000611823848285016116c1565b91505092915050565b600060ff82169050919050565b6118428161182c565b82525050565b600060208201905061185d6000830184611839565b92915050565b61186c81611698565b82525050565b60006020820190506118876000830184611863565b92915050565b600080604083850312156118a4576118a3611673565b5b60006118b2858286016116c1565b92505060206118c3858286016116c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061191457607f821691505b60208210811415611928576119276118cd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061198a6028836115c3565b91506119958261192e565b604082019050919050565b600060208201905081810360008301526119b98161197d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119f66020836115c3565b9150611a01826119c0565b602082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a66826116d6565b9150611a71836116d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611aa657611aa5611a2c565b5b828201905092915050565b7f546869732061646472657373206973206e6f7420616c6c6f77656420746f206960008201527f6e74657261637420776974682074686520636f6e747261637400000000000000602082015250565b6000611b0d6039836115c3565b9150611b1882611ab1565b604082019050919050565b60006020820190508181036000830152611b3c81611b00565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b9f6025836115c3565b9150611baa82611b43565b604082019050919050565b60006020820190508181036000830152611bce81611b92565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c316026836115c3565b9150611c3c82611bd5565b604082019050919050565b60006020820190508181036000830152611c6081611c24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611cc36024836115c3565b9150611cce82611c67565b604082019050919050565b60006020820190508181036000830152611cf281611cb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d556022836115c3565b9150611d6082611cf9565b604082019050919050565b60006020820190508181036000830152611d8481611d48565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611de76025836115c3565b9150611df282611d8b565b604082019050919050565b60006020820190508181036000830152611e1681611dda565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e796023836115c3565b9150611e8482611e1d565b604082019050919050565b60006020820190508181036000830152611ea881611e6c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f0b6026836115c3565b9150611f1682611eaf565b604082019050919050565b60006020820190508181036000830152611f3a81611efe565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611f77601f836115c3565b9150611f8282611f41565b602082019050919050565b60006020820190508181036000830152611fa681611f6a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006120096021836115c3565b915061201482611fad565b604082019050919050565b6000602082019050818103600083015261203881611ffc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061209b6022836115c3565b91506120a68261203f565b604082019050919050565b600060208201905081810360008301526120ca8161208e565b9050919050565b60006120dc826116d6565b91506120e7836116d6565b9250828210156120fa576120f9611a2c565b5b82820390509291505056fea264697066735822122035351c088cd103ef826d8fb46876edc78db24a748e5c436bdc3b688828757b2764736f6c63430008090033

Deployed Bytecode Sourcemap

19969:735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9942:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12109:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11062:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12760:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20073:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10904:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13661:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20295:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11233:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3363:103;;;:::i;:::-;;2712:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10161:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20500:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14379:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11573:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20182:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11811:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3621:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20024:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9942:100;9996:13;10029:5;10022:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9942:100;:::o;12109:169::-;12192:4;12209:39;12218:12;:10;:12::i;:::-;12232:7;12241:6;12209:8;:39::i;:::-;12266:4;12259:11;;12109:169;;;;:::o;11062:108::-;11123:7;11150:12;;11143:19;;11062:108;:::o;12760:492::-;12900:4;12917:36;12927:6;12935:9;12946:6;12917:9;:36::i;:::-;12966:24;12993:11;:19;13005:6;12993:19;;;;;;;;;;;;;;;:33;13013:12;:10;:12::i;:::-;12993:33;;;;;;;;;;;;;;;;12966:60;;13065:6;13045:16;:26;;13037:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;13152:57;13161:6;13169:12;:10;:12::i;:::-;13202:6;13183:16;:25;13152:8;:57::i;:::-;13240:4;13233:11;;;12760:492;;;;;:::o;20073:101::-;2943:12;:10;:12::i;:::-;2932:23;;:7;:5;:7::i;:::-;:23;;;2924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20162:4:::1;20141:8;:18;20150:8;20141:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20073:101:::0;:::o;10904:93::-;10962:5;10987:2;10980:9;;10904:93;:::o;13661:215::-;13749:4;13766:80;13775:12;:10;:12::i;:::-;13789:7;13835:10;13798:11;:25;13810:12;:10;:12::i;:::-;13798:25;;;;;;;;;;;;;;;:34;13824:7;13798:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13766:8;:80::i;:::-;13864:4;13857:11;;13661:215;;;;:::o;20295:197::-;20388:4;20364:28;;:8;:20;20373:10;20364:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;20356:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;20465:19;20471:3;20476:7;20465:5;:19::i;:::-;20295:197;;:::o;11233:127::-;11307:7;11334:9;:18;11344:7;11334:18;;;;;;;;;;;;;;;;11327:25;;11233:127;;;:::o;3363:103::-;2943:12;:10;:12::i;:::-;2932:23;;:7;:5;:7::i;:::-;:23;;;2924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3428:30:::1;3455:1;3428:18;:30::i;:::-;3363:103::o:0;2712:87::-;2758:7;2785:6;;;;;;;;;;;2778:13;;2712:87;:::o;10161:104::-;10217:13;10250:7;10243:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10161:104;:::o;20500:201::-;20595:4;20571:28;;:8;:20;20580:10;20571:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;20563:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;20672:21;20678:5;20685:7;20672:5;:21::i;:::-;20500:201;;:::o;14379:413::-;14472:4;14489:24;14516:11;:25;14528:12;:10;:12::i;:::-;14516:25;;;;;;;;;;;;;;;:34;14542:7;14516:34;;;;;;;;;;;;;;;;14489:61;;14589:15;14569:16;:35;;14561:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14682:67;14691:12;:10;:12::i;:::-;14705:7;14733:15;14714:16;:34;14682:8;:67::i;:::-;14780:4;14773:11;;;14379:413;;;;:::o;11573:175::-;11659:4;11676:42;11686:12;:10;:12::i;:::-;11700:9;11711:6;11676:9;:42::i;:::-;11736:4;11729:11;;11573:175;;;;:::o;20182:105::-;2943:12;:10;:12::i;:::-;2932:23;;:7;:5;:7::i;:::-;:23;;;2924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20274:5:::1;20253:8;:18;20262:8;20253:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20182:105:::0;:::o;11811:151::-;11900:7;11927:11;:18;11939:5;11927:18;;;;;;;;;;;;;;;:27;11946:7;11927:27;;;;;;;;;;;;;;;;11920:34;;11811:151;;;;:::o;3621:201::-;2943:12;:10;:12::i;:::-;2932:23;;:7;:5;:7::i;:::-;:23;;;2924:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3730:1:::1;3710:22;;:8;:22;;;;3702:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3786:28;3805:8;3786:18;:28::i;:::-;3621:201:::0;:::o;20024:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;1436:98::-;1489:7;1516:10;1509:17;;1436:98;:::o;18063:380::-;18216:1;18199:19;;:5;:19;;;;18191:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18297:1;18278:21;;:7;:21;;;;18270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:6;18351:11;:18;18363:5;18351:18;;;;;;;;;;;;;;;:27;18370:7;18351:27;;;;;;;;;;;;;;;:36;;;;18419:7;18403:32;;18412:5;18403:32;;;18428:6;18403:32;;;;;;:::i;:::-;;;;;;;;18063:380;;;:::o;15282:733::-;15440:1;15422:20;;:6;:20;;;;15414:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15524:1;15503:23;;:9;:23;;;;15495:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15579:47;15600:6;15608:9;15619:6;15579:20;:47::i;:::-;15639:21;15663:9;:17;15673:6;15663:17;;;;;;;;;;;;;;;;15639:41;;15716:6;15699:13;:23;;15691:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15837:6;15821:13;:22;15801:9;:17;15811:6;15801:17;;;;;;;;;;;;;;;:42;;;;15889:6;15865:9;:20;15875:9;15865:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15930:9;15913:35;;15922:6;15913:35;;;15941:6;15913:35;;;;;;:::i;:::-;;;;;;;;15961:46;15981:6;15989:9;16000:6;15961:19;:46::i;:::-;15403:612;15282:733;;;:::o;16302:399::-;16405:1;16386:21;;:7;:21;;;;16378:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16456:49;16485:1;16489:7;16498:6;16456:20;:49::i;:::-;16534:6;16518:12;;:22;;;;;;;:::i;:::-;;;;;;;;16573:6;16551:9;:18;16561:7;16551:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;16616:7;16595:37;;16612:1;16595:37;;;16625:6;16595:37;;;;;;:::i;:::-;;;;;;;;16645:48;16673:1;16677:7;16686:6;16645:19;:48::i;:::-;16302:399;;:::o;3982:191::-;4056:16;4075:6;;;;;;;;;;;4056:25;;4101:8;4092:6;;:17;;;;;;;;;;;;;;;;;;4156:8;4125:40;;4146:8;4125:40;;;;;;;;;;;;4045:128;3982:191;:::o;17034:591::-;17137:1;17118:21;;:7;:21;;;;17110:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17190:49;17211:7;17228:1;17232:6;17190:20;:49::i;:::-;17252:22;17277:9;:18;17287:7;17277:18;;;;;;;;;;;;;;;;17252:43;;17332:6;17314:14;:24;;17306:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:6;17434:14;:23;17413:9;:18;17423:7;17413:18;;;;;;;;;;;;;;;:44;;;;17495:6;17479:12;;:22;;;;;;;:::i;:::-;;;;;;;;17545:1;17519:37;;17528:7;17519:37;;;17549:6;17519:37;;;;;;:::i;:::-;;;;;;;;17569:48;17589:7;17606:1;17610:6;17569:19;:48::i;:::-;17099:526;17034:591;;:::o;19043:125::-;;;;:::o;19772: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:118::-;5323:24;5341:5;5323:24;:::i;:::-;5318:3;5311:37;5236:118;;:::o;5360:222::-;5453:4;5491:2;5480:9;5476:18;5468:26;;5504:71;5572:1;5561:9;5557:17;5548:6;5504:71;:::i;:::-;5360:222;;;;:::o;5588:474::-;5656:6;5664;5713:2;5701:9;5692:7;5688:23;5684:32;5681:119;;;5719:79;;:::i;:::-;5681:119;5839:1;5864:53;5909:7;5900:6;5889:9;5885:22;5864:53;:::i;:::-;5854:63;;5810:117;5966:2;5992:53;6037:7;6028:6;6017:9;6013:22;5992:53;:::i;:::-;5982:63;;5937:118;5588:474;;;;;:::o;6068:180::-;6116:77;6113:1;6106:88;6213:4;6210:1;6203:15;6237:4;6234:1;6227:15;6254:320;6298:6;6335:1;6329:4;6325:12;6315:22;;6382:1;6376:4;6372:12;6403:18;6393:81;;6459:4;6451:6;6447:17;6437:27;;6393:81;6521:2;6513:6;6510:14;6490:18;6487:38;6484:84;;;6540:18;;:::i;:::-;6484:84;6305:269;6254:320;;;:::o;6580:227::-;6720:34;6716:1;6708:6;6704:14;6697:58;6789:10;6784:2;6776:6;6772:15;6765:35;6580:227;:::o;6813:366::-;6955:3;6976:67;7040:2;7035:3;6976:67;:::i;:::-;6969:74;;7052:93;7141:3;7052:93;:::i;:::-;7170:2;7165:3;7161:12;7154:19;;6813:366;;;:::o;7185:419::-;7351:4;7389:2;7378:9;7374:18;7366:26;;7438:9;7432:4;7428:20;7424:1;7413:9;7409:17;7402:47;7466:131;7592:4;7466:131;:::i;:::-;7458:139;;7185:419;;;:::o;7610:182::-;7750:34;7746:1;7738:6;7734:14;7727:58;7610:182;:::o;7798:366::-;7940:3;7961:67;8025:2;8020:3;7961:67;:::i;:::-;7954:74;;8037:93;8126:3;8037:93;:::i;:::-;8155:2;8150:3;8146:12;8139:19;;7798:366;;;:::o;8170:419::-;8336:4;8374:2;8363:9;8359:18;8351:26;;8423:9;8417:4;8413:20;8409:1;8398:9;8394:17;8387:47;8451:131;8577:4;8451:131;:::i;:::-;8443:139;;8170:419;;;:::o;8595:180::-;8643:77;8640:1;8633:88;8740:4;8737:1;8730:15;8764:4;8761:1;8754:15;8781:305;8821:3;8840:20;8858:1;8840:20;:::i;:::-;8835:25;;8874:20;8892:1;8874:20;:::i;:::-;8869:25;;9028:1;8960:66;8956:74;8953:1;8950:81;8947:107;;;9034:18;;:::i;:::-;8947:107;9078:1;9075;9071:9;9064:16;;8781:305;;;;:::o;9092:244::-;9232:34;9228:1;9220:6;9216:14;9209:58;9301:27;9296:2;9288:6;9284:15;9277:52;9092:244;:::o;9342:366::-;9484:3;9505:67;9569:2;9564:3;9505:67;:::i;:::-;9498:74;;9581:93;9670:3;9581:93;:::i;:::-;9699:2;9694:3;9690:12;9683:19;;9342:366;;;:::o;9714:419::-;9880:4;9918:2;9907:9;9903:18;9895:26;;9967:9;9961:4;9957:20;9953:1;9942:9;9938:17;9931:47;9995:131;10121:4;9995:131;:::i;:::-;9987:139;;9714:419;;;:::o;10139:224::-;10279:34;10275:1;10267:6;10263:14;10256:58;10348:7;10343:2;10335:6;10331:15;10324:32;10139:224;:::o;10369:366::-;10511:3;10532:67;10596:2;10591:3;10532:67;:::i;:::-;10525:74;;10608:93;10697:3;10608:93;:::i;:::-;10726:2;10721:3;10717:12;10710:19;;10369:366;;;:::o;10741:419::-;10907:4;10945:2;10934:9;10930:18;10922:26;;10994:9;10988:4;10984:20;10980:1;10969:9;10965:17;10958:47;11022:131;11148:4;11022:131;:::i;:::-;11014:139;;10741:419;;;:::o;11166:225::-;11306:34;11302:1;11294:6;11290:14;11283:58;11375:8;11370:2;11362:6;11358:15;11351:33;11166:225;:::o;11397:366::-;11539:3;11560:67;11624:2;11619:3;11560:67;:::i;:::-;11553:74;;11636:93;11725:3;11636:93;:::i;:::-;11754:2;11749:3;11745:12;11738:19;;11397:366;;;:::o;11769:419::-;11935:4;11973:2;11962:9;11958:18;11950:26;;12022:9;12016:4;12012:20;12008:1;11997:9;11993:17;11986:47;12050:131;12176:4;12050:131;:::i;:::-;12042:139;;11769:419;;;:::o;12194:223::-;12334:34;12330:1;12322:6;12318:14;12311:58;12403:6;12398:2;12390:6;12386:15;12379:31;12194:223;:::o;12423:366::-;12565:3;12586:67;12650:2;12645:3;12586:67;:::i;:::-;12579:74;;12662:93;12751:3;12662:93;:::i;:::-;12780:2;12775:3;12771:12;12764:19;;12423:366;;;:::o;12795:419::-;12961:4;12999:2;12988:9;12984:18;12976:26;;13048:9;13042:4;13038:20;13034:1;13023:9;13019:17;13012:47;13076:131;13202:4;13076:131;:::i;:::-;13068:139;;12795:419;;;:::o;13220:221::-;13360:34;13356:1;13348:6;13344:14;13337:58;13429:4;13424:2;13416:6;13412:15;13405:29;13220:221;:::o;13447:366::-;13589:3;13610:67;13674:2;13669:3;13610:67;:::i;:::-;13603:74;;13686:93;13775:3;13686:93;:::i;:::-;13804:2;13799:3;13795:12;13788:19;;13447:366;;;:::o;13819:419::-;13985:4;14023:2;14012:9;14008:18;14000:26;;14072:9;14066:4;14062:20;14058:1;14047:9;14043:17;14036:47;14100:131;14226:4;14100:131;:::i;:::-;14092:139;;13819:419;;;:::o;14244:224::-;14384:34;14380:1;14372:6;14368:14;14361:58;14453:7;14448:2;14440:6;14436:15;14429:32;14244:224;:::o;14474:366::-;14616:3;14637:67;14701:2;14696:3;14637:67;:::i;:::-;14630:74;;14713:93;14802:3;14713:93;:::i;:::-;14831:2;14826:3;14822:12;14815:19;;14474:366;;;:::o;14846:419::-;15012:4;15050:2;15039:9;15035:18;15027:26;;15099:9;15093:4;15089:20;15085:1;15074:9;15070:17;15063:47;15127:131;15253:4;15127:131;:::i;:::-;15119:139;;14846:419;;;:::o;15271:222::-;15411:34;15407:1;15399:6;15395:14;15388:58;15480:5;15475:2;15467:6;15463:15;15456:30;15271:222;:::o;15499:366::-;15641:3;15662:67;15726:2;15721:3;15662:67;:::i;:::-;15655:74;;15738:93;15827:3;15738:93;:::i;:::-;15856:2;15851:3;15847:12;15840:19;;15499:366;;;:::o;15871:419::-;16037:4;16075:2;16064:9;16060:18;16052:26;;16124:9;16118:4;16114:20;16110:1;16099:9;16095:17;16088:47;16152:131;16278:4;16152:131;:::i;:::-;16144:139;;15871:419;;;:::o;16296:225::-;16436:34;16432:1;16424:6;16420:14;16413:58;16505:8;16500:2;16492:6;16488:15;16481:33;16296:225;:::o;16527:366::-;16669:3;16690:67;16754:2;16749:3;16690:67;:::i;:::-;16683:74;;16766:93;16855:3;16766:93;:::i;:::-;16884:2;16879:3;16875:12;16868:19;;16527:366;;;:::o;16899:419::-;17065:4;17103:2;17092:9;17088:18;17080:26;;17152:9;17146:4;17142:20;17138:1;17127:9;17123:17;17116:47;17180:131;17306:4;17180:131;:::i;:::-;17172:139;;16899:419;;;:::o;17324:181::-;17464:33;17460:1;17452:6;17448:14;17441:57;17324:181;:::o;17511:366::-;17653:3;17674:67;17738:2;17733:3;17674:67;:::i;:::-;17667:74;;17750:93;17839:3;17750:93;:::i;:::-;17868:2;17863:3;17859:12;17852:19;;17511:366;;;:::o;17883:419::-;18049:4;18087:2;18076:9;18072:18;18064:26;;18136:9;18130:4;18126:20;18122:1;18111:9;18107:17;18100:47;18164:131;18290:4;18164:131;:::i;:::-;18156:139;;17883:419;;;:::o;18308:220::-;18448:34;18444:1;18436:6;18432:14;18425:58;18517:3;18512:2;18504:6;18500:15;18493:28;18308:220;:::o;18534:366::-;18676:3;18697:67;18761:2;18756:3;18697:67;:::i;:::-;18690:74;;18773:93;18862:3;18773:93;:::i;:::-;18891:2;18886:3;18882:12;18875:19;;18534:366;;;:::o;18906:419::-;19072:4;19110:2;19099:9;19095:18;19087:26;;19159:9;19153:4;19149:20;19145:1;19134:9;19130:17;19123:47;19187:131;19313:4;19187:131;:::i;:::-;19179:139;;18906:419;;;:::o;19331:221::-;19471:34;19467:1;19459:6;19455:14;19448:58;19540:4;19535:2;19527:6;19523:15;19516:29;19331:221;:::o;19558:366::-;19700:3;19721:67;19785:2;19780:3;19721:67;:::i;:::-;19714:74;;19797:93;19886:3;19797:93;:::i;:::-;19915:2;19910:3;19906:12;19899:19;;19558:366;;;:::o;19930:419::-;20096:4;20134:2;20123:9;20119:18;20111:26;;20183:9;20177:4;20173:20;20169:1;20158:9;20154:17;20147:47;20211:131;20337:4;20211:131;:::i;:::-;20203:139;;19930:419;;;:::o;20355:191::-;20395:4;20415:20;20433:1;20415:20;:::i;:::-;20410:25;;20449:20;20467:1;20449:20;:::i;:::-;20444:25;;20488:1;20485;20482:8;20479:34;;;20493:18;;:::i;:::-;20479:34;20538:1;20535;20531:9;20523:17;;20355:191;;;;:::o

Swarm Source

ipfs://35351c088cd103ef826d8fb46876edc78db24a748e5c436bdc3b688828757b27
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.