ETH Price: $2,436.29 (-9.55%)

Token

FOSSIL (FOSSIL)

Overview

Max Total Supply

99,999,330.310662583632021585 FOSSIL

Holders

12,913

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
FOSSIL

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-07-30
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-20
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }


    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

        return c;
    }

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

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b);
        // There is no case in which this doesn't hold
        return c;
    }

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

   
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    // 返回代币名称
    function name() external view returns (string memory);

    // 返回代币符号
    function symbol() external view returns (string memory);

    // 返回代币的精度(小数位数)
    function decimals() external view returns (uint8);
}

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

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

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

    function WETH() external pure returns (address);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
     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
        );
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract FOSSIL is  ERC20Burnable,Ownable {
    using SafeMath for uint256;
   
    address public pair;
    address private holder;
    mapping(address => bool) public isTxFeeExempt;
    mapping(address => bool) public isMarketPair;
    mapping(address => bool) public isMarketRouter;
    address constant public usdt = address(0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9);
    
    uint256 constant _baseFee = 100;
    uint256 public _fee = 1; 
    //mainnet
    IUniswapV2Router02 public immutable uniswapV2Router;

    modifier onlyHolder(){
        require(msg.sender==holder,"FOSSIL: FORBID");
        _;
    }

    constructor() ERC20("FOSSIL","FOSSIL") {
        holder = msg.sender;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xc873fEcbd354f5A56E00E710B90EF4201db2448d);
        uniswapV2Router = _uniswapV2Router;
        pair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(address(this),0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9);
        isMarketPair[pair] = true;
        isMarketRouter[address(_uniswapV2Router)] = true;
        isTxFeeExempt[msg.sender] = true;
        isTxFeeExempt[address(this)] = true;

        _mint(msg.sender, 100000000 * 1e18);
    }       

    function setFee(uint256 _new) external onlyOwner {
        _fee = _new;
    }

    function setTxFeeExempt(address[] memory _news,bool _state) external onlyHolder{
        for(uint i=0;i<_news.length;i++){
            isTxFeeExempt[_news[i]] = _state;
        }
    }

    function setPair(address _pair) external onlyHolder{
        pair = _pair;
        isMarketPair[_pair] = true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual override{
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 finalAmount = takeFinalAmount(sender, recipient, amount);
        super._transfer(sender,recipient,finalAmount);
    }

    function takeFinalAmount(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (isTxFeeExempt[sender] || isTxFeeExempt[recipient]) {
            return amount;
        }
        uint256 feeAmount;
        if (isMarketPair[recipient] || isMarketPair[sender] ) {
            feeAmount = amount.mul(_fee).div(_baseFee);
            amount = amount.sub(feeAmount);
            if(feeAmount > 0){
                super._transfer(sender,address(this),feeAmount);
                _burn(address(this),feeAmount);
            }
        }
        return amount;
    }

    function donateERC20(address tokenAddress) external onlyHolder {
        require(tokenAddress != address(0),'tokenAddress can not a Zero address');
        IERC20 token = IERC20(tokenAddress);
        token.transfer(0xf41FF093BeF6188a0E4d74C039F05B81aB62dBdD,token.balanceOf(address(this)));
    }

    function donateETH() external onlyHolder {
        payable(0xf41FF093BeF6188a0E4d74C039F05B81aB62dBdD).transfer(address(this).balance);
    }
    
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"donateERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donateETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketRouter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_news","type":"address[]"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setTxFeeExempt","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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040526001600b553480156200001657600080fd5b506040518060400160405280600681526020017f464f5353494c00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f464f5353494c000000000000000000000000000000000000000000000000000081525081600390805190602001906200009b929190620006b9565b508060049080519060200190620000b4929190620006b9565b505050620000d7620000cb6200047360201b60201c565b6200047b60201b60201c565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073c873fecbd354f5a56e00e710b90ef4201db2448d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ae57600080fd5b505afa158015620001c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e99190620007d3565b73ffffffffffffffffffffffffffffffffffffffff1663e6a439053073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b81526004016200023992919062000816565b60206040518083038186803b1580156200025257600080fd5b505afa15801562000267573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028d9190620007d3565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200046c336a52b7d2dcc80cd2e40000006200054160201b60201c565b50620009ef565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620005b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ab90620008a4565b60405180910390fd5b620005c860008383620006af60201b60201c565b8060026000828254620005dc9190620008ff565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200068f91906200096d565b60405180910390a3620006ab60008383620006b460201b60201c565b5050565b505050565b505050565b828054620006c790620009b9565b90600052602060002090601f016020900481019282620006eb576000855562000737565b82601f106200070657805160ff191683800117855562000737565b8280016001018555821562000737579182015b828111156200073657825182559160200191906001019062000719565b5b5090506200074691906200074a565b5090565b5b80821115620007655760008160009055506001016200074b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200079b826200076e565b9050919050565b620007ad816200078e565b8114620007b957600080fd5b50565b600081519050620007cd81620007a2565b92915050565b600060208284031215620007ec57620007eb62000769565b5b6000620007fc84828501620007bc565b91505092915050565b62000810816200078e565b82525050565b60006040820190506200082d600083018562000805565b6200083c602083018462000805565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200088c601f8362000843565b9150620008998262000854565b602082019050919050565b60006020820190508181036000830152620008bf816200087d565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200090c82620008c6565b91506200091983620008c6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620009515762000950620008d0565b5b828201905092915050565b6200096781620008c6565b82525050565b60006020820190506200098460008301846200095c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009d257607f821691505b60208210811415620009e957620009e86200098a565b5b50919050565b608051612db762000a0b60003960006106660152612db76000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063a9059cbb11610071578063a9059cbb146104f5578063c5b37c2214610525578063dd62ed3e14610543578063f2fde38b14610573576101c4565b8063a457c2d71461048b578063a4605533146104bb578063a8aa1b31146104d7576101c4565b80638187f516116100d35780638187f516146104295780638b4c40b0146104455780638da5cb5b1461044f57806395d89b411461046d576101c4565b806370a08231146103d3578063715018a61461040357806379cc67901461040d576101c4565b80632f48ab7d116101665780633ecad271116101405780633ecad2711461033b57806342966c681461036b57806365e54ef11461038757806369fe0e2d146103b7576101c4565b80632f48ab7d146102cf578063313ce567146102ed578063395093511461030b576101c4565b80631694505e116101a25780631694505e1461024757806318160ddd1461026557806323b872dd146102835780632b475290146102b3576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063130f2d7114610217575b600080fd5b6101d161058f565b6040516101de9190611dfc565b60405180910390f35b61020160048036038101906101fc9190611ec6565b610621565b60405161020e9190611f21565b60405180910390f35b610231600480360381019061022c9190611f3c565b610644565b60405161023e9190611f21565b60405180910390f35b61024f610664565b60405161025c9190611fc8565b60405180910390f35b61026d610688565b60405161027a9190611ff2565b60405180910390f35b61029d6004803603810190610298919061200d565b610692565b6040516102aa9190611f21565b60405180910390f35b6102cd60048036038101906102c89190611f3c565b6106c1565b005b6102d76108f4565b6040516102e4919061206f565b60405180910390f35b6102f561090c565b60405161030291906120a6565b60405180910390f35b61032560048036038101906103209190611ec6565b610915565b6040516103329190611f21565b60405180910390f35b61035560048036038101906103509190611f3c565b61094c565b6040516103629190611f21565b60405180910390f35b610385600480360381019061038091906120c1565b61096c565b005b6103a1600480360381019061039c9190611f3c565b610980565b6040516103ae9190611f21565b60405180910390f35b6103d160048036038101906103cc91906120c1565b6109a0565b005b6103ed60048036038101906103e89190611f3c565b610a26565b6040516103fa9190611ff2565b60405180910390f35b61040b610a6e565b005b61042760048036038101906104229190611ec6565b610af6565b005b610443600480360381019061043e9190611f3c565b610b16565b005b61044d610c42565b005b610457610d2f565b604051610464919061206f565b60405180910390f35b610475610d59565b6040516104829190611dfc565b60405180910390f35b6104a560048036038101906104a09190611ec6565b610deb565b6040516104b29190611f21565b60405180910390f35b6104d560048036038101906104d09190612262565b610e62565b005b6104df610f87565b6040516104ec919061206f565b60405180910390f35b61050f600480360381019061050a9190611ec6565b610fad565b60405161051c9190611f21565b60405180910390f35b61052d610fd0565b60405161053a9190611ff2565b60405180910390f35b61055d600480360381019061055891906122be565b610fd6565b60405161056a9190611ff2565b60405180910390f35b61058d60048036038101906105889190611f3c565b61105d565b005b60606003805461059e9061232d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ca9061232d565b80156106175780601f106105ec57610100808354040283529160200191610617565b820191906000526020600020905b8154815290600101906020018083116105fa57829003601f168201915b5050505050905090565b60008061062c611155565b905061063981858561115d565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60008061069d611155565b90506106aa858285611328565b6106b58585856113b4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610748906123ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b89061243d565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73f41ff093bef6188a0e4d74c039f05b81ab62dbdd8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610830919061206f565b60206040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190612472565b6040518363ffffffff1660e01b815260040161089d92919061249f565b602060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906124dd565b505050565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb981565b60006012905090565b600080610920611155565b90506109418185856109328589610fd6565b61093c9190612539565b61115d565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b61097d610977611155565b826114b4565b50565b60086020528060005260406000206000915054906101000a900460ff1681565b6109a8611155565b73ffffffffffffffffffffffffffffffffffffffff166109c6610d2f565b73ffffffffffffffffffffffffffffffffffffffff1614610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a13906125db565b60405180910390fd5b80600b8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a76611155565b73ffffffffffffffffffffffffffffffffffffffff16610a94610d2f565b73ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906125db565b60405180910390fd5b610af46000611682565b565b610b0882610b02611155565b83611328565b610b1282826114b4565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906123ab565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc9906123ab565b60405180910390fd5b73f41ff093bef6188a0e4d74c039f05b81ab62dbdd73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d2c573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d689061232d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061232d565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b600080610df6611155565b90506000610e048286610fd6565b905083811015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061266d565b60405180910390fd5b610e56828686840361115d565b60019250505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee9906123ab565b60405180910390fd5b60005b8251811015610f82578160086000858481518110610f1657610f1561268d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f7a906126bc565b915050610ef5565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610fb8611155565b9050610fc58185856113b4565b600191505092915050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611065611155565b73ffffffffffffffffffffffffffffffffffffffff16611083610d2f565b73ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d0906125db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090612777565b60405180910390fd5b61115281611682565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490612809565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561123d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112349061289b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131b9190611ff2565b60405180910390a3505050565b60006113348484610fd6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113ae57818110156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612907565b60405180910390fd5b6113ad848484840361115d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b90612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612a2b565b60405180910390fd5b60006114a1848484611748565b90506114ae84848361190b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612abd565b60405180910390fd5b61153082600083611b83565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90612b4f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116699190611ff2565b60405180910390a361167d83600084611b88565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117eb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117f857819050611904565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061189b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118ff576118c860646118ba600b5486611b8d90919063ffffffff16565b611c0890919063ffffffff16565b90506118dd8184611c5290919063ffffffff16565b925060008111156118fe576118f385308361190b565b6118fd30826114b4565b5b5b829150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197290612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e290612a2b565b60405180910390fd5b6119f6838383611b83565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390612be1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6a9190611ff2565b60405180910390a3611b7d848484611b88565b50505050565b505050565b505050565b600080831415611ba05760009050611c02565b60008284611bae9190612c01565b9050828482611bbd9190612c8a565b14611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf490612d2d565b60405180910390fd5b809150505b92915050565b6000611c4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c9c565b905092915050565b6000611c9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cff565b905092915050565b60008083118290611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda9190611dfc565b60405180910390fd5b5060008385611cf29190612c8a565b9050809150509392505050565b6000838311158290611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e9190611dfc565b60405180910390fd5b5060008385611d569190612d4d565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d9d578082015181840152602081019050611d82565b83811115611dac576000848401525b50505050565b6000601f19601f8301169050919050565b6000611dce82611d63565b611dd88185611d6e565b9350611de8818560208601611d7f565b611df181611db2565b840191505092915050565b60006020820190508181036000830152611e168184611dc3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e5d82611e32565b9050919050565b611e6d81611e52565b8114611e7857600080fd5b50565b600081359050611e8a81611e64565b92915050565b6000819050919050565b611ea381611e90565b8114611eae57600080fd5b50565b600081359050611ec081611e9a565b92915050565b60008060408385031215611edd57611edc611e28565b5b6000611eeb85828601611e7b565b9250506020611efc85828601611eb1565b9150509250929050565b60008115159050919050565b611f1b81611f06565b82525050565b6000602082019050611f366000830184611f12565b92915050565b600060208284031215611f5257611f51611e28565b5b6000611f6084828501611e7b565b91505092915050565b6000819050919050565b6000611f8e611f89611f8484611e32565b611f69565b611e32565b9050919050565b6000611fa082611f73565b9050919050565b6000611fb282611f95565b9050919050565b611fc281611fa7565b82525050565b6000602082019050611fdd6000830184611fb9565b92915050565b611fec81611e90565b82525050565b60006020820190506120076000830184611fe3565b92915050565b60008060006060848603121561202657612025611e28565b5b600061203486828701611e7b565b935050602061204586828701611e7b565b925050604061205686828701611eb1565b9150509250925092565b61206981611e52565b82525050565b60006020820190506120846000830184612060565b92915050565b600060ff82169050919050565b6120a08161208a565b82525050565b60006020820190506120bb6000830184612097565b92915050565b6000602082840312156120d7576120d6611e28565b5b60006120e584828501611eb1565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61212b82611db2565b810181811067ffffffffffffffff8211171561214a576121496120f3565b5b80604052505050565b600061215d611e1e565b90506121698282612122565b919050565b600067ffffffffffffffff821115612189576121886120f3565b5b602082029050602081019050919050565b600080fd5b60006121b26121ad8461216e565b612153565b905080838252602082019050602084028301858111156121d5576121d461219a565b5b835b818110156121fe57806121ea8882611e7b565b8452602084019350506020810190506121d7565b5050509392505050565b600082601f83011261221d5761221c6120ee565b5b813561222d84826020860161219f565b91505092915050565b61223f81611f06565b811461224a57600080fd5b50565b60008135905061225c81612236565b92915050565b6000806040838503121561227957612278611e28565b5b600083013567ffffffffffffffff81111561229757612296611e2d565b5b6122a385828601612208565b92505060206122b48582860161224d565b9150509250929050565b600080604083850312156122d5576122d4611e28565b5b60006122e385828601611e7b565b92505060206122f485828601611e7b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061234557607f821691505b60208210811415612359576123586122fe565b5b50919050565b7f464f5353494c3a20464f52424944000000000000000000000000000000000000600082015250565b6000612395600e83611d6e565b91506123a08261235f565b602082019050919050565b600060208201905081810360008301526123c481612388565b9050919050565b7f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612427602383611d6e565b9150612432826123cb565b604082019050919050565b600060208201905081810360008301526124568161241a565b9050919050565b60008151905061246c81611e9a565b92915050565b60006020828403121561248857612487611e28565b5b60006124968482850161245d565b91505092915050565b60006040820190506124b46000830185612060565b6124c16020830184611fe3565b9392505050565b6000815190506124d781612236565b92915050565b6000602082840312156124f3576124f2611e28565b5b6000612501848285016124c8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061254482611e90565b915061254f83611e90565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125845761258361250a565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125c5602083611d6e565b91506125d08261258f565b602082019050919050565b600060208201905081810360008301526125f4816125b8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612657602583611d6e565b9150612662826125fb565b604082019050919050565b600060208201905081810360008301526126868161264a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006126c782611e90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126fa576126f961250a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612761602683611d6e565b915061276c82612705565b604082019050919050565b6000602082019050818103600083015261279081612754565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127f3602483611d6e565b91506127fe82612797565b604082019050919050565b60006020820190508181036000830152612822816127e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612885602283611d6e565b915061289082612829565b604082019050919050565b600060208201905081810360008301526128b481612878565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006128f1601d83611d6e565b91506128fc826128bb565b602082019050919050565b60006020820190508181036000830152612920816128e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612983602583611d6e565b915061298e82612927565b604082019050919050565b600060208201905081810360008301526129b281612976565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a15602383611d6e565b9150612a20826129b9565b604082019050919050565b60006020820190508181036000830152612a4481612a08565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa7602183611d6e565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b39602283611d6e565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612bcb602683611d6e565b9150612bd682612b6f565b604082019050919050565b60006020820190508181036000830152612bfa81612bbe565b9050919050565b6000612c0c82611e90565b9150612c1783611e90565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c5057612c4f61250a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c9582611e90565b9150612ca083611e90565b925082612cb057612caf612c5b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d17602183611d6e565b9150612d2282612cbb565b604082019050919050565b60006020820190508181036000830152612d4681612d0a565b9050919050565b6000612d5882611e90565b9150612d6383611e90565b925082821015612d7657612d7561250a565b5b82820390509291505056fea2646970667358221220c3e566c1ca9dec59bb6b5652e7099d805f018309edd0536e8d7fd9f45485f5d364736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063a9059cbb11610071578063a9059cbb146104f5578063c5b37c2214610525578063dd62ed3e14610543578063f2fde38b14610573576101c4565b8063a457c2d71461048b578063a4605533146104bb578063a8aa1b31146104d7576101c4565b80638187f516116100d35780638187f516146104295780638b4c40b0146104455780638da5cb5b1461044f57806395d89b411461046d576101c4565b806370a08231146103d3578063715018a61461040357806379cc67901461040d576101c4565b80632f48ab7d116101665780633ecad271116101405780633ecad2711461033b57806342966c681461036b57806365e54ef11461038757806369fe0e2d146103b7576101c4565b80632f48ab7d146102cf578063313ce567146102ed578063395093511461030b576101c4565b80631694505e116101a25780631694505e1461024757806318160ddd1461026557806323b872dd146102835780632b475290146102b3576101c4565b806306fdde03146101c9578063095ea7b3146101e7578063130f2d7114610217575b600080fd5b6101d161058f565b6040516101de9190611dfc565b60405180910390f35b61020160048036038101906101fc9190611ec6565b610621565b60405161020e9190611f21565b60405180910390f35b610231600480360381019061022c9190611f3c565b610644565b60405161023e9190611f21565b60405180910390f35b61024f610664565b60405161025c9190611fc8565b60405180910390f35b61026d610688565b60405161027a9190611ff2565b60405180910390f35b61029d6004803603810190610298919061200d565b610692565b6040516102aa9190611f21565b60405180910390f35b6102cd60048036038101906102c89190611f3c565b6106c1565b005b6102d76108f4565b6040516102e4919061206f565b60405180910390f35b6102f561090c565b60405161030291906120a6565b60405180910390f35b61032560048036038101906103209190611ec6565b610915565b6040516103329190611f21565b60405180910390f35b61035560048036038101906103509190611f3c565b61094c565b6040516103629190611f21565b60405180910390f35b610385600480360381019061038091906120c1565b61096c565b005b6103a1600480360381019061039c9190611f3c565b610980565b6040516103ae9190611f21565b60405180910390f35b6103d160048036038101906103cc91906120c1565b6109a0565b005b6103ed60048036038101906103e89190611f3c565b610a26565b6040516103fa9190611ff2565b60405180910390f35b61040b610a6e565b005b61042760048036038101906104229190611ec6565b610af6565b005b610443600480360381019061043e9190611f3c565b610b16565b005b61044d610c42565b005b610457610d2f565b604051610464919061206f565b60405180910390f35b610475610d59565b6040516104829190611dfc565b60405180910390f35b6104a560048036038101906104a09190611ec6565b610deb565b6040516104b29190611f21565b60405180910390f35b6104d560048036038101906104d09190612262565b610e62565b005b6104df610f87565b6040516104ec919061206f565b60405180910390f35b61050f600480360381019061050a9190611ec6565b610fad565b60405161051c9190611f21565b60405180910390f35b61052d610fd0565b60405161053a9190611ff2565b60405180910390f35b61055d600480360381019061055891906122be565b610fd6565b60405161056a9190611ff2565b60405180910390f35b61058d60048036038101906105889190611f3c565b61105d565b005b60606003805461059e9061232d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ca9061232d565b80156106175780601f106105ec57610100808354040283529160200191610617565b820191906000526020600020905b8154815290600101906020018083116105fa57829003601f168201915b5050505050905090565b60008061062c611155565b905061063981858561115d565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d81565b6000600254905090565b60008061069d611155565b90506106aa858285611328565b6106b58585856113b4565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610751576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610748906123ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b89061243d565b60405180910390fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73f41ff093bef6188a0e4d74c039f05b81ab62dbdd8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610830919061206f565b60206040518083038186803b15801561084857600080fd5b505afa15801561085c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108809190612472565b6040518363ffffffff1660e01b815260040161089d92919061249f565b602060405180830381600087803b1580156108b757600080fd5b505af11580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef91906124dd565b505050565b73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb981565b60006012905090565b600080610920611155565b90506109418185856109328589610fd6565b61093c9190612539565b61115d565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b61097d610977611155565b826114b4565b50565b60086020528060005260406000206000915054906101000a900460ff1681565b6109a8611155565b73ffffffffffffffffffffffffffffffffffffffff166109c6610d2f565b73ffffffffffffffffffffffffffffffffffffffff1614610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a13906125db565b60405180910390fd5b80600b8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a76611155565b73ffffffffffffffffffffffffffffffffffffffff16610a94610d2f565b73ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906125db565b60405180910390fd5b610af46000611682565b565b610b0882610b02611155565b83611328565b610b1282826114b4565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906123ab565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc9906123ab565b60405180910390fd5b73f41ff093bef6188a0e4d74c039f05b81ab62dbdd73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d2c573d6000803e3d6000fd5b50565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d689061232d565b80601f0160208091040260200160405190810160405280929190818152602001828054610d949061232d565b8015610de15780601f10610db657610100808354040283529160200191610de1565b820191906000526020600020905b815481529060010190602001808311610dc457829003601f168201915b5050505050905090565b600080610df6611155565b90506000610e048286610fd6565b905083811015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e409061266d565b60405180910390fd5b610e56828686840361115d565b60019250505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee9906123ab565b60405180910390fd5b60005b8251811015610f82578160086000858481518110610f1657610f1561268d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f7a906126bc565b915050610ef5565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610fb8611155565b9050610fc58185856113b4565b600191505092915050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611065611155565b73ffffffffffffffffffffffffffffffffffffffff16611083610d2f565b73ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d0906125db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090612777565b60405180910390fd5b61115281611682565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490612809565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561123d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112349061289b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131b9190611ff2565b60405180910390a3505050565b60006113348484610fd6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113ae57818110156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612907565b60405180910390fd5b6113ad848484840361115d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b90612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612a2b565b60405180910390fd5b60006114a1848484611748565b90506114ae84848361190b565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612abd565b60405180910390fd5b61153082600083611b83565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90612b4f565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116699190611ff2565b60405180910390a361167d83600084611b88565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117eb5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117f857819050611904565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061189b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118ff576118c860646118ba600b5486611b8d90919063ffffffff16565b611c0890919063ffffffff16565b90506118dd8184611c5290919063ffffffff16565b925060008111156118fe576118f385308361190b565b6118fd30826114b4565b5b5b829150505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197290612999565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e290612a2b565b60405180910390fd5b6119f6838383611b83565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7390612be1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6a9190611ff2565b60405180910390a3611b7d848484611b88565b50505050565b505050565b505050565b600080831415611ba05760009050611c02565b60008284611bae9190612c01565b9050828482611bbd9190612c8a565b14611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf490612d2d565b60405180910390fd5b809150505b92915050565b6000611c4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c9c565b905092915050565b6000611c9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cff565b905092915050565b60008083118290611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda9190611dfc565b60405180910390fd5b5060008385611cf29190612c8a565b9050809150509392505050565b6000838311158290611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e9190611dfc565b60405180910390fd5b5060008385611d569190612d4d565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d9d578082015181840152602081019050611d82565b83811115611dac576000848401525b50505050565b6000601f19601f8301169050919050565b6000611dce82611d63565b611dd88185611d6e565b9350611de8818560208601611d7f565b611df181611db2565b840191505092915050565b60006020820190508181036000830152611e168184611dc3565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e5d82611e32565b9050919050565b611e6d81611e52565b8114611e7857600080fd5b50565b600081359050611e8a81611e64565b92915050565b6000819050919050565b611ea381611e90565b8114611eae57600080fd5b50565b600081359050611ec081611e9a565b92915050565b60008060408385031215611edd57611edc611e28565b5b6000611eeb85828601611e7b565b9250506020611efc85828601611eb1565b9150509250929050565b60008115159050919050565b611f1b81611f06565b82525050565b6000602082019050611f366000830184611f12565b92915050565b600060208284031215611f5257611f51611e28565b5b6000611f6084828501611e7b565b91505092915050565b6000819050919050565b6000611f8e611f89611f8484611e32565b611f69565b611e32565b9050919050565b6000611fa082611f73565b9050919050565b6000611fb282611f95565b9050919050565b611fc281611fa7565b82525050565b6000602082019050611fdd6000830184611fb9565b92915050565b611fec81611e90565b82525050565b60006020820190506120076000830184611fe3565b92915050565b60008060006060848603121561202657612025611e28565b5b600061203486828701611e7b565b935050602061204586828701611e7b565b925050604061205686828701611eb1565b9150509250925092565b61206981611e52565b82525050565b60006020820190506120846000830184612060565b92915050565b600060ff82169050919050565b6120a08161208a565b82525050565b60006020820190506120bb6000830184612097565b92915050565b6000602082840312156120d7576120d6611e28565b5b60006120e584828501611eb1565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61212b82611db2565b810181811067ffffffffffffffff8211171561214a576121496120f3565b5b80604052505050565b600061215d611e1e565b90506121698282612122565b919050565b600067ffffffffffffffff821115612189576121886120f3565b5b602082029050602081019050919050565b600080fd5b60006121b26121ad8461216e565b612153565b905080838252602082019050602084028301858111156121d5576121d461219a565b5b835b818110156121fe57806121ea8882611e7b565b8452602084019350506020810190506121d7565b5050509392505050565b600082601f83011261221d5761221c6120ee565b5b813561222d84826020860161219f565b91505092915050565b61223f81611f06565b811461224a57600080fd5b50565b60008135905061225c81612236565b92915050565b6000806040838503121561227957612278611e28565b5b600083013567ffffffffffffffff81111561229757612296611e2d565b5b6122a385828601612208565b92505060206122b48582860161224d565b9150509250929050565b600080604083850312156122d5576122d4611e28565b5b60006122e385828601611e7b565b92505060206122f485828601611e7b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061234557607f821691505b60208210811415612359576123586122fe565b5b50919050565b7f464f5353494c3a20464f52424944000000000000000000000000000000000000600082015250565b6000612395600e83611d6e565b91506123a08261235f565b602082019050919050565b600060208201905081810360008301526123c481612388565b9050919050565b7f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612427602383611d6e565b9150612432826123cb565b604082019050919050565b600060208201905081810360008301526124568161241a565b9050919050565b60008151905061246c81611e9a565b92915050565b60006020828403121561248857612487611e28565b5b60006124968482850161245d565b91505092915050565b60006040820190506124b46000830185612060565b6124c16020830184611fe3565b9392505050565b6000815190506124d781612236565b92915050565b6000602082840312156124f3576124f2611e28565b5b6000612501848285016124c8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061254482611e90565b915061254f83611e90565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156125845761258361250a565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125c5602083611d6e565b91506125d08261258f565b602082019050919050565b600060208201905081810360008301526125f4816125b8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612657602583611d6e565b9150612662826125fb565b604082019050919050565b600060208201905081810360008301526126868161264a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006126c782611e90565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126fa576126f961250a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612761602683611d6e565b915061276c82612705565b604082019050919050565b6000602082019050818103600083015261279081612754565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127f3602483611d6e565b91506127fe82612797565b604082019050919050565b60006020820190508181036000830152612822816127e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612885602283611d6e565b915061289082612829565b604082019050919050565b600060208201905081810360008301526128b481612878565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006128f1601d83611d6e565b91506128fc826128bb565b602082019050919050565b60006020820190508181036000830152612920816128e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612983602583611d6e565b915061298e82612927565b604082019050919050565b600060208201905081810360008301526129b281612976565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612a15602383611d6e565b9150612a20826129b9565b604082019050919050565b60006020820190508181036000830152612a4481612a08565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa7602183611d6e565b9150612ab282612a4b565b604082019050919050565b60006020820190508181036000830152612ad681612a9a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b39602283611d6e565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612bcb602683611d6e565b9150612bd682612b6f565b604082019050919050565b60006020820190508181036000830152612bfa81612bbe565b9050919050565b6000612c0c82611e90565b9150612c1783611e90565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c5057612c4f61250a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c9582611e90565b9150612ca083611e90565b925082612cb057612caf612c5b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d17602183611d6e565b9150612d2282612cbb565b604082019050919050565b60006020820190508181036000830152612d4681612d0a565b9050919050565b6000612d5882611e90565b9150612d6383611e90565b925082821015612d7657612d7561250a565b5b82820390509291505056fea2646970667358221220c3e566c1ca9dec59bb6b5652e7099d805f018309edd0536e8d7fd9f45485f5d364736f6c63430008090033

Deployed Bytecode Sourcemap

21853:3211:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12270:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22098:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22330:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11039:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13051:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24603:301;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22151:82;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10881:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13755:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22047:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21272:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21995:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23104:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11210:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8322:103;;;:::i;:::-;;21682:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23387:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24912:143;;;:::i;:::-;;7671:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10138:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14496:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23191:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21940:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11543:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22284:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11799:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8580:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9919:100;9973:13;10006:5;9999:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:100;:::o;12270:201::-;12353:4;12370:13;12386:12;:10;:12::i;:::-;12370:28;;12409:32;12418:5;12425:7;12434:6;12409:8;:32::i;:::-;12459:4;12452:11;;;12270:201;;;;:::o;22098:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;22330:51::-;;;:::o;11039:108::-;11100:7;11127:12;;11120:19;;11039:108;:::o;13051:295::-;13182:4;13199:15;13217:12;:10;:12::i;:::-;13199:30;;13240:38;13256:4;13262:7;13271:6;13240:15;:38::i;:::-;13289:27;13299:4;13305:2;13309:6;13289:9;:27::i;:::-;13334:4;13327:11;;;13051:295;;;;;:::o;24603:301::-;22442:6;;;;;;;;;;;22430:18;;:10;:18;;;22422:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;24709:1:::1;24685:26;;:12;:26;;;;24677:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24761:12;24783;24761:35;;24807:5;:14;;;24822:42;24865:5;:15;;;24889:4;24865:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24807:89;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24666:238;24603:301:::0;:::o;22151:82::-;22190:42;22151:82;:::o;10881:93::-;10939:5;10964:2;10957:9;;10881:93;:::o;13755:238::-;13843:4;13860:13;13876:12;:10;:12::i;:::-;13860:28;;13899:64;13908:5;13915:7;13952:10;13924:25;13934:5;13941:7;13924:9;:25::i;:::-;:38;;;;:::i;:::-;13899:8;:64::i;:::-;13981:4;13974:11;;;13755:238;;;;:::o;22047:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;21272:91::-;21328:27;21334:12;:10;:12::i;:::-;21348:6;21328:5;:27::i;:::-;21272:91;:::o;21995:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;23104:79::-;7902:12;:10;:12::i;:::-;7891:23;;:7;:5;:7::i;:::-;:23;;;7883:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23171:4:::1;23164;:11;;;;23104:79:::0;:::o;11210:127::-;11284:7;11311:9;:18;11321:7;11311:18;;;;;;;;;;;;;;;;11304:25;;11210:127;;;:::o;8322:103::-;7902:12;:10;:12::i;:::-;7891:23;;:7;:5;:7::i;:::-;:23;;;7883:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8387:30:::1;8414:1;8387:18;:30::i;:::-;8322:103::o:0;21682:164::-;21759:46;21775:7;21784:12;:10;:12::i;:::-;21798:6;21759:15;:46::i;:::-;21816:22;21822:7;21831:6;21816:5;:22::i;:::-;21682:164;;:::o;23387:119::-;22442:6;;;;;;;;;;;22430:18;;:10;:18;;;22422:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23456:5:::1;23449:4;;:12;;;;;;;;;;;;;;;;;;23494:4;23472:12;:19;23485:5;23472:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;23387:119:::0;:::o;24912:143::-;22442:6;;;;;;;;;;;22430:18;;:10;:18;;;22422:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;24972:42:::1;24964:60;;:83;25025:21;24964:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24912:143::o:0;7671:87::-;7717:7;7744:6;;;;;;;;;;;7737:13;;7671:87;:::o;10138:104::-;10194:13;10227:7;10220:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10138:104;:::o;14496:436::-;14589:4;14606:13;14622:12;:10;:12::i;:::-;14606:28;;14645:24;14672:25;14682:5;14689:7;14672:9;:25::i;:::-;14645:52;;14736:15;14716:16;:35;;14708:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14829:60;14838:5;14845:7;14873:15;14854:16;:34;14829:8;:60::i;:::-;14920:4;14913:11;;;;14496:436;;;;:::o;23191:188::-;22442:6;;;;;;;;;;;22430:18;;:10;:18;;;22422:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;23285:6:::1;23281:91;23296:5;:12;23294:1;:14;23281:91;;;23354:6;23328:13;:23;23342:5;23348:1;23342:8;;;;;;;;:::i;:::-;;;;;;;;23328:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;23309:3;;;;;:::i;:::-;;;;23281:91;;;;23191:188:::0;;:::o;21940:19::-;;;;;;;;;;;;;:::o;11543:193::-;11622:4;11639:13;11655:12;:10;:12::i;:::-;11639:28;;11678;11688:5;11695:2;11699:6;11678:9;:28::i;:::-;11724:4;11717:11;;;11543:193;;;;:::o;22284:23::-;;;;:::o;11799:151::-;11888:7;11915:11;:18;11927:5;11915:18;;;;;;;;;;;;;;;:27;11934:7;11915:27;;;;;;;;;;;;;;;;11908:34;;11799:151;;;;:::o;8580:201::-;7902:12;:10;:12::i;:::-;7891:23;;:7;:5;:7::i;:::-;:23;;;7883:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8689:1:::1;8669:22;;:8;:22;;;;8661:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8745:28;8764:8;8745:18;:28::i;:::-;8580:201:::0;:::o;7045:98::-;7098:7;7125:10;7118:17;;7045:98;:::o;18523:380::-;18676:1;18659:19;;:5;:19;;;;18651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18757:1;18738:21;;:7;:21;;;;18730:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18841:6;18811:11;:18;18823:5;18811:18;;;;;;;;;;;;;;;:27;18830:7;18811:27;;;;;;;;;;;;;;;:36;;;;18879:7;18863:32;;18872:5;18863:32;;;18888:6;18863:32;;;;;;:::i;:::-;;;;;;;;18523:380;;;:::o;19194:453::-;19329:24;19356:25;19366:5;19373:7;19356:9;:25::i;:::-;19329:52;;19416:17;19396:16;:37;19392:248;;19478:6;19458:16;:26;;19450:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19562:51;19571:5;19578:7;19606:6;19587:16;:25;19562:8;:51::i;:::-;19392:248;19318:329;19194:453;;;:::o;23514:431::-;23680:1;23662:20;;:6;:20;;;;23654:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23764:1;23743:23;;:9;:23;;;;23735:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23817:19;23839:42;23855:6;23863:9;23874:6;23839:15;:42::i;:::-;23817:64;;23892:45;23908:6;23915:9;23925:11;23892:15;:45::i;:::-;23643:302;23514:431;;;:::o;17410:675::-;17513:1;17494:21;;:7;:21;;;;17486:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17566:49;17587:7;17604:1;17608:6;17566:20;:49::i;:::-;17628:22;17653:9;:18;17663:7;17653:18;;;;;;;;;;;;;;;;17628:43;;17708:6;17690:14;:24;;17682:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17827:6;17810:14;:23;17789:9;:18;17799:7;17789:18;;;;;;;;;;;;;;;:44;;;;17944:6;17928:12;;:22;;;;;;;;;;;18005:1;17979:37;;17988:7;17979:37;;;18009:6;17979:37;;;;;;:::i;:::-;;;;;;;;18029:48;18049:7;18066:1;18070:6;18029:19;:48::i;:::-;17475:610;17410:675;;:::o;8941:191::-;9015:16;9034:6;;;;;;;;;;;9015:25;;9060:8;9051:6;;:17;;;;;;;;;;;;;;;;;;9115:8;9084:40;;9105:8;9084:40;;;;;;;;;;;;9004:128;8941:191;:::o;23953:642::-;24081:7;24105:13;:21;24119:6;24105:21;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;24130:13;:24;24144:9;24130:24;;;;;;;;;;;;;;;;;;;;;;;;;24105:49;24101:95;;;24178:6;24171:13;;;;24101:95;24206:17;24238:12;:23;24251:9;24238:23;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;24265:12;:20;24278:6;24265:20;;;;;;;;;;;;;;;;;;;;;;;;;24238:47;24234:330;;;24315:30;22274:3;24315:16;24326:4;;24315:6;:10;;:16;;;;:::i;:::-;:20;;:30;;;;:::i;:::-;24303:42;;24369:21;24380:9;24369:6;:10;;:21;;;;:::i;:::-;24360:30;;24420:1;24408:9;:13;24405:148;;;24441:47;24457:6;24472:4;24478:9;24441:15;:47::i;:::-;24507:30;24521:4;24527:9;24507:5;:30::i;:::-;24405:148;24234:330;24581:6;24574:13;;;23953:642;;;;;;:::o;15402:840::-;15549:1;15533:18;;:4;:18;;;;15525:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15626:1;15612:16;;:2;:16;;;;15604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15681:38;15702:4;15708:2;15712:6;15681:20;:38::i;:::-;15732:19;15754:9;:15;15764:4;15754:15;;;;;;;;;;;;;;;;15732:37;;15803:6;15788:11;:21;;15780:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15920:6;15906:11;:20;15888:9;:15;15898:4;15888:15;;;;;;;;;;;;;;;:38;;;;16123:6;16106:9;:13;16116:2;16106:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16173:2;16158:26;;16167:4;16158:26;;;16177:6;16158:26;;;;;;:::i;:::-;;;;;;;;16197:37;16217:4;16223:2;16227:6;16197:19;:37::i;:::-;15514:728;15402:840;;;:::o;20247:125::-;;;;:::o;20976:124::-;;;;:::o;3331:246::-;3389:7;3418:1;3413;:6;3409:47;;;3443:1;3436:8;;;;3409:47;3466:9;3482:1;3478;:5;;;;:::i;:::-;3466:17;;3511:1;3506;3502;:5;;;;:::i;:::-;:10;3494:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3568:1;3561:8;;;3331:246;;;;;:::o;3585:132::-;3643:7;3670:39;3674:1;3677;3670:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3663:46;;3585:132;;;;:::o;2953:136::-;3011:7;3038:43;3042:1;3045;3038:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3031:50;;2953:136;;;;:::o;3725:319::-;3845:7;3877:1;3873;:5;3880:12;3865:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3904:9;3920:1;3916;:5;;;;:::i;:::-;3904:17;;4035:1;4028:8;;;3725:319;;;;;:::o;3097:226::-;3217:7;3250:1;3245;:6;;3253:12;3237:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3277:9;3293:1;3289;:5;;;;:::i;:::-;3277:17;;3314:1;3307:8;;;3097:226;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:619::-;5231:6;5239;5247;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5549:2;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5520:118;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5154:619;;;;;:::o;5779:118::-;5866:24;5884:5;5866:24;:::i;:::-;5861:3;5854:37;5779:118;;:::o;5903:222::-;5996:4;6034:2;6023:9;6019:18;6011:26;;6047:71;6115:1;6104:9;6100:17;6091:6;6047:71;:::i;:::-;5903:222;;;;:::o;6131:86::-;6166:7;6206:4;6199:5;6195:16;6184:27;;6131:86;;;:::o;6223:112::-;6306:22;6322:5;6306:22;:::i;:::-;6301:3;6294:35;6223:112;;:::o;6341:214::-;6430:4;6468:2;6457:9;6453:18;6445:26;;6481:67;6545:1;6534:9;6530:17;6521:6;6481:67;:::i;:::-;6341:214;;;;:::o;6561:329::-;6620:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:119;;;6675:79;;:::i;:::-;6637:119;6795:1;6820:53;6865:7;6856:6;6845:9;6841:22;6820:53;:::i;:::-;6810:63;;6766:117;6561:329;;;;:::o;6896:117::-;7005:1;7002;6995:12;7019:180;7067:77;7064:1;7057:88;7164:4;7161:1;7154:15;7188:4;7185:1;7178:15;7205:281;7288:27;7310:4;7288:27;:::i;:::-;7280:6;7276:40;7418:6;7406:10;7403:22;7382:18;7370:10;7367:34;7364:62;7361:88;;;7429:18;;:::i;:::-;7361:88;7469:10;7465:2;7458:22;7248:238;7205:281;;:::o;7492:129::-;7526:6;7553:20;;:::i;:::-;7543:30;;7582:33;7610:4;7602:6;7582:33;:::i;:::-;7492:129;;;:::o;7627:311::-;7704:4;7794:18;7786:6;7783:30;7780:56;;;7816:18;;:::i;:::-;7780:56;7866:4;7858:6;7854:17;7846:25;;7926:4;7920;7916:15;7908:23;;7627:311;;;:::o;7944:117::-;8053:1;8050;8043:12;8084:710;8180:5;8205:81;8221:64;8278:6;8221:64;:::i;:::-;8205:81;:::i;:::-;8196:90;;8306:5;8335:6;8328:5;8321:21;8369:4;8362:5;8358:16;8351:23;;8422:4;8414:6;8410:17;8402:6;8398:30;8451:3;8443:6;8440:15;8437:122;;;8470:79;;:::i;:::-;8437:122;8585:6;8568:220;8602:6;8597:3;8594:15;8568:220;;;8677:3;8706:37;8739:3;8727:10;8706:37;:::i;:::-;8701:3;8694:50;8773:4;8768:3;8764:14;8757:21;;8644:144;8628:4;8623:3;8619:14;8612:21;;8568:220;;;8572:21;8186:608;;8084:710;;;;;:::o;8817:370::-;8888:5;8937:3;8930:4;8922:6;8918:17;8914:27;8904:122;;8945:79;;:::i;:::-;8904:122;9062:6;9049:20;9087:94;9177:3;9169:6;9162:4;9154:6;9150:17;9087:94;:::i;:::-;9078:103;;8894:293;8817:370;;;;:::o;9193:116::-;9263:21;9278:5;9263:21;:::i;:::-;9256:5;9253:32;9243:60;;9299:1;9296;9289:12;9243:60;9193:116;:::o;9315:133::-;9358:5;9396:6;9383:20;9374:29;;9412:30;9436:5;9412:30;:::i;:::-;9315:133;;;;:::o;9454:678::-;9544:6;9552;9601:2;9589:9;9580:7;9576:23;9572:32;9569:119;;;9607:79;;:::i;:::-;9569:119;9755:1;9744:9;9740:17;9727:31;9785:18;9777:6;9774:30;9771:117;;;9807:79;;:::i;:::-;9771:117;9912:78;9982:7;9973:6;9962:9;9958:22;9912:78;:::i;:::-;9902:88;;9698:302;10039:2;10065:50;10107:7;10098:6;10087:9;10083:22;10065:50;:::i;:::-;10055:60;;10010:115;9454:678;;;;;:::o;10138:474::-;10206:6;10214;10263:2;10251:9;10242:7;10238:23;10234:32;10231:119;;;10269:79;;:::i;:::-;10231:119;10389:1;10414:53;10459:7;10450:6;10439:9;10435:22;10414:53;:::i;:::-;10404:63;;10360:117;10516:2;10542:53;10587:7;10578:6;10567:9;10563:22;10542:53;:::i;:::-;10532:63;;10487:118;10138:474;;;;;:::o;10618:180::-;10666:77;10663:1;10656:88;10763:4;10760:1;10753:15;10787:4;10784:1;10777:15;10804:320;10848:6;10885:1;10879:4;10875:12;10865:22;;10932:1;10926:4;10922:12;10953:18;10943:81;;11009:4;11001:6;10997:17;10987:27;;10943:81;11071:2;11063:6;11060:14;11040:18;11037:38;11034:84;;;11090:18;;:::i;:::-;11034:84;10855:269;10804:320;;;:::o;11130:164::-;11270:16;11266:1;11258:6;11254:14;11247:40;11130:164;:::o;11300:366::-;11442:3;11463:67;11527:2;11522:3;11463:67;:::i;:::-;11456:74;;11539:93;11628:3;11539:93;:::i;:::-;11657:2;11652:3;11648:12;11641:19;;11300:366;;;:::o;11672:419::-;11838:4;11876:2;11865:9;11861:18;11853:26;;11925:9;11919:4;11915:20;11911:1;11900:9;11896:17;11889:47;11953:131;12079:4;11953:131;:::i;:::-;11945:139;;11672:419;;;:::o;12097:222::-;12237:34;12233:1;12225:6;12221:14;12214:58;12306:5;12301:2;12293:6;12289:15;12282:30;12097:222;:::o;12325:366::-;12467:3;12488:67;12552:2;12547:3;12488:67;:::i;:::-;12481:74;;12564:93;12653:3;12564:93;:::i;:::-;12682:2;12677:3;12673:12;12666:19;;12325:366;;;:::o;12697:419::-;12863:4;12901:2;12890:9;12886:18;12878:26;;12950:9;12944:4;12940:20;12936:1;12925:9;12921:17;12914:47;12978:131;13104:4;12978:131;:::i;:::-;12970:139;;12697:419;;;:::o;13122:143::-;13179:5;13210:6;13204:13;13195:22;;13226:33;13253:5;13226:33;:::i;:::-;13122:143;;;;:::o;13271:351::-;13341:6;13390:2;13378:9;13369:7;13365:23;13361:32;13358:119;;;13396:79;;:::i;:::-;13358:119;13516:1;13541:64;13597:7;13588:6;13577:9;13573:22;13541:64;:::i;:::-;13531:74;;13487:128;13271:351;;;;:::o;13628:332::-;13749:4;13787:2;13776:9;13772:18;13764:26;;13800:71;13868:1;13857:9;13853:17;13844:6;13800:71;:::i;:::-;13881:72;13949:2;13938:9;13934:18;13925:6;13881:72;:::i;:::-;13628:332;;;;;:::o;13966:137::-;14020:5;14051:6;14045:13;14036:22;;14067:30;14091:5;14067:30;:::i;:::-;13966:137;;;;:::o;14109:345::-;14176:6;14225:2;14213:9;14204:7;14200:23;14196:32;14193:119;;;14231:79;;:::i;:::-;14193:119;14351:1;14376:61;14429:7;14420:6;14409:9;14405:22;14376:61;:::i;:::-;14366:71;;14322:125;14109:345;;;;:::o;14460:180::-;14508:77;14505:1;14498:88;14605:4;14602:1;14595:15;14629:4;14626:1;14619:15;14646:305;14686:3;14705:20;14723:1;14705:20;:::i;:::-;14700:25;;14739:20;14757:1;14739:20;:::i;:::-;14734:25;;14893:1;14825:66;14821:74;14818:1;14815:81;14812:107;;;14899:18;;:::i;:::-;14812:107;14943:1;14940;14936:9;14929:16;;14646:305;;;;:::o;14957:182::-;15097:34;15093:1;15085:6;15081:14;15074:58;14957:182;:::o;15145:366::-;15287:3;15308:67;15372:2;15367:3;15308:67;:::i;:::-;15301:74;;15384:93;15473:3;15384:93;:::i;:::-;15502:2;15497:3;15493:12;15486:19;;15145:366;;;:::o;15517:419::-;15683:4;15721:2;15710:9;15706:18;15698:26;;15770:9;15764:4;15760:20;15756:1;15745:9;15741:17;15734:47;15798:131;15924:4;15798:131;:::i;:::-;15790:139;;15517:419;;;:::o;15942:224::-;16082:34;16078:1;16070:6;16066:14;16059:58;16151:7;16146:2;16138:6;16134:15;16127:32;15942:224;:::o;16172:366::-;16314:3;16335:67;16399:2;16394:3;16335:67;:::i;:::-;16328:74;;16411:93;16500:3;16411:93;:::i;:::-;16529:2;16524:3;16520:12;16513:19;;16172:366;;;:::o;16544:419::-;16710:4;16748:2;16737:9;16733:18;16725:26;;16797:9;16791:4;16787:20;16783:1;16772:9;16768:17;16761:47;16825:131;16951:4;16825:131;:::i;:::-;16817:139;;16544:419;;;:::o;16969:180::-;17017:77;17014:1;17007:88;17114:4;17111:1;17104:15;17138:4;17135:1;17128:15;17155:233;17194:3;17217:24;17235:5;17217:24;:::i;:::-;17208:33;;17263:66;17256:5;17253:77;17250:103;;;17333:18;;:::i;:::-;17250:103;17380:1;17373:5;17369:13;17362:20;;17155:233;;;:::o;17394:225::-;17534:34;17530:1;17522:6;17518:14;17511:58;17603:8;17598:2;17590:6;17586:15;17579:33;17394:225;:::o;17625:366::-;17767:3;17788:67;17852:2;17847:3;17788:67;:::i;:::-;17781:74;;17864:93;17953:3;17864:93;:::i;:::-;17982:2;17977:3;17973:12;17966:19;;17625:366;;;:::o;17997:419::-;18163:4;18201:2;18190:9;18186:18;18178:26;;18250:9;18244:4;18240:20;18236:1;18225:9;18221:17;18214:47;18278:131;18404:4;18278:131;:::i;:::-;18270:139;;17997:419;;;:::o;18422:223::-;18562:34;18558:1;18550:6;18546:14;18539:58;18631:6;18626:2;18618:6;18614:15;18607:31;18422:223;:::o;18651:366::-;18793:3;18814:67;18878:2;18873:3;18814:67;:::i;:::-;18807:74;;18890:93;18979:3;18890:93;:::i;:::-;19008:2;19003:3;18999:12;18992:19;;18651:366;;;:::o;19023:419::-;19189:4;19227:2;19216:9;19212:18;19204:26;;19276:9;19270:4;19266:20;19262:1;19251:9;19247:17;19240:47;19304:131;19430:4;19304:131;:::i;:::-;19296:139;;19023:419;;;:::o;19448:221::-;19588:34;19584:1;19576:6;19572:14;19565:58;19657:4;19652:2;19644:6;19640:15;19633:29;19448:221;:::o;19675:366::-;19817:3;19838:67;19902:2;19897:3;19838:67;:::i;:::-;19831:74;;19914:93;20003:3;19914:93;:::i;:::-;20032:2;20027:3;20023:12;20016:19;;19675:366;;;:::o;20047:419::-;20213:4;20251:2;20240:9;20236:18;20228:26;;20300:9;20294:4;20290:20;20286:1;20275:9;20271:17;20264:47;20328:131;20454:4;20328:131;:::i;:::-;20320:139;;20047:419;;;:::o;20472:179::-;20612:31;20608:1;20600:6;20596:14;20589:55;20472:179;:::o;20657:366::-;20799:3;20820:67;20884:2;20879:3;20820:67;:::i;:::-;20813:74;;20896:93;20985:3;20896:93;:::i;:::-;21014:2;21009:3;21005:12;20998:19;;20657:366;;;:::o;21029:419::-;21195:4;21233:2;21222:9;21218:18;21210:26;;21282:9;21276:4;21272:20;21268:1;21257:9;21253:17;21246:47;21310:131;21436:4;21310:131;:::i;:::-;21302:139;;21029:419;;;:::o;21454:224::-;21594:34;21590:1;21582:6;21578:14;21571:58;21663:7;21658:2;21650:6;21646:15;21639:32;21454:224;:::o;21684:366::-;21826:3;21847:67;21911:2;21906:3;21847:67;:::i;:::-;21840:74;;21923:93;22012:3;21923:93;:::i;:::-;22041:2;22036:3;22032:12;22025:19;;21684:366;;;:::o;22056:419::-;22222:4;22260:2;22249:9;22245:18;22237:26;;22309:9;22303:4;22299:20;22295:1;22284:9;22280:17;22273:47;22337:131;22463:4;22337:131;:::i;:::-;22329:139;;22056:419;;;:::o;22481:222::-;22621:34;22617:1;22609:6;22605:14;22598:58;22690:5;22685:2;22677:6;22673:15;22666:30;22481:222;:::o;22709:366::-;22851:3;22872:67;22936:2;22931:3;22872:67;:::i;:::-;22865:74;;22948:93;23037:3;22948:93;:::i;:::-;23066:2;23061:3;23057:12;23050:19;;22709:366;;;:::o;23081:419::-;23247:4;23285:2;23274:9;23270:18;23262:26;;23334:9;23328:4;23324:20;23320:1;23309:9;23305:17;23298:47;23362:131;23488:4;23362:131;:::i;:::-;23354:139;;23081:419;;;:::o;23506:220::-;23646:34;23642:1;23634:6;23630:14;23623:58;23715:3;23710:2;23702:6;23698:15;23691:28;23506:220;:::o;23732:366::-;23874:3;23895:67;23959:2;23954:3;23895:67;:::i;:::-;23888:74;;23971:93;24060:3;23971:93;:::i;:::-;24089:2;24084:3;24080:12;24073:19;;23732:366;;;:::o;24104:419::-;24270:4;24308:2;24297:9;24293:18;24285:26;;24357:9;24351:4;24347:20;24343:1;24332:9;24328:17;24321:47;24385:131;24511:4;24385:131;:::i;:::-;24377:139;;24104:419;;;:::o;24529:221::-;24669:34;24665:1;24657:6;24653:14;24646:58;24738:4;24733:2;24725:6;24721:15;24714:29;24529:221;:::o;24756:366::-;24898:3;24919:67;24983:2;24978:3;24919:67;:::i;:::-;24912:74;;24995:93;25084:3;24995:93;:::i;:::-;25113:2;25108:3;25104:12;25097:19;;24756:366;;;:::o;25128:419::-;25294:4;25332:2;25321:9;25317:18;25309:26;;25381:9;25375:4;25371:20;25367:1;25356:9;25352:17;25345:47;25409:131;25535:4;25409:131;:::i;:::-;25401:139;;25128:419;;;:::o;25553:225::-;25693:34;25689:1;25681:6;25677:14;25670:58;25762:8;25757:2;25749:6;25745:15;25738:33;25553:225;:::o;25784:366::-;25926:3;25947:67;26011:2;26006:3;25947:67;:::i;:::-;25940:74;;26023:93;26112:3;26023:93;:::i;:::-;26141:2;26136:3;26132:12;26125:19;;25784:366;;;:::o;26156:419::-;26322:4;26360:2;26349:9;26345:18;26337:26;;26409:9;26403:4;26399:20;26395:1;26384:9;26380:17;26373:47;26437:131;26563:4;26437:131;:::i;:::-;26429:139;;26156:419;;;:::o;26581:348::-;26621:7;26644:20;26662:1;26644:20;:::i;:::-;26639:25;;26678:20;26696:1;26678:20;:::i;:::-;26673:25;;26866:1;26798:66;26794:74;26791:1;26788:81;26783:1;26776:9;26769:17;26765:105;26762:131;;;26873:18;;:::i;:::-;26762:131;26921:1;26918;26914:9;26903:20;;26581:348;;;;:::o;26935:180::-;26983:77;26980:1;26973:88;27080:4;27077:1;27070:15;27104:4;27101:1;27094:15;27121:185;27161:1;27178:20;27196:1;27178:20;:::i;:::-;27173:25;;27212:20;27230:1;27212:20;:::i;:::-;27207:25;;27251:1;27241:35;;27256:18;;:::i;:::-;27241:35;27298:1;27295;27291:9;27286:14;;27121:185;;;;:::o;27312:220::-;27452:34;27448:1;27440:6;27436:14;27429:58;27521:3;27516:2;27508:6;27504:15;27497:28;27312:220;:::o;27538:366::-;27680:3;27701:67;27765:2;27760:3;27701:67;:::i;:::-;27694:74;;27777:93;27866:3;27777:93;:::i;:::-;27895:2;27890:3;27886:12;27879:19;;27538:366;;;:::o;27910:419::-;28076:4;28114:2;28103:9;28099:18;28091:26;;28163:9;28157:4;28153:20;28149:1;28138:9;28134:17;28127:47;28191:131;28317:4;28191:131;:::i;:::-;28183:139;;27910:419;;;:::o;28335:191::-;28375:4;28395:20;28413:1;28395:20;:::i;:::-;28390:25;;28429:20;28447:1;28429:20;:::i;:::-;28424:25;;28468:1;28465;28462:8;28459:34;;;28473:18;;:::i;:::-;28459:34;28518:1;28515;28511:9;28503:17;;28335:191;;;;:::o

Swarm Source

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