ETH Price: $2,608.58 (-0.49%)

Token

Kai Legends (KAI)
 

Overview

Max Total Supply

100,000,000 KAI

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
0xzarathustra.eth
Balance
0.676536323992470873 KAI

Value
$0.00
0x641c6c7168f5a678baf5f1b2141f71fdef27a82e
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:
KaiLegends

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-23
*/

/**
 *Submitted for verification at Etherscan.io on 2022-08-23
*/

//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 KaiLegends 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 = 3000_000 * 10**18;
    uint256 public maxSellLimit = 1000_000 * 10**18;
    uint256 public maxWalletLimit = 3000_000 * 10**18;

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

    address public marketingWallet = 0x356Dff572b8284e21f063b1eA4e94b5D24935f5c;
    address public KaiRewardsWallet = 0x356Dff572b8284e21f063b1eA4e94b5D24935f5c;
    address public lotteryWallet = 0x356Dff572b8284e21f063b1eA4e94b5D24935f5c;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 lottery;
        uint256 KaiReward;
    }

    Taxes public taxes = Taxes(0, 0, 0, 0);
    Taxes public sellTaxes = Taxes(0, 0, 0, 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("Kai Legends", "KAI") {
        _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[lotteryWallet] = true;
        exemptFee[KaiRewardsWallet] = 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 +
                sellTaxes.lottery +            
                sellTaxes.KaiReward;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.lottery +
                taxes.KaiReward ;
            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);
            }

            uint256 lotteryAmt = unitBalance * 2 * swapTaxes.lottery;
            if (lotteryAmt > 0) {
                payable(lotteryWallet).sendValue(lotteryAmt);
            }

            uint256 KaiReward = unitBalance * 2 * swapTaxes.KaiReward;
            if (KaiReward > 0) {
                payable(KaiRewardsWallet).sendValue(KaiReward);
            }

        }
    }

    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,
        uint256 _lottery,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity,  _lottery, _dev);
        require((_marketing + _liquidity + _lottery + _dev) <= 99, "Must keep fees at 99% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _lottery,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity,  _lottery,  _dev);
        require((_marketing + _liquidity + _lottery + _dev) <= 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 updatelotteryWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        lotteryWallet = newWallet;
    }

    function updateKaiRewardsWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        KaiRewardsWallet = 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 >= 10_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 10_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 100_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":[],"name":"KaiRewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_lottery","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_lottery","type":"uint256"},{"internalType":"uint256","name":"_dev","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":"lotteryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"},{"internalType":"uint256","name":"lottery","type":"uint256"},{"internalType":"uint256","name":"KaiReward","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"},{"internalType":"uint256","name":"lottery","type":"uint256"},{"internalType":"uint256","name":"KaiReward","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":"address","name":"newWallet","type":"address"}],"name":"updateKaiRewardsWallet","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"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatelotteryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191661010160a81b17905569021e19e0c9bab24000006008556a027b46536c66c8e3000000600981905569d3c21bcecceda1000000600a55600b556003600d556000600e819055600f805473356dff572b8284e21f063b1ea4e94b5d24935f5c6001600160a01b0319918216811790925560108054821683179055601180549091169091179055608081905260a081905260c081905260e081905260128190556013819055601481905560158190556101806040526101008190526101208190526101408190526101608190526016819055601781905560188190556019819055601d805460ff19169055601e553480156200010557600080fd5b506040518060400160405280600b81526020016a4b6169204c6567656e647360a81b815250604051806040016040528060038152602001624b414960e81b815250816003908162000157919062000530565b50600462000166828262000530565b505050620001836200017d620003e160201b60201c565b620003e5565b620001ac33620001966012600a62000711565b620001a6906305f5e10062000729565b62000437565b336000908152601a60209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa15801562000217573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023d91906200074b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b191906200074b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032591906200074b565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550306000908152601a6020526040808220805460ff199081166001908117909255600f548516845282842080548216831790556011548516845282842080548216831790556010549094168352908220805484168217905561dead9091527f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e88805490921617905562000776565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004b657607f821691505b602082108103620004d757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052b57600081815260208120601f850160051c81016020861015620005065750805b601f850160051c820191505b81811015620005275782815560010162000512565b5050505b505050565b81516001600160401b038111156200054c576200054c6200048b565b62000564816200055d8454620004a1565b84620004dd565b602080601f8311600181146200059c5760008415620005835750858301515b600019600386901b1c1916600185901b17855562000527565b600085815260208120601f198616915b82811015620005cd57888601518255948401946001909101908401620005ac565b5085821015620005ec5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000653578160001904821115620006375762000637620005fc565b808516156200064557918102915b93841c939080029062000617565b509250929050565b6000826200066c575060016200070b565b816200067b575060006200070b565b81600181146200069457600281146200069f57620006bf565b60019150506200070b565b60ff841115620006b357620006b3620005fc565b50506001821b6200070b565b5060208310610133831016604e8410600b8410161715620006e4575081810a6200070b565b620006f0838362000612565b8060001904821115620007075762000707620005fc565b0290505b92915050565b60006200072260ff8416836200065b565b9392505050565b6000816000190483118215151615620007465762000746620005fc565b500290565b6000602082840312156200075e57600080fd5b81516001600160a01b03811681146200072257600080fd5b612dc880620007866000396000f3fe6080604052600436106102e85760003560e01c8063715018a611610190578063c5d32bb2116100dc578063e517f2b911610095578063f2fde38b1161006f578063f2fde38b14610919578063f66895a314610939578063f887ea401461095c578063fbe6324e1461097c57600080fd5b8063e517f2b9146108bf578063edaa1168146108df578063ee36e359146108ff57600080fd5b8063c5d32bb2146107d3578063ca697d8f14610803578063ce64428614610823578063d2ce0db214610843578063dd62ed3e14610859578063e1b450ad1461089f57600080fd5b806395d89b4111610149578063a457c2d711610123578063a457c2d714610753578063a8aa1b3114610773578063a9059cbb14610793578063aacebbe3146107b357600080fd5b806395d89b41146106fe57806397973a2b14610713578063a364b0771461073357600080fd5b8063715018a61461061a578063728f8eea1461062f57806375f0a8741461067257806385141a77146106aa5780638cd4426d146106c05780638da5cb5b146106e057600080fd5b8063355496ca1161024f5780634ada218b11610208578063652e2f04116101e2578063652e2f04146105a257806366a88d96146105b85780636aa5b37f146105ce57806370a08231146105e457600080fd5b80634ada218b146105315780635d5345761461055257806360de666b1461058257600080fd5b8063355496ca1461047157806339509351146104915780633dcff94b146104b157806340b28c2f146104d157806342b6fa11146104f1578063441b1d301461051157600080fd5b80631675d802116102a15780631675d802146103d157806318160ddd146103f55780631c1702f31461040a57806323b872dd1461041f578063274a533c1461043f578063313ce5671461045557600080fd5b8063012ab8cb146102f457806306fdde0314610316578063095ea7b3146103415780630e375a5c14610371578063105cafb6146103915780631340538f146103b157600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612754565b61099d565b005b34801561032257600080fd5b5061032b6109ee565b6040516103389190612778565b60405180910390f35b34801561034d57600080fd5b5061036161035c3660046127ed565b610a80565b6040519015158152602001610338565b34801561037d57600080fd5b5061031461038c36600461282f565b610a97565b34801561039d57600080fd5b506103146103ac366004612906565b610b2d565b3480156103bd57600080fd5b506103146103cc366004612754565b610c01565b3480156103dd57600080fd5b506103e760085481565b604051908152602001610338565b34801561040157600080fd5b506002546103e7565b34801561041657600080fd5b50610314610c49565b34801561042b57600080fd5b5061036161043a366004612938565b610ce8565b34801561044b57600080fd5b506103e7600c5481565b34801561046157600080fd5b5060405160128152602001610338565b34801561047d57600080fd5b5061031461048c366004612979565b610d99565b34801561049d57600080fd5b506103616104ac3660046127ed565b610dee565b3480156104bd57600080fd5b506103146104cc3660046129b2565b610e25565b3480156104dd57600080fd5b506103146104ec3660046129cf565b610e97565b3480156104fd57600080fd5b5061031461050c3660046129fd565b610eef565b34801561051d57600080fd5b5061031461052c3660046129fd565b610fba565b34801561053d57600080fd5b5060075461036190600160b01b900460ff1681565b34801561055e57600080fd5b5061036161056d3660046129b2565b601b6020526000908152604090205460ff1681565b34801561058e57600080fd5b5061031461059d3660046129b2565b611022565b3480156105ae57600080fd5b506103e7600a5481565b3480156105c457600080fd5b506103e7600b5481565b3480156105da57600080fd5b506103e760095481565b3480156105f057600080fd5b506103e76105ff3660046129b2565b6001600160a01b031660009081526020819052604090205490565b34801561062657600080fd5b50610314611094565b34801561063b57600080fd5b506012546013546014546015546106529392919084565b604080519485526020850193909352918301526060820152608001610338565b34801561067e57600080fd5b50600f54610692906001600160a01b031681565b6040516001600160a01b039091168152602001610338565b3480156106b657600080fd5b5061069261dead81565b3480156106cc57600080fd5b506103146106db3660046127ed565b6110ca565b3480156106ec57600080fd5b506005546001600160a01b0316610692565b34801561070a57600080fd5b5061032b6111fd565b34801561071f57600080fd5b5061031461072e366004612906565b61120c565b34801561073f57600080fd5b50601154610692906001600160a01b031681565b34801561075f57600080fd5b5061036161076e3660046127ed565b611278565b34801561077f57600080fd5b50600754610692906001600160a01b031681565b34801561079f57600080fd5b506103616107ae3660046127ed565b611313565b3480156107bf57600080fd5b506103146107ce3660046129b2565b611320565b3480156107df57600080fd5b506103616107ee3660046129b2565b601a6020526000908152604090205460ff1681565b34801561080f57600080fd5b5061031461081e36600461282f565b611392565b34801561082f57600080fd5b50601054610692906001600160a01b031681565b34801561084f57600080fd5b506103e7601e5481565b34801561086557600080fd5b506103e76108743660046129cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108ab57600080fd5b506103146108ba366004612a16565b611423565b3480156108cb57600080fd5b506103146108da366004612a42565b6115cd565b3480156108eb57600080fd5b506103146108fa3660046129fd565b611674565b34801561090b57600080fd5b50601d546103619060ff1681565b34801561092557600080fd5b506103146109343660046129b2565b611769565b34801561094557600080fd5b506016546017546018546019546106529392919084565b34801561096857600080fd5b50600654610692906001600160a01b031681565b34801561098857600080fd5b5060075461036190600160a81b900460ff1681565b6005546001600160a01b031633146109d05760405162461bcd60e51b81526004016109c790612a60565b60405180910390fd5b60078054911515600160b01b0260ff60b01b19909216919091179055565b6060600380546109fd90612a95565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2990612a95565b8015610a765780601f10610a4b57610100808354040283529160200191610a76565b820191906000526020600020905b815481529060010190602001808311610a5957829003601f168201915b5050505050905090565b6000610a8d338484611804565b5060015b92915050565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016109c790612a60565b60005b8251811015610b285781601a6000858481518110610ae457610ae4612acf565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b2081612afb565b915050610ac4565b505050565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016109c790612a60565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560638183610b998688612b14565b610ba39190612b14565b610bad9190612b14565b1115610bfb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c65737300000060448201526064016109c7565b50505050565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016109c790612a60565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610c735760405162461bcd60e51b81526004016109c790612a60565b600754600160b01b900460ff1615610ccd5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016109c7565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610cf5848484611928565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d7a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c7565b610d8e8533610d898685612b2c565b611804565b506001949350505050565b6005546001600160a01b03163314610dc35760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a8d918590610d89908690612b14565b6005546001600160a01b03163314610e4f5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b038116610e755760405162461bcd60e51b81526004016109c790612b43565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ec15760405162461bcd60e51b81526004016109c790612a60565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610f195760405162461bcd60e51b81526004016109c790612a60565b620186a08111158015610f2c5750600081115b610f9e5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016109c7565b610faa6012600a612c69565b610fb49082612c78565b60085550565b6005546001600160a01b03163314610fe45760405162461bcd60e51b81526004016109c790612a60565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561101e573d6000803e3d6000fd5b5050565b6005546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166110725760405162461bcd60e51b81526004016109c790612b43565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110be5760405162461bcd60e51b81526004016109c790612a60565b6110c86000612032565b565b6005546001600160a01b031633146110f45760405162461bcd60e51b81526004016109c790612a60565b306001600160a01b0383160361116b5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016109c7565b816001600160a01b031663a9059cbb61118c6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190612c97565b6060600480546109fd90612a95565b6005546001600160a01b031633146112365760405162461bcd60e51b81526004016109c790612a60565b6040805160808101825285815260208101859052908101839052606001819052601284905560138390556014829055601581905560638183610b998688612b14565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c7565b6113093385610d898685612b2c565b5060019392505050565b6000610a8d338484611928565b6005546001600160a01b0316331461134a5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166113705760405162461bcd60e51b81526004016109c790612b43565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113bc5760405162461bcd60e51b81526004016109c790612a60565b60005b8251811015610b285781601b60008584815181106113df576113df612acf565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b81612afb565b9150506113bf565b6005546001600160a01b0316331461144d5760405162461bcd60e51b81526004016109c790612a60565b6127108310156114b15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109c7565b6127108210156115165760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109c7565b620186a081101561157c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016109c7565b6115886012600a612c69565b6115929084612c78565b6009556115a16012600a612c69565b6115ab9083612c78565b600a5560126115bb90600a612c69565b6115c59082612c78565b600b55505050565b6005546001600160a01b031633146115f75760405162461bcd60e51b81526004016109c790612a60565b611602816001612c78565b601e55601d805460ff191683151517905561012c81111561101e5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016109c7565b6005546001600160a01b0316331461169e5760405162461bcd60e51b81526004016109c790612a60565b600754600160b01b900460ff16156117065760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016109c7565b600a81106117645760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016109c7565b600d55565b6005546001600160a01b031633146117935760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166117f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c7565b61180181612032565b50565b6001600160a01b0383166118665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c7565b6001600160a01b0382166118c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161198a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109c7565b6001600160a01b0383166000908152601b602052604090205460ff161580156119cc57506001600160a01b0382166000908152601b602052604090205460ff16155b611a0f5760405162461bcd60e51b8152602060048201526014602482015273536e6970657273206e6f7420616c6c6f7765642160601b60448201526064016109c7565b6001600160a01b0383166000908152601a602052604090205460ff16158015611a5157506001600160a01b0382166000908152601a602052604090205460ff16155b15611aa557600754600160b01b900460ff16611aa55760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016109c7565b6007546001600160a01b038481169116148015611adb57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611af15750600754600160a01b900460ff16155b15611bc357600954811115611b485760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109c7565b600b5481611b6b846001600160a01b031660009081526020819052604090205490565b611b759190612b14565b1115611bc35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109c7565b6007546001600160a01b03848116911614801590611bfa57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611c1f57506001600160a01b0383166000908152601a602052604090205460ff16155b8015611c355750600754600160a01b900460ff16155b15611dae57600a54811115611c8c5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109c7565b6007546001600160a01b03838116911614611d1c57600b5481611cc4846001600160a01b031660009081526020819052604090205490565b611cce9190612b14565b1115611d1c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109c7565b601d5460ff1615611dae576001600160a01b0383166000908152601c6020526040812054611d4a9042612b2c565b9050601e54811015611d915760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016109c7565b506001600160a01b0383166000908152601c602052604090204290555b6000806000611dde6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611e2057506001600160a01b0387166000908152601a602052604090205460ff16155b8015611e3a5750600d54600c54611e379190612b14565b43105b600754909150600160a01b900460ff1680611e6d57506001600160a01b0388166000908152601a602052604090205460ff165b80611e9057506001600160a01b0387166000908152601a602052604090205460ff165b15611e9e5760009250611f92565b6007546001600160a01b038881169116148015611eb9575080155b15611f1e57601954601854601654601754611ed49190612b14565b611ede9190612b14565b611ee89190612b14565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611f92565b80611f8357601554601454601254601354611f399190612b14565b611f439190612b14565b611f4d9190612b14565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611f92565b8015611f9257600e5494508493505b6064611f9e8588612c78565b611fa89190612cb4565b600754909350600160a81b900460ff168015611fd257506007546001600160a01b03898116911614155b15611fe157611fe18583612084565b611ff58888611ff0868a612b2c565b612239565b8215612028578415612028576000606461200f8789612c78565b6120199190612cb4565b9050612026893083612239565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff1661101e576007805460ff60a01b1916600160a01b17905581156122285730600090815260208190526040902054600854811061222657600160085411156120d757506008545b60006120e4846002612c78565b90506000818460200151846120f99190612c78565b6121039190612cb4565b905060006121118285612b2c565b90504761211d82612411565b60006121298247612b2c565b9050600087602001518661213d9190612b2c565b6121479083612cb4565b9050600088602001518261215b9190612c78565b9050801561216d5761216d868261256b565b885160009061217d846002612c78565b6121879190612c78565b905080156121a557600f546121a5906001600160a01b03168261261d565b60408a01516000906121b8856002612c78565b6121c29190612c78565b905080156121e0576011546121e0906001600160a01b03168261261d565b60608b01516000906121f3866002612c78565b6121fd9190612c78565b9050801561221b5760105461221b906001600160a01b03168261261d565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b03831661229d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c7565b6001600160a01b0382166122ff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c7565b6001600160a01b038316600090815260208190526040902054818110156123775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c7565b6123818282612b2c565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906123b7908490612b14565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161240391815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244657612446612acf565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561249f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c39190612cd6565b816001815181106124d6576124d6612acf565b6001600160a01b0392831660209182029290920101526006546124fc9130911684611804565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612535908590600090869030904290600401612cf3565b600060405180830381600087803b15801561254f57600080fd5b505af1158015612563573d6000803e3d6000fd5b505050505050565b6006546125839030906001600160a01b031684611804565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156125f1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126169190612d64565b5050505050565b8047101561266d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109c7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126ba576040519150601f19603f3d011682016040523d82523d6000602084013e6126bf565b606091505b5050905080610b285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109c7565b801515811461180157600080fd5b803561274f81612736565b919050565b60006020828403121561276657600080fd5b813561277181612736565b9392505050565b600060208083528351808285015260005b818110156127a557858101830151858201604001528201612789565b818111156127b7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461180157600080fd5b803561274f816127cd565b6000806040838503121561280057600080fd5b823561280b816127cd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561284257600080fd5b823567ffffffffffffffff8082111561285a57600080fd5b818501915085601f83011261286e57600080fd5b813560208282111561288257612882612819565b8160051b604051601f19603f830116810181811086821117156128a7576128a7612819565b6040529283528183019350848101820192898411156128c557600080fd5b948201945b838610156128ea576128db866127e2565b855294820194938201936128ca565b96506128f99050878201612744565b9450505050509250929050565b6000806000806080858703121561291c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561294d57600080fd5b8335612958816127cd565b92506020840135612968816127cd565b929592945050506040919091013590565b6000806040838503121561298c57600080fd5b8235612997816127cd565b915060208301356129a781612736565b809150509250929050565b6000602082840312156129c457600080fd5b8135612771816127cd565b600080604083850312156129e257600080fd5b82356129ed816127cd565b915060208301356129a7816127cd565b600060208284031215612a0f57600080fd5b5035919050565b600080600060608486031215612a2b57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612a5557600080fd5b823561280b81612736565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612aa957607f821691505b602082108103612ac957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b0d57612b0d612ae5565b5060010190565b60008219821115612b2757612b27612ae5565b500190565b600082821015612b3e57612b3e612ae5565b500390565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b600181815b80851115612bc0578160001904821115612ba657612ba6612ae5565b80851615612bb357918102915b93841c9390800290612b8a565b509250929050565b600082612bd757506001610a91565b81612be457506000610a91565b8160018114612bfa5760028114612c0457612c20565b6001915050610a91565b60ff841115612c1557612c15612ae5565b50506001821b610a91565b5060208310610133831016604e8410600b8410161715612c43575081810a610a91565b612c4d8383612b85565b8060001904821115612c6157612c61612ae5565b029392505050565b600061277160ff841683612bc8565b6000816000190483118215151615612c9257612c92612ae5565b500290565b600060208284031215612ca957600080fd5b815161277181612736565b600082612cd157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ce857600080fd5b8151612771816127cd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d435784516001600160a01b031683529383019391830191600101612d1e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d7957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220733b4d2e791fbcc2fa6db975157359975ab5db30e0f07d3a0ea3a2cfb47c522a64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063715018a611610190578063c5d32bb2116100dc578063e517f2b911610095578063f2fde38b1161006f578063f2fde38b14610919578063f66895a314610939578063f887ea401461095c578063fbe6324e1461097c57600080fd5b8063e517f2b9146108bf578063edaa1168146108df578063ee36e359146108ff57600080fd5b8063c5d32bb2146107d3578063ca697d8f14610803578063ce64428614610823578063d2ce0db214610843578063dd62ed3e14610859578063e1b450ad1461089f57600080fd5b806395d89b4111610149578063a457c2d711610123578063a457c2d714610753578063a8aa1b3114610773578063a9059cbb14610793578063aacebbe3146107b357600080fd5b806395d89b41146106fe57806397973a2b14610713578063a364b0771461073357600080fd5b8063715018a61461061a578063728f8eea1461062f57806375f0a8741461067257806385141a77146106aa5780638cd4426d146106c05780638da5cb5b146106e057600080fd5b8063355496ca1161024f5780634ada218b11610208578063652e2f04116101e2578063652e2f04146105a257806366a88d96146105b85780636aa5b37f146105ce57806370a08231146105e457600080fd5b80634ada218b146105315780635d5345761461055257806360de666b1461058257600080fd5b8063355496ca1461047157806339509351146104915780633dcff94b146104b157806340b28c2f146104d157806342b6fa11146104f1578063441b1d301461051157600080fd5b80631675d802116102a15780631675d802146103d157806318160ddd146103f55780631c1702f31461040a57806323b872dd1461041f578063274a533c1461043f578063313ce5671461045557600080fd5b8063012ab8cb146102f457806306fdde0314610316578063095ea7b3146103415780630e375a5c14610371578063105cafb6146103915780631340538f146103b157600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612754565b61099d565b005b34801561032257600080fd5b5061032b6109ee565b6040516103389190612778565b60405180910390f35b34801561034d57600080fd5b5061036161035c3660046127ed565b610a80565b6040519015158152602001610338565b34801561037d57600080fd5b5061031461038c36600461282f565b610a97565b34801561039d57600080fd5b506103146103ac366004612906565b610b2d565b3480156103bd57600080fd5b506103146103cc366004612754565b610c01565b3480156103dd57600080fd5b506103e760085481565b604051908152602001610338565b34801561040157600080fd5b506002546103e7565b34801561041657600080fd5b50610314610c49565b34801561042b57600080fd5b5061036161043a366004612938565b610ce8565b34801561044b57600080fd5b506103e7600c5481565b34801561046157600080fd5b5060405160128152602001610338565b34801561047d57600080fd5b5061031461048c366004612979565b610d99565b34801561049d57600080fd5b506103616104ac3660046127ed565b610dee565b3480156104bd57600080fd5b506103146104cc3660046129b2565b610e25565b3480156104dd57600080fd5b506103146104ec3660046129cf565b610e97565b3480156104fd57600080fd5b5061031461050c3660046129fd565b610eef565b34801561051d57600080fd5b5061031461052c3660046129fd565b610fba565b34801561053d57600080fd5b5060075461036190600160b01b900460ff1681565b34801561055e57600080fd5b5061036161056d3660046129b2565b601b6020526000908152604090205460ff1681565b34801561058e57600080fd5b5061031461059d3660046129b2565b611022565b3480156105ae57600080fd5b506103e7600a5481565b3480156105c457600080fd5b506103e7600b5481565b3480156105da57600080fd5b506103e760095481565b3480156105f057600080fd5b506103e76105ff3660046129b2565b6001600160a01b031660009081526020819052604090205490565b34801561062657600080fd5b50610314611094565b34801561063b57600080fd5b506012546013546014546015546106529392919084565b604080519485526020850193909352918301526060820152608001610338565b34801561067e57600080fd5b50600f54610692906001600160a01b031681565b6040516001600160a01b039091168152602001610338565b3480156106b657600080fd5b5061069261dead81565b3480156106cc57600080fd5b506103146106db3660046127ed565b6110ca565b3480156106ec57600080fd5b506005546001600160a01b0316610692565b34801561070a57600080fd5b5061032b6111fd565b34801561071f57600080fd5b5061031461072e366004612906565b61120c565b34801561073f57600080fd5b50601154610692906001600160a01b031681565b34801561075f57600080fd5b5061036161076e3660046127ed565b611278565b34801561077f57600080fd5b50600754610692906001600160a01b031681565b34801561079f57600080fd5b506103616107ae3660046127ed565b611313565b3480156107bf57600080fd5b506103146107ce3660046129b2565b611320565b3480156107df57600080fd5b506103616107ee3660046129b2565b601a6020526000908152604090205460ff1681565b34801561080f57600080fd5b5061031461081e36600461282f565b611392565b34801561082f57600080fd5b50601054610692906001600160a01b031681565b34801561084f57600080fd5b506103e7601e5481565b34801561086557600080fd5b506103e76108743660046129cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108ab57600080fd5b506103146108ba366004612a16565b611423565b3480156108cb57600080fd5b506103146108da366004612a42565b6115cd565b3480156108eb57600080fd5b506103146108fa3660046129fd565b611674565b34801561090b57600080fd5b50601d546103619060ff1681565b34801561092557600080fd5b506103146109343660046129b2565b611769565b34801561094557600080fd5b506016546017546018546019546106529392919084565b34801561096857600080fd5b50600654610692906001600160a01b031681565b34801561098857600080fd5b5060075461036190600160a81b900460ff1681565b6005546001600160a01b031633146109d05760405162461bcd60e51b81526004016109c790612a60565b60405180910390fd5b60078054911515600160b01b0260ff60b01b19909216919091179055565b6060600380546109fd90612a95565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2990612a95565b8015610a765780601f10610a4b57610100808354040283529160200191610a76565b820191906000526020600020905b815481529060010190602001808311610a5957829003601f168201915b5050505050905090565b6000610a8d338484611804565b5060015b92915050565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016109c790612a60565b60005b8251811015610b285781601a6000858481518110610ae457610ae4612acf565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b2081612afb565b915050610ac4565b505050565b6005546001600160a01b03163314610b575760405162461bcd60e51b81526004016109c790612a60565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560638183610b998688612b14565b610ba39190612b14565b610bad9190612b14565b1115610bfb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c65737300000060448201526064016109c7565b50505050565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b81526004016109c790612a60565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610c735760405162461bcd60e51b81526004016109c790612a60565b600754600160b01b900460ff1615610ccd5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016109c7565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610cf5848484611928565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d7a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109c7565b610d8e8533610d898685612b2c565b611804565b506001949350505050565b6005546001600160a01b03163314610dc35760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a8d918590610d89908690612b14565b6005546001600160a01b03163314610e4f5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b038116610e755760405162461bcd60e51b81526004016109c790612b43565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ec15760405162461bcd60e51b81526004016109c790612a60565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610f195760405162461bcd60e51b81526004016109c790612a60565b620186a08111158015610f2c5750600081115b610f9e5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016109c7565b610faa6012600a612c69565b610fb49082612c78565b60085550565b6005546001600160a01b03163314610fe45760405162461bcd60e51b81526004016109c790612a60565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561101e573d6000803e3d6000fd5b5050565b6005546001600160a01b0316331461104c5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166110725760405162461bcd60e51b81526004016109c790612b43565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110be5760405162461bcd60e51b81526004016109c790612a60565b6110c86000612032565b565b6005546001600160a01b031633146110f45760405162461bcd60e51b81526004016109c790612a60565b306001600160a01b0383160361116b5760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016109c7565b816001600160a01b031663a9059cbb61118c6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156111d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190612c97565b6060600480546109fd90612a95565b6005546001600160a01b031633146112365760405162461bcd60e51b81526004016109c790612a60565b6040805160808101825285815260208101859052908101839052606001819052601284905560138390556014829055601581905560638183610b998688612b14565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109c7565b6113093385610d898685612b2c565b5060019392505050565b6000610a8d338484611928565b6005546001600160a01b0316331461134a5760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166113705760405162461bcd60e51b81526004016109c790612b43565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113bc5760405162461bcd60e51b81526004016109c790612a60565b60005b8251811015610b285781601b60008584815181106113df576113df612acf565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061141b81612afb565b9150506113bf565b6005546001600160a01b0316331461144d5760405162461bcd60e51b81526004016109c790612a60565b6127108310156114b15760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109c7565b6127108210156115165760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109c7565b620186a081101561157c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016109c7565b6115886012600a612c69565b6115929084612c78565b6009556115a16012600a612c69565b6115ab9083612c78565b600a5560126115bb90600a612c69565b6115c59082612c78565b600b55505050565b6005546001600160a01b031633146115f75760405162461bcd60e51b81526004016109c790612a60565b611602816001612c78565b601e55601d805460ff191683151517905561012c81111561101e5760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b60648201526084016109c7565b6005546001600160a01b0316331461169e5760405162461bcd60e51b81526004016109c790612a60565b600754600160b01b900460ff16156117065760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016109c7565b600a81106117645760405162461bcd60e51b815260206004820152602560248201527f446561646c696e652073686f756c64206265206c657373207468616e203520426044820152646c6f636b7360d81b60648201526084016109c7565b600d55565b6005546001600160a01b031633146117935760405162461bcd60e51b81526004016109c790612a60565b6001600160a01b0381166117f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109c7565b61180181612032565b50565b6001600160a01b0383166118665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109c7565b6001600160a01b0382166118c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109c7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161198a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109c7565b6001600160a01b0383166000908152601b602052604090205460ff161580156119cc57506001600160a01b0382166000908152601b602052604090205460ff16155b611a0f5760405162461bcd60e51b8152602060048201526014602482015273536e6970657273206e6f7420616c6c6f7765642160601b60448201526064016109c7565b6001600160a01b0383166000908152601a602052604090205460ff16158015611a5157506001600160a01b0382166000908152601a602052604090205460ff16155b15611aa557600754600160b01b900460ff16611aa55760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016109c7565b6007546001600160a01b038481169116148015611adb57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611af15750600754600160a01b900460ff16155b15611bc357600954811115611b485760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109c7565b600b5481611b6b846001600160a01b031660009081526020819052604090205490565b611b759190612b14565b1115611bc35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109c7565b6007546001600160a01b03848116911614801590611bfa57506001600160a01b0382166000908152601a602052604090205460ff16155b8015611c1f57506001600160a01b0383166000908152601a602052604090205460ff16155b8015611c355750600754600160a01b900460ff16155b15611dae57600a54811115611c8c5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109c7565b6007546001600160a01b03838116911614611d1c57600b5481611cc4846001600160a01b031660009081526020819052604090205490565b611cce9190612b14565b1115611d1c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109c7565b601d5460ff1615611dae576001600160a01b0383166000908152601c6020526040812054611d4a9042612b2c565b9050601e54811015611d915760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b60448201526064016109c7565b506001600160a01b0383166000908152601c602052604090204290555b6000806000611dde6040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611e2057506001600160a01b0387166000908152601a602052604090205460ff16155b8015611e3a5750600d54600c54611e379190612b14565b43105b600754909150600160a01b900460ff1680611e6d57506001600160a01b0388166000908152601a602052604090205460ff165b80611e9057506001600160a01b0387166000908152601a602052604090205460ff165b15611e9e5760009250611f92565b6007546001600160a01b038881169116148015611eb9575080155b15611f1e57601954601854601654601754611ed49190612b14565b611ede9190612b14565b611ee89190612b14565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611f92565b80611f8357601554601454601254601354611f399190612b14565b611f439190612b14565b611f4d9190612b14565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611f92565b8015611f9257600e5494508493505b6064611f9e8588612c78565b611fa89190612cb4565b600754909350600160a81b900460ff168015611fd257506007546001600160a01b03898116911614155b15611fe157611fe18583612084565b611ff58888611ff0868a612b2c565b612239565b8215612028578415612028576000606461200f8789612c78565b6120199190612cb4565b9050612026893083612239565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff1661101e576007805460ff60a01b1916600160a01b17905581156122285730600090815260208190526040902054600854811061222657600160085411156120d757506008545b60006120e4846002612c78565b90506000818460200151846120f99190612c78565b6121039190612cb4565b905060006121118285612b2c565b90504761211d82612411565b60006121298247612b2c565b9050600087602001518661213d9190612b2c565b6121479083612cb4565b9050600088602001518261215b9190612c78565b9050801561216d5761216d868261256b565b885160009061217d846002612c78565b6121879190612c78565b905080156121a557600f546121a5906001600160a01b03168261261d565b60408a01516000906121b8856002612c78565b6121c29190612c78565b905080156121e0576011546121e0906001600160a01b03168261261d565b60608b01516000906121f3866002612c78565b6121fd9190612c78565b9050801561221b5760105461221b906001600160a01b03168261261d565b505050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b03831661229d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109c7565b6001600160a01b0382166122ff5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109c7565b6001600160a01b038316600090815260208190526040902054818110156123775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109c7565b6123818282612b2c565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906123b7908490612b14565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161240391815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244657612446612acf565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561249f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c39190612cd6565b816001815181106124d6576124d6612acf565b6001600160a01b0392831660209182029290920101526006546124fc9130911684611804565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612535908590600090869030904290600401612cf3565b600060405180830381600087803b15801561254f57600080fd5b505af1158015612563573d6000803e3d6000fd5b505050505050565b6006546125839030906001600160a01b031684611804565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156125f1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126169190612d64565b5050505050565b8047101561266d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109c7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126ba576040519150601f19603f3d011682016040523d82523d6000602084013e6126bf565b606091505b5050905080610b285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109c7565b801515811461180157600080fd5b803561274f81612736565b919050565b60006020828403121561276657600080fd5b813561277181612736565b9392505050565b600060208083528351808285015260005b818110156127a557858101830151858201604001528201612789565b818111156127b7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461180157600080fd5b803561274f816127cd565b6000806040838503121561280057600080fd5b823561280b816127cd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561284257600080fd5b823567ffffffffffffffff8082111561285a57600080fd5b818501915085601f83011261286e57600080fd5b813560208282111561288257612882612819565b8160051b604051601f19603f830116810181811086821117156128a7576128a7612819565b6040529283528183019350848101820192898411156128c557600080fd5b948201945b838610156128ea576128db866127e2565b855294820194938201936128ca565b96506128f99050878201612744565b9450505050509250929050565b6000806000806080858703121561291c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561294d57600080fd5b8335612958816127cd565b92506020840135612968816127cd565b929592945050506040919091013590565b6000806040838503121561298c57600080fd5b8235612997816127cd565b915060208301356129a781612736565b809150509250929050565b6000602082840312156129c457600080fd5b8135612771816127cd565b600080604083850312156129e257600080fd5b82356129ed816127cd565b915060208301356129a7816127cd565b600060208284031215612a0f57600080fd5b5035919050565b600080600060608486031215612a2b57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612a5557600080fd5b823561280b81612736565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680612aa957607f821691505b602082108103612ac957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b0d57612b0d612ae5565b5060010190565b60008219821115612b2757612b27612ae5565b500190565b600082821015612b3e57612b3e612ae5565b500390565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b600181815b80851115612bc0578160001904821115612ba657612ba6612ae5565b80851615612bb357918102915b93841c9390800290612b8a565b509250929050565b600082612bd757506001610a91565b81612be457506000610a91565b8160018114612bfa5760028114612c0457612c20565b6001915050610a91565b60ff841115612c1557612c15612ae5565b50506001821b610a91565b5060208310610133831016604e8410600b8410161715612c43575081810a610a91565b612c4d8383612b85565b8060001904821115612c6157612c61612ae5565b029392505050565b600061277160ff841683612bc8565b6000816000190483118215151615612c9257612c92612ae5565b500290565b600060208284031215612ca957600080fd5b815161277181612736565b600082612cd157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ce857600080fd5b8151612771816127cd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d435784516001600160a01b031683529383019391830191600101612d1e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612d7957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220733b4d2e791fbcc2fa6db975157359975ab5db30e0f07d3a0ea3a2cfb47c522a64736f6c634300080f0033

Deployed Bytecode Sourcemap

11820:13981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23113:98;;;;;;;;;;-1:-1:-1;23113:98:0;;;;;:::i;:::-;;:::i;:::-;;2451:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14068:161;;;;;;;;;;-1:-1:-1;14068:161:0;;;;;:::i;:::-;;:::i;:::-;;;1878:14:1;;1871:22;1853:41;;1841:2;1826:18;14068:161:0;1713:187:1;24447:202:0;;;;;;;;;;-1:-1:-1;24447:202:0;;;;;:::i;:::-;;:::i;22377:336::-;;;;;;;;;;-1:-1:-1;22377:336:0;;;;;:::i;:::-;;:::i;21569:152::-;;;;;;;;;;-1:-1:-1;21569:152:0;;;;;:::i;:::-;;:::i;12087:56::-;;;;;;;;;;;;;;;;;;;3769:25:1;;;3757:2;3742:18;12087:56:0;3623:177:1;3571:108:0;;;;;;;;;;-1:-1:-1;3659:12:0;;3571:108;;22884:221;;;;;;;;;;;;;:::i;14237:448::-;;;;;;;;;;-1:-1:-1;14237:448:0;;;;;:::i;:::-;;:::i;12315:28::-;;;;;;;;;;;;;;;;3413:93;;;;;;;;;;-1:-1:-1;3413:93:0;;3496:2;4408:36:1;;4396:2;4381:18;3413:93:0;4266:184:1;24319:120:0;;;;;;;;;;-1:-1:-1;24319:120:0;;;;;:::i;:::-;;:::i;14693:248::-;;;;;;;;;;-1:-1:-1;14693:248:0;;;;;:::i;:::-;;:::i;23681:191::-;;;;;;;;;;-1:-1:-1;23681:191:0;;;;;:::i;:::-;;:::i;22721:155::-;;;;;;;;;;-1:-1:-1;22721:155:0;;;;;:::i;:::-;;:::i;21729:302::-;;;;;;;;;;-1:-1:-1;21729:302:0;;;;;:::i;:::-;;:::i;25385:112::-;;;;;;;;;;-1:-1:-1;25385:112:0;;;;;:::i;:::-;;:::i;12045:33::-;;;;;;;;;;-1:-1:-1;12045:33:0;;;;-1:-1:-1;;;12045:33:0;;;;;;13036:42;;;;;;;;;;-1:-1:-1;13036:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23880:197;;;;;;;;;;-1:-1:-1;23880:197:0;;;;;:::i;:::-;;:::i;12203:47::-;;;;;;;;;;;;;;;;12257:49;;;;;;;;;;;;;;;;12150:46;;;;;;;;;;;;;;;;3742:127;;;;;;;;;;-1:-1:-1;3742:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;10483:94;;;;;;;;;;;;;:::i;12892:38::-;;;;;;;;;;-1:-1:-1;12892:38:0;;;;;;;;;;;;;;;;;;;5903:25:1;;;5959:2;5944:18;;5937:34;;;;5987:18;;;5980:34;6045:2;6030:18;;6023:34;5890:3;5875:19;12892:38:0;5672:391:1;12423:75:0;;;;;;;;;;-1:-1:-1;12423:75:0;;;;-1:-1:-1;;;;;12423:75:0;;;;;;-1:-1:-1;;;;;6232:32:1;;;6214:51;;6202:2;6187:18;12423:75:0;6068:203:1;12665:79:0;;;;;;;;;;;;12702:42;12665:79;;25505:238;;;;;;;;;;-1:-1:-1;25505:238:0;;;;;:::i;:::-;;:::i;10260:87::-;;;;;;;;;;-1:-1:-1;10333:6:0;;-1:-1:-1;;;;;10333:6:0;10260:87;;2670:104;;;;;;;;;;;;;:::i;22039:330::-;;;;;;;;;;-1:-1:-1;22039:330:0;;;;;:::i;:::-;;:::i;12588:73::-;;;;;;;;;;-1:-1:-1;12588:73:0;;;;-1:-1:-1;;;;;12588:73:0;;;14949:410;;;;;;;;;;-1:-1:-1;14949:410:0;;;;;:::i;:::-;;:::i;11935:19::-;;;;;;;;;;-1:-1:-1;11935:19:0;;;;-1:-1:-1;;;;;11935:19:0;;;15367:165;;;;;;;;;;-1:-1:-1;15367:165:0;;;;;:::i;:::-;;:::i;23478:195::-;;;;;;;;;;-1:-1:-1;23478:195:0;;;;;:::i;:::-;;:::i;12988:41::-;;;;;;;;;;-1:-1:-1;12988:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24657:204;;;;;;;;;;-1:-1:-1;24657:204:0;;;;;:::i;:::-;;:::i;12505:76::-;;;;;;;;;;-1:-1:-1;12505:76:0;;;;-1:-1:-1;;;;;12505:76:0;;;13198: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;24869:508;;;;;;;;;;-1:-1:-1;24869:508:0;;;;;:::i;:::-;;:::i;24085:226::-;;;;;;;;;;-1:-1:-1;24085:226:0;;;;;:::i;:::-;;:::i;23219:251::-;;;;;;;;;;-1:-1:-1;23219:251:0;;;;;:::i;:::-;;:::i;13156:35::-;;;;;;;;;;-1:-1:-1;13156:35:0;;;;;;;;10585:192;;;;;;;;;;-1:-1:-1;10585:192:0;;;;;:::i;:::-;;:::i;12937:42::-;;;;;;;;;;-1:-1:-1;12937:42:0;;;;;;;;;;;;;;;11907:21;;;;;;;;;;-1:-1:-1;11907:21:0;;;;-1:-1:-1;;;;;11907:21:0;;;12001:37;;;;;;;;;;-1:-1:-1;12001:37:0;;;;-1:-1:-1;;;12001:37:0;;;;;;23113:98;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;;;;;;;;;23180:14:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;23180:23:0::1;-1:-1:-1::0;;;;23180:23:0;;::::1;::::0;;;::::1;::::0;;23113:98::o;2451:100::-;2505:13;2538:5;2531:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:100;:::o;14068:161::-;14143:4;14160:39;253:10;14183:7;14192:6;14160:8;:39::i;:::-;-1:-1:-1;14217:4:0;14068:161;;;;;:::o;24447:202::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;24544:9:::1;24539:103;24563:8;:15;24559:1;:19;24539:103;;;24625:5;24600:9;:22;24610:8;24619:1;24610:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24600:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24600:22:0;:30;;-1:-1:-1;;24600:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24580:3;::::1;::::0;::::1;:::i;:::-;;;;24539:103;;;;24447:202:::0;;:::o;22377:336::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22556:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;22544:9:::1;:59:::0;;;;;;;;;;;;;;;22669:2:::1;22598:4:::0;22587:8;22623:23:::1;22574:10:::0;22562;22623:23:::1;:::i;:::-;:34;;;;:::i;:::-;:41;;;;:::i;:::-;22622:49;;22614:91;;;::::0;-1:-1:-1;;;22614:91:0;;8619:2:1;22614:91:0::1;::::0;::::1;8601:21:1::0;8658:2;8638:18;;;8631:30;8697:31;8677:18;;;8670:59;8746:18;;22614:91:0::1;8417:353:1::0;22614:91:0::1;22377:336:::0;;;;:::o;21569:152::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21687:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21687:26:0::1;-1:-1:-1::0;;;;21687:26:0;;::::1;::::0;;;::::1;::::0;;21569:152::o;22884:221::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22947:14:::1;::::0;-1:-1:-1;;;22947:14:0;::::1;;;22946:15;22938:52;;;::::0;-1:-1:-1;;;22938:52:0;;8977:2:1;22938:52:0::1;::::0;::::1;8959:21:1::0;9016:2;8996:18;;;8989:30;9055:26;9035:18;;;9028:54;9099:18;;22938:52:0::1;8775:348:1::0;22938:52:0::1;23001:14;:21:::0;;-1:-1:-1;;;;23033:25:0;-1:-1:-1;;;23033:25:0;;;23085:12:::1;23069:13;:28:::0;22884:221::o;14237:448::-;14369:4;14386:36;14396:6;14404:9;14415:6;14386:9;:36::i;:::-;-1:-1:-1;;;;;14462:19:0;;14435:24;14462:19;;;:11;:19;;;;;;;;253:10;14462:33;;;;;;;;14514:26;;;;14506:79;;;;-1:-1:-1;;;14506:79:0;;9330:2:1;14506:79:0;;;9312:21:1;9369:2;9349:18;;;9342:30;9408:34;9388:18;;;9381:62;-1:-1:-1;;;9459:18:1;;;9452:38;9507:19;;14506:79:0;9128:404:1;14506:79:0;14596:57;14605:6;253:10;14627:25;14646:6;14627:16;:25;:::i;:::-;14596:8;:57::i;:::-;-1:-1:-1;14673:4:0;;14237:448;-1:-1:-1;;;;14237:448:0:o;24319: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;;;;;24404:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;24404:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24319:120::o;14693:248::-;253:10;14809:4;14863:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14863:34:0;;;;;;;;;;14809:4;;14831:80;;14854:7;;14863:47;;14900:10;;14863:47;:::i;23681:191::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23767:23:0;::::1;23759:69;;;;-1:-1:-1::0;;;23759:69:0::1;;;;;;;:::i;:::-;23839:13;:25:::0;;-1:-1:-1;;;;;;23839:25:0::1;-1:-1:-1::0;;;;;23839:25:0;;;::::1;::::0;;;::::1;::::0;;23681:191::o;22721:155::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22816:6:::1;:27:::0;;-1:-1:-1;;;;;22816:27:0;;::::1;-1:-1:-1::0;;;;;;22816:27:0;;::::1;;::::0;;;22854:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;22721:155::o;21729:302::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;21867:7:::1;21853:10;:21;;:39;;;;;21891:1;21878:10;:14;21853:39;21845:114;;;::::0;-1:-1:-1;;;21845:114:0;;10272:2:1;21845:114:0::1;::::0;::::1;10254:21:1::0;10311:2;10291:18;;;10284:30;10350:34;10330:18;;;10323:62;10421:32;10401:18;;;10394:60;10471:19;;21845:114:0::1;10070:426:1::0;21845:114:0::1;22009:14;3496:2:::0;22009::::1;:14;:::i;:::-;21996:27;::::0;:10;:27:::1;:::i;:::-;21970:23;:53:::0;-1:-1:-1;21729:302:0:o;25385:112::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;10333:6;;25453:36:::1;::::0;-1:-1:-1;;;;;10333:6:0;;;;25453:36;::::1;;;::::0;25479:9;;25453:36:::1;::::0;;;25479:9;10333:6;25453:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25385:112:::0;:::o;23880:197::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23969:23:0;::::1;23961:69;;;;-1:-1:-1::0;;;23961:69:0::1;;;;;;;:::i;:::-;24041:16;:28:::0;;-1:-1:-1;;;;;;24041:28:0::1;-1:-1:-1::0;;;;;24041:28:0;;;::::1;::::0;;;::::1;::::0;;23880:197::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;25505:238::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;25618:4:::1;-1:-1:-1::0;;;;;25598:25:0;::::1;::::0;25590:92:::1;;;::::0;-1:-1:-1;;;25590:92:0;;12259:2:1;25590:92:0::1;::::0;::::1;12241:21:1::0;12298:2;12278:18;;;12271:30;12337:34;12317:18;;;12310:62;-1:-1:-1;;;12388:18:1;;;12381:52;12450:19;;25590:92:0::1;12057:418:1::0;25590:92:0::1;25700:8;-1:-1:-1::0;;;;;25693:25:0::1;;25719:7;10333:6:::0;;-1:-1:-1;;;;;10333:6:0;;10260:87;25719:7:::1;25693:42;::::0;-1:-1:-1;;;;;;25693:42:0::1;::::0;;;;;;-1:-1:-1;;;;;12672:32:1;;;25693:42:0::1;::::0;::::1;12654:51:1::0;12721:18;;;12714:34;;;12627:18;;25693:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2670:104::-:0;2726:13;2759:7;2752:14;;;;;:::i;22039:330::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;22213:46:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;22205:5:::1;:54:::0;;;;;;;;;;;;;;;22325:2:::1;22254:4:::0;22244:8;22279:23:::1;22231:10:::0;22219;22279:23:::1;:::i;14949:410::-:0;253:10;15070:4;15119:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15119:34:0;;;;;;;;;;15172:35;;;;15164:85;;;;-1:-1:-1;;;15164:85:0;;13211:2:1;15164:85:0;;;13193:21:1;13250:2;13230:18;;;13223:30;13289:34;13269:18;;;13262:62;-1:-1:-1;;;13340:18:1;;;13333:35;13385:19;;15164:85:0;13009:401:1;15164:85:0;15260:67;253:10;15283:7;15292:34;15311:15;15292:16;:34;:::i;15260:67::-;-1:-1:-1;15347:4:0;;14949:410;-1:-1:-1;;;14949:410:0:o;15367:165::-;15445:4;15462:40;15472:10;15484:9;15495:6;15462:9;:40::i;23478: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;;;;;23566:23:0;::::1;23558:69;;;;-1:-1:-1::0;;;23558:69:0::1;;;;;;;:::i;:::-;23638:15;:27:::0;;-1:-1:-1;;;;;;23638:27:0::1;-1:-1:-1::0;;;;;23638:27:0;;;::::1;::::0;;;::::1;::::0;;23478:195::o;24657:204::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;24755:9:::1;24750:104;24774:8;:15;24770:1;:19;24750:104;;;24837:5;24811:10;:23;24822:8;24831:1;24822:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24811:23:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24811:23:0;:31;;-1:-1:-1;;24811:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24791:3;::::1;::::0;::::1;:::i;:::-;;;;24750:104;;24869:508:::0;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;24995:6:::1;24985;:16;;24977:70;;;::::0;-1:-1:-1;;;24977:70:0;;13617:2:1;24977:70:0::1;::::0;::::1;13599:21:1::0;13656:2;13636:18;;;13629:30;13695:34;13675:18;;;13668:62;-1:-1:-1;;;13746:18:1;;;13739:39;13795:19;;24977:70:0::1;13415:405:1::0;24977:70:0::1;25077:6;25066:7;:17;;25058:72;;;::::0;-1:-1:-1;;;25058:72:0;;14027:2:1;25058:72:0::1;::::0;::::1;14009:21:1::0;14066:2;14046:18;;;14039:30;14105:34;14085:18;;;14078:62;-1:-1:-1;;;14156:18:1;;;14149:40;14206:19;;25058:72:0::1;13825:406:1::0;25058:72:0::1;25162:7;25149:9;:20;;25141:75;;;::::0;-1:-1:-1;;;25141:75:0;;14438:2:1;25141:75:0::1;::::0;::::1;14420:21:1::0;14477:2;14457:18;;;14450:30;14516:34;14496:18;;;14489:62;-1:-1:-1;;;14567:18:1;;;14560:40;14617:19;;25141:75:0::1;14236:406:1::0;25141:75:0::1;25250:14;3496:2:::0;25250::::1;:14;:::i;:::-;25241:23;::::0;:6;:23:::1;:::i;:::-;25227:11;:37:::0;25300:14:::1;3496:2:::0;25300::::1;:14;:::i;:::-;25290:24;::::0;:7;:24:::1;:::i;:::-;25275:12;:39:::0;3496:2;25354:14:::1;::::0;:2:::1;:14;:::i;:::-;25342:26;::::0;:9;:26:::1;:::i;:::-;25325:14;:43:::0;-1:-1:-1;;;24869:508:0:o;24085:226::-;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;24180:16:::1;:4:::0;24187:9:::1;24180:16;:::i;:::-;24165:12;:31:::0;24207:15:::1;:23:::0;;-1:-1:-1;;24207:23:0::1;::::0;::::1;;;::::0;;24257:3:::1;24249:11:::0;::::1;;24241:62;;;::::0;-1:-1:-1;;;24241:62:0;;14849:2:1;24241:62:0::1;::::0;::::1;14831:21:1::0;14888:2;14868:18;;;14861:30;14927:34;14907:18;;;14900:62;-1:-1:-1;;;14978:18:1;;;14971:36;15024:19;;24241:62:0::1;14647:402:1::0;23219:251:0;10333:6;;-1:-1:-1;;;;;10333:6:0;253:10;10395:23;10387:68;;;;-1:-1:-1;;;10387:68:0;;;;;;;:::i;:::-;23301:14:::1;::::0;-1:-1:-1;;;23301:14:0;::::1;;;23300:15;23292:65;;;::::0;-1:-1:-1;;;23292:65:0;;15256:2:1;23292:65:0::1;::::0;::::1;15238:21:1::0;15295:2;15275:18;;;15268:30;15334:34;15314:18;;;15307:62;-1:-1:-1;;;15385:18:1;;;15378:35;15430:19;;23292:65:0::1;15054:401:1::0;23292:65:0::1;23388:2;23376:9;:14;23368:63;;;::::0;-1:-1:-1;;;23368:63:0;;15662:2:1;23368:63:0::1;::::0;::::1;15644:21:1::0;15701:2;15681:18;;;15674:30;15740:34;15720:18;;;15713:62;-1:-1:-1;;;15791:18:1;;;15784:35;15836:19;;23368:63:0::1;15460:401:1::0;23368:63:0::1;23442:8;:20:::0;23219: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;;16068:2:1;10666:73:0::1;::::0;::::1;16050:21:1::0;16107:2;16087:18;;;16080:30;16146:34;16126:18;;;16119:62;-1:-1:-1;;;16197:18:1;;;16190:36;16243:19;;10666:73:0::1;15866:402:1::0;10666:73:0::1;10750:19;10760:8;10750:9;:19::i;:::-;10585:192:::0;:::o;9293:380::-;-1:-1:-1;;;;;9429:19:0;;9421:68;;;;-1:-1:-1;;;9421:68:0;;16475:2:1;9421:68:0;;;16457:21:1;16514:2;16494:18;;;16487:30;16553:34;16533:18;;;16526:62;-1:-1:-1;;;16604:18:1;;;16597:34;16648:19;;9421:68:0;16273:400:1;9421:68:0;-1:-1:-1;;;;;9508:21:0;;9500:68;;;;-1:-1:-1;;;9500:68:0;;16880:2:1;9500:68:0;;;16862:21:1;16919:2;16899:18;;;16892:30;16958:34;16938:18;;;16931:62;-1:-1:-1;;;17009:18:1;;;17002:32;17051:19;;9500:68:0;16678:398:1;9500:68:0;-1:-1:-1;;;;;9581:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9633:32;;3769:25:1;;;9633:32:0;;3742:18:1;9633:32:0;;;;;;;9293:380;;;:::o;15540:3152::-;15690:1;15681:6;:10;15673:64;;;;-1:-1:-1;;;15673:64:0;;17283:2:1;15673:64:0;;;17265:21:1;17322:2;17302:18;;;17295:30;17361:34;17341:18;;;17334:62;-1:-1:-1;;;17412:18:1;;;17405:39;17461:19;;15673:64:0;17081:405:1;15673:64:0;-1:-1:-1;;;;;15757:18:0;;;;;;:10;:18;;;;;;;;15756:19;:45;;;;-1:-1:-1;;;;;;15780:21:0;;;;;;:10;:21;;;;;;;;15779:22;15756:45;15748:78;;;;-1:-1:-1;;;15748:78:0;;17693:2:1;15748:78:0;;;17675:21:1;17732:2;17712:18;;;17705:30;-1:-1:-1;;;17751:18:1;;;17744:50;17811:18;;15748:78:0;17491:344:1;15748:78:0;-1:-1:-1;;;;;15844:17:0;;;;;;:9;:17;;;;;;;;15843:18;:43;;;;-1:-1:-1;;;;;;15866:20:0;;;;;;:9;:20;;;;;;;;15865:21;15843:43;15839:122;;;15911:14;;-1:-1:-1;;;15911:14:0;;;;15903:46;;;;-1:-1:-1;;;15903:46:0;;18042:2:1;15903:46:0;;;18024:21:1;18081:2;18061:18;;;18054:30;-1:-1:-1;;;18100:18:1;;;18093:49;18159:18;;15903:46:0;17840:343:1;15903:46:0;15987:4;;-1:-1:-1;;;;;15977:14:0;;;15987:4;;15977:14;:39;;;;-1:-1:-1;;;;;;15996:20:0;;;;;;:9;:20;;;;;;;;15995:21;15977:39;:54;;;;-1:-1:-1;16021:10:0;;-1:-1:-1;;;16021:10:0;;;;16020:11;15977:54;15973:306;;;16066:11;;16056:6;:21;;16048:63;;;;-1:-1:-1;;;16048:63:0;;18390:2:1;16048:63:0;;;18372:21:1;18429:2;18409:18;;;18402:30;18468:31;18448:18;;;18441:59;18517:18;;16048:63:0;18188:353:1;16048:63:0;16185:14;;16175:6;16152:20;16162:9;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;16152:20;:29;;;;:::i;:::-;:47;;16126:141;;;;-1:-1:-1;;;16126:141:0;;18748:2:1;16126:141:0;;;18730:21:1;;;18767:18;;;18760:30;18826:34;18806:18;;;18799:62;18878:18;;16126:141:0;18546:356:1;16126:141:0;16319:4;;-1:-1:-1;;;;;16309:14:0;;;16319:4;;16309:14;;;;:39;;-1:-1:-1;;;;;;16328:20:0;;;;;;:9;:20;;;;;;;;16327:21;16309:39;:61;;;;-1:-1:-1;;;;;;16353:17:0;;;;;;:9;:17;;;;;;;;16352:18;16309:61;:76;;;;-1:-1:-1;16375:10:0;;-1:-1:-1;;;16375:10:0;;;;16374:11;16309:76;16291:677;;;16430:12;;16420:6;:22;;16412:65;;;;-1:-1:-1;;;16412:65:0;;19109:2:1;16412:65:0;;;19091:21:1;19148:2;19128:18;;;19121:30;19187:32;19167:18;;;19160:60;19237:18;;16412:65:0;18907:354:1;16412:65:0;16509:4;;-1:-1:-1;;;;;16496:17:0;;;16509:4;;16496:17;16492:211;;16597:14;;16587:6;16564:20;16574:9;-1:-1:-1;;;;;3843:18:0;3816:7;3843:18;;;;;;;;;;;;3742:127;16564:20;:29;;;;:::i;:::-;:47;;16534:153;;;;-1:-1:-1;;;16534:153:0;;18748:2:1;16534:153:0;;;18730:21:1;;;18767:18;;;18760:30;18826:34;18806:18;;;18799:62;18878:18;;16534:153:0;18546:356:1;16534:153:0;16721:15;;;;16717:240;;;-1:-1:-1;;;;;16796:17:0;;16757:18;16796:17;;;:9;:17;;;;;;16778:35;;:15;:35;:::i;:::-;16757:56;;16854:12;;16840:10;:26;;16832:55;;;;-1:-1:-1;;;16832:55:0;;19468:2:1;16832:55:0;;;19450:21:1;19507:2;19487:18;;;19480:30;-1:-1:-1;;;19526:18:1;;;19519:46;19582:18;;16832:55:0;19266:340:1;16832:55:0;-1:-1:-1;;;;;;16906:17:0;;;;;;:9;:17;;;;;16926:15;16906:35;;16717:240;16980:15;17006:14;17031:11;17053:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17053:25:0;-1:-1:-1;;;;;17112:17:0;;17091;17112;;;:9;:17;;;;;;;;17111:18;:56;;;;-1:-1:-1;;;;;;17147:20:0;;;;;;:9;:20;;;;;;;;17146:21;17111:56;:112;;;;;17215:8;;17199:13;;:24;;;;:::i;:::-;17184:12;:39;17111:112;17311:10;;17091:132;;-1:-1:-1;;;;17311:10:0;;;;;:31;;-1:-1:-1;;;;;;17325:17:0;;;;;;:9;:17;;;;;;;;17311:31;:55;;;-1:-1:-1;;;;;;17346:20:0;;;;;;:9;:20;;;;;;;;17311:55;17307:805;;;17387:1;17381:7;;17307:805;;;17452:4;;-1:-1:-1;;;;;17439:17:0;;;17452:4;;17439:17;:34;;;;;17461:12;17460:13;17439:34;17435:677;;;17644:19;;17595:17;;17644:9;17556:19;17517;;:58;;17556:19;17517:58;:::i;:::-;:95;;;;:::i;:::-;:146;;;;:::i;:::-;17709:24;;;;;;;;17724:9;17709:24;;;;;;;;;;;;;;;;;;;;;;;;17490:173;;-1:-1:-1;17490:173:0;;-1:-1:-1;17709:24:0;-1:-1:-1;17435:677:0;;;17756:12;17751:361;;17915:15;;17882:13;;17915:5;17847:15;17812;;:50;;17847:15;17812:50;:::i;:::-;:83;;;;:::i;:::-;:118;;;;:::i;:::-;17977:20;;;;;;;;17992:5;17977:20;;;;;;;;;;;;;;;;;;;;;;;;17785:145;;-1:-1:-1;17785:145:0;;-1:-1:-1;17977:20:0;-1:-1:-1;17751:361:0;;;18019:12;18015:97;;;18058:9;;;-1:-1:-1;18058:9:0;;-1:-1:-1;18015:97:0;18150:3;18131:15;18140:6;18131;:15;:::i;:::-;18130:23;;;;:::i;:::-;18267:18;;18124:29;;-1:-1:-1;;;;18267:18:0;;;;:36;;;;-1:-1:-1;18299:4:0;;-1:-1:-1;;;;;18289:14:0;;;18299:4;;18289:14;;18267:36;18263:72;;;18305:30;18313:7;18322:12;18305:7;:30::i;:::-;18377:48;18393:6;18401:9;18412:12;18421:3;18412:6;:12;:::i;:::-;18377:15;:48::i;:::-;18440:7;;18436:249;;18512:11;;18508:164;;18544:17;18585:3;18565:16;18574:7;18565:6;:16;:::i;:::-;18564:24;;;;:::i;:::-;18544:44;;18607:49;18623:6;18639:4;18646:9;18607:15;:49::i;:::-;18525:147;18508:164;15662:3030;;;;;15540:3152;;;:::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;18700:1811::-;13285:10;;-1:-1:-1;;;13285:10:0;;;;13280:110;;13312:10;:17;;-1:-1:-1;;;;13312:17:0;-1:-1:-1;;;13312:17:0;;;18791:49;;18822:7:::1;18791:49;18896:4;18852:23;3843:18:::0;;;;;;;;;;;18936:23:::1;::::0;18917:42;::::1;18913:1591;;19006:1;18980:23;;:27;18976:109;;;-1:-1:-1::0;19046:23:0::1;::::0;18976:109:::1;19156:19;19178:11;:7:::0;19188:1:::1;19178:11;:::i;:::-;19156:33;;19204:32;19298:11;19258:9;:19;;;19240:15;:37;;;;:::i;:::-;19239:70;;;;:::i;:::-;19204:105:::0;-1:-1:-1;19324:14:0::1;19341:42;19204:105:::0;19341:15;:42:::1;:::i;:::-;19324:59:::0;-1:-1:-1;19425:21:0::1;19463:24;19324:59:::0;19463:16:::1;:24::i;:::-;19504:20;19527:38;19551:14:::0;19527:21:::1;:38;:::i;:::-;19504:61;;19580:19;19632:9;:19;;;19618:11;:33;;;;:::i;:::-;19602:50;::::0;:12;:50:::1;:::i;:::-;19580:72;;19667:29;19713:9;:19;;;19699:11;:33;;;;:::i;:::-;19667:65:::0;-1:-1:-1;19753:25:0;;19749:172:::1;;19844:61;19857:24;19883:21;19844:12;:61::i;:::-;19978:19:::0;;19937:20:::1;::::0;19960:15:::1;:11:::0;19974:1:::1;19960:15;:::i;:::-;:37;;;;:::i;:::-;19937:60:::0;-1:-1:-1;20016:16:0;;20012:105:::1;;20061:15;::::0;20053:48:::1;::::0;-1:-1:-1;;;;;20061:15:0::1;20088:12:::0;20053:34:::1;:48::i;:::-;20172:17;::::0;::::1;::::0;20133:18:::1;::::0;20154:15:::1;:11:::0;20168:1:::1;20154:15;:::i;:::-;:35;;;;:::i;:::-;20133:56:::0;-1:-1:-1;20208:14:0;;20204:99:::1;;20251:13;::::0;20243:44:::1;::::0;-1:-1:-1;;;;;20251:13:0::1;20276:10:::0;20243:32:::1;:44::i;:::-;20357:19;::::0;::::1;::::0;20319:17:::1;::::0;20339:15:::1;:11:::0;20353:1:::1;20339:15;:::i;:::-;:37;;;;:::i;:::-;20319:57:::0;-1:-1:-1;20395:13:0;;20391:100:::1;;20437:16;::::0;20429:46:::1;::::0;-1:-1:-1;;;;;20437:16:0::1;20465:9:::0;20429:35:::1;:46::i;:::-;18961:1543;;;;;;;;;;18913:1591;18778:1733;13344:1;13360:10:::0;:18;;-1:-1:-1;;;;13360:18:0;;;18700:1811;;:::o;7874:578::-;-1:-1:-1;;;;;8014:20:0;;8006:70;;;;-1:-1:-1;;;8006:70:0;;20035:2:1;8006:70:0;;;20017:21:1;20074:2;20054:18;;;20047:30;20113:34;20093:18;;;20086:62;-1:-1:-1;;;20164:18:1;;;20157:35;20209:19;;8006:70:0;19833:401:1;8006:70:0;-1:-1:-1;;;;;8095:23:0;;8087:71;;;;-1:-1:-1;;;8087:71:0;;20441:2:1;8087:71:0;;;20423:21:1;20480:2;20460:18;;;20453:30;20519:34;20499:18;;;20492:62;-1:-1:-1;;;20570:18:1;;;20563:33;20613:19;;8087:71:0;20239: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;;20845:2:1;8223:74:0;;;20827:21:1;20884:2;20864:18;;;20857:30;20923:34;20903:18;;;20896:62;-1:-1:-1;;;20974:18:1;;;20967:36;21020:19;;8223:74:0;20643: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;;;;3769:25:1;;3757:2;3742:18;;3623:177;8409:35:0;;;;;;;;7995:457;7874:578;;;:::o;20519:534::-;20669:16;;;20683:1;20669:16;;;;;;;;20645:21;;20669:16;;;;;;;;;;-1:-1:-1;20669:16:0;20645:40;;20714:4;20696;20701:1;20696:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20696:23:0;;;:7;;;;;;;;;;:23;;;;20740:6;;:13;;;-1:-1:-1;;;20740:13:0;;;;:6;;;;;:11;;:13;;;;;20696:7;;20740:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20730:4;20735:1;20730:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20730:23:0;;;:7;;;;;;;;;:23;20798:6;;20766:53;;20783:4;;20798:6;20807:11;20766:8;:53::i;:::-;20858:6;;:187;;-1:-1:-1;;;20858:187:0;;-1:-1:-1;;;;;20858:6:0;;;;:57;;:187;;20930:11;;20858:6;;20972:4;;20999;;21019:15;;20858:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20574:479;20519:534;:::o;21061:500::-;21241:6;;21209:53;;21226:4;;-1:-1:-1;;;;;21241:6:0;21250:11;21209:8;:53::i;:::-;21305:6;;:248;;-1:-1:-1;;;21305:248:0;;21370:4;21305:248;;;22632:34:1;22682:18;;;22675:34;;;21305:6:0;22725:18:1;;;22718:34;;;22768:18;;;22761:34;12702:42:0;22811:19:1;;;22804:44;21527:15:0;22864:19:1;;;22857:35;-1:-1:-1;;;;;21305:6:0;;;;:22;;21336:9;;22566:19:1;;21305:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21061:500;;:::o;9703:319::-;9818:6;9793:21;:31;;9785:73;;;;-1:-1:-1;;;9785:73:0;;23416:2:1;9785:73:0;;;23398:21:1;23455:2;23435:18;;;23428:30;23494:31;23474:18;;;23467:59;23543:18;;9785:73:0;23214: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;;23984:2:1;9936:78:0;;;23966:21:1;24023:2;24003:18;;;23996:30;24062:34;24042:18;;;24035:62;24133:28;24113:18;;;24106:56;24179:19;;9936:78:0;23782: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;3233:385::-;3319:6;3327;3335;3343;3396:3;3384:9;3375:7;3371:23;3367:33;3364:53;;;3413:1;3410;3403:12;3364:53;-1:-1:-1;;3436:23:1;;;3506:2;3491:18;;3478:32;;-1:-1:-1;3557:2:1;3542:18;;3529:32;;3608:2;3593:18;3580:32;;-1:-1:-1;3233:385:1;-1:-1:-1;3233:385:1:o;3805:456::-;3882:6;3890;3898;3951:2;3939:9;3930:7;3926:23;3922:32;3919:52;;;3967:1;3964;3957:12;3919:52;4006:9;3993:23;4025:31;4050:5;4025:31;:::i;:::-;4075:5;-1:-1:-1;4132:2:1;4117:18;;4104:32;4145:33;4104:32;4145:33;:::i;:::-;3805:456;;4197:7;;-1:-1:-1;;;4251:2:1;4236:18;;;;4223:32;;3805:456::o;4455:382::-;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:30;4734:32;4775:30;:::i;:::-;4824:7;4814:17;;;4455:382;;;;;:::o;4842:247::-;4901:6;4954:2;4942:9;4933:7;4929:23;4925:32;4922:52;;;4970:1;4967;4960:12;4922:52;5009:9;4996:23;5028:31;5053:5;5028:31;:::i;5094:388::-;5162:6;5170;5223:2;5211:9;5202:7;5198:23;5194:32;5191:52;;;5239:1;5236;5229:12;5191:52;5278:9;5265:23;5297:31;5322:5;5297:31;:::i;:::-;5347:5;-1:-1:-1;5404:2:1;5389:18;;5376:32;5417:33;5376:32;5417:33;:::i;5487:180::-;5546:6;5599:2;5587:9;5578:7;5574:23;5570:32;5567:52;;;5615:1;5612;5605:12;5567:52;-1:-1:-1;5638:23:1;;5487:180;-1:-1:-1;5487:180:1:o;6276:316::-;6353:6;6361;6369;6422:2;6410:9;6401:7;6397:23;6393:32;6390:52;;;6438:1;6435;6428:12;6390:52;-1:-1:-1;;6461:23:1;;;6531:2;6516:18;;6503:32;;-1:-1:-1;6582:2:1;6567:18;;;6554:32;;6276:316;-1:-1:-1;6276:316:1:o;6597:309::-;6662:6;6670;6723:2;6711:9;6702:7;6698:23;6694:32;6691:52;;;6739:1;6736;6729:12;6691:52;6778:9;6765:23;6797:28;6819:5;6797:28;:::i;7134:356::-;7336:2;7318:21;;;7355:18;;;7348:30;7414:34;7409:2;7394:18;;7387:62;7481:2;7466:18;;7134:356::o;7495:380::-;7574:1;7570:12;;;;7617;;;7638:61;;7692:4;7684:6;7680:17;7670:27;;7638:61;7745:2;7737:6;7734:14;7714:18;7711:38;7708:161;;7791:10;7786:3;7782:20;7779:1;7772:31;7826:4;7823:1;7816:15;7854:4;7851:1;7844:15;7708:161;;7495:380;;;:::o;7880:127::-;7941:10;7936:3;7932:20;7929:1;7922:31;7972:4;7969:1;7962:15;7996:4;7993:1;7986:15;8012:127;8073:10;8068:3;8064:20;8061:1;8054:31;8104:4;8101:1;8094:15;8128:4;8125:1;8118:15;8144:135;8183:3;8204:17;;;8201:43;;8224:18;;:::i;:::-;-1:-1:-1;8271:1:1;8260:13;;8144:135::o;8284:128::-;8324:3;8355:1;8351:6;8348:1;8345:13;8342:39;;;8361:18;;:::i;:::-;-1:-1:-1;8397:9:1;;8284:128::o;9537:125::-;9577:4;9605:1;9602;9599:8;9596:34;;;9610:18;;:::i;:::-;-1:-1:-1;9647:9:1;;9537:125::o;9667:398::-;9869:2;9851:21;;;9908:2;9888:18;;;9881:30;9947:34;9942:2;9927:18;;9920:62;-1:-1:-1;;;10013:2:1;9998:18;;9991:32;10055:3;10040:19;;9667:398::o;10501:422::-;10590:1;10633:5;10590:1;10647:270;10668:7;10658:8;10655:21;10647:270;;;10727:4;10723:1;10719:6;10715:17;10709:4;10706:27;10703:53;;;10736:18;;:::i;:::-;10786:7;10776:8;10772:22;10769:55;;;10806:16;;;;10769:55;10885:22;;;;10845:15;;;;10647:270;;;10651:3;10501:422;;;;;:::o;10928:806::-;10977:5;11007:8;10997:80;;-1:-1:-1;11048:1:1;11062:5;;10997:80;11096:4;11086:76;;-1:-1:-1;11133:1:1;11147:5;;11086:76;11178:4;11196:1;11191:59;;;;11264:1;11259:130;;;;11171:218;;11191:59;11221:1;11212:10;;11235:5;;;11259:130;11296:3;11286:8;11283:17;11280:43;;;11303:18;;:::i;:::-;-1:-1:-1;;11359:1:1;11345:16;;11374:5;;11171:218;;11473:2;11463:8;11460:16;11454:3;11448:4;11445:13;11441:36;11435:2;11425:8;11422:16;11417:2;11411:4;11408:12;11404:35;11401:77;11398:159;;;-1:-1:-1;11510:19:1;;;11542:5;;11398:159;11589:34;11614:8;11608:4;11589:34;:::i;:::-;11659:6;11655:1;11651:6;11647:19;11638:7;11635:32;11632:58;;;11670:18;;:::i;:::-;11708:20;;10928:806;-1:-1:-1;;;10928:806:1:o;11739:140::-;11797:5;11826:47;11867:4;11857:8;11853:19;11847:4;11826:47;:::i;11884:168::-;11924:7;11990:1;11986;11982:6;11978:14;11975:1;11972:21;11967:1;11960:9;11953:17;11949:45;11946:71;;;11997:18;;:::i;:::-;-1:-1:-1;12037:9:1;;11884:168::o;12759:245::-;12826:6;12879:2;12867:9;12858:7;12854:23;12850:32;12847:52;;;12895:1;12892;12885:12;12847:52;12927:9;12921:16;12946:28;12968:5;12946:28;:::i;19611:217::-;19651:1;19677;19667:132;;19721:10;19716:3;19712:20;19709:1;19702:31;19756:4;19753:1;19746:15;19784:4;19781:1;19774:15;19667:132;-1:-1:-1;19813:9:1;;19611:217::o;21050:251::-;21120:6;21173:2;21161:9;21152:7;21148:23;21144:32;21141:52;;;21189:1;21186;21179:12;21141:52;21221:9;21215:16;21240:31;21265:5;21240:31;:::i;21306:980::-;21568:4;21616:3;21605:9;21601:19;21647:6;21636:9;21629:25;21673:2;21711:6;21706:2;21695:9;21691:18;21684:34;21754:3;21749:2;21738:9;21734:18;21727:31;21778:6;21813;21807:13;21844:6;21836;21829:22;21882:3;21871:9;21867:19;21860:26;;21921:2;21913:6;21909:15;21895:29;;21942:1;21952:195;21966:6;21963:1;21960:13;21952:195;;;22031:13;;-1:-1:-1;;;;;22027:39:1;22015:52;;22122:15;;;;22087:12;;;;22063:1;21981:9;21952:195;;;-1:-1:-1;;;;;;;22203:32:1;;;;22198:2;22183:18;;22176:60;-1:-1:-1;;;22267:3:1;22252:19;22245:35;22164:3;21306:980;-1:-1:-1;;;21306:980:1:o;22903:306::-;22991:6;22999;23007;23060:2;23048:9;23039:7;23035:23;23031:32;23028:52;;;23076:1;23073;23066:12;23028:52;23105:9;23099:16;23089:26;;23155:2;23144:9;23140:18;23134:25;23124:35;;23199:2;23188:9;23184:18;23178:25;23168:35;;22903:306;;;;;:::o

Swarm Source

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