ETH Price: $2,688.15 (-3.33%)

Token

Twoge (TWOGE)
 

Overview

Max Total Supply

1,000,000,000,000 TWOGE

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: TWOGE 15
Balance
0.000000000429687064 TWOGE

Value
$0.00
0xf54ef45638718499df482d2c604e6f3c6a4a6573
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:
twoge

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: UNLICENSED

// Telegram: https://t.me/TwogeETH
pragma solidity ^0.8.8;

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 twoge is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

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

    uint256 public tokenLiquidityThreshold = 1e9 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 99;

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

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

    Taxes public taxes = Taxes(3, 0, 2);
    Taxes public sellTaxes = Taxes(3, 0, 2);

    mapping(address => bool) public exemptFee;

    //Anti Dump
    mapping(address => uint256) private _lastSell;

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

    constructor() ERC20("Twoge", "TWOGE") {
        _tokengeneration(msg.sender, 1e12 * 10**decimals());
        exemptFee[msg.sender] = true;

        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[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0x71B5759d73262FBb223956913ecF4ecC51057641] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = 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 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 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");
        }

        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) {
            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 {
        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
            owner(),
            block.timestamp
        );
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

        function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
        require((_marketing + _liquidity + _dev) <= 10, "Must keep fees at 10% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        require((_marketing + _liquidity + _dev) <= 10, "Must keep fees at 10% or less");
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

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

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 10, "Block should be less than 10");
        deadline = _deadline;
    }

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

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

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

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

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

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

    // 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":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","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":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce80000006008556001600a556063600b55738a45aa49d94240b9192d70499d54d598d444f03c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738a45aa49d94240b9192d70499d54d598d444f03c600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060038152602001600081526020016002815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806003815260200160008152602001600281525060116000820151816000015560208201518160010155604082015181600201555050348015620001a657600080fd5b506040518060400160405280600581526020017f54776f67650000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f54574f4745000000000000000000000000000000000000000000000000000000815250816003908162000224919062000c0e565b50806004908162000236919062000c0e565b505050620002596200024d6200077c60201b60201c565b6200078460201b60201c565b6200029a336200026e6200084a60201b60201c565b600a6200027c919062000e85565b64e8d4a510006200028e919062000ed6565b6200085360201b60201c565b6001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f919062000f8b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040d919062000f8b565b6040518363ffffffff1660e01b81526004016200042c92919062000fce565b6020604051808303816000875af11580156200044c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000472919062000f8b565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460007371b5759d73262fbb223956913ecf4ecc5105764173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600073d152f549545093347a162dce210e7293f145215073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620010d2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008bc9062001082565b60405180910390fd5b620008d9600083836200098f60201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009839190620010b5565b60405180910390a35050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a1657607f821691505b60208210810362000a2c5762000a2b620009ce565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a57565b62000aa2868362000a57565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000aef62000ae962000ae38462000aba565b62000ac4565b62000aba565b9050919050565b6000819050919050565b62000b0b8362000ace565b62000b2362000b1a8262000af6565b84845462000a64565b825550505050565b600090565b62000b3a62000b2b565b62000b4781848462000b00565b505050565b5b8181101562000b6f5762000b6360008262000b30565b60018101905062000b4d565b5050565b601f82111562000bbe5762000b888162000a32565b62000b938462000a47565b8101602085101562000ba3578190505b62000bbb62000bb28562000a47565b83018262000b4c565b50505b505050565b600082821c905092915050565b600062000be36000198460080262000bc3565b1980831691505092915050565b600062000bfe838362000bd0565b9150826002028217905092915050565b62000c198262000994565b67ffffffffffffffff81111562000c355762000c346200099f565b5b62000c418254620009fd565b62000c4e82828562000b73565b600060209050601f83116001811462000c86576000841562000c71578287015190505b62000c7d858262000bf0565b86555062000ced565b601f19841662000c968662000a32565b60005b8281101562000cc05784890151825560018201915060208501945060208101905062000c99565b8683101562000ce0578489015162000cdc601f89168262000bd0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d835780860481111562000d5b5762000d5a62000cf5565b5b600185161562000d6b5780820291505b808102905062000d7b8562000d24565b945062000d3b565b94509492505050565b60008262000d9e576001905062000e71565b8162000dae576000905062000e71565b816001811462000dc7576002811462000dd25762000e08565b600191505062000e71565b60ff84111562000de75762000de662000cf5565b5b8360020a91508482111562000e015762000e0062000cf5565b5b5062000e71565b5060208310610133831016604e8410600b841016171562000e425782820a90508381111562000e3c5762000e3b62000cf5565b5b62000e71565b62000e51848484600162000d31565b9250905081840481111562000e6b5762000e6a62000cf5565b5b81810290505b9392505050565b600060ff82169050919050565b600062000e928262000aba565b915062000e9f8362000e78565b925062000ece7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d8c565b905092915050565b600062000ee38262000aba565b915062000ef08362000aba565b925082820262000f008162000aba565b9150828204841483151762000f1a5762000f1962000cf5565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f538262000f26565b9050919050565b62000f658162000f46565b811462000f7157600080fd5b50565b60008151905062000f858162000f5a565b92915050565b60006020828403121562000fa45762000fa362000f21565b5b600062000fb48482850162000f74565b91505092915050565b62000fc88162000f46565b82525050565b600060408201905062000fe5600083018562000fbd565b62000ff4602083018462000fbd565b9392505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006200106a60258362000ffb565b915062001077826200100c565b604082019050919050565b600060208201905081810360008301526200109d816200105b565b9050919050565b620010af8162000aba565b82525050565b6000602082019050620010cc6000830184620010a4565b92915050565b6142bc80620010e26000396000f3fe6080604052600436106102295760003560e01c806375f0a87411610123578063a8aa1b31116100ab578063edaa11681161006f578063edaa116814610814578063f2fde38b1461083d578063f66895a314610866578063f887ea4014610893578063fbe6324e146108be57610230565b8063a8aa1b3114610709578063a9059cbb14610734578063aacebbe314610771578063c5d32bb21461079a578063dd62ed3e146107d757610230565b80638da5cb5b116100f25780638da5cb5b1461062457806395d89b411461064f5780639d282cd61461067a5780639e252f00146106a3578063a457c2d7146106cc57610230565b806375f0a8741461058e57806385141a77146105b95780638a8c523c146105e45780638cd4426d146105fb57610230565b8063313ce567116101b15780634ada218b116101755780634ada218b146104b95780634e736f22146104e457806370a082311461050d578063715018a61461054a578063728f8eea1461056157610230565b8063313ce567146103d6578063355496ca14610401578063395093511461042a57806340b28c2f1461046757806342b6fa111461049057610230565b80631675d802116101f85780631675d802146102ef57806318160ddd1461031a5780631816467f1461034557806323b872dd1461036e578063274a533c146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780630e375a5c1461029d5780631340538f146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e9565b6040516102579190612d22565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612dec565b61097b565b6040516102949190612e47565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612fd6565b610999565b005b3480156102d257600080fd5b506102ed60048036038101906102e89190613032565b610aaa565b005b3480156102fb57600080fd5b50610304610b43565b604051610311919061306e565b60405180910390f35b34801561032657600080fd5b5061032f610b49565b60405161033c919061306e565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190613089565b610b53565b005b34801561037a57600080fd5b50610395600480360381019061039091906130b6565b610c13565b6040516103a29190612e47565b60405180910390f35b3480156103b757600080fd5b506103c0610d14565b6040516103cd919061306e565b60405180910390f35b3480156103e257600080fd5b506103eb610d1a565b6040516103f89190613125565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190613140565b610d23565b005b34801561043657600080fd5b50610451600480360381019061044c9190612dec565b610dfa565b60405161045e9190612e47565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613180565b610ea6565b005b34801561049c57600080fd5b506104b760048036038101906104b291906131c0565b610fa8565b005b3480156104c557600080fd5b506104ce61104c565b6040516104db9190612e47565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906131ed565b61105f565b005b34801561051957600080fd5b50610534600480360381019061052f9190613089565b611178565b604051610541919061306e565b60405180910390f35b34801561055657600080fd5b5061055f6111c0565b005b34801561056d57600080fd5b50610576611248565b60405161058593929190613240565b60405180910390f35b34801561059a57600080fd5b506105a3611260565b6040516105b09190613286565b60405180910390f35b3480156105c557600080fd5b506105ce611286565b6040516105db9190613286565b60405180910390f35b3480156105f057600080fd5b506105f961128c565b005b34801561060757600080fd5b50610622600480360381019061061d9190612dec565b611397565b005b34801561063057600080fd5b5061063961149d565b6040516106469190613286565b60405180910390f35b34801561065b57600080fd5b506106646114c7565b6040516106719190612d22565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906131ed565b611559565b005b3480156106af57600080fd5b506106ca60048036038101906106c591906131c0565b611672565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190612dec565b61173f565b6040516107009190612e47565b60405180910390f35b34801561071557600080fd5b5061071e611833565b60405161072b9190613286565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190612dec565b611859565b6040516107689190612e47565b60405180910390f35b34801561077d57600080fd5b5061079860048036038101906107939190613089565b611870565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190613089565b611930565b6040516107ce9190612e47565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613180565b611950565b60405161080b919061306e565b60405180910390f35b34801561082057600080fd5b5061083b600480360381019061083691906131c0565b6119d7565b005b34801561084957600080fd5b50610864600480360381019061085f9190613089565b611af0565b005b34801561087257600080fd5b5061087b611be7565b60405161088a93929190613240565b60405180910390f35b34801561089f57600080fd5b506108a8611bff565b6040516108b59190613300565b60405180910390f35b3480156108ca57600080fd5b506108d3611c25565b6040516108e09190612e47565b60405180910390f35b6060600380546108f89061334a565b80601f01602080910402602001604051908101604052809291908181526020018280546109249061334a565b80156109715780601f1061094657610100808354040283529160200191610971565b820191906000526020600020905b81548152906001019060200180831161095457829003601f168201915b5050505050905090565b600061098f610988611c38565b8484611c40565b6001905092915050565b6109a1611c38565b73ffffffffffffffffffffffffffffffffffffffff166109bf61149d565b73ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c906133c7565b60405180910390fd5b60005b8251811015610aa5578160146000858481518110610a3957610a386133e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a9d90613445565b915050610a18565b505050565b610ab2611c38565b73ffffffffffffffffffffffffffffffffffffffff16610ad061149d565b73ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d906133c7565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b610b5b611c38565b73ffffffffffffffffffffffffffffffffffffffff16610b7961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc6906133c7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c20848484611e09565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6b611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce2906134ff565b60405180910390fd5b610d0885610cf7611c38565b8584610d03919061351f565b611c40565b60019150509392505050565b60095481565b60006012905090565b610d2b611c38565b73ffffffffffffffffffffffffffffffffffffffff16610d4961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d96906133c7565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e9c610e07611c38565b848460016000610e15611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e979190613553565b611c40565b6001905092915050565b610eae611c38565b73ffffffffffffffffffffffffffffffffffffffff16610ecc61149d565b73ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906133c7565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610fb0611c38565b73ffffffffffffffffffffffffffffffffffffffff16610fce61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906133c7565b60405180910390fd5b61102c610d1a565b600a61103891906136ba565b816110439190613705565b60088190555050565b600760169054906101000a900460ff1681565b611067611c38565b73ffffffffffffffffffffffffffffffffffffffff1661108561149d565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d2906133c7565b60405180910390fd5b600a8183856110ea9190613553565b6110f49190613553565b1115611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90613793565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c8611c38565b73ffffffffffffffffffffffffffffffffffffffff166111e661149d565b73ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906133c7565b60405180910390fd5b61124660006122fd565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b611294611c38565b73ffffffffffffffffffffffffffffffffffffffff166112b261149d565b73ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff906133c7565b60405180910390fd5b600760169054906101000a900460ff1615611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f906137ff565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600981905550565b61139f611c38565b73ffffffffffffffffffffffffffffffffffffffff166113bd61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a906133c7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61143761149d565b836040518363ffffffff1660e01b815260040161145592919061381f565b6020604051808303816000875af1158015611474573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611498919061385d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114d69061334a565b80601f01602080910402602001604051908101604052809291908181526020018280546115029061334a565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b611561611c38565b73ffffffffffffffffffffffffffffffffffffffff1661157f61149d565b73ffffffffffffffffffffffffffffffffffffffff16146115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc906133c7565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050600a8183856116229190613553565b61162c9190613553565b111561166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490613793565b60405180910390fd5b505050565b61167a611c38565b73ffffffffffffffffffffffffffffffffffffffff1661169861149d565b73ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e5906133c7565b60405180910390fd5b6116f661149d565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561173b573d6000803e3d6000fd5b5050565b6000806001600061174e611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561180b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611802906138fc565b60405180910390fd5b611828611816611c38565b858584611823919061351f565b611c40565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611866338484611e09565b6001905092915050565b611878611c38565b73ffffffffffffffffffffffffffffffffffffffff1661189661149d565b73ffffffffffffffffffffffffffffffffffffffff16146118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906133c7565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119df611c38565b73ffffffffffffffffffffffffffffffffffffffff166119fd61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a906133c7565b60405180910390fd5b600760169054906101000a900460ff1615611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a9061398e565b60405180910390fd5b600a8110611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906139fa565b60405180910390fd5b80600a8190555050565b611af8611c38565b73ffffffffffffffffffffffffffffffffffffffff16611b1661149d565b73ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b63906133c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613a8c565b60405180910390fd5b611be4816122fd565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613b1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613bb0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dfc919061306e565b60405180910390a3505050565b60008111611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613c42565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ef05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4557600760169054906101000a900460ff16611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90613cae565b60405180910390fd5b5b6000806000611f52612c71565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ff85750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120125750600a5460095461200f9190613553565b43105b9050600760149054906101000a900460ff16806120785750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120cc5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120da576000925061220d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612135575080155b15612197576011600201546011600001546011600101546121569190613553565b6121609190613553565b945084935060116040518060600160405290816000820154815260200160018201548152602001600282015481525050915061220c565b806121f957600e60020154600e60000154600e600101546121b89190613553565b6121c29190613553565b9450849350600e6040518060600160405290816000820154815260200160018201548152602001600282015481525050915061220b565b801561220a57600b549450600b5493505b5b5b5b6064848761221b9190613705565b6122259190613cfd565b9250600760159054906101000a900460ff1680156122915750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156122a1576122a085836123c3565b5b6122b7888885896122b2919061351f565b6125d3565b60008311156122f35760008511156122f2576000606486886122d99190613705565b6122e39190613cfd565b90506122f08930836125d3565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff166125cf576001600760146101000a81548160ff02191690831515021790555060006123fd30611178565b905060085481106125b257600160085411156124195760085490505b60006002846124289190613705565b905060008184602001518461243d9190613705565b6124479190613cfd565b905060008184612457919061351f565b9050600047905061246782612850565b60008147612475919061351f565b90506000876020015186612489919061351f565b826124949190613cfd565b905060008860200151826124a89190613705565b905060008111156124be576124bd8682612a93565b5b600089600001516002846124d29190613705565b6124dc9190613705565b905060008111156125335761253281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b7890919063ffffffff16565b5b60008a604001516002856125479190613705565b6125519190613705565b905060008111156125a8576125a781600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b7890919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613da0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890613e32565b60405180910390fd5b6126bc838383612c6c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273990613ec4565b60405180910390fd5b818161274e919061351f565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127de9190613553565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612842919061306e565b60405180910390a350505050565b6000600267ffffffffffffffff81111561286d5761286c612e67565b5b60405190808252806020026020018201604052801561289b5781602001602082028036833780820191505090505b50905030816000815181106128b3576128b26133e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e9190613ef9565b81600181518110612992576129916133e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c40565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a5d95949392919061401f565b600060405180830381600087803b158015612a7757600080fd5b505af1158015612a8b573d6000803e3d6000fd5b505050505050565b612ac030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c40565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612b0c61149d565b426040518863ffffffff1660e01b8152600401612b2e96959493929190614079565b60606040518083038185885af1158015612b4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7191906140ef565b5050505050565b80471015612bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb29061418e565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612be1906141df565b60006040518083038185875af1925050503d8060008114612c1e576040519150601f19603f3d011682016040523d82523d6000602084013e612c23565b606091505b5050905080612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614266565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ccc578082015181840152602081019050612cb1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cf482612c92565b612cfe8185612c9d565b9350612d0e818560208601612cae565b612d1781612cd8565b840191505092915050565b60006020820190508181036000830152612d3c8184612ce9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d8382612d58565b9050919050565b612d9381612d78565b8114612d9e57600080fd5b50565b600081359050612db081612d8a565b92915050565b6000819050919050565b612dc981612db6565b8114612dd457600080fd5b50565b600081359050612de681612dc0565b92915050565b60008060408385031215612e0357612e02612d4e565b5b6000612e1185828601612da1565b9250506020612e2285828601612dd7565b9150509250929050565b60008115159050919050565b612e4181612e2c565b82525050565b6000602082019050612e5c6000830184612e38565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e9f82612cd8565b810181811067ffffffffffffffff82111715612ebe57612ebd612e67565b5b80604052505050565b6000612ed1612d44565b9050612edd8282612e96565b919050565b600067ffffffffffffffff821115612efd57612efc612e67565b5b602082029050602081019050919050565b600080fd5b6000612f26612f2184612ee2565b612ec7565b90508083825260208201905060208402830185811115612f4957612f48612f0e565b5b835b81811015612f725780612f5e8882612da1565b845260208401935050602081019050612f4b565b5050509392505050565b600082601f830112612f9157612f90612e62565b5b8135612fa1848260208601612f13565b91505092915050565b612fb381612e2c565b8114612fbe57600080fd5b50565b600081359050612fd081612faa565b92915050565b60008060408385031215612fed57612fec612d4e565b5b600083013567ffffffffffffffff81111561300b5761300a612d53565b5b61301785828601612f7c565b925050602061302885828601612fc1565b9150509250929050565b60006020828403121561304857613047612d4e565b5b600061305684828501612fc1565b91505092915050565b61306881612db6565b82525050565b6000602082019050613083600083018461305f565b92915050565b60006020828403121561309f5761309e612d4e565b5b60006130ad84828501612da1565b91505092915050565b6000806000606084860312156130cf576130ce612d4e565b5b60006130dd86828701612da1565b93505060206130ee86828701612da1565b92505060406130ff86828701612dd7565b9150509250925092565b600060ff82169050919050565b61311f81613109565b82525050565b600060208201905061313a6000830184613116565b92915050565b6000806040838503121561315757613156612d4e565b5b600061316585828601612da1565b925050602061317685828601612fc1565b9150509250929050565b6000806040838503121561319757613196612d4e565b5b60006131a585828601612da1565b92505060206131b685828601612da1565b9150509250929050565b6000602082840312156131d6576131d5612d4e565b5b60006131e484828501612dd7565b91505092915050565b60008060006060848603121561320657613205612d4e565b5b600061321486828701612dd7565b935050602061322586828701612dd7565b925050604061323686828701612dd7565b9150509250925092565b6000606082019050613255600083018661305f565b613262602083018561305f565b61326f604083018461305f565b949350505050565b61328081612d78565b82525050565b600060208201905061329b6000830184613277565b92915050565b6000819050919050565b60006132c66132c16132bc84612d58565b6132a1565b612d58565b9050919050565b60006132d8826132ab565b9050919050565b60006132ea826132cd565b9050919050565b6132fa816132df565b82525050565b600060208201905061331560008301846132f1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336257607f821691505b6020821081036133755761337461331b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133b1602083612c9d565b91506133bc8261337b565b602082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061345082612db6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348257613481613416565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134e9602883612c9d565b91506134f48261348d565b604082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b600061352a82612db6565b915061353583612db6565b925082820390508181111561354d5761354c613416565b5b92915050565b600061355e82612db6565b915061356983612db6565b925082820190508082111561358157613580613416565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156135de578086048111156135ba576135b9613416565b5b60018516156135c95780820291505b80810290506135d785613587565b945061359e565b94509492505050565b6000826135f757600190506136b3565b8161360557600090506136b3565b816001811461361b576002811461362557613654565b60019150506136b3565b60ff84111561363757613636613416565b5b8360020a91508482111561364e5761364d613416565b5b506136b3565b5060208310610133831016604e8410600b84101617156136895782820a90508381111561368457613683613416565b5b6136b3565b6136968484846001613594565b925090508184048111156136ad576136ac613416565b5b81810290505b9392505050565b60006136c582612db6565b91506136d083613109565b92506136fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135e7565b905092915050565b600061371082612db6565b915061371b83612db6565b925082820261372981612db6565b915082820484148315176137405761373f613416565b5b5092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b600061377d601d83612c9d565b915061378882613747565b602082019050919050565b600060208201905081810360008301526137ac81613770565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006137e9601a83612c9d565b91506137f4826137b3565b602082019050919050565b60006020820190508181036000830152613818816137dc565b9050919050565b60006040820190506138346000830185613277565b613841602083018461305f565b9392505050565b60008151905061385781612faa565b92915050565b60006020828403121561387357613872612d4e565b5b600061388184828501613848565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138e6602583612c9d565b91506138f18261388a565b604082019050919050565b60006020820190508181036000830152613915816138d9565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613978602583612c9d565b91506139838261391c565b604082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b7f426c6f636b2073686f756c64206265206c657373207468616e20313000000000600082015250565b60006139e4601c83612c9d565b91506139ef826139ae565b602082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a76602683612c9d565b9150613a8182613a1a565b604082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b08602483612c9d565b9150613b1382613aac565b604082019050919050565b60006020820190508181036000830152613b3781613afb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b9a602283612c9d565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c2c602983612c9d565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613c98601383612c9d565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d0882612db6565b9150613d1383612db6565b925082613d2357613d22613cce565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d8a602583612c9d565b9150613d9582613d2e565b604082019050919050565b60006020820190508181036000830152613db981613d7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e1c602383612c9d565b9150613e2782613dc0565b604082019050919050565b60006020820190508181036000830152613e4b81613e0f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613eae602683612c9d565b9150613eb982613e52565b604082019050919050565b60006020820190508181036000830152613edd81613ea1565b9050919050565b600081519050613ef381612d8a565b92915050565b600060208284031215613f0f57613f0e612d4e565b5b6000613f1d84828501613ee4565b91505092915050565b6000819050919050565b6000613f4b613f46613f4184613f26565b6132a1565b612db6565b9050919050565b613f5b81613f30565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9681612d78565b82525050565b6000613fa88383613f8d565b60208301905092915050565b6000602082019050919050565b6000613fcc82613f61565b613fd68185613f6c565b9350613fe183613f7d565b8060005b83811015614012578151613ff98882613f9c565b975061400483613fb4565b925050600181019050613fe5565b5085935050505092915050565b600060a082019050614034600083018861305f565b6140416020830187613f52565b81810360408301526140538186613fc1565b90506140626060830185613277565b61406f608083018461305f565b9695505050505050565b600060c08201905061408e6000830189613277565b61409b602083018861305f565b6140a86040830187613f52565b6140b56060830186613f52565b6140c26080830185613277565b6140cf60a083018461305f565b979650505050505050565b6000815190506140e981612dc0565b92915050565b60008060006060848603121561410857614107612d4e565b5b6000614116868287016140da565b9350506020614127868287016140da565b9250506040614138868287016140da565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614178601d83612c9d565b915061418382614142565b602082019050919050565b600060208201905081810360008301526141a78161416b565b9050919050565b600081905092915050565b50565b60006141c96000836141ae565b91506141d4826141b9565b600082019050919050565b60006141ea826141bc565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614250603a83612c9d565b915061425b826141f4565b604082019050919050565b6000602082019050818103600083015261427f81614243565b905091905056fea264697066735822122062c7bc63608cd434387d6c7bae4dece2bdfc59d7d8167809f832c22a4ff049b764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806375f0a87411610123578063a8aa1b31116100ab578063edaa11681161006f578063edaa116814610814578063f2fde38b1461083d578063f66895a314610866578063f887ea4014610893578063fbe6324e146108be57610230565b8063a8aa1b3114610709578063a9059cbb14610734578063aacebbe314610771578063c5d32bb21461079a578063dd62ed3e146107d757610230565b80638da5cb5b116100f25780638da5cb5b1461062457806395d89b411461064f5780639d282cd61461067a5780639e252f00146106a3578063a457c2d7146106cc57610230565b806375f0a8741461058e57806385141a77146105b95780638a8c523c146105e45780638cd4426d146105fb57610230565b8063313ce567116101b15780634ada218b116101755780634ada218b146104b95780634e736f22146104e457806370a082311461050d578063715018a61461054a578063728f8eea1461056157610230565b8063313ce567146103d6578063355496ca14610401578063395093511461042a57806340b28c2f1461046757806342b6fa111461049057610230565b80631675d802116101f85780631675d802146102ef57806318160ddd1461031a5780631816467f1461034557806323b872dd1461036e578063274a533c146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780630e375a5c1461029d5780631340538f146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108e9565b6040516102579190612d22565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612dec565b61097b565b6040516102949190612e47565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf9190612fd6565b610999565b005b3480156102d257600080fd5b506102ed60048036038101906102e89190613032565b610aaa565b005b3480156102fb57600080fd5b50610304610b43565b604051610311919061306e565b60405180910390f35b34801561032657600080fd5b5061032f610b49565b60405161033c919061306e565b60405180910390f35b34801561035157600080fd5b5061036c60048036038101906103679190613089565b610b53565b005b34801561037a57600080fd5b50610395600480360381019061039091906130b6565b610c13565b6040516103a29190612e47565b60405180910390f35b3480156103b757600080fd5b506103c0610d14565b6040516103cd919061306e565b60405180910390f35b3480156103e257600080fd5b506103eb610d1a565b6040516103f89190613125565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190613140565b610d23565b005b34801561043657600080fd5b50610451600480360381019061044c9190612dec565b610dfa565b60405161045e9190612e47565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613180565b610ea6565b005b34801561049c57600080fd5b506104b760048036038101906104b291906131c0565b610fa8565b005b3480156104c557600080fd5b506104ce61104c565b6040516104db9190612e47565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906131ed565b61105f565b005b34801561051957600080fd5b50610534600480360381019061052f9190613089565b611178565b604051610541919061306e565b60405180910390f35b34801561055657600080fd5b5061055f6111c0565b005b34801561056d57600080fd5b50610576611248565b60405161058593929190613240565b60405180910390f35b34801561059a57600080fd5b506105a3611260565b6040516105b09190613286565b60405180910390f35b3480156105c557600080fd5b506105ce611286565b6040516105db9190613286565b60405180910390f35b3480156105f057600080fd5b506105f961128c565b005b34801561060757600080fd5b50610622600480360381019061061d9190612dec565b611397565b005b34801561063057600080fd5b5061063961149d565b6040516106469190613286565b60405180910390f35b34801561065b57600080fd5b506106646114c7565b6040516106719190612d22565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906131ed565b611559565b005b3480156106af57600080fd5b506106ca60048036038101906106c591906131c0565b611672565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190612dec565b61173f565b6040516107009190612e47565b60405180910390f35b34801561071557600080fd5b5061071e611833565b60405161072b9190613286565b60405180910390f35b34801561074057600080fd5b5061075b60048036038101906107569190612dec565b611859565b6040516107689190612e47565b60405180910390f35b34801561077d57600080fd5b5061079860048036038101906107939190613089565b611870565b005b3480156107a657600080fd5b506107c160048036038101906107bc9190613089565b611930565b6040516107ce9190612e47565b60405180910390f35b3480156107e357600080fd5b506107fe60048036038101906107f99190613180565b611950565b60405161080b919061306e565b60405180910390f35b34801561082057600080fd5b5061083b600480360381019061083691906131c0565b6119d7565b005b34801561084957600080fd5b50610864600480360381019061085f9190613089565b611af0565b005b34801561087257600080fd5b5061087b611be7565b60405161088a93929190613240565b60405180910390f35b34801561089f57600080fd5b506108a8611bff565b6040516108b59190613300565b60405180910390f35b3480156108ca57600080fd5b506108d3611c25565b6040516108e09190612e47565b60405180910390f35b6060600380546108f89061334a565b80601f01602080910402602001604051908101604052809291908181526020018280546109249061334a565b80156109715780601f1061094657610100808354040283529160200191610971565b820191906000526020600020905b81548152906001019060200180831161095457829003601f168201915b5050505050905090565b600061098f610988611c38565b8484611c40565b6001905092915050565b6109a1611c38565b73ffffffffffffffffffffffffffffffffffffffff166109bf61149d565b73ffffffffffffffffffffffffffffffffffffffff1614610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c906133c7565b60405180910390fd5b60005b8251811015610aa5578160146000858481518110610a3957610a386133e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a9d90613445565b915050610a18565b505050565b610ab2611c38565b73ffffffffffffffffffffffffffffffffffffffff16610ad061149d565b73ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d906133c7565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b610b5b611c38565b73ffffffffffffffffffffffffffffffffffffffff16610b7961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc6906133c7565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c20848484611e09565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c6b611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce2906134ff565b60405180910390fd5b610d0885610cf7611c38565b8584610d03919061351f565b611c40565b60019150509392505050565b60095481565b60006012905090565b610d2b611c38565b73ffffffffffffffffffffffffffffffffffffffff16610d4961149d565b73ffffffffffffffffffffffffffffffffffffffff1614610d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d96906133c7565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610e9c610e07611c38565b848460016000610e15611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e979190613553565b611c40565b6001905092915050565b610eae611c38565b73ffffffffffffffffffffffffffffffffffffffff16610ecc61149d565b73ffffffffffffffffffffffffffffffffffffffff1614610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906133c7565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610fb0611c38565b73ffffffffffffffffffffffffffffffffffffffff16610fce61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906133c7565b60405180910390fd5b61102c610d1a565b600a61103891906136ba565b816110439190613705565b60088190555050565b600760169054906101000a900460ff1681565b611067611c38565b73ffffffffffffffffffffffffffffffffffffffff1661108561149d565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d2906133c7565b60405180910390fd5b600a8183856110ea9190613553565b6110f49190613553565b1115611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c90613793565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c8611c38565b73ffffffffffffffffffffffffffffffffffffffff166111e661149d565b73ffffffffffffffffffffffffffffffffffffffff161461123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906133c7565b60405180910390fd5b61124660006122fd565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b611294611c38565b73ffffffffffffffffffffffffffffffffffffffff166112b261149d565b73ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ff906133c7565b60405180910390fd5b600760169054906101000a900460ff1615611358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134f906137ff565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600981905550565b61139f611c38565b73ffffffffffffffffffffffffffffffffffffffff166113bd61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a906133c7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61143761149d565b836040518363ffffffff1660e01b815260040161145592919061381f565b6020604051808303816000875af1158015611474573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611498919061385d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114d69061334a565b80601f01602080910402602001604051908101604052809291908181526020018280546115029061334a565b801561154f5780601f106115245761010080835404028352916020019161154f565b820191906000526020600020905b81548152906001019060200180831161153257829003601f168201915b5050505050905090565b611561611c38565b73ffffffffffffffffffffffffffffffffffffffff1661157f61149d565b73ffffffffffffffffffffffffffffffffffffffff16146115d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115cc906133c7565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050600a8183856116229190613553565b61162c9190613553565b111561166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490613793565b60405180910390fd5b505050565b61167a611c38565b73ffffffffffffffffffffffffffffffffffffffff1661169861149d565b73ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e5906133c7565b60405180910390fd5b6116f661149d565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561173b573d6000803e3d6000fd5b5050565b6000806001600061174e611c38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561180b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611802906138fc565b60405180910390fd5b611828611816611c38565b858584611823919061351f565b611c40565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611866338484611e09565b6001905092915050565b611878611c38565b73ffffffffffffffffffffffffffffffffffffffff1661189661149d565b73ffffffffffffffffffffffffffffffffffffffff16146118ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e3906133c7565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119df611c38565b73ffffffffffffffffffffffffffffffffffffffff166119fd61149d565b73ffffffffffffffffffffffffffffffffffffffff1614611a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4a906133c7565b60405180910390fd5b600760169054906101000a900460ff1615611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a9061398e565b60405180910390fd5b600a8110611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906139fa565b60405180910390fd5b80600a8190555050565b611af8611c38565b73ffffffffffffffffffffffffffffffffffffffff16611b1661149d565b73ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b63906133c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290613a8c565b60405180910390fd5b611be4816122fd565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca690613b1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1590613bb0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dfc919061306e565b60405180910390a3505050565b60008111611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390613c42565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ef05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f4557600760169054906101000a900460ff16611f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3b90613cae565b60405180910390fd5b5b6000806000611f52612c71565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ff85750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120125750600a5460095461200f9190613553565b43105b9050600760149054906101000a900460ff16806120785750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120cc5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120da576000925061220d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612135575080155b15612197576011600201546011600001546011600101546121569190613553565b6121609190613553565b945084935060116040518060600160405290816000820154815260200160018201548152602001600282015481525050915061220c565b806121f957600e60020154600e60000154600e600101546121b89190613553565b6121c29190613553565b9450849350600e6040518060600160405290816000820154815260200160018201548152602001600282015481525050915061220b565b801561220a57600b549450600b5493505b5b5b5b6064848761221b9190613705565b6122259190613cfd565b9250600760159054906101000a900460ff1680156122915750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156122a1576122a085836123c3565b5b6122b7888885896122b2919061351f565b6125d3565b60008311156122f35760008511156122f2576000606486886122d99190613705565b6122e39190613cfd565b90506122f08930836125d3565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff166125cf576001600760146101000a81548160ff02191690831515021790555060006123fd30611178565b905060085481106125b257600160085411156124195760085490505b60006002846124289190613705565b905060008184602001518461243d9190613705565b6124479190613cfd565b905060008184612457919061351f565b9050600047905061246782612850565b60008147612475919061351f565b90506000876020015186612489919061351f565b826124949190613cfd565b905060008860200151826124a89190613705565b905060008111156124be576124bd8682612a93565b5b600089600001516002846124d29190613705565b6124dc9190613705565b905060008111156125335761253281600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b7890919063ffffffff16565b5b60008a604001516002856125479190613705565b6125519190613705565b905060008111156125a8576125a781600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b7890919063ffffffff16565b5b5050505050505050505b506000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613da0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890613e32565b60405180910390fd5b6126bc838383612c6c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273990613ec4565b60405180910390fd5b818161274e919061351f565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127de9190613553565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612842919061306e565b60405180910390a350505050565b6000600267ffffffffffffffff81111561286d5761286c612e67565b5b60405190808252806020026020018201604052801561289b5781602001602082028036833780820191505090505b50905030816000815181106128b3576128b26133e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e9190613ef9565b81600181518110612992576129916133e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f930600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c40565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a5d95949392919061401f565b600060405180830381600087803b158015612a7757600080fd5b505af1158015612a8b573d6000803e3d6000fd5b505050505050565b612ac030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c40565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612b0c61149d565b426040518863ffffffff1660e01b8152600401612b2e96959493929190614079565b60606040518083038185885af1158015612b4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b7191906140ef565b5050505050565b80471015612bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb29061418e565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612be1906141df565b60006040518083038185875af1925050503d8060008114612c1e576040519150601f19603f3d011682016040523d82523d6000602084013e612c23565b606091505b5050905080612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614266565b60405180910390fd5b505050565b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ccc578082015181840152602081019050612cb1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cf482612c92565b612cfe8185612c9d565b9350612d0e818560208601612cae565b612d1781612cd8565b840191505092915050565b60006020820190508181036000830152612d3c8184612ce9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d8382612d58565b9050919050565b612d9381612d78565b8114612d9e57600080fd5b50565b600081359050612db081612d8a565b92915050565b6000819050919050565b612dc981612db6565b8114612dd457600080fd5b50565b600081359050612de681612dc0565b92915050565b60008060408385031215612e0357612e02612d4e565b5b6000612e1185828601612da1565b9250506020612e2285828601612dd7565b9150509250929050565b60008115159050919050565b612e4181612e2c565b82525050565b6000602082019050612e5c6000830184612e38565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e9f82612cd8565b810181811067ffffffffffffffff82111715612ebe57612ebd612e67565b5b80604052505050565b6000612ed1612d44565b9050612edd8282612e96565b919050565b600067ffffffffffffffff821115612efd57612efc612e67565b5b602082029050602081019050919050565b600080fd5b6000612f26612f2184612ee2565b612ec7565b90508083825260208201905060208402830185811115612f4957612f48612f0e565b5b835b81811015612f725780612f5e8882612da1565b845260208401935050602081019050612f4b565b5050509392505050565b600082601f830112612f9157612f90612e62565b5b8135612fa1848260208601612f13565b91505092915050565b612fb381612e2c565b8114612fbe57600080fd5b50565b600081359050612fd081612faa565b92915050565b60008060408385031215612fed57612fec612d4e565b5b600083013567ffffffffffffffff81111561300b5761300a612d53565b5b61301785828601612f7c565b925050602061302885828601612fc1565b9150509250929050565b60006020828403121561304857613047612d4e565b5b600061305684828501612fc1565b91505092915050565b61306881612db6565b82525050565b6000602082019050613083600083018461305f565b92915050565b60006020828403121561309f5761309e612d4e565b5b60006130ad84828501612da1565b91505092915050565b6000806000606084860312156130cf576130ce612d4e565b5b60006130dd86828701612da1565b93505060206130ee86828701612da1565b92505060406130ff86828701612dd7565b9150509250925092565b600060ff82169050919050565b61311f81613109565b82525050565b600060208201905061313a6000830184613116565b92915050565b6000806040838503121561315757613156612d4e565b5b600061316585828601612da1565b925050602061317685828601612fc1565b9150509250929050565b6000806040838503121561319757613196612d4e565b5b60006131a585828601612da1565b92505060206131b685828601612da1565b9150509250929050565b6000602082840312156131d6576131d5612d4e565b5b60006131e484828501612dd7565b91505092915050565b60008060006060848603121561320657613205612d4e565b5b600061321486828701612dd7565b935050602061322586828701612dd7565b925050604061323686828701612dd7565b9150509250925092565b6000606082019050613255600083018661305f565b613262602083018561305f565b61326f604083018461305f565b949350505050565b61328081612d78565b82525050565b600060208201905061329b6000830184613277565b92915050565b6000819050919050565b60006132c66132c16132bc84612d58565b6132a1565b612d58565b9050919050565b60006132d8826132ab565b9050919050565b60006132ea826132cd565b9050919050565b6132fa816132df565b82525050565b600060208201905061331560008301846132f1565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061336257607f821691505b6020821081036133755761337461331b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133b1602083612c9d565b91506133bc8261337b565b602082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061345082612db6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348257613481613416565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006134e9602883612c9d565b91506134f48261348d565b604082019050919050565b60006020820190508181036000830152613518816134dc565b9050919050565b600061352a82612db6565b915061353583612db6565b925082820390508181111561354d5761354c613416565b5b92915050565b600061355e82612db6565b915061356983612db6565b925082820190508082111561358157613580613416565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156135de578086048111156135ba576135b9613416565b5b60018516156135c95780820291505b80810290506135d785613587565b945061359e565b94509492505050565b6000826135f757600190506136b3565b8161360557600090506136b3565b816001811461361b576002811461362557613654565b60019150506136b3565b60ff84111561363757613636613416565b5b8360020a91508482111561364e5761364d613416565b5b506136b3565b5060208310610133831016604e8410600b84101617156136895782820a90508381111561368457613683613416565b5b6136b3565b6136968484846001613594565b925090508184048111156136ad576136ac613416565b5b81810290505b9392505050565b60006136c582612db6565b91506136d083613109565b92506136fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135e7565b905092915050565b600061371082612db6565b915061371b83612db6565b925082820261372981612db6565b915082820484148315176137405761373f613416565b5b5092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b600061377d601d83612c9d565b915061378882613747565b602082019050919050565b600060208201905081810360008301526137ac81613770565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006137e9601a83612c9d565b91506137f4826137b3565b602082019050919050565b60006020820190508181036000830152613818816137dc565b9050919050565b60006040820190506138346000830185613277565b613841602083018461305f565b9392505050565b60008151905061385781612faa565b92915050565b60006020828403121561387357613872612d4e565b5b600061388184828501613848565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006138e6602583612c9d565b91506138f18261388a565b604082019050919050565b60006020820190508181036000830152613915816138d9565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613978602583612c9d565b91506139838261391c565b604082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b7f426c6f636b2073686f756c64206265206c657373207468616e20313000000000600082015250565b60006139e4601c83612c9d565b91506139ef826139ae565b602082019050919050565b60006020820190508181036000830152613a13816139d7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a76602683612c9d565b9150613a8182613a1a565b604082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b08602483612c9d565b9150613b1382613aac565b604082019050919050565b60006020820190508181036000830152613b3781613afb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b9a602283612c9d565b9150613ba582613b3e565b604082019050919050565b60006020820190508181036000830152613bc981613b8d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613c2c602983612c9d565b9150613c3782613bd0565b604082019050919050565b60006020820190508181036000830152613c5b81613c1f565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613c98601383612c9d565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d0882612db6565b9150613d1383612db6565b925082613d2357613d22613cce565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d8a602583612c9d565b9150613d9582613d2e565b604082019050919050565b60006020820190508181036000830152613db981613d7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e1c602383612c9d565b9150613e2782613dc0565b604082019050919050565b60006020820190508181036000830152613e4b81613e0f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613eae602683612c9d565b9150613eb982613e52565b604082019050919050565b60006020820190508181036000830152613edd81613ea1565b9050919050565b600081519050613ef381612d8a565b92915050565b600060208284031215613f0f57613f0e612d4e565b5b6000613f1d84828501613ee4565b91505092915050565b6000819050919050565b6000613f4b613f46613f4184613f26565b6132a1565b612db6565b9050919050565b613f5b81613f30565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9681612d78565b82525050565b6000613fa88383613f8d565b60208301905092915050565b6000602082019050919050565b6000613fcc82613f61565b613fd68185613f6c565b9350613fe183613f7d565b8060005b83811015614012578151613ff98882613f9c565b975061400483613fb4565b925050600181019050613fe5565b5085935050505092915050565b600060a082019050614034600083018861305f565b6140416020830187613f52565b81810360408301526140538186613fc1565b90506140626060830185613277565b61406f608083018461305f565b9695505050505050565b600060c08201905061408e6000830189613277565b61409b602083018861305f565b6140a86040830187613f52565b6140b56060830186613f52565b6140c26080830185613277565b6140cf60a083018461305f565b979650505050505050565b6000815190506140e981612dc0565b92915050565b60008060006060848603121561410857614107612d4e565b5b6000614116868287016140da565b9350506020614127868287016140da565b9250506040614138868287016140da565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614178601d83612c9d565b915061418382614142565b602082019050919050565b600060208201905081810360008301526141a78161416b565b9050919050565b600081905092915050565b50565b60006141c96000836141ae565b91506141d4826141b9565b600082019050919050565b60006141ea826141bc565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614250603a83612c9d565b915061425b826141f4565b604082019050919050565b6000602082019050818103600083015261427f81614243565b905091905056fea264697066735822122062c7bc63608cd434387d6c7bae4dece2bdfc59d7d8167809f832c22a4ff049b764736f6c63430008110033

