ETH Price: $3,272.73 (-4.19%)
Gas: 8 Gwei

Token

Milkfriendtech (MILKER)
 

Overview

Max Total Supply

100,000,000 MILKER

Holders

483

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
13156.eth
Balance
28,515.283390231328831791 MILKER

Value
$0.00
0x95974B05b72921B6622731e1EDBb43eF398E0fCF
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Milkfriendtech

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-17
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-27
*/

pragma solidity 0.8.19;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions 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);
    }
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

/**
 * @title Milkfriendtech
 * @dev Token for Milkfriendtech
 */
contract Milkfriendtech is Ownable, ERC20 {

    IUniswapV2Router02 public router;
    IUniswapV2Factory public factory;
    IUniswapV2Pair public pair;

    uint private constant INITIAL_SUPPLY = 100_000_000 * 10**18;

    //
    // The tax to deduct, in basis points
    //
    uint public buyTaxBps = 500;
    uint public sellTaxBps = 500;
    uint public maxbuy = 0; 
    //
    bool isSellingCollectedTaxes;

    event AntiBotEngaged();
    event AntiBotDisengaged();

    address public revenueWallet;

    bool public engagedOnce;
    bool public disengagedOnce;

    constructor() ERC20("Milkfriendtech", "MILKER", 18) {

        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        factory = IUniswapV2Factory(router.factory());
        _mint(msg.sender, INITIAL_SUPPLY);

        // Approve infinite spending by DEX, to sell tokens collected via tax.
        allowance[address(this)][address(router)] = type(uint).max;
        emit Approval(address(this), address(router), type(uint).max);
        pair = IUniswapV2Pair(factory.createPair(address(this), router.WETH()));
    }

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

    receive() external payable {}

    fallback() external payable {}

    function burn(uint amount) external {
        _burn(msg.sender, amount);
    }

    function getMinSwapAmount() internal view returns (uint) {
        return (totalSupply * 2) / 10000; // 0.02%
    }


    function enableAntiSnipe() public onlyOwner {
        require(!engagedOnce, "this is a one shot function");
        engagedOnce = true;
        buyTaxBps = 2500;
        sellTaxBps = 2500;
        emit AntiBotEngaged();
    }

    function disableAntiSnipe() public onlyOwner {
        require(!disengagedOnce, "this is a one shot function");
        disengagedOnce = true;
        buyTaxBps = 500;
        sellTaxBps = 500;
        emit AntiBotDisengaged();
    }

    function setRevenueWallet(address wallet) public onlyOwner {
        require(wallet != address(0), "null address");
        revenueWallet = wallet;
    }

    function setMaxBuy(uint _maxbuy) public onlyOwner {
        require(_maxbuy > 0, "Max buy is zero");
        maxbuy = _maxbuy;
    }


    /**
     * @dev Calculate the amount of tax to apply to a transaction.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity of tokens being sent
     * @return the amount of tokens to withhold for taxes
     */
    function calcTax(address from, address to, uint amount) internal view returns (uint) {
        if (from == owner() || to == owner() || from == address(this)) {
            // For adding liquidity at the beginning
            //
            // Also for this contract selling the collected tax.
            return 0;
        } else if (from == address(pair)) {
            // Buy from DEX, or adding liquidity.
            return amount * buyTaxBps / 10_000;
        } else if (to == address(pair)) {
            // Sell from DEX, or removing liquidity.
            return amount * sellTaxBps / 10_000;
        } else {
            // Sending to other wallets (e.g. OTC) is tax-free.
            return 0;
        }
    }

    /**
     * @dev Sell the balance accumulated from taxes.
     */
    function sellCollectedTaxes() internal lockTheSwap {

        uint tokensToSwap = balanceOf[address(this)];

        // Sell
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokensToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        revenueWallet.call{value: (address(this).balance)}("");

    }

    /**
     * @dev Transfer tokens from the caller to another address.
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transfer(address to, uint amount) public override returns (bool) {
        return transferFrom(msg.sender, to, amount);
    }

    /**
     * @dev Transfer tokens from one address to another. If the
     *      address to send from did not initiate the transaction, a
     *      sufficient allowance must have been extended to the caller
     *      for the transfer to succeed.
     * @param from the sender
     * @param to the receiver
     * @param amount the quantity to send
     * @return true if the transfer succeeded, otherwise false
     */
    function transferFrom(
        address from,
        address to,
        uint amount
    ) public override returns (bool) {
        if (from != msg.sender) {
            // This is a typical transferFrom

            uint allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

            if (allowed != type(uint).max) allowance[from][msg.sender] = allowed - amount;
        }



        if(to != owner() && from != owner() && to != address(router) && to != address(pair)){
            uint256 maxHolding = (totalSupply * maxbuy) / 10000; // 1.5% in basis points
            require(balanceOf[to] + amount <= maxHolding, "Recipient holding exceeds maximum allowed");
        }

        // Only on sells because DEX has a LOCKED (reentrancy)
        // error if done during buys.
        //
        // isSellingCollectedTaxes prevents an infinite loop.
        if (balanceOf[address(this)] > getMinSwapAmount() && !isSellingCollectedTaxes && from != address(pair) && from != address(this)) {
            sellCollectedTaxes();
        }

        uint tax = calcTax(from, to, amount);
        uint afterTaxAmount = amount - tax;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint value.
        unchecked {
            balanceOf[to] += afterTaxAmount;
        }

        emit Transfer(from, to, afterTaxAmount);

        if (tax > 0) {
            
            unchecked {
                balanceOf[address(this)] += tax;
            }

            // Any transfer to the contract can be viewed as tax
            emit Transfer(from, address(this), tax);
        }

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"AntiBotDisengaged","type":"event"},{"anonymous":false,"inputs":[],"name":"AntiBotEngaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","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":[],"name":"buyTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disengagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAntiSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"engagedOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revenueWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxbuy","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRevenueWallet","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"},{"stateMutability":"payable","type":"receive"}]

60e06040526101f4600a556101f4600b556000600c553480156200002257600080fd5b506040518060400160405280600e81526020017f4d696c6b667269656e64746563680000000000000000000000000000000000008152506040518060400160405280600681526020017f4d494c4b455200000000000000000000000000000000000000000000000000008152506012620000b1620000a56200053560201b60201c565b6200053d60201b60201c565b8260019081620000c29190620009df565b508160029081620000d49190620009df565b508060ff1660808160ff16815250504660a08181525050620000fb6200060160201b60201c565b60c08181525050505050737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ee919062000b30565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200024b336a52b7d2dcc80cd2e40000006200069160201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051620003af919062000b73565b60405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048a919062000b30565b6040518363ffffffff1660e01b8152600401620004a992919062000ba1565b6020604051808303816000875af1158015620004c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ef919062000b30565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000d78565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600160405162000635919062000c7d565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646306040516020016200067695949392919062000cb1565b60405160208183030381529060405280519060200120905090565b8060036000828254620006a5919062000d3d565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000759919062000b73565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e757607f821691505b602082108103620007fd57620007fc6200079f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000828565b62000873868362000828565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008c0620008ba620008b4846200088b565b62000895565b6200088b565b9050919050565b6000819050919050565b620008dc836200089f565b620008f4620008eb82620008c7565b84845462000835565b825550505050565b600090565b6200090b620008fc565b62000918818484620008d1565b505050565b5b8181101562000940576200093460008262000901565b6001810190506200091e565b5050565b601f8211156200098f57620009598162000803565b620009648462000818565b8101602085101562000974578190505b6200098c620009838562000818565b8301826200091d565b50505b505050565b600082821c905092915050565b6000620009b46000198460080262000994565b1980831691505092915050565b6000620009cf8383620009a1565b9150826002028217905092915050565b620009ea8262000765565b67ffffffffffffffff81111562000a065762000a0562000770565b5b62000a128254620007ce565b62000a1f82828562000944565b600060209050601f83116001811462000a57576000841562000a42578287015190505b62000a4e8582620009c1565b86555062000abe565b601f19841662000a678662000803565b60005b8281101562000a915784890151825560018201915060208501945060208101905062000a6a565b8683101562000ab1578489015162000aad601f891682620009a1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000af88262000acb565b9050919050565b62000b0a8162000aeb565b811462000b1657600080fd5b50565b60008151905062000b2a8162000aff565b92915050565b60006020828403121562000b495762000b4862000ac6565b5b600062000b598482850162000b19565b91505092915050565b62000b6d816200088b565b82525050565b600060208201905062000b8a600083018462000b62565b92915050565b62000b9b8162000aeb565b82525050565b600060408201905062000bb8600083018562000b90565b62000bc7602083018462000b90565b9392505050565b600081905092915050565b60008190508160005260206000209050919050565b6000815462000bfd81620007ce565b62000c09818662000bce565b9450600182166000811462000c27576001811462000c3d5762000c74565b60ff198316865281151582028601935062000c74565b62000c488562000bd9565b60005b8381101562000c6c5781548189015260018201915060208101905062000c4b565b838801955050505b50505092915050565b600062000c8b828462000bee565b915081905092915050565b6000819050919050565b62000cab8162000c96565b82525050565b600060a08201905062000cc8600083018862000ca0565b62000cd7602083018762000ca0565b62000ce6604083018662000ca0565b62000cf5606083018562000b62565b62000d04608083018462000b90565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d4a826200088b565b915062000d57836200088b565b925082820190508082111562000d725762000d7162000d0e565b5b92915050565b60805160a05160c051612e1762000da86000396000610fbf01526000610f8b01526000610f650152612e176000f3fe6080604052600436106101c65760003560e01c80637ecebe00116100f7578063cffd129c11610095578063f35835b711610064578063f35835b714610640578063f53bc83514610657578063f887ea4014610680578063fb235f34146106ab576101cd565b8063cffd129c14610586578063d505accf146105b1578063dd62ed3e146105da578063f2fde38b14610617576101cd565b8063a8aa1b31116100d1578063a8aa1b31146104c8578063a9059cbb146104f3578063c45a015514610530578063c473413a1461055b576101cd565b80637ecebe00146104355780638da5cb5b1461047257806395d89b411461049d576101cd565b8063313ce56711610164578063444784251161013e578063444784251461038b57806370a08231146103b6578063715018a6146103f35780637d5ea21b1461040a576101cd565b8063313ce5671461030c5780633644e5151461033757806342966c6814610362576101cd565b806319b68610116101a057806319b686101461026257806323b872dd14610279578063270fd20a146102b65780633128cdac146102e1576101cd565b806306fdde03146101cf578063095ea7b3146101fa57806318160ddd14610237576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e46106d4565b6040516101f19190611f43565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190611ffe565b610762565b60405161022e9190612059565b60405180910390f35b34801561024357600080fd5b5061024c610854565b6040516102599190612083565b60405180910390f35b34801561026e57600080fd5b5061027761085a565b005b34801561028557600080fd5b506102a0600480360381019061029b919061209e565b61090d565b6040516102ad9190612059565b60405180910390f35b3480156102c257600080fd5b506102cb610f4a565b6040516102d89190612059565b60405180910390f35b3480156102ed57600080fd5b506102f6610f5d565b6040516103039190612083565b60405180910390f35b34801561031857600080fd5b50610321610f63565b60405161032e919061210d565b60405180910390f35b34801561034357600080fd5b5061034c610f87565b6040516103599190612141565b60405180910390f35b34801561036e57600080fd5b506103896004803603810190610384919061215c565b610fe4565b005b34801561039757600080fd5b506103a0610ff1565b6040516103ad9190612198565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906121b3565b611017565b6040516103ea9190612083565b60405180910390f35b3480156103ff57600080fd5b5061040861102f565b005b34801561041657600080fd5b5061041f611043565b60405161042c9190612059565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906121b3565b611056565b6040516104699190612083565b60405180910390f35b34801561047e57600080fd5b5061048761106e565b6040516104949190612198565b60405180910390f35b3480156104a957600080fd5b506104b2611097565b6040516104bf9190611f43565b60405180910390f35b3480156104d457600080fd5b506104dd611125565b6040516104ea919061223f565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190611ffe565b61114b565b6040516105279190612059565b60405180910390f35b34801561053c57600080fd5b50610545611160565b604051610552919061227b565b60405180910390f35b34801561056757600080fd5b50610570611186565b60405161057d9190612083565b60405180910390f35b34801561059257600080fd5b5061059b61118c565b6040516105a89190612083565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906122ee565b611192565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612390565b61148b565b60405161060e9190612083565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906121b3565b6114b0565b005b34801561064c57600080fd5b50610655611533565b005b34801561066357600080fd5b5061067e6004803603810190610679919061215c565b6115e6565b005b34801561068c57600080fd5b5061069561163b565b6040516106a291906123f1565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906121b3565b611661565b005b600180546106e19061243b565b80601f016020809104026020016040519081016040528092919081815260200182805461070d9061243b565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108429190612083565b60405180910390a36001905092915050565b60035481565b61086261171c565b600d60169054906101000a900460ff16156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906124b8565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a79576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a775782816109f69190612507565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610a8161106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610aef5750610abf61106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610b495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c58576000612710600c54600354610bbd919061253b565b610bc791906125ac565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1591906125dd565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612683565b60405180910390fd5b505b610c6061179a565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610cba5750600d60009054906101000a900460ff16155b8015610d145750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610d4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d5a57610d596117bd565b5b6000610d67858585611ad8565b905060008184610d779190612507565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc89190612507565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e799190612083565b60405180910390a36000821115610f3d5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f349190612083565b60405180910390a35b6001925050509392505050565b600d60169054906101000a900460ff1681565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000004614610fbd57610fb8611c8b565b610fdf565b7f00000000000000000000000000000000000000000000000000000000000000005b905090565b610fee3382611d17565b50565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b61103761171c565b6110416000611de7565b565b600d60159054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546110a49061243b565b80601f01602080910402602001604051908101604052809291908181526020018280546110d09061243b565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061115833848461090d565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc906126ef565b60405180910390fd5b600060016111e1610f87565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016112699695949392919061270f565b604051602081830303815290604052805190602001206040516020016112909291906127e8565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516112c6949392919061281f565b6020604051602081039080840390855afa1580156112e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561135c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906128b0565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161147a9190612083565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b6114b861171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612942565b60405180910390fd5b61153081611de7565b50565b61153b61171c565b600d60159054906101000a900460ff161561158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906124b8565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506109c4600a819055506109c4600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b6115ee61171c565b60008111611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906129ae565b60405180910390fd5b80600c8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61166961171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90612a1a565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611724611eab565b73ffffffffffffffffffffffffffffffffffffffff1661174261106e565b73ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f90612a86565b60405180910390fd5b565b600061271060026003546117ae919061253b565b6117b891906125ac565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff81111561183957611838612aa6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b509050308160008151811061187f5761187e612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612b19565b8160018151811061195e5761195d612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016119fc959493929190612c3f565b600060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b50505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a7490612cca565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b6000611ae261106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4d5750611b1e61106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b8357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611b915760009050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c0857612710600a5483611bf7919061253b565b611c0191906125ac565b9050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7f57612710600b5483611c6e919061253b565b611c7891906125ac565b9050611c84565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611cbd9190612d77565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611cfc959493929190612d8e565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612507565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ddb9190612083565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eed578082015181840152602081019050611ed2565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f1582611eb3565b611f1f8185611ebe565b9350611f2f818560208601611ecf565b611f3881611ef9565b840191505092915050565b60006020820190508181036000830152611f5d8184611f0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9582611f6a565b9050919050565b611fa581611f8a565b8114611fb057600080fd5b50565b600081359050611fc281611f9c565b92915050565b6000819050919050565b611fdb81611fc8565b8114611fe657600080fd5b50565b600081359050611ff881611fd2565b92915050565b6000806040838503121561201557612014611f65565b5b600061202385828601611fb3565b925050602061203485828601611fe9565b9150509250929050565b60008115159050919050565b6120538161203e565b82525050565b600060208201905061206e600083018461204a565b92915050565b61207d81611fc8565b82525050565b60006020820190506120986000830184612074565b92915050565b6000806000606084860312156120b7576120b6611f65565b5b60006120c586828701611fb3565b93505060206120d686828701611fb3565b92505060406120e786828701611fe9565b9150509250925092565b600060ff82169050919050565b612107816120f1565b82525050565b600060208201905061212260008301846120fe565b92915050565b6000819050919050565b61213b81612128565b82525050565b60006020820190506121566000830184612132565b92915050565b60006020828403121561217257612171611f65565b5b600061218084828501611fe9565b91505092915050565b61219281611f8a565b82525050565b60006020820190506121ad6000830184612189565b92915050565b6000602082840312156121c9576121c8611f65565b5b60006121d784828501611fb3565b91505092915050565b6000819050919050565b60006122056122006121fb84611f6a565b6121e0565b611f6a565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b60006122658261220c565b9050919050565b6122758161225a565b82525050565b6000602082019050612290600083018461226c565b92915050565b61229f816120f1565b81146122aa57600080fd5b50565b6000813590506122bc81612296565b92915050565b6122cb81612128565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b600080600080600080600060e0888a03121561230d5761230c611f65565b5b600061231b8a828b01611fb3565b975050602061232c8a828b01611fb3565b965050604061233d8a828b01611fe9565b955050606061234e8a828b01611fe9565b945050608061235f8a828b016122ad565b93505060a06123708a828b016122d9565b92505060c06123818a828b016122d9565b91505092959891949750929550565b600080604083850312156123a7576123a6611f65565b5b60006123b585828601611fb3565b92505060206123c685828601611fb3565b9150509250929050565b60006123db8261220c565b9050919050565b6123eb816123d0565b82525050565b600060208201905061240660008301846123e2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245357607f821691505b6020821081036124665761246561240c565b5b50919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006124a2601b83611ebe565b91506124ad8261246c565b602082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251282611fc8565b915061251d83611fc8565b9250828203905081811115612535576125346124d8565b5b92915050565b600061254682611fc8565b915061255183611fc8565b925082820261255f81611fc8565b91508282048414831517612576576125756124d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125b782611fc8565b91506125c283611fc8565b9250826125d2576125d161257d565b5b828204905092915050565b60006125e882611fc8565b91506125f383611fc8565b925082820190508082111561260b5761260a6124d8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061266d602983611ebe565b915061267882612611565b604082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006126d9601783611ebe565b91506126e4826126a3565b602082019050919050565b60006020820190508181036000830152612708816126cc565b9050919050565b600060c0820190506127246000830189612132565b6127316020830188612189565b61273e6040830187612189565b61274b6060830186612074565b6127586080830185612074565b61276560a0830184612074565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006127b1600283612770565b91506127bc8261277b565b600282019050919050565b6000819050919050565b6127e26127dd82612128565b6127c7565b82525050565b60006127f3826127a4565b91506127ff82856127d1565b60208201915061280f82846127d1565b6020820191508190509392505050565b60006080820190506128346000830187612132565b61284160208301866120fe565b61284e6040830185612132565b61285b6060830184612132565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b600061289a600e83611ebe565b91506128a582612864565b602082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061292c602683611ebe565b9150612937826128d0565b604082019050919050565b6000602082019050818103600083015261295b8161291f565b9050919050565b7f4d617820627579206973207a65726f0000000000000000000000000000000000600082015250565b6000612998600f83611ebe565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000612a04600c83611ebe565b9150612a0f826129ce565b602082019050919050565b60006020820190508181036000830152612a33816129f7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a70602083611ebe565b9150612a7b82612a3a565b602082019050919050565b60006020820190508181036000830152612a9f81612a63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b1381611f9c565b92915050565b600060208284031215612b2f57612b2e611f65565b5b6000612b3d84828501612b04565b91505092915050565b6000819050919050565b6000612b6b612b66612b6184612b46565b6121e0565b611fc8565b9050919050565b612b7b81612b50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bb681611f8a565b82525050565b6000612bc88383612bad565b60208301905092915050565b6000602082019050919050565b6000612bec82612b81565b612bf68185612b8c565b9350612c0183612b9d565b8060005b83811015612c32578151612c198882612bbc565b9750612c2483612bd4565b925050600181019050612c05565b5085935050505092915050565b600060a082019050612c546000830188612074565b612c616020830187612b72565b8181036040830152612c738186612be1565b9050612c826060830185612189565b612c8f6080830184612074565b9695505050505050565b600081905092915050565b50565b6000612cb4600083612c99565b9150612cbf82612ca4565b600082019050919050565b6000612cd582612ca7565b9150819050919050565b60008190508160005260206000209050919050565b60008154612d018161243b565b612d0b8186612c99565b94506001821660008114612d265760018114612d3b57612d6e565b60ff1983168652811515820286019350612d6e565b612d4485612cdf565b60005b83811015612d6657815481890152600182019150602081019050612d47565b838801955050505b50505092915050565b6000612d838284612cf4565b915081905092915050565b600060a082019050612da36000830188612132565b612db06020830187612132565b612dbd6040830186612132565b612dca6060830185612074565b612dd76080830184612189565b969550505050505056fea2646970667358221220a799c5fb00900af27ae4fc2a51ce5dd290147f79bfea5e8322fa9b594598cb6a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80637ecebe00116100f7578063cffd129c11610095578063f35835b711610064578063f35835b714610640578063f53bc83514610657578063f887ea4014610680578063fb235f34146106ab576101cd565b8063cffd129c14610586578063d505accf146105b1578063dd62ed3e146105da578063f2fde38b14610617576101cd565b8063a8aa1b31116100d1578063a8aa1b31146104c8578063a9059cbb146104f3578063c45a015514610530578063c473413a1461055b576101cd565b80637ecebe00146104355780638da5cb5b1461047257806395d89b411461049d576101cd565b8063313ce56711610164578063444784251161013e578063444784251461038b57806370a08231146103b6578063715018a6146103f35780637d5ea21b1461040a576101cd565b8063313ce5671461030c5780633644e5151461033757806342966c6814610362576101cd565b806319b68610116101a057806319b686101461026257806323b872dd14610279578063270fd20a146102b65780633128cdac146102e1576101cd565b806306fdde03146101cf578063095ea7b3146101fa57806318160ddd14610237576101cd565b366101cd57005b005b3480156101db57600080fd5b506101e46106d4565b6040516101f19190611f43565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190611ffe565b610762565b60405161022e9190612059565b60405180910390f35b34801561024357600080fd5b5061024c610854565b6040516102599190612083565b60405180910390f35b34801561026e57600080fd5b5061027761085a565b005b34801561028557600080fd5b506102a0600480360381019061029b919061209e565b61090d565b6040516102ad9190612059565b60405180910390f35b3480156102c257600080fd5b506102cb610f4a565b6040516102d89190612059565b60405180910390f35b3480156102ed57600080fd5b506102f6610f5d565b6040516103039190612083565b60405180910390f35b34801561031857600080fd5b50610321610f63565b60405161032e919061210d565b60405180910390f35b34801561034357600080fd5b5061034c610f87565b6040516103599190612141565b60405180910390f35b34801561036e57600080fd5b506103896004803603810190610384919061215c565b610fe4565b005b34801561039757600080fd5b506103a0610ff1565b6040516103ad9190612198565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906121b3565b611017565b6040516103ea9190612083565b60405180910390f35b3480156103ff57600080fd5b5061040861102f565b005b34801561041657600080fd5b5061041f611043565b60405161042c9190612059565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906121b3565b611056565b6040516104699190612083565b60405180910390f35b34801561047e57600080fd5b5061048761106e565b6040516104949190612198565b60405180910390f35b3480156104a957600080fd5b506104b2611097565b6040516104bf9190611f43565b60405180910390f35b3480156104d457600080fd5b506104dd611125565b6040516104ea919061223f565b60405180910390f35b3480156104ff57600080fd5b5061051a60048036038101906105159190611ffe565b61114b565b6040516105279190612059565b60405180910390f35b34801561053c57600080fd5b50610545611160565b604051610552919061227b565b60405180910390f35b34801561056757600080fd5b50610570611186565b60405161057d9190612083565b60405180910390f35b34801561059257600080fd5b5061059b61118c565b6040516105a89190612083565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d391906122ee565b611192565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190612390565b61148b565b60405161060e9190612083565b60405180910390f35b34801561062357600080fd5b5061063e600480360381019061063991906121b3565b6114b0565b005b34801561064c57600080fd5b50610655611533565b005b34801561066357600080fd5b5061067e6004803603810190610679919061215c565b6115e6565b005b34801561068c57600080fd5b5061069561163b565b6040516106a291906123f1565b60405180910390f35b3480156106b757600080fd5b506106d260048036038101906106cd91906121b3565b611661565b005b600180546106e19061243b565b80601f016020809104026020016040519081016040528092919081815260200182805461070d9061243b565b801561075a5780601f1061072f5761010080835404028352916020019161075a565b820191906000526020600020905b81548152906001019060200180831161073d57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108429190612083565b60405180910390a36001905092915050565b60035481565b61086261171c565b600d60169054906101000a900460ff16156108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a9906124b8565b60405180910390fd5b6001600d60166101000a81548160ff0219169083151502179055506101f4600a819055506101f4600b819055507fc8c66e37e8b41bcc2deecfa7487ae0d5ed2fd626c0544a58c33ba95d90a47d4a60405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610a79576000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a775782816109f69190612507565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505b610a8161106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610aef5750610abf61106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610b495750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba35750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610c58576000612710600c54600354610bbd919061253b565b610bc791906125ac565b90508083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1591906125dd565b1115610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90612683565b60405180910390fd5b505b610c6061179a565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015610cba5750600d60009054906101000a900460ff16155b8015610d145750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015610d4c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610d5a57610d596117bd565b5b6000610d67858585611ad8565b905060008184610d779190612507565b905083600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc89190612507565b9250508190555080600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e799190612083565b60405180910390a36000821115610f3d5781600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f349190612083565b60405180910390a35b6001925050509392505050565b600d60169054906101000a900460ff1681565b600c5481565b7f000000000000000000000000000000000000000000000000000000000000001281565b60007f00000000000000000000000000000000000000000000000000000000000000014614610fbd57610fb8611c8b565b610fdf565b7f8fc9c9f84fed08c506383afb14d9d5f6c7a173b8008284d87ae335e112ff9ecd5b905090565b610fee3382611d17565b50565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b61103761171c565b6110416000611de7565b565b600d60159054906101000a900460ff1681565b60066020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546110a49061243b565b80601f01602080910402602001604051908101604052809291908181526020018280546110d09061243b565b801561111d5780601f106110f25761010080835404028352916020019161111d565b820191906000526020600020905b81548152906001019060200180831161110057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061115833848461090d565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b5481565b428410156111d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cc906126ef565b60405180910390fd5b600060016111e1610f87565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016112699695949392919061270f565b604051602081830303815290604052805190602001206040516020016112909291906127e8565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516112c6949392919061281f565b6020604051602081039080840390855afa1580156112e8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561135c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906128b0565b60405180910390fd5b85600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258760405161147a9190612083565b60405180910390a350505050505050565b6005602052816000526040600020602052806000526040600020600091509150505481565b6114b861171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90612942565b60405180910390fd5b61153081611de7565b50565b61153b61171c565b600d60159054906101000a900460ff161561158b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611582906124b8565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506109c4600a819055506109c4600b819055507fa1f3078ed9e1e966576844270dda3bb31267ba7d982fc64933d94552630a436860405160405180910390a1565b6115ee61171c565b60008111611631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611628906129ae565b60405180910390fd5b80600c8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61166961171c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf90612a1a565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611724611eab565b73ffffffffffffffffffffffffffffffffffffffff1661174261106e565b73ffffffffffffffffffffffffffffffffffffffff1614611798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178f90612a86565b60405180910390fd5b565b600061271060026003546117ae919061253b565b6117b891906125ac565b905090565b6001600d60006101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600267ffffffffffffffff81111561183957611838612aa6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b509050308160008151811061187f5761187e612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194a9190612b19565b8160018151811061195e5761195d612ad5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016119fc959493929190612c3f565b600060405180830381600087803b158015611a1657600080fd5b505af1158015611a2a573d6000803e3d6000fd5b50505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611a7490612cca565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b50505050506000600d60006101000a81548160ff021916908315150217905550565b6000611ae261106e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611b4d5750611b1e61106e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611b8357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611b915760009050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c0857612710600a5483611bf7919061253b565b611c0191906125ac565b9050611c84565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7f57612710600b5483611c6e919061253b565b611c7891906125ac565b9050611c84565b600090505b9392505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051611cbd9190612d77565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611cfc959493929190612d8e565b60405160208183030381529060405280519060200120905090565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d669190612507565b9250508190555080600360008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ddb9190612083565b60405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611eed578082015181840152602081019050611ed2565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f1582611eb3565b611f1f8185611ebe565b9350611f2f818560208601611ecf565b611f3881611ef9565b840191505092915050565b60006020820190508181036000830152611f5d8184611f0a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9582611f6a565b9050919050565b611fa581611f8a565b8114611fb057600080fd5b50565b600081359050611fc281611f9c565b92915050565b6000819050919050565b611fdb81611fc8565b8114611fe657600080fd5b50565b600081359050611ff881611fd2565b92915050565b6000806040838503121561201557612014611f65565b5b600061202385828601611fb3565b925050602061203485828601611fe9565b9150509250929050565b60008115159050919050565b6120538161203e565b82525050565b600060208201905061206e600083018461204a565b92915050565b61207d81611fc8565b82525050565b60006020820190506120986000830184612074565b92915050565b6000806000606084860312156120b7576120b6611f65565b5b60006120c586828701611fb3565b93505060206120d686828701611fb3565b92505060406120e786828701611fe9565b9150509250925092565b600060ff82169050919050565b612107816120f1565b82525050565b600060208201905061212260008301846120fe565b92915050565b6000819050919050565b61213b81612128565b82525050565b60006020820190506121566000830184612132565b92915050565b60006020828403121561217257612171611f65565b5b600061218084828501611fe9565b91505092915050565b61219281611f8a565b82525050565b60006020820190506121ad6000830184612189565b92915050565b6000602082840312156121c9576121c8611f65565b5b60006121d784828501611fb3565b91505092915050565b6000819050919050565b60006122056122006121fb84611f6a565b6121e0565b611f6a565b9050919050565b6000612217826121ea565b9050919050565b60006122298261220c565b9050919050565b6122398161221e565b82525050565b60006020820190506122546000830184612230565b92915050565b60006122658261220c565b9050919050565b6122758161225a565b82525050565b6000602082019050612290600083018461226c565b92915050565b61229f816120f1565b81146122aa57600080fd5b50565b6000813590506122bc81612296565b92915050565b6122cb81612128565b81146122d657600080fd5b50565b6000813590506122e8816122c2565b92915050565b600080600080600080600060e0888a03121561230d5761230c611f65565b5b600061231b8a828b01611fb3565b975050602061232c8a828b01611fb3565b965050604061233d8a828b01611fe9565b955050606061234e8a828b01611fe9565b945050608061235f8a828b016122ad565b93505060a06123708a828b016122d9565b92505060c06123818a828b016122d9565b91505092959891949750929550565b600080604083850312156123a7576123a6611f65565b5b60006123b585828601611fb3565b92505060206123c685828601611fb3565b9150509250929050565b60006123db8261220c565b9050919050565b6123eb816123d0565b82525050565b600060208201905061240660008301846123e2565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245357607f821691505b6020821081036124665761246561240c565b5b50919050565b7f746869732069732061206f6e652073686f742066756e6374696f6e0000000000600082015250565b60006124a2601b83611ebe565b91506124ad8261246c565b602082019050919050565b600060208201905081810360008301526124d181612495565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251282611fc8565b915061251d83611fc8565b9250828203905081811115612535576125346124d8565b5b92915050565b600061254682611fc8565b915061255183611fc8565b925082820261255f81611fc8565b91508282048414831517612576576125756124d8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125b782611fc8565b91506125c283611fc8565b9250826125d2576125d161257d565b5b828204905092915050565b60006125e882611fc8565b91506125f383611fc8565b925082820190508082111561260b5761260a6124d8565b5b92915050565b7f526563697069656e7420686f6c64696e672065786365656473206d6178696d7560008201527f6d20616c6c6f7765640000000000000000000000000000000000000000000000602082015250565b600061266d602983611ebe565b915061267882612611565b604082019050919050565b6000602082019050818103600083015261269c81612660565b9050919050565b7f5045524d49545f444541444c494e455f45585049524544000000000000000000600082015250565b60006126d9601783611ebe565b91506126e4826126a3565b602082019050919050565b60006020820190508181036000830152612708816126cc565b9050919050565b600060c0820190506127246000830189612132565b6127316020830188612189565b61273e6040830187612189565b61274b6060830186612074565b6127586080830185612074565b61276560a0830184612074565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006127b1600283612770565b91506127bc8261277b565b600282019050919050565b6000819050919050565b6127e26127dd82612128565b6127c7565b82525050565b60006127f3826127a4565b91506127ff82856127d1565b60208201915061280f82846127d1565b6020820191508190509392505050565b60006080820190506128346000830187612132565b61284160208301866120fe565b61284e6040830185612132565b61285b6060830184612132565b95945050505050565b7f494e56414c49445f5349474e4552000000000000000000000000000000000000600082015250565b600061289a600e83611ebe565b91506128a582612864565b602082019050919050565b600060208201905081810360008301526128c98161288d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061292c602683611ebe565b9150612937826128d0565b604082019050919050565b6000602082019050818103600083015261295b8161291f565b9050919050565b7f4d617820627579206973207a65726f0000000000000000000000000000000000600082015250565b6000612998600f83611ebe565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b7f6e756c6c20616464726573730000000000000000000000000000000000000000600082015250565b6000612a04600c83611ebe565b9150612a0f826129ce565b602082019050919050565b60006020820190508181036000830152612a33816129f7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a70602083611ebe565b9150612a7b82612a3a565b602082019050919050565b60006020820190508181036000830152612a9f81612a63565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612b1381611f9c565b92915050565b600060208284031215612b2f57612b2e611f65565b5b6000612b3d84828501612b04565b91505092915050565b6000819050919050565b6000612b6b612b66612b6184612b46565b6121e0565b611fc8565b9050919050565b612b7b81612b50565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bb681611f8a565b82525050565b6000612bc88383612bad565b60208301905092915050565b6000602082019050919050565b6000612bec82612b81565b612bf68185612b8c565b9350612c0183612b9d565b8060005b83811015612c32578151612c198882612bbc565b9750612c2483612bd4565b925050600181019050612c05565b5085935050505092915050565b600060a082019050612c546000830188612074565b612c616020830187612b72565b8181036040830152612c738186612be1565b9050612c826060830185612189565b612c8f6080830184612074565b9695505050505050565b600081905092915050565b50565b6000612cb4600083612c99565b9150612cbf82612ca4565b600082019050919050565b6000612cd582612ca7565b9150819050919050565b60008190508160005260206000209050919050565b60008154612d018161243b565b612d0b8186612c99565b94506001821660008114612d265760018114612d3b57612d6e565b60ff1983168652811515820286019350612d6e565b612d4485612cdf565b60005b83811015612d6657815481890152600182019150602081019050612d47565b838801955050505b50505092915050565b6000612d838284612cf4565b915081905092915050565b600060a082019050612da36000830188612132565b612db06020830187612132565b612dbd6040830186612132565b612dca6060830185612074565b612dd76080830184612189565b969550505050505056fea2646970667358221220a799c5fb00900af27ae4fc2a51ce5dd290147f79bfea5e8322fa9b594598cb6a64736f6c63430008130033

Deployed Bytecode Sourcemap

18504:6540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1361:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20324:239;;;;;;;;;;;;;:::i;:::-;;23291:1750;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19069:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18864:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1134:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5515:179;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19870:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19002:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1396:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9654:103;;;;;;;;;;;;;:::i;:::-;;19039:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1822:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9006:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18633:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22711:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18594:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18795:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18829:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1449:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9912:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20085:231;;;;;;;;;;;;;:::i;:::-;;20735:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18555:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20571:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1078:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2555:217::-;2629:4;2679:6;2646:9;:21;2656:10;2646:21;;;;;;;;;;;;;;;:30;2668:7;2646:30;;;;;;;;;;;;;;;:39;;;;2724:7;2703:37;;2712:10;2703:37;;;2733:6;2703:37;;;;;;:::i;:::-;;;;;;;;2760:4;2753:11;;2555:217;;;;:::o;1361:26::-;;;;:::o;20324:239::-;8892:13;:11;:13::i;:::-;20389:14:::1;;;;;;;;;;;20388:15;20380:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;20463:4;20446:14;;:21;;;;;;;;;;;;;;;;;;20490:3;20478:9;:15;;;;20517:3;20504:10;:16;;;;20536:19;;;;;;;;;;20324:239::o:0;23291:1750::-;23411:4;23440:10;23432:18;;:4;:18;;;23428:272;;23516:12;23531:9;:15;23541:4;23531:15;;;;;;;;;;;;;;;:27;23547:10;23531:27;;;;;;;;;;;;;;;;23516:42;;23626:14;23615:7;:25;23611:77;;23682:6;23672:7;:16;;;;:::i;:::-;23642:9;:15;23652:4;23642:15;;;;;;;;;;;;;;;:27;23658:10;23642:27;;;;;;;;;;;;;;;:46;;;;23611:77;23452:248;23428:272;23725:7;:5;:7::i;:::-;23719:13;;:2;:13;;;;:32;;;;;23744:7;:5;:7::i;:::-;23736:15;;:4;:15;;;;23719:32;:57;;;;;23769:6;;;;;;;;;;;23755:21;;:2;:21;;;;23719:57;:80;;;;;23794:4;;;;;;;;;;;23780:19;;:2;:19;;;;23719:80;23716:291;;;23815:18;23861:5;23851:6;;23837:11;;:20;;;;:::i;:::-;23836:30;;;;:::i;:::-;23815:51;;23939:10;23929:6;23913:9;:13;23923:2;23913:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;:36;;23905:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;23800:207;23716:291;24228:18;:16;:18::i;:::-;24201:9;:24;24219:4;24201:24;;;;;;;;;;;;;;;;:45;:73;;;;;24251:23;;;;;;;;;;;24250:24;24201:73;:98;;;;;24294:4;;;;;;;;;;;24278:21;;:4;:21;;;;24201:98;:123;;;;;24319:4;24303:21;;:4;:21;;;;24201:123;24197:176;;;24341:20;:18;:20::i;:::-;24197:176;24385:8;24396:25;24404:4;24410:2;24414:6;24396:7;:25::i;:::-;24385:36;;24432:19;24463:3;24454:6;:12;;;;:::i;:::-;24432:34;;24498:6;24479:9;:15;24489:4;24479:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;24669:14;24652:9;:13;24662:2;24652:13;;;;;;;;;;;;;;;;:31;;;;;;;;;;;24727:2;24712:34;;24721:4;24712:34;;;24731:14;24712:34;;;;;;:::i;:::-;;;;;;;;24769:1;24763:3;:7;24759:251;;;24858:3;24830:9;:24;24848:4;24830:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;24987:4;24964:34;;24973:4;24964:34;;;24994:3;24964:34;;;;;;:::i;:::-;;;;;;;;24759:251;25029:4;25022:11;;;;23291:1750;;;;;:::o;19069:26::-;;;;;;;;;;;;;:::o;18864:22::-;;;;:::o;1134:31::-;;;:::o;5515:179::-;5572:7;5616:16;5599:13;:33;:87;;5662:24;:22;:24::i;:::-;5599:87;;;5635:24;5599:87;5592:94;;5515:179;:::o;19870:80::-;19917:25;19923:10;19935:6;19917:5;:25::i;:::-;19870:80;:::o;19002:28::-;;;;;;;;;;;;;:::o;1396:44::-;;;;;;;;;;;;;;;;;:::o;9654:103::-;8892:13;:11;:13::i;:::-;9719:30:::1;9746:1;9719:18;:30::i;:::-;9654:103::o:0;19039:23::-;;;;;;;;;;;;;:::o;1822:41::-;;;;;;;;;;;;;;;;;:::o;9006:87::-;9052:7;9079:6;;;;;;;;;;;9072:13;;9006:87;:::o;1105:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18633:26::-;;;;;;;;;;;;;:::o;22711:136::-;22779:4;22803:36;22816:10;22828:2;22832:6;22803:12;:36::i;:::-;22796:43;;22711:136;;;;:::o;18594:32::-;;;;;;;;;;;;;:::o;18795:27::-;;;;:::o;18829:28::-;;;;:::o;3980:1527::-;4208:15;4196:8;:27;;4188:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4421:24;4448:827;4588:18;:16;:18::i;:::-;4718:167;4920:5;4960:7;5002:5;5042:6;:13;5049:5;5042:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;5092:8;4673:458;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4633:525;;;;;;4508:673;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4476:724;;;;;;5219:1;5239;5259;4448:827;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4421:854;;5328:1;5300:30;;:16;:30;;;;:59;;;;;5354:5;5334:25;;:16;:25;;;5300:59;5292:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;5434:5;5395:9;:27;5405:16;5395:27;;;;;;;;;;;;;;;:36;5423:7;5395:36;;;;;;;;;;;;;;;:44;;;;4396:1055;5484:7;5468:31;;5477:5;5468:31;;;5493:5;5468:31;;;;;;:::i;:::-;;;;;;;;3980:1527;;;;;;;:::o;1449:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9912:201::-;8892:13;:11;:13::i;:::-;10021:1:::1;10001:22;;:8;:22;;::::0;9993:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10077:28;10096:8;10077:18;:28::i;:::-;9912:201:::0;:::o;20085:231::-;8892:13;:11;:13::i;:::-;20149:11:::1;;;;;;;;;;;20148:12;20140:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;20217:4;20203:11;;:18;;;;;;;;;;;;;;;;;;20244:4;20232:9;:16;;;;20272:4;20259:10;:17;;;;20292:16;;;;;;;;;;20085:231::o:0;20735:135::-;8892:13;:11;:13::i;:::-;20814:1:::1;20804:7;:11;20796:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;20855:7;20846:6;:16;;;;20735:135:::0;:::o;18555:32::-;;;;;;;;;;;;;:::o;20571:156::-;8892:13;:11;:13::i;:::-;20667:1:::1;20649:20;;:6;:20;;::::0;20641:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20713:6;20697:13;;:22;;;;;;;;;;;;;;;;;;20571:156:::0;:::o;9171:132::-;9246:12;:10;:12::i;:::-;9235:23;;:7;:5;:7::i;:::-;:23;;;9227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:132::o;19958:117::-;20009:4;20053:5;20048:1;20034:11;;:15;;;;:::i;:::-;20033:25;;;;:::i;:::-;20026:32;;19958:117;:::o;21958:524::-;19721:4;19695:23;;:30;;;;;;;;;;;;;;;;;;22022:17:::1;22042:9;:24;22060:4;22042:24;;;;;;;;;;;;;;;;22022:44;;22096:21;22134:1;22120:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22096:40;;22165:4;22147;22152:1;22147:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22191:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22181:4;22186:1;22181:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22217:6;;;;;;;;;;;:57;;;22289:12;22316:1;22332:4;22359;22379:15;22217:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22418:13;;;;;;;;;;;:18;;22445:21;22418:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22009:473;;19774:5:::0;19748:23;;:31;;;;;;;;;;;;;;;;;;21958:524::o;21143:735::-;21222:4;21251:7;:5;:7::i;:::-;21243:15;;:4;:15;;;:32;;;;21268:7;:5;:7::i;:::-;21262:13;;:2;:13;;;21243:32;:57;;;;21295:4;21279:21;;:4;:21;;;21243:57;21239:632;;;21460:1;21453:8;;;;21239:632;21499:4;;;;;;;;;;;21483:21;;:4;:21;;;21479:392;;21600:6;21588:9;;21579:6;:18;;;;:::i;:::-;:27;;;;:::i;:::-;21572:34;;;;21479:392;21642:4;;;;;;;;;;;21628:19;;:2;:19;;;21624:247;;21747:6;21734:10;;21725:6;:19;;;;:::i;:::-;:28;;;;:::i;:::-;21718:35;;;;21624:247;21858:1;21851:8;;21143:735;;;;;;:::o;5702:457::-;5767:7;5868:95;6002:4;5986:22;;;;;;:::i;:::-;;;;;;;;6031:14;6068:13;6112:4;5835:301;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5807:344;;;;;;5787:364;;5702:457;:::o;6702:338::-;6794:6;6775:9;:15;6785:4;6775:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;6963:6;6948:11;;:21;;;;;;;;;;;7021:1;6998:34;;7007:4;6998:34;;;7025:6;6998:34;;;;;;:::i;:::-;;;;;;;;6702:338;;:::o;10273:191::-;10347:16;10366:6;;;;;;;;;;;10347:25;;10392:8;10383:6;;:17;;;;;;;;;;;;;;;;;;10447:8;10416:40;;10437:8;10416:40;;;;;;;;;;;;10336:128;10273:191;:::o;7715:98::-;7768:7;7795:10;7788:17;;7715:98;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:77::-;4890:7;4919:5;4908:16;;4853:77;;;:::o;4936:118::-;5023:24;5041:5;5023:24;:::i;:::-;5018:3;5011:37;4936:118;;:::o;5060:222::-;5153:4;5191:2;5180:9;5176:18;5168:26;;5204:71;5272:1;5261:9;5257:17;5248:6;5204:71;:::i;:::-;5060:222;;;;:::o;5288:329::-;5347:6;5396:2;5384:9;5375:7;5371:23;5367:32;5364:119;;;5402:79;;:::i;:::-;5364:119;5522:1;5547:53;5592:7;5583:6;5572:9;5568:22;5547:53;:::i;:::-;5537:63;;5493:117;5288:329;;;;:::o;5623:118::-;5710:24;5728:5;5710:24;:::i;:::-;5705:3;5698:37;5623:118;;:::o;5747:222::-;5840:4;5878:2;5867:9;5863:18;5855:26;;5891:71;5959:1;5948:9;5944:17;5935:6;5891:71;:::i;:::-;5747:222;;;;:::o;5975:329::-;6034:6;6083:2;6071:9;6062:7;6058:23;6054:32;6051:119;;;6089:79;;:::i;:::-;6051:119;6209:1;6234:53;6279:7;6270:6;6259:9;6255:22;6234:53;:::i;:::-;6224:63;;6180:117;5975:329;;;;:::o;6310:60::-;6338:3;6359:5;6352:12;;6310:60;;;:::o;6376:142::-;6426:9;6459:53;6477:34;6486:24;6504:5;6486:24;:::i;:::-;6477:34;:::i;:::-;6459:53;:::i;:::-;6446:66;;6376:142;;;:::o;6524:126::-;6574:9;6607:37;6638:5;6607:37;:::i;:::-;6594:50;;6524:126;;;:::o;6656:148::-;6728:9;6761:37;6792:5;6761:37;:::i;:::-;6748:50;;6656:148;;;:::o;6810:175::-;6919:59;6972:5;6919:59;:::i;:::-;6914:3;6907:72;6810:175;;:::o;6991:266::-;7106:4;7144:2;7133:9;7129:18;7121:26;;7157:93;7247:1;7236:9;7232:17;7223:6;7157:93;:::i;:::-;6991:266;;;;:::o;7263:151::-;7338:9;7371:37;7402:5;7371:37;:::i;:::-;7358:50;;7263:151;;;:::o;7420:181::-;7532:62;7588:5;7532:62;:::i;:::-;7527:3;7520:75;7420:181;;:::o;7607:272::-;7725:4;7763:2;7752:9;7748:18;7740:26;;7776:96;7869:1;7858:9;7854:17;7845:6;7776:96;:::i;:::-;7607:272;;;;:::o;7885:118::-;7956:22;7972:5;7956:22;:::i;:::-;7949:5;7946:33;7936:61;;7993:1;7990;7983:12;7936:61;7885:118;:::o;8009:135::-;8053:5;8091:6;8078:20;8069:29;;8107:31;8132:5;8107:31;:::i;:::-;8009:135;;;;:::o;8150:122::-;8223:24;8241:5;8223:24;:::i;:::-;8216:5;8213:35;8203:63;;8262:1;8259;8252:12;8203:63;8150:122;:::o;8278:139::-;8324:5;8362:6;8349:20;8340:29;;8378:33;8405:5;8378:33;:::i;:::-;8278:139;;;;:::o;8423:1199::-;8534:6;8542;8550;8558;8566;8574;8582;8631:3;8619:9;8610:7;8606:23;8602:33;8599:120;;;8638:79;;:::i;:::-;8599:120;8758:1;8783:53;8828:7;8819:6;8808:9;8804:22;8783:53;:::i;:::-;8773:63;;8729:117;8885:2;8911:53;8956:7;8947:6;8936:9;8932:22;8911:53;:::i;:::-;8901:63;;8856:118;9013:2;9039:53;9084:7;9075:6;9064:9;9060:22;9039:53;:::i;:::-;9029:63;;8984:118;9141:2;9167:53;9212:7;9203:6;9192:9;9188:22;9167:53;:::i;:::-;9157:63;;9112:118;9269:3;9296:51;9339:7;9330:6;9319:9;9315:22;9296:51;:::i;:::-;9286:61;;9240:117;9396:3;9423:53;9468:7;9459:6;9448:9;9444:22;9423:53;:::i;:::-;9413:63;;9367:119;9525:3;9552:53;9597:7;9588:6;9577:9;9573:22;9552:53;:::i;:::-;9542:63;;9496:119;8423:1199;;;;;;;;;;:::o;9628:474::-;9696:6;9704;9753:2;9741:9;9732:7;9728:23;9724:32;9721:119;;;9759:79;;:::i;:::-;9721:119;9879:1;9904:53;9949:7;9940:6;9929:9;9925:22;9904:53;:::i;:::-;9894:63;;9850:117;10006:2;10032:53;10077:7;10068:6;10057:9;10053:22;10032:53;:::i;:::-;10022:63;;9977:118;9628:474;;;;;:::o;10108:153::-;10185:9;10218:37;10249:5;10218:37;:::i;:::-;10205:50;;10108:153;;;:::o;10267:185::-;10381:64;10439:5;10381:64;:::i;:::-;10376:3;10369:77;10267:185;;:::o;10458:276::-;10578:4;10616:2;10605:9;10601:18;10593:26;;10629:98;10724:1;10713:9;10709:17;10700:6;10629:98;:::i;:::-;10458:276;;;;:::o;10740:180::-;10788:77;10785:1;10778:88;10885:4;10882:1;10875:15;10909:4;10906:1;10899:15;10926:320;10970:6;11007:1;11001:4;10997:12;10987:22;;11054:1;11048:4;11044:12;11075:18;11065:81;;11131:4;11123:6;11119:17;11109:27;;11065:81;11193:2;11185:6;11182:14;11162:18;11159:38;11156:84;;11212:18;;:::i;:::-;11156:84;10977:269;10926:320;;;:::o;11252:177::-;11392:29;11388:1;11380:6;11376:14;11369:53;11252:177;:::o;11435:366::-;11577:3;11598:67;11662:2;11657:3;11598:67;:::i;:::-;11591:74;;11674:93;11763:3;11674:93;:::i;:::-;11792:2;11787:3;11783:12;11776:19;;11435:366;;;:::o;11807:419::-;11973:4;12011:2;12000:9;11996:18;11988:26;;12060:9;12054:4;12050:20;12046:1;12035:9;12031:17;12024:47;12088:131;12214:4;12088:131;:::i;:::-;12080:139;;11807:419;;;:::o;12232:180::-;12280:77;12277:1;12270:88;12377:4;12374:1;12367:15;12401:4;12398:1;12391:15;12418:194;12458:4;12478:20;12496:1;12478:20;:::i;:::-;12473:25;;12512:20;12530:1;12512:20;:::i;:::-;12507:25;;12556:1;12553;12549:9;12541:17;;12580:1;12574:4;12571:11;12568:37;;;12585:18;;:::i;:::-;12568:37;12418:194;;;;:::o;12618:410::-;12658:7;12681:20;12699:1;12681:20;:::i;:::-;12676:25;;12715:20;12733:1;12715:20;:::i;:::-;12710:25;;12770:1;12767;12763:9;12792:30;12810:11;12792:30;:::i;:::-;12781:41;;12971:1;12962:7;12958:15;12955:1;12952:22;12932:1;12925:9;12905:83;12882:139;;13001:18;;:::i;:::-;12882:139;12666:362;12618:410;;;;:::o;13034:180::-;13082:77;13079:1;13072:88;13179:4;13176:1;13169:15;13203:4;13200:1;13193:15;13220:185;13260:1;13277:20;13295:1;13277:20;:::i;:::-;13272:25;;13311:20;13329:1;13311:20;:::i;:::-;13306:25;;13350:1;13340:35;;13355:18;;:::i;:::-;13340:35;13397:1;13394;13390:9;13385:14;;13220:185;;;;:::o;13411:191::-;13451:3;13470:20;13488:1;13470:20;:::i;:::-;13465:25;;13504:20;13522:1;13504:20;:::i;:::-;13499:25;;13547:1;13544;13540:9;13533:16;;13568:3;13565:1;13562:10;13559:36;;;13575:18;;:::i;:::-;13559:36;13411:191;;;;:::o;13608:228::-;13748:34;13744:1;13736:6;13732:14;13725:58;13817:11;13812:2;13804:6;13800:15;13793:36;13608:228;:::o;13842:366::-;13984:3;14005:67;14069:2;14064:3;14005:67;:::i;:::-;13998:74;;14081:93;14170:3;14081:93;:::i;:::-;14199:2;14194:3;14190:12;14183:19;;13842:366;;;:::o;14214:419::-;14380:4;14418:2;14407:9;14403:18;14395:26;;14467:9;14461:4;14457:20;14453:1;14442:9;14438:17;14431:47;14495:131;14621:4;14495:131;:::i;:::-;14487:139;;14214:419;;;:::o;14639:173::-;14779:25;14775:1;14767:6;14763:14;14756:49;14639:173;:::o;14818:366::-;14960:3;14981:67;15045:2;15040:3;14981:67;:::i;:::-;14974:74;;15057:93;15146:3;15057:93;:::i;:::-;15175:2;15170:3;15166:12;15159:19;;14818:366;;;:::o;15190:419::-;15356:4;15394:2;15383:9;15379:18;15371:26;;15443:9;15437:4;15433:20;15429:1;15418:9;15414:17;15407:47;15471:131;15597:4;15471:131;:::i;:::-;15463:139;;15190:419;;;:::o;15615:775::-;15848:4;15886:3;15875:9;15871:19;15863:27;;15900:71;15968:1;15957:9;15953:17;15944:6;15900:71;:::i;:::-;15981:72;16049:2;16038:9;16034:18;16025:6;15981:72;:::i;:::-;16063;16131:2;16120:9;16116:18;16107:6;16063:72;:::i;:::-;16145;16213:2;16202:9;16198:18;16189:6;16145:72;:::i;:::-;16227:73;16295:3;16284:9;16280:19;16271:6;16227:73;:::i;:::-;16310;16378:3;16367:9;16363:19;16354:6;16310:73;:::i;:::-;15615:775;;;;;;;;;:::o;16396:148::-;16498:11;16535:3;16520:18;;16396:148;;;;:::o;16550:214::-;16690:66;16686:1;16678:6;16674:14;16667:90;16550:214;:::o;16770:400::-;16930:3;16951:84;17033:1;17028:3;16951:84;:::i;:::-;16944:91;;17044:93;17133:3;17044:93;:::i;:::-;17162:1;17157:3;17153:11;17146:18;;16770:400;;;:::o;17176:79::-;17215:7;17244:5;17233:16;;17176:79;;;:::o;17261:157::-;17366:45;17386:24;17404:5;17386:24;:::i;:::-;17366:45;:::i;:::-;17361:3;17354:58;17261:157;;:::o;17424:663::-;17665:3;17687:148;17831:3;17687:148;:::i;:::-;17680:155;;17845:75;17916:3;17907:6;17845:75;:::i;:::-;17945:2;17940:3;17936:12;17929:19;;17958:75;18029:3;18020:6;17958:75;:::i;:::-;18058:2;18053:3;18049:12;18042:19;;18078:3;18071:10;;17424:663;;;;;:::o;18093:545::-;18266:4;18304:3;18293:9;18289:19;18281:27;;18318:71;18386:1;18375:9;18371:17;18362:6;18318:71;:::i;:::-;18399:68;18463:2;18452:9;18448:18;18439:6;18399:68;:::i;:::-;18477:72;18545:2;18534:9;18530:18;18521:6;18477:72;:::i;:::-;18559;18627:2;18616:9;18612:18;18603:6;18559:72;:::i;:::-;18093:545;;;;;;;:::o;18644:164::-;18784:16;18780:1;18772:6;18768:14;18761:40;18644:164;:::o;18814:366::-;18956:3;18977:67;19041:2;19036:3;18977:67;:::i;:::-;18970:74;;19053:93;19142:3;19053:93;:::i;:::-;19171:2;19166:3;19162:12;19155:19;;18814:366;;;:::o;19186:419::-;19352:4;19390:2;19379:9;19375:18;19367:26;;19439:9;19433:4;19429:20;19425:1;19414:9;19410:17;19403:47;19467:131;19593:4;19467:131;:::i;:::-;19459:139;;19186:419;;;:::o;19611:225::-;19751:34;19747:1;19739:6;19735:14;19728:58;19820:8;19815:2;19807:6;19803:15;19796:33;19611:225;:::o;19842:366::-;19984:3;20005:67;20069:2;20064:3;20005:67;:::i;:::-;19998:74;;20081:93;20170:3;20081:93;:::i;:::-;20199:2;20194:3;20190:12;20183:19;;19842:366;;;:::o;20214:419::-;20380:4;20418:2;20407:9;20403:18;20395:26;;20467:9;20461:4;20457:20;20453:1;20442:9;20438:17;20431:47;20495:131;20621:4;20495:131;:::i;:::-;20487:139;;20214:419;;;:::o;20639:165::-;20779:17;20775:1;20767:6;20763:14;20756:41;20639:165;:::o;20810:366::-;20952:3;20973:67;21037:2;21032:3;20973:67;:::i;:::-;20966:74;;21049:93;21138:3;21049:93;:::i;:::-;21167:2;21162:3;21158:12;21151:19;;20810:366;;;:::o;21182:419::-;21348:4;21386:2;21375:9;21371:18;21363:26;;21435:9;21429:4;21425:20;21421:1;21410:9;21406:17;21399:47;21463:131;21589:4;21463:131;:::i;:::-;21455:139;;21182:419;;;:::o;21607:162::-;21747:14;21743:1;21735:6;21731:14;21724:38;21607:162;:::o;21775:366::-;21917:3;21938:67;22002:2;21997:3;21938:67;:::i;:::-;21931:74;;22014:93;22103:3;22014:93;:::i;:::-;22132:2;22127:3;22123:12;22116:19;;21775:366;;;:::o;22147:419::-;22313:4;22351:2;22340:9;22336:18;22328:26;;22400:9;22394:4;22390:20;22386:1;22375:9;22371:17;22364:47;22428:131;22554:4;22428:131;:::i;:::-;22420:139;;22147:419;;;:::o;22572:182::-;22712:34;22708:1;22700:6;22696:14;22689:58;22572:182;:::o;22760:366::-;22902:3;22923:67;22987:2;22982:3;22923:67;:::i;:::-;22916:74;;22999:93;23088:3;22999:93;:::i;:::-;23117:2;23112:3;23108:12;23101:19;;22760:366;;;:::o;23132:419::-;23298:4;23336:2;23325:9;23321:18;23313:26;;23385:9;23379:4;23375:20;23371:1;23360:9;23356:17;23349:47;23413:131;23539:4;23413:131;:::i;:::-;23405:139;;23132:419;;;:::o;23557:180::-;23605:77;23602:1;23595:88;23702:4;23699:1;23692:15;23726:4;23723:1;23716:15;23743:180;23791:77;23788:1;23781:88;23888:4;23885:1;23878:15;23912:4;23909:1;23902:15;23929:143;23986:5;24017:6;24011:13;24002:22;;24033:33;24060:5;24033:33;:::i;:::-;23929:143;;;;:::o;24078:351::-;24148:6;24197:2;24185:9;24176:7;24172:23;24168:32;24165:119;;;24203:79;;:::i;:::-;24165:119;24323:1;24348:64;24404:7;24395:6;24384:9;24380:22;24348:64;:::i;:::-;24338:74;;24294:128;24078:351;;;;:::o;24435:85::-;24480:7;24509:5;24498:16;;24435:85;;;:::o;24526:158::-;24584:9;24617:61;24635:42;24644:32;24670:5;24644:32;:::i;:::-;24635:42;:::i;:::-;24617:61;:::i;:::-;24604:74;;24526:158;;;:::o;24690:147::-;24785:45;24824:5;24785:45;:::i;:::-;24780:3;24773:58;24690:147;;:::o;24843:114::-;24910:6;24944:5;24938:12;24928:22;;24843:114;;;:::o;24963:184::-;25062:11;25096:6;25091:3;25084:19;25136:4;25131:3;25127:14;25112:29;;24963:184;;;;:::o;25153:132::-;25220:4;25243:3;25235:11;;25273:4;25268:3;25264:14;25256:22;;25153:132;;;:::o;25291:108::-;25368:24;25386:5;25368:24;:::i;:::-;25363:3;25356:37;25291:108;;:::o;25405:179::-;25474:10;25495:46;25537:3;25529:6;25495:46;:::i;:::-;25573:4;25568:3;25564:14;25550:28;;25405:179;;;;:::o;25590:113::-;25660:4;25692;25687:3;25683:14;25675:22;;25590:113;;;:::o;25739:732::-;25858:3;25887:54;25935:5;25887:54;:::i;:::-;25957:86;26036:6;26031:3;25957:86;:::i;:::-;25950:93;;26067:56;26117:5;26067:56;:::i;:::-;26146:7;26177:1;26162:284;26187:6;26184:1;26181:13;26162:284;;;26263:6;26257:13;26290:63;26349:3;26334:13;26290:63;:::i;:::-;26283:70;;26376:60;26429:6;26376:60;:::i;:::-;26366:70;;26222:224;26209:1;26206;26202:9;26197:14;;26162:284;;;26166:14;26462:3;26455:10;;25863:608;;;25739:732;;;;:::o;26477:831::-;26740:4;26778:3;26767:9;26763:19;26755:27;;26792:71;26860:1;26849:9;26845:17;26836:6;26792:71;:::i;:::-;26873:80;26949:2;26938:9;26934:18;26925:6;26873:80;:::i;:::-;27000:9;26994:4;26990:20;26985:2;26974:9;26970:18;26963:48;27028:108;27131:4;27122:6;27028:108;:::i;:::-;27020:116;;27146:72;27214:2;27203:9;27199:18;27190:6;27146:72;:::i;:::-;27228:73;27296:3;27285:9;27281:19;27272:6;27228:73;:::i;:::-;26477:831;;;;;;;;:::o;27314:147::-;27415:11;27452:3;27437:18;;27314:147;;;;:::o;27467:114::-;;:::o;27587:398::-;27746:3;27767:83;27848:1;27843:3;27767:83;:::i;:::-;27760:90;;27859:93;27948:3;27859:93;:::i;:::-;27977:1;27972:3;27968:11;27961:18;;27587:398;;;:::o;27991:379::-;28175:3;28197:147;28340:3;28197:147;:::i;:::-;28190:154;;28361:3;28354:10;;27991:379;;;:::o;28376:144::-;28428:4;28451:3;28443:11;;28474:3;28471:1;28464:14;28508:4;28505:1;28495:18;28487:26;;28376:144;;;:::o;28548:878::-;28653:3;28690:5;28684:12;28719:36;28745:9;28719:36;:::i;:::-;28771:88;28852:6;28847:3;28771:88;:::i;:::-;28764:95;;28890:1;28879:9;28875:17;28906:1;28901:166;;;;29081:1;29076:344;;;;28868:552;;28901:166;28985:4;28981:9;28970;28966:25;28961:3;28954:38;29047:6;29040:14;29033:22;29025:6;29021:35;29016:3;29012:45;29005:52;;28901:166;;29076:344;29143:41;29178:5;29143:41;:::i;:::-;29206:1;29220:154;29234:6;29231:1;29228:13;29220:154;;;29308:7;29302:14;29298:1;29293:3;29289:11;29282:35;29358:1;29349:7;29345:15;29334:26;;29256:4;29253:1;29249:12;29244:17;;29220:154;;;29403:6;29398:3;29394:16;29387:23;;29083:337;;28868:552;;28657:769;;28548:878;;;;:::o;29432:273::-;29563:3;29585:94;29675:3;29666:6;29585:94;:::i;:::-;29578:101;;29696:3;29689:10;;29432:273;;;;:::o;29711:664::-;29916:4;29954:3;29943:9;29939:19;29931:27;;29968:71;30036:1;30025:9;30021:17;30012:6;29968:71;:::i;:::-;30049:72;30117:2;30106:9;30102:18;30093:6;30049:72;:::i;:::-;30131;30199:2;30188:9;30184:18;30175:6;30131:72;:::i;:::-;30213;30281:2;30270:9;30266:18;30257:6;30213:72;:::i;:::-;30295:73;30363:3;30352:9;30348:19;30339:6;30295:73;:::i;:::-;29711:664;;;;;;;;:::o

Swarm Source

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