ETH Price: $2,472.77 (+0.74%)
Gas: 3.83 Gwei
 

Overview

Max Total Supply

88,888,888 TSUKATAMA

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
422,399.04 TSUKATAMA

Value
$0.00
0xe04cf891321ba0ab1a5e50e7d9bfaf58397d6684
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:
Tsukatama

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
www.tsukatama.com
██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
█░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░██░░░░░░█░░░░░░██░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░██████████░░░░░░█░░░░░░░░░░░░░░█
█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░░░░░░░░░░░░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█
█░░░░░░▄▀░░░░░░█░░▄▀░░░░░░░░░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░░░█░░▄▀░░░░░░▄▀░░█░░░░░░▄▀░░░░░░█░░▄▀░░░░░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░░░░░▄▀░░█
█████░░▄▀░░█████░░▄▀░░█████████░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░███░░▄▀░░██░░▄▀░░█████░░▄▀░░█████░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░█
█████░░▄▀░░█████░░▄▀░░░░░░░░░░█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░███░░▄▀░░░░░░▄▀░░█████░░▄▀░░█████░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█
█████░░▄▀░░█████░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░███░░▄▀▄▀▄▀▄▀▄▀░░█████░░▄▀░░█████░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀░░██░░▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█
█████░░▄▀░░█████░░░░░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░███░░▄▀░░░░░░▄▀░░█████░░▄▀░░█████░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░░░░░██░░▄▀░░█░░▄▀░░░░░░▄▀░░█
█████░░▄▀░░█████████████░░▄▀░░█░░▄▀░░██░░▄▀░░█░░▄▀░░██░░▄▀░░███░░▄▀░░██░░▄▀░░█████░░▄▀░░█████░░▄▀░░██░░▄▀░░█░░▄▀░░██████████░░▄▀░░█░░▄▀░░██░░▄▀░░█
█████░░▄▀░░█████░░░░░░░░░░▄▀░░█░░▄▀░░░░░░▄▀░░█░░▄▀░░██░░▄▀░░░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████░░▄▀░░██░░▄▀░░█░░▄▀░░██████████░░▄▀░░█░░▄▀░░██░░▄▀░░█
█████░░▄▀░░█████░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀▄▀▄▀▄▀▄▀░░█░░▄▀░░██░░▄▀▄▀░░█░░▄▀░░██░░▄▀░░█████░░▄▀░░█████░░▄▀░░██░░▄▀░░█░░▄▀░░██████████░░▄▀░░█░░▄▀░░██░░▄▀░░█
█████░░░░░░█████░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░░░░██░░░░░░░░█░░░░░░██░░░░░░█████░░░░░░█████░░░░░░██░░░░░░█░░░░░░██████████░░░░░░█░░░░░░██░░░░░░█
██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function allPairsLength() external view returns (uint256);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

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

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/**
 * @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 decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
}

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

/**
 * @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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

/**
 * @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 Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @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)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @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)
        external
        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
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        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)
        external
        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 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)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        _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);
    }

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

        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);
    }

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

    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");

        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;
        }

        emit Transfer(from, to, amount);
    }
}

contract Tsukatama is ERC20, Ownable {
    address public immutable uniswapV2Pair;
    IUniswapV2Router02 public immutable uniswapV2Router;

    struct TaxAddress {
        address marketing;
        address development;
    }

    TaxAddress private taxAddress = TaxAddress ({
        marketing: 0x000000000000000000000000000000000000dEaD,
        development: 0x000000000000000000000000000000000000dEaD
    });

    struct Fee {
        uint marketing;
        uint development;
    }

    Fee public fee = Fee ({
        marketing: 3,
        development: 1
    });

    bool inSwap;
    mapping(address => bool) private _isExcludedFromFee;

    string private _name = "TSUKATAMA";
    string private _symbol = "TSUKATAMA";
    uint8 private _decimals = 9;
    uint256 private _supply = 88888888;
    uint256 public maxTxAmount = 888888 * 10**_decimals;
    uint256 public maxWalletAmount = 1888888 * 10**_decimals;
    uint256 private _numTokensSellToAddToFee = 88888 * 10**_decimals;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address _marketing, address _development) ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply * 10**_decimals));

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        taxAddress.marketing = _marketing;
        taxAddress.development = _development;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[taxAddress.marketing] = true;
        _isExcludedFromFee[taxAddress.development] = true;
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(balanceOf(from) >= amount, "ERC20: transfer amount exceeds balance");

        if ((from == uniswapV2Pair || to == uniswapV2Pair) && !inSwap) {
            if (from != uniswapV2Pair) {
                uint256 contractBalance = balanceOf(address(this));
                if (contractBalance >= _numTokensSellToAddToFee) {
                    _swapTokensForEth(_numTokensSellToAddToFee);
                    require(payable(taxAddress.development).send(address(this).balance/4), "Failed to send ETH");
                    require(payable(taxAddress.marketing).send(address(this).balance), "Failed to send ETH");
                }
            }

            uint256 transferAmount;
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                transferAmount = amount;
            } 
            else {
                require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount");
                if(from == uniswapV2Pair){
                    require((amount + balanceOf(to)) <= maxWalletAmount, "ERC20: balance amount exceeded max wallet amount limit");
                }

                uint256 marketingShare = ((amount * fee.marketing) / 100);
                uint256 developmentShare = ((amount * fee.development) / 100);
                transferAmount = amount - (marketingShare + developmentShare);
                super._transfer(from, address(this), (marketingShare + developmentShare));
            }
            super._transfer(from, to, transferAmount);
        } 
        else {
            super._transfer(from, to, amount);
        }
    }

    function clearStuckETH() external {
        payable(taxAddress.marketing).transfer(address(this).balance);
    }
    
    function clearStuck() external {
        require(balanceOf(address(this)) > 0, "Insufficient Balance");
        super._transfer(address(this), taxAddress.marketing, balanceOf(address(this)));
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            (block.timestamp + 300)
        );
    }

    function changeFeeWallet(address marketing, address development)
        public
        onlyOwner
        returns (bool)
    {
        taxAddress.marketing = marketing;
        taxAddress.development = development;
        return true;
    }

    function changeTaxForMarketingAndDevelopment(uint256 _taxForMarketing, uint256 _taxForDevelopment)
        public
        onlyOwner
        returns (bool)
    {
        require((_taxForMarketing + _taxForDevelopment) <= 100, "ERC20: total tax must not be greater than 100");
        fee.marketing = _taxForMarketing;
        fee.development = _taxForDevelopment;

        return true;
    }

    function changeMaxTxAmount(uint256 _maxTxAmount)
        public
        onlyOwner
        returns (bool)
    {
        maxTxAmount = _maxTxAmount * 10**_decimals;

        return true;
    }

    function changeMaxWalletAmount(uint256 _maxWalletAmount)
        public
        onlyOwner
        returns (bool)
    {
        maxWalletAmount = _maxWalletAmount * 10**_decimals;

        return true;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"}],"name":"changeFeeWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"changeMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxForMarketing","type":"uint256"},{"internalType":"uint256","name":"_taxForDevelopment","type":"uint256"}],"name":"changeTaxForMarketingAndDevelopment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052604051806040016040528061dead73ffffffffffffffffffffffffffffffffffffffff16815260200161dead73ffffffffffffffffffffffffffffffffffffffff16815250600660008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505060405180604001604052806003815260200160018152506008600082015181600001556020820151816001015550506040518060400160405280600981526020017f5453554b4154414d410000000000000000000000000000000000000000000000815250600c908162000150919062000cdb565b506040518060400160405280600981526020017f5453554b4154414d410000000000000000000000000000000000000000000000815250600d908162000197919062000cdb565b506009600e60006101000a81548160ff021916908360ff16021790555063054c5638600f55600e60009054906101000a900460ff16600a620001da919062000f52565b620d9038620001ea919062000fa3565b601055600e60009054906101000a900460ff16600a6200020b919062000f52565b621cd2786200021b919062000fa3565b601155600e60009054906101000a900460ff16600a6200023c919062000f52565b62015b386200024c919062000fa3565b6012553480156200025c57600080fd5b5060405162003e7338038062003e73833981810160405281019062000282919062001058565b600c8054620002919062000aca565b80601f0160208091040260200160405190810160405280929190818152602001828054620002bf9062000aca565b8015620003105780601f10620002e45761010080835404028352916020019162000310565b820191906000526020600020905b815481529060010190602001808311620002f257829003601f168201915b5050505050600d8054620003249062000aca565b80601f0160208091040260200160405190810160405280929190818152602001828054620003529062000aca565b8015620003a35780601f106200037757610100808354040283529160200191620003a3565b820191906000526020600020905b8154815290600101906020018083116200038557829003601f168201915b50505050508160039081620003b9919062000cdb565b508060049081620003cb919062000cdb565b505050620003ee620003e26200084e60201b60201c565b6200085660201b60201c565b6200042c33600e60009054906101000a900460ff16600a62000411919062000f52565b600f5462000420919062000fa3565b6200091c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000491573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b791906200109f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054591906200109f565b6040518363ffffffff1660e01b815260040162000564929190620010e2565b6020604051808303816000875af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa91906200109f565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505082600660000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050620011fb565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200098e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009859062001170565b60405180910390fd5b8060026000828254620009a2919062001192565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a559190620011de565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ae357607f821691505b60208210810362000af95762000af862000a9b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b24565b62000b6f868362000b24565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bbc62000bb662000bb08462000b87565b62000b91565b62000b87565b9050919050565b6000819050919050565b62000bd88362000b9b565b62000bf062000be78262000bc3565b84845462000b31565b825550505050565b600090565b62000c0762000bf8565b62000c1481848462000bcd565b505050565b5b8181101562000c3c5762000c3060008262000bfd565b60018101905062000c1a565b5050565b601f82111562000c8b5762000c558162000aff565b62000c608462000b14565b8101602085101562000c70578190505b62000c8862000c7f8562000b14565b83018262000c19565b50505b505050565b600082821c905092915050565b600062000cb06000198460080262000c90565b1980831691505092915050565b600062000ccb838362000c9d565b9150826002028217905092915050565b62000ce68262000a61565b67ffffffffffffffff81111562000d025762000d0162000a6c565b5b62000d0e825462000aca565b62000d1b82828562000c40565b600060209050601f83116001811462000d53576000841562000d3e578287015190505b62000d4a858262000cbd565b86555062000dba565b601f19841662000d638662000aff565b60005b8281101562000d8d5784890151825560018201915060208501945060208101905062000d66565b8683101562000dad578489015162000da9601f89168262000c9d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e505780860481111562000e285762000e2762000dc2565b5b600185161562000e385780820291505b808102905062000e488562000df1565b945062000e08565b94509492505050565b60008262000e6b576001905062000f3e565b8162000e7b576000905062000f3e565b816001811462000e94576002811462000e9f5762000ed5565b600191505062000f3e565b60ff84111562000eb45762000eb362000dc2565b5b8360020a91508482111562000ece5762000ecd62000dc2565b5b5062000f3e565b5060208310610133831016604e8410600b841016171562000f0f5782820a90508381111562000f095762000f0862000dc2565b5b62000f3e565b62000f1e848484600162000dfe565b9250905081840481111562000f385762000f3762000dc2565b5b81810290505b9392505050565b600060ff82169050919050565b600062000f5f8262000b87565b915062000f6c8362000f45565b925062000f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e59565b905092915050565b600062000fb08262000b87565b915062000fbd8362000b87565b925082820262000fcd8162000b87565b9150828204841483151762000fe75762000fe662000dc2565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010208262000ff3565b9050919050565b620010328162001013565b81146200103e57600080fd5b50565b600081519050620010528162001027565b92915050565b6000806040838503121562001072576200107162000fee565b5b6000620010828582860162001041565b9250506020620010958582860162001041565b9150509250929050565b600060208284031215620010b857620010b762000fee565b5b6000620010c88482850162001041565b91505092915050565b620010dc8162001013565b82525050565b6000604082019050620010f96000830185620010d1565b620011086020830184620010d1565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001158601f836200110f565b9150620011658262001120565b602082019050919050565b600060208201905081810360008301526200118b8162001149565b9050919050565b60006200119f8262000b87565b9150620011ac8362000b87565b9250828201905080821115620011c757620011c662000dc2565b5b92915050565b620011d88162000b87565b82525050565b6000602082019050620011f56000830184620011cd565b92915050565b60805160a051612c2162001252600039600081816106e90152818161199b01528181611a7c0152611aa30152600081816108220152818161110e01528181611163015281816111d1015261147b0152612c216000f3fe60806040526004361061016a5760003560e01c806381bfdcca116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e14610589578063ddca3f43146105c6578063f2fde38b146105f2578063f88de0c31461061b57610171565b8063a457c2d7146104e4578063a9059cbb14610521578063aa4bde281461055e57610171565b806381bfdcca146103d2578063834e3b6e1461040f5780638c0b5e221461044c5780638da5cb5b146104775780638de5c064146104a257806395d89b41146104b957610171565b8063313ce56711610123578063313ce567146102ae57806339509351146102d957806349bd5a5e14610316578063677daa571461034157806370a082311461037e578063715018a6146103bb57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806322ae1ac91461023457806323b872dd1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610632565b6040516101989190611bf1565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611cac565b6106c4565b6040516101d59190611d07565b60405180910390f35b3480156101ea57600080fd5b506101f36106e7565b6040516102009190611d81565b60405180910390f35b34801561021557600080fd5b5061021e61070b565b60405161022b9190611dab565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611dc6565b610715565b6040516102689190611d07565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190611e06565b6107b1565b6040516102a59190611d07565b60405180910390f35b3480156102ba57600080fd5b506102c36107e0565b6040516102d09190611e75565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190611cac565b6107e9565b60405161030d9190611d07565b60405180910390f35b34801561032257600080fd5b5061032b610820565b6040516103389190611e9f565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190611eba565b610844565b6040516103759190611d07565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190611ee7565b610884565b6040516103b29190611dab565b60405180910390f35b3480156103c757600080fd5b506103d06108cc565b005b3480156103de57600080fd5b506103f960048036038101906103f49190611eba565b6108e0565b6040516104069190611d07565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190611f14565b610920565b6040516104439190611d07565b60405180910390f35b34801561045857600080fd5b50610461610997565b60405161046e9190611dab565b60405180910390f35b34801561048357600080fd5b5061048c61099d565b6040516104999190611e9f565b60405180910390f35b3480156104ae57600080fd5b506104b76109c7565b005b3480156104c557600080fd5b506104ce610a4c565b6040516104db9190611bf1565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190611cac565b610ade565b6040516105189190611d07565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190611cac565b610b55565b6040516105559190611d07565b60405180910390f35b34801561056a57600080fd5b50610573610b78565b6040516105809190611dab565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190611dc6565b610b7e565b6040516105bd9190611dab565b60405180910390f35b3480156105d257600080fd5b506105db610c05565b6040516105e9929190611f54565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190611ee7565b610c17565b005b34801561062757600080fd5b50610630610c9a565b005b60606003805461064190611fac565b80601f016020809104026020016040519081016040528092919081815260200182805461066d90611fac565b80156106ba5780601f1061068f576101008083540402835291602001916106ba565b820191906000526020600020905b81548152906001019060200180831161069d57829003601f168201915b5050505050905090565b6000806106cf610d08565b90506106dc818585610d10565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600061071f610ed9565b82600660000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b6000806107bc610d08565b90506107c9858285610f57565b6107d4858585610fe3565b60019150509392505050565b60006009905090565b6000806107f4610d08565b90506108158185856108068589610b7e565b610810919061200c565b610d10565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061084e610ed9565b600e60009054906101000a900460ff16600a61086a9190612173565b8261087591906121be565b60108190555060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108d4610ed9565b6108de60006115bb565b565b60006108ea610ed9565b600e60009054906101000a900460ff16600a6109069190612173565b8261091191906121be565b60118190555060019050919050565b600061092a610ed9565b60648284610938919061200c565b1115610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612272565b60405180910390fd5b82600860000181905550816008600101819055506001905092915050565b60105481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006109d230610884565b11610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a09906122de565b60405180910390fd5b610a4a30600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a4530610884565b611681565b565b606060048054610a5b90611fac565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8790611fac565b8015610ad45780601f10610aa957610100808354040283529160200191610ad4565b820191906000526020600020905b815481529060010190602001808311610ab757829003601f168201915b5050505050905090565b600080610ae9610d08565b90506000610af78286610b7e565b905083811015610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390612370565b60405180910390fd5b610b498286868403610d10565b60019250505092915050565b600080610b60610d08565b9050610b6d818585610fe3565b600191505092915050565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60088060000154908060010154905082565b610c1f610ed9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612402565b60405180910390fd5b610c97816115bb565b50565b600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d05573d6000803e3d6000fd5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612494565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590612526565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ecc9190611dab565b60405180910390a3505050565b610ee1610d08565b73ffffffffffffffffffffffffffffffffffffffff16610eff61099d565b73ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90612592565b60405180910390fd5b565b6000610f638484610b7e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fdd5781811015610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906125fe565b60405180910390fd5b610fdc8484848403610d10565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890612722565b60405180910390fd5b806110cb84610884565b101561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611103906127b4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806111b157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156111ca5750600a60009054906101000a900460ff16155b156115aa577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461138457600061122d30610884565b90506012548110611382576112436012546118e1565b600660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60044761128f9190612803565b9081150290604051600060405180830381858888f193505050506112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612880565b60405180910390fd5b600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612880565b60405180910390fd5b5b505b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561143457819050611599565b601054821115611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090612912565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611525576011546114d884610884565b836114e3919061200c565b1115611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b906129a4565b60405180910390fd5b5b600060646008600001548461153a91906121be565b6115449190612803565b9050600060646008600101548561155b91906121be565b6115659190612803565b90508082611573919061200c565b8461157e91906129c4565b925061159686308385611591919061200c565b611681565b50505b6115a4848483611681565b506115b6565b6115b5838383611681565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790612690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612722565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906127b4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118d39190611dab565b60405180910390a350505050565b6001600a60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611919576119186129f8565b5b6040519080825280602002602001820160405280156119475781602001602082028036833780820191505090505b509050308160008151811061195f5761195e612a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a289190612a6b565b81600181518110611a3c57611a3b612a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aa1307f000000000000000000000000000000000000000000000000000000000000000084610d10565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611af0919061200c565b6040518663ffffffff1660e01b8152600401611b10959493929190612b91565b600060405180830381600087803b158015611b2a57600080fd5b505af1158015611b3e573d6000803e3d6000fd5b50505050506000600a60006101000a81548160ff02191690831515021790555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b9b578082015181840152602081019050611b80565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc382611b61565b611bcd8185611b6c565b9350611bdd818560208601611b7d565b611be681611ba7565b840191505092915050565b60006020820190508181036000830152611c0b8184611bb8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4382611c18565b9050919050565b611c5381611c38565b8114611c5e57600080fd5b50565b600081359050611c7081611c4a565b92915050565b6000819050919050565b611c8981611c76565b8114611c9457600080fd5b50565b600081359050611ca681611c80565b92915050565b60008060408385031215611cc357611cc2611c13565b5b6000611cd185828601611c61565b9250506020611ce285828601611c97565b9150509250929050565b60008115159050919050565b611d0181611cec565b82525050565b6000602082019050611d1c6000830184611cf8565b92915050565b6000819050919050565b6000611d47611d42611d3d84611c18565b611d22565b611c18565b9050919050565b6000611d5982611d2c565b9050919050565b6000611d6b82611d4e565b9050919050565b611d7b81611d60565b82525050565b6000602082019050611d966000830184611d72565b92915050565b611da581611c76565b82525050565b6000602082019050611dc06000830184611d9c565b92915050565b60008060408385031215611ddd57611ddc611c13565b5b6000611deb85828601611c61565b9250506020611dfc85828601611c61565b9150509250929050565b600080600060608486031215611e1f57611e1e611c13565b5b6000611e2d86828701611c61565b9350506020611e3e86828701611c61565b9250506040611e4f86828701611c97565b9150509250925092565b600060ff82169050919050565b611e6f81611e59565b82525050565b6000602082019050611e8a6000830184611e66565b92915050565b611e9981611c38565b82525050565b6000602082019050611eb46000830184611e90565b92915050565b600060208284031215611ed057611ecf611c13565b5b6000611ede84828501611c97565b91505092915050565b600060208284031215611efd57611efc611c13565b5b6000611f0b84828501611c61565b91505092915050565b60008060408385031215611f2b57611f2a611c13565b5b6000611f3985828601611c97565b9250506020611f4a85828601611c97565b9150509250929050565b6000604082019050611f696000830185611d9c565b611f766020830184611d9c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611fc457607f821691505b602082108103611fd757611fd6611f7d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061201782611c76565b915061202283611c76565b925082820190508082111561203a57612039611fdd565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156120975780860481111561207357612072611fdd565b5b60018516156120825780820291505b808102905061209085612040565b9450612057565b94509492505050565b6000826120b0576001905061216c565b816120be576000905061216c565b81600181146120d457600281146120de5761210d565b600191505061216c565b60ff8411156120f0576120ef611fdd565b5b8360020a91508482111561210757612106611fdd565b5b5061216c565b5060208310610133831016604e8410600b84101617156121425782820a90508381111561213d5761213c611fdd565b5b61216c565b61214f848484600161204d565b9250905081840481111561216657612165611fdd565b5b81810290505b9392505050565b600061217e82611c76565b915061218983611e59565b92506121b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846120a0565b905092915050565b60006121c982611c76565b91506121d483611c76565b92508282026121e281611c76565b915082820484148315176121f9576121f8611fdd565b5b5092915050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2031303000000000000000000000000000000000000000602082015250565b600061225c602d83611b6c565b915061226782612200565b604082019050919050565b6000602082019050818103600083015261228b8161224f565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006122c8601483611b6c565b91506122d382612292565b602082019050919050565b600060208201905081810360008301526122f7816122bb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061235a602583611b6c565b9150612365826122fe565b604082019050919050565b600060208201905081810360008301526123898161234d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123ec602683611b6c565b91506123f782612390565b604082019050919050565b6000602082019050818103600083015261241b816123df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061247e602483611b6c565b915061248982612422565b604082019050919050565b600060208201905081810360008301526124ad81612471565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612510602283611b6c565b915061251b826124b4565b604082019050919050565b6000602082019050818103600083015261253f81612503565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061257c602083611b6c565b915061258782612546565b602082019050919050565b600060208201905081810360008301526125ab8161256f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006125e8601d83611b6c565b91506125f3826125b2565b602082019050919050565b60006020820190508181036000830152612617816125db565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061267a602583611b6c565b91506126858261261e565b604082019050919050565b600060208201905081810360008301526126a98161266d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061270c602383611b6c565b9150612717826126b0565b604082019050919050565b6000602082019050818103600083015261273b816126ff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061279e602683611b6c565b91506127a982612742565b604082019050919050565b600060208201905081810360008301526127cd81612791565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061280e82611c76565b915061281983611c76565b925082612829576128286127d4565b5b828204905092915050565b7f4661696c656420746f2073656e64204554480000000000000000000000000000600082015250565b600061286a601283611b6c565b915061287582612834565b602082019050919050565b600060208201905081810360008301526128998161285d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b60006128fc603983611b6c565b9150612907826128a0565b604082019050919050565b6000602082019050818103600083015261292b816128ef565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b600061298e603683611b6c565b915061299982612932565b604082019050919050565b600060208201905081810360008301526129bd81612981565b9050919050565b60006129cf82611c76565b91506129da83611c76565b92508282039050818111156129f2576129f1611fdd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a6581611c4a565b92915050565b600060208284031215612a8157612a80611c13565b5b6000612a8f84828501612a56565b91505092915050565b6000819050919050565b6000612abd612ab8612ab384612a98565b611d22565b611c76565b9050919050565b612acd81612aa2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b0881611c38565b82525050565b6000612b1a8383612aff565b60208301905092915050565b6000602082019050919050565b6000612b3e82612ad3565b612b488185612ade565b9350612b5383612aef565b8060005b83811015612b84578151612b6b8882612b0e565b9750612b7683612b26565b925050600181019050612b57565b5085935050505092915050565b600060a082019050612ba66000830188611d9c565b612bb36020830187612ac4565b8181036040830152612bc58186612b33565b9050612bd46060830185611e90565b612be16080830184611d9c565b969550505050505056fea264697066735822122021211e739690d81d9f9f184615a7526f06411b478b1cb228cc34f09e53b811c164736f6c634300081100330000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b0000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806381bfdcca116100d1578063a457c2d71161008a578063dd62ed3e11610064578063dd62ed3e14610589578063ddca3f43146105c6578063f2fde38b146105f2578063f88de0c31461061b57610171565b8063a457c2d7146104e4578063a9059cbb14610521578063aa4bde281461055e57610171565b806381bfdcca146103d2578063834e3b6e1461040f5780638c0b5e221461044c5780638da5cb5b146104775780638de5c064146104a257806395d89b41146104b957610171565b8063313ce56711610123578063313ce567146102ae57806339509351146102d957806349bd5a5e14610316578063677daa571461034157806370a082311461037e578063715018a6146103bb57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806322ae1ac91461023457806323b872dd1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610632565b6040516101989190611bf1565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611cac565b6106c4565b6040516101d59190611d07565b60405180910390f35b3480156101ea57600080fd5b506101f36106e7565b6040516102009190611d81565b60405180910390f35b34801561021557600080fd5b5061021e61070b565b60405161022b9190611dab565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611dc6565b610715565b6040516102689190611d07565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190611e06565b6107b1565b6040516102a59190611d07565b60405180910390f35b3480156102ba57600080fd5b506102c36107e0565b6040516102d09190611e75565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190611cac565b6107e9565b60405161030d9190611d07565b60405180910390f35b34801561032257600080fd5b5061032b610820565b6040516103389190611e9f565b60405180910390f35b34801561034d57600080fd5b5061036860048036038101906103639190611eba565b610844565b6040516103759190611d07565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190611ee7565b610884565b6040516103b29190611dab565b60405180910390f35b3480156103c757600080fd5b506103d06108cc565b005b3480156103de57600080fd5b506103f960048036038101906103f49190611eba565b6108e0565b6040516104069190611d07565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190611f14565b610920565b6040516104439190611d07565b60405180910390f35b34801561045857600080fd5b50610461610997565b60405161046e9190611dab565b60405180910390f35b34801561048357600080fd5b5061048c61099d565b6040516104999190611e9f565b60405180910390f35b3480156104ae57600080fd5b506104b76109c7565b005b3480156104c557600080fd5b506104ce610a4c565b6040516104db9190611bf1565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190611cac565b610ade565b6040516105189190611d07565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190611cac565b610b55565b6040516105559190611d07565b60405180910390f35b34801561056a57600080fd5b50610573610b78565b6040516105809190611dab565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190611dc6565b610b7e565b6040516105bd9190611dab565b60405180910390f35b3480156105d257600080fd5b506105db610c05565b6040516105e9929190611f54565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190611ee7565b610c17565b005b34801561062757600080fd5b50610630610c9a565b005b60606003805461064190611fac565b80601f016020809104026020016040519081016040528092919081815260200182805461066d90611fac565b80156106ba5780601f1061068f576101008083540402835291602001916106ba565b820191906000526020600020905b81548152906001019060200180831161069d57829003601f168201915b5050505050905090565b6000806106cf610d08565b90506106dc818585610d10565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600061071f610ed9565b82600660000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b6000806107bc610d08565b90506107c9858285610f57565b6107d4858585610fe3565b60019150509392505050565b60006009905090565b6000806107f4610d08565b90506108158185856108068589610b7e565b610810919061200c565b610d10565b600191505092915050565b7f000000000000000000000000e02d3cd7b9795c8206af6dc4c67e6de0620c2b4181565b600061084e610ed9565b600e60009054906101000a900460ff16600a61086a9190612173565b8261087591906121be565b60108190555060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108d4610ed9565b6108de60006115bb565b565b60006108ea610ed9565b600e60009054906101000a900460ff16600a6109069190612173565b8261091191906121be565b60118190555060019050919050565b600061092a610ed9565b60648284610938919061200c565b1115610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612272565b60405180910390fd5b82600860000181905550816008600101819055506001905092915050565b60105481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006109d230610884565b11610a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a09906122de565b60405180910390fd5b610a4a30600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a4530610884565b611681565b565b606060048054610a5b90611fac565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8790611fac565b8015610ad45780601f10610aa957610100808354040283529160200191610ad4565b820191906000526020600020905b815481529060010190602001808311610ab757829003601f168201915b5050505050905090565b600080610ae9610d08565b90506000610af78286610b7e565b905083811015610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390612370565b60405180910390fd5b610b498286868403610d10565b60019250505092915050565b600080610b60610d08565b9050610b6d818585610fe3565b600191505092915050565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60088060000154908060010154905082565b610c1f610ed9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612402565b60405180910390fd5b610c97816115bb565b50565b600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d05573d6000803e3d6000fd5b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612494565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590612526565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ecc9190611dab565b60405180910390a3505050565b610ee1610d08565b73ffffffffffffffffffffffffffffffffffffffff16610eff61099d565b73ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90612592565b60405180910390fd5b565b6000610f638484610b7e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fdd5781811015610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906125fe565b60405180910390fd5b610fdc8484848403610d10565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890612722565b60405180910390fd5b806110cb84610884565b101561110c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611103906127b4565b60405180910390fd5b7f000000000000000000000000e02d3cd7b9795c8206af6dc4c67e6de0620c2b4173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806111b157507f000000000000000000000000e02d3cd7b9795c8206af6dc4c67e6de0620c2b4173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156111ca5750600a60009054906101000a900460ff16155b156115aa577f000000000000000000000000e02d3cd7b9795c8206af6dc4c67e6de0620c2b4173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461138457600061122d30610884565b90506012548110611382576112436012546118e1565b600660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60044761128f9190612803565b9081150290604051600060405180830381858888f193505050506112e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112df90612880565b60405180910390fd5b600660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612880565b60405180910390fd5b5b505b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114275750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561143457819050611599565b601054821115611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147090612912565b60405180910390fd5b7f000000000000000000000000e02d3cd7b9795c8206af6dc4c67e6de0620c2b4173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611525576011546114d884610884565b836114e3919061200c565b1115611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b906129a4565b60405180910390fd5b5b600060646008600001548461153a91906121be565b6115449190612803565b9050600060646008600101548561155b91906121be565b6115659190612803565b90508082611573919061200c565b8461157e91906129c4565b925061159686308385611591919061200c565b611681565b50505b6115a4848483611681565b506115b6565b6115b5838383611681565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790612690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612722565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906127b4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118d39190611dab565b60405180910390a350505050565b6001600a60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611919576119186129f8565b5b6040519080825280602002602001820160405280156119475781602001602082028036833780820191505090505b509050308160008151811061195f5761195e612a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a289190612a6b565b81600181518110611a3c57611a3b612a27565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aa1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610d10565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611af0919061200c565b6040518663ffffffff1660e01b8152600401611b10959493929190612b91565b600060405180830381600087803b158015611b2a57600080fd5b505af1158015611b3e573d6000803e3d6000fd5b50505050506000600a60006101000a81548160ff02191690831515021790555050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b9b578082015181840152602081019050611b80565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc382611b61565b611bcd8185611b6c565b9350611bdd818560208601611b7d565b611be681611ba7565b840191505092915050565b60006020820190508181036000830152611c0b8184611bb8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4382611c18565b9050919050565b611c5381611c38565b8114611c5e57600080fd5b50565b600081359050611c7081611c4a565b92915050565b6000819050919050565b611c8981611c76565b8114611c9457600080fd5b50565b600081359050611ca681611c80565b92915050565b60008060408385031215611cc357611cc2611c13565b5b6000611cd185828601611c61565b9250506020611ce285828601611c97565b9150509250929050565b60008115159050919050565b611d0181611cec565b82525050565b6000602082019050611d1c6000830184611cf8565b92915050565b6000819050919050565b6000611d47611d42611d3d84611c18565b611d22565b611c18565b9050919050565b6000611d5982611d2c565b9050919050565b6000611d6b82611d4e565b9050919050565b611d7b81611d60565b82525050565b6000602082019050611d966000830184611d72565b92915050565b611da581611c76565b82525050565b6000602082019050611dc06000830184611d9c565b92915050565b60008060408385031215611ddd57611ddc611c13565b5b6000611deb85828601611c61565b9250506020611dfc85828601611c61565b9150509250929050565b600080600060608486031215611e1f57611e1e611c13565b5b6000611e2d86828701611c61565b9350506020611e3e86828701611c61565b9250506040611e4f86828701611c97565b9150509250925092565b600060ff82169050919050565b611e6f81611e59565b82525050565b6000602082019050611e8a6000830184611e66565b92915050565b611e9981611c38565b82525050565b6000602082019050611eb46000830184611e90565b92915050565b600060208284031215611ed057611ecf611c13565b5b6000611ede84828501611c97565b91505092915050565b600060208284031215611efd57611efc611c13565b5b6000611f0b84828501611c61565b91505092915050565b60008060408385031215611f2b57611f2a611c13565b5b6000611f3985828601611c97565b9250506020611f4a85828601611c97565b9150509250929050565b6000604082019050611f696000830185611d9c565b611f766020830184611d9c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611fc457607f821691505b602082108103611fd757611fd6611f7d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061201782611c76565b915061202283611c76565b925082820190508082111561203a57612039611fdd565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156120975780860481111561207357612072611fdd565b5b60018516156120825780820291505b808102905061209085612040565b9450612057565b94509492505050565b6000826120b0576001905061216c565b816120be576000905061216c565b81600181146120d457600281146120de5761210d565b600191505061216c565b60ff8411156120f0576120ef611fdd565b5b8360020a91508482111561210757612106611fdd565b5b5061216c565b5060208310610133831016604e8410600b84101617156121425782820a90508381111561213d5761213c611fdd565b5b61216c565b61214f848484600161204d565b9250905081840481111561216657612165611fdd565b5b81810290505b9392505050565b600061217e82611c76565b915061218983611e59565b92506121b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846120a0565b905092915050565b60006121c982611c76565b91506121d483611c76565b92508282026121e281611c76565b915082820484148315176121f9576121f8611fdd565b5b5092915050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2031303000000000000000000000000000000000000000602082015250565b600061225c602d83611b6c565b915061226782612200565b604082019050919050565b6000602082019050818103600083015261228b8161224f565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b60006122c8601483611b6c565b91506122d382612292565b602082019050919050565b600060208201905081810360008301526122f7816122bb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061235a602583611b6c565b9150612365826122fe565b604082019050919050565b600060208201905081810360008301526123898161234d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123ec602683611b6c565b91506123f782612390565b604082019050919050565b6000602082019050818103600083015261241b816123df565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061247e602483611b6c565b915061248982612422565b604082019050919050565b600060208201905081810360008301526124ad81612471565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612510602283611b6c565b915061251b826124b4565b604082019050919050565b6000602082019050818103600083015261253f81612503565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061257c602083611b6c565b915061258782612546565b602082019050919050565b600060208201905081810360008301526125ab8161256f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006125e8601d83611b6c565b91506125f3826125b2565b602082019050919050565b60006020820190508181036000830152612617816125db565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061267a602583611b6c565b91506126858261261e565b604082019050919050565b600060208201905081810360008301526126a98161266d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061270c602383611b6c565b9150612717826126b0565b604082019050919050565b6000602082019050818103600083015261273b816126ff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061279e602683611b6c565b91506127a982612742565b604082019050919050565b600060208201905081810360008301526127cd81612791565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061280e82611c76565b915061281983611c76565b925082612829576128286127d4565b5b828204905092915050565b7f4661696c656420746f2073656e64204554480000000000000000000000000000600082015250565b600061286a601283611b6c565b915061287582612834565b602082019050919050565b600060208201905081810360008301526128998161285d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b60006128fc603983611b6c565b9150612907826128a0565b604082019050919050565b6000602082019050818103600083015261292b816128ef565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b600061298e603683611b6c565b915061299982612932565b604082019050919050565b600060208201905081810360008301526129bd81612981565b9050919050565b60006129cf82611c76565b91506129da83611c76565b92508282039050818111156129f2576129f1611fdd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612a6581611c4a565b92915050565b600060208284031215612a8157612a80611c13565b5b6000612a8f84828501612a56565b91505092915050565b6000819050919050565b6000612abd612ab8612ab384612a98565b611d22565b611c76565b9050919050565b612acd81612aa2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b0881611c38565b82525050565b6000612b1a8383612aff565b60208301905092915050565b6000602082019050919050565b6000612b3e82612ad3565b612b488185612ade565b9350612b5383612aef565b8060005b83811015612b84578151612b6b8882612b0e565b9750612b7683612b26565b925050600181019050612b57565b5085935050505092915050565b600060a082019050612ba66000830188611d9c565b612bb36020830187612ac4565b8181036040830152612bc58186612b33565b9050612bd46060830185611e90565b612be16080830184611d9c565b969550505050505056fea264697066735822122021211e739690d81d9f9f184615a7526f06411b478b1cb228cc34f09e53b811c164736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b0000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b

-----Decoded View---------------
Arg [0] : _marketing (address): 0x6C166950e63CB7571Ef631db2281fc15c645517b
Arg [1] : _development (address): 0x6C166950e63CB7571Ef631db2281fc15c645517b

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b
Arg [1] : 0000000000000000000000006c166950e63cb7571ef631db2281fc15c645517b


Deployed Bytecode Sourcemap

32694:5741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23609:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25883:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32783:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24747:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37310:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26707:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24590:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28423:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32738:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37975:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23774:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20868:103;;;;;;;;;;;;;:::i;:::-;;38181:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37567:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33529:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20220:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36598:200;;;;;;;;;;;;;:::i;:::-;;23433:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27507:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25327:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33587:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24920:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33205:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;21126:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36472:114;;;;;;;;;;;;;:::i;:::-;;23609:102;23665:13;23698:5;23691:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23609:102;:::o;25883:244::-;26004:4;26026:13;26042:12;:10;:12::i;:::-;26026:28;;26065:32;26074:5;26081:7;26090:6;26065:8;:32::i;:::-;26115:4;26108:11;;;25883:244;;;;:::o;32783:51::-;;;:::o;24747:110::-;24810:7;24837:12;;24830:19;;24747:110;:::o;37310:249::-;37428:4;20106:13;:11;:13::i;:::-;37473:9:::1;37450:10;:20;;;:32;;;;;;;;;;;;;;;;;;37518:11;37493:10;:22;;;:36;;;;;;;;;;;;;;;;;;37547:4;37540:11;;37310:249:::0;;;;:::o;26707:297::-;26840:4;26857:15;26875:12;:10;:12::i;:::-;26857:30;;26898:38;26914:4;26920:7;26929:6;26898:15;:38::i;:::-;26947:27;26957:4;26963:2;26967:6;26947:9;:27::i;:::-;26992:4;26985:11;;;26707:297;;;;;:::o;24590:92::-;24648:5;24673:1;24666:8;;24590:92;:::o;28423:272::-;28540:4;28562:13;28578:12;:10;:12::i;:::-;28562:28;;28601:64;28610:5;28617:7;28654:10;28626:25;28636:5;28643:7;28626:9;:25::i;:::-;:38;;;;:::i;:::-;28601:8;:64::i;:::-;28683:4;28676:11;;;28423:272;;;;:::o;32738:38::-;;;:::o;37975:198::-;38077:4;20106:13;:11;:13::i;:::-;38132:9:::1;;;;;;;;;;;38128:2;:13;;;;:::i;:::-;38113:12;:28;;;;:::i;:::-;38099:11;:42;;;;38161:4;38154:11;;37975:198:::0;;;:::o;23774:177::-;23893:7;23925:9;:18;23935:7;23925:18;;;;;;;;;;;;;;;;23918:25;;23774:177;;;:::o;20868:103::-;20106:13;:11;:13::i;:::-;20933:30:::1;20960:1;20933:18;:30::i;:::-;20868:103::o:0;38181:214::-;38291:4;20106:13;:11;:13::i;:::-;38354:9:::1;;;;;;;;;;;38350:2;:13;;;;:::i;:::-;38331:16;:32;;;;:::i;:::-;38313:15;:50;;;;38383:4;38376:11;;38181:214:::0;;;:::o;37567:400::-;37719:4;20106:13;:11;:13::i;:::-;37792:3:::1;37769:18;37750:16;:37;;;;:::i;:::-;37749:46;;37741:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;37872:16;37856:3;:13;;:32;;;;37917:18;37899:3;:15;;:36;;;;37955:4;37948:11;;37567:400:::0;;;;:::o;33529:51::-;;;;:::o;20220:87::-;20266:7;20293:6;;;;;;;;;;;20286:13;;20220:87;:::o;36598:200::-;36675:1;36648:24;36666:4;36648:9;:24::i;:::-;:28;36640:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36712:78;36736:4;36743:10;:20;;;;;;;;;;;;36765:24;36783:4;36765:9;:24::i;:::-;36712:15;:78::i;:::-;36598:200::o;23433:106::-;23491:13;23524:7;23517:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23433:106;:::o;27507:507::-;27629:4;27651:13;27667:12;:10;:12::i;:::-;27651:28;;27690:24;27717:25;27727:5;27734:7;27717:9;:25::i;:::-;27690:52;;27795:15;27775:16;:35;;27753:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;27911:60;27920:5;27927:7;27955:15;27936:16;:34;27911:8;:60::i;:::-;28002:4;27995:11;;;;27507:507;;;;:::o;25327:236::-;25444:4;25466:13;25482:12;:10;:12::i;:::-;25466:28;;25505;25515:5;25522:2;25526:6;25505:9;:28::i;:::-;25551:4;25544:11;;;25327:236;;;;:::o;33587:56::-;;;;:::o;24920:201::-;25054:7;25086:11;:18;25098:5;25086:18;;;;;;;;;;;;;;;:27;25105:7;25086:27;;;;;;;;;;;;;;;;25079:34;;24920:201;;;;:::o;33205:78::-;;;;;;;;;;;;;;:::o;21126:238::-;20106:13;:11;:13::i;:::-;21249:1:::1;21229:22;;:8;:22;;::::0;21207:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21328:28;21347:8;21328:18;:28::i;:::-;21126:238:::0;:::o;36472:114::-;36525:10;:20;;;;;;;;;;;;36517:38;;:61;36556:21;36517:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36472:114::o;19013:98::-;19066:7;19093:10;19086:17;;19013:98;:::o;30730:380::-;30883:1;30866:19;;:5;:19;;;30858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30964:1;30945:21;;:7;:21;;;30937:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31048:6;31018:11;:18;31030:5;31018:18;;;;;;;;;;;;;;;:27;31037:7;31018:27;;;;;;;;;;;;;;;:36;;;;31086:7;31070:32;;31079:5;31070:32;;;31095:6;31070:32;;;;;;:::i;:::-;;;;;;;;30730:380;;;:::o;20385:132::-;20460:12;:10;:12::i;:::-;20449:23;;:7;:5;:7::i;:::-;:23;;;20441:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20385:132::o;31401:502::-;31536:24;31563:25;31573:5;31580:7;31563:9;:25::i;:::-;31536:52;;31623:17;31603:16;:37;31599:297;;31703:6;31683:16;:26;;31657:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;31818:51;31827:5;31834:7;31862:6;31843:16;:25;31818:8;:51::i;:::-;31599:297;31525:378;31401:502;;;:::o;34573:1891::-;34687:1;34671:18;;:4;:18;;;34663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34764:1;34750:16;;:2;:16;;;34742:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;34844:6;34825:15;34835:4;34825:9;:15::i;:::-;:25;;34817:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;34919:13;34911:21;;:4;:21;;;:44;;;;34942:13;34936:19;;:2;:19;;;34911:44;34910:57;;;;;34961:6;;;;;;;;;;;34960:7;34910:57;34906:1551;;;34996:13;34988:21;;:4;:21;;;34984:491;;35030:23;35056:24;35074:4;35056:9;:24::i;:::-;35030:50;;35122:24;;35103:15;:43;35099:361;;35171:43;35189:24;;35171:17;:43::i;:::-;35253:10;:22;;;;;;;;;;;;35245:36;;:61;35304:1;35282:21;:23;;;;:::i;:::-;35245:61;;;;;;;;;;;;;;;;;;;;;;;35237:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;35368:10;:20;;;;;;;;;;;;35360:34;;:57;35395:21;35360:57;;;;;;;;;;;;;;;;;;;;;;;35352:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;35099:361;35011:464;34984:491;35491:22;35532:18;:24;35551:4;35532:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;35560:18;:22;35579:2;35560:22;;;;;;;;;;;;;;;;;;;;;;;;;35532:50;35528:786;;;35620:6;35603:23;;35528:786;;;35699:11;;35689:6;:21;;35681:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;35802:13;35794:21;;:4;:21;;;35791:178;;35875:15;;35857:13;35867:2;35857:9;:13::i;:::-;35848:6;:22;;;;:::i;:::-;35847:43;;35839:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;35791:178;35989:22;36042:3;36025;:13;;;36016:6;:22;;;;:::i;:::-;36015:30;;;;:::i;:::-;35989:57;;36065:24;36122:3;36103;:15;;;36094:6;:24;;;;:::i;:::-;36093:32;;;;:::i;:::-;36065:61;;36189:16;36172:14;:33;;;;:::i;:::-;36162:6;:44;;;;:::i;:::-;36145:61;;36225:73;36241:4;36255;36280:16;36263:14;:33;;;;:::i;:::-;36225:15;:73::i;:::-;35662:652;;35528:786;36328:41;36344:4;36350:2;36354:14;36328:15;:41::i;:::-;34969:1412;34906:1551;;;36412:33;36428:4;36434:2;36438:6;36412:15;:33::i;:::-;34906:1551;34573:1891;;;:::o;21524:191::-;21598:16;21617:6;;;;;;;;;;;21598:25;;21643:8;21634:6;;:17;;;;;;;;;;;;;;;;;;21698:8;21667:40;;21688:8;21667:40;;;;;;;;;;;;21587:128;21524:191;:::o;31911:776::-;32058:1;32042:18;;:4;:18;;;32034:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32135:1;32121:16;;:2;:16;;;32113:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32190:19;32212:9;:15;32222:4;32212:15;;;;;;;;;;;;;;;;32190:37;;32275:6;32260:11;:21;;32238:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;32415:6;32401:11;:20;32383:9;:15;32393:4;32383:15;;;;;;;;;;;;;;;:38;;;;32618:6;32601:9;:13;32611:2;32601:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;32668:2;32653:26;;32662:4;32653:26;;;32672:6;32653:26;;;;;;:::i;:::-;;;;;;;;32023:664;31911:776;;;:::o;36806:496::-;33766:4;33757:6;;:13;;;;;;;;;;;;;;;;;;36885:21:::1;36923:1;36909:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36885:40;;36954:4;36936;36941:1;36936:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;36980:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36970:4;36975:1;36970:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;37015:62;37032:4;37047:15;37065:11;37015:8;:62::i;:::-;37090:15;:66;;;37171:11;37197:1;37213:4;37240;37279:3;37261:15;:21;;;;:::i;:::-;37090:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;36874:428;33802:5:::0;33793:6;;:14;;;;;;;;;;;;;;;;;;36806:496;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:474::-;4839:6;4847;4896:2;4884:9;4875:7;4871:23;4867:32;4864:119;;;4902:79;;:::i;:::-;4864:119;5022:1;5047:53;5092:7;5083:6;5072:9;5068:22;5047:53;:::i;:::-;5037:63;;4993:117;5149:2;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5120:118;4771:474;;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:::-;7052:6;7101:2;7089:9;7080:7;7076:23;7072:32;7069:119;;;7107:79;;:::i;:::-;7069:119;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;6993:329;;;;:::o;7328:474::-;7396:6;7404;7453:2;7441:9;7432:7;7428:23;7424:32;7421:119;;;7459:79;;:::i;:::-;7421:119;7579:1;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7550:117;7706:2;7732:53;7777:7;7768:6;7757:9;7753:22;7732:53;:::i;:::-;7722:63;;7677:118;7328:474;;;;;:::o;7808:332::-;7929:4;7967:2;7956:9;7952:18;7944:26;;7980:71;8048:1;8037:9;8033:17;8024:6;7980:71;:::i;:::-;8061:72;8129:2;8118:9;8114:18;8105:6;8061:72;:::i;:::-;7808:332;;;;;:::o;8146:180::-;8194:77;8191:1;8184:88;8291:4;8288:1;8281:15;8315:4;8312:1;8305:15;8332:320;8376:6;8413:1;8407:4;8403:12;8393:22;;8460:1;8454:4;8450:12;8481:18;8471:81;;8537:4;8529:6;8525:17;8515:27;;8471:81;8599:2;8591:6;8588:14;8568:18;8565:38;8562:84;;8618:18;;:::i;:::-;8562:84;8383:269;8332:320;;;:::o;8658:180::-;8706:77;8703:1;8696:88;8803:4;8800:1;8793:15;8827:4;8824:1;8817:15;8844:191;8884:3;8903:20;8921:1;8903:20;:::i;:::-;8898:25;;8937:20;8955:1;8937:20;:::i;:::-;8932:25;;8980:1;8977;8973:9;8966:16;;9001:3;8998:1;8995:10;8992:36;;;9008:18;;:::i;:::-;8992:36;8844:191;;;;:::o;9041:102::-;9083:8;9130:5;9127:1;9123:13;9102:34;;9041:102;;;:::o;9149:848::-;9210:5;9217:4;9241:6;9232:15;;9265:5;9256:14;;9279:712;9300:1;9290:8;9287:15;9279:712;;;9395:4;9390:3;9386:14;9380:4;9377:24;9374:50;;;9404:18;;:::i;:::-;9374:50;9454:1;9444:8;9440:16;9437:451;;;9869:4;9862:5;9858:16;9849:25;;9437:451;9919:4;9913;9909:15;9901:23;;9949:32;9972:8;9949:32;:::i;:::-;9937:44;;9279:712;;;9149:848;;;;;;;:::o;10003:1073::-;10057:5;10248:8;10238:40;;10269:1;10260:10;;10271:5;;10238:40;10297:4;10287:36;;10314:1;10305:10;;10316:5;;10287:36;10383:4;10431:1;10426:27;;;;10467:1;10462:191;;;;10376:277;;10426:27;10444:1;10435:10;;10446:5;;;10462:191;10507:3;10497:8;10494:17;10491:43;;;10514:18;;:::i;:::-;10491:43;10563:8;10560:1;10556:16;10547:25;;10598:3;10591:5;10588:14;10585:40;;;10605:18;;:::i;:::-;10585:40;10638:5;;;10376:277;;10762:2;10752:8;10749:16;10743:3;10737:4;10734:13;10730:36;10712:2;10702:8;10699:16;10694:2;10688:4;10685:12;10681:35;10665:111;10662:246;;;10818:8;10812:4;10808:19;10799:28;;10853:3;10846:5;10843:14;10840:40;;;10860:18;;:::i;:::-;10840:40;10893:5;;10662:246;10933:42;10971:3;10961:8;10955:4;10952:1;10933:42;:::i;:::-;10918:57;;;;11007:4;11002:3;10998:14;10991:5;10988:25;10985:51;;;11016:18;;:::i;:::-;10985:51;11065:4;11058:5;11054:16;11045:25;;10003:1073;;;;;;:::o;11082:281::-;11140:5;11164:23;11182:4;11164:23;:::i;:::-;11156:31;;11208:25;11224:8;11208:25;:::i;:::-;11196:37;;11252:104;11289:66;11279:8;11273:4;11252:104;:::i;:::-;11243:113;;11082:281;;;;:::o;11369:410::-;11409:7;11432:20;11450:1;11432:20;:::i;:::-;11427:25;;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11521:1;11518;11514:9;11543:30;11561:11;11543:30;:::i;:::-;11532:41;;11722:1;11713:7;11709:15;11706:1;11703:22;11683:1;11676:9;11656:83;11633:139;;11752:18;;:::i;:::-;11633:139;11417:362;11369:410;;;;:::o;11785:232::-;11925:34;11921:1;11913:6;11909:14;11902:58;11994:15;11989:2;11981:6;11977:15;11970:40;11785:232;:::o;12023:366::-;12165:3;12186:67;12250:2;12245:3;12186:67;:::i;:::-;12179:74;;12262:93;12351:3;12262:93;:::i;:::-;12380:2;12375:3;12371:12;12364:19;;12023:366;;;:::o;12395:419::-;12561:4;12599:2;12588:9;12584:18;12576:26;;12648:9;12642:4;12638:20;12634:1;12623:9;12619:17;12612:47;12676:131;12802:4;12676:131;:::i;:::-;12668:139;;12395:419;;;:::o;12820:170::-;12960:22;12956:1;12948:6;12944:14;12937:46;12820:170;:::o;12996:366::-;13138:3;13159:67;13223:2;13218:3;13159:67;:::i;:::-;13152:74;;13235:93;13324:3;13235:93;:::i;:::-;13353:2;13348:3;13344:12;13337:19;;12996:366;;;:::o;13368:419::-;13534:4;13572:2;13561:9;13557:18;13549:26;;13621:9;13615:4;13611:20;13607:1;13596:9;13592:17;13585:47;13649:131;13775:4;13649:131;:::i;:::-;13641:139;;13368:419;;;:::o;13793:224::-;13933:34;13929:1;13921:6;13917:14;13910:58;14002:7;13997:2;13989:6;13985:15;13978:32;13793:224;:::o;14023:366::-;14165:3;14186:67;14250:2;14245:3;14186:67;:::i;:::-;14179:74;;14262:93;14351:3;14262:93;:::i;:::-;14380:2;14375:3;14371:12;14364:19;;14023:366;;;:::o;14395:419::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14648:9;14642:4;14638:20;14634:1;14623:9;14619:17;14612:47;14676:131;14802:4;14676:131;:::i;:::-;14668:139;;14395:419;;;:::o;14820:225::-;14960:34;14956:1;14948:6;14944:14;14937:58;15029:8;15024:2;15016:6;15012:15;15005:33;14820:225;:::o;15051:366::-;15193:3;15214:67;15278:2;15273:3;15214:67;:::i;:::-;15207:74;;15290:93;15379:3;15290:93;:::i;:::-;15408:2;15403:3;15399:12;15392:19;;15051:366;;;:::o;15423:419::-;15589:4;15627:2;15616:9;15612:18;15604:26;;15676:9;15670:4;15666:20;15662:1;15651:9;15647:17;15640:47;15704:131;15830:4;15704:131;:::i;:::-;15696:139;;15423:419;;;:::o;15848:223::-;15988:34;15984:1;15976:6;15972:14;15965:58;16057:6;16052:2;16044:6;16040:15;16033:31;15848:223;:::o;16077:366::-;16219:3;16240:67;16304:2;16299:3;16240:67;:::i;:::-;16233:74;;16316:93;16405:3;16316:93;:::i;:::-;16434:2;16429:3;16425:12;16418:19;;16077:366;;;:::o;16449:419::-;16615:4;16653:2;16642:9;16638:18;16630:26;;16702:9;16696:4;16692:20;16688:1;16677:9;16673:17;16666:47;16730:131;16856:4;16730:131;:::i;:::-;16722:139;;16449:419;;;:::o;16874:221::-;17014:34;17010:1;17002:6;16998:14;16991:58;17083:4;17078:2;17070:6;17066:15;17059:29;16874:221;:::o;17101:366::-;17243:3;17264:67;17328:2;17323:3;17264:67;:::i;:::-;17257:74;;17340:93;17429:3;17340:93;:::i;:::-;17458:2;17453:3;17449:12;17442:19;;17101:366;;;:::o;17473:419::-;17639:4;17677:2;17666:9;17662:18;17654:26;;17726:9;17720:4;17716:20;17712:1;17701:9;17697:17;17690:47;17754:131;17880:4;17754:131;:::i;:::-;17746:139;;17473:419;;;:::o;17898:182::-;18038:34;18034:1;18026:6;18022:14;18015:58;17898:182;:::o;18086:366::-;18228:3;18249:67;18313:2;18308:3;18249:67;:::i;:::-;18242:74;;18325:93;18414:3;18325:93;:::i;:::-;18443:2;18438:3;18434:12;18427:19;;18086:366;;;:::o;18458:419::-;18624:4;18662:2;18651:9;18647:18;18639:26;;18711:9;18705:4;18701:20;18697:1;18686:9;18682:17;18675:47;18739:131;18865:4;18739:131;:::i;:::-;18731:139;;18458:419;;;:::o;18883:179::-;19023:31;19019:1;19011:6;19007:14;19000:55;18883:179;:::o;19068:366::-;19210:3;19231:67;19295:2;19290:3;19231:67;:::i;:::-;19224:74;;19307:93;19396:3;19307:93;:::i;:::-;19425:2;19420:3;19416:12;19409:19;;19068:366;;;:::o;19440:419::-;19606:4;19644:2;19633:9;19629:18;19621:26;;19693:9;19687:4;19683:20;19679:1;19668:9;19664:17;19657:47;19721:131;19847:4;19721:131;:::i;:::-;19713:139;;19440:419;;;:::o;19865:224::-;20005:34;20001:1;19993:6;19989:14;19982:58;20074:7;20069:2;20061:6;20057:15;20050:32;19865:224;:::o;20095:366::-;20237:3;20258:67;20322:2;20317:3;20258:67;:::i;:::-;20251:74;;20334:93;20423:3;20334:93;:::i;:::-;20452:2;20447:3;20443:12;20436:19;;20095:366;;;:::o;20467:419::-;20633:4;20671:2;20660:9;20656:18;20648:26;;20720:9;20714:4;20710:20;20706:1;20695:9;20691:17;20684:47;20748:131;20874:4;20748:131;:::i;:::-;20740:139;;20467:419;;;:::o;20892:222::-;21032:34;21028:1;21020:6;21016:14;21009:58;21101:5;21096:2;21088:6;21084:15;21077:30;20892:222;:::o;21120:366::-;21262:3;21283:67;21347:2;21342:3;21283:67;:::i;:::-;21276:74;;21359:93;21448:3;21359:93;:::i;:::-;21477:2;21472:3;21468:12;21461:19;;21120:366;;;:::o;21492:419::-;21658:4;21696:2;21685:9;21681:18;21673:26;;21745:9;21739:4;21735:20;21731:1;21720:9;21716:17;21709:47;21773:131;21899:4;21773:131;:::i;:::-;21765:139;;21492:419;;;:::o;21917:225::-;22057:34;22053:1;22045:6;22041:14;22034:58;22126:8;22121:2;22113:6;22109:15;22102:33;21917:225;:::o;22148:366::-;22290:3;22311:67;22375:2;22370:3;22311:67;:::i;:::-;22304:74;;22387:93;22476:3;22387:93;:::i;:::-;22505:2;22500:3;22496:12;22489:19;;22148:366;;;:::o;22520:419::-;22686:4;22724:2;22713:9;22709:18;22701:26;;22773:9;22767:4;22763:20;22759:1;22748:9;22744:17;22737:47;22801:131;22927:4;22801:131;:::i;:::-;22793:139;;22520:419;;;:::o;22945:180::-;22993:77;22990:1;22983:88;23090:4;23087:1;23080:15;23114:4;23111:1;23104:15;23131:185;23171:1;23188:20;23206:1;23188:20;:::i;:::-;23183:25;;23222:20;23240:1;23222:20;:::i;:::-;23217:25;;23261:1;23251:35;;23266:18;;:::i;:::-;23251:35;23308:1;23305;23301:9;23296:14;;23131:185;;;;:::o;23322:168::-;23462:20;23458:1;23450:6;23446:14;23439:44;23322:168;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:244::-;24433:34;24429:1;24421:6;24417:14;24410:58;24502:27;24497:2;24489:6;24485:15;24478:52;24293:244;:::o;24543:366::-;24685:3;24706:67;24770:2;24765:3;24706:67;:::i;:::-;24699:74;;24782:93;24871:3;24782:93;:::i;:::-;24900:2;24895:3;24891:12;24884:19;;24543:366;;;:::o;24915:419::-;25081:4;25119:2;25108:9;25104:18;25096:26;;25168:9;25162:4;25158:20;25154:1;25143:9;25139:17;25132:47;25196:131;25322:4;25196:131;:::i;:::-;25188:139;;24915:419;;;:::o;25340:241::-;25480:34;25476:1;25468:6;25464:14;25457:58;25549:24;25544:2;25536:6;25532:15;25525:49;25340:241;:::o;25587:366::-;25729:3;25750:67;25814:2;25809:3;25750:67;:::i;:::-;25743:74;;25826:93;25915:3;25826:93;:::i;:::-;25944:2;25939:3;25935:12;25928:19;;25587:366;;;:::o;25959:419::-;26125:4;26163:2;26152:9;26148:18;26140:26;;26212:9;26206:4;26202:20;26198:1;26187:9;26183:17;26176:47;26240:131;26366:4;26240:131;:::i;:::-;26232:139;;25959:419;;;:::o;26384:194::-;26424:4;26444:20;26462:1;26444:20;:::i;:::-;26439:25;;26478:20;26496:1;26478:20;:::i;:::-;26473:25;;26522:1;26519;26515:9;26507:17;;26546:1;26540:4;26537:11;26534:37;;;26551:18;;:::i;:::-;26534:37;26384:194;;;;:::o;26584:180::-;26632:77;26629:1;26622:88;26729:4;26726:1;26719:15;26753:4;26750:1;26743:15;26770:180;26818:77;26815:1;26808:88;26915:4;26912:1;26905:15;26939:4;26936:1;26929:15;26956:143;27013:5;27044:6;27038:13;27029:22;;27060:33;27087:5;27060:33;:::i;:::-;26956:143;;;;:::o;27105:351::-;27175:6;27224:2;27212:9;27203:7;27199:23;27195:32;27192:119;;;27230:79;;:::i;:::-;27192:119;27350:1;27375:64;27431:7;27422:6;27411:9;27407:22;27375:64;:::i;:::-;27365:74;;27321:128;27105:351;;;;:::o;27462:85::-;27507:7;27536:5;27525:16;;27462:85;;;:::o;27553:158::-;27611:9;27644:61;27662:42;27671:32;27697:5;27671:32;:::i;:::-;27662:42;:::i;:::-;27644:61;:::i;:::-;27631:74;;27553:158;;;:::o;27717:147::-;27812:45;27851:5;27812:45;:::i;:::-;27807:3;27800:58;27717:147;;:::o;27870:114::-;27937:6;27971:5;27965:12;27955:22;;27870:114;;;:::o;27990:184::-;28089:11;28123:6;28118:3;28111:19;28163:4;28158:3;28154:14;28139:29;;27990:184;;;;:::o;28180:132::-;28247:4;28270:3;28262:11;;28300:4;28295:3;28291:14;28283:22;;28180:132;;;:::o;28318:108::-;28395:24;28413:5;28395:24;:::i;:::-;28390:3;28383:37;28318:108;;:::o;28432:179::-;28501:10;28522:46;28564:3;28556:6;28522:46;:::i;:::-;28600:4;28595:3;28591:14;28577:28;;28432:179;;;;:::o;28617:113::-;28687:4;28719;28714:3;28710:14;28702:22;;28617:113;;;:::o;28766:732::-;28885:3;28914:54;28962:5;28914:54;:::i;:::-;28984:86;29063:6;29058:3;28984:86;:::i;:::-;28977:93;;29094:56;29144:5;29094:56;:::i;:::-;29173:7;29204:1;29189:284;29214:6;29211:1;29208:13;29189:284;;;29290:6;29284:13;29317:63;29376:3;29361:13;29317:63;:::i;:::-;29310:70;;29403:60;29456:6;29403:60;:::i;:::-;29393:70;;29249:224;29236:1;29233;29229:9;29224:14;;29189:284;;;29193:14;29489:3;29482:10;;28890:608;;;28766:732;;;;:::o;29504:831::-;29767:4;29805:3;29794:9;29790:19;29782:27;;29819:71;29887:1;29876:9;29872:17;29863:6;29819:71;:::i;:::-;29900:80;29976:2;29965:9;29961:18;29952:6;29900:80;:::i;:::-;30027:9;30021:4;30017:20;30012:2;30001:9;29997:18;29990:48;30055:108;30158:4;30149:6;30055:108;:::i;:::-;30047:116;;30173:72;30241:2;30230:9;30226:18;30217:6;30173:72;:::i;:::-;30255:73;30323:3;30312:9;30308:19;30299:6;30255:73;:::i;:::-;29504:831;;;;;;;;:::o

Swarm Source

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