ETH Price: $2,605.29 (-1.79%)

Token

ACGN Protocol (AIMEME)
 

Overview

Max Total Supply

20,000,000 AIMEME

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*你丫买的都是什么瘠薄玩意.eth
Balance
75,300.5772 AIMEME

Value
$0.00
0x76149d87A6bA9eA3c864d0643210e71393dD7777
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:
ACGNToken

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 2023-12-01
*/

// SPDX-License-Identifier: MIT

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/[email protected]


// 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/[email protected]


// 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/[email protected]


// 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/[email protected]


// 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 {}
}


pragma solidity ^0.8.0;


contract ACGNToken is Ownable, ERC20 {
    
    mapping(address => bool) public blacklists;

    constructor() ERC20("ACGN Protocol", "AIMEME") Ownable() {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","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":[],"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":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600d81526020017f4143474e2050726f746f636f6c000000000000000000000000000000000000008152506040518060400160405280600681526020017f41494d454d4500000000000000000000000000000000000000000000000000008152506200009e620000926200011860201b60201c565b6200012060201b60201c565b8160049080519060200190620000b692919062000458565b508060059080519060200190620000cf92919062000458565b5050506200011233620000e7620001e460201b60201c565b600a620000f59190620006a2565b633b9aca00620001069190620006f3565b620001ed60201b60201c565b62000939565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000260576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200025790620007b5565b60405180910390fd5b62000274600083836200036760201b60201c565b8060036000828254620002889190620007d7565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002e09190620007d7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000347919062000845565b60405180910390a362000363600083836200045360201b60201c565b5050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200040c5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6200044e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200044590620008b2565b60405180910390fd5b505050565b505050565b828054620004669062000903565b90600052602060002090601f0160209004810192826200048a5760008555620004d6565b82601f10620004a557805160ff1916838001178555620004d6565b82800160010185558215620004d6579182015b82811115620004d5578251825591602001919060010190620004b8565b5b509050620004e59190620004e9565b5090565b5b8082111562000504576000816000905550600101620004ea565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000596578086048111156200056e576200056d62000508565b5b60018516156200057e5780820291505b80810290506200058e8562000537565b94506200054e565b94509492505050565b600082620005b1576001905062000684565b81620005c1576000905062000684565b8160018114620005da5760028114620005e5576200061b565b600191505062000684565b60ff841115620005fa57620005f962000508565b5b8360020a91508482111562000614576200061362000508565b5b5062000684565b5060208310610133831016604e8410600b8410161715620006555782820a9050838111156200064f576200064e62000508565b5b62000684565b62000664848484600162000544565b925090508184048111156200067e576200067d62000508565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006af826200068b565b9150620006bc8362000695565b9250620006eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200059f565b905092915050565b600062000700826200068b565b91506200070d836200068b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000749576200074862000508565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200079d601f8362000754565b9150620007aa8262000765565b602082019050919050565b60006020820190508181036000830152620007d0816200078e565b9050919050565b6000620007e4826200068b565b9150620007f1836200068b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000829576200082862000508565b5b828201905092915050565b6200083f816200068b565b82525050565b60006020820190506200085c600083018462000834565b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006200089a600b8362000754565b9150620008a78262000862565b602082019050919050565b60006020820190508181036000830152620008cd816200088b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200091c57607f821691505b60208210811415620009335762000932620008d4565b5b50919050565b611e6e80620009496000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806342966c68116100a257806395d89b411161007157806395d89b41146102ba578063a457c2d7146102d8578063a9059cbb14610308578063dd62ed3e14610338578063f2fde38b146103685761010b565b806342966c681461024657806370a0823114610262578063715018a6146102925780638da5cb5b1461029c5761010b565b806323b872dd116100de57806323b872dd146101ac578063313ce567146101dc57806339509351146101fa578063404e51291461022a5761010b565b806306fdde0314610110578063095ea7b31461012e57806316c021291461015e57806318160ddd1461018e575b600080fd5b610118610384565b604051610125919061137d565b60405180910390f35b61014860048036038101906101439190611438565b610416565b6040516101559190611493565b60405180910390f35b610178600480360381019061017391906114ae565b610434565b6040516101859190611493565b60405180910390f35b610196610454565b6040516101a391906114ea565b60405180910390f35b6101c660048036038101906101c19190611505565b61045e565b6040516101d39190611493565b60405180910390f35b6101e4610556565b6040516101f19190611574565b60405180910390f35b610214600480360381019061020f9190611438565b61055f565b6040516102219190611493565b60405180910390f35b610244600480360381019061023f91906115bb565b61060b565b005b610260600480360381019061025b91906115fb565b6106e2565b005b61027c600480360381019061027791906114ae565b6106ef565b60405161028991906114ea565b60405180910390f35b61029a610738565b005b6102a46107c0565b6040516102b19190611637565b60405180910390f35b6102c26107e9565b6040516102cf919061137d565b60405180910390f35b6102f260048036038101906102ed9190611438565b61087b565b6040516102ff9190611493565b60405180910390f35b610322600480360381019061031d9190611438565b610966565b60405161032f9190611493565b60405180910390f35b610352600480360381019061034d9190611652565b610984565b60405161035f91906114ea565b60405180910390f35b610382600480360381019061037d91906114ae565b610a0b565b005b606060048054610393906116c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116c1565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b5050505050905090565b600061042a610423610b03565b8484610b0b565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b600061046b848484610cd6565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104b6610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052d90611765565b60405180910390fd5b61054a85610542610b03565b858403610b0b565b60019150509392505050565b60006012905090565b600061060161056c610b03565b84846002600061057a610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105fc91906117b4565b610b0b565b6001905092915050565b610613610b03565b73ffffffffffffffffffffffffffffffffffffffff166106316107c0565b73ffffffffffffffffffffffffffffffffffffffff1614610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90611856565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6106ec3382610f5a565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610740610b03565b73ffffffffffffffffffffffffffffffffffffffff1661075e6107c0565b73ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90611856565b60405180910390fd5b6107be6000611133565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107f8906116c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610824906116c1565b80156108715780601f1061084657610100808354040283529160200191610871565b820191906000526020600020905b81548152906001019060200180831161085457829003601f168201915b5050505050905090565b6000806002600061088a610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e906118e8565b60405180910390fd5b61095b610952610b03565b85858403610b0b565b600191505092915050565b600061097a610973610b03565b8484610cd6565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a13610b03565b73ffffffffffffffffffffffffffffffffffffffff16610a316107c0565b73ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90611856565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee9061197a565b60405180910390fd5b610b0081611133565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7290611a0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290611a9e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc991906114ea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90611b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90611bc2565b60405180910390fd5b610dc18383836111f7565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f90611c54565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610edd91906117b4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4191906114ea565b60405180910390a3610f548484846112df565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190611ce6565b60405180910390fd5b610fd6826000836111f7565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490611d78565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546110b59190611d98565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111a91906114ea565b60405180910390a361112e836000846112df565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561129b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190611e18565b60405180910390fd5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561131e578082015181840152602081019050611303565b8381111561132d576000848401525b50505050565b6000601f19601f8301169050919050565b600061134f826112e4565b61135981856112ef565b9350611369818560208601611300565b61137281611333565b840191505092915050565b600060208201905081810360008301526113978184611344565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113cf826113a4565b9050919050565b6113df816113c4565b81146113ea57600080fd5b50565b6000813590506113fc816113d6565b92915050565b6000819050919050565b61141581611402565b811461142057600080fd5b50565b6000813590506114328161140c565b92915050565b6000806040838503121561144f5761144e61139f565b5b600061145d858286016113ed565b925050602061146e85828601611423565b9150509250929050565b60008115159050919050565b61148d81611478565b82525050565b60006020820190506114a86000830184611484565b92915050565b6000602082840312156114c4576114c361139f565b5b60006114d2848285016113ed565b91505092915050565b6114e481611402565b82525050565b60006020820190506114ff60008301846114db565b92915050565b60008060006060848603121561151e5761151d61139f565b5b600061152c868287016113ed565b935050602061153d868287016113ed565b925050604061154e86828701611423565b9150509250925092565b600060ff82169050919050565b61156e81611558565b82525050565b60006020820190506115896000830184611565565b92915050565b61159881611478565b81146115a357600080fd5b50565b6000813590506115b58161158f565b92915050565b600080604083850312156115d2576115d161139f565b5b60006115e0858286016113ed565b92505060206115f1858286016115a6565b9150509250929050565b6000602082840312156116115761161061139f565b5b600061161f84828501611423565b91505092915050565b611631816113c4565b82525050565b600060208201905061164c6000830184611628565b92915050565b600080604083850312156116695761166861139f565b5b6000611677858286016113ed565b9250506020611688858286016113ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116d957607f821691505b602082108114156116ed576116ec611692565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061174f6028836112ef565b915061175a826116f3565b604082019050919050565b6000602082019050818103600083015261177e81611742565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117bf82611402565b91506117ca83611402565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ff576117fe611785565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118406020836112ef565b915061184b8261180a565b602082019050919050565b6000602082019050818103600083015261186f81611833565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118d26025836112ef565b91506118dd82611876565b604082019050919050565b60006020820190508181036000830152611901816118c5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119646026836112ef565b915061196f82611908565b604082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119f66024836112ef565b9150611a018261199a565b604082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a886022836112ef565b9150611a9382611a2c565b604082019050919050565b60006020820190508181036000830152611ab781611a7b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b1a6025836112ef565b9150611b2582611abe565b604082019050919050565b60006020820190508181036000830152611b4981611b0d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bac6023836112ef565b9150611bb782611b50565b604082019050919050565b60006020820190508181036000830152611bdb81611b9f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c3e6026836112ef565b9150611c4982611be2565b604082019050919050565b60006020820190508181036000830152611c6d81611c31565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611cd06021836112ef565b9150611cdb82611c74565b604082019050919050565b60006020820190508181036000830152611cff81611cc3565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d626022836112ef565b9150611d6d82611d06565b604082019050919050565b60006020820190508181036000830152611d9181611d55565b9050919050565b6000611da382611402565b9150611dae83611402565b925082821015611dc157611dc0611785565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000611e02600b836112ef565b9150611e0d82611dcc565b602082019050919050565b60006020820190508181036000830152611e3181611df5565b905091905056fea2646970667358221220579ec1fbfe1db4198b7c249e5952c94785391aba6b63aa790f7f93ed6f453d5b64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806342966c68116100a257806395d89b411161007157806395d89b41146102ba578063a457c2d7146102d8578063a9059cbb14610308578063dd62ed3e14610338578063f2fde38b146103685761010b565b806342966c681461024657806370a0823114610262578063715018a6146102925780638da5cb5b1461029c5761010b565b806323b872dd116100de57806323b872dd146101ac578063313ce567146101dc57806339509351146101fa578063404e51291461022a5761010b565b806306fdde0314610110578063095ea7b31461012e57806316c021291461015e57806318160ddd1461018e575b600080fd5b610118610384565b604051610125919061137d565b60405180910390f35b61014860048036038101906101439190611438565b610416565b6040516101559190611493565b60405180910390f35b610178600480360381019061017391906114ae565b610434565b6040516101859190611493565b60405180910390f35b610196610454565b6040516101a391906114ea565b60405180910390f35b6101c660048036038101906101c19190611505565b61045e565b6040516101d39190611493565b60405180910390f35b6101e4610556565b6040516101f19190611574565b60405180910390f35b610214600480360381019061020f9190611438565b61055f565b6040516102219190611493565b60405180910390f35b610244600480360381019061023f91906115bb565b61060b565b005b610260600480360381019061025b91906115fb565b6106e2565b005b61027c600480360381019061027791906114ae565b6106ef565b60405161028991906114ea565b60405180910390f35b61029a610738565b005b6102a46107c0565b6040516102b19190611637565b60405180910390f35b6102c26107e9565b6040516102cf919061137d565b60405180910390f35b6102f260048036038101906102ed9190611438565b61087b565b6040516102ff9190611493565b60405180910390f35b610322600480360381019061031d9190611438565b610966565b60405161032f9190611493565b60405180910390f35b610352600480360381019061034d9190611652565b610984565b60405161035f91906114ea565b60405180910390f35b610382600480360381019061037d91906114ae565b610a0b565b005b606060048054610393906116c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103bf906116c1565b801561040c5780601f106103e15761010080835404028352916020019161040c565b820191906000526020600020905b8154815290600101906020018083116103ef57829003601f168201915b5050505050905090565b600061042a610423610b03565b8484610b0b565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b600061046b848484610cd6565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104b6610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052d90611765565b60405180910390fd5b61054a85610542610b03565b858403610b0b565b60019150509392505050565b60006012905090565b600061060161056c610b03565b84846002600061057a610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105fc91906117b4565b610b0b565b6001905092915050565b610613610b03565b73ffffffffffffffffffffffffffffffffffffffff166106316107c0565b73ffffffffffffffffffffffffffffffffffffffff1614610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90611856565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6106ec3382610f5a565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610740610b03565b73ffffffffffffffffffffffffffffffffffffffff1661075e6107c0565b73ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90611856565b60405180910390fd5b6107be6000611133565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107f8906116c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610824906116c1565b80156108715780601f1061084657610100808354040283529160200191610871565b820191906000526020600020905b81548152906001019060200180831161085457829003601f168201915b5050505050905090565b6000806002600061088a610b03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e906118e8565b60405180910390fd5b61095b610952610b03565b85858403610b0b565b600191505092915050565b600061097a610973610b03565b8484610cd6565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a13610b03565b73ffffffffffffffffffffffffffffffffffffffff16610a316107c0565b73ffffffffffffffffffffffffffffffffffffffff1614610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e90611856565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee9061197a565b60405180910390fd5b610b0081611133565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7290611a0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290611a9e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610cc991906114ea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3d90611b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90611bc2565b60405180910390fd5b610dc18383836111f7565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3f90611c54565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610edd91906117b4565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4191906114ea565b60405180910390a3610f548484846112df565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190611ce6565b60405180910390fd5b610fd6826000836111f7565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561105d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105490611d78565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546110b59190611d98565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161111a91906114ea565b60405180910390a361112e836000846112df565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561129b5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190611e18565b60405180910390fd5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561131e578082015181840152602081019050611303565b8381111561132d576000848401525b50505050565b6000601f19601f8301169050919050565b600061134f826112e4565b61135981856112ef565b9350611369818560208601611300565b61137281611333565b840191505092915050565b600060208201905081810360008301526113978184611344565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113cf826113a4565b9050919050565b6113df816113c4565b81146113ea57600080fd5b50565b6000813590506113fc816113d6565b92915050565b6000819050919050565b61141581611402565b811461142057600080fd5b50565b6000813590506114328161140c565b92915050565b6000806040838503121561144f5761144e61139f565b5b600061145d858286016113ed565b925050602061146e85828601611423565b9150509250929050565b60008115159050919050565b61148d81611478565b82525050565b60006020820190506114a86000830184611484565b92915050565b6000602082840312156114c4576114c361139f565b5b60006114d2848285016113ed565b91505092915050565b6114e481611402565b82525050565b60006020820190506114ff60008301846114db565b92915050565b60008060006060848603121561151e5761151d61139f565b5b600061152c868287016113ed565b935050602061153d868287016113ed565b925050604061154e86828701611423565b9150509250925092565b600060ff82169050919050565b61156e81611558565b82525050565b60006020820190506115896000830184611565565b92915050565b61159881611478565b81146115a357600080fd5b50565b6000813590506115b58161158f565b92915050565b600080604083850312156115d2576115d161139f565b5b60006115e0858286016113ed565b92505060206115f1858286016115a6565b9150509250929050565b6000602082840312156116115761161061139f565b5b600061161f84828501611423565b91505092915050565b611631816113c4565b82525050565b600060208201905061164c6000830184611628565b92915050565b600080604083850312156116695761166861139f565b5b6000611677858286016113ed565b9250506020611688858286016113ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116d957607f821691505b602082108114156116ed576116ec611692565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061174f6028836112ef565b915061175a826116f3565b604082019050919050565b6000602082019050818103600083015261177e81611742565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117bf82611402565b91506117ca83611402565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117ff576117fe611785565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118406020836112ef565b915061184b8261180a565b602082019050919050565b6000602082019050818103600083015261186f81611833565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118d26025836112ef565b91506118dd82611876565b604082019050919050565b60006020820190508181036000830152611901816118c5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119646026836112ef565b915061196f82611908565b604082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119f66024836112ef565b9150611a018261199a565b604082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a886022836112ef565b9150611a9382611a2c565b604082019050919050565b60006020820190508181036000830152611ab781611a7b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b1a6025836112ef565b9150611b2582611abe565b604082019050919050565b60006020820190508181036000830152611b4981611b0d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bac6023836112ef565b9150611bb782611b50565b604082019050919050565b60006020820190508181036000830152611bdb81611b9f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c3e6026836112ef565b9150611c4982611be2565b604082019050919050565b60006020820190508181036000830152611c6d81611c31565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611cd06021836112ef565b9150611cdb82611c74565b604082019050919050565b60006020820190508181036000830152611cff81611cc3565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d626022836112ef565b9150611d6d82611d06565b604082019050919050565b60006020820190508181036000830152611d9181611d55565b9050919050565b6000611da382611402565b9150611dae83611402565b925082821015611dc157611dc0611785565b5b828203905092915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000611e02600b836112ef565b9150611e0d82611dcc565b602082019050919050565b60006020820190508181036000830152611e3181611df5565b905091905056fea2646970667358221220579ec1fbfe1db4198b7c249e5952c94785391aba6b63aa790f7f93ed6f453d5b64736f6c63430008090033

Deployed Bytecode Sourcemap

19126:679:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9134:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11301:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19176:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10254:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11952:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10096:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12853:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19359:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19721:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10425:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2535:103;;;:::i;:::-;;1884:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9353:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13571:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10765:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11003:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2793:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9134:100;9188:13;9221:5;9214:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9134:100;:::o;11301:169::-;11384:4;11401:39;11410:12;:10;:12::i;:::-;11424:7;11433:6;11401:8;:39::i;:::-;11458:4;11451:11;;11301:169;;;;:::o;19176:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10254:108::-;10315:7;10342:12;;10335:19;;10254:108;:::o;11952:492::-;12092:4;12109:36;12119:6;12127:9;12138:6;12109:9;:36::i;:::-;12158:24;12185:11;:19;12197:6;12185:19;;;;;;;;;;;;;;;:33;12205:12;:10;:12::i;:::-;12185:33;;;;;;;;;;;;;;;;12158:60;;12257:6;12237:16;:26;;12229:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12344:57;12353:6;12361:12;:10;:12::i;:::-;12394:6;12375:16;:25;12344:8;:57::i;:::-;12432:4;12425:11;;;11952:492;;;;;:::o;10096:93::-;10154:5;10179:2;10172:9;;10096:93;:::o;12853:215::-;12941:4;12958:80;12967:12;:10;:12::i;:::-;12981:7;13027:10;12990:11;:25;13002:12;:10;:12::i;:::-;12990:25;;;;;;;;;;;;;;;:34;13016:7;12990:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12958:8;:80::i;:::-;13056:4;13049:11;;12853:215;;;;:::o;19359:135::-;2115:12;:10;:12::i;:::-;2104:23;;:7;:5;:7::i;:::-;:23;;;2096:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19471:15:::1;19448:10;:20;19459:8;19448:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19359:135:::0;;:::o;19721:81::-;19770:24;19776:10;19788:5;19770;:24::i;:::-;19721:81;:::o;10425:127::-;10499:7;10526:9;:18;10536:7;10526:18;;;;;;;;;;;;;;;;10519:25;;10425:127;;;:::o;2535:103::-;2115:12;:10;:12::i;:::-;2104:23;;:7;:5;:7::i;:::-;:23;;;2096:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2600:30:::1;2627:1;2600:18;:30::i;:::-;2535:103::o:0;1884:87::-;1930:7;1957:6;;;;;;;;;;;1950:13;;1884:87;:::o;9353:104::-;9409:13;9442:7;9435:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9353:104;:::o;13571:413::-;13664:4;13681:24;13708:11;:25;13720:12;:10;:12::i;:::-;13708:25;;;;;;;;;;;;;;;:34;13734:7;13708:34;;;;;;;;;;;;;;;;13681:61;;13781:15;13761:16;:35;;13753:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13874:67;13883:12;:10;:12::i;:::-;13897:7;13925:15;13906:16;:34;13874:8;:67::i;:::-;13972:4;13965:11;;;13571:413;;;;:::o;10765:175::-;10851:4;10868:42;10878:12;:10;:12::i;:::-;10892:9;10903:6;10868:9;:42::i;:::-;10928:4;10921:11;;10765:175;;;;:::o;11003:151::-;11092:7;11119:11;:18;11131:5;11119:18;;;;;;;;;;;;;;;:27;11138:7;11119:27;;;;;;;;;;;;;;;;11112:34;;11003:151;;;;:::o;2793:201::-;2115:12;:10;:12::i;:::-;2104:23;;:7;:5;:7::i;:::-;:23;;;2096:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2902:1:::1;2882:22;;:8;:22;;;;2874:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2958:28;2977:8;2958:18;:28::i;:::-;2793:201:::0;:::o;602:98::-;655:7;682:10;675:17;;602:98;:::o;17255:380::-;17408:1;17391:19;;:5;:19;;;;17383:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:1;17470:21;;:7;:21;;;;17462:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17573:6;17543:11;:18;17555:5;17543:18;;;;;;;;;;;;;;;:27;17562:7;17543:27;;;;;;;;;;;;;;;:36;;;;17611:7;17595:32;;17604:5;17595:32;;;17620:6;17595:32;;;;;;:::i;:::-;;;;;;;;17255:380;;;:::o;14474:733::-;14632:1;14614:20;;:6;:20;;;;14606:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14716:1;14695:23;;:9;:23;;;;14687:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14771:47;14792:6;14800:9;14811:6;14771:20;:47::i;:::-;14831:21;14855:9;:17;14865:6;14855:17;;;;;;;;;;;;;;;;14831:41;;14908:6;14891:13;:23;;14883:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15029:6;15013:13;:22;14993:9;:17;15003:6;14993:17;;;;;;;;;;;;;;;:42;;;;15081:6;15057:9;:20;15067:9;15057:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15122:9;15105:35;;15114:6;15105:35;;;15133:6;15105:35;;;;;;:::i;:::-;;;;;;;;15153:46;15173:6;15181:9;15192:6;15153:19;:46::i;:::-;14595:612;14474:733;;;:::o;16226:591::-;16329:1;16310:21;;:7;:21;;;;16302:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16382:49;16403:7;16420:1;16424:6;16382:20;:49::i;:::-;16444:22;16469:9;:18;16479:7;16469:18;;;;;;;;;;;;;;;;16444:43;;16524:6;16506:14;:24;;16498:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16643:6;16626:14;:23;16605:9;:18;16615:7;16605:18;;;;;;;;;;;;;;;:44;;;;16687:6;16671:12;;:22;;;;;;;:::i;:::-;;;;;;;;16737:1;16711:37;;16720:7;16711:37;;;16741:6;16711:37;;;;;;:::i;:::-;;;;;;;;16761:48;16781:7;16798:1;16802:6;16761:19;:48::i;:::-;16291:526;16226:591;;:::o;3154:191::-;3228:16;3247:6;;;;;;;;;;;3228:25;;3273:8;3264:6;;:17;;;;;;;;;;;;;;;;;;3328:8;3297:40;;3318:8;3297:40;;;;;;;;;;;;3217:128;3154:191;:::o;19502:211::-;19654:10;:14;19665:2;19654:14;;;;;;;;;;;;;;;;;;;;;;;;;19653:15;:36;;;;;19673:10;:16;19684:4;19673:16;;;;;;;;;;;;;;;;;;;;;;;;;19672:17;19653:36;19645:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19502:211;;;:::o;18964: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:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::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:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:468::-;5562:6;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:119;;;5625:79;;:::i;:::-;5587:119;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5872:2;5898:50;5940:7;5931:6;5920:9;5916:22;5898:50;:::i;:::-;5888:60;;5843:115;5497:468;;;;;:::o;5971:329::-;6030:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:119;;;6085:79;;:::i;:::-;6047:119;6205:1;6230:53;6275:7;6266:6;6255:9;6251:22;6230:53;:::i;:::-;6220:63;;6176:117;5971:329;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:474::-;6726:6;6734;6783:2;6771:9;6762:7;6758:23;6754:32;6751:119;;;6789:79;;:::i;:::-;6751:119;6909:1;6934:53;6979:7;6970:6;6959:9;6955:22;6934:53;:::i;:::-;6924:63;;6880:117;7036:2;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7007:118;6658:474;;;;;:::o;7138:180::-;7186:77;7183:1;7176:88;7283:4;7280:1;7273:15;7307:4;7304:1;7297:15;7324:320;7368:6;7405:1;7399:4;7395:12;7385:22;;7452:1;7446:4;7442:12;7473:18;7463:81;;7529:4;7521:6;7517:17;7507:27;;7463:81;7591:2;7583:6;7580:14;7560:18;7557:38;7554:84;;;7610:18;;:::i;:::-;7554:84;7375:269;7324:320;;;:::o;7650:227::-;7790:34;7786:1;7778:6;7774:14;7767:58;7859:10;7854:2;7846:6;7842:15;7835:35;7650:227;:::o;7883:366::-;8025:3;8046:67;8110:2;8105:3;8046:67;:::i;:::-;8039:74;;8122:93;8211:3;8122:93;:::i;:::-;8240:2;8235:3;8231:12;8224:19;;7883:366;;;:::o;8255:419::-;8421:4;8459:2;8448:9;8444:18;8436:26;;8508:9;8502:4;8498:20;8494:1;8483:9;8479:17;8472:47;8536:131;8662:4;8536:131;:::i;:::-;8528:139;;8255:419;;;:::o;8680:180::-;8728:77;8725:1;8718:88;8825:4;8822:1;8815:15;8849:4;8846:1;8839:15;8866:305;8906:3;8925:20;8943:1;8925:20;:::i;:::-;8920:25;;8959:20;8977:1;8959:20;:::i;:::-;8954:25;;9113:1;9045:66;9041:74;9038:1;9035:81;9032:107;;;9119:18;;:::i;:::-;9032:107;9163:1;9160;9156:9;9149:16;;8866:305;;;;:::o;9177:182::-;9317:34;9313:1;9305:6;9301:14;9294:58;9177:182;:::o;9365:366::-;9507:3;9528:67;9592:2;9587:3;9528:67;:::i;:::-;9521:74;;9604:93;9693:3;9604:93;:::i;:::-;9722:2;9717:3;9713:12;9706:19;;9365:366;;;:::o;9737:419::-;9903:4;9941:2;9930:9;9926:18;9918:26;;9990:9;9984:4;9980:20;9976:1;9965:9;9961:17;9954:47;10018:131;10144:4;10018:131;:::i;:::-;10010:139;;9737:419;;;:::o;10162:224::-;10302:34;10298:1;10290:6;10286:14;10279:58;10371:7;10366:2;10358:6;10354:15;10347:32;10162:224;:::o;10392:366::-;10534:3;10555:67;10619:2;10614:3;10555:67;:::i;:::-;10548:74;;10631:93;10720:3;10631:93;:::i;:::-;10749:2;10744:3;10740:12;10733:19;;10392:366;;;:::o;10764:419::-;10930:4;10968:2;10957:9;10953:18;10945:26;;11017:9;11011:4;11007:20;11003:1;10992:9;10988:17;10981:47;11045:131;11171:4;11045:131;:::i;:::-;11037:139;;10764:419;;;:::o;11189:225::-;11329:34;11325:1;11317:6;11313:14;11306:58;11398:8;11393:2;11385:6;11381:15;11374:33;11189:225;:::o;11420:366::-;11562:3;11583:67;11647:2;11642:3;11583:67;:::i;:::-;11576:74;;11659:93;11748:3;11659:93;:::i;:::-;11777:2;11772:3;11768:12;11761:19;;11420:366;;;:::o;11792:419::-;11958:4;11996:2;11985:9;11981:18;11973:26;;12045:9;12039:4;12035:20;12031:1;12020:9;12016:17;12009:47;12073:131;12199:4;12073:131;:::i;:::-;12065:139;;11792:419;;;:::o;12217:223::-;12357:34;12353:1;12345:6;12341:14;12334:58;12426:6;12421:2;12413:6;12409:15;12402:31;12217:223;:::o;12446:366::-;12588:3;12609:67;12673:2;12668:3;12609:67;:::i;:::-;12602:74;;12685:93;12774:3;12685:93;:::i;:::-;12803:2;12798:3;12794:12;12787:19;;12446:366;;;:::o;12818:419::-;12984:4;13022:2;13011:9;13007:18;12999:26;;13071:9;13065:4;13061:20;13057:1;13046:9;13042:17;13035:47;13099:131;13225:4;13099:131;:::i;:::-;13091:139;;12818:419;;;:::o;13243:221::-;13383:34;13379:1;13371:6;13367:14;13360:58;13452:4;13447:2;13439:6;13435:15;13428:29;13243:221;:::o;13470:366::-;13612:3;13633:67;13697:2;13692:3;13633:67;:::i;:::-;13626:74;;13709:93;13798:3;13709:93;:::i;:::-;13827:2;13822:3;13818:12;13811:19;;13470:366;;;:::o;13842:419::-;14008:4;14046:2;14035:9;14031:18;14023:26;;14095:9;14089:4;14085:20;14081:1;14070:9;14066:17;14059:47;14123:131;14249:4;14123:131;:::i;:::-;14115:139;;13842:419;;;:::o;14267:224::-;14407:34;14403:1;14395:6;14391:14;14384:58;14476:7;14471:2;14463:6;14459:15;14452:32;14267:224;:::o;14497:366::-;14639:3;14660:67;14724:2;14719:3;14660:67;:::i;:::-;14653:74;;14736:93;14825:3;14736:93;:::i;:::-;14854:2;14849:3;14845:12;14838:19;;14497:366;;;:::o;14869:419::-;15035:4;15073:2;15062:9;15058:18;15050:26;;15122:9;15116:4;15112:20;15108:1;15097:9;15093:17;15086:47;15150:131;15276:4;15150:131;:::i;:::-;15142:139;;14869:419;;;:::o;15294:222::-;15434:34;15430:1;15422:6;15418:14;15411:58;15503:5;15498:2;15490:6;15486:15;15479:30;15294:222;:::o;15522:366::-;15664:3;15685:67;15749:2;15744:3;15685:67;:::i;:::-;15678:74;;15761:93;15850:3;15761:93;:::i;:::-;15879:2;15874:3;15870:12;15863:19;;15522:366;;;:::o;15894:419::-;16060:4;16098:2;16087:9;16083:18;16075:26;;16147:9;16141:4;16137:20;16133:1;16122:9;16118:17;16111:47;16175:131;16301:4;16175:131;:::i;:::-;16167:139;;15894:419;;;:::o;16319:225::-;16459:34;16455:1;16447:6;16443:14;16436:58;16528:8;16523:2;16515:6;16511:15;16504:33;16319:225;:::o;16550:366::-;16692:3;16713:67;16777:2;16772:3;16713:67;:::i;:::-;16706:74;;16789:93;16878:3;16789:93;:::i;:::-;16907:2;16902:3;16898:12;16891:19;;16550:366;;;:::o;16922:419::-;17088:4;17126:2;17115:9;17111:18;17103:26;;17175:9;17169:4;17165:20;17161:1;17150:9;17146:17;17139:47;17203:131;17329:4;17203:131;:::i;:::-;17195:139;;16922:419;;;:::o;17347:220::-;17487:34;17483:1;17475:6;17471:14;17464:58;17556:3;17551:2;17543:6;17539:15;17532:28;17347:220;:::o;17573:366::-;17715:3;17736:67;17800:2;17795:3;17736:67;:::i;:::-;17729:74;;17812:93;17901:3;17812:93;:::i;:::-;17930:2;17925:3;17921:12;17914:19;;17573:366;;;:::o;17945:419::-;18111:4;18149:2;18138:9;18134:18;18126:26;;18198:9;18192:4;18188:20;18184:1;18173:9;18169:17;18162:47;18226:131;18352:4;18226:131;:::i;:::-;18218:139;;17945:419;;;:::o;18370:221::-;18510:34;18506:1;18498:6;18494:14;18487:58;18579:4;18574:2;18566:6;18562:15;18555:29;18370:221;:::o;18597:366::-;18739:3;18760:67;18824:2;18819:3;18760:67;:::i;:::-;18753:74;;18836:93;18925:3;18836:93;:::i;:::-;18954:2;18949:3;18945:12;18938:19;;18597:366;;;:::o;18969:419::-;19135:4;19173:2;19162:9;19158:18;19150:26;;19222:9;19216:4;19212:20;19208:1;19197:9;19193:17;19186:47;19250:131;19376:4;19250:131;:::i;:::-;19242:139;;18969:419;;;:::o;19394:191::-;19434:4;19454:20;19472:1;19454:20;:::i;:::-;19449:25;;19488:20;19506:1;19488:20;:::i;:::-;19483:25;;19527:1;19524;19521:8;19518:34;;;19532:18;;:::i;:::-;19518:34;19577:1;19574;19570:9;19562:17;;19394:191;;;;:::o;19591:161::-;19731:13;19727:1;19719:6;19715:14;19708:37;19591:161;:::o;19758:366::-;19900:3;19921:67;19985:2;19980:3;19921:67;:::i;:::-;19914:74;;19997:93;20086:3;19997:93;:::i;:::-;20115:2;20110:3;20106:12;20099:19;;19758:366;;;:::o;20130:419::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o

Swarm Source

ipfs://579ec1fbfe1db4198b7c249e5952c94785391aba6b63aa790f7f93ed6f453d5b
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.