ETH Price: $3,678.49 (+1.06%)
 

Overview

Max Total Supply

100,000,000 DogNobi

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
25,982.783138866539026191 DogNobi

Value
$0.00
0xa503fc64b508a805c33bbf0b1e90b7cdeaa4c26d
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:
DogNobi

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.15;

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

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

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

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool public providingLiquidity = true;
    bool public tradingEnabled = true;

    uint256 public tokenLiquidityThreshold = 10_000 * 10**18;
    uint256 public maxBuyLimit = 3_000_000 * 10**18;
    uint256 public maxSellLimit = 1_000_000 * 10**18;
    uint256 public maxWalletLimit = 3_000_000 * 10**18;

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

    address public marketingWallet = 0x92b6BFF6f991a0864f6e22C4f1aC66A756345E23;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(99, 0);
    Taxes public sellTaxes = Taxes(99, 0);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public sniperBots;

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 0 seconds;

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("Dog Nobi", "DogNobi") {
        _tokengeneration(msg.sender, 100_000_000 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pancake 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[deadWallet] = true;

    }

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

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

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

        return true;
    }

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

    function 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");
        require(!sniperBots[sender] && !sniperBots[recipient], "Snipers not allowed!");

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

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

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }

        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 (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing;
            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) Liquify(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 Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

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

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

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

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

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake 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
            deadWallet,
            block.timestamp
        );
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 100_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

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

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

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

    function _openTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function _toggleTrading(bool status) external onlyOwner {
        tradingEnabled = status;
    }

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

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 300, "cooldown timer cannot exceed 5 minutes");
    }

    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 bulkAddSnipers(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            sniperBots[accounts[i]] = state;
        }
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 3_000_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 3_000_000, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

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

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        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"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"_toggleTrading","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":"bulkAddSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"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":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","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":[],"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"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sniperBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}],"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":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","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"}]