Deployed Bytecode Sourcemap

12724:10418:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14641:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22619:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20681:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12993:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3535:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22380:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14810:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13055:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3377:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22491:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15266:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21612:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20841:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12950:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21322:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3706:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11387:94;;;;;;;;;;;;;:::i;:::-;;13523:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13164:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13320:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21774:224;;;;;;;;;;;;;:::i;:::-;;22949:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11164:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21030:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22829:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15522:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12834:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15940:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22257:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13613:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4325:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22006:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11489:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13565:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12806:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12905:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2415:100;2469:13;2502:5;2495:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2415:100;:::o;14641:161::-;14716:4;14733:39;14742:12;:10;:12::i;:::-;14756:7;14765:6;14733:8;:39::i;:::-;14790:4;14783:11;;14641:161;;;;:::o;22619:202::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22716:9:::1;22711:103;22735:8;:15;22731:1;:19;22711:103;;;22797:5;22772:9;:22;22782:8;22791:1;22782:11;;;;;;;;:::i;:::-;;;;;;;;22772:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22752:3;;;;;:::i;:::-;;;;22711:103;;;;22619:202:::0;;:::o;20681:152::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20820:5:::1;20799:18;;:26;;;;;;;;;;;;;;;;;;20681:152:::0;:::o;12993:53::-;;;;:::o;3535:108::-;3596:7;3623:12;;3616:19;;3535:108;:::o;22380:103::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22466:9:::1;22454;;:21;;;;;;;;;;;;;;;;;;22380:103:::0;:::o;14810:448::-;14942:4;14959:36;14969:6;14977:9;14988:6;14959:9;:36::i;:::-;15008:24;15035:11;:19;15047:6;15035:19;;;;;;;;;;;;;;;:33;15055:12;:10;:12::i;:::-;15035:33;;;;;;;;;;;;;;;;15008:60;;15107:6;15087:16;:26;;15079:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15169:57;15178:6;15186:12;:10;:12::i;:::-;15219:6;15200:16;:25;;;;:::i;:::-;15169:8;:57::i;:::-;15246:4;15239:11;;;14810:448;;;;;:::o;13055:28::-;;;;:::o;3377:93::-;3435:5;3460:2;3453:9;;3377:93;:::o;22491:120::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22598:5:::1;22576:9;:19;22586:8;22576:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22491:120:::0;;:::o;15266:248::-;15382:4;15404:80;15413:12;:10;:12::i;:::-;15427:7;15473:10;15436:11;:25;15448:12;:10;:12::i;:::-;15436:25;;;;;;;;;;;;;;;:34;15462:7;15436:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15404:8;:80::i;:::-;15502:4;15495:11;;15266:248;;;;:::o;21612:155::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21724:9:::1;21707:6;;:27;;;;;;;;;;;;;;;;;;21752:7;21745:4;;:14;;;;;;;;;;;;;;;;;;21612:155:::0;;:::o;20841:177::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21000:10:::1;:8;:10::i;:::-;20996:2;:14;;;;:::i;:::-;20983:10;:27;;;;:::i;:::-;20957:23;:53;;;;20841:177:::0;:::o;12950:34::-;;;;;;;;;;;;;:::o;21322:282::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21506:2:::1;21497:4;21484:10;21471;:23;;;;:::i;:::-;:30;;;;:::i;:::-;21470:38;;21462:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21561:35;;;;;;;;21567:10;21561:35;;;;21579:10;21561:35;;;;21591:4;21561:35;;::::0;21553:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;21322:282:::0;;;:::o;3706:127::-;3780:7;3807:9;:18;3817:7;3807:18;;;;;;;;;;;;;;;;3800:25;;3706:127;;;:::o;11387:94::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11452:21:::1;11470:1;11452:9;:21::i;:::-;11387:94::o:0;13523:35::-;;;;;;;;;;;;;;;;;;;:::o;13164:75::-;;;;;;;;;;;;;:::o;13320:79::-;13357:42;13320:79;:::o;21774:224::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21838:14:::1;;;;;;;;;;;21837:15;21829:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21911:4;21894:14;;:21;;;;;;;;;;;;;;;;;;21947:4;21926:18;;:25;;;;;;;;;;;;;;;;;;21978:12;21962:13;:28;;;;21774:224::o:0;22949:135::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23041:8:::1;23034:25;;;23060:7;:5;:7::i;:::-;23069:6;23034:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22949:135:::0;;:::o;11164:87::-;11210:7;11237:6;;;;;;;;;;;11230:13;;11164:87;:::o;2634:104::-;2690:13;2723:7;2716:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2634:104;:::o;21030:284::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:35:::1;;;;;;;;21186:10;21180:35;;;;21198:10;21180:35;;;;21210:4;21180:35;;::::0;21172:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;21270:2;21261:4;21248:10;21235;:23;;;;:::i;:::-;:30;;;;:::i;:::-;21234:38;;21226:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21030:284:::0;;;:::o;22829:112::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22905:7:::1;:5;:7::i;:::-;22897:25;;:36;22923:9;22897:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22829:112:::0;:::o;15522:410::-;15643:4;15665:24;15692:11;:25;15704:12;:10;:12::i;:::-;15692:25;;;;;;;;;;;;;;;:34;15718:7;15692:34;;;;;;;;;;;;;;;;15665:61;;15765:15;15745:16;:35;;15737:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15833:67;15842:12;:10;:12::i;:::-;15856:7;15884:15;15865:16;:34;;;;:::i;:::-;15833:8;:67::i;:::-;15920:4;15913:11;;;15522:410;;;;:::o;12834:19::-;;;;;;;;;;;;;:::o;15940:165::-;16018:4;16035:40;16045:10;16057:9;16068:6;16035:9;:40::i;:::-;16093:4;16086:11;;15940:165;;;;:::o;22257:115::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22355:9:::1;22337:15;;:27;;;;;;;;;;;;;;;;;;22257:115:::0;:::o;13613:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4325:201::-;4459:7;4491:11;:18;4503:5;4491:18;;;;;;;;;;;;;;;:27;4510:7;4491:27;;;;;;;;;;;;;;;;4484:34;;4325:201;;;;:::o;22006:243::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22088:14:::1;;;;;;;;;;;22087:15;22079:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22175:2;22163:9;:14;22155:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22232:9;22221:8;:20;;;;22006:243:::0;:::o;11489:192::-;11310:12;:10;:12::i;:::-;11299:23;;:7;:5;:7::i;:::-;:23;;;11291:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11598:1:::1;11578:22;;:8;:22;;::::0;11570:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11654:19;11664:8;11654:9;:19::i;:::-;11489:192:::0;:::o;13565:39::-;;;;;;;;;;;;;;;;;;;:::o;12806:21::-;;;;;;;;;;;;;:::o;12905:38::-;;;;;;;;;;;;;:::o;137:98::-;190:7;217:10;210:17;;137:98;:::o;9463:380::-;9616:1;9599:19;;:5;:19;;;9591:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9697:1;9678:21;;:7;:21;;;9670:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9781:6;9751:11;:18;9763:5;9751:18;;;;;;;;;;;;;;;:27;9770:7;9751:27;;;;;;;;;;;;;;;:36;;;;9819:7;9803:32;;9812:5;9803:32;;;9828:6;9803:32;;;;;;:::i;:::-;;;;;;;;9463:380;;;:::o;16113:1982::-;16263:1;16254:6;:10;16246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16328:9;:17;16338:6;16328:17;;;;;;;;;;;;;;;;;;;;;;;;;16327:18;:43;;;;;16350:9;:20;16360:9;16350:20;;;;;;;;;;;;;;;;;;;;;;;;;16349:21;16327:43;16323:122;;;16395:14;;;;;;;;;;;16387:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16323:122;16457:15;16483:14;16508:11;16530:25;;:::i;:::-;16568:17;16589:9;:17;16599:6;16589:17;;;;;;;;;;;;;;;;;;;;;;;;;16588:18;:56;;;;;16624:9;:20;16634:9;16624:20;;;;;;;;;;;;;;;;;;;;;;;;;16623:21;16588:56;:112;;;;;16692:8;;16676:13;;:24;;;;:::i;:::-;16661:12;:39;16588:112;16568:132;;16788:15;;;;;;;;;;;:36;;;;16807:9;:17;16817:6;16807:17;;;;;;;;;;;;;;;;;;;;;;;;;16788:36;:60;;;;16828:9;:20;16838:9;16828:20;;;;;;;;;;;;;;;;;;;;;;;;;16788:60;16784:727;;;16869:1;16863:7;;16784:727;;;16934:4;;;;;;;;;;;16921:17;;:9;:17;;;:34;;;;;16943:12;16942:13;16921:34;16917:594;;;17088:9;:13;;;17038:9;:19;;;16999:9;:19;;;:58;;;;:::i;:::-;:102;;;;:::i;:::-;16972:129;;17126:7;17117:16;;17163:9;17148:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16917:594;;;17195:12;17190:321;;17321:5;:9;;;17286:5;:15;;;17251:5;:15;;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;17224:106;;17354:7;17345:16;;17391:5;17376:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17190:321;;;17418:12;17414:97;;;17457:9;;17447:19;;17490:9;;17481:18;;17414:97;17190:321;16917:594;16784:727;17549:3;17539:6;17530;:15;;;;:::i;:::-;17529:23;;;;:::i;:::-;17523:29;;17666:18;;;;;;;;;;;:36;;;;;17698:4;;;;;;;;;;;17688:14;;:6;:14;;;;17666:36;17662:76;;;17704:34;17716:7;17725:12;17704:11;:34::i;:::-;17662:76;17780:48;17796:6;17804:9;17824:3;17815:6;:12;;;;:::i;:::-;17780:15;:48::i;:::-;17849:1;17843:3;:7;17839:249;;;17925:1;17915:7;:11;17911:164;;;17947:17;17988:3;17977:7;17968:6;:16;;;;:::i;:::-;17967:24;;;;:::i;:::-;17947:44;;18010:49;18026:6;18042:4;18049:9;18010:15;:49::i;:::-;17928:147;17911:164;17839:249;16235:1860;;;;;16113:1982;;;:::o;11689:173::-;11745:16;11764:6;;;;;;;;;;;11745:25;;11790:8;11781:6;;:17;;;;;;;;;;;;;;;;;;11845:8;11814:40;;11835:8;11814:40;;;;;;;;;;;;11734:128;11689:173;:::o;18103:1531::-;13771:15;;;;;;;;;;;13766:125;;13821:4;13803:15;;:22;;;;;;;;;;;;;;;;;;18194:23:::1;18220:24;18238:4;18220:9;:24::i;:::-;18194:50;;18278:23;;18259:15;:42;18255:1372;;18348:1;18322:23;;:27;18318:109;;;18388:23;;18370:41;;18318:109;18498:19;18530:1;18520:7;:11;;;;:::i;:::-;18498:33;;18546:32;18640:11;18600:9;:19;;;18582:15;:37;;;;:::i;:::-;18581:70;;;;:::i;:::-;18546:105;;18666:14;18701:24;18683:15;:42;;;;:::i;:::-;18666:59;;18742:22;18767:21;18742:46;;18805:24;18822:6;18805:16;:24::i;:::-;18846:20;18893:14;18869:21;:38;;;;:::i;:::-;18846:61;;18922:19;18974:9;:19;;;18960:11;:33;;;;:::i;:::-;18944:12;:50;;;;:::i;:::-;18922:72;;19009:29;19055:9;:19;;;19041:11;:33;;;;:::i;:::-;19009:65;;19119:1;19095:21;:25;19091:161;;;19175:61;19188:24;19214:21;19175:12;:61::i;:::-;19091:161;19268:20;19309:9;:19;;;19305:1;19291:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19268:60;;19362:1;19347:12;:16;19343:105;;;19384:48;19419:12;19392:15;;;;;;;;;;;19384:34;;;;:48;;;;:::i;:::-;19343:105;19464:14;19499:9;:13;;;19495:1;19481:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;19464:48;;19540:1;19531:6;:10;19527:87;;;19562:36;19591:6;19570:9;;;;;;;;;;;19562:28;;;;:36;;;;:::i;:::-;19527:87;18303:1324;;;;;;;;;18255:1372;18183:1451;13874:5:::0;13856:15;;:23;;;;;;;;;;;;;;;;;;13766:125;18103:1531;;:::o;7838:638::-;7996:1;7978:20;;:6;:20;;;7970:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8080:1;8059:23;;:9;:23;;;8051:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8135:47;8156:6;8164:9;8175:6;8135:20;:47::i;:::-;8195:21;8219:9;:17;8229:6;8219:17;;;;;;;;;;;;;;;;8195:41;;8272:6;8255:13;:23;;8247:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8368:6;8352:13;:22;;;;:::i;:::-;8332:9;:17;8342:6;8332:17;;;;;;;;;;;;;;;:42;;;;8409:6;8385:9;:20;8395:9;8385:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8450:9;8433:35;;8442:6;8433:35;;;8461:6;8433:35;;;;;;:::i;:::-;;;;;;;;7959:517;7838:638;;;:::o;19642:526::-;19760:21;19798:1;19784:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19760:40;;19829:4;19811;19816:1;19811:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19855:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19845:4;19850:1;19845:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19881:53;19898:4;19913:6;;;;;;;;;;;19922:11;19881:8;:53::i;:::-;19973:6;;;;;;;;;;;:57;;;20045:11;20071:1;20087:4;20114;20134:15;19973:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19697:471;19642:526;:::o;20176:497::-;20324:53;20341:4;20356:6;;;;;;;;;;;20365:11;20324:8;:53::i;:::-;20420:6;;;;;;;;;;;:22;;;20451:9;20485:4;20505:11;20531:1;20574;20617:7;:5;:7::i;:::-;20639:15;20420:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20176:497;;:::o;10607:319::-;10722:6;10697:21;:31;;10689:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10776:12;10794:9;:14;;10817:6;10794:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10775:54;;;10848:7;10840:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10678:248;10607:319;;:::o;10452: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:474::-;9301:6;9309;9358:2;9346:9;9337:7;9333:23;9329:32;9326:119;;;9364:79;;:::i;:::-;9326:119;9484:1;9509:53;9554:7;9545:6;9534:9;9530:22;9509:53;:::i;:::-;9499:63;;9455:117;9611:2;9637:53;9682:7;9673:6;9662:9;9658:22;9637:53;:::i;:::-;9627:63;;9582:118;9233:474;;;;;:::o;9713:329::-;9772:6;9821:2;9809:9;9800:7;9796:23;9792:32;9789:119;;;9827:79;;:::i;:::-;9789:119;9947:1;9972:53;10017:7;10008:6;9997:9;9993:22;9972:53;:::i;:::-;9962:63;;9918:117;9713:329;;;;:::o;10048:619::-;10125:6;10133;10141;10190:2;10178:9;10169:7;10165:23;10161:32;10158:119;;;10196:79;;:::i;:::-;10158:119;10316:1;10341:53;10386:7;10377:6;10366:9;10362:22;10341:53;:::i;:::-;10331:63;;10287:117;10443:2;10469:53;10514:7;10505:6;10494:9;10490:22;10469:53;:::i;:::-;10459:63;;10414:118;10571:2;10597:53;10642:7;10633:6;10622:9;10618:22;10597:53;:::i;:::-;10587:63;;10542:118;10048:619;;;;;:::o;10673:442::-;10822:4;10860:2;10849:9;10845:18;10837:26;;10873:71;10941:1;10930:9;10926:17;10917:6;10873:71;:::i;:::-;10954:72;11022:2;11011:9;11007:18;10998:6;10954:72;:::i;:::-;11036;11104:2;11093:9;11089:18;11080:6;11036:72;:::i;:::-;10673:442;;;;;;:::o;11121:118::-;11208:24;11226:5;11208:24;:::i;:::-;11203:3;11196:37;11121:118;;:::o;11245:222::-;11338:4;11376:2;11365:9;11361:18;11353:26;;11389:71;11457:1;11446:9;11442:17;11433:6;11389:71;:::i;:::-;11245:222;;;;:::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:180;14122:77;14119:1;14112:88;14219:4;14216:1;14209:15;14243:4;14240:1;14233:15;14260:233;14299:3;14322:24;14340:5;14322:24;:::i;:::-;14313:33;;14368:66;14361:5;14358:77;14355:103;;14438:18;;:::i;:::-;14355:103;14485:1;14478:5;14474:13;14467:20;;14260:233;;;:::o;14499:227::-;14639:34;14635:1;14627:6;14623:14;14616:58;14708:10;14703:2;14695:6;14691:15;14684:35;14499:227;:::o;14732:366::-;14874:3;14895:67;14959:2;14954:3;14895:67;:::i;:::-;14888:74;;14971:93;15060:3;14971:93;:::i;:::-;15089:2;15084:3;15080:12;15073:19;;14732:366;;;:::o;15104:419::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15357:9;15351:4;15347:20;15343:1;15332:9;15328:17;15321:47;15385:131;15511:4;15385:131;:::i;:::-;15377:139;;15104:419;;;:::o;15529:194::-;15569:4;15589:20;15607:1;15589:20;:::i;:::-;15584:25;;15623:20;15641:1;15623:20;:::i;:::-;15618:25;;15667:1;15664;15660:9;15652:17;;15691:1;15685:4;15682:11;15679:37;;;15696:18;;:::i;:::-;15679:37;15529:194;;;;:::o;15729:191::-;15769:3;15788:20;15806:1;15788:20;:::i;:::-;15783:25;;15822:20;15840:1;15822:20;:::i;:::-;15817:25;;15865:1;15862;15858:9;15851:16;;15886:3;15883:1;15880:10;15877:36;;;15893:18;;:::i;:::-;15877:36;15729:191;;;;:::o;15926:102::-;15968:8;16015:5;16012:1;16008:13;15987:34;;15926:102;;;:::o;16034:848::-;16095:5;16102:4;16126:6;16117:15;;16150:5;16141:14;;16164:712;16185:1;16175:8;16172:15;16164:712;;;16280:4;16275:3;16271:14;16265:4;16262:24;16259:50;;;16289:18;;:::i;:::-;16259:50;16339:1;16329:8;16325:16;16322:451;;;16754:4;16747:5;16743:16;16734:25;;16322:451;16804:4;16798;16794:15;16786:23;;16834:32;16857:8;16834:32;:::i;:::-;16822:44;;16164:712;;;16034:848;;;;;;;:::o;16888:1073::-;16942:5;17133:8;17123:40;;17154:1;17145:10;;17156:5;;17123:40;17182:4;17172:36;;17199:1;17190:10;;17201:5;;17172:36;17268:4;17316:1;17311:27;;;;17352:1;17347:191;;;;17261:277;;17311:27;17329:1;17320:10;;17331:5;;;17347:191;17392:3;17382:8;17379:17;17376:43;;;17399:18;;:::i;:::-;17376:43;17448:8;17445:1;17441:16;17432:25;;17483:3;17476:5;17473:14;17470:40;;;17490:18;;:::i;:::-;17470:40;17523:5;;;17261:277;;17647:2;17637:8;17634:16;17628:3;17622:4;17619:13;17615:36;17597:2;17587:8;17584:16;17579:2;17573:4;17570:12;17566:35;17550:111;17547:246;;;17703:8;17697:4;17693:19;17684:28;;17738:3;17731:5;17728:14;17725:40;;;17745:18;;:::i;:::-;17725:40;17778:5;;17547:246;17818:42;17856:3;17846:8;17840:4;17837:1;17818:42;:::i;:::-;17803:57;;;;17892:4;17887:3;17883:14;17876:5;17873:25;17870:51;;;17901:18;;:::i;:::-;17870:51;17950:4;17943:5;17939:16;17930:25;;16888:1073;;;;;;:::o;17967:281::-;18025:5;18049:23;18067:4;18049:23;:::i;:::-;18041:31;;18093:25;18109:8;18093:25;:::i;:::-;18081:37;;18137:104;18174:66;18164:8;18158:4;18137:104;:::i;:::-;18128:113;;17967:281;;;;:::o;18254:410::-;18294:7;18317:20;18335:1;18317:20;:::i;:::-;18312:25;;18351:20;18369:1;18351:20;:::i;:::-;18346:25;;18406:1;18403;18399:9;18428:30;18446:11;18428:30;:::i;:::-;18417:41;;18607:1;18598:7;18594:15;18591:1;18588:22;18568:1;18561:9;18541:83;18518:139;;18637:18;;:::i;:::-;18518:139;18302:362;18254:410;;;;:::o;18670:179::-;18810:31;18806:1;18798:6;18794:14;18787:55;18670:179;:::o;18855:366::-;18997:3;19018:67;19082:2;19077:3;19018:67;:::i;:::-;19011:74;;19094:93;19183:3;19094:93;:::i;:::-;19212:2;19207:3;19203:12;19196:19;;18855:366;;;:::o;19227:419::-;19393:4;19431:2;19420:9;19416:18;19408:26;;19480:9;19474:4;19470:20;19466:1;19455:9;19451:17;19444:47;19508:131;19634:4;19508:131;:::i;:::-;19500:139;;19227:419;;;:::o;19652:176::-;19792:28;19788:1;19780:6;19776:14;19769:52;19652:176;:::o;19834:366::-;19976:3;19997:67;20061:2;20056:3;19997:67;:::i;:::-;19990:74;;20073:93;20162:3;20073:93;:::i;:::-;20191:2;20186:3;20182:12;20175:19;;19834:366;;;:::o;20206:419::-;20372:4;20410:2;20399:9;20395:18;20387:26;;20459:9;20453:4;20449:20;20445:1;20434:9;20430:17;20423:47;20487:131;20613:4;20487:131;:::i;:::-;20479:139;;20206:419;;;:::o;20631:332::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20803:71;20871:1;20860:9;20856:17;20847:6;20803:71;:::i;:::-;20884:72;20952:2;20941:9;20937:18;20928:6;20884:72;:::i;:::-;20631:332;;;;;:::o;20969:137::-;21023:5;21054:6;21048:13;21039:22;;21070:30;21094:5;21070:30;:::i;:::-;20969:137;;;;:::o;21112:345::-;21179:6;21228:2;21216:9;21207:7;21203:23;21199:32;21196:119;;;21234:79;;:::i;:::-;21196:119;21354:1;21379:61;21432:7;21423:6;21412:9;21408:22;21379:61;:::i;:::-;21369:71;;21325:125;21112:345;;;;:::o;21463:224::-;21603:34;21599:1;21591:6;21587:14;21580:58;21672:7;21667:2;21659:6;21655:15;21648:32;21463:224;:::o;21693:366::-;21835:3;21856:67;21920:2;21915:3;21856:67;:::i;:::-;21849:74;;21932:93;22021:3;21932:93;:::i;:::-;22050:2;22045:3;22041:12;22034:19;;21693:366;;;:::o;22065:419::-;22231:4;22269:2;22258:9;22254:18;22246:26;;22318:9;22312:4;22308:20;22304:1;22293:9;22289:17;22282:47;22346:131;22472:4;22346:131;:::i;:::-;22338:139;;22065:419;;;:::o;22490:224::-;22630:34;22626:1;22618:6;22614:14;22607:58;22699:7;22694:2;22686:6;22682:15;22675:32;22490:224;:::o;22720:366::-;22862:3;22883:67;22947:2;22942:3;22883:67;:::i;:::-;22876:74;;22959:93;23048:3;22959:93;:::i;:::-;23077:2;23072:3;23068:12;23061:19;;22720:366;;;:::o;23092:419::-;23258:4;23296:2;23285:9;23281:18;23273:26;;23345:9;23339:4;23335:20;23331:1;23320:9;23316:17;23309:47;23373:131;23499:4;23373:131;:::i;:::-;23365:139;;23092:419;;;:::o;23517:178::-;23657:30;23653:1;23645:6;23641:14;23634:54;23517:178;:::o;23701:366::-;23843:3;23864:67;23928:2;23923:3;23864:67;:::i;:::-;23857:74;;23940:93;24029:3;23940:93;:::i;:::-;24058:2;24053:3;24049:12;24042:19;;23701:366;;;:::o;24073:419::-;24239:4;24277:2;24266:9;24262:18;24254:26;;24326:9;24320:4;24316:20;24312:1;24301:9;24297:17;24290:47;24354:131;24480:4;24354:131;:::i;:::-;24346:139;;24073:419;;;:::o;24498:225::-;24638:34;24634:1;24626:6;24622:14;24615:58;24707:8;24702:2;24694:6;24690:15;24683:33;24498:225;:::o;24729:366::-;24871:3;24892:67;24956:2;24951:3;24892:67;:::i;:::-;24885:74;;24968:93;25057:3;24968:93;:::i;:::-;25086:2;25081:3;25077:12;25070:19;;24729:366;;;:::o;25101:419::-;25267:4;25305:2;25294:9;25290:18;25282:26;;25354:9;25348:4;25344:20;25340:1;25329:9;25325:17;25318:47;25382:131;25508:4;25382:131;:::i;:::-;25374:139;;25101:419;;;:::o;25526:223::-;25666:34;25662:1;25654:6;25650:14;25643:58;25735:6;25730:2;25722:6;25718:15;25711:31;25526:223;:::o;25755:366::-;25897:3;25918:67;25982:2;25977:3;25918:67;:::i;:::-;25911:74;;25994:93;26083:3;25994:93;:::i;:::-;26112:2;26107:3;26103:12;26096:19;;25755:366;;;:::o;26127:419::-;26293:4;26331:2;26320:9;26316:18;26308:26;;26380:9;26374:4;26370:20;26366:1;26355:9;26351:17;26344:47;26408:131;26534:4;26408:131;:::i;:::-;26400:139;;26127:419;;;:::o;26552:221::-;26692:34;26688:1;26680:6;26676:14;26669:58;26761:4;26756:2;26748:6;26744:15;26737:29;26552:221;:::o;26779:366::-;26921:3;26942:67;27006:2;27001:3;26942:67;:::i;:::-;26935:74;;27018:93;27107:3;27018:93;:::i;:::-;27136:2;27131:3;27127:12;27120:19;;26779:366;;;:::o;27151:419::-;27317:4;27355:2;27344:9;27340:18;27332:26;;27404:9;27398:4;27394:20;27390:1;27379:9;27375:17;27368:47;27432:131;27558:4;27432:131;:::i;:::-;27424:139;;27151:419;;;:::o;27576:228::-;27716:34;27712:1;27704:6;27700:14;27693:58;27785:11;27780:2;27772:6;27768:15;27761:36;27576:228;:::o;27810:366::-;27952:3;27973:67;28037:2;28032:3;27973:67;:::i;:::-;27966:74;;28049:93;28138:3;28049:93;:::i;:::-;28167:2;28162:3;28158:12;28151:19;;27810:366;;;:::o;28182:419::-;28348:4;28386:2;28375:9;28371:18;28363:26;;28435:9;28429:4;28425:20;28421:1;28410:9;28406:17;28399:47;28463:131;28589:4;28463:131;:::i;:::-;28455:139;;28182:419;;;:::o;28607:169::-;28747:21;28743:1;28735:6;28731:14;28724:45;28607:169;:::o;28782:366::-;28924:3;28945:67;29009:2;29004:3;28945:67;:::i;:::-;28938:74;;29021:93;29110:3;29021:93;:::i;:::-;29139:2;29134:3;29130:12;29123:19;;28782:366;;;:::o;29154:419::-;29320:4;29358:2;29347:9;29343:18;29335:26;;29407:9;29401:4;29397:20;29393:1;29382:9;29378:17;29371:47;29435:131;29561:4;29435:131;:::i;:::-;29427:139;;29154:419;;;:::o;29579:180::-;29627:77;29624:1;29617:88;29724:4;29721:1;29714:15;29748:4;29745:1;29738:15;29765:185;29805:1;29822:20;29840:1;29822:20;:::i;:::-;29817:25;;29856:20;29874:1;29856:20;:::i;:::-;29851:25;;29895:1;29885:35;;29900:18;;:::i;:::-;29885:35;29942:1;29939;29935:9;29930:14;;29765:185;;;;:::o;29956:224::-;30096:34;30092:1;30084:6;30080:14;30073:58;30165:7;30160:2;30152:6;30148:15;30141:32;29956:224;:::o;30186:366::-;30328:3;30349:67;30413:2;30408:3;30349:67;:::i;:::-;30342:74;;30425:93;30514:3;30425:93;:::i;:::-;30543:2;30538:3;30534:12;30527:19;;30186:366;;;:::o;30558:419::-;30724:4;30762:2;30751:9;30747:18;30739:26;;30811:9;30805:4;30801:20;30797:1;30786:9;30782:17;30775:47;30839:131;30965:4;30839:131;:::i;:::-;30831:139;;30558:419;;;:::o;30983:222::-;31123:34;31119:1;31111:6;31107:14;31100:58;31192:5;31187:2;31179:6;31175:15;31168:30;30983:222;:::o;31211:366::-;31353:3;31374:67;31438:2;31433:3;31374:67;:::i;:::-;31367:74;;31450:93;31539:3;31450:93;:::i;:::-;31568:2;31563:3;31559:12;31552:19;;31211:366;;;:::o;31583:419::-;31749:4;31787:2;31776:9;31772:18;31764:26;;31836:9;31830:4;31826:20;31822:1;31811:9;31807:17;31800:47;31864:131;31990:4;31864:131;:::i;:::-;31856:139;;31583:419;;;:::o;32008:225::-;32148:34;32144:1;32136:6;32132:14;32125:58;32217:8;32212:2;32204:6;32200:15;32193:33;32008:225;:::o;32239:366::-;32381:3;32402:67;32466:2;32461:3;32402:67;:::i;:::-;32395:74;;32478:93;32567:3;32478:93;:::i;:::-;32596:2;32591:3;32587:12;32580:19;;32239:366;;;:::o;32611:419::-;32777:4;32815:2;32804:9;32800:18;32792:26;;32864:9;32858:4;32854:20;32850:1;32839:9;32835:17;32828:47;32892:131;33018:4;32892:131;:::i;:::-;32884:139;;32611:419;;;:::o;33036:143::-;33093:5;33124:6;33118:13;33109:22;;33140:33;33167:5;33140:33;:::i;:::-;33036:143;;;;:::o;33185:351::-;33255:6;33304:2;33292:9;33283:7;33279:23;33275:32;33272:119;;;33310:79;;:::i;:::-;33272:119;33430:1;33455:64;33511:7;33502:6;33491:9;33487:22;33455:64;:::i;:::-;33445:74;;33401:128;33185:351;;;;:::o;33542:85::-;33587:7;33616:5;33605:16;;33542:85;;;:::o;33633:158::-;33691:9;33724:61;33742:42;33751:32;33777:5;33751:32;:::i;:::-;33742:42;:::i;:::-;33724:61;:::i;:::-;33711:74;;33633:158;;;:::o;33797:147::-;33892:45;33931:5;33892:45;:::i;:::-;33887:3;33880:58;33797:147;;:::o;33950:114::-;34017:6;34051:5;34045:12;34035:22;;33950:114;;;:::o;34070:184::-;34169:11;34203:6;34198:3;34191:19;34243:4;34238:3;34234:14;34219:29;;34070:184;;;;:::o;34260:132::-;34327:4;34350:3;34342:11;;34380:4;34375:3;34371:14;34363:22;;34260:132;;;:::o;34398:108::-;34475:24;34493:5;34475:24;:::i;:::-;34470:3;34463:37;34398:108;;:::o;34512:179::-;34581:10;34602:46;34644:3;34636:6;34602:46;:::i;:::-;34680:4;34675:3;34671:14;34657:28;;34512:179;;;;:::o;34697:113::-;34767:4;34799;34794:3;34790:14;34782:22;;34697:113;;;:::o;34846:732::-;34965:3;34994:54;35042:5;34994:54;:::i;:::-;35064:86;35143:6;35138:3;35064:86;:::i;:::-;35057:93;;35174:56;35224:5;35174:56;:::i;:::-;35253:7;35284:1;35269:284;35294:6;35291:1;35288:13;35269:284;;;35370:6;35364:13;35397:63;35456:3;35441:13;35397:63;:::i;:::-;35390:70;;35483:60;35536:6;35483:60;:::i;:::-;35473:70;;35329:224;35316:1;35313;35309:9;35304:14;;35269:284;;;35273:14;35569:3;35562:10;;34970:608;;;34846:732;;;;:::o;35584:831::-;35847:4;35885:3;35874:9;35870:19;35862:27;;35899:71;35967:1;35956:9;35952:17;35943:6;35899:71;:::i;:::-;35980:80;36056:2;36045:9;36041:18;36032:6;35980:80;:::i;:::-;36107:9;36101:4;36097:20;36092:2;36081:9;36077:18;36070:48;36135:108;36238:4;36229:6;36135:108;:::i;:::-;36127:116;;36253:72;36321:2;36310:9;36306:18;36297:6;36253:72;:::i;:::-;36335:73;36403:3;36392:9;36388:19;36379:6;36335:73;:::i;:::-;35584:831;;;;;;;;:::o;36421:807::-;36670:4;36708:3;36697:9;36693:19;36685:27;;36722:71;36790:1;36779:9;36775:17;36766:6;36722:71;:::i;:::-;36803:72;36871:2;36860:9;36856:18;36847:6;36803:72;:::i;:::-;36885:80;36961:2;36950:9;36946:18;36937:6;36885:80;:::i;:::-;36975;37051:2;37040:9;37036:18;37027:6;36975:80;:::i;:::-;37065:73;37133:3;37122:9;37118:19;37109:6;37065:73;:::i;:::-;37148;37216:3;37205:9;37201:19;37192:6;37148:73;:::i;:::-;36421:807;;;;;;;;;:::o;37234:143::-;37291:5;37322:6;37316:13;37307:22;;37338:33;37365:5;37338:33;:::i;:::-;37234:143;;;;:::o;37383:663::-;37471:6;37479;37487;37536:2;37524:9;37515:7;37511:23;37507:32;37504:119;;;37542:79;;:::i;:::-;37504:119;37662:1;37687:64;37743:7;37734:6;37723:9;37719:22;37687:64;:::i;:::-;37677:74;;37633:128;37800:2;37826:64;37882:7;37873:6;37862:9;37858:22;37826:64;:::i;:::-;37816:74;;37771:129;37939:2;37965:64;38021:7;38012:6;38001:9;37997:22;37965:64;:::i;:::-;37955:74;;37910:129;37383:663;;;;;:::o;38052:179::-;38192:31;38188:1;38180:6;38176:14;38169:55;38052:179;:::o;38237:366::-;38379:3;38400:67;38464:2;38459:3;38400:67;:::i;:::-;38393:74;;38476:93;38565:3;38476:93;:::i;:::-;38594:2;38589:3;38585:12;38578:19;;38237:366;;;:::o;38609:419::-;38775:4;38813:2;38802:9;38798:18;38790:26;;38862:9;38856:4;38852:20;38848:1;38837:9;38833:17;38826:47;38890:131;39016:4;38890:131;:::i;:::-;38882:139;;38609:419;;;:::o;39034:147::-;39135:11;39172:3;39157:18;;39034:147;;;;:::o;39187:114::-;;:::o;39307:398::-;39466:3;39487:83;39568:1;39563:3;39487:83;:::i;:::-;39480:90;;39579:93;39668:3;39579:93;:::i;:::-;39697:1;39692:3;39688:11;39681:18;;39307:398;;;:::o;39711:379::-;39895:3;39917:147;40060:3;39917:147;:::i;:::-;39910:154;;40081:3;40074:10;;39711:379;;;:::o;40096:245::-;40236:34;40232:1;40224:6;40220:14;40213:58;40305:28;40300:2;40292:6;40288:15;40281:53;40096:245;:::o;40347:366::-;40489:3;40510:67;40574:2;40569:3;40510:67;:::i;:::-;40503:74;;40586:93;40675:3;40586:93;:::i;:::-;40704:2;40699:3;40695:12;40688:19;;40347:366;;;:::o;40719:419::-;40885:4;40923:2;40912:9;40908:18;40900:26;;40972:9;40966:4;40962:20;40958:1;40947:9;40943:17;40936:47;41000:131;41126:4;41000:131;:::i;:::-;40992:139;;40719:419;;;:::o

Swarm Source

ipfs://62c7bc63608cd434387d6c7bae4dece2bdfc59d7d8167809f832c22a4ff049b7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.