ETH Price: $3,126.55 (-3.21%)
Gas: 14 Gwei

Token

Casinu Inu (CASINU)
 

Overview

Max Total Supply

10,000,000,000 CASINU

Holders

105

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
CasinuInu

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-30
*/

//SPDX-License-Identifier: UNLICENSED

/*

"0x1b54....98c3" is actually the address of the "Casinu Inu" !!

https://casinuinu.dog/

*/

pragma solidity ^0.8.19;


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

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

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

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

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

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

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);

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

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

contract CasinuInu is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 private tokenLiquidityThreshold = 50000000 * 10**18;
    uint256 public maxWalletLimit = 100000000 * 10**18;

    uint256 private genesis_block;
    uint256 private deadline = 4;
    uint256 private launchtax = 75;

    address private  marketingWallet = 0xd0Dbd8f1A48aB08307145EEcAE09B6C8A46a4810;
    address private devWallet = 0xd0Dbd8f1A48aB08307145EEcAE09B6C8A46a4810;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;   
    }

    Taxes public taxes = Taxes(30, 10, 0);
    Taxes public sellTaxes = Taxes(10, 30, 0);

    mapping(address => bool) public exemptFee;


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("Casinu Inu", "CASINU") {
        _tokengeneration(msg.sender, 10000000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;

    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }


    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +           
                sellTaxes.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee && sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

    if(feeswap == 0){
            return;
        }   

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
    }

    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external {
        payable(devWallet).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external {
        IERC20(tokenAdd).transfer(devWallet, amount);
    }


    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) public{
        //update the treshhold
        require(msg.sender==devWallet,"only devWallet can update threshold");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateExemptFee(address _address, bool state) public{
        require(msg.sender==devWallet,"only devWallet can exemptFee");
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }


    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600760146101000a81548160ff0219169083151502179055505f600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff0219169083151502179055506a295be96e640669720000006008556a52b7d2dcc80cd2e40000006009556004600b55604b600c5573d0dbd8f1a48ab08307145eecae09b6c8a46a4810600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d0dbd8f1a48ab08307145eecae09b6c8a46a4810600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280601e8152602001600a81526020015f815250600f5f820151815f0155602082015181600101556040820151816002015550506040518060600160405280600a8152602001601e81526020015f81525060125f820151815f015560208201518160010155604082015181600201555050348015620001a8575f80fd5b506040518060400160405280600a81526020017f436173696e7520496e75000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f434153494e550000000000000000000000000000000000000000000000000000815250816003908162000226919062000afc565b50806004908162000238919062000afc565b5050506200025b6200024f6200068a60201b60201c565b6200069160201b60201c565b6200029c33620002706200075460201b60201c565b600a6200027e919062000d69565b6402540be40062000290919062000db9565b6200075c60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ff573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000325919062000e68565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003b1919062000e68565b6040518363ffffffff1660e01b8152600401620003d092919062000ea9565b6020604051808303815f875af1158015620003ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000413919062000e68565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160155f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160155f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000fa4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c49062000f58565b60405180910390fd5b620007e05f83836200089360201b60201c565b80600281905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000887919062000f89565b60405180910390a35050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200091457607f821691505b6020821081036200092a5762000929620008cf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200098e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000951565b6200099a868362000951565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009e4620009de620009d884620009b2565b620009bb565b620009b2565b9050919050565b5f819050919050565b620009ff83620009c4565b62000a1762000a0e82620009eb565b8484546200095d565b825550505050565b5f90565b62000a2d62000a1f565b62000a3a818484620009f4565b505050565b5b8181101562000a615762000a555f8262000a23565b60018101905062000a40565b5050565b601f82111562000ab05762000a7a8162000930565b62000a858462000942565b8101602085101562000a95578190505b62000aad62000aa48562000942565b83018262000a3f565b50505b505050565b5f82821c905092915050565b5f62000ad25f198460080262000ab5565b1980831691505092915050565b5f62000aec838362000ac1565b9150826002028217905092915050565b62000b078262000898565b67ffffffffffffffff81111562000b235762000b22620008a2565b5b62000b2f8254620008fc565b62000b3c82828562000a65565b5f60209050601f83116001811462000b72575f841562000b5d578287015190505b62000b69858262000adf565b86555062000bd8565b601f19841662000b828662000930565b5f5b8281101562000bab5784890151825560018201915060208501945060208101905062000b84565b8683101562000bcb578489015162000bc7601f89168262000ac1565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000c6a5780860481111562000c425762000c4162000be0565b5b600185161562000c525780820291505b808102905062000c628562000c0d565b945062000c22565b94509492505050565b5f8262000c84576001905062000d56565b8162000c93575f905062000d56565b816001811462000cac576002811462000cb75762000ced565b600191505062000d56565b60ff84111562000ccc5762000ccb62000be0565b5b8360020a91508482111562000ce65762000ce562000be0565b5b5062000d56565b5060208310610133831016604e8410600b841016171562000d275782820a90508381111562000d215762000d2062000be0565b5b62000d56565b62000d36848484600162000c19565b9250905081840481111562000d505762000d4f62000be0565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000d7582620009b2565b915062000d828362000d5d565b925062000db17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c73565b905092915050565b5f62000dc582620009b2565b915062000dd283620009b2565b925082820262000de281620009b2565b9150828204841483151762000dfc5762000dfb62000be0565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000e328262000e07565b9050919050565b62000e448162000e26565b811462000e4f575f80fd5b50565b5f8151905062000e628162000e39565b92915050565b5f6020828403121562000e805762000e7f62000e03565b5b5f62000e8f8482850162000e52565b91505092915050565b62000ea38162000e26565b82525050565b5f60408201905062000ebe5f83018562000e98565b62000ecd602083018462000e98565b9392505050565b5f82825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f62000f4060258362000ed4565b915062000f4d8262000ee4565b604082019050919050565b5f6020820190508181035f83015262000f718162000f32565b9050919050565b62000f8381620009b2565b82525050565b5f60208201905062000f9e5f83018462000f78565b92915050565b6140748062000fb25f395ff3fe6080604052600436106101fc575f3560e01c8063728f8eea1161010c578063a457c2d71161009f578063c5d32bb21161006e578063c5d32bb2146106f9578063dd62ed3e14610735578063f2fde38b14610771578063f66895a314610799578063f887ea40146107c557610203565b8063a457c2d71461062f578063a8aa1b311461066b578063a9059cbb14610695578063aacebbe3146106d157610203565b80638da5cb5b116100db5780638da5cb5b1461058b57806395d89b41146105b55780639d282cd6146105df5780639e252f001461060757610203565b8063728f8eea146104f757806385141a77146105235780638a8c523c1461054d5780638cd4426d1461056357610203565b8063355496ca1161018f5780634ada218b1161015e5780634ada218b146104295780634e736f221461045357806366a88d961461047b57806370a08231146104a5578063715018a6146104e157610203565b8063355496ca14610375578063395093511461039d57806342b6fa11146103d95780634324deae1461040157610203565b806318160ddd116101cb57806318160ddd146102bd5780631816467f146102e757806323b872dd1461030f578063313ce5671461034b57610203565b806306fdde0314610207578063095ea7b3146102315780630e375a5c1461026d5780631340538f1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107ef565b6040516102289190612bd2565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612c90565b61087f565b6040516102649190612ce8565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e9190612e6b565b61089c565b005b3480156102a0575f80fd5b506102bb60048036038101906102b69190612ec5565b6109a3565b005b3480156102c8575f80fd5b506102d1610a3c565b6040516102de9190612eff565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612f18565b610a45565b005b34801561031a575f80fd5b5061033560048036038101906103309190612f43565b610b04565b6040516103429190612ce8565b60405180910390f35b348015610356575f80fd5b5061035f610bff565b60405161036c9190612fae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612fc7565b610c07565b005b3480156103a8575f80fd5b506103c360048036038101906103be9190612c90565b610cee565b6040516103d09190612ce8565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa9190613005565b610d95565b005b34801561040c575f80fd5b5061042760048036038101906104229190613005565b610e4c565b005b348015610434575f80fd5b5061043d610ef0565b60405161044a9190612ce8565b60405180910390f35b34801561045e575f80fd5b5061047960048036038101906104749190613030565b610f03565b005b348015610486575f80fd5b5061048f610fc0565b60405161049c9190612eff565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612f18565b610fc6565b6040516104d89190612eff565b60405180910390f35b3480156104ec575f80fd5b506104f561100b565b005b348015610502575f80fd5b5061050b611092565b60405161051a93929190613080565b60405180910390f35b34801561052e575f80fd5b506105376110a9565b60405161054491906130c4565b60405180910390f35b348015610558575f80fd5b506105616110af565b005b34801561056e575f80fd5b5061058960048036038101906105849190612c90565b6111ba565b005b348015610596575f80fd5b5061059f61125b565b6040516105ac91906130c4565b60405180910390f35b3480156105c0575f80fd5b506105c9611283565b6040516105d69190612bd2565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190613030565b611313565b005b348015610612575f80fd5b5061062d60048036038101906106289190613005565b6113d0565b005b34801561063a575f80fd5b5061065560048036038101906106509190612c90565b611438565b6040516106629190612ce8565b60405180910390f35b348015610676575f80fd5b5061067f611527565b60405161068c91906130c4565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190612c90565b61154c565b6040516106c89190612ce8565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190612f18565b611562565b005b348015610704575f80fd5b5061071f600480360381019061071a9190612f18565b611621565b60405161072c9190612ce8565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906130dd565b61163e565b6040516107689190612eff565b60405180910390f35b34801561077c575f80fd5b5061079760048036038101906107929190612f18565b6116c0565b005b3480156107a4575f80fd5b506107ad6117b6565b6040516107bc93929190613080565b60405180910390f35b3480156107d0575f80fd5b506107d96117cd565b6040516107e69190613176565b60405180910390f35b6060600380546107fe906131bc565b80601f016020809104026020016040519081016040528092919081815260200182805461082a906131bc565b80156108755780601f1061084c57610100808354040283529160200191610875565b820191905f5260205f20905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b5f61089261088b6117f2565b84846117f9565b6001905092915050565b6108a46117f2565b73ffffffffffffffffffffffffffffffffffffffff166108c261125b565b73ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90613236565b60405180910390fd5b5f5b825181101561099e578160155f85848151811061093a57610939613254565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091a565b505050565b6109ab6117f2565b73ffffffffffffffffffffffffffffffffffffffff166109c961125b565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1690613236565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b610a4d6117f2565b73ffffffffffffffffffffffffffffffffffffffff16610a6b61125b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890613236565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b108484846119bc565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b576117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd906132f1565b60405180910390fd5b610bf385610be26117f2565b8584610bee919061333c565b6117f9565b60019150509392505050565b5f6012905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906133b9565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610d8b610cfa6117f2565b848460015f610d076117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d8691906133d7565b6117f9565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061347a565b60405180910390fd5b610e2c610bff565b600a610e3891906135c7565b81610e439190613611565b60088190555050565b610e546117f2565b73ffffffffffffffffffffffffffffffffffffffff16610e7261125b565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613236565b60405180910390fd5b610ed0610bff565b600a610edc91906135c7565b81610ee79190613611565b60098190555050565b600760169054906101000a900460ff1681565b610f0b6117f2565b73ffffffffffffffffffffffffffffffffffffffff16610f2961125b565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690613236565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060125f820151815f01556020820151816001015560408201518160020155905050505050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110136117f2565b73ffffffffffffffffffffffffffffffffffffffff1661103161125b565b73ffffffffffffffffffffffffffffffffffffffff1614611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90613236565b60405180910390fd5b6110905f6121c7565b565b600f805f0154908060010154908060020154905083565b61dead81565b6110b76117f2565b73ffffffffffffffffffffffffffffffffffffffff166110d561125b565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613236565b60405180910390fd5b600760169054906101000a900460ff161561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061369c565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112169291906136ba565b6020604051808303815f875af1158015611232573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125691906136f5565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611292906131bc565b80601f01602080910402602001604051908101604052809291908181526020018280546112be906131bc565b80156113095780601f106112e057610100808354040283529160200191611309565b820191905f5260205f20905b8154815290600101906020018083116112ec57829003601f168201915b5050505050905090565b61131b6117f2565b73ffffffffffffffffffffffffffffffffffffffff1661133961125b565b73ffffffffffffffffffffffffffffffffffffffff161461138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690613236565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f5f820151815f01556020820151816001015560408201518160020155905050505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611434573d5f803e3d5ffd5b5050565b5f8060015f6114456117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613790565b60405180910390fd5b61151c61150a6117f2565b858584611517919061333c565b6117f9565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115583384846119bc565b6001905092915050565b61156a6117f2565b73ffffffffffffffffffffffffffffffffffffffff1661158861125b565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590613236565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116c86117f2565b73ffffffffffffffffffffffffffffffffffffffff166116e661125b565b73ffffffffffffffffffffffffffffffffffffffff161461173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390613236565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a19061381e565b60405180910390fd5b6117b3816121c7565b50565b6012805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906138ac565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc9061393a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119af9190612eff565b60405180910390a3505050565b5f81116119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906139c8565b60405180910390fd5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a9c575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611af157600760169054906101000a900460ff16611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae790613a30565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b94575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bad5750600760149054906101000a900460ff16155b15611c0b5760095481611bbf84610fc6565b611bc991906133d7565b1115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190613a98565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611caf575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d02575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d1b5750600760149054906101000a900460ff16155b15611dce5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dcd5760095481611d8184610fc6565b611d8b91906133d7565b1115611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613a98565b60405180910390fd5b5b5b5f805f611dd9612b2a565b5f60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e78575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e925750600b54600a54611e8f91906133d7565b43105b9050600760149054906101000a900460ff1680611ef5575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f46575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f53575f92506120db565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611fad575080155b1561200d5760126002015460125f0154601260010154611fcd91906133d7565b611fd791906133d7565b945084935060126040518060600160405290815f82015481526020016001820154815260200160028201548152505091506120da565b80158015612067575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156120c757600f60020154600f5f0154600f6001015461208791906133d7565b61209191906133d7565b9450849350600f6040518060600160405290815f82015481526020016001820154815260200160028201548152505091506120d9565b80156120d857600c549450600c5493505b5b5b5b606484876120e99190613611565b6120f39190613ae3565b9250600760159054906101000a900460ff16801561215e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561216e5761216d858361228a565b5b6121848888858961217f919061333c565b612492565b5f8311156121bd575f8511156121bc575f606486886121a39190613611565b6121ad9190613ae3565b90506121ba893083612492565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661248e576001600760146101000a81548160ff0219169083151502179055505f820315612473575f6122cb30610fc6565b9050600854811061247157600160085411156122e75760085490505b5f6002846122f59190613611565b90505f818460200151846123099190613611565b6123139190613ae3565b90505f8184612322919061333c565b90505f47905061233182612705565b5f814761233e919061333c565b90505f876020015186612351919061333c565b8261235c9190613ae3565b90505f88602001518261236f9190613611565b90505f81111561238457612383868261293b565b5b5f895f01516002846123969190613611565b6123a09190613611565b90505f8111156123f5576123f481600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a3590919063ffffffff16565b5b5f8a604001516002856124089190613611565b6124129190613611565b90505f8111156124675761246681600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a3590919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790613b83565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613c11565b60405180910390fd5b612579838383612b25565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390613c9f565b60405180910390fd5b8181612608919061333c565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461269391906133d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126f79190612eff565b60405180910390a350505050565b5f600267ffffffffffffffff81111561272157612720612d05565b5b60405190808252806020026020018201604052801561274f5781602001602082028036833780820191505090505b50905030815f8151811061276657612765613254565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282e9190613cd1565b8160018151811061284257612841613254565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128a83060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161290a959493929190613dec565b5f604051808303815f87803b158015612921575f80fd5b505af1158015612933573d5f803e3d5ffd5b505050505050565b6129673060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129ed96959493929190613e44565b60606040518083038185885af1158015612a09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a2e9190613eb7565b5050505050565b80471015612a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6f90613f51565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612a9d90613f9c565b5f6040518083038185875af1925050503d805f8114612ad7576040519150601f19603f3d011682016040523d82523d5f602084013e612adc565b606091505b5050905080612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614020565b60405180910390fd5b505050565b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b7f578082015181840152602081019050612b64565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ba482612b48565b612bae8185612b52565b9350612bbe818560208601612b62565b612bc781612b8a565b840191505092915050565b5f6020820190508181035f830152612bea8184612b9a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c2c82612c03565b9050919050565b612c3c81612c22565b8114612c46575f80fd5b50565b5f81359050612c5781612c33565b92915050565b5f819050919050565b612c6f81612c5d565b8114612c79575f80fd5b50565b5f81359050612c8a81612c66565b92915050565b5f8060408385031215612ca657612ca5612bfb565b5b5f612cb385828601612c49565b9250506020612cc485828601612c7c565b9150509250929050565b5f8115159050919050565b612ce281612cce565b82525050565b5f602082019050612cfb5f830184612cd9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d3b82612b8a565b810181811067ffffffffffffffff82111715612d5a57612d59612d05565b5b80604052505050565b5f612d6c612bf2565b9050612d788282612d32565b919050565b5f67ffffffffffffffff821115612d9757612d96612d05565b5b602082029050602081019050919050565b5f80fd5b5f612dbe612db984612d7d565b612d63565b90508083825260208201905060208402830185811115612de157612de0612da8565b5b835b81811015612e0a5780612df68882612c49565b845260208401935050602081019050612de3565b5050509392505050565b5f82601f830112612e2857612e27612d01565b5b8135612e38848260208601612dac565b91505092915050565b612e4a81612cce565b8114612e54575f80fd5b50565b5f81359050612e6581612e41565b92915050565b5f8060408385031215612e8157612e80612bfb565b5b5f83013567ffffffffffffffff811115612e9e57612e9d612bff565b5b612eaa85828601612e14565b9250506020612ebb85828601612e57565b9150509250929050565b5f60208284031215612eda57612ed9612bfb565b5b5f612ee784828501612e57565b91505092915050565b612ef981612c5d565b82525050565b5f602082019050612f125f830184612ef0565b92915050565b5f60208284031215612f2d57612f2c612bfb565b5b5f612f3a84828501612c49565b91505092915050565b5f805f60608486031215612f5a57612f59612bfb565b5b5f612f6786828701612c49565b9350506020612f7886828701612c49565b9250506040612f8986828701612c7c565b9150509250925092565b5f60ff82169050919050565b612fa881612f93565b82525050565b5f602082019050612fc15f830184612f9f565b92915050565b5f8060408385031215612fdd57612fdc612bfb565b5b5f612fea85828601612c49565b9250506020612ffb85828601612e57565b9150509250929050565b5f6020828403121561301a57613019612bfb565b5b5f61302784828501612c7c565b91505092915050565b5f805f6060848603121561304757613046612bfb565b5b5f61305486828701612c7c565b935050602061306586828701612c7c565b925050604061307686828701612c7c565b9150509250925092565b5f6060820190506130935f830186612ef0565b6130a06020830185612ef0565b6130ad6040830184612ef0565b949350505050565b6130be81612c22565b82525050565b5f6020820190506130d75f8301846130b5565b92915050565b5f80604083850312156130f3576130f2612bfb565b5b5f61310085828601612c49565b925050602061311185828601612c49565b9150509250929050565b5f819050919050565b5f61313e61313961313484612c03565b61311b565b612c03565b9050919050565b5f61314f82613124565b9050919050565b5f61316082613145565b9050919050565b61317081613156565b82525050565b5f6020820190506131895f830184613167565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806131d357607f821691505b6020821081036131e6576131e561318f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613220602083612b52565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6132db602883612b52565b91506132e682613281565b604082019050919050565b5f6020820190508181035f830152613308816132cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61334682612c5d565b915061335183612c5d565b92508282039050818111156133695761336861330f565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d7074466565000000005f82015250565b5f6133a3601c83612b52565b91506133ae8261336f565b602082019050919050565b5f6020820190508181035f8301526133d081613397565b9050919050565b5f6133e182612c5d565b91506133ec83612c5d565b92508282019050808211156134045761340361330f565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e20757064617465207468726573685f8201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b5f613464602383612b52565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156134ed578086048111156134c9576134c861330f565b5b60018516156134d85780820291505b80810290506134e685613498565b94506134ad565b94509492505050565b5f8261350557600190506135c0565b81613512575f90506135c0565b8160018114613528576002811461353257613561565b60019150506135c0565b60ff8411156135445761354361330f565b5b8360020a91508482111561355b5761355a61330f565b5b506135c0565b5060208310610133831016604e8410600b84101617156135965782820a9050838111156135915761359061330f565b5b6135c0565b6135a384848460016134a4565b925090508184048111156135ba576135b961330f565b5b81810290505b9392505050565b5f6135d182612c5d565b91506135dc83612f93565b92506136097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134f6565b905092915050565b5f61361b82612c5d565b915061362683612c5d565b925082820261363481612c5d565b9150828204841483151761364b5761364a61330f565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613686601a83612b52565b915061369182613652565b602082019050919050565b5f6020820190508181035f8301526136b38161367a565b9050919050565b5f6040820190506136cd5f8301856130b5565b6136da6020830184612ef0565b9392505050565b5f815190506136ef81612e41565b92915050565b5f6020828403121561370a57613709612bfb565b5b5f613717848285016136e1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61377a602583612b52565b915061378582613720565b604082019050919050565b5f6020820190508181035f8301526137a78161376e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613808602683612b52565b9150613813826137ae565b604082019050919050565b5f6020820190508181035f830152613835816137fc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613896602483612b52565b91506138a18261383c565b604082019050919050565b5f6020820190508181035f8301526138c38161388a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613924602283612b52565b915061392f826138ca565b604082019050919050565b5f6020820190508181035f83015261395181613918565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6139b2602983612b52565b91506139bd82613958565b604082019050919050565b5f6020820190508181035f8301526139df816139a6565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613a1a601383612b52565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d69745f82015250565b5f613a82602083612b52565b9150613a8d82613a4e565b602082019050919050565b5f6020820190508181035f830152613aaf81613a76565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aed82612c5d565b9150613af883612c5d565b925082613b0857613b07613ab6565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b6d602583612b52565b9150613b7882613b13565b604082019050919050565b5f6020820190508181035f830152613b9a81613b61565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bfb602383612b52565b9150613c0682613ba1565b604082019050919050565b5f6020820190508181035f830152613c2881613bef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c89602683612b52565b9150613c9482613c2f565b604082019050919050565b5f6020820190508181035f830152613cb681613c7d565b9050919050565b5f81519050613ccb81612c33565b92915050565b5f60208284031215613ce657613ce5612bfb565b5b5f613cf384828501613cbd565b91505092915050565b5f819050919050565b5f613d1f613d1a613d1584613cfc565b61311b565b612c5d565b9050919050565b613d2f81613d05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6781612c22565b82525050565b5f613d788383613d5e565b60208301905092915050565b5f602082019050919050565b5f613d9a82613d35565b613da48185613d3f565b9350613daf83613d4f565b805f5b83811015613ddf578151613dc68882613d6d565b9750613dd183613d84565b925050600181019050613db2565b5085935050505092915050565b5f60a082019050613dff5f830188612ef0565b613e0c6020830187613d26565b8181036040830152613e1e8186613d90565b9050613e2d60608301856130b5565b613e3a6080830184612ef0565b9695505050505050565b5f60c082019050613e575f8301896130b5565b613e646020830188612ef0565b613e716040830187613d26565b613e7e6060830186613d26565b613e8b60808301856130b5565b613e9860a0830184612ef0565b979650505050505050565b5f81519050613eb181612c66565b92915050565b5f805f60608486031215613ece57613ecd612bfb565b5b5f613edb86828701613ea3565b9350506020613eec86828701613ea3565b9250506040613efd86828701613ea3565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613f3b601d83612b52565b9150613f4682613f07565b602082019050919050565b5f6020820190508181035f830152613f6881613f2f565b9050919050565b5f81905092915050565b50565b5f613f875f83613f6f565b9150613f9282613f79565b5f82019050919050565b5f613fa682613f7c565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61400a603a83612b52565b915061401582613fb0565b604082019050919050565b5f6020820190508181035f83015261403781613ffe565b905091905056fea2646970667358221220db8227601f0394fbaa37713b40e45c4ba462f3e498947ece6a626eb35e1b810d64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c8063728f8eea1161010c578063a457c2d71161009f578063c5d32bb21161006e578063c5d32bb2146106f9578063dd62ed3e14610735578063f2fde38b14610771578063f66895a314610799578063f887ea40146107c557610203565b8063a457c2d71461062f578063a8aa1b311461066b578063a9059cbb14610695578063aacebbe3146106d157610203565b80638da5cb5b116100db5780638da5cb5b1461058b57806395d89b41146105b55780639d282cd6146105df5780639e252f001461060757610203565b8063728f8eea146104f757806385141a77146105235780638a8c523c1461054d5780638cd4426d1461056357610203565b8063355496ca1161018f5780634ada218b1161015e5780634ada218b146104295780634e736f221461045357806366a88d961461047b57806370a08231146104a5578063715018a6146104e157610203565b8063355496ca14610375578063395093511461039d57806342b6fa11146103d95780634324deae1461040157610203565b806318160ddd116101cb57806318160ddd146102bd5780631816467f146102e757806323b872dd1461030f578063313ce5671461034b57610203565b806306fdde0314610207578063095ea7b3146102315780630e375a5c1461026d5780631340538f1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107ef565b6040516102289190612bd2565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612c90565b61087f565b6040516102649190612ce8565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e9190612e6b565b61089c565b005b3480156102a0575f80fd5b506102bb60048036038101906102b69190612ec5565b6109a3565b005b3480156102c8575f80fd5b506102d1610a3c565b6040516102de9190612eff565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612f18565b610a45565b005b34801561031a575f80fd5b5061033560048036038101906103309190612f43565b610b04565b6040516103429190612ce8565b60405180910390f35b348015610356575f80fd5b5061035f610bff565b60405161036c9190612fae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612fc7565b610c07565b005b3480156103a8575f80fd5b506103c360048036038101906103be9190612c90565b610cee565b6040516103d09190612ce8565b60405180910390f35b3480156103e4575f80fd5b506103ff60048036038101906103fa9190613005565b610d95565b005b34801561040c575f80fd5b5061042760048036038101906104229190613005565b610e4c565b005b348015610434575f80fd5b5061043d610ef0565b60405161044a9190612ce8565b60405180910390f35b34801561045e575f80fd5b5061047960048036038101906104749190613030565b610f03565b005b348015610486575f80fd5b5061048f610fc0565b60405161049c9190612eff565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c69190612f18565b610fc6565b6040516104d89190612eff565b60405180910390f35b3480156104ec575f80fd5b506104f561100b565b005b348015610502575f80fd5b5061050b611092565b60405161051a93929190613080565b60405180910390f35b34801561052e575f80fd5b506105376110a9565b60405161054491906130c4565b60405180910390f35b348015610558575f80fd5b506105616110af565b005b34801561056e575f80fd5b5061058960048036038101906105849190612c90565b6111ba565b005b348015610596575f80fd5b5061059f61125b565b6040516105ac91906130c4565b60405180910390f35b3480156105c0575f80fd5b506105c9611283565b6040516105d69190612bd2565b60405180910390f35b3480156105ea575f80fd5b5061060560048036038101906106009190613030565b611313565b005b348015610612575f80fd5b5061062d60048036038101906106289190613005565b6113d0565b005b34801561063a575f80fd5b5061065560048036038101906106509190612c90565b611438565b6040516106629190612ce8565b60405180910390f35b348015610676575f80fd5b5061067f611527565b60405161068c91906130c4565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190612c90565b61154c565b6040516106c89190612ce8565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f29190612f18565b611562565b005b348015610704575f80fd5b5061071f600480360381019061071a9190612f18565b611621565b60405161072c9190612ce8565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906130dd565b61163e565b6040516107689190612eff565b60405180910390f35b34801561077c575f80fd5b5061079760048036038101906107929190612f18565b6116c0565b005b3480156107a4575f80fd5b506107ad6117b6565b6040516107bc93929190613080565b60405180910390f35b3480156107d0575f80fd5b506107d96117cd565b6040516107e69190613176565b60405180910390f35b6060600380546107fe906131bc565b80601f016020809104026020016040519081016040528092919081815260200182805461082a906131bc565b80156108755780601f1061084c57610100808354040283529160200191610875565b820191905f5260205f20905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b5f61089261088b6117f2565b84846117f9565b6001905092915050565b6108a46117f2565b73ffffffffffffffffffffffffffffffffffffffff166108c261125b565b73ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90613236565b60405180910390fd5b5f5b825181101561099e578160155f85848151811061093a57610939613254565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061091a565b505050565b6109ab6117f2565b73ffffffffffffffffffffffffffffffffffffffff166109c961125b565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1690613236565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b610a4d6117f2565b73ffffffffffffffffffffffffffffffffffffffff16610a6b61125b565b73ffffffffffffffffffffffffffffffffffffffff1614610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab890613236565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b108484846119bc565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b576117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd906132f1565b60405180910390fd5b610bf385610be26117f2565b8584610bee919061333c565b6117f9565b60019150509392505050565b5f6012905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8d906133b9565b60405180910390fd5b8060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610d8b610cfa6117f2565b848460015f610d076117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d8691906133d7565b6117f9565b6001905092915050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061347a565b60405180910390fd5b610e2c610bff565b600a610e3891906135c7565b81610e439190613611565b60088190555050565b610e546117f2565b73ffffffffffffffffffffffffffffffffffffffff16610e7261125b565b73ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613236565b60405180910390fd5b610ed0610bff565b600a610edc91906135c7565b81610ee79190613611565b60098190555050565b600760169054906101000a900460ff1681565b610f0b6117f2565b73ffffffffffffffffffffffffffffffffffffffff16610f2961125b565b73ffffffffffffffffffffffffffffffffffffffff1614610f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7690613236565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060125f820151815f01556020820151816001015560408201518160020155905050505050565b60095481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110136117f2565b73ffffffffffffffffffffffffffffffffffffffff1661103161125b565b73ffffffffffffffffffffffffffffffffffffffff1614611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90613236565b60405180910390fd5b6110905f6121c7565b565b600f805f0154908060010154908060020154905083565b61dead81565b6110b76117f2565b73ffffffffffffffffffffffffffffffffffffffff166110d561125b565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290613236565b60405180910390fd5b600760169054906101000a900460ff161561117b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111729061369c565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600a81905550565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016112169291906136ba565b6020604051808303815f875af1158015611232573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125691906136f5565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611292906131bc565b80601f01602080910402602001604051908101604052809291908181526020018280546112be906131bc565b80156113095780601f106112e057610100808354040283529160200191611309565b820191905f5260205f20905b8154815290600101906020018083116112ec57829003601f168201915b5050505050905090565b61131b6117f2565b73ffffffffffffffffffffffffffffffffffffffff1661133961125b565b73ffffffffffffffffffffffffffffffffffffffff161461138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138690613236565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600f5f820151815f01556020820151816001015560408201518160020155905050505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611434573d5f803e3d5ffd5b5050565b5f8060015f6114456117f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690613790565b60405180910390fd5b61151c61150a6117f2565b858584611517919061333c565b6117f9565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6115583384846119bc565b6001905092915050565b61156a6117f2565b73ffffffffffffffffffffffffffffffffffffffff1661158861125b565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590613236565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6015602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116c86117f2565b73ffffffffffffffffffffffffffffffffffffffff166116e661125b565b73ffffffffffffffffffffffffffffffffffffffff161461173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390613236565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a19061381e565b60405180910390fd5b6117b3816121c7565b50565b6012805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e906138ac565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc9061393a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119af9190612eff565b60405180910390a3505050565b5f81116119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906139c8565b60405180910390fd5b60155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a9c575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611af157600760169054906101000a900460ff16611af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae790613a30565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b94575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bad5750600760149054906101000a900460ff16155b15611c0b5760095481611bbf84610fc6565b611bc991906133d7565b1115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190613a98565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611caf575060155f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d02575060155f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d1b5750600760149054906101000a900460ff16155b15611dce5760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611dcd5760095481611d8184610fc6565b611d8b91906133d7565b1115611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390613a98565b60405180910390fd5b5b5b5f805f611dd9612b2a565b5f60155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e78575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e925750600b54600a54611e8f91906133d7565b43105b9050600760149054906101000a900460ff1680611ef5575060155f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611f46575060155f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f53575f92506120db565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015611fad575080155b1561200d5760126002015460125f0154601260010154611fcd91906133d7565b611fd791906133d7565b945084935060126040518060600160405290815f82015481526020016001820154815260200160028201548152505091506120da565b80158015612067575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16145b156120c757600f60020154600f5f0154600f6001015461208791906133d7565b61209191906133d7565b9450849350600f6040518060600160405290815f82015481526020016001820154815260200160028201548152505091506120d9565b80156120d857600c549450600c5493505b5b5b5b606484876120e99190613611565b6120f39190613ae3565b9250600760159054906101000a900460ff16801561215e575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561216e5761216d858361228a565b5b6121848888858961217f919061333c565b612492565b5f8311156121bd575f8511156121bc575f606486886121a39190613611565b6121ad9190613ae3565b90506121ba893083612492565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff1661248e576001600760146101000a81548160ff0219169083151502179055505f820315612473575f6122cb30610fc6565b9050600854811061247157600160085411156122e75760085490505b5f6002846122f59190613611565b90505f818460200151846123099190613611565b6123139190613ae3565b90505f8184612322919061333c565b90505f47905061233182612705565b5f814761233e919061333c565b90505f876020015186612351919061333c565b8261235c9190613ae3565b90505f88602001518261236f9190613611565b90505f81111561238457612383868261293b565b5b5f895f01516002846123969190613611565b6123a09190613611565b90505f8111156123f5576123f481600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a3590919063ffffffff16565b5b5f8a604001516002856124089190613611565b6124129190613611565b90505f8111156124675761246681600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a3590919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f790613b83565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590613c11565b60405180910390fd5b612579838383612b25565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390613c9f565b60405180910390fd5b8181612608919061333c565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461269391906133d7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126f79190612eff565b60405180910390a350505050565b5f600267ffffffffffffffff81111561272157612720612d05565b5b60405190808252806020026020018201604052801561274f5781602001602082028036833780820191505090505b50905030815f8151811061276657612765613254565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561280a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061282e9190613cd1565b8160018151811061284257612841613254565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128a83060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161290a959493929190613dec565b5f604051808303815f87803b158015612921575f80fd5b505af1158015612933573d5f803e3d5ffd5b505050505050565b6129673060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117f9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129ed96959493929190613e44565b60606040518083038185885af1158015612a09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612a2e9190613eb7565b5050505050565b80471015612a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6f90613f51565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612a9d90613f9c565b5f6040518083038185875af1925050503d805f8114612ad7576040519150601f19603f3d011682016040523d82523d5f602084013e612adc565b606091505b5050905080612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614020565b60405180910390fd5b505050565b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b7f578082015181840152602081019050612b64565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612ba482612b48565b612bae8185612b52565b9350612bbe818560208601612b62565b612bc781612b8a565b840191505092915050565b5f6020820190508181035f830152612bea8184612b9a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c2c82612c03565b9050919050565b612c3c81612c22565b8114612c46575f80fd5b50565b5f81359050612c5781612c33565b92915050565b5f819050919050565b612c6f81612c5d565b8114612c79575f80fd5b50565b5f81359050612c8a81612c66565b92915050565b5f8060408385031215612ca657612ca5612bfb565b5b5f612cb385828601612c49565b9250506020612cc485828601612c7c565b9150509250929050565b5f8115159050919050565b612ce281612cce565b82525050565b5f602082019050612cfb5f830184612cd9565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d3b82612b8a565b810181811067ffffffffffffffff82111715612d5a57612d59612d05565b5b80604052505050565b5f612d6c612bf2565b9050612d788282612d32565b919050565b5f67ffffffffffffffff821115612d9757612d96612d05565b5b602082029050602081019050919050565b5f80fd5b5f612dbe612db984612d7d565b612d63565b90508083825260208201905060208402830185811115612de157612de0612da8565b5b835b81811015612e0a5780612df68882612c49565b845260208401935050602081019050612de3565b5050509392505050565b5f82601f830112612e2857612e27612d01565b5b8135612e38848260208601612dac565b91505092915050565b612e4a81612cce565b8114612e54575f80fd5b50565b5f81359050612e6581612e41565b92915050565b5f8060408385031215612e8157612e80612bfb565b5b5f83013567ffffffffffffffff811115612e9e57612e9d612bff565b5b612eaa85828601612e14565b9250506020612ebb85828601612e57565b9150509250929050565b5f60208284031215612eda57612ed9612bfb565b5b5f612ee784828501612e57565b91505092915050565b612ef981612c5d565b82525050565b5f602082019050612f125f830184612ef0565b92915050565b5f60208284031215612f2d57612f2c612bfb565b5b5f612f3a84828501612c49565b91505092915050565b5f805f60608486031215612f5a57612f59612bfb565b5b5f612f6786828701612c49565b9350506020612f7886828701612c49565b9250506040612f8986828701612c7c565b9150509250925092565b5f60ff82169050919050565b612fa881612f93565b82525050565b5f602082019050612fc15f830184612f9f565b92915050565b5f8060408385031215612fdd57612fdc612bfb565b5b5f612fea85828601612c49565b9250506020612ffb85828601612e57565b9150509250929050565b5f6020828403121561301a57613019612bfb565b5b5f61302784828501612c7c565b91505092915050565b5f805f6060848603121561304757613046612bfb565b5b5f61305486828701612c7c565b935050602061306586828701612c7c565b925050604061307686828701612c7c565b9150509250925092565b5f6060820190506130935f830186612ef0565b6130a06020830185612ef0565b6130ad6040830184612ef0565b949350505050565b6130be81612c22565b82525050565b5f6020820190506130d75f8301846130b5565b92915050565b5f80604083850312156130f3576130f2612bfb565b5b5f61310085828601612c49565b925050602061311185828601612c49565b9150509250929050565b5f819050919050565b5f61313e61313961313484612c03565b61311b565b612c03565b9050919050565b5f61314f82613124565b9050919050565b5f61316082613145565b9050919050565b61317081613156565b82525050565b5f6020820190506131895f830184613167565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806131d357607f821691505b6020821081036131e6576131e561318f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613220602083612b52565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6132db602883612b52565b91506132e682613281565b604082019050919050565b5f6020820190508181035f830152613308816132cf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61334682612c5d565b915061335183612c5d565b92508282039050818111156133695761336861330f565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e206578656d7074466565000000005f82015250565b5f6133a3601c83612b52565b91506133ae8261336f565b602082019050919050565b5f6020820190508181035f8301526133d081613397565b9050919050565b5f6133e182612c5d565b91506133ec83612c5d565b92508282019050808211156134045761340361330f565b5b92915050565b7f6f6e6c792064657657616c6c65742063616e20757064617465207468726573685f8201527f6f6c640000000000000000000000000000000000000000000000000000000000602082015250565b5f613464602383612b52565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b5f8160011c9050919050565b5f808291508390505b60018511156134ed578086048111156134c9576134c861330f565b5b60018516156134d85780820291505b80810290506134e685613498565b94506134ad565b94509492505050565b5f8261350557600190506135c0565b81613512575f90506135c0565b8160018114613528576002811461353257613561565b60019150506135c0565b60ff8411156135445761354361330f565b5b8360020a91508482111561355b5761355a61330f565b5b506135c0565b5060208310610133831016604e8410600b84101617156135965782820a9050838111156135915761359061330f565b5b6135c0565b6135a384848460016134a4565b925090508184048111156135ba576135b961330f565b5b81810290505b9392505050565b5f6135d182612c5d565b91506135dc83612f93565b92506136097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134f6565b905092915050565b5f61361b82612c5d565b915061362683612c5d565b925082820261363481612c5d565b9150828204841483151761364b5761364a61330f565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c65640000000000005f82015250565b5f613686601a83612b52565b915061369182613652565b602082019050919050565b5f6020820190508181035f8301526136b38161367a565b9050919050565b5f6040820190506136cd5f8301856130b5565b6136da6020830184612ef0565b9392505050565b5f815190506136ef81612e41565b92915050565b5f6020828403121561370a57613709612bfb565b5b5f613717848285016136e1565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61377a602583612b52565b915061378582613720565b604082019050919050565b5f6020820190508181035f8301526137a78161376e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613808602683612b52565b9150613813826137ae565b604082019050919050565b5f6020820190508181035f830152613835816137fc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613896602483612b52565b91506138a18261383c565b604082019050919050565b5f6020820190508181035f8301526138c38161388a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613924602283612b52565b915061392f826138ca565b604082019050919050565b5f6020820190508181035f83015261395181613918565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6139b2602983612b52565b91506139bd82613958565b604082019050919050565b5f6020820190508181035f8301526139df816139a6565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613a1a601383612b52565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d69745f82015250565b5f613a82602083612b52565b9150613a8d82613a4e565b602082019050919050565b5f6020820190508181035f830152613aaf81613a76565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aed82612c5d565b9150613af883612c5d565b925082613b0857613b07613ab6565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613b6d602583612b52565b9150613b7882613b13565b604082019050919050565b5f6020820190508181035f830152613b9a81613b61565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613bfb602383612b52565b9150613c0682613ba1565b604082019050919050565b5f6020820190508181035f830152613c2881613bef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c89602683612b52565b9150613c9482613c2f565b604082019050919050565b5f6020820190508181035f830152613cb681613c7d565b9050919050565b5f81519050613ccb81612c33565b92915050565b5f60208284031215613ce657613ce5612bfb565b5b5f613cf384828501613cbd565b91505092915050565b5f819050919050565b5f613d1f613d1a613d1584613cfc565b61311b565b612c5d565b9050919050565b613d2f81613d05565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6781612c22565b82525050565b5f613d788383613d5e565b60208301905092915050565b5f602082019050919050565b5f613d9a82613d35565b613da48185613d3f565b9350613daf83613d4f565b805f5b83811015613ddf578151613dc68882613d6d565b9750613dd183613d84565b925050600181019050613db2565b5085935050505092915050565b5f60a082019050613dff5f830188612ef0565b613e0c6020830187613d26565b8181036040830152613e1e8186613d90565b9050613e2d60608301856130b5565b613e3a6080830184612ef0565b9695505050505050565b5f60c082019050613e575f8301896130b5565b613e646020830188612ef0565b613e716040830187613d26565b613e7e6060830186613d26565b613e8b60808301856130b5565b613e9860a0830184612ef0565b979650505050505050565b5f81519050613eb181612c66565b92915050565b5f805f60608486031215613ece57613ecd612bfb565b5b5f613edb86828701613ea3565b9350506020613eec86828701613ea3565b9250506040613efd86828701613ea3565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f613f3b601d83612b52565b9150613f4682613f07565b602082019050919050565b5f6020820190508181035f830152613f6881613f2f565b9050919050565b5f81905092915050565b50565b5f613f875f83613f6f565b9150613f9282613f79565b5f82019050919050565b5f613fa682613f7c565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61400a603a83612b52565b915061401582613fb0565b604082019050919050565b5f6020820190508181035f83015261403781613ffe565b905091905056fea2646970667358221220db8227601f0394fbaa37713b40e45c4ba462f3e498947ece6a626eb35e1b810d64736f6c63430008160033

Deployed Bytecode Sourcemap

12796:10590:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14591:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23124:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22526:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3607:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22416:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14760:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3449:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22937:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15216:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22686:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21256:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13028:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21053:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13137:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3778:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11459:94;;;;;;;;;;;;;:::i;:::-;;13665:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13467:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22061:224;;;;;;;;;;;;;:::i;:::-;;21507:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11236:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2706:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20852:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21395:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21644:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12910:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15474:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22293:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13759:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4397:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11561:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13709:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12882:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2487:100;2541:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:100;:::o;14591:161::-;14666:4;14683:39;14692:12;:10;:12::i;:::-;14706:7;14715:6;14683:8;:39::i;:::-;14740:4;14733:11;;14591:161;;;;:::o;23124:202::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23221:9:::1;23216:103;23240:8;:15;23236:1;:19;23216:103;;;23302:5;23277:9;:22;23287:8;23296:1;23287:11;;;;;;;;:::i;:::-;;;;;;;;23277:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23257:3;;;;;;;23216:103;;;;23124:202:::0;;:::o;22526:152::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22665:5:::1;22644:18;;:26;;;;;;;;;;;;;;;;;;22526:152:::0;:::o;3607:108::-;3668:7;3695:12;;3688:19;;3607:108;:::o;22416:102::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22501:9:::1;22489;;:21;;;;;;;;;;;;;;;;;;22416:102:::0;:::o;14760:448::-;14892:4;14909:36;14919:6;14927:9;14938:6;14909:9;:36::i;:::-;14958:24;14985:11;:19;14997:6;14985:19;;;;;;;;;;;;;;;:33;15005:12;:10;:12::i;:::-;14985:33;;;;;;;;;;;;;;;;14958:60;;15057:6;15037:16;:26;;15029:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15119:57;15128:6;15136:12;:10;:12::i;:::-;15169:6;15150:16;:25;;;;:::i;:::-;15119:8;:57::i;:::-;15196:4;15189:11;;;14760:448;;;;;:::o;3449:93::-;3507:5;3532:2;3525:9;;3449:93;:::o;22937:179::-;23029:9;;;;;;;;;;;23017:21;;:10;:21;;;23009:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23103:5;23081:9;:19;23091:8;23081:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22937:179;;:::o;15216:248::-;15332:4;15354:80;15363:12;:10;:12::i;:::-;15377:7;15423:10;15386:11;:25;15398:12;:10;:12::i;:::-;15386:25;;;;;;;;;;;;;;;:34;15412:7;15386:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15354:8;:80::i;:::-;15452:4;15445:11;;15216:248;;;;:::o;22686:243::-;22809:9;;;;;;;;;;;22797:21;;:10;:21;;;22789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22911:10;:8;:10::i;:::-;22907:2;:14;;;;:::i;:::-;22894:10;:27;;;;:::i;:::-;22868:23;:53;;;;22686:243;:::o;21256:131::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21368:10:::1;:8;:10::i;:::-;21364:2;:14;;;;:::i;:::-;21352:9;:26;;;;:::i;:::-;21335:14;:43;;;;21256:131:::0;:::o;13028:34::-;;;;;;;;;;;;;:::o;21053:195::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21205:35:::1;;;;;;;;21211:10;21205:35;;;;21223:10;21205:35;;;;21235:4;21205:35;;::::0;21193:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;21053:195:::0;;;:::o;13137:50::-;;;;:::o;3778:127::-;3852:7;3879:9;:18;3889:7;3879:18;;;;;;;;;;;;;;;;3872:25;;3778:127;;;:::o;11459:94::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11524:21:::1;11542:1;11524:9;:21::i;:::-;11459:94::o:0;13665:37::-;;;;;;;;;;;;;;;;;;;:::o;13467:79::-;13504:42;13467:79;:::o;22061:224::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22125:14:::1;;;;;;;;;;;22124:15;22116:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22198:4;22181:14;;:21;;;;;;;;;;;;;;;;;;22234:4;22213:18;;:25;;;;;;;;;;;;;;;;;;22265:12;22249:13;:28;;;;22061:224::o:0;21507:127::-;21589:8;21582:25;;;21608:9;;;;;;;;;;;21619:6;21582:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21507:127;;:::o;11236:87::-;11282:7;11309:6;;;;;;;;;;;11302:13;;11236:87;:::o;2706:104::-;2762:13;2795:7;2788:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2706:104;:::o;20852:193::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21002:35:::1;;;;;;;;21008:10;21002:35;;;;21020:10;21002:35;;;;21032:4;21002:35;;::::0;20994:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;20852:193:::0;;;:::o;21395:104::-;21461:9;;;;;;;;;;;21453:27;;:38;21481:9;21453:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21395:104;:::o;21644:410::-;21765:4;21787:24;21814:11;:25;21826:12;:10;:12::i;:::-;21814:25;;;;;;;;;;;;;;;:34;21840:7;21814:34;;;;;;;;;;;;;;;;21787:61;;21887:15;21867:16;:35;;21859:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21955:67;21964:12;:10;:12::i;:::-;21978:7;22006:15;21987:16;:34;;;;:::i;:::-;21955:8;:67::i;:::-;22042:4;22035:11;;;21644:410;;;;:::o;12910:19::-;;;;;;;;;;;;;:::o;15474:165::-;15552:4;15569:40;15579:10;15591:9;15602:6;15569:9;:40::i;:::-;15627:4;15620:11;;15474:165;;;;:::o;22293:115::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22391:9:::1;22373:15;;:27;;;;;;;;;;;;;;;;;;22293:115:::0;:::o;13759:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4397:201::-;4531:7;4563:11;:18;4575:5;4563:18;;;;;;;;;;;;;;;:27;4582:7;4563:27;;;;;;;;;;;;;;;;4556:34;;4397:201;;;;:::o;11561:192::-;11382:12;:10;:12::i;:::-;11371:23;;:7;:5;:7::i;:::-;:23;;;11363:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11670:1:::1;11650:22;;:8;:22;;::::0;11642:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11726:19;11736:8;11726:9;:19::i;:::-;11561:192:::0;:::o;13709:41::-;;;;;;;;;;;;;;;;;;;:::o;12882:21::-;;;;;;;;;;;;;:::o;209:98::-;262:7;289:10;282:17;;209:98;:::o;9535:380::-;9688:1;9671:19;;:5;:19;;;9663:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9769:1;9750:21;;:7;:21;;;9742:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9853:6;9823:11;:18;9835:5;9823:18;;;;;;;;;;;;;;;:27;9842:7;9823:27;;;;;;;;;;;;;;;:36;;;;9891:7;9875:32;;9884:5;9875:32;;;9900:6;9875:32;;;;;;:::i;:::-;;;;;;;;9535:380;;;:::o;15647:2555::-;15797:1;15788:6;:10;15780:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15862:9;:17;15872:6;15862:17;;;;;;;;;;;;;;;;;;;;;;;;;15861:18;:43;;;;;15884:9;:20;15894:9;15884:20;;;;;;;;;;;;;;;;;;;;;;;;;15883:21;15861:43;15857:122;;;15929:14;;;;;;;;;;;15921:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15857:122;16005:4;;;;;;;;;;;15995:14;;:6;:14;;;:39;;;;;16014:9;:20;16024:9;16014:20;;;;;;;;;;;;;;;;;;;;;;;;;16013:21;15995:39;:59;;;;;16039:15;;;;;;;;;;;16038:16;15995:59;15991:215;;;16112:14;;16102:6;16079:20;16089:9;16079;:20::i;:::-;:29;;;;:::i;:::-;:47;;16071:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;15991:215;16232:4;;;;;;;;;;;16222:14;;:6;:14;;;;:39;;;;;16241:9;:20;16251:9;16241:20;;;;;;;;;;;;;;;;;;;;;;;;;16240:21;16222:39;:61;;;;;16266:9;:17;16276:6;16266:17;;;;;;;;;;;;;;;;;;;;;;;;;16265:18;16222:61;:81;;;;;16288:15;;;;;;;;;;;16287:16;16222:81;16218:315;;;16350:4;;;;;;;;;;;16337:17;;:9;:17;;;16333:189;;16416:14;;16406:6;16383:20;16393:9;16383;:20::i;:::-;:29;;;;:::i;:::-;:47;;16375:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;16333:189;16218:315;16545:15;16571:14;16596:11;16618:25;;:::i;:::-;16656:17;16677:9;:17;16687:6;16677:17;;;;;;;;;;;;;;;;;;;;;;;;;16676:18;:56;;;;;16712:9;:20;16722:9;16712:20;;;;;;;;;;;;;;;;;;;;;;;;;16711:21;16676:56;:112;;;;;16780:8;;16764:13;;:24;;;;:::i;:::-;16749:12;:39;16676:112;16656:132;;16876:15;;;;;;;;;;;:36;;;;16895:9;:17;16905:6;16895:17;;;;;;;;;;;;;;;;;;;;;;;;;16876:36;:60;;;;16916:9;:20;16926:9;16916:20;;;;;;;;;;;;;;;;;;;;;;;;;16876:60;16872:746;;;16957:1;16951:7;;16872:746;;;17022:4;;;;;;;;;;;17009:17;;:9;:17;;;:34;;;;;17031:12;17030:13;17009:34;17005:613;;;17176:9;:13;;;17126:9;:19;;;17087:9;:19;;;:58;;;;:::i;:::-;:102;;;;:::i;:::-;17060:129;;17214:7;17205:16;;17251:9;17236:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17005:613;;;17283:12;17282:13;:31;;;;;17309:4;;;;;;;;;;;17299:14;;:6;:14;;;17282:31;17278:340;;;17427:5;:9;;;17392:5;:15;;;17357:5;:15;;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;17330:106;;17461:7;17452:16;;17498:5;17483:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17278:340;;;17525:12;17521:97;;;17564:9;;17554:19;;17597:9;;17588:18;;17521:97;17278:340;17005:613;16872:746;17656:3;17646:6;17637;:15;;;;:::i;:::-;17636:23;;;;:::i;:::-;17630:29;;17773:18;;;;;;;;;;;:36;;;;;17805:4;;;;;;;;;;;17795:14;;:6;:14;;;;17773:36;17769:76;;;17811:34;17823:7;17832:12;17811:11;:34::i;:::-;17769:76;17887:48;17903:6;17911:9;17931:3;17922:6;:12;;;;:::i;:::-;17887:15;:48::i;:::-;17956:1;17950:3;:7;17946:249;;;18032:1;18022:7;:11;18018:164;;;18054:17;18095:3;18084:7;18075:6;:16;;;;:::i;:::-;18074:24;;;;:::i;:::-;18054:44;;18117:49;18133:6;18149:4;18156:9;18117:15;:49::i;:::-;18035:147;18018:164;17946:249;15769:2433;;;;;15647:2555;;;:::o;11761:173::-;11817:16;11836:6;;;;;;;;;;;11817:25;;11862:8;11853:6;;:17;;;;;;;;;;;;;;;;;;11917:8;11886:40;;11907:8;11886:40;;;;;;;;;;;;11806:128;11761:173;:::o;18210:1593::-;13848:15;;;;;;;;;;;13843:125;;13898:4;13880:15;;:22;;;;;;;;;;;;;;;;;;18313:1:::1;18302:7;:12:::0;18299:49;18330:7:::1;18299:49;18363:23;18389:24;18407:4;18389:9;:24::i;:::-;18363:50;;18447:23;;18428:15;:42;18424:1372;;18517:1;18491:23;;:27;18487:109;;;18557:23;;18539:41;;18487:109;18667:19;18699:1;18689:7;:11;;;;:::i;:::-;18667:33;;18715:32;18809:11;18769:9;:19;;;18751:15;:37;;;;:::i;:::-;18750:70;;;;:::i;:::-;18715:105;;18835:14;18870:24;18852:15;:42;;;;:::i;:::-;18835:59;;18911:22;18936:21;18911:46;;18974:24;18991:6;18974:16;:24::i;:::-;19015:20;19062:14;19038:21;:38;;;;:::i;:::-;19015:61;;19091:19;19143:9;:19;;;19129:11;:33;;;;:::i;:::-;19113:12;:50;;;;:::i;:::-;19091:72;;19178:29;19224:9;:19;;;19210:11;:33;;;;:::i;:::-;19178:65;;19288:1;19264:21;:25;19260:161;;;19344:61;19357:24;19383:21;19344:12;:61::i;:::-;19260:161;19437:20;19478:9;:19;;;19474:1;19460:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19437:60;;19531:1;19516:12;:16;19512:105;;;19553:48;19588:12;19561:15;;;;;;;;;;;19553:34;;;;:48;;;;:::i;:::-;19512:105;19633:14;19668:9;:13;;;19664:1;19650:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;19633:48;;19709:1;19700:6;:10;19696:87;;;19731:36;19760:6;19739:9;;;;;;;;;;;19731:28;;;;:36;;;;:::i;:::-;19696:87;18472:1324;;;;;;;;;18424:1372;18290:1513;13917:1;13951:5:::0;13933:15;;:23;;;;;;;;;;;;;;;;;;13843:125;18210:1593;;:::o;7910:638::-;8068:1;8050:20;;:6;:20;;;8042:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8152:1;8131:23;;:9;:23;;;8123:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8207:47;8228:6;8236:9;8247:6;8207:20;:47::i;:::-;8267:21;8291:9;:17;8301:6;8291:17;;;;;;;;;;;;;;;;8267:41;;8344:6;8327:13;:23;;8319:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8440:6;8424:13;:22;;;;:::i;:::-;8404:9;:17;8414:6;8404:17;;;;;;;;;;;;;;;:42;;;;8481:6;8457:9;:20;8467:9;8457:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8522:9;8505:35;;8514:6;8505:35;;;8533:6;8505:35;;;;;;:::i;:::-;;;;;;;;8031:517;7910:638;;;:::o;19811:526::-;19929:21;19967:1;19953:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19929:40;;19998:4;19980;19985:1;19980:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20024:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20014:4;20019:1;20014:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20050:53;20067:4;20082:6;;;;;;;;;;;20091:11;20050:8;:53::i;:::-;20142:6;;;;;;;;;;;:57;;;20214:11;20240:1;20256:4;20283;20303:15;20142:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19866:471;19811:526;:::o;20345:499::-;20493:53;20510:4;20525:6;;;;;;;;;;;20534:11;20493:8;:53::i;:::-;20589:6;;;;;;;;;;;:22;;;20620:9;20654:4;20674:11;20700:1;20743;20786:9;;;;;;;;;;;20810:15;20589:247;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20345:499;;:::o;10679:319::-;10794:6;10769:21;:31;;10761:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10848:12;10866:9;:14;;10889:6;10866:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10847:54;;;10920:7;10912:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10750:248;10679:319;;:::o;10524:125::-;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:117::-;3555:1;3552;3545:12;3569:180;3617:77;3614:1;3607:88;3714:4;3711:1;3704:15;3738:4;3735:1;3728:15;3755:281;3838:27;3860:4;3838:27;:::i;:::-;3830:6;3826:40;3968:6;3956:10;3953:22;3932:18;3920:10;3917:34;3914:62;3911:88;;;3979:18;;:::i;:::-;3911:88;4019:10;4015:2;4008:22;3798:238;3755:281;;:::o;4042:129::-;4076:6;4103:20;;:::i;:::-;4093:30;;4132:33;4160:4;4152:6;4132:33;:::i;:::-;4042:129;;;:::o;4177:311::-;4254:4;4344:18;4336:6;4333:30;4330:56;;;4366:18;;:::i;:::-;4330:56;4416:4;4408:6;4404:17;4396:25;;4476:4;4470;4466:15;4458:23;;4177:311;;;:::o;4494:117::-;4603:1;4600;4593:12;4634:710;4730:5;4755:81;4771:64;4828:6;4771:64;:::i;:::-;4755:81;:::i;:::-;4746:90;;4856:5;4885:6;4878:5;4871:21;4919:4;4912:5;4908:16;4901:23;;4972:4;4964:6;4960:17;4952:6;4948:30;5001:3;4993:6;4990:15;4987:122;;;5020:79;;:::i;:::-;4987:122;5135:6;5118:220;5152:6;5147:3;5144:15;5118:220;;;5227:3;5256:37;5289:3;5277:10;5256:37;:::i;:::-;5251:3;5244:50;5323:4;5318:3;5314:14;5307:21;;5194:144;5178:4;5173:3;5169:14;5162:21;;5118:220;;;5122:21;4736:608;;4634:710;;;;;:::o;5367:370::-;5438:5;5487:3;5480:4;5472:6;5468:17;5464:27;5454:122;;5495:79;;:::i;:::-;5454:122;5612:6;5599:20;5637:94;5727:3;5719:6;5712:4;5704:6;5700:17;5637:94;:::i;:::-;5628:103;;5444:293;5367:370;;;;:::o;5743:116::-;5813:21;5828:5;5813:21;:::i;:::-;5806:5;5803:32;5793:60;;5849:1;5846;5839:12;5793:60;5743:116;:::o;5865:133::-;5908:5;5946:6;5933:20;5924:29;;5962:30;5986:5;5962:30;:::i;:::-;5865:133;;;;:::o;6004:678::-;6094:6;6102;6151:2;6139:9;6130:7;6126:23;6122:32;6119:119;;;6157:79;;:::i;:::-;6119:119;6305:1;6294:9;6290:17;6277:31;6335:18;6327:6;6324:30;6321:117;;;6357:79;;:::i;:::-;6321:117;6462:78;6532:7;6523:6;6512:9;6508:22;6462:78;:::i;:::-;6452:88;;6248:302;6589:2;6615:50;6657:7;6648:6;6637:9;6633:22;6615:50;:::i;:::-;6605:60;;6560:115;6004:678;;;;;:::o;6688:323::-;6744:6;6793:2;6781:9;6772:7;6768:23;6764:32;6761:119;;;6799:79;;:::i;:::-;6761:119;6919:1;6944:50;6986:7;6977:6;6966:9;6962:22;6944:50;:::i;:::-;6934:60;;6890:114;6688:323;;;;:::o;7017:118::-;7104:24;7122:5;7104:24;:::i;:::-;7099:3;7092:37;7017:118;;:::o;7141:222::-;7234:4;7272:2;7261:9;7257:18;7249:26;;7285:71;7353:1;7342:9;7338:17;7329:6;7285:71;:::i;:::-;7141:222;;;;:::o;7369:329::-;7428:6;7477:2;7465:9;7456:7;7452:23;7448:32;7445:119;;;7483:79;;:::i;:::-;7445:119;7603:1;7628:53;7673:7;7664:6;7653:9;7649:22;7628:53;:::i;:::-;7618:63;;7574:117;7369:329;;;;:::o;7704:619::-;7781:6;7789;7797;7846:2;7834:9;7825:7;7821:23;7817:32;7814:119;;;7852:79;;:::i;:::-;7814:119;7972:1;7997:53;8042:7;8033:6;8022:9;8018:22;7997:53;:::i;:::-;7987:63;;7943:117;8099:2;8125:53;8170:7;8161:6;8150:9;8146:22;8125:53;:::i;:::-;8115:63;;8070:118;8227:2;8253:53;8298:7;8289:6;8278:9;8274:22;8253:53;:::i;:::-;8243:63;;8198:118;7704:619;;;;;:::o;8329:86::-;8364:7;8404:4;8397:5;8393:16;8382:27;;8329:86;;;:::o;8421:112::-;8504:22;8520:5;8504:22;:::i;:::-;8499:3;8492:35;8421:112;;:::o;8539:214::-;8628:4;8666:2;8655:9;8651:18;8643:26;;8679:67;8743:1;8732:9;8728:17;8719:6;8679:67;:::i;:::-;8539:214;;;;:::o;8759:468::-;8824:6;8832;8881:2;8869:9;8860:7;8856:23;8852:32;8849:119;;;8887:79;;:::i;:::-;8849:119;9007:1;9032:53;9077:7;9068:6;9057:9;9053:22;9032:53;:::i;:::-;9022:63;;8978:117;9134:2;9160:50;9202:7;9193:6;9182:9;9178:22;9160:50;:::i;:::-;9150:60;;9105:115;8759:468;;;;;:::o;9233:329::-;9292:6;9341:2;9329:9;9320:7;9316:23;9312:32;9309:119;;;9347:79;;:::i;:::-;9309:119;9467:1;9492:53;9537:7;9528:6;9517:9;9513:22;9492:53;:::i;:::-;9482:63;;9438:117;9233:329;;;;:::o;9568:619::-;9645:6;9653;9661;9710:2;9698:9;9689:7;9685:23;9681:32;9678:119;;;9716:79;;:::i;:::-;9678:119;9836:1;9861:53;9906:7;9897:6;9886:9;9882:22;9861:53;:::i;:::-;9851:63;;9807:117;9963:2;9989:53;10034:7;10025:6;10014:9;10010:22;9989:53;:::i;:::-;9979:63;;9934:118;10091:2;10117:53;10162:7;10153:6;10142:9;10138:22;10117:53;:::i;:::-;10107:63;;10062:118;9568:619;;;;;:::o;10193:442::-;10342:4;10380:2;10369:9;10365:18;10357:26;;10393:71;10461:1;10450:9;10446:17;10437:6;10393:71;:::i;:::-;10474:72;10542:2;10531:9;10527:18;10518:6;10474:72;:::i;:::-;10556;10624:2;10613:9;10609:18;10600:6;10556:72;:::i;:::-;10193:442;;;;;;:::o;10641:118::-;10728:24;10746:5;10728:24;:::i;:::-;10723:3;10716:37;10641:118;;:::o;10765:222::-;10858:4;10896:2;10885:9;10881:18;10873:26;;10909:71;10977:1;10966:9;10962:17;10953:6;10909:71;:::i;:::-;10765:222;;;;:::o;10993:474::-;11061:6;11069;11118:2;11106:9;11097:7;11093:23;11089:32;11086:119;;;11124:79;;:::i;:::-;11086:119;11244:1;11269:53;11314:7;11305:6;11294:9;11290:22;11269:53;:::i;:::-;11259:63;;11215:117;11371:2;11397:53;11442:7;11433:6;11422:9;11418:22;11397:53;:::i;:::-;11387:63;;11342:118;10993:474;;;;;:::o;11473:60::-;11501:3;11522:5;11515:12;;11473:60;;;:::o;11539:142::-;11589:9;11622:53;11640:34;11649:24;11667:5;11649:24;:::i;:::-;11640:34;:::i;:::-;11622:53;:::i;:::-;11609:66;;11539:142;;;:::o;11687:126::-;11737:9;11770:37;11801:5;11770:37;:::i;:::-;11757:50;;11687:126;;;:::o;11819:141::-;11884:9;11917:37;11948:5;11917:37;:::i;:::-;11904:50;;11819:141;;;:::o;11966:161::-;12068:52;12114:5;12068:52;:::i;:::-;12063:3;12056:65;11966:161;;:::o;12133:252::-;12241:4;12279:2;12268:9;12264:18;12256:26;;12292:86;12375:1;12364:9;12360:17;12351:6;12292:86;:::i;:::-;12133:252;;;;:::o;12391:180::-;12439:77;12436:1;12429:88;12536:4;12533:1;12526:15;12560:4;12557:1;12550:15;12577:320;12621:6;12658:1;12652:4;12648:12;12638:22;;12705:1;12699:4;12695:12;12726:18;12716:81;;12782:4;12774:6;12770:17;12760:27;;12716:81;12844:2;12836:6;12833:14;12813:18;12810:38;12807:84;;12863:18;;:::i;:::-;12807:84;12628:269;12577:320;;;:::o;12903:182::-;13043:34;13039:1;13031:6;13027:14;13020:58;12903:182;:::o;13091:366::-;13233:3;13254:67;13318:2;13313:3;13254:67;:::i;:::-;13247:74;;13330:93;13419:3;13330:93;:::i;:::-;13448:2;13443:3;13439:12;13432:19;;13091:366;;;:::o;13463:419::-;13629:4;13667:2;13656:9;13652:18;13644:26;;13716:9;13710:4;13706:20;13702:1;13691:9;13687:17;13680:47;13744:131;13870:4;13744:131;:::i;:::-;13736:139;;13463:419;;;:::o;13888:180::-;13936:77;13933:1;13926:88;14033:4;14030:1;14023:15;14057:4;14054:1;14047:15;14074:227;14214:34;14210:1;14202:6;14198:14;14191:58;14283:10;14278:2;14270:6;14266:15;14259:35;14074:227;:::o;14307:366::-;14449:3;14470:67;14534:2;14529:3;14470:67;:::i;:::-;14463:74;;14546:93;14635:3;14546:93;:::i;:::-;14664:2;14659:3;14655:12;14648:19;;14307:366;;;:::o;14679:419::-;14845:4;14883:2;14872:9;14868:18;14860:26;;14932:9;14926:4;14922:20;14918:1;14907:9;14903:17;14896:47;14960:131;15086:4;14960:131;:::i;:::-;14952:139;;14679:419;;;:::o;15104:180::-;15152:77;15149:1;15142:88;15249:4;15246:1;15239:15;15273:4;15270:1;15263:15;15290:194;15330:4;15350:20;15368:1;15350:20;:::i;:::-;15345:25;;15384:20;15402:1;15384:20;:::i;:::-;15379:25;;15428:1;15425;15421:9;15413:17;;15452:1;15446:4;15443:11;15440:37;;;15457:18;;:::i;:::-;15440:37;15290:194;;;;:::o;15490:178::-;15630:30;15626:1;15618:6;15614:14;15607:54;15490:178;:::o;15674:366::-;15816:3;15837:67;15901:2;15896:3;15837:67;:::i;:::-;15830:74;;15913:93;16002:3;15913:93;:::i;:::-;16031:2;16026:3;16022:12;16015:19;;15674:366;;;:::o;16046:419::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:191::-;16511:3;16530:20;16548:1;16530:20;:::i;:::-;16525:25;;16564:20;16582:1;16564:20;:::i;:::-;16559:25;;16607:1;16604;16600:9;16593:16;;16628:3;16625:1;16622:10;16619:36;;;16635:18;;:::i;:::-;16619:36;16471:191;;;;:::o;16668:222::-;16808:34;16804:1;16796:6;16792:14;16785:58;16877:5;16872:2;16864:6;16860:15;16853:30;16668:222;:::o;16896:366::-;17038:3;17059:67;17123:2;17118:3;17059:67;:::i;:::-;17052:74;;17135:93;17224:3;17135:93;:::i;:::-;17253:2;17248:3;17244:12;17237:19;;16896:366;;;:::o;17268:419::-;17434:4;17472:2;17461:9;17457:18;17449:26;;17521:9;17515:4;17511:20;17507:1;17496:9;17492:17;17485:47;17549:131;17675:4;17549:131;:::i;:::-;17541:139;;17268:419;;;:::o;17693:102::-;17735:8;17782:5;17779:1;17775:13;17754:34;;17693:102;;;:::o;17801:848::-;17862:5;17869:4;17893:6;17884:15;;17917:5;17908:14;;17931:712;17952:1;17942:8;17939:15;17931:712;;;18047:4;18042:3;18038:14;18032:4;18029:24;18026:50;;;18056:18;;:::i;:::-;18026:50;18106:1;18096:8;18092:16;18089:451;;;18521:4;18514:5;18510:16;18501:25;;18089:451;18571:4;18565;18561:15;18553:23;;18601:32;18624:8;18601:32;:::i;:::-;18589:44;;17931:712;;;17801:848;;;;;;;:::o;18655:1073::-;18709:5;18900:8;18890:40;;18921:1;18912:10;;18923:5;;18890:40;18949:4;18939:36;;18966:1;18957:10;;18968:5;;18939:36;19035:4;19083:1;19078:27;;;;19119:1;19114:191;;;;19028:277;;19078:27;19096:1;19087:10;;19098:5;;;19114:191;19159:3;19149:8;19146:17;19143:43;;;19166:18;;:::i;:::-;19143:43;19215:8;19212:1;19208:16;19199:25;;19250:3;19243:5;19240:14;19237:40;;;19257:18;;:::i;:::-;19237:40;19290:5;;;19028:277;;19414:2;19404:8;19401:16;19395:3;19389:4;19386:13;19382:36;19364:2;19354:8;19351:16;19346:2;19340:4;19337:12;19333:35;19317:111;19314:246;;;19470:8;19464:4;19460:19;19451:28;;19505:3;19498:5;19495:14;19492:40;;;19512:18;;:::i;:::-;19492:40;19545:5;;19314:246;19585:42;19623:3;19613:8;19607:4;19604:1;19585:42;:::i;:::-;19570:57;;;;19659:4;19654:3;19650:14;19643:5;19640:25;19637:51;;;19668:18;;:::i;:::-;19637:51;19717:4;19710:5;19706:16;19697:25;;18655:1073;;;;;;:::o;19734:281::-;19792:5;19816:23;19834:4;19816:23;:::i;:::-;19808:31;;19860:25;19876:8;19860:25;:::i;:::-;19848:37;;19904:104;19941:66;19931:8;19925:4;19904:104;:::i;:::-;19895:113;;19734:281;;;;:::o;20021:410::-;20061:7;20084:20;20102:1;20084:20;:::i;:::-;20079:25;;20118:20;20136:1;20118:20;:::i;:::-;20113:25;;20173:1;20170;20166:9;20195:30;20213:11;20195:30;:::i;:::-;20184:41;;20374:1;20365:7;20361:15;20358:1;20355:22;20335:1;20328:9;20308:83;20285:139;;20404:18;;:::i;:::-;20285:139;20069:362;20021:410;;;;:::o;20437:176::-;20577:28;20573:1;20565:6;20561:14;20554:52;20437:176;:::o;20619:366::-;20761:3;20782:67;20846:2;20841:3;20782:67;:::i;:::-;20775:74;;20858:93;20947:3;20858:93;:::i;:::-;20976:2;20971:3;20967:12;20960:19;;20619:366;;;:::o;20991:419::-;21157:4;21195:2;21184:9;21180:18;21172:26;;21244:9;21238:4;21234:20;21230:1;21219:9;21215:17;21208:47;21272:131;21398:4;21272:131;:::i;:::-;21264:139;;20991:419;;;:::o;21416:332::-;21537:4;21575:2;21564:9;21560:18;21552:26;;21588:71;21656:1;21645:9;21641:17;21632:6;21588:71;:::i;:::-;21669:72;21737:2;21726:9;21722:18;21713:6;21669:72;:::i;:::-;21416:332;;;;;:::o;21754:137::-;21808:5;21839:6;21833:13;21824:22;;21855:30;21879:5;21855:30;:::i;:::-;21754:137;;;;:::o;21897:345::-;21964:6;22013:2;22001:9;21992:7;21988:23;21984:32;21981:119;;;22019:79;;:::i;:::-;21981:119;22139:1;22164:61;22217:7;22208:6;22197:9;22193:22;22164:61;:::i;:::-;22154:71;;22110:125;21897:345;;;;:::o;22248:224::-;22388:34;22384:1;22376:6;22372:14;22365:58;22457:7;22452:2;22444:6;22440:15;22433:32;22248:224;:::o;22478:366::-;22620:3;22641:67;22705:2;22700:3;22641:67;:::i;:::-;22634:74;;22717:93;22806:3;22717:93;:::i;:::-;22835:2;22830:3;22826:12;22819:19;;22478:366;;;:::o;22850:419::-;23016:4;23054:2;23043:9;23039:18;23031:26;;23103:9;23097:4;23093:20;23089:1;23078:9;23074:17;23067:47;23131:131;23257:4;23131:131;:::i;:::-;23123:139;;22850:419;;;:::o;23275:225::-;23415:34;23411:1;23403:6;23399:14;23392:58;23484:8;23479:2;23471:6;23467:15;23460:33;23275:225;:::o;23506:366::-;23648:3;23669:67;23733:2;23728:3;23669:67;:::i;:::-;23662:74;;23745:93;23834:3;23745:93;:::i;:::-;23863:2;23858:3;23854:12;23847:19;;23506:366;;;:::o;23878:419::-;24044:4;24082:2;24071:9;24067:18;24059:26;;24131:9;24125:4;24121:20;24117:1;24106:9;24102:17;24095:47;24159:131;24285:4;24159:131;:::i;:::-;24151:139;;23878:419;;;:::o;24303:223::-;24443:34;24439:1;24431:6;24427:14;24420:58;24512:6;24507:2;24499:6;24495:15;24488:31;24303:223;:::o;24532:366::-;24674:3;24695:67;24759:2;24754:3;24695:67;:::i;:::-;24688:74;;24771:93;24860:3;24771:93;:::i;:::-;24889:2;24884:3;24880:12;24873:19;;24532:366;;;:::o;24904:419::-;25070:4;25108:2;25097:9;25093:18;25085:26;;25157:9;25151:4;25147:20;25143:1;25132:9;25128:17;25121:47;25185:131;25311:4;25185:131;:::i;:::-;25177:139;;24904:419;;;:::o;25329:221::-;25469:34;25465:1;25457:6;25453:14;25446:58;25538:4;25533:2;25525:6;25521:15;25514:29;25329:221;:::o;25556:366::-;25698:3;25719:67;25783:2;25778:3;25719:67;:::i;:::-;25712:74;;25795:93;25884:3;25795:93;:::i;:::-;25913:2;25908:3;25904:12;25897:19;;25556:366;;;:::o;25928:419::-;26094:4;26132:2;26121:9;26117:18;26109:26;;26181:9;26175:4;26171:20;26167:1;26156:9;26152:17;26145:47;26209:131;26335:4;26209:131;:::i;:::-;26201:139;;25928:419;;;:::o;26353:228::-;26493:34;26489:1;26481:6;26477:14;26470:58;26562:11;26557:2;26549:6;26545:15;26538:36;26353:228;:::o;26587:366::-;26729:3;26750:67;26814:2;26809:3;26750:67;:::i;:::-;26743:74;;26826:93;26915:3;26826:93;:::i;:::-;26944:2;26939:3;26935:12;26928:19;;26587:366;;;:::o;26959:419::-;27125:4;27163:2;27152:9;27148:18;27140:26;;27212:9;27206:4;27202:20;27198:1;27187:9;27183:17;27176:47;27240:131;27366:4;27240:131;:::i;:::-;27232:139;;26959:419;;;:::o;27384:169::-;27524:21;27520:1;27512:6;27508:14;27501:45;27384:169;:::o;27559:366::-;27701:3;27722:67;27786:2;27781:3;27722:67;:::i;:::-;27715:74;;27798:93;27887:3;27798:93;:::i;:::-;27916:2;27911:3;27907:12;27900:19;;27559:366;;;:::o;27931:419::-;28097:4;28135:2;28124:9;28120:18;28112:26;;28184:9;28178:4;28174:20;28170:1;28159:9;28155:17;28148:47;28212:131;28338:4;28212:131;:::i;:::-;28204:139;;27931:419;;;:::o;28356:182::-;28496:34;28492:1;28484:6;28480:14;28473:58;28356:182;:::o;28544:366::-;28686:3;28707:67;28771:2;28766:3;28707:67;:::i;:::-;28700:74;;28783:93;28872:3;28783:93;:::i;:::-;28901:2;28896:3;28892:12;28885:19;;28544:366;;;:::o;28916:419::-;29082:4;29120:2;29109:9;29105:18;29097:26;;29169:9;29163:4;29159:20;29155:1;29144:9;29140:17;29133:47;29197:131;29323:4;29197:131;:::i;:::-;29189:139;;28916:419;;;:::o;29341:180::-;29389:77;29386:1;29379:88;29486:4;29483:1;29476:15;29510:4;29507:1;29500:15;29527:185;29567:1;29584:20;29602:1;29584:20;:::i;:::-;29579:25;;29618:20;29636:1;29618:20;:::i;:::-;29613:25;;29657:1;29647:35;;29662:18;;:::i;:::-;29647:35;29704:1;29701;29697:9;29692:14;;29527:185;;;;:::o;29718:224::-;29858:34;29854:1;29846:6;29842:14;29835:58;29927:7;29922:2;29914:6;29910:15;29903:32;29718:224;:::o;29948:366::-;30090:3;30111:67;30175:2;30170:3;30111:67;:::i;:::-;30104:74;;30187:93;30276:3;30187:93;:::i;:::-;30305:2;30300:3;30296:12;30289:19;;29948:366;;;:::o;30320:419::-;30486:4;30524:2;30513:9;30509:18;30501:26;;30573:9;30567:4;30563:20;30559:1;30548:9;30544:17;30537:47;30601:131;30727:4;30601:131;:::i;:::-;30593:139;;30320:419;;;:::o;30745:222::-;30885:34;30881:1;30873:6;30869:14;30862:58;30954:5;30949:2;30941:6;30937:15;30930:30;30745:222;:::o;30973:366::-;31115:3;31136:67;31200:2;31195:3;31136:67;:::i;:::-;31129:74;;31212:93;31301:3;31212:93;:::i;:::-;31330:2;31325:3;31321:12;31314:19;;30973:366;;;:::o;31345:419::-;31511:4;31549:2;31538:9;31534:18;31526:26;;31598:9;31592:4;31588:20;31584:1;31573:9;31569:17;31562:47;31626:131;31752:4;31626:131;:::i;:::-;31618:139;;31345:419;;;:::o;31770:225::-;31910:34;31906:1;31898:6;31894:14;31887:58;31979:8;31974:2;31966:6;31962:15;31955:33;31770:225;:::o;32001:366::-;32143:3;32164:67;32228:2;32223:3;32164:67;:::i;:::-;32157:74;;32240:93;32329:3;32240:93;:::i;:::-;32358:2;32353:3;32349:12;32342:19;;32001:366;;;:::o;32373:419::-;32539:4;32577:2;32566:9;32562:18;32554:26;;32626:9;32620:4;32616:20;32612:1;32601:9;32597:17;32590:47;32654:131;32780:4;32654:131;:::i;:::-;32646:139;;32373:419;;;:::o;32798:143::-;32855:5;32886:6;32880:13;32871:22;;32902:33;32929:5;32902:33;:::i;:::-;32798:143;;;;:::o;32947:351::-;33017:6;33066:2;33054:9;33045:7;33041:23;33037:32;33034:119;;;33072:79;;:::i;:::-;33034:119;33192:1;33217:64;33273:7;33264:6;33253:9;33249:22;33217:64;:::i;:::-;33207:74;;33163:128;32947:351;;;;:::o;33304:85::-;33349:7;33378:5;33367:16;;33304:85;;;:::o;33395:158::-;33453:9;33486:61;33504:42;33513:32;33539:5;33513:32;:::i;:::-;33504:42;:::i;:::-;33486:61;:::i;:::-;33473:74;;33395:158;;;:::o;33559:147::-;33654:45;33693:5;33654:45;:::i;:::-;33649:3;33642:58;33559:147;;:::o;33712:114::-;33779:6;33813:5;33807:12;33797:22;;33712:114;;;:::o;33832:184::-;33931:11;33965:6;33960:3;33953:19;34005:4;34000:3;33996:14;33981:29;;33832:184;;;;:::o;34022:132::-;34089:4;34112:3;34104:11;;34142:4;34137:3;34133:14;34125:22;;34022:132;;;:::o;34160:108::-;34237:24;34255:5;34237:24;:::i;:::-;34232:3;34225:37;34160:108;;:::o;34274:179::-;34343:10;34364:46;34406:3;34398:6;34364:46;:::i;:::-;34442:4;34437:3;34433:14;34419:28;;34274:179;;;;:::o;34459:113::-;34529:4;34561;34556:3;34552:14;34544:22;;34459:113;;;:::o;34608:732::-;34727:3;34756:54;34804:5;34756:54;:::i;:::-;34826:86;34905:6;34900:3;34826:86;:::i;:::-;34819:93;;34936:56;34986:5;34936:56;:::i;:::-;35015:7;35046:1;35031:284;35056:6;35053:1;35050:13;35031:284;;;35132:6;35126:13;35159:63;35218:3;35203:13;35159:63;:::i;:::-;35152:70;;35245:60;35298:6;35245:60;:::i;:::-;35235:70;;35091:224;35078:1;35075;35071:9;35066:14;;35031:284;;;35035:14;35331:3;35324:10;;34732:608;;;34608:732;;;;:::o;35346:831::-;35609:4;35647:3;35636:9;35632:19;35624:27;;35661:71;35729:1;35718:9;35714:17;35705:6;35661:71;:::i;:::-;35742:80;35818:2;35807:9;35803:18;35794:6;35742:80;:::i;:::-;35869:9;35863:4;35859:20;35854:2;35843:9;35839:18;35832:48;35897:108;36000:4;35991:6;35897:108;:::i;:::-;35889:116;;36015:72;36083:2;36072:9;36068:18;36059:6;36015:72;:::i;:::-;36097:73;36165:3;36154:9;36150:19;36141:6;36097:73;:::i;:::-;35346:831;;;;;;;;:::o;36183:807::-;36432:4;36470:3;36459:9;36455:19;36447:27;;36484:71;36552:1;36541:9;36537:17;36528:6;36484:71;:::i;:::-;36565:72;36633:2;36622:9;36618:18;36609:6;36565:72;:::i;:::-;36647:80;36723:2;36712:9;36708:18;36699:6;36647:80;:::i;:::-;36737;36813:2;36802:9;36798:18;36789:6;36737:80;:::i;:::-;36827:73;36895:3;36884:9;36880:19;36871:6;36827:73;:::i;:::-;36910;36978:3;36967:9;36963:19;36954:6;36910:73;:::i;:::-;36183:807;;;;;;;;;:::o;36996:143::-;37053:5;37084:6;37078:13;37069:22;;37100:33;37127:5;37100:33;:::i;:::-;36996:143;;;;:::o;37145:663::-;37233:6;37241;37249;37298:2;37286:9;37277:7;37273:23;37269:32;37266:119;;;37304:79;;:::i;:::-;37266:119;37424:1;37449:64;37505:7;37496:6;37485:9;37481:22;37449:64;:::i;:::-;37439:74;;37395:128;37562:2;37588:64;37644:7;37635:6;37624:9;37620:22;37588:64;:::i;:::-;37578:74;;37533:129;37701:2;37727:64;37783:7;37774:6;37763:9;37759:22;37727:64;:::i;:::-;37717:74;;37672:129;37145:663;;;;;:::o;37814:179::-;37954:31;37950:1;37942:6;37938:14;37931:55;37814:179;:::o;37999:366::-;38141:3;38162:67;38226:2;38221:3;38162:67;:::i;:::-;38155:74;;38238:93;38327:3;38238:93;:::i;:::-;38356:2;38351:3;38347:12;38340:19;;37999:366;;;:::o;38371:419::-;38537:4;38575:2;38564:9;38560:18;38552:26;;38624:9;38618:4;38614:20;38610:1;38599:9;38595:17;38588:47;38652:131;38778:4;38652:131;:::i;:::-;38644:139;;38371:419;;;:::o;38796:147::-;38897:11;38934:3;38919:18;;38796:147;;;;:::o;38949:114::-;;:::o;39069:398::-;39228:3;39249:83;39330:1;39325:3;39249:83;:::i;:::-;39242:90;;39341:93;39430:3;39341:93;:::i;:::-;39459:1;39454:3;39450:11;39443:18;;39069:398;;;:::o;39473:379::-;39657:3;39679:147;39822:3;39679:147;:::i;:::-;39672:154;;39843:3;39836:10;;39473:379;;;:::o;39858:245::-;39998:34;39994:1;39986:6;39982:14;39975:58;40067:28;40062:2;40054:6;40050:15;40043:53;39858:245;:::o;40109:366::-;40251:3;40272:67;40336:2;40331:3;40272:67;:::i;:::-;40265:74;;40348:93;40437:3;40348:93;:::i;:::-;40466:2;40461:3;40457:12;40450:19;;40109:366;;;:::o;40481:419::-;40647:4;40685:2;40674:9;40670:18;40662:26;;40734:9;40728:4;40724:20;40720:1;40709:9;40705:17;40698:47;40762:131;40888:4;40762:131;:::i;:::-;40754:139;;40481:419;;;:::o

Swarm Source

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