6007805461010160a81b62ffffff60a01b1990911617905569021e19e0c9bab24000006008556a027b46536c66c8e3000000600981905569d3c21bcecceda1000000600a55600b556003600d556063600e819055600f80546001600160a01b0319167392b6bff6f991a0864f6e22c4f1ac66a756345e231790556080819052600060a08190526010829055601181905561010060405260c082905260e081905260129190915560138190556017805460ff19169055601855348015620000c457600080fd5b5060405180604001604052806008815260200167446f67204e6f626960c01b81525060405180604001604052806007815260200166446f674e6f626960c81b8152508160039081620001179190620004cc565b506004620001268282620004cc565b505050620001436200013d6200037d60201b60201c565b62000381565b6200016c33620001566012600a620006ad565b62000166906305f5e100620006c5565b620003d3565b336000908152601460209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd9190620006e7565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002719190620006e7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620006e7565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260146020526040808220805460ff199081166001908117909255600f549094168352908220805484168217905561dead9091527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db00805490921617905562000712565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200045257607f821691505b6020821081036200047357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004c757600081815260208120601f850160051c81016020861015620004a25750805b601f850160051c820191505b81811015620004c357828155600101620004ae565b5050505b505050565b81516001600160401b03811115620004e857620004e862000427565b6200050081620004f984546200043d565b8462000479565b602080601f8311600181146200053857600084156200051f5750858301515b600019600386901b1c1916600185901b178555620004c3565b600085815260208120601f198616915b82811015620005695788860151825594840194600190910190840162000548565b5085821015620005885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005ef578160001904821115620005d357620005d362000598565b80851615620005e157918102915b93841c9390800290620005b3565b509250929050565b6000826200060857506001620006a7565b816200061757506000620006a7565b81600181146200063057600281146200063b576200065b565b6001915050620006a7565b60ff8411156200064f576200064f62000598565b50506001821b620006a7565b5060208310610133831016604e8410600b841016171562000680575081810a620006a7565b6200068c8383620005ae565b8060001904821115620006a357620006a362000598565b0290505b92915050565b6000620006be60ff841683620005f7565b9392505050565b6000816000190483118215151615620006e257620006e262000598565b500290565b600060208284031215620006fa57600080fd5b81516001600160a01b0381168114620006be57600080fd5b612aae80620007226000396000f3fe60806040526004361061028c5760003560e01c8063728f8eea1161015a578063d2ce0db2116100c1578063f2fde38b1161007a578063f2fde38b146107ea578063f52be97c1461080a578063f64534a71461082a578063f66895a31461084a578063f887ea4014610865578063fbe6324e1461088557600080fd5b8063d2ce0db214610714578063dd62ed3e1461072a578063e1b450ad14610770578063e517f2b914610790578063edaa1168146107b0578063ee36e359146107d057600080fd5b8063a457c2d711610113578063a457c2d714610644578063a8aa1b3114610664578063a9059cbb14610684578063aacebbe3146106a4578063c5d32bb2146106c4578063ca697d8f146106f457600080fd5b8063728f8eea1461057357806375f0a874146105a357806385141a77146105db5780638cd4426d146105f15780638da5cb5b1461061157806395d89b411461062f57600080fd5b8063355496ca116101fe5780635d534576116101b75780635d534576146104b6578063652e2f04146104e657806366a88d96146104fc5780636aa5b37f1461051257806370a0823114610528578063715018a61461055e57600080fd5b8063355496ca146103f5578063395093511461041557806340b28c2f1461043557806342b6fa1114610455578063441b1d30146104755780634ada218b1461049557600080fd5b80631675d802116102505780631675d8021461035557806318160ddd146103795780631c1702f31461038e57806323b872dd146103a3578063274a533c146103c3578063313ce567146103d957600080fd5b8063012ab8cb1461029857806306fdde03146102ba578063095ea7b3146102e55780630e375a5c146103155780631340538f1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b336600461248c565b6108a6565b005b3480156102c657600080fd5b506102cf6108f7565b6040516102dc91906124b0565b60405180910390f35b3480156102f157600080fd5b50610305610300366004612525565b610989565b60405190151581526020016102dc565b34801561032157600080fd5b506102b8610330366004612567565b6109a0565b34801561034157600080fd5b506102b861035036600461248c565b610a36565b34801561036157600080fd5b5061036b60085481565b6040519081526020016102dc565b34801561038557600080fd5b5060025461036b565b34801561039a57600080fd5b506102b8610a7e565b3480156103af57600080fd5b506103056103be36600461263e565b610b1d565b3480156103cf57600080fd5b5061036b600c5481565b3480156103e557600080fd5b50604051601281526020016102dc565b34801561040157600080fd5b506102b861041036600461267f565b610bce565b34801561042157600080fd5b50610305610430366004612525565b610c23565b34801561044157600080fd5b506102b86104503660046126b8565b610c5a565b34801561046157600080fd5b506102b86104703660046126e6565b610cb2565b34801561048157600080fd5b506102b86104903660046126e6565b610d7d565b3480156104a157600080fd5b5060075461030590600160b01b900460ff1681565b3480156104c257600080fd5b506103056104d13660046126ff565b60156020526000908152604090205460ff1681565b3480156104f257600080fd5b5061036b600a5481565b34801561050857600080fd5b5061036b600b5481565b34801561051e57600080fd5b5061036b60095481565b34801561053457600080fd5b5061036b6105433660046126ff565b6001600160a01b031660009081526020819052604090205490565b34801561056a57600080fd5b506102b8610de5565b34801561057f57600080fd5b5060105460115461058e919082565b604080519283526020830191909152016102dc565b3480156105af57600080fd5b50600f546105c3906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b3480156105e757600080fd5b506105c361dead81565b3480156105fd57600080fd5b506102b861060c366004612525565b610e1b565b34801561061d57600080fd5b506005546001600160a01b03166105c3565b34801561063b57600080fd5b506102cf610f4e565b34801561065057600080fd5b5061030561065f366004612525565b610f5d565b34801561067057600080fd5b506007546105c3906001600160a01b031681565b34801561069057600080fd5b5061030561069f366004612525565b610ff8565b3480156106b057600080fd5b506102b86106bf3660046126ff565b611005565b3480156106d057600080fd5b506103056106df3660046126ff565b60146020526000908152604090205460ff1681565b34801561070057600080fd5b506102b861070f366004612567565b6110b2565b34801561072057600080fd5b5061036b60185481565b34801561073657600080fd5b5061036b6107453660046126b8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077c57600080fd5b506102b861078b36600461271c565b611143565b34801561079c57600080fd5b506102b86107ab366004612748565b6112ef565b3480156107bc57600080fd5b506102b86107cb3660046126e6565b611396565b3480156107dc57600080fd5b506017546103059060ff1681565b3480156107f657600080fd5b506102b86108053660046126ff565b61148b565b34801561081657600080fd5b506102b8610825366004612766565b611526565b34801561083657600080fd5b506102b8610845366004612766565b6115c7565b34801561085657600080fd5b5060125460135461058e919082565b34801561087157600080fd5b506006546105c3906001600160a01b031681565b34801561089157600080fd5b5060075461030590600160a81b900460ff1681565b6005546001600160a01b031633146108d95760405162461bcd60e51b81526004016108d090612788565b60405180910390fd5b60078054911515600160b01b0260ff60b01b19909216919091179055565b606060038054610906906127bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610932906127bd565b801561097f5780601f106109545761010080835404028352916020019161097f565b820191906000526020600020905b81548152906001019060200180831161096257829003601f168201915b5050505050905090565b600061099633848461161a565b5060015b92915050565b6005546001600160a01b031633146109ca5760405162461bcd60e51b81526004016108d090612788565b60005b8251811015610a315781601460008584815181106109ed576109ed6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a2981612823565b9150506109cd565b505050565b6005546001600160a01b03163314610a605760405162461bcd60e51b81526004016108d090612788565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aa85760405162461bcd60e51b81526004016108d090612788565b600754600160b01b900460ff1615610b025760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d0565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610b2a84848461173e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d0565b610bc38533610bbe868561283c565b61161a565b506001949350505050565b6005546001600160a01b03163314610bf85760405162461bcd60e51b81526004016108d090612788565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610996918590610bbe908690612853565b6005546001600160a01b03163314610c845760405162461bcd60e51b81526004016108d090612788565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610cdc5760405162461bcd60e51b81526004016108d090612788565b620186a08111158015610cef5750600081115b610d615760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d0565b610d6d6012600a61294f565b610d77908261295e565b60085550565b6005546001600160a01b03163314610da75760405162461bcd60e51b81526004016108d090612788565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610de1573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016108d090612788565b610e196000611de2565b565b6005546001600160a01b03163314610e455760405162461bcd60e51b81526004016108d090612788565b306001600160a01b03831603610ebc5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d0565b816001600160a01b031663a9059cbb610edd6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a31919061297d565b606060048054610906906127bd565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fdf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d0565b610fee3385610bbe868561283c565b5060019392505050565b600061099633848461173e565b6005546001600160a01b0316331461102f5760405162461bcd60e51b81526004016108d090612788565b6001600160a01b0381166110905760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108d0565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108d090612788565b60005b8251811015610a315781601560008584815181106110ff576110ff6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061113b81612823565b9150506110df565b6005546001600160a01b0316331461116d5760405162461bcd60e51b81526004016108d090612788565b622dc6c08310156111d25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d0565b620f42408210156112385760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d0565b622dc6c081101561129e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d0565b6112aa6012600a61294f565b6112b4908461295e565b6009556112c36012600a61294f565b6112cd908361295e565b600a5560126112dd90600a61294f565b6112e7908261295e565b600b55505050565b6005546001600160a01b031633146113195760405162461bcd60e51b81526004016108d090612788565b61132481600161295e565b6018556017805460ff191683151517905561012c811115610de15760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016108d0565b6005546001600160a01b031633146113c05760405162461bcd60e51b81526004016108d090612788565b600754600160b01b900460ff16156114285760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108d0565b600a81106114865760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016108d0565b600d55565b6005546001600160a01b031633146114b55760405162461bcd60e51b81526004016108d090612788565b6001600160a01b03811661151a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d0565b61152381611de2565b50565b6005546001600160a01b031633146115505760405162461bcd60e51b81526004016108d090612788565b604080518082019091528281526020018190526012829055601381905560636115798284612853565b1115610de15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c65737300000060448201526064016108d0565b6005546001600160a01b031633146115f15760405162461bcd60e51b81526004016108d090612788565b604080518082019091528281526020018190526010829055601181905560636115798284612853565b6001600160a01b03831661167c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d0565b6001600160a01b0382166116dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d0565b6001600160a01b03831660009081526015602052604090205460ff161580156117e257506001600160a01b03821660009081526015602052604090205460ff16155b6118255760405162461bcd60e51b8152602060048201526014602482015273536e6970657273206e6f7420616c6c6f7765642160601b60448201526064016108d0565b6001600160a01b03831660009081526014602052604090205460ff1615801561186757506001600160a01b03821660009081526014602052604090205460ff16155b156118bb57600754600160b01b900460ff166118bb5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d0565b6007546001600160a01b0384811691161480156118f157506001600160a01b03821660009081526014602052604090205460ff16155b80156119075750600754600160a01b900460ff16155b156119d95760095481111561195e5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d0565b600b5481611981846001600160a01b031660009081526020819052604090205490565b61198b9190612853565b11156119d95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d0565b6007546001600160a01b03848116911614801590611a1057506001600160a01b03821660009081526014602052604090205460ff16155b8015611a3557506001600160a01b03831660009081526014602052604090205460ff16155b8015611a4b5750600754600160a01b900460ff16155b15611bc457600a54811115611aa25760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d0565b6007546001600160a01b03838116911614611b3257600b5481611ada846001600160a01b031660009081526020819052604090205490565b611ae49190612853565b1115611b325760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d0565b60175460ff1615611bc4576001600160a01b038316600090815260166020526040812054611b60904261283c565b9050601854811015611ba75760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016108d0565b506001600160a01b03831660009081526016602052604090204290555b6000806000611be6604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff16158015611c2857506001600160a01b03871660009081526014602052604090205460ff16155b8015611c425750600d54600c54611c3f9190612853565b43105b600754909150600160a01b900460ff1680611c7557506001600160a01b03881660009081526014602052604090205460ff165b80611c9857506001600160a01b03871660009081526014602052604090205460ff165b15611ca65760009250611d42565b6007546001600160a01b038881169116148015611cc1575080155b15611cfa57601254601354611cd69190612853565b60408051808201909152601254815260135460208201529095508594509150611d42565b80611d3357601054601154611d0f9190612853565b60408051808201909152601054815260115460208201529095508594509150611d42565b8015611d4257600e5494508493505b6064611d4e858861295e565b611d58919061299a565b600754909350600160a81b900460ff168015611d8257506007546001600160a01b03898116911614155b15611d9157611d918583611e34565b611da58888611da0868a61283c565b611f71565b8215611dd8578415611dd85760006064611dbf878961295e565b611dc9919061299a565b9050611dd6893083611f71565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610de1576007805460ff60a01b1916600160a01b1790558115611f6057306000908152602081905260409020546008548110611f5e5760016008541115611e8757506008545b6000611e9484600261295e565b9050600081846020015184611ea9919061295e565b611eb3919061299a565b90506000611ec1828561283c565b905047611ecd82612149565b6000611ed9824761283c565b90506000876020015186611eed919061283c565b611ef7908361299a565b90506000886020015182611f0b919061295e565b90508015611f1d57611f1d86826122a3565b8851600090611f2d84600261295e565b611f37919061295e565b90508015611f5557600f54611f55906001600160a01b031682612355565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611fd55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d0565b6001600160a01b0382166120375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d0565b6001600160a01b038316600090815260208190526040902054818110156120af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d0565b6120b9828261283c565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906120ef908490612853565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161213b91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061217e5761217e6127f7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fb91906129bc565b8160018151811061220e5761220e6127f7565b6001600160a01b039283166020918202929092010152600654612234913091168461161a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061226d9085906000908690309042906004016129d9565b600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b505050505050565b6006546122bb9030906001600160a01b03168461161a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e9190612a4a565b5050505050565b804710156123a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d0565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123f2576040519150601f19603f3d011682016040523d82523d6000602084013e6123f7565b606091505b5050905080610a315760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d0565b801515811461152357600080fd5b80356124878161246e565b919050565b60006020828403121561249e57600080fd5b81356124a98161246e565b9392505050565b600060208083528351808285015260005b818110156124dd578581018301518582016040015282016124c1565b818111156124ef576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461152357600080fd5b803561248781612505565b6000806040838503121561253857600080fd5b823561254381612505565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561257a57600080fd5b823567ffffffffffffffff8082111561259257600080fd5b818501915085601f8301126125a657600080fd5b81356020828211156125ba576125ba612551565b8160051b604051601f19603f830116810181811086821117156125df576125df612551565b6040529283528183019350848101820192898411156125fd57600080fd5b948201945b83861015612622576126138661251a565b85529482019493820193612602565b9650612631905087820161247c565b9450505050509250929050565b60008060006060848603121561265357600080fd5b833561265e81612505565b9250602084013561266e81612505565b929592945050506040919091013590565b6000806040838503121561269257600080fd5b823561269d81612505565b915060208301356126ad8161246e565b809150509250929050565b600080604083850312156126cb57600080fd5b82356126d681612505565b915060208301356126ad81612505565b6000602082840312156126f857600080fd5b5035919050565b60006020828403121561271157600080fd5b81356124a981612505565b60008060006060848603121561273157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275b57600080fd5b82356125438161246e565b6000806040838503121561277957600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806127d157607f821691505b6020821081036127f157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016128355761283561280d565b5060010190565b60008282101561284e5761284e61280d565b500390565b600082198211156128665761286661280d565b500190565b600181815b808511156128a657816000190482111561288c5761288c61280d565b8085161561289957918102915b93841c9390800290612870565b509250929050565b6000826128bd5750600161099a565b816128ca5750600061099a565b81600181146128e057600281146128ea57612906565b600191505061099a565b60ff8411156128fb576128fb61280d565b50506001821b61099a565b5060208310610133831016604e8410600b8410161715612929575081810a61099a565b612933838361286b565b80600019048211156129475761294761280d565b029392505050565b60006124a960ff8416836128ae565b60008160001904831182151516156129785761297861280d565b500290565b60006020828403121561298f57600080fd5b81516124a98161246e565b6000826129b757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129ce57600080fd5b81516124a981612505565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a295784516001600160a01b031683529383019391830191600101612a04565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a5f57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122089e5f3acdda6bb65536a0d5b66ef7f588f448954f573bbe9fef0157c0aee799964736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063728f8eea1161015a578063d2ce0db2116100c1578063f2fde38b1161007a578063f2fde38b146107ea578063f52be97c1461080a578063f64534a71461082a578063f66895a31461084a578063f887ea4014610865578063fbe6324e1461088557600080fd5b8063d2ce0db214610714578063dd62ed3e1461072a578063e1b450ad14610770578063e517f2b914610790578063edaa1168146107b0578063ee36e359146107d057600080fd5b8063a457c2d711610113578063a457c2d714610644578063a8aa1b3114610664578063a9059cbb14610684578063aacebbe3146106a4578063c5d32bb2146106c4578063ca697d8f146106f457600080fd5b8063728f8eea1461057357806375f0a874146105a357806385141a77146105db5780638cd4426d146105f15780638da5cb5b1461061157806395d89b411461062f57600080fd5b8063355496ca116101fe5780635d534576116101b75780635d534576146104b6578063652e2f04146104e657806366a88d96146104fc5780636aa5b37f1461051257806370a0823114610528578063715018a61461055e57600080fd5b8063355496ca146103f5578063395093511461041557806340b28c2f1461043557806342b6fa1114610455578063441b1d30146104755780634ada218b1461049557600080fd5b80631675d802116102505780631675d8021461035557806318160ddd146103795780631c1702f31461038e57806323b872dd146103a3578063274a533c146103c3578063313ce567146103d957600080fd5b8063012ab8cb1461029857806306fdde03146102ba578063095ea7b3146102e55780630e375a5c146103155780631340538f1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b336600461248c565b6108a6565b005b3480156102c657600080fd5b506102cf6108f7565b6040516102dc91906124b0565b60405180910390f35b3480156102f157600080fd5b50610305610300366004612525565b610989565b60405190151581526020016102dc565b34801561032157600080fd5b506102b8610330366004612567565b6109a0565b34801561034157600080fd5b506102b861035036600461248c565b610a36565b34801561036157600080fd5b5061036b60085481565b6040519081526020016102dc565b34801561038557600080fd5b5060025461036b565b34801561039a57600080fd5b506102b8610a7e565b3480156103af57600080fd5b506103056103be36600461263e565b610b1d565b3480156103cf57600080fd5b5061036b600c5481565b3480156103e557600080fd5b50604051601281526020016102dc565b34801561040157600080fd5b506102b861041036600461267f565b610bce565b34801561042157600080fd5b50610305610430366004612525565b610c23565b34801561044157600080fd5b506102b86104503660046126b8565b610c5a565b34801561046157600080fd5b506102b86104703660046126e6565b610cb2565b34801561048157600080fd5b506102b86104903660046126e6565b610d7d565b3480156104a157600080fd5b5060075461030590600160b01b900460ff1681565b3480156104c257600080fd5b506103056104d13660046126ff565b60156020526000908152604090205460ff1681565b3480156104f257600080fd5b5061036b600a5481565b34801561050857600080fd5b5061036b600b5481565b34801561051e57600080fd5b5061036b60095481565b34801561053457600080fd5b5061036b6105433660046126ff565b6001600160a01b031660009081526020819052604090205490565b34801561056a57600080fd5b506102b8610de5565b34801561057f57600080fd5b5060105460115461058e919082565b604080519283526020830191909152016102dc565b3480156105af57600080fd5b50600f546105c3906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b3480156105e757600080fd5b506105c361dead81565b3480156105fd57600080fd5b506102b861060c366004612525565b610e1b565b34801561061d57600080fd5b506005546001600160a01b03166105c3565b34801561063b57600080fd5b506102cf610f4e565b34801561065057600080fd5b5061030561065f366004612525565b610f5d565b34801561067057600080fd5b506007546105c3906001600160a01b031681565b34801561069057600080fd5b5061030561069f366004612525565b610ff8565b3480156106b057600080fd5b506102b86106bf3660046126ff565b611005565b3480156106d057600080fd5b506103056106df3660046126ff565b60146020526000908152604090205460ff1681565b34801561070057600080fd5b506102b861070f366004612567565b6110b2565b34801561072057600080fd5b5061036b60185481565b34801561073657600080fd5b5061036b6107453660046126b8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077c57600080fd5b506102b861078b36600461271c565b611143565b34801561079c57600080fd5b506102b86107ab366004612748565b6112ef565b3480156107bc57600080fd5b506102b86107cb3660046126e6565b611396565b3480156107dc57600080fd5b506017546103059060ff1681565b3480156107f657600080fd5b506102b86108053660046126ff565b61148b565b34801561081657600080fd5b506102b8610825366004612766565b611526565b34801561083657600080fd5b506102b8610845366004612766565b6115c7565b34801561085657600080fd5b5060125460135461058e919082565b34801561087157600080fd5b506006546105c3906001600160a01b031681565b34801561089157600080fd5b5060075461030590600160a81b900460ff1681565b6005546001600160a01b031633146108d95760405162461bcd60e51b81526004016108d090612788565b60405180910390fd5b60078054911515600160b01b0260ff60b01b19909216919091179055565b606060038054610906906127bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610932906127bd565b801561097f5780601f106109545761010080835404028352916020019161097f565b820191906000526020600020905b81548152906001019060200180831161096257829003601f168201915b5050505050905090565b600061099633848461161a565b5060015b92915050565b6005546001600160a01b031633146109ca5760405162461bcd60e51b81526004016108d090612788565b60005b8251811015610a315781601460008584815181106109ed576109ed6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a2981612823565b9150506109cd565b505050565b6005546001600160a01b03163314610a605760405162461bcd60e51b81526004016108d090612788565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aa85760405162461bcd60e51b81526004016108d090612788565b600754600160b01b900460ff1615610b025760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d0565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610b2a84848461173e565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d0565b610bc38533610bbe868561283c565b61161a565b506001949350505050565b6005546001600160a01b03163314610bf85760405162461bcd60e51b81526004016108d090612788565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610996918590610bbe908690612853565b6005546001600160a01b03163314610c845760405162461bcd60e51b81526004016108d090612788565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610cdc5760405162461bcd60e51b81526004016108d090612788565b620186a08111158015610cef5750600081115b610d615760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d0565b610d6d6012600a61294f565b610d77908261295e565b60085550565b6005546001600160a01b03163314610da75760405162461bcd60e51b81526004016108d090612788565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610de1573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016108d090612788565b610e196000611de2565b565b6005546001600160a01b03163314610e455760405162461bcd60e51b81526004016108d090612788565b306001600160a01b03831603610ebc5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d0565b816001600160a01b031663a9059cbb610edd6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a31919061297d565b606060048054610906906127bd565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fdf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d0565b610fee3385610bbe868561283c565b5060019392505050565b600061099633848461173e565b6005546001600160a01b0316331461102f5760405162461bcd60e51b81526004016108d090612788565b6001600160a01b0381166110905760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108d0565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110dc5760405162461bcd60e51b81526004016108d090612788565b60005b8251811015610a315781601560008584815181106110ff576110ff6127f7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061113b81612823565b9150506110df565b6005546001600160a01b0316331461116d5760405162461bcd60e51b81526004016108d090612788565b622dc6c08310156111d25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d0565b620f42408210156112385760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d0565b622dc6c081101561129e5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d0565b6112aa6012600a61294f565b6112b4908461295e565b6009556112c36012600a61294f565b6112cd908361295e565b600a5560126112dd90600a61294f565b6112e7908261295e565b600b55505050565b6005546001600160a01b031633146113195760405162461bcd60e51b81526004016108d090612788565b61132481600161295e565b6018556017805460ff191683151517905561012c811115610de15760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016108d0565b6005546001600160a01b031633146113c05760405162461bcd60e51b81526004016108d090612788565b600754600160b01b900460ff16156114285760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108d0565b600a81106114865760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016108d0565b600d55565b6005546001600160a01b031633146114b55760405162461bcd60e51b81526004016108d090612788565b6001600160a01b03811661151a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d0565b61152381611de2565b50565b6005546001600160a01b031633146115505760405162461bcd60e51b81526004016108d090612788565b604080518082019091528281526020018190526012829055601381905560636115798284612853565b1115610de15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c65737300000060448201526064016108d0565b6005546001600160a01b031633146115f15760405162461bcd60e51b81526004016108d090612788565b604080518082019091528281526020018190526010829055601181905560636115798284612853565b6001600160a01b03831661167c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d0565b6001600160a01b0382166116dd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116117a05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d0565b6001600160a01b03831660009081526015602052604090205460ff161580156117e257506001600160a01b03821660009081526015602052604090205460ff16155b6118255760405162461bcd60e51b8152602060048201526014602482015273536e6970657273206e6f7420616c6c6f7765642160601b60448201526064016108d0565b6001600160a01b03831660009081526014602052604090205460ff1615801561186757506001600160a01b03821660009081526014602052604090205460ff16155b156118bb57600754600160b01b900460ff166118bb5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d0565b6007546001600160a01b0384811691161480156118f157506001600160a01b03821660009081526014602052604090205460ff16155b80156119075750600754600160a01b900460ff16155b156119d95760095481111561195e5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d0565b600b5481611981846001600160a01b031660009081526020819052604090205490565b61198b9190612853565b11156119d95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d0565b6007546001600160a01b03848116911614801590611a1057506001600160a01b03821660009081526014602052604090205460ff16155b8015611a3557506001600160a01b03831660009081526014602052604090205460ff16155b8015611a4b5750600754600160a01b900460ff16155b15611bc457600a54811115611aa25760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d0565b6007546001600160a01b03838116911614611b3257600b5481611ada846001600160a01b031660009081526020819052604090205490565b611ae49190612853565b1115611b325760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d0565b60175460ff1615611bc4576001600160a01b038316600090815260166020526040812054611b60904261283c565b9050601854811015611ba75760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016108d0565b506001600160a01b03831660009081526016602052604090204290555b6000806000611be6604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff16158015611c2857506001600160a01b03871660009081526014602052604090205460ff16155b8015611c425750600d54600c54611c3f9190612853565b43105b600754909150600160a01b900460ff1680611c7557506001600160a01b03881660009081526014602052604090205460ff165b80611c9857506001600160a01b03871660009081526014602052604090205460ff165b15611ca65760009250611d42565b6007546001600160a01b038881169116148015611cc1575080155b15611cfa57601254601354611cd69190612853565b60408051808201909152601254815260135460208201529095508594509150611d42565b80611d3357601054601154611d0f9190612853565b60408051808201909152601054815260115460208201529095508594509150611d42565b8015611d4257600e5494508493505b6064611d4e858861295e565b611d58919061299a565b600754909350600160a81b900460ff168015611d8257506007546001600160a01b03898116911614155b15611d9157611d918583611e34565b611da58888611da0868a61283c565b611f71565b8215611dd8578415611dd85760006064611dbf878961295e565b611dc9919061299a565b9050611dd6893083611f71565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610de1576007805460ff60a01b1916600160a01b1790558115611f6057306000908152602081905260409020546008548110611f5e5760016008541115611e8757506008545b6000611e9484600261295e565b9050600081846020015184611ea9919061295e565b611eb3919061299a565b90506000611ec1828561283c565b905047611ecd82612149565b6000611ed9824761283c565b90506000876020015186611eed919061283c565b611ef7908361299a565b90506000886020015182611f0b919061295e565b90508015611f1d57611f1d86826122a3565b8851600090611f2d84600261295e565b611f37919061295e565b90508015611f5557600f54611f55906001600160a01b031682612355565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611fd55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d0565b6001600160a01b0382166120375760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d0565b6001600160a01b038316600090815260208190526040902054818110156120af5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d0565b6120b9828261283c565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906120ef908490612853565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161213b91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061217e5761217e6127f7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156121d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fb91906129bc565b8160018151811061220e5761220e6127f7565b6001600160a01b039283166020918202929092010152600654612234913091168461161a565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061226d9085906000908690309042906004016129d9565b600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b505050505050565b6006546122bb9030906001600160a01b03168461161a565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612329573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234e9190612a4a565b5050505050565b804710156123a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d0565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123f2576040519150601f19603f3d011682016040523d82523d6000602084013e6123f7565b606091505b5050905080610a315760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d0565b801515811461152357600080fd5b80356124878161246e565b919050565b60006020828403121561249e57600080fd5b81356124a98161246e565b9392505050565b600060208083528351808285015260005b818110156124dd578581018301518582016040015282016124c1565b818111156124ef576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461152357600080fd5b803561248781612505565b6000806040838503121561253857600080fd5b823561254381612505565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561257a57600080fd5b823567ffffffffffffffff8082111561259257600080fd5b818501915085601f8301126125a657600080fd5b81356020828211156125ba576125ba612551565b8160051b604051601f19603f830116810181811086821117156125df576125df612551565b6040529283528183019350848101820192898411156125fd57600080fd5b948201945b83861015612622576126138661251a565b85529482019493820193612602565b9650612631905087820161247c565b9450505050509250929050565b60008060006060848603121561265357600080fd5b833561265e81612505565b9250602084013561266e81612505565b929592945050506040919091013590565b6000806040838503121561269257600080fd5b823561269d81612505565b915060208301356126ad8161246e565b809150509250929050565b600080604083850312156126cb57600080fd5b82356126d681612505565b915060208301356126ad81612505565b6000602082840312156126f857600080fd5b5035919050565b60006020828403121561271157600080fd5b81356124a981612505565b60008060006060848603121561273157600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275b57600080fd5b82356125438161246e565b6000806040838503121561277957600080fd5b50508035926020909101359150565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806127d157607f821691505b6020821081036127f157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016128355761283561280d565b5060010190565b60008282101561284e5761284e61280d565b500390565b600082198211156128665761286661280d565b500190565b600181815b808511156128a657816000190482111561288c5761288c61280d565b8085161561289957918102915b93841c9390800290612870565b509250929050565b6000826128bd5750600161099a565b816128ca5750600061099a565b81600181146128e057600281146128ea57612906565b600191505061099a565b60ff8411156128fb576128fb61280d565b50506001821b61099a565b5060208310610133831016604e8410600b8410161715612929575081810a61099a565b612933838361286b565b80600019048211156129475761294761280d565b029392505050565b60006124a960ff8416836128ae565b60008160001904831182151516156129785761297861280d565b500290565b60006020828403121561298f57600080fd5b81516124a98161246e565b6000826129b757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129ce57600080fd5b81516124a981612505565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612a295784516001600160a01b031683529383019391830191600101612a04565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612a5f57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122089e5f3acdda6bb65536a0d5b66ef7f588f448954f573bbe9fef0157c0aee799964736f6c634300080f0033

Deployed Bytecode Sourcemap

11820:12571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22099:98;;;;;;;;;;-1:-1:-1;22099:98:0;;;;;:::i;:::-;;:::i;:::-;;2451:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13756:161;;;;;;;;;;-1:-1:-1;13756:161:0;;;;;:::i;:::-;;:::i;:::-;;;1878:14:1;;1871:22;1853:41;;1841:2;1826:18;13756:161:0;1713:187:1;23029:202:0;;;;;;;;;;-1:-1:-1;23029:202:0;;;;;:::i;:::-;;:::i;20726:152::-;;;;;;;;;;-1:-1:-1;20726:152:0;;;;;:::i;:::-;;:::i;12084:56::-;;;;;;;;;;;;;;;;;;;3379:25:1;;;3367:2;3352:18;12084:56:0;3233:177:1;3571:108:0;;;;;;;;;;-1:-1:-1;3659:12:0;;3571:108;;21870:221;;;;;;;;;;;;;:::i;13925:448::-;;;;;;;;;;-1:-1:-1;13925:448:0;;;;;:::i;:::-;;:::i;12315:28::-;;;;;;;;;;;;;;;;3413:93;;;;;;;;;;-1:-1:-1;3413:93:0;;3496:2;4018:36:1;;4006:2;3991:18;3413:93:0;3876:184:1;22901:120:0;;;;;;;;;;-1:-1:-1;22901:120:0;;;;;:::i;:::-;;:::i;14381:248::-;;;;;;;;;;-1:-1:-1;14381:248:0;;;;;:::i;:::-;;:::i;21707:155::-;;;;;;;;;;-1:-1:-1;21707:155:0;;;;;:::i;:::-;;:::i;20886:302::-;;;;;;;;;;-1:-1:-1;20886:302:0;;;;;:::i;:::-;;:::i;23975:112::-;;;;;;;;;;-1:-1:-1;23975:112:0;;;;;:::i;:::-;;:::i;12042:33::-;;;;;;;;;;-1:-1:-1;12042:33:0;;;;-1:-1:-1;;;12042:33:0;;;;;;12810:42;;;;;;;;;;-1:-1:-1;12810:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12201:48;;;;;;;;;;;;;;;;12256:50;;;;;;;;;;;;;;;;12147:47;;;;;;;;;;;;;;;;3742:127;;;;;;;;;;-1:-1:-1;3742:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;10483:94;;;;;;;;;;;;;:::i;12676:33::-;;;;;;;;;;-1:-1:-1;12676:33:0;;;;;;;;;;;;;5456:25:1;;;5512:2;5497:18;;5490:34;;;;5429:18;12676:33:0;5282:248:1;12424:75:0;;;;;;;;;;-1:-1:-1;12424:75:0;;;;-1:-1:-1;;;;;12424:75:0;;;;;;-1:-1:-1;;;;;5699:32:1;;;5681:51;;5669:2;5654:18;12424:75:0;5535:203:1;12503:79:0;;;;;;;;;;;;12540:42;12503:79;;24095:238;;;;;;;;;;-1:-1:-1;24095:238:0;;;;;:::i;:::-;;:::i;10260:87::-;;;;;;;;;;-1:-1:-1;10333:6:0;;-1:-1:-1;;;;;10333:6:0;10260:87;;2670:104;;;;;;;;;;;;;:::i;14637:410::-;;;;;;;;;;-1:-1:-1;14637:410:0;;;;;:::i;:::-;;:::i;11932:19::-;;;;;;;;;;-1:-1:-1;11932:19:0;;;;-1:-1:-1;;;;;11932:19:0;;;15055:165;;;;;;;;;;-1:-1:-1;15055:165:0;;;;;:::i;:::-;;:::i;22464:195::-;;;;;;;;;;-1:-1:-1;22464:195:0;;;;;:::i;:::-;;:::i;12762:41::-;;;;;;;;;;-1:-1:-1;12762:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23239:204;;;;;;;;;;-1:-1:-1;23239:204:0;;;;;:::i;:::-;;:::i;12972:39::-;;;;;;;;;;;;;;;;4361:201;;;;;;;;;;-1:-1:-1;4361:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4527:18:0;;;4495:7;4527:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4361:201;23451:516;;;;;;;;;;-1:-1:-1;23451:516:0;;;;;:::i;:::-;;:::i;22667:226::-;;;;;;;;;;-1:-1:-1;22667:226:0;;;;;:::i;:::-;;:::i;22205:251::-;;;;;;;;;;-1:-1:-1;22205:251:0;;;;;:::i;:::-;;:::i;12930:35::-;;;;;;;;;;-1:-1:-1;12930:35:0;;;;;;;;10585:192;;;;;;;;;;-1:-1:-1;10585:192:0;;;;;:::i;:::-;;:::i;21449:250::-;;;;;;;;;;-1:-1:-1;21449:250:0;;;;;:::i;:::-;;:::i;21196:245::-;;;;;;;;;;-1:-1:-1;21196:245:0;;;;;:::i;:::-;;:::i;12716:37::-;;;;;;;;;;-1:-1:-1;12716:37:0;;;;;;;;;11904:21;;;;;;;;;;-1:-1:-1;11904:21:0;;;;-1:-1:-1;;;;;11904:21:0;;;11998:37;;;;;;;;;;-1:-1:-1;11998:37:0;;;;-1:-1:-1;;;11998:37:0;;;;;;22099:98;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;;;;;;;;;22166:14:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22166:23:0::1;-1:-1:-1::0;;;;22166:23:0;;::::1;::::0;;;::::1;::::0;;22099:98::o;2451:100::-;2505:13;2538:5;2531:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:100;:::o;13756:161::-;13831:4;13848:39;253:10;13871:7;13880:6;13848:8;:39::i;:::-;-1:-1:-1;13905:4:0;13756:161;;;;;:::o;23029:202::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;23126:9:::1;23121:103;23145:8;:15;23141:1;:19;23121:103;;;23207:5;23182:9;:22;23192:8;23201:1;23192:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23182:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23182:22:0;:30;;-1:-1:-1;;23182:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23162:3;::::1;::::0;::::1;:::i;:::-;;;;23121:103;;;;23029:202:::0;;:::o;20726:152::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;20844:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;20844:26:0::1;-1:-1:-1::0;;;;20844:26:0;;::::1;::::0;;;::::1;::::0;;20726:152::o;21870:221::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21933:14:::1;::::0;-1:-1:-1;;;21933:14:0;::::1;;;21932:15;21924:52;;;::::0;-1:-1:-1;;;21924:52:0;;8206:2:1;21924:52:0::1;::::0;::::1;8188:21:1::0;8245:2;8225:18;;;8218:30;8284:26;8264:18;;;8257:54;8328:18;;21924:52:0::1;8004:348:1::0;21924:52:0::1;21987:14;:21:::0;;-1:-1:-1;;;;22019:25:0;-1:-1:-1;;;22019:25:0;;;22071:12:::1;22055:13;:28:::0;21870:221::o;13925:448::-;14057:4;14074:36;14084:6;14092:9;14103:6;14074:9;:36::i;:::-;-1:-1:-1;;;;;14150:19:0;;14123:24;14150:19;;;:11;:19;;;;;;;;253:10;14150:33;;;;;;;;14202:26;;;;14194:79;;;;-1:-1:-1;;;14194:79:0;;8559:2:1;14194:79:0;;;8541:21:1;8598:2;8578:18;;;8571:30;8637:34;8617:18;;;8610:62;-1:-1:-1;;;8688:18:1;;;8681:38;8736:19;;14194:79:0;8357:404:1;14194:79:0;14284:57;14293:6;253:10;14315:25;14334:6;14315:16;:25;:::i;:::-;14284:8;:57::i;:::-;-1:-1:-1;14361:4:0;;13925:448;-1:-1:-1;;;;13925:448:0:o;22901:120::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22986:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;22986:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22901:120::o;14381:248::-;253:10;14497:4;14551:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14551:34:0;;;;;;;;;;14497:4;;14519:80;;14542:7;;14551:47;;14588:10;;14551:47;:::i;21707:155::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21802:6:::1;:27:::0;;-1:-1:-1;;;;;21802:27:0;;::::1;-1:-1:-1::0;;;;;;21802:27:0;;::::1;;::::0;;;21840:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;21707:155::o;20886:302::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21024:7:::1;21010:10;:21;;:39;;;;;21048:1;21035:10;:14;21010:39;21002:114;;;::::0;-1:-1:-1;;;21002:114:0;;9231:2:1;21002:114:0::1;::::0;::::1;9213:21:1::0;9270:2;9250:18;;;9243:30;9309:34;9289:18;;;9282:62;9380:32;9360:18;;;9353:60;9430:19;;21002:114:0::1;9029:426:1::0;21002:114:0::1;21166:14;3496:2:::0;21166::::1;:14;:::i;:::-;21153:27;::::0;:10;:27:::1;:::i;:::-;21127:23;:53:::0;-1:-1:-1;20886:302:0:o;23975:112::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;10333:6;;24043:36:::1;::::0;-1:-1:-1;;;;;10333:6:0;;;;24043:36;::::1;;;::::0;24069:9;;24043:36:::1;::::0;;;24069:9;10333:6;24043:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23975:112:::0;:::o;10483:94::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;10548:21:::1;10566:1;10548:9;:21::i;:::-;10483:94::o:0;24095:238::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;24208:4:::1;-1:-1:-1::0;;;;;24188:25:0;::::1;::::0;24180:92:::1;;;::::0;-1:-1:-1;;;24180:92:0;;11218:2:1;24180:92:0::1;::::0;::::1;11200:21:1::0;11257:2;11237:18;;;11230:30;11296:34;11276:18;;;11269:62;-1:-1:-1;;;11347:18:1;;;11340:52;11409:19;;24180:92:0::1;11016:418:1::0;24180:92:0::1;24290:8;-1:-1:-1::0;;;;;24283:25:0::1;;24309:7;10333:6:::0;;-1:-1:-1;;;;;10333:6:0;;10260:87;24309:7:::1;24283:42;::::0;-1:-1:-1;;;;;;24283:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11631:32:1;;;24283:42:0::1;::::0;::::1;11613:51:1::0;11680:18;;;11673:34;;;11586:18;;24283:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2670:104::-:0;2726:13;2759:7;2752:14;;;;;:::i;14637:410::-;253:10;14758:4;14807:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14807:34:0;;;;;;;;;;14860:35;;;;14852:85;;;;-1:-1:-1;;;14852:85:0;;12170:2:1;14852:85:0;;;12152:21:1;12209:2;12189:18;;;12182:30;12248:34;12228:18;;;12221:62;-1:-1:-1;;;12299:18:1;;;12292:35;12344:19;;14852:85:0;11968:401:1;14852:85:0;14948:67;253:10;14971:7;14980:34;14999:15;14980:16;:34;:::i;14948:67::-;-1:-1:-1;15035:4:0;;14637:410;-1:-1:-1;;;14637:410:0:o;15055:165::-;15133:4;15150:40;15160:10;15172:9;15183:6;15150:9;:40::i;22464:195::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22552:23:0;::::1;22544:69;;;::::0;-1:-1:-1;;;22544:69:0;;12576:2:1;22544:69:0::1;::::0;::::1;12558:21:1::0;12615:2;12595:18;;;12588:30;12654:34;12634:18;;;12627:62;-1:-1:-1;;;12705:18:1;;;12698:32;12747:19;;22544:69:0::1;12374:398:1::0;22544:69:0::1;22624:15;:27:::0;;-1:-1:-1;;;;;;22624:27:0::1;-1:-1:-1::0;;;;;22624:27:0;;;::::1;::::0;;;::::1;::::0;;22464:195::o;23239:204::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;23337:9:::1;23332:104;23356:8;:15;23352:1;:19;23332:104;;;23419:5;23393:10;:23;23404:8;23413:1;23404:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23393:23:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23393:23:0;:31;;-1:-1:-1;;23393:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23373:3;::::1;::::0;::::1;:::i;:::-;;;;23332:104;;23451:516:::0;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;23577:9:::1;23567:6;:19;;23559:73;;;::::0;-1:-1:-1;;;23559:73:0;;12979:2:1;23559:73:0::1;::::0;::::1;12961:21:1::0;13018:2;12998:18;;;12991:30;13057:34;13037:18;;;13030:62;-1:-1:-1;;;13108:18:1;;;13101:39;13157:19;;23559:73:0::1;12777:405:1::0;23559:73:0::1;23662:9;23651:7;:20;;23643:75;;;::::0;-1:-1:-1;;;23643:75:0;;13389:2:1;23643:75:0::1;::::0;::::1;13371:21:1::0;13428:2;13408:18;;;13401:30;13467:34;13447:18;;;13440:62;-1:-1:-1;;;13518:18:1;;;13511:40;13568:19;;23643:75:0::1;13187:406:1::0;23643:75:0::1;23750:9;23737;:22;;23729:77;;;::::0;-1:-1:-1;;;23729:77:0;;13800:2:1;23729:77:0::1;::::0;::::1;13782:21:1::0;13839:2;13819:18;;;13812:30;13878:34;13858:18;;;13851:62;-1:-1:-1;;;13929:18:1;;;13922:40;13979:19;;23729:77:0::1;13598:406:1::0;23729:77:0::1;23840:14;3496:2:::0;23840::::1;:14;:::i;:::-;23831:23;::::0;:6;:23:::1;:::i;:::-;23817:11;:37:::0;23890:14:::1;3496:2:::0;23890::::1;:14;:::i;:::-;23880:24;::::0;:7;:24:::1;:::i;:::-;23865:12;:39:::0;3496:2;23944:14:::1;::::0;:2:::1;:14;:::i;:::-;23932:26;::::0;:9;:26:::1;:::i;:::-;23915:14;:43:::0;-1:-1:-1;;;23451:516:0:o;22667:226::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22762:16:::1;:4:::0;22769:9:::1;22762:16;:::i;:::-;22747:12;:31:::0;22789:15:::1;:23:::0;;-1:-1:-1;;22789:23:0::1;::::0;::::1;;;::::0;;22839:3:::1;22831:11:::0;::::1;;22823:62;;;::::0;-1:-1:-1;;;22823:62:0;;14211:2:1;22823:62:0::1;::::0;::::1;14193:21:1::0;14250:2;14230:18;;;14223:30;14289:34;14269:18;;;14262:62;-1:-1:-1;;;14340:18:1;;;14333:36;14386:19;;22823:62:0::1;14009:402:1::0;22205:251:0;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22287:14:::1;::::0;-1:-1:-1;;;22287:14:0;::::1;;;22286:15;22278:65;;;::::0;-1:-1:-1;;;22278:65:0;;14618:2:1;22278:65:0::1;::::0;::::1;14600:21:1::0;14657:2;14637:18;;;14630:30;14696:34;14676:18;;;14669:62;-1:-1:-1;;;14747:18:1;;;14740:35;14792:19;;22278:65:0::1;14416:401:1::0;22278:65:0::1;22374:2;22362:9;:14;22354:63;;;::::0;-1:-1:-1;;;22354:63:0;;15024:2:1;22354:63:0::1;::::0;::::1;15006:21:1::0;15063:2;15043:18;;;15036:30;15102:34;15082:18;;;15075:62;-1:-1:-1;;;15153:18:1;;;15146:35;15198:19;;22354:63:0::1;14822:401:1::0;22354:63:0::1;22428:8;:20:::0;22205:251::o;10585:192::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10674:22:0;::::1;10666:73;;;::::0;-1:-1:-1;;;10666:73:0;;15430:2:1;10666:73:0::1;::::0;::::1;15412:21:1::0;15469:2;15449:18;;;15442:30;15508:34;15488:18;;;15481:62;-1:-1:-1;;;15559:18:1;;;15552:36;15605:19;;10666:73:0::1;15228:402:1::0;10666:73:0::1;10750:19;10760:8;10750:9;:19::i;:::-;10585:192:::0;:::o;21449:250::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21578:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;21566:9:::1;:41:::0;;;;;;;21655:2:::1;21627:23;21596:10:::0;21584;21627:23:::1;:::i;:::-;21626:31;;21618:73;;;::::0;-1:-1:-1;;;21618:73:0;;15837:2:1;21618:73:0::1;::::0;::::1;15819:21:1::0;15876:2;15856:18;;;15849:30;15915:31;15895:18;;;15888:59;15964:18;;21618:73:0::1;15635:353:1::0;21196:245:0;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21320:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;21312:5:::1;:37:::0;;;;;;;21397:2:::1;21369:23;21338:10:::0;21326;21369:23:::1;:::i;9293:380::-:0;-1:-1:-1;;;;;9429:19:0;;9421:68;;;;-1:-1:-1;;;9421:68:0;;16195:2:1;9421:68:0;;;16177:21:1;16234:2;16214:18;;;16207:30;16273:34;16253:18;;;16246:62;-1:-1:-1;;;16324:18:1;;;16317:34;16368:19;;9421:68:0;15993:400:1;9421:68:0;-1:-1:-1;;;;;9508:21:0;;9500:68;;;;-1:-1:-1;;;9500:68:0;;16600:2:1;9500:68:0;;;16582:21:1;16639:2;16619:18;;;16612:30;16678:34;16658:18;;;16651:62;-1:-1:-1;;;16729:18:1;;;16722:32;16771:19;;9500:68:0;16398:398:1;9500:68:0;-1:-1:-1;;;;;9581:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9633:32;;3379:25:1;;;9633:32:0;;3352:18:1;9633:32:0;;;;;;;9293:380;;;:::o;15228:2995::-;15378:1;15369:6;:10;15361:64;;;;-1:-1:-1;;;15361:64:0;;17003:2:1;15361:64:0;;;16985:21:1;17042:2;17022:18;;;17015:30;17081:34;17061:18;;;17054:62;-1:-1:-1;;;17132:18:1;;;17125:39;17181:19;;15361:64:0;16801:405:1;15361:64:0;-1:-1:-1;;;;;15445:18:0;;;;;;:10;:18;;;;;;;;15444:19;:45;;;;-1:-1:-1;;;;;;15468:21:0;;;;;;:10;:21;;;;;;;;15467:22;15444:45;15436:78;;;;-1:-1:-1;;;15436:78:0;;17413:2:1;15436:78:0;;;17395:21:1;17452:2;17432:18;;;17425:30;-1:-1:-1;;;17471:18:1;;;17464:50;17531:18;;15436:78:0;17211:344:1;15436:78:0;-1:-1:-1;;;;;15532:17:0;;;;;;:9;:17;;;;;;;;15531:18;:43;;;;-1:-1:-1;;;;;;15554:20:0;;;;;;:9;:20;;;;;;;;15553:21;15531:43;15527:122;;;15599:14;;-1:-1:-1;;;15599:14:0;;;;15591:46;;;;-1:-1:-1;;;15591:46:0;;17762:2:1;15591:46:0;;;17744:21:1;17801:2;17781:18;;;17774:30;-1:-1:-1;;;17820:18:1;;;17813:49;17879:18;;15591:46:0;17560:343:1;15591:46:0;15675:4;;-1:-1:-1;;;;;15665:14:0;;;15675:4;;15665:14;:39;;;;-1:-1:-1;;;;;;15684:20:0;;;;;;:9;:20;;;;;;;;15683:21;15665:39;:54;;;;-1:-1:-1;15709:10:0;;-1:-1:-1;;;15709:10:0;;;;15708:11;15665:54;15661:306;;;15754:11;;15744:6;:21;;15736:63;;;;-1:-1:-1;;;15736:63:0;;18110:2:1;15736:63:0;;;18092:21:1;18149:2;18129:18;;;18122:30;18188:31;18168:18;;;18161:59;18237:18;;15736:63:0;17908:353:1;15736:63:0;15873:14;;15863:6;15840:20;15850:9;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;15840:20;:29;;;;:::i;:::-;:47;;15814:141;;;;-1:-1:-1;;;15814:141:0;;18468:2:1;15814:141:0;;;18450:21:1;;;18487:18;;;18480:30;18546:34;18526:18;;;18519:62;18598:18;;15814:141:0;18266:356:1;15814:141:0;16007:4;;-1:-1:-1;;;;;15997:14:0;;;16007:4;;15997:14;;;;:39;;-1:-1:-1;;;;;;16016:20:0;;;;;;:9;:20;;;;;;;;16015:21;15997:39;:61;;;;-1:-1:-1;;;;;;16041:17:0;;;;;;:9;:17;;;;;;;;16040:18;15997:61;:76;;;;-1:-1:-1;16063:10:0;;-1:-1:-1;;;16063:10:0;;;;16062:11;15997:76;15979:677;;;16118:12;;16108:6;:22;;16100:65;;;;-1:-1:-1;;;16100:65:0;;18829:2:1;16100:65:0;;;18811:21:1;18868:2;18848:18;;;18841:30;18907:32;18887:18;;;18880:60;18957:18;;16100:65:0;18627:354:1;16100:65:0;16197:4;;-1:-1:-1;;;;;16184:17:0;;;16197:4;;16184:17;16180:211;;16285:14;;16275:6;16252:20;16262:9;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;16252:20;:29;;;;:::i;:::-;:47;;16222:153;;;;-1:-1:-1;;;16222:153:0;;18468:2:1;16222:153:0;;;18450:21:1;;;18487:18;;;18480:30;18546:34;18526:18;;;18519:62;18598:18;;16222:153:0;18266:356:1;16222:153:0;16409:15;;;;16405:240;;;-1:-1:-1;;;;;16484:17:0;;16445:18;16484:17;;;:9;:17;;;;;;16466:35;;:15;:35;:::i;:::-;16445:56;;16542:12;;16528:10;:26;;16520:55;;;;-1:-1:-1;;;16520:55:0;;19188:2:1;16520:55:0;;;19170:21:1;19227:2;19207:18;;;19200:30;-1:-1:-1;;;19246:18:1;;;19239:46;19302:18;;16520:55:0;18986:340:1;16520:55:0;-1:-1:-1;;;;;;16594:17:0;;;;;;:9;:17;;;;;16614:15;16594:35;;16405:240;16668:15;16694:14;16719:11;16741:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;16741:25:0;-1:-1:-1;;;;;16800:17:0;;16779;16800;;;:9;:17;;;;;;;;16799:18;:56;;;;-1:-1:-1;;;;;;16835:20:0;;;;;;:9;:20;;;;;;;;16834:21;16799:56;:112;;;;;16903:8;;16887:13;;:24;;;;:::i;:::-;16872:12;:39;16799:112;16999:10;;16779:132;;-1:-1:-1;;;;16999:10:0;;;;;:31;;-1:-1:-1;;;;;;17013:17:0;;;;;;:9;:17;;;;;;;;16999:31;:55;;;-1:-1:-1;;;;;;17034:20:0;;;;;;:9;:20;;;;;;;;16999:55;16995:648;;;17075:1;17069:7;;16995:648;;;17140:4;;-1:-1:-1;;;;;17127:17:0;;;17140:4;;17127:17;:34;;;;;17149:12;17148:13;17127:34;17123:520;;;17244:9;:19;17205;;:58;;17244:19;17205:58;:::i;:::-;17309:24;;;;;;;;;17324:9;17309:24;;;;;;;;;17178:85;;-1:-1:-1;17178:85:0;;-1:-1:-1;17309:24:0;-1:-1:-1;17123:520:0;;;17356:12;17351:292;;17447:5;:15;17412;;:50;;17447:15;17412:50;:::i;:::-;17508:20;;;;;;;;;17523:5;17508:20;;;;;;;;;17385:77;;-1:-1:-1;17385:77:0;;-1:-1:-1;17508:20:0;-1:-1:-1;17351:292:0;;;17550:12;17546:97;;;17589:9;;;-1:-1:-1;17589:9:0;;-1:-1:-1;17546:97:0;17681:3;17662:15;17671:6;17662;:15;:::i;:::-;17661:23;;;;:::i;:::-;17798:18;;17655:29;;-1:-1:-1;;;;17798:18:0;;;;:36;;;;-1:-1:-1;17830:4:0;;-1:-1:-1;;;;;17820:14:0;;;17830:4;;17820:14;;17798:36;17794:72;;;17836:30;17844:7;17853:12;17836:7;:30::i;:::-;17908:48;17924:6;17932:9;17943:12;17952:3;17943:6;:12;:::i;:::-;17908:15;:48::i;:::-;17971:7;;17967:249;;18043:11;;18039:164;;18075:17;18116:3;18096:16;18105:7;18096:6;:16;:::i;:::-;18095:24;;;;:::i;:::-;18075:44;;18138:49;18154:6;18170:4;18177:9;18138:15;:49::i;:::-;18056:147;18039:164;15350:2873;;;;;15228:2995;;;:::o;10785:173::-;10860:6;;;-1:-1:-1;;;;;10877:17:0;;;-1:-1:-1;;;;;;10877:17:0;;;;;;;10910:40;;10860:6;;;10877:17;10860:6;;10910:40;;10841:16;;10910:40;10830:128;10785:173;:::o;18231:1437::-;13059:10;;-1:-1:-1;;;13059:10:0;;;;13054:110;;13086:10;:17;;-1:-1:-1;;;;13086:17:0;-1:-1:-1;;;13086:17:0;;;18322:49;;18353:7:::1;18322:49;18427:4;18383:23;3843:18:::0;;;;;;;;;;;18467:23:::1;::::0;18448:42;::::1;18444:1217;;18537:1;18511:23;;:27;18507:109;;;-1:-1:-1::0;18577:23:0::1;::::0;18507:109:::1;18687:19;18709:11;:7:::0;18719:1:::1;18709:11;:::i;:::-;18687:33;;18735:32;18829:11;18789:9;:19;;;18771:15;:37;;;;:::i;:::-;18770:70;;;;:::i;:::-;18735:105:::0;-1:-1:-1;18855:14:0::1;18872:42;18735:105:::0;18872:15;:42:::1;:::i;:::-;18855:59:::0;-1:-1:-1;18956:21:0::1;18994:24;18855:59:::0;18994:16:::1;:24::i;:::-;19035:20;19058:38;19082:14:::0;19058:21:::1;:38;:::i;:::-;19035:61;;19111:19;19163:9;:19;;;19149:11;:33;;;;:::i;:::-;19133:50;::::0;:12;:50:::1;:::i;:::-;19111:72;;19198:29;19244:9;:19;;;19230:11;:33;;;;:::i;:::-;19198:65:::0;-1:-1:-1;19284:25:0;;19280:172:::1;;19375:61;19388:24;19414:21;19375:12;:61::i;:::-;19509:19:::0;;19468:20:::1;::::0;19491:15:::1;:11:::0;19505:1:::1;19491:15;:::i;:::-;:37;;;;:::i;:::-;19468:60:::0;-1:-1:-1;19547:16:0;;19543:105:::1;;19592:15;::::0;19584:48:::1;::::0;-1:-1:-1;;;;;19592:15:0::1;19619:12:::0;19584:34:::1;:48::i;:::-;18492:1169;;;;;;;;18444:1217;18309:1359;13118:1;13134:10:::0;:18;;-1:-1:-1;;;;13134:18:0;;;18231:1437;;:::o;7874:578::-;-1:-1:-1;;;;;8014:20:0;;8006:70;;;;-1:-1:-1;;;8006:70:0;;19755:2:1;8006:70:0;;;19737:21:1;19794:2;19774:18;;;19767:30;19833:34;19813:18;;;19806:62;-1:-1:-1;;;19884:18:1;;;19877:35;19929:19;;8006:70:0;19553:401:1;8006:70:0;-1:-1:-1;;;;;8095:23:0;;8087:71;;;;-1:-1:-1;;;8087:71:0;;20161:2:1;8087:71:0;;;20143:21:1;20200:2;20180:18;;;20173:30;20239:34;20219:18;;;20212:62;-1:-1:-1;;;20290:18:1;;;20283:33;20333:19;;8087:71:0;19959:399:1;8087:71:0;-1:-1:-1;;;;;8195:17:0;;8171:21;8195:17;;;;;;;;;;;8231:23;;;;8223:74;;;;-1:-1:-1;;;8223:74:0;;20565:2:1;8223:74:0;;;20547:21:1;20604:2;20584:18;;;20577:30;20643:34;20623:18;;;20616:62;-1:-1:-1;;;20694:18:1;;;20687:36;20740:19;;8223:74:0;20363:402:1;8223:74:0;8328:22;8344:6;8328:13;:22;:::i;:::-;-1:-1:-1;;;;;8308:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8361:20;;;;;;;;:30;;8385:6;;8308:9;8361:30;;8385:6;;8361:30;:::i;:::-;;;;;;;;8426:9;-1:-1:-1;;;;;8409:35:0;8418:6;-1:-1:-1;;;;;8409:35:0;;8437:6;8409:35;;;;3379:25:1;;3367:2;3352:18;;3233:177;8409:35:0;;;;;;;;7995:457;7874:578;;;:::o;19676:534::-;19826:16;;;19840:1;19826:16;;;;;;;;19802:21;;19826:16;;;;;;;;;;-1:-1:-1;19826:16:0;19802:40;;19871:4;19853;19858:1;19853:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19853:23:0;;;:7;;;;;;;;;;:23;;;;19897:6;;:13;;;-1:-1:-1;;;19897:13:0;;;;:6;;;;;:11;;:13;;;;;19853:7;;19897:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19887:4;19892:1;19887:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19887:23:0;;;:7;;;;;;;;;:23;19955:6;;19923:53;;19940:4;;19955:6;19964:11;19923:8;:53::i;:::-;20015:6;;:187;;-1:-1:-1;;;20015:187:0;;-1:-1:-1;;;;;20015:6:0;;;;:57;;:187;;20087:11;;20015:6;;20129:4;;20156;;20176:15;;20015:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19731:479;19676:534;:::o;20218:500::-;20398:6;;20366:53;;20383:4;;-1:-1:-1;;;;;20398:6:0;20407:11;20366:8;:53::i;:::-;20462:6;;:248;;-1:-1:-1;;;20462:248:0;;20527:4;20462:248;;;22352:34:1;22402:18;;;22395:34;;;20462:6:0;22445:18:1;;;22438:34;;;22488:18;;;22481:34;12540:42:0;22531:19:1;;;22524:44;20684:15:0;22584:19:1;;;22577:35;-1:-1:-1;;;;;20462:6:0;;;;:22;;20493:9;;22286:19:1;;20462:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20218:500;;:::o;9703:319::-;9818:6;9793:21;:31;;9785:73;;;;-1:-1:-1;;;9785:73:0;;23136:2:1;9785:73:0;;;23118:21:1;23175:2;23155:18;;;23148:30;23214:31;23194:18;;;23187:59;23263:18;;9785:73:0;22934:353:1;9785:73:0;9872:12;9890:9;-1:-1:-1;;;;;9890:14:0;9913:6;9890:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9871:54;;;9944:7;9936:78;;;;-1:-1:-1;;;9936:78:0;;23704:2:1;9936:78:0;;;23686:21:1;23743:2;23723:18;;;23716:30;23782:34;23762:18;;;23755:62;23853:28;23833:18;;;23826:56;23899:19;;9936:78:0;23502:422:1;14:118;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:128;202:20;;231:28;202:20;231:28;:::i;:::-;137:128;;;:::o;270:241::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;434:9;421:23;453:28;475:5;453:28;:::i;:::-;500:5;270:241;-1:-1:-1;;;270:241:1:o;516:597::-;628:4;657:2;686;675:9;668:21;718:6;712:13;761:6;756:2;745:9;741:18;734:34;786:1;796:140;810:6;807:1;804:13;796:140;;;905:14;;;901:23;;895:30;871:17;;;890:2;867:26;860:66;825:10;;796:140;;;954:6;951:1;948:13;945:91;;;1024:1;1019:2;1010:6;999:9;995:22;991:31;984:42;945:91;-1:-1:-1;1097:2:1;1076:15;-1:-1:-1;;1072:29:1;1057:45;;;;1104:2;1053:54;;516:597;-1:-1:-1;;;516:597:1:o;1118:131::-;-1:-1:-1;;;;;1193:31:1;;1183:42;;1173:70;;1239:1;1236;1229:12;1254:134;1322:20;;1351:31;1322:20;1351:31;:::i;1393:315::-;1461:6;1469;1522:2;1510:9;1501:7;1497:23;1493:32;1490:52;;;1538:1;1535;1528:12;1490:52;1577:9;1564:23;1596:31;1621:5;1596:31;:::i;:::-;1646:5;1698:2;1683:18;;;;1670:32;;-1:-1:-1;;;1393:315:1:o;1905:127::-;1966:10;1961:3;1957:20;1954:1;1947:31;1997:4;1994:1;1987:15;2021:4;2018:1;2011:15;2037:1191;2127:6;2135;2188:2;2176:9;2167:7;2163:23;2159:32;2156:52;;;2204:1;2201;2194:12;2156:52;2244:9;2231:23;2273:18;2314:2;2306:6;2303:14;2300:34;;;2330:1;2327;2320:12;2300:34;2368:6;2357:9;2353:22;2343:32;;2413:7;2406:4;2402:2;2398:13;2394:27;2384:55;;2435:1;2432;2425:12;2384:55;2471:2;2458:16;2493:4;2516:2;2512;2509:10;2506:36;;;2522:18;;:::i;:::-;2568:2;2565:1;2561:10;2600:2;2594:9;2663:2;2659:7;2654:2;2650;2646:11;2642:25;2634:6;2630:38;2718:6;2706:10;2703:22;2698:2;2686:10;2683:18;2680:46;2677:72;;;2729:18;;:::i;:::-;2765:2;2758:22;2815:18;;;2849:15;;;;-1:-1:-1;2891:11:1;;;2887:20;;;2919:19;;;2916:39;;;2951:1;2948;2941:12;2916:39;2975:11;;;;2995:148;3011:6;3006:3;3003:15;2995:148;;;3077:23;3096:3;3077:23;:::i;:::-;3065:36;;3028:12;;;;3121;;;;2995:148;;;3162:6;-1:-1:-1;3187:35:1;;-1:-1:-1;3203:18:1;;;3187:35;:::i;:::-;3177:45;;;;;;2037:1191;;;;;:::o;3415:456::-;3492:6;3500;3508;3561:2;3549:9;3540:7;3536:23;3532:32;3529:52;;;3577:1;3574;3567:12;3529:52;3616:9;3603:23;3635:31;3660:5;3635:31;:::i;:::-;3685:5;-1:-1:-1;3742:2:1;3727:18;;3714:32;3755:33;3714:32;3755:33;:::i;:::-;3415:456;;3807:7;;-1:-1:-1;;;3861:2:1;3846:18;;;;3833:32;;3415:456::o;4065:382::-;4130:6;4138;4191:2;4179:9;4170:7;4166:23;4162:32;4159:52;;;4207:1;4204;4197:12;4159:52;4246:9;4233:23;4265:31;4290:5;4265:31;:::i;:::-;4315:5;-1:-1:-1;4372:2:1;4357:18;;4344:32;4385:30;4344:32;4385:30;:::i;:::-;4434:7;4424:17;;;4065:382;;;;;:::o;4452:388::-;4520:6;4528;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:31;4680:5;4655:31;:::i;:::-;4705:5;-1:-1:-1;4762:2:1;4747:18;;4734:32;4775:33;4734:32;4775:33;:::i;4845:180::-;4904:6;4957:2;4945:9;4936:7;4932:23;4928:32;4925:52;;;4973:1;4970;4963:12;4925:52;-1:-1:-1;4996:23:1;;4845:180;-1:-1:-1;4845:180:1:o;5030:247::-;5089:6;5142:2;5130:9;5121:7;5117:23;5113:32;5110:52;;;5158:1;5155;5148:12;5110:52;5197:9;5184:23;5216:31;5241:5;5216:31;:::i;5743:316::-;5820:6;5828;5836;5889:2;5877:9;5868:7;5864:23;5860:32;5857:52;;;5905:1;5902;5895:12;5857:52;-1:-1:-1;;5928:23:1;;;5998:2;5983:18;;5970:32;;-1:-1:-1;6049:2:1;6034:18;;;6021:32;;5743:316;-1:-1:-1;5743:316:1:o;6064:309::-;6129:6;6137;6190:2;6178:9;6169:7;6165:23;6161:32;6158:52;;;6206:1;6203;6196:12;6158:52;6245:9;6232:23;6264:28;6286:5;6264:28;:::i;6378:248::-;6446:6;6454;6507:2;6495:9;6486:7;6482:23;6478:32;6475:52;;;6523:1;6520;6513:12;6475:52;-1:-1:-1;;6546:23:1;;;6616:2;6601:18;;;6588:32;;-1:-1:-1;6378:248:1:o;6854:356::-;7056:2;7038:21;;;7075:18;;;7068:30;7134:34;7129:2;7114:18;;7107:62;7201:2;7186:18;;6854:356::o;7215:380::-;7294:1;7290:12;;;;7337;;;7358:61;;7412:4;7404:6;7400:17;7390:27;;7358:61;7465:2;7457:6;7454:14;7434:18;7431:38;7428:161;;7511:10;7506:3;7502:20;7499:1;7492:31;7546:4;7543:1;7536:15;7574:4;7571:1;7564:15;7428:161;;7215:380;;;:::o;7600:127::-;7661:10;7656:3;7652:20;7649:1;7642:31;7692:4;7689:1;7682:15;7716:4;7713:1;7706:15;7732:127;7793:10;7788:3;7784:20;7781:1;7774:31;7824:4;7821:1;7814:15;7848:4;7845:1;7838:15;7864:135;7903:3;7924:17;;;7921:43;;7944:18;;:::i;:::-;-1:-1:-1;7991:1:1;7980:13;;7864:135::o;8766:125::-;8806:4;8834:1;8831;8828:8;8825:34;;;8839:18;;:::i;:::-;-1:-1:-1;8876:9:1;;8766:125::o;8896:128::-;8936:3;8967:1;8963:6;8960:1;8957:13;8954:39;;;8973:18;;:::i;:::-;-1:-1:-1;9009:9:1;;8896:128::o;9460:422::-;9549:1;9592:5;9549:1;9606:270;9627:7;9617:8;9614:21;9606:270;;;9686:4;9682:1;9678:6;9674:17;9668:4;9665:27;9662:53;;;9695:18;;:::i;:::-;9745:7;9735:8;9731:22;9728:55;;;9765:16;;;;9728:55;9844:22;;;;9804:15;;;;9606:270;;;9610:3;9460:422;;;;;:::o;9887:806::-;9936:5;9966:8;9956:80;;-1:-1:-1;10007:1:1;10021:5;;9956:80;10055:4;10045:76;;-1:-1:-1;10092:1:1;10106:5;;10045:76;10137:4;10155:1;10150:59;;;;10223:1;10218:130;;;;10130:218;;10150:59;10180:1;10171:10;;10194:5;;;10218:130;10255:3;10245:8;10242:17;10239:43;;;10262:18;;:::i;:::-;-1:-1:-1;;10318:1:1;10304:16;;10333:5;;10130:218;;10432:2;10422:8;10419:16;10413:3;10407:4;10404:13;10400:36;10394:2;10384:8;10381:16;10376:2;10370:4;10367:12;10363:35;10360:77;10357:159;;;-1:-1:-1;10469:19:1;;;10501:5;;10357:159;10548:34;10573:8;10567:4;10548:34;:::i;:::-;10618:6;10614:1;10610:6;10606:19;10597:7;10594:32;10591:58;;;10629:18;;:::i;:::-;10667:20;;9887:806;-1:-1:-1;;;9887:806:1:o;10698:140::-;10756:5;10785:47;10826:4;10816:8;10812:19;10806:4;10785:47;:::i;10843:168::-;10883:7;10949:1;10945;10941:6;10937:14;10934:1;10931:21;10926:1;10919:9;10912:17;10908:45;10905:71;;;10956:18;;:::i;:::-;-1:-1:-1;10996:9:1;;10843:168::o;11718:245::-;11785:6;11838:2;11826:9;11817:7;11813:23;11809:32;11806:52;;;11854:1;11851;11844:12;11806:52;11886:9;11880:16;11905:28;11927:5;11905:28;:::i;19331:217::-;19371:1;19397;19387:132;;19441:10;19436:3;19432:20;19429:1;19422:31;19476:4;19473:1;19466:15;19504:4;19501:1;19494:15;19387:132;-1:-1:-1;19533:9:1;;19331:217::o;20770:251::-;20840:6;20893:2;20881:9;20872:7;20868:23;20864:32;20861:52;;;20909:1;20906;20899:12;20861:52;20941:9;20935:16;20960:31;20985:5;20960:31;:::i;21026:980::-;21288:4;21336:3;21325:9;21321:19;21367:6;21356:9;21349:25;21393:2;21431:6;21426:2;21415:9;21411:18;21404:34;21474:3;21469:2;21458:9;21454:18;21447:31;21498:6;21533;21527:13;21564:6;21556;21549:22;21602:3;21591:9;21587:19;21580:26;;21641:2;21633:6;21629:15;21615:29;;21662:1;21672:195;21686:6;21683:1;21680:13;21672:195;;;21751:13;;-1:-1:-1;;;;;21747:39:1;21735:52;;21842:15;;;;21807:12;;;;21783:1;21701:9;21672:195;;;-1:-1:-1;;;;;;;21923:32:1;;;;21918:2;21903:18;;21896:60;-1:-1:-1;;;21987:3:1;21972:19;21965:35;21884:3;21026:980;-1:-1:-1;;;21026:980:1:o;22623:306::-;22711:6;22719;22727;22780:2;22768:9;22759:7;22755:23;22751:32;22748:52;;;22796:1;22793;22786:12;22748:52;22825:9;22819:16;22809:26;;22875:2;22864:9;22860:18;22854:25;22844:35;;22919:2;22908:9;22904:18;22898:25;22888:35;;22623:306;;;;;:::o

Swarm Source

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