ETH Price: $2,606.40 (+1.31%)

Token

iWiK (IWIK)
 

Overview

Max Total Supply

1,000,000,000 IWIK

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,500,000 IWIK

Value
$0.00
0xA5dE274486Af95C25da7EaBf6c3032F25B208d87
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:
IWIK

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-07
*/

/**
 *Submitted for verification at Etherscan.io on 2024-03-13
 */

// SPDX-License-Identifier: MIT

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 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

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

    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"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

    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"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount)
        internal
        virtual
    {
        require(account != address(0), "ERC20: mint to the zero address");

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function WETH() external pure returns (address);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

contract IWIK is ERC20, Ownable {
    uint256 public maxBuyLimit;
    uint256 public maxSellLimit;
    uint256 public maxWalletSize;

    IDexRouter public dexRouter;
    address public dexPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;
    address devAddress;
    address airdropAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping(address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalTaxes;
    uint256 public buyMarketingTax;
    uint256 public buyAirdropTax;
    uint256 public buyDevTax;

    uint256 public sellTotalTaxes;
    uint256 public sellMarketingsTax;
    uint256 public sellAirdropTax;
    uint256 public sellDevTax;
    mapping(address => bool) public blacklist;

    /******************/
    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromTaxes;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event Launched();

    event RemovedLimits();

    event ExcludeFromTaxes(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool exempted);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoAirdrop
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("iWiK", "IWIK") {
        address newOwner = msg.sender;
        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        dexRouter = _dexRouter;

        // create pair
        dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        _exemptFromMaxTransaction(address(dexPair), true);
        _setAutomatedMarketMakerPair(address(dexPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyLimit = (totalSupply * 1) / 100;
        maxSellLimit = (totalSupply * 1) / 100;
        maxWalletSize = (totalSupply * 1) / 100;
        swapTokensAtAmount = 2500000 * 1e18;

        buyMarketingTax = 10;
        buyAirdropTax = 5;
        buyDevTax = 10;
        buyTotalTaxes = buyMarketingTax + buyAirdropTax + buyDevTax;

        sellMarketingsTax = 10;
        sellAirdropTax = 5;
        sellDevTax = 10;
        sellTotalTaxes = sellMarketingsTax + sellAirdropTax + sellDevTax;

        _exemptFromMaxTransaction(newOwner, true);
        _exemptFromMaxTransaction(address(this), true);
        _exemptFromMaxTransaction(address(0xdead), true);

        exemptFromTaxes(newOwner, true);
        exemptFromTaxes(address(this), true);
        exemptFromTaxes(address(0xdead), true);
        // Change Here

        marketingAddress = 0x19f4E7BDFB9B0A7feEf9f3d6369ea215fC933857;
        devAddress = 0xD3104AE4e2572eB4ede509e874ED47B52D032f1F;
        airdropAddress = 0x2eEF92B5BF99073edd2B28E0DF2658835d3B8EB0;

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading(uint256 _deadblocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + _deadblocks;
        emit Launched();
    }

    function disableTrading() external onlyOwner {
        require(tradingActive, "Cannot redisable trading");
        tradingActive = false;
        swapEnabled = false;
    }

    function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;

        emit Launched();

    }

    function addRemoveBlacklist(address _address) public onlyOwner {
        require(address(_address) != address(0), "Address is not valid");  
        if (blacklist[_address]) {
            blacklist[_address] = false;
        } else {
            blacklist[_address] = true;
        }
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function manageEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuy(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max buy amount lower than 0.2%"
        );
        maxBuyLimit = newValue * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyLimit);
    }

    function updateMaxSell(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 2) / 1000) / 1e18,
            "Cannot set max sell amount lower than 0.2%"
        );
        maxSellLimit = newValue * (10**18);
        emit UpdatedMaxSellAmount(maxSellLimit);
    }

    function updateMaxWallet(uint256 newValue) external onlyOwner {
        require(
            newValue >= ((totalSupply() * 3) / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.3%"
        );
        maxWalletSize = newValue * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletSize);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount;
    }

    function _exemptFromMaxTransaction(address updAds, bool isExcluded)
        private
    {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function exemptFromMaxTX(address updAds, bool isEx) external onlyOwner {
        if (!isEx) {
            require(
                updAds != dexPair,
                "Cannot remove uniswap pair from max txn"
            );
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAMM(address pair, bool value) external onlyOwner {
        require(pair != dexPair, "The pair cannot be removed");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _exemptFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateTaxes(
        uint256 _marketingsTax,
        uint256 _airdropTax,
        uint256 _DevTax
    ) external onlyOwner {
        sellMarketingsTax = _marketingsTax;
        sellAirdropTax = _airdropTax;
        sellDevTax = _DevTax;

        buyMarketingTax = _marketingsTax;
        buyAirdropTax = _airdropTax;
        buyDevTax = _DevTax;

        buyTotalTaxes = buyMarketingTax + buyAirdropTax + buyDevTax;
        sellTotalTaxes = sellMarketingsTax + sellAirdropTax + sellDevTax;
        require(sellTotalTaxes <= 25, "Must keep fees at 25% or less");
    }

    function exemptFromTaxes(address account, bool exempted) public onlyOwner {
        _isExcludedFromTaxes[account] = exempted;
        emit ExcludeFromTaxes(account, exempted);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(!blacklist[from] && !blacklist[to], "Address is blacklisted.");

        if (!tradingActive) {
            require(
                _isExcludedFromTaxes[from] || _isExcludedFromTaxes[to],
                "Trading is not active."
            );
        }

        if (blockForPenaltyEnd > 0) {
            require(
                !boughtEarly[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_isExcludedFromTaxes[from] &&
                !_isExcludedFromTaxes[to]
            ) {
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(dexPair)) {
                                                _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxBuyLimit,
                        "Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "Cannot Exceed max wallet"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxSellLimit,
                        "Sell transfer amount exceeds the max sell."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "Cannot Exceed max wallet"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromTaxes[from] &&
            !_isExcludedFromTaxes[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeTax = true;
        // if any account belongs to _isExcludedFromTax account then remove the fee
        if (_isExcludedFromTaxes[from] || _isExcludedFromTaxes[to]) {
            takeTax = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeTax) {
            // bot/sniper penalty.
            if (
                earlyBuyPenaltyInEffect() &&
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerPairs[to] &&
                buyTotalTaxes > 0
            ) {
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = (amount * 99) / 100;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalTaxes > 0) {
                fees = (amount * sellTotalTaxes) / 100;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalTaxes > 0) {
                fees = (amount * buyTotalTaxes) / 100;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

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

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        bool success;
        swapTokensForEth(swapTokensAtAmount);

        uint256 ethBalance = address(this).balance;
        uint256 ethForAirdrop = (ethBalance * buyAirdropTax) / buyTotalTaxes;
        uint256 ethForMarketings = (ethBalance * buyMarketingTax) /
            buyTotalTaxes;
        uint256 ethForDev = (ethBalance * buyDevTax) / buyTotalTaxes;

        (success, ) = address(devAddress).call{value: ethForDev}("");
        (success, ) = address(airdropAddress).call{value: ethForAirdrop}("");
        (success, ) = address(marketingAddress).call{value: ethForMarketings}(
            ""
        );
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function setTaxAddresses(
        address _marketingAddress,
        address _devAddress,
        address _airdropAddress
    ) external onlyOwner {
        require(
            _marketingAddress != address(0) &&
                _devAddress != address(0) &&
                _airdropAddress != address(0),
            "Addresses cannot be 0"
        );
        marketingAddress = payable(_marketingAddress);
        devAddress = payable(_devAddress);
        airdropAddress = payable(_airdropAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBack(uint256 amountInWei) external onlyOwner {
        require(
            amountInWei <= 10 ether,
            "May not buy more than 10 ETH in a single buy to reduce sandwich attacks"
        );

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

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountInWei
        }(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromTaxes","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"exempted","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoAirdrop","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addRemoveBlacklist","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAirdropTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadblocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"exemptFromMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempted","type":"bool"}],"name":"exemptFromTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","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":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageEarly","outputs":[],"stateMutability":"nonpayable","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":"maxWalletSize","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAirdropTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingsTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"},{"internalType":"address","name":"_devAddress","type":"address"},{"internalType":"address","name":"_airdropAddress","type":"address"}],"name":"setTaxAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingsTax","type":"uint256"},{"internalType":"uint256","name":"_airdropTax","type":"uint256"},{"internalType":"uint256","name":"_DevTax","type":"uint256"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600f556013805462ffffff191660019081179091556015805460ff191690911790553480156200003557600080fd5b50604051806040016040528060048152602001636957694b60e01b815250604051806040016040528060048152602001634957494b60e01b81525081600390816200008191906200084f565b5060046200009082826200084f565b5050506000620000a56200044960201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003c3d833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017291906200091b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e691906200091b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a91906200091b565b600a80546001600160a01b0319166001600160a01b03929092169182179055620002869060016200044d565b600a546200029f906001600160a01b03166001620004ae565b6b033b2e3c9fd0803ce80000006064620002bb82600162000963565b620002c7919062000985565b6006556064620002d982600162000963565b620002e5919062000985565b6007556064620002f782600162000963565b62000303919062000985565b6008556a0211654585005212800000600b55600a6017819055600560188190556019829055620003349082620009a8565b620003409190620009a8565b601655600a601b8190556005601c819055601d829055620003629082620009a8565b6200036e9190620009a8565b601a556200037e8360016200044d565b6200038b3060016200044d565b6200039a61dead60016200044d565b620003a78360016200051a565b620003b43060016200051a565b620003c361dead60016200051a565b600c80546001600160a01b03199081167319f4e7bdfb9b0a7feef9f3d6369ea215fc93385717909155600d8054821673d3104ae4e2572eb4ede509e874ed47b52d032f1f179055600e8054909116732eef92b5bf99073edd2b28e0df2658835d3b8eb0179055620004358382620005c8565b6200044083620006ad565b505050620009c3565b3390565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055620004de82826200044d565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005695760405162461bcd60e51b8152602060048201819052602482015260008051602062003c1d83398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6001600160a01b038216620006205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000560565b8060026000828254620006349190620009a8565b90915550506001600160a01b0382166000908152602081905260408120805483929062000663908490620009a8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006f85760405162461bcd60e51b8152602060048201819052602482015260008051602062003c1d833981519152604482015260640162000560565b6001600160a01b0381166200075f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000560565b6005546040516001600160a01b0380841692169060008051602062003c3d83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007d557607f821691505b602082108103620007f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200084a57600081815260208120601f850160051c81016020861015620008255750805b601f850160051c820191505b81811015620008465782815560010162000831565b5050505b505050565b81516001600160401b038111156200086b576200086b620007aa565b62000883816200087c8454620007c0565b84620007fc565b602080601f831160018114620008bb5760008415620008a25750858301515b600019600386901b1c1916600185901b17855562000846565b600085815260208120601f198616915b82811015620008ec57888601518255948401946001909101908401620008cb565b50858210156200090b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200092e57600080fd5b81516001600160a01b03811681146200094657600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200098057620009806200094d565b500290565b600082620009a357634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009be57620009be6200094d565b500190565b61324a80620009d36000396000f3fe60806040526004361061038f5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063e2f45605116100a0578063f2e76c251161006f578063f2e76c2514610a26578063f2fde38b14610a46578063f5648a4f14610a66578063f9f92be414610a7b57600080fd5b8063e2f45605146109c5578063e884f260146109db578063ee40166e146109f0578063f242ab4114610a0657600080fd5b8063c876d0b9116100dc578063c876d0b914610925578063d257b34f1461093f578063dd62ed3e1461095f578063e25061b8146109a557600080fd5b8063bbc0c742146108da578063be691883146108f9578063c3cc18f51461090f57600080fd5b8063a457c2d71161017a578063a9d3cd8a11610149578063a9d3cd8a14610854578063af8f26e714610874578063b62496f51461088a578063b94279ea146108ba57600080fd5b8063a457c2d7146107de578063a62068ce146107fe578063a9059cbb14610814578063a90eab8c1461083457600080fd5b80639164f9db116101b65780639164f9db1461077d57806395d89b411461079d5780639fe23f16146107b2578063a3124a7e146107c857600080fd5b80638da5cb5b146107335780638f3fa860146107515780639087ab751461076757600080fd5b806346576ddb116102c15780636b0a894c1161025f578063751039fc1161022e578063751039fc146106ae57806382aa7c68146106c357806385ecfd28146106e3578063887d63171461071357600080fd5b80636b0a894c1461062d5780636ddd17131461064357806370a0823114610663578063715018a61461069957600080fd5b8063588813041161029b57806358881304146105ca57806358a6d531146105ea578063652e2f04146106015780636aa5b37f1461061757600080fd5b806346576ddb1461057b5780634a62bb651461059b57806351f205e4146105b557600080fd5b806318160ddd1161032e57806323b872dd1161030857806323b872dd14610509578063313ce567146105295780633301241114610545578063395093511461055b57600080fd5b806318160ddd146104b45780631c499ab0146104c95780632191349e146104e957600080fd5b80630758d9241161036a5780630758d92414610408578063095ea7b31461044057806310d5de531461047057806317700f011461049f57600080fd5b806204ff691461039b578063053f9040146103c457806306fdde03146103e657600080fd5b3661039657005b600080fd5b3480156103a757600080fd5b506103b160185481565b6040519081526020015b60405180910390f35b3480156103d057600080fd5b506103e46103df366004612d7d565b610aab565b005b3480156103f257600080fd5b506103fb610cf8565b6040516103bb9190612d96565b34801561041457600080fd5b50600954610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103bb565b34801561044c57600080fd5b5061046061045b366004612e00565b610d8a565b60405190151581526020016103bb565b34801561047c57600080fd5b5061046061048b366004612e2c565b602080526000908152604090205460ff1681565b3480156104ab57600080fd5b506103e4610da0565b3480156104c057600080fd5b506002546103b1565b3480156104d557600080fd5b506103e46104e4366004612d7d565b610e2f565b3480156104f557600080fd5b506103e4610504366004612e2c565b610f3f565b34801561051557600080fd5b50610460610524366004612e50565b61101f565b34801561053557600080fd5b50604051601281526020016103bb565b34801561055157600080fd5b506103b160175481565b34801561056757600080fd5b50610460610576366004612e00565b6110c9565b34801561058757600080fd5b506103e4610596366004612e91565b611105565b3480156105a757600080fd5b506013546104609060ff1681565b3480156105c157600080fd5b506103e46111cc565b3480156105d657600080fd5b506103e46105e5366004612d7d565b611253565b3480156105f657600080fd5b506010544310610460565b34801561060d57600080fd5b506103b160075481565b34801561062357600080fd5b506103b160065481565b34801561063957600080fd5b506103b160125481565b34801561064f57600080fd5b506013546104609062010000900460ff1681565b34801561066f57600080fd5b506103b161067e366004612e2c565b6001600160a01b031660009081526020819052604090205490565b3480156106a557600080fd5b506103e4611359565b3480156106ba57600080fd5b506103e46113cd565b3480156106cf57600080fd5b506103e46106de366004612d7d565b611438565b3480156106ef57600080fd5b506104606106fe366004612e2c565b60116020526000908152604090205460ff1681565b34801561071f57600080fd5b506103e461072e366004612ecf565b61150b565b34801561073f57600080fd5b506005546001600160a01b0316610428565b34801561075d57600080fd5b506103b160085481565b34801561077357600080fd5b506103b160165481565b34801561078957600080fd5b506103e4610798366004612d7d565b6115ec565b3480156107a957600080fd5b506103fb6116f3565b3480156107be57600080fd5b506103b1601c5481565b3480156107d457600080fd5b506103b1601b5481565b3480156107ea57600080fd5b506104606107f9366004612e00565b611702565b34801561080a57600080fd5b506103b160105481565b34801561082057600080fd5b5061046061082f366004612e00565b61179b565b34801561084057600080fd5b506103e461084f366004612f1a565b6117a8565b34801561086057600080fd5b506103e461086f366004612e91565b611a68565b34801561088057600080fd5b506103b160195481565b34801561089657600080fd5b506104606108a5366004612e2c565b60216020526000908152604090205460ff1681565b3480156108c657600080fd5b506103e46108d5366004612e91565b611b36565b3480156108e657600080fd5b5060135461046090610100900460ff1681565b34801561090557600080fd5b506103b1601d5481565b34801561091b57600080fd5b506103b1601a5481565b34801561093157600080fd5b506015546104609060ff1681565b34801561094b57600080fd5b506103e461095a366004612d7d565b611b8b565b34801561096b57600080fd5b506103b161097a366004612f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b157600080fd5b506103e46109c0366004612e91565b611bba565b3480156109d157600080fd5b506103b1600b5481565b3480156109e757600080fd5b506103e4611c43565b3480156109fc57600080fd5b506103b1600f5481565b348015610a1257600080fd5b50600a54610428906001600160a01b031681565b348015610a3257600080fd5b506103e4610a41366004612f83565b611c79565b348015610a5257600080fd5b506103e4610a61366004612e2c565b611d50565b348015610a7257600080fd5b506103e4611e3b565b348015610a8757600080fd5b50610460610a96366004612e2c565b601e6020526000908152604090205460ff1681565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612faf565b60405180910390fd5b678ac7230489e80000811115610b6c5760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610ad5565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190612fe4565b81600081518110610c0d57610c0d613001565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610c4157610c41613001565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490610c8990600090869061dead90429060040161305b565b6000604051808303818588803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610cec91815260200190565b60405180910390a15050565b606060038054610d0790613090565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3390613090565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b5050505050905090565b6000610d97338484611eb2565b50600192915050565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16610e215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564697361626c652074726164696e6700000000000000006044820152606401610ad5565b6013805462ffff0019169055565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e8610e6e60025490565b610e799060036130e0565b610e8391906130ff565b610e8d91906130ff565b811015610ef15760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ad5565b610f0381670de0b6b3a76400006130e0565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610f695760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116610fb65760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81a5cc81b9bdd081d985b1a5960621b6044820152606401610ad5565b6001600160a01b0381166000908152601e602052604090205460ff1615610ff8576001600160a01b03166000908152601e60205260409020805460ff19169055565b6001600160a01b0381166000908152601e60205260409020805460ff191660011790555b50565b600061102c848484611fd6565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad5565b6110be8533858403611eb2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d97918590611100908690613121565b611eb2565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610ad590612faf565b806111a257600a546001600160a01b03908116908316036111a25760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ad5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111f65760405162461bcd60e51b8152600401610ad590612faf565b600a805460ff60a01b1916600160a01b1790556112116128d5565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461127d5760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861129260025490565b61129d9060026130e0565b6112a791906130ff565b6112b191906130ff565b8110156113125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ad5565b61132481670de0b6b3a76400006130e0565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f34565b6005546001600160a01b031633146113835760405162461bcd60e51b8152600401610ad590612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ad590612faf565b6013805460ff199081169091556015805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114625760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16156114ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ad5565b6013805462ffff0019166201010017905543600f8190556114dc908290613121565b6010556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0383161580159061155557506001600160a01b03821615155b801561156957506001600160a01b03811615155b6115ad5760405162461bcd60e51b815260206004820152601560248201527404164647265737365732063616e6e6f74206265203605c1b6044820152606401610ad5565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6005546001600160a01b031633146116165760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861162b60025490565b6116369060026130e0565b61164091906130ff565b61164a91906130ff565b8110156116ac5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ad5565b6116be81670de0b6b3a76400006130e0565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f34565b606060048054610d0790613090565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b6117913385858403611eb2565b5060019392505050565b6000610d97338484611fd6565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161194892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156119b3573d6000803e3d6000fd5b5050506020604051035190506119d16005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611a255760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610ad5565b6013805462ffff001916620101001790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150505050505050565b6005546001600160a01b03163314611a925760405162461bcd60e51b8152600401610ad590612faf565b600a546001600160a01b0390811690831603611af05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610ad5565b611afa8282612a46565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314611b605760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610ad590612faf565b600b55565b6005546001600160a01b03163314611be45760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6005546001600160a01b03163314611c6d5760405162461bcd60e51b8152600401610ad590612faf565b6015805460ff19169055565b6005546001600160a01b03163314611ca35760405162461bcd60e51b8152600401610ad590612faf565b601b839055601c829055601d81905560178390556018829055601981905580611ccc8385613121565b611cd69190613121565b601655601d54601c54601b54611cec9190613121565b611cf69190613121565b601a81905560191015611d4b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ad5565b505050565b6005546001600160a01b03163314611d7a5760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e655760405162461bcd60e51b8152600401610ad590612faf565b604051600090339047908381818185875af1925050503d8060008114611ea7576040519150601f19603f3d011682016040523d82523d6000602084013e611eac565b606091505b50505050565b6001600160a01b038316611f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffc5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b0382166120225760405162461bcd60e51b8152600401610ad59061317e565b600081116120725760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ad5565b6001600160a01b0383166000908152601e602052604090205460ff161580156120b457506001600160a01b0382166000908152601e602052604090205460ff16155b6121005760405162461bcd60e51b815260206004820152601760248201527f4164647265737320697320626c61636b6c69737465642e0000000000000000006044820152606401610ad5565b601354610100900460ff16612193576001600160a01b0383166000908152601f602052604090205460ff168061214e57506001600160a01b0382166000908152601f602052604090205460ff165b6121935760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad5565b60105415612266576001600160a01b03831660009081526011602052604090205460ff1615806121d057506005546001600160a01b038381169116145b806121e557506001600160a01b03821661dead145b6122665760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ad5565b60135460ff16156125cc576005546001600160a01b0384811691161480159061229d57506005546001600160a01b03838116911614155b80156122b157506001600160a01b03821615155b80156122c857506001600160a01b03821661dead14155b80156122ed57506001600160a01b0383166000908152601f602052604090205460ff16155b801561231257506001600160a01b0382166000908152601f602052604090205460ff16155b156125cc5760155460ff1615612378576009546001600160a01b0383811691161480159061234e5750600a546001600160a01b03838116911614155b15612378573260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff1680156123b857506001600160a01b038216600090815260208052604090205460ff16155b15612494576006548111156124205760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ad5565b6008546001600160a01b0383166000908152602081905260409020546124469083613121565b111561248f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b6125cc565b6001600160a01b03821660009081526021602052604090205460ff1680156124d457506001600160a01b038316600090815260208052604090205460ff16155b1561253e5760075481111561248f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ad5565b6001600160a01b038216600090815260208052604090205460ff166125cc576008546001600160a01b0383166000908152602081905260409020546125839083613121565b11156125cc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b30600090815260208190526040902054600b54811080159081906125f8575060135462010000900460ff165b801561260e5750600a54600160a01b900460ff16155b801561263357506001600160a01b03851660009081526021602052604090205460ff16155b801561265857506001600160a01b0385166000908152601f602052604090205460ff16155b801561267d57506001600160a01b0384166000908152601f602052604090205460ff16155b156126ab57600a805460ff60a01b1916600160a01b17905561269d6128d5565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff16806126ed57506001600160a01b0385166000908152601f602052604090205460ff165b156126f6575060005b600081156128c1576010544310801561272757506001600160a01b03871660009081526021602052604090205460ff165b801561274c57506001600160a01b03861660009081526021602052604090205460ff16155b801561275a57506000601654115b15612818576001600160a01b03861660009081526011602052604090205460ff166127fa576001600160a01b0386166000908152601160205260408120805460ff1916600190811790915560128054919290916127b8908490613121565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128078660636130e0565b61281191906130ff565b90506128a3565b6001600160a01b03861660009081526021602052604090205460ff16801561284257506000601a54115b15612857576064601a548661280791906130e0565b6001600160a01b03871660009081526021602052604090205460ff16801561288157506000601654115b156128a35760646016548661289691906130e0565b6128a091906130ff565b90505b80156128b4576128b4873083612a74565b6128be81866131c1565b94505b6128cc878787612a74565b50505050505050565b60006128e2600b54612bc9565b60165460185447916000916128f790846130e0565b61290191906130ff565b905060006016546017548461291691906130e0565b61292091906130ff565b905060006016546019548561293591906130e0565b61293f91906130ff565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461298d576040519150601f19603f3d011682016040523d82523d6000602084013e612992565b606091505b5050600e546040519196506001600160a01b0316908490600081818185875af1925050503d80600081146129e2576040519150601f19603f3d011682016040523d82523d6000602084013e6129e7565b606091505b5050600c546040519196506001600160a01b0316908390600081818185875af1925050503d8060008114612a37576040519150601f19603f3d011682016040523d82523d6000602084013e612a3c565b606091505b5050505050505050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055611afa8282612d23565b6001600160a01b038316612a9a5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b038216612ac05760405162461bcd60e51b8152600401610ad59061317e565b6001600160a01b03831660009081526020819052604090205481811015612b385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b6f908490613121565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bbb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612bfe57612bfe613001565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7b9190612fe4565b81600181518110612c8e57612c8e613001565b6001600160a01b039283166020918202929092010152600954612cb49130911684611eb2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ced9085906000908690309042906004016131d8565b600060405180830381600087803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101610cec565b600060208284031215612d8f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612dc357858101830151858201604001528201612da7565b81811115612dd5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461101c57600080fd5b60008060408385031215612e1357600080fd5b8235612e1e81612deb565b946020939093013593505050565b600060208284031215612e3e57600080fd5b8135612e4981612deb565b9392505050565b600080600060608486031215612e6557600080fd5b8335612e7081612deb565b92506020840135612e8081612deb565b929592945050506040919091013590565b60008060408385031215612ea457600080fd5b8235612eaf81612deb565b915060208301358015158114612ec457600080fd5b809150509250929050565b600080600060608486031215612ee457600080fd5b8335612eef81612deb565b92506020840135612eff81612deb565b91506040840135612f0f81612deb565b809150509250925092565b600080600060608486031215612f2f57600080fd5b833560ff81168114612f4057600080fd5b95602085013595506040909401359392505050565b60008060408385031215612f6857600080fd5b8235612f7381612deb565b91506020830135612ec481612deb565b600080600060608486031215612f9857600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ff657600080fd5b8151612e4981612deb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156130505781516001600160a01b03168752958201959082019060010161302b565b509495945050505050565b8481526080602082015260006130746080830186613017565b6001600160a01b03949094166040830152506060015292915050565b600181811c908216806130a457607f821691505b6020821081036130c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156130fa576130fa6130ca565b500290565b60008261311c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613134576131346130ca565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156131d3576131d36130ca565b500390565b85815284602082015260a0604082015260006131f760a0830186613017565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204a38c33902d8d46c0f99b2ba5c484ed168d2e5c8ee8cf492ac95e32838c55a3364736f6c634300080f00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x60806040526004361061038f5760003560e01c80638da5cb5b116101dc578063bbc0c74211610102578063e2f45605116100a0578063f2e76c251161006f578063f2e76c2514610a26578063f2fde38b14610a46578063f5648a4f14610a66578063f9f92be414610a7b57600080fd5b8063e2f45605146109c5578063e884f260146109db578063ee40166e146109f0578063f242ab4114610a0657600080fd5b8063c876d0b9116100dc578063c876d0b914610925578063d257b34f1461093f578063dd62ed3e1461095f578063e25061b8146109a557600080fd5b8063bbc0c742146108da578063be691883146108f9578063c3cc18f51461090f57600080fd5b8063a457c2d71161017a578063a9d3cd8a11610149578063a9d3cd8a14610854578063af8f26e714610874578063b62496f51461088a578063b94279ea146108ba57600080fd5b8063a457c2d7146107de578063a62068ce146107fe578063a9059cbb14610814578063a90eab8c1461083457600080fd5b80639164f9db116101b65780639164f9db1461077d57806395d89b411461079d5780639fe23f16146107b2578063a3124a7e146107c857600080fd5b80638da5cb5b146107335780638f3fa860146107515780639087ab751461076757600080fd5b806346576ddb116102c15780636b0a894c1161025f578063751039fc1161022e578063751039fc146106ae57806382aa7c68146106c357806385ecfd28146106e3578063887d63171461071357600080fd5b80636b0a894c1461062d5780636ddd17131461064357806370a0823114610663578063715018a61461069957600080fd5b8063588813041161029b57806358881304146105ca57806358a6d531146105ea578063652e2f04146106015780636aa5b37f1461061757600080fd5b806346576ddb1461057b5780634a62bb651461059b57806351f205e4146105b557600080fd5b806318160ddd1161032e57806323b872dd1161030857806323b872dd14610509578063313ce567146105295780633301241114610545578063395093511461055b57600080fd5b806318160ddd146104b45780631c499ab0146104c95780632191349e146104e957600080fd5b80630758d9241161036a5780630758d92414610408578063095ea7b31461044057806310d5de531461047057806317700f011461049f57600080fd5b806204ff691461039b578063053f9040146103c457806306fdde03146103e657600080fd5b3661039657005b600080fd5b3480156103a757600080fd5b506103b160185481565b6040519081526020015b60405180910390f35b3480156103d057600080fd5b506103e46103df366004612d7d565b610aab565b005b3480156103f257600080fd5b506103fb610cf8565b6040516103bb9190612d96565b34801561041457600080fd5b50600954610428906001600160a01b031681565b6040516001600160a01b0390911681526020016103bb565b34801561044c57600080fd5b5061046061045b366004612e00565b610d8a565b60405190151581526020016103bb565b34801561047c57600080fd5b5061046061048b366004612e2c565b602080526000908152604090205460ff1681565b3480156104ab57600080fd5b506103e4610da0565b3480156104c057600080fd5b506002546103b1565b3480156104d557600080fd5b506103e46104e4366004612d7d565b610e2f565b3480156104f557600080fd5b506103e4610504366004612e2c565b610f3f565b34801561051557600080fd5b50610460610524366004612e50565b61101f565b34801561053557600080fd5b50604051601281526020016103bb565b34801561055157600080fd5b506103b160175481565b34801561056757600080fd5b50610460610576366004612e00565b6110c9565b34801561058757600080fd5b506103e4610596366004612e91565b611105565b3480156105a757600080fd5b506013546104609060ff1681565b3480156105c157600080fd5b506103e46111cc565b3480156105d657600080fd5b506103e46105e5366004612d7d565b611253565b3480156105f657600080fd5b506010544310610460565b34801561060d57600080fd5b506103b160075481565b34801561062357600080fd5b506103b160065481565b34801561063957600080fd5b506103b160125481565b34801561064f57600080fd5b506013546104609062010000900460ff1681565b34801561066f57600080fd5b506103b161067e366004612e2c565b6001600160a01b031660009081526020819052604090205490565b3480156106a557600080fd5b506103e4611359565b3480156106ba57600080fd5b506103e46113cd565b3480156106cf57600080fd5b506103e46106de366004612d7d565b611438565b3480156106ef57600080fd5b506104606106fe366004612e2c565b60116020526000908152604090205460ff1681565b34801561071f57600080fd5b506103e461072e366004612ecf565b61150b565b34801561073f57600080fd5b506005546001600160a01b0316610428565b34801561075d57600080fd5b506103b160085481565b34801561077357600080fd5b506103b160165481565b34801561078957600080fd5b506103e4610798366004612d7d565b6115ec565b3480156107a957600080fd5b506103fb6116f3565b3480156107be57600080fd5b506103b1601c5481565b3480156107d457600080fd5b506103b1601b5481565b3480156107ea57600080fd5b506104606107f9366004612e00565b611702565b34801561080a57600080fd5b506103b160105481565b34801561082057600080fd5b5061046061082f366004612e00565b61179b565b34801561084057600080fd5b506103e461084f366004612f1a565b6117a8565b34801561086057600080fd5b506103e461086f366004612e91565b611a68565b34801561088057600080fd5b506103b160195481565b34801561089657600080fd5b506104606108a5366004612e2c565b60216020526000908152604090205460ff1681565b3480156108c657600080fd5b506103e46108d5366004612e91565b611b36565b3480156108e657600080fd5b5060135461046090610100900460ff1681565b34801561090557600080fd5b506103b1601d5481565b34801561091b57600080fd5b506103b1601a5481565b34801561093157600080fd5b506015546104609060ff1681565b34801561094b57600080fd5b506103e461095a366004612d7d565b611b8b565b34801561096b57600080fd5b506103b161097a366004612f55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b157600080fd5b506103e46109c0366004612e91565b611bba565b3480156109d157600080fd5b506103b1600b5481565b3480156109e757600080fd5b506103e4611c43565b3480156109fc57600080fd5b506103b1600f5481565b348015610a1257600080fd5b50600a54610428906001600160a01b031681565b348015610a3257600080fd5b506103e4610a41366004612f83565b611c79565b348015610a5257600080fd5b506103e4610a61366004612e2c565b611d50565b348015610a7257600080fd5b506103e4611e3b565b348015610a8757600080fd5b50610460610a96366004612e2c565b601e6020526000908152604090205460ff1681565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610ad590612faf565b60405180910390fd5b678ac7230489e80000811115610b6c5760405162461bcd60e51b815260206004820152604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a401610ad5565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190612fe4565b81600081518110610c0d57610c0d613001565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610c4157610c41613001565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490610c8990600090869061dead90429060040161305b565b6000604051808303818588803b158015610ca257600080fd5b505af1158015610cb6573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051610cec91815260200190565b60405180910390a15050565b606060038054610d0790613090565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3390613090565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b5050505050905090565b6000610d97338484611eb2565b50600192915050565b6005546001600160a01b03163314610dca5760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16610e215760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726564697361626c652074726164696e6700000000000000006044820152606401610ad5565b6013805462ffff0019169055565b6005546001600160a01b03163314610e595760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e8610e6e60025490565b610e799060036130e0565b610e8391906130ff565b610e8d91906130ff565b811015610ef15760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ad5565b610f0381670de0b6b3a76400006130e0565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610f695760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116610fb65760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81a5cc81b9bdd081d985b1a5960621b6044820152606401610ad5565b6001600160a01b0381166000908152601e602052604090205460ff1615610ff8576001600160a01b03166000908152601e60205260409020805460ff19169055565b6001600160a01b0381166000908152601e60205260409020805460ff191660011790555b50565b600061102c848484611fd6565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110b15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad5565b6110be8533858403611eb2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d97918590611100908690613121565b611eb2565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610ad590612faf565b806111a257600a546001600160a01b03908116908316036111a25760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ad5565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111f65760405162461bcd60e51b8152600401610ad590612faf565b600a805460ff60a01b1916600160a01b1790556112116128d5565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461127d5760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861129260025490565b61129d9060026130e0565b6112a791906130ff565b6112b191906130ff565b8110156113125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ad5565b61132481670de0b6b3a76400006130e0565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f34565b6005546001600160a01b031633146113835760405162461bcd60e51b8152600401610ad590612faf565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113f75760405162461bcd60e51b8152600401610ad590612faf565b6013805460ff199081169091556015805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114625760405162461bcd60e51b8152600401610ad590612faf565b601354610100900460ff16156114ba5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ad5565b6013805462ffff0019166201010017905543600f8190556114dc908290613121565b6010556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150565b6005546001600160a01b031633146115355760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0383161580159061155557506001600160a01b03821615155b801561156957506001600160a01b03811615155b6115ad5760405162461bcd60e51b815260206004820152601560248201527404164647265737365732063616e6e6f74206265203605c1b6044820152606401610ad5565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6005546001600160a01b031633146116165760405162461bcd60e51b8152600401610ad590612faf565b670de0b6b3a76400006103e861162b60025490565b6116369060026130e0565b61164091906130ff565b61164a91906130ff565b8110156116ac5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ad5565b6116be81670de0b6b3a76400006130e0565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f34565b606060048054610d0790613090565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad5565b6117913385858403611eb2565b5060019392505050565b6000610d97338484611fd6565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161194892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156119b3573d6000803e3d6000fd5b5050506020604051035190506119d16005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611a255760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610ad5565b6013805462ffff001916620101001790556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a150505050505050565b6005546001600160a01b03163314611a925760405162461bcd60e51b8152600401610ad590612faf565b600a546001600160a01b0390811690831603611af05760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610ad5565b611afa8282612a46565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314611b605760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610ad590612faf565b600b55565b6005546001600160a01b03163314611be45760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527fd371c6889ff9ad7371053463dc978366919ead66819324c51f6ac3ab76353506910160405180910390a25050565b6005546001600160a01b03163314611c6d5760405162461bcd60e51b8152600401610ad590612faf565b6015805460ff19169055565b6005546001600160a01b03163314611ca35760405162461bcd60e51b8152600401610ad590612faf565b601b839055601c829055601d81905560178390556018829055601981905580611ccc8385613121565b611cd69190613121565b601655601d54601c54601b54611cec9190613121565b611cf69190613121565b601a81905560191015611d4b5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610ad5565b505050565b6005546001600160a01b03163314611d7a5760405162461bcd60e51b8152600401610ad590612faf565b6001600160a01b038116611ddf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611e655760405162461bcd60e51b8152600401610ad590612faf565b604051600090339047908381818185875af1925050503d8060008114611ea7576040519150601f19603f3d011682016040523d82523d6000602084013e611eac565b606091505b50505050565b6001600160a01b038316611f145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad5565b6001600160a01b038216611f755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffc5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b0382166120225760405162461bcd60e51b8152600401610ad59061317e565b600081116120725760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ad5565b6001600160a01b0383166000908152601e602052604090205460ff161580156120b457506001600160a01b0382166000908152601e602052604090205460ff16155b6121005760405162461bcd60e51b815260206004820152601760248201527f4164647265737320697320626c61636b6c69737465642e0000000000000000006044820152606401610ad5565b601354610100900460ff16612193576001600160a01b0383166000908152601f602052604090205460ff168061214e57506001600160a01b0382166000908152601f602052604090205460ff165b6121935760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad5565b60105415612266576001600160a01b03831660009081526011602052604090205460ff1615806121d057506005546001600160a01b038381169116145b806121e557506001600160a01b03821661dead145b6122665760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ad5565b60135460ff16156125cc576005546001600160a01b0384811691161480159061229d57506005546001600160a01b03838116911614155b80156122b157506001600160a01b03821615155b80156122c857506001600160a01b03821661dead14155b80156122ed57506001600160a01b0383166000908152601f602052604090205460ff16155b801561231257506001600160a01b0382166000908152601f602052604090205460ff16155b156125cc5760155460ff1615612378576009546001600160a01b0383811691161480159061234e5750600a546001600160a01b03838116911614155b15612378573260009081526014602052604080822043908190556001600160a01b03851683529120555b6001600160a01b03831660009081526021602052604090205460ff1680156123b857506001600160a01b038216600090815260208052604090205460ff16155b15612494576006548111156124205760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ad5565b6008546001600160a01b0383166000908152602081905260409020546124469083613121565b111561248f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b6125cc565b6001600160a01b03821660009081526021602052604090205460ff1680156124d457506001600160a01b038316600090815260208052604090205460ff16155b1561253e5760075481111561248f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ad5565b6001600160a01b038216600090815260208052604090205460ff166125cc576008546001600160a01b0383166000908152602081905260409020546125839083613121565b11156125cc5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ad5565b30600090815260208190526040902054600b54811080159081906125f8575060135462010000900460ff165b801561260e5750600a54600160a01b900460ff16155b801561263357506001600160a01b03851660009081526021602052604090205460ff16155b801561265857506001600160a01b0385166000908152601f602052604090205460ff16155b801561267d57506001600160a01b0384166000908152601f602052604090205460ff16155b156126ab57600a805460ff60a01b1916600160a01b17905561269d6128d5565b600a805460ff60a01b191690555b6001600160a01b0385166000908152601f602052604090205460019060ff16806126ed57506001600160a01b0385166000908152601f602052604090205460ff165b156126f6575060005b600081156128c1576010544310801561272757506001600160a01b03871660009081526021602052604090205460ff165b801561274c57506001600160a01b03861660009081526021602052604090205460ff16155b801561275a57506000601654115b15612818576001600160a01b03861660009081526011602052604090205460ff166127fa576001600160a01b0386166000908152601160205260408120805460ff1916600190811790915560128054919290916127b8908490613121565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b60646128078660636130e0565b61281191906130ff565b90506128a3565b6001600160a01b03861660009081526021602052604090205460ff16801561284257506000601a54115b15612857576064601a548661280791906130e0565b6001600160a01b03871660009081526021602052604090205460ff16801561288157506000601654115b156128a35760646016548661289691906130e0565b6128a091906130ff565b90505b80156128b4576128b4873083612a74565b6128be81866131c1565b94505b6128cc878787612a74565b50505050505050565b60006128e2600b54612bc9565b60165460185447916000916128f790846130e0565b61290191906130ff565b905060006016546017548461291691906130e0565b61292091906130ff565b905060006016546019548561293591906130e0565b61293f91906130ff565b600d546040519192506001600160a01b0316908290600081818185875af1925050503d806000811461298d576040519150601f19603f3d011682016040523d82523d6000602084013e612992565b606091505b5050600e546040519196506001600160a01b0316908490600081818185875af1925050503d80600081146129e2576040519150601f19603f3d011682016040523d82523d6000602084013e6129e7565b606091505b5050600c546040519196506001600160a01b0316908390600081818185875af1925050503d8060008114612a37576040519150601f19603f3d011682016040523d82523d6000602084013e612a3c565b606091505b5050505050505050565b6001600160a01b0382166000908152602160205260409020805460ff1916821515179055611afa8282612d23565b6001600160a01b038316612a9a5760405162461bcd60e51b8152600401610ad590613139565b6001600160a01b038216612ac05760405162461bcd60e51b8152600401610ad59061317e565b6001600160a01b03831660009081526020819052604090205481811015612b385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b6f908490613121565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bbb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612bfe57612bfe613001565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7b9190612fe4565b81600181518110612c8e57612c8e613001565b6001600160a01b039283166020918202929092010152600954612cb49130911684611eb2565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612ced9085906000908690309042906004016131d8565b600060405180830381600087803b158015612d0757600080fd5b505af1158015612d1b573d6000803e3d6000fd5b505050505050565b6001600160a01b03821660008181526020808052604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101610cec565b600060208284031215612d8f57600080fd5b5035919050565b600060208083528351808285015260005b81811015612dc357858101830151858201604001528201612da7565b81811115612dd5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461101c57600080fd5b60008060408385031215612e1357600080fd5b8235612e1e81612deb565b946020939093013593505050565b600060208284031215612e3e57600080fd5b8135612e4981612deb565b9392505050565b600080600060608486031215612e6557600080fd5b8335612e7081612deb565b92506020840135612e8081612deb565b929592945050506040919091013590565b60008060408385031215612ea457600080fd5b8235612eaf81612deb565b915060208301358015158114612ec457600080fd5b809150509250929050565b600080600060608486031215612ee457600080fd5b8335612eef81612deb565b92506020840135612eff81612deb565b91506040840135612f0f81612deb565b809150509250925092565b600080600060608486031215612f2f57600080fd5b833560ff81168114612f4057600080fd5b95602085013595506040909401359392505050565b60008060408385031215612f6857600080fd5b8235612f7381612deb565b91506020830135612ec481612deb565b600080600060608486031215612f9857600080fd5b505081359360208301359350604090920135919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612ff657600080fd5b8151612e4981612deb565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156130505781516001600160a01b03168752958201959082019060010161302b565b509495945050505050565b8481526080602082015260006130746080830186613017565b6001600160a01b03949094166040830152506060015292915050565b600181811c908216806130a457607f821691505b6020821081036130c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156130fa576130fa6130ca565b500290565b60008261311c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613134576131346130ca565b500190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156131d3576131d36130ca565b500390565b85815284602082015260a0604082015260006131f760a0830186613017565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212204a38c33902d8d46c0f99b2ba5c484ed168d2e5c8ee8cf492ac95e32838c55a3364736f6c634300080f0033

Deployed Bytecode Sourcemap

8564:17462:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9548:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9548:28:0;;;;;;;;25352:671;;;;;;;;;;-1:-1:-1;25352:671:0;;;;;:::i;:::-;;:::i;:::-;;1947:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8707:27::-;;;;;;;;;;-1:-1:-1;8707:27:0;;;;-1:-1:-1;;;;;8707:27:0;;;;;;-1:-1:-1;;;;;1165:32:1;;;1147:51;;1135:2;1120:18;8707:27:0;983:221:1;3002:210:0;;;;;;;;;;-1:-1:-1;3002:210:0;;;;;:::i;:::-;;:::i;:::-;;;1830:14:1;;1823:22;1805:41;;1793:2;1778:18;3002:210:0;1665:187:1;9948:63:0;;;;;;;;;;-1:-1:-1;9948:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13235:176;;;;;;;;;;;;;:::i;2268:108::-;;;;;;;;;;-1:-1:-1;2356:12:0;;2268:108;;15892:321;;;;;;;;;;-1:-1:-1;15892:321:0;;;;;:::i;:::-;;:::i;14519:296::-;;;;;;;;;;-1:-1:-1;14519:296:0;;;;;:::i;:::-;;:::i;3220:529::-;;;;;;;;;;-1:-1:-1;3220:529:0;;;;;:::i;:::-;;:::i;2167:93::-;;;;;;;;;;-1:-1:-1;2167:93:0;;2250:2;2712:36:1;;2700:2;2685:18;2167:93:0;2570:184:1;9511:30:0;;;;;;;;;;;;;;;;3757:297;;;;;;;;;;-1:-1:-1;3757:297:0;;;;;:::i;:::-;;:::i;16578:302::-;;;;;;;;;;-1:-1:-1;16578:302:0;;;;;:::i;:::-;;:::i;9130:33::-;;;;;;;;;;-1:-1:-1;9130:33:0;;;;;;;;25071:178;;;;;;;;;;;;;:::i;15255:308::-;;;;;;;;;;-1:-1:-1;15255:308:0;;;;;:::i;:::-;;:::i;22922:121::-;;;;;;;;;;-1:-1:-1;23017:18:0;;23002:12;:33;22922:121;;8636:27;;;;;;;;;;;;;;;;8603:26;;;;;;;;;;;;;;;;9096:25;;;;;;;;;;;;;;;;9210:31;;;;;;;;;;-1:-1:-1;9210:31:0;;;;;;;;;;;2384:177;;;;;;;;;;-1:-1:-1;2384:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;2535:18:0;2503:7;2535:18;;;;;;;;;;;;2384:177;7036:150;;;;;;;;;;;;;:::i;14867:154::-;;;;;;;;;;;;;:::i;12901:326::-;;;;;;;;;;-1:-1:-1;12901:326:0;;;;;:::i;:::-;;:::i;9046:43::-;;;;;;;;;;-1:-1:-1;9046:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24499:520;;;;;;;;;;-1:-1:-1;24499:520:0;;;;;:::i;:::-;;:::i;6822:79::-;;;;;;;;;;-1:-1:-1;6887:6:0;;-1:-1:-1;;;;;6887:6:0;6822:79;;8670:28;;;;;;;;;;;;;;;;9476;;;;;;;;;;;;;;;;15571:313;;;;;;;;;;-1:-1:-1;15571:313:0;;;;;:::i;:::-;;:::i;2055:104::-;;;;;;;;;;;;;:::i;9691:29::-;;;;;;;;;;;;;;;;9652:32;;;;;;;;;;;;;;;;4062:482;;;;;;;;;;-1:-1:-1;4062:482:0;;;;;:::i;:::-;;:::i;9006:33::-;;;;;;;;;;;;;;;;2569:216;;;;;;;;;;-1:-1:-1;2569:216:0;;;;;:::i;:::-;;:::i;13419:1092::-;;;;;;;;;;-1:-1:-1;13419:1092:0;;;;;:::i;:::-;;:::i;16888:244::-;;;;;;;;;;-1:-1:-1;16888:244:0;;;;;:::i;:::-;;:::i;9583:24::-;;;;;;;;;;;;;;;;10169:57;;;;;;;;;;-1:-1:-1;10169:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15029:112;;;;;;;;;;-1:-1:-1;15029:112:0;;;;;:::i;:::-;;:::i;9170:33::-;;;;;;;;;;-1:-1:-1;9170:33:0;;;;;;;;;;;9727:25;;;;;;;;;;;;;;;;9616:29;;;;;;;;;;;;;;;;9428:39;;;;;;;;;;-1:-1:-1;9428:39:0;;;;;;;;16221:121;;;;;;;;;;-1:-1:-1;16221:121:0;;;;;:::i;:::-;;:::i;2793:201::-;;;;;;;;;;-1:-1:-1;2793:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2959:18:0;;;2927:7;2959:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2793:201;17983:184;;;;;;;;;;-1:-1:-1;17983:184:0;;;;;:::i;:::-;;:::i;8800:33::-;;;;;;;;;;;;;;;;15149:98;;;;;;;;;;;;;:::i;8929:37::-;;;;;;;;;;;;;;;;8741:22;;;;;;;;;;-1:-1:-1;8741:22:0;;;;-1:-1:-1;;;;;8741:22:0;;;17383:592;;;;;;;;;;-1:-1:-1;17383:592:0;;;;;:::i;:::-;;:::i;7194:281::-;;;;;;;;;;-1:-1:-1;7194:281:0;;;;;:::i;:::-;;:::i;24306:185::-;;;;;;;;;;;;;:::i;9759:41::-;;;;;;;;;;-1:-1:-1;9759:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25352:671;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;;;;;;;;;25457:8:::1;25442:11;:23;;25420:144;;;::::0;-1:-1:-1;;;25420:144:0;;5609:2:1;25420:144:0::1;::::0;::::1;5591:21:1::0;5648:2;5628:18;;;5621:30;5687:34;5667:18;;;5660:62;5758:34;5738:18;;;5731:62;-1:-1:-1;;;5809:19:1;;;5802:38;5857:19;;25420:144:0::1;5407:475:1::0;25420:144:0::1;25601:16;::::0;;25615:1:::1;25601:16:::0;;;;;::::1;::::0;;25577:21:::1;::::0;25601:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;25638:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;25638:16:0;;;;25577:40;;-1:-1:-1;;;;;;25638:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;25638:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25628:4;25633:1;25628:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;25628:26:0::1;;;-1:-1:-1::0;;;;;25628:26:0::1;;;::::0;::::1;25683:4;25665;25670:1;25665:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25665:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;25727:9:::1;::::0;:243:::1;::::0;-1:-1:-1;;;25727:243:0;;:9;::::1;::::0;:60:::1;::::0;25809:11;;25727:243:::1;::::0;:9:::1;::::0;25895:4;;25922:6:::1;::::0;25944:15:::1;::::0;25727:243:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;25986:29;26003:11;25986:29;;;;160:25:1::0;;148:2;133:18;;14:177;25986:29:0::1;;;;;;;;25409:614;25352:671:::0;:::o;1947:100::-;2001:13;2034:5;2027:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1947:100;:::o;3002:210::-;3121:4;3143:39;248:10;3166:7;3175:6;3143:8;:39::i;:::-;-1:-1:-1;3200:4:0;3002:210;;;;:::o;13235:176::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;13299:13:::1;::::0;::::1;::::0;::::1;;;13291:50;;;::::0;-1:-1:-1;;;13291:50:0;;7975:2:1;13291:50:0::1;::::0;::::1;7957:21:1::0;8014:2;7994:18;;;7987:30;8053:26;8033:18;;;8026:54;8097:18;;13291:50:0::1;7773:348:1::0;13291:50:0::1;13352:13;:21:::0;;-1:-1:-1;;13384:19:0;;;13235:176::o;15892:321::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;16030:4:::1;16022;16001:13;2356:12:::0;;;2268:108;16001:13:::1;:17;::::0;16017:1:::1;16001:17;:::i;:::-;16000:26;;;;:::i;:::-;15999:35;;;;:::i;:::-;15987:8;:47;;15965:141;;;::::0;-1:-1:-1;;;15965:141:0;;8855:2:1;15965:141:0::1;::::0;::::1;8837:21:1::0;8894:2;8874:18;;;8867:30;8933:34;8913:18;;;8906:62;-1:-1:-1;;;8984:18:1;;;8977:42;9036:19;;15965:141:0::1;8653:408:1::0;15965:141:0::1;16133:19;:8:::0;16145:6:::1;16133:19;:::i;:::-;16117:13;:35:::0;;;16168:37:::1;::::0;160:25:1;;;16168:37:0::1;::::0;148:2:1;133:18;16168:37:0::1;;;;;;;;15892:321:::0;:::o;14519:296::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14601:31:0;::::1;14593:64;;;::::0;-1:-1:-1;;;14593:64:0;;9268:2:1;14593:64:0::1;::::0;::::1;9250:21:1::0;9307:2;9287:18;;;9280:30;-1:-1:-1;;;9326:18:1;;;9319:50;9386:18;;14593:64:0::1;9066:344:1::0;14593:64:0::1;-1:-1:-1::0;;;;;14674:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;14670:138;;;-1:-1:-1::0;;;;;14710:19:0::1;14732:5;14710:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;14710:27:0::1;::::0;;14519:296::o;14670:138::-:1;-1:-1:-1::0;;;;;14770:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;14770:26:0::1;14792:4;14770:26;::::0;;14670:138:::1;14519:296:::0;:::o;3220:529::-;3360:4;3377:36;3387:6;3395:9;3406:6;3377:9;:36::i;:::-;-1:-1:-1;;;;;3453:19:0;;3426:24;3453:19;;;:11;:19;;;;;;;;248:10;3453:33;;;;;;;;3519:26;;;;3497:116;;;;-1:-1:-1;;;3497:116:0;;9617:2:1;3497:116:0;;;9599:21:1;9656:2;9636:18;;;9629:30;9695:34;9675:18;;;9668:62;-1:-1:-1;;;9746:18:1;;;9739:38;9794:19;;3497:116:0;9415:404:1;3497:116:0;3649:57;3658:6;248:10;3699:6;3680:16;:25;3649:8;:57::i;:::-;-1:-1:-1;3737:4:0;;3220:529;-1:-1:-1;;;;3220:529:0:o;3757:297::-;248:10;3872:4;3966:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3966:34:0;;;;;;;;;;3872:4;;3894:130;;3944:7;;3966:47;;4003:10;;3966:47;:::i;:::-;3894:8;:130::i;16578:302::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;16665:4:::1;16660:156;;16722:7;::::0;-1:-1:-1;;;;;16722:7:0;;::::1;16712:17:::0;;::::1;::::0;16686:118:::1;;;::::0;-1:-1:-1;;;16686:118:0;;10159:2:1;16686:118:0::1;::::0;::::1;10141:21:1::0;10198:2;10178:18;;;10171:30;10237:34;10217:18;;;10210:62;-1:-1:-1;;;10288:18:1;;;10281:37;10335:19;;16686:118:0::1;9957:403:1::0;16686:118:0::1;-1:-1:-1::0;;;;;16826:39:0;;;::::1;;::::0;;;:31:::1;:39:::0;;;;;:46;;-1:-1:-1;;16826:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16578:302::o;25071:178::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;25126:8:::1;:15:::0;;-1:-1:-1;;;;25126:15:0::1;-1:-1:-1::0;;;25126:15:0::1;::::0;;25152:10:::1;:8;:10::i;:::-;25173:8;:16:::0;;-1:-1:-1;;;;25173:16:0::1;::::0;;25205:36:::1;::::0;25225:15:::1;160:25:1::0;;25205:36:0::1;::::0;148:2:1;133:18;25205:36:0::1;;;;;;;25071:178::o:0;15255:308::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;15390:4:::1;15382;15361:13;2356:12:::0;;;2268:108;15361:13:::1;:17;::::0;15377:1:::1;15361:17;:::i;:::-;15360:26;;;;:::i;:::-;15359:35;;;;:::i;:::-;15347:8;:47;;15325:138;;;::::0;-1:-1:-1;;;15325:138:0;;10567:2:1;15325:138:0::1;::::0;::::1;10549:21:1::0;10606:2;10586:18;;;10579:30;10645:34;10625:18;;;10618:62;-1:-1:-1;;;10696:18:1;;;10689:39;10745:19;;15325:138:0::1;10365:405:1::0;15325:138:0::1;15488:19;:8:::0;15500:6:::1;15488:19;:::i;:::-;15474:11;:33:::0;;;15523:32:::1;::::0;160:25:1;;;15523:32:0::1;::::0;148:2:1;133:18;15523:32:0::1;14:177:1::0;7036:150:0;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;7129:6:::1;::::0;7108:40:::1;::::0;7145:1:::1;::::0;-1:-1:-1;;;;;7129:6:0::1;::::0;7108:40:::1;::::0;7145:1;;7108:40:::1;7159:6;:19:::0;;-1:-1:-1;;;;;;7159:19:0::1;::::0;;7036:150::o;14867:154::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;14921:14:::1;:22:::0;;-1:-1:-1;;14921:22:0;;::::1;::::0;;;14954:20:::1;:28:::0;;;;::::1;::::0;;14998:15:::1;::::0;::::1;::::0;14938:5:::1;::::0;14998:15:::1;14867:154::o:0;12901:326::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;12984:13:::1;::::0;::::1;::::0;::::1;;;12983:14;12975:50;;;::::0;-1:-1:-1;;;12975:50:0;;10977:2:1;12975:50:0::1;::::0;::::1;10959:21:1::0;11016:2;10996:18;;;10989:30;11055:25;11035:18;;;11028:53;11098:18;;12975:50:0::1;10775:347:1::0;12975:50:0::1;13036:13;:20:::0;;-1:-1:-1;;13067:18:0;;;;;13117:12:::1;13096:18;:33:::0;;;13161:32:::1;::::0;13182:11;;13161:32:::1;:::i;:::-;13140:18;:53:::0;13209:10:::1;::::0;::::1;::::0;;;::::1;12901:326:::0;:::o;24499:520::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24683:31:0;::::1;::::0;;::::1;::::0;:77:::1;;-1:-1:-1::0;;;;;;24735:25:0;::::1;::::0;::::1;24683:77;:127;;;;-1:-1:-1::0;;;;;;24781:29:0;::::1;::::0;::::1;24683:127;24661:198;;;::::0;-1:-1:-1;;;24661:198:0;;11329:2:1;24661:198:0::1;::::0;::::1;11311:21:1::0;11368:2;11348:18;;;11341:30;-1:-1:-1;;;11387:18:1;;;11380:51;11448:18;;24661:198:0::1;11127:345:1::0;24661:198:0::1;24870:16;:45:::0;;-1:-1:-1;;;;;24870:45:0;;::::1;-1:-1:-1::0;;;;;;24870:45:0;;::::1;;::::0;;;24926:10:::1;:33:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;24970:14:::1;:41:::0;;;;;::::1;::::0;::::1;;::::0;;24499:520::o;15571:313::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;15707:4:::1;15699;15678:13;2356:12:::0;;;2268:108;15678:13:::1;:17;::::0;15694:1:::1;15678:17;:::i;:::-;15677:26;;;;:::i;:::-;15676:35;;;;:::i;:::-;15664:8;:47;;15642:139;;;::::0;-1:-1:-1;;;15642:139:0;;11679:2:1;15642:139:0::1;::::0;::::1;11661:21:1::0;11718:2;11698:18;;;11691:30;11757:34;11737:18;;;11730:62;-1:-1:-1;;;11808:18:1;;;11801:40;11858:19;;15642:139:0::1;11477:406:1::0;15642:139:0::1;15807:19;:8:::0;15819:6:::1;15807:19;:::i;:::-;15792:12;:34:::0;;;15842::::1;::::0;160:25:1;;;15842:34:0::1;::::0;148:2:1;133:18;15842:34:0::1;14:177:1::0;2055:104:0;2111:13;2144:7;2137:14;;;;;:::i;4062:482::-;248:10;4182:4;4231:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4231:34:0;;;;;;;;;;4298:35;;;;4276:122;;;;-1:-1:-1;;;4276:122:0;;12090:2:1;4276:122:0;;;12072:21:1;12129:2;12109:18;;;12102:30;12168:34;12148:18;;;12141:62;-1:-1:-1;;;12219:18:1;;;12212:35;12264:19;;4276:122:0;11888:401:1;4276:122:0;4434:67;248:10;4457:7;4485:15;4466:16;:34;4434:8;:67::i;:::-;-1:-1:-1;4532:4:0;;4062:482;-1:-1:-1;;;4062:482:0:o;2569:216::-;2691:4;2713:42;248:10;2737:9;2748:6;2713:9;:42::i;13419:1092::-;13701:22;;;;;;;;;;;-1:-1:-1;;;13701:22:0;;;;;13753:10;;;;;;;;;;-1:-1:-1;;;13753:10:0;;;;13548:295;;13577:95;13548:295;;;12553:25:1;;;;13691:33:0;12594:18:1;;;12587:34;;;;13743:21:0;12637:18:1;;;12630:34;13783:13:0;12680:18:1;;;12673:34;13823:4:0;12723:19:1;;;12716:61;-1:-1:-1;;12525:19:1;;13548:295:0;;;;;;-1:-1:-1;;13548:295:0;;;;;;13524:330;;13548:295;13524:330;;;;14019:23;;;;;;;;-1:-1:-1;;;14019:23:0;;;;;;;13912:175;;13941:49;13912:175;;;12990:25:1;;;;14009:34:0;13031:18:1;;;13024:34;;;;-1:-1:-1;13074:18:1;;;13067:34;;;13524:330:0;;-1:-1:-1;12963:18:1;;13912:175:0;;;;;;;;;;;;13888:210;;;;;;13867:231;;14111:14;14216:10;14245;14152:134;;;;;;;;-1:-1:-1;;;13370:27:1;;13422:1;13413:11;;13406:27;;;;13458:2;13449:12;;13442:28;13495:2;13486:12;;13112:392;14152:134:0;;;;-1:-1:-1;;14152:134:0;;;;;;;;;14128:169;;14152:134;14128:169;;;;14310:14;14327:26;;;;;;;;;13736:25:1;;;13809:4;13797:17;;13777:18;;;13770:45;;;;13831:18;;;13824:34;;;13874:18;;;13867:34;;;14128:169:0;;-1:-1:-1;14310:14:0;14327:26;;13708:19:1;;14327:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14310:43;;14382:7;6887:6;;-1:-1:-1;;;;;6887:6:0;;6822:79;14382:7;-1:-1:-1;;;;;14372:17:0;:6;-1:-1:-1;;;;;14372:17:0;;14364:47;;;;-1:-1:-1;;;14364:47:0;;14114:2:1;14364:47:0;;;14096:21:1;14153:2;14133:18;;;14126:30;-1:-1:-1;;;14172:18:1;;;14165:47;14229:18;;14364:47:0;13912:341:1;14364:47:0;14424:13;:20;;-1:-1:-1;;14455:18:0;;;;;14491:10;;;;-1:-1:-1;;14491:10:0;13492:1019;;;;13419:1092;;;:::o;16888:244::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;16976:7:::1;::::0;-1:-1:-1;;;;;16976:7:0;;::::1;16968:15:::0;;::::1;::::0;16960:54:::1;;;::::0;-1:-1:-1;;;16960:54:0;;14460:2:1;16960:54:0::1;::::0;::::1;14442:21:1::0;14499:2;14479:18;;;14472:30;14538:28;14518:18;;;14511:56;14584:18;;16960:54:0::1;14258:350:1::0;16960:54:0::1;17027:41;17056:4;17062:5;17027:28;:41::i;:::-;17084:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;17084:40:0;::::1;::::0;::::1;::::0;;;::::1;16888:244:::0;;:::o;15029:112::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15107:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;15107:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15029:112::o;16221:121::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;16304:18:::1;:30:::0;16221:121::o;17983:184::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18068:29:0;::::1;;::::0;;;:20:::1;:29;::::0;;;;;;;;:40;;-1:-1:-1;;18068:40:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18124:35;;1805:41:1;;;18124:35:0::1;::::0;1778:18:1;18124:35:0::1;;;;;;;17983:184:::0;;:::o;15149:98::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;15211:20:::1;:28:::0;;-1:-1:-1;;15211:28:0::1;::::0;;15149:98::o;17383:592::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;17530:17:::1;:34:::0;;;17575:14:::1;:28:::0;;;17614:10:::1;:20:::0;;;17647:15:::1;:32:::0;;;17690:13:::1;:27:::0;;;17728:9:::1;:19:::0;;;17627:7;17776:31:::1;17592:11:::0;17550:14;17776:31:::1;:::i;:::-;:43;;;;:::i;:::-;17760:13;:59:::0;17884:10:::1;::::0;17867:14:::1;::::0;17847:17:::1;::::0;:34:::1;::::0;17867:14;17847:34:::1;:::i;:::-;:47;;;;:::i;:::-;17830:14;:64:::0;;;17931:2:::1;-1:-1:-1::0;17913:20:0::1;17905:62;;;::::0;-1:-1:-1;;;17905:62:0;;14815:2:1;17905:62:0::1;::::0;::::1;14797:21:1::0;14854:2;14834:18;;;14827:30;14893:31;14873:18;;;14866:59;14942:18;;17905:62:0::1;14613:353:1::0;17905:62:0::1;17383:592:::0;;;:::o;7194:281::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7297:22:0;::::1;7275:110;;;::::0;-1:-1:-1;;;7275:110:0;;15173:2:1;7275:110:0::1;::::0;::::1;15155:21:1::0;15212:2;15192:18;;;15185:30;15251:34;15231:18;;;15224:62;-1:-1:-1;;;15302:18:1;;;15295:36;15348:19;;7275:110:0::1;14971:402:1::0;7275:110:0::1;7422:6;::::0;7401:38:::1;::::0;-1:-1:-1;;;;;7401:38:0;;::::1;::::0;7422:6:::1;::::0;7401:38:::1;::::0;7422:6:::1;::::0;7401:38:::1;7450:6;:17:::0;;-1:-1:-1;;;;;;7450:17:0::1;-1:-1:-1::0;;;;;7450:17:0;;;::::1;::::0;;;::::1;::::0;;7194:281::o;24306:185::-;6949:6;;-1:-1:-1;;;;;6949:6:0;248:10;6949:22;6941:67;;;;-1:-1:-1;;;6941:67:0;;;;;;;:::i;:::-;24401:82:::1;::::0;24364:12:::1;::::0;24409:10:::1;::::0;24433:21:::1;::::0;24364:12;24401:82;24364:12;24401:82;24433:21;24409:10;24401:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;24306:185:0:o;6091:380::-;-1:-1:-1;;;;;6227:19:0;;6219:68;;;;-1:-1:-1;;;6219:68:0;;15790:2:1;6219:68:0;;;15772:21:1;15829:2;15809:18;;;15802:30;15868:34;15848:18;;;15841:62;-1:-1:-1;;;15919:18:1;;;15912:34;15963:19;;6219:68:0;15588:400:1;6219:68:0;-1:-1:-1;;;;;6306:21:0;;6298:68;;;;-1:-1:-1;;;6298:68:0;;16195:2:1;6298:68:0;;;16177:21:1;16234:2;16214:18;;;16207:30;16273:34;16253:18;;;16246:62;-1:-1:-1;;;16324:18:1;;;16317:32;16366:19;;6298:68:0;15993:398:1;6298:68:0;-1:-1:-1;;;;;6379:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6431:32;;160:25:1;;;6431:32:0;;133:18:1;6431:32:0;;;;;;;6091:380;;;:::o;18175:4739::-;-1:-1:-1;;;;;18307:18:0;;18299:68;;;;-1:-1:-1;;;18299:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18386:16:0;;18378:64;;;;-1:-1:-1;;;18378:64:0;;;;;;;:::i;:::-;18470:1;18461:6;:10;18453:52;;;;-1:-1:-1;;;18453:52:0;;17408:2:1;18453:52:0;;;17390:21:1;17447:2;17427:18;;;17420:30;17486:31;17466:18;;;17459:59;17535:18;;18453:52:0;17206:353:1;18453:52:0;-1:-1:-1;;;;;18525:15:0;;;;;;:9;:15;;;;;;;;18524:16;:34;;;;-1:-1:-1;;;;;;18545:13:0;;;;;;:9;:13;;;;;;;;18544:14;18524:34;18516:70;;;;-1:-1:-1;;;18516:70:0;;17766:2:1;18516:70:0;;;17748:21:1;17805:2;17785:18;;;17778:30;17844:25;17824:18;;;17817:53;17887:18;;18516:70:0;17564:347:1;18516:70:0;18604:13;;;;;;;18599:185;;-1:-1:-1;;;;;18660:26:0;;;;;;:20;:26;;;;;;;;;:54;;-1:-1:-1;;;;;;18690:24:0;;;;;;:20;:24;;;;;;;;18660:54;18634:138;;;;-1:-1:-1;;;18634:138:0;;18118:2:1;18634:138:0;;;18100:21:1;18157:2;18137:18;;;18130:30;-1:-1:-1;;;18176:18:1;;;18169:52;18238:18;;18634:138:0;17916:346:1;18634:138:0;18800:18;;:22;18796:247;;-1:-1:-1;;;;;18866:17:0;;;;;;:11;:17;;;;;;;;18865:18;;:35;;-1:-1:-1;6887:6:0;;-1:-1:-1;;;;;18887:13:0;;;6887:6;;18887:13;18865:35;:60;;;-1:-1:-1;;;;;;18904:21:0;;18918:6;18904:21;18865:60;18839:192;;;;-1:-1:-1;;;18839:192:0;;18469:2:1;18839:192:0;;;18451:21:1;18508:2;18488:18;;;18481:30;18547:34;18527:18;;;18520:62;18618:34;18598:18;;;18591:62;-1:-1:-1;;;18669:19:1;;;18662:37;18716:19;;18839:192:0;18267:474:1;18839:192:0;19059:14;;;;19055:1970;;;6887:6;;-1:-1:-1;;;;;19112:15:0;;;6887:6;;19112:15;;;;:49;;-1:-1:-1;6887:6:0;;-1:-1:-1;;;;;19148:13:0;;;6887:6;;19148:13;;19112:49;:86;;;;-1:-1:-1;;;;;;19182:16:0;;;;19112:86;:128;;;;-1:-1:-1;;;;;;19219:21:0;;19233:6;19219:21;;19112:128;:176;;;;-1:-1:-1;;;;;;19262:26:0;;;;;;:20;:26;;;;;;;;19261:27;19112:176;:222;;;;-1:-1:-1;;;;;;19310:24:0;;;;;;:20;:24;;;;;;;;19309:25;19112:222;19090:1924;;;19505:20;;;;19501:327;;;19568:9;;-1:-1:-1;;;;;19554:24:0;;;19568:9;;19554:24;;;;:50;;-1:-1:-1;19596:7:0;;-1:-1:-1;;;;;19582:22:0;;;19596:7;;19582:22;;19554:50;19550:259;;;19686:9;19657:39;;;;:28;:39;;;;;;19699:12;19657:54;;;;-1:-1:-1;;;;;19738:32:0;;;;;;:47;19550:259;-1:-1:-1;;;;;19902:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;19959:35:0;;;;;;:31;:35;;;;;;;;19958:36;19902:92;19876:1123;;;20081:11;;20071:6;:21;;20037:147;;;;-1:-1:-1;;;20037:147:0;;18948:2:1;20037:147:0;;;18930:21:1;18987:2;18967:18;;;18960:30;19026:34;19006:18;;;18999:62;-1:-1:-1;;;19077:18:1;;;19070:38;19125:19;;20037:147:0;18746:404:1;20037:147:0;20267:13;;-1:-1:-1;;;;;2535:18:0;;2503:7;2535:18;;;;;;;;;;;20241:22;;:6;:22;:::i;:::-;:39;;20207:149;;;;-1:-1:-1;;;20207:149:0;;19357:2:1;20207:149:0;;;19339:21:1;19396:2;19376:18;;;19369:30;-1:-1:-1;;;19415:18:1;;;19408:54;19479:18;;20207:149:0;19155:348:1;20207:149:0;19876:1123;;;-1:-1:-1;;;;;20454:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;20509:37:0;;;;;;:31;:37;;;;;;;;20508:38;20454:92;20428:571;;;20633:12;;20623:6;:22;;20589:150;;;;-1:-1:-1;;;20589:150:0;;19710:2:1;20589:150:0;;;19692:21:1;19749:2;19729:18;;;19722:30;19788:34;19768:18;;;19761:62;-1:-1:-1;;;19839:18:1;;;19832:40;19889:19;;20589:150:0;19508:406:1;20428:571:0;-1:-1:-1;;;;;20770:35:0;;;;;;:31;:35;;;;;;;;20765:234;;20890:13;;-1:-1:-1;;;;;2535:18:0;;2503:7;2535:18;;;;;;;;;;;20864:22;;:6;:22;:::i;:::-;:39;;20830:149;;;;-1:-1:-1;;;20830:149:0;;19357:2:1;20830:149:0;;;19339:21:1;19396:2;19376:18;;;19369:30;-1:-1:-1;;;19415:18:1;;;19408:54;19479:18;;20830:149:0;19155:348:1;20830:149:0;21086:4;21037:28;2535:18;;;;;;;;;;;21144;;21120:42;;;;;;;21193:35;;-1:-1:-1;21217:11:0;;;;;;;21193:35;:61;;;;-1:-1:-1;21246:8:0;;-1:-1:-1;;;21246:8:0;;;;21245:9;21193:61;:110;;;;-1:-1:-1;;;;;;21272:31:0;;;;;;:25;:31;;;;;;;;21271:32;21193:110;:154;;;;-1:-1:-1;;;;;;21321:26:0;;;;;;:20;:26;;;;;;;;21320:27;21193:154;:196;;;;-1:-1:-1;;;;;;21365:24:0;;;;;;:20;:24;;;;;;;;21364:25;21193:196;21175:328;;;21416:8;:15;;-1:-1:-1;;;;21416:15:0;-1:-1:-1;;;21416:15:0;;;21448:10;:8;:10::i;:::-;21475:8;:16;;-1:-1:-1;;;;21475:16:0;;;21175:328;-1:-1:-1;;;;;21634:26:0;;21515:12;21634:26;;;:20;:26;;;;;;21530:4;;21634:26;;;:54;;-1:-1:-1;;;;;;21664:24:0;;;;;;:20;:24;;;;;;;;21634:54;21630:102;;;-1:-1:-1;21715:5:0;21630:102;21744:12;21849:7;21845:1016;;;23017:18;;23002:12;:33;21931:77;;;;-1:-1:-1;;;;;;21977:31:0;;;;;;:25;:31;;;;;;;;21931:77;:128;;;;-1:-1:-1;;;;;;22030:29:0;;;;;;:25;:29;;;;;;;;22029:30;21931:128;:166;;;;;22096:1;22080:13;;:17;21931:166;21909:803;;;-1:-1:-1;;;;;22137:15:0;;;;;;:11;:15;;;;;;;;22132:173;;-1:-1:-1;;;;;22177:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;22177:22:0;22195:4;22177:22;;;;;;22222:10;:15;;22195:4;;22222:10;;:15;;22195:4;;22222:15;:::i;:::-;;;;-1:-1:-1;;22265:20:0;;-1:-1:-1;;;;;1165:32:1;;1147:51;;22265:20:0;;1135:2:1;1120:18;22265:20:0;;;;;;;22132:173;22348:3;22333:11;:6;22342:2;22333:11;:::i;:::-;22332:19;;;;:::i;:::-;22325:26;;21909:803;;;-1:-1:-1;;;;;22414:29:0;;;;;;:25;:29;;;;;;;;:51;;;;;22464:1;22447:14;;:18;22414:51;22410:302;;;22521:3;22503:14;;22494:6;:23;;;;:::i;22410:302::-;-1:-1:-1;;;;;22586:31:0;;;;;;:25;:31;;;;;;;;:52;;;;;22637:1;22621:13;;:17;22586:52;22582:130;;;22693:3;22676:13;;22667:6;:22;;;;:::i;:::-;22666:30;;;;:::i;:::-;22659:37;;22582:130;22732:8;;22728:91;;22761:42;22777:4;22791;22798;22761:15;:42::i;:::-;22835:14;22845:4;22835:14;;:::i;:::-;;;21845:1016;22873:33;22889:4;22895:2;22899:6;22873:15;:33::i;:::-;18288:4626;;;;18175:4739;;;:::o;23630:668::-;23669:12;23692:36;23709:18;;23692:16;:36::i;:::-;23849:13;;23832;;23762:21;;23741:18;;23819:26;;23762:21;23819:26;:::i;:::-;23818:44;;;;:::i;:::-;23794:68;;23873:24;23946:13;;23914:15;;23901:10;:28;;;;:::i;:::-;23900:59;;;;:::i;:::-;23873:86;;23970:17;24017:13;;24004:9;;23991:10;:22;;;;:::i;:::-;23990:40;;;;:::i;:::-;24065:10;;24057:46;;23970:60;;-1:-1:-1;;;;;;24065:10:0;;23970:60;;24057:46;;;;23970:60;24065:10;24057:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24136:14:0;;24128:54;;24043:60;;-1:-1:-1;;;;;;24136:14:0;;24164:13;;24128:54;;;;24164:13;24136:14;24128:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24215:16:0;;24207:83;;24114:68;;-1:-1:-1;;;;;;24215:16:0;;24245;;24207:83;;;;24245:16;24215;24207:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;23630:668:0:o;17140:235::-;-1:-1:-1;;;;;17223:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;17223:39:0;;;;;;;17273:38;17223:31;:39;17273:25;:38::i;4552:651::-;-1:-1:-1;;;;;4692:20:0;;4684:70;;;;-1:-1:-1;;;4684:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4773:23:0;;4765:71;;;;-1:-1:-1;;;4765:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4873:17:0;;4849:21;4873:17;;;;;;;;;;;4923:23;;;;4901:111;;;;-1:-1:-1;;;4901:111:0;;20251:2:1;4901:111:0;;;20233:21:1;20290:2;20270:18;;;20263:30;20329:34;20309:18;;;20302:62;-1:-1:-1;;;20380:18:1;;;20373:36;20426:19;;4901:111:0;20049:402:1;4901:111:0;-1:-1:-1;;;;;5048:17:0;;;:9;:17;;;;;;;;;;;5068:22;;;5048:42;;5112:20;;;;;;;;:30;;5084:6;;5048:9;5112:30;;5084:6;;5112:30;:::i;:::-;;;;;;;;5177:9;-1:-1:-1;;;;;5160:35:0;5169:6;-1:-1:-1;;;;;5160:35:0;;5188:6;5160:35;;;;160:25:1;;148:2;133:18;;14:177;5160:35:0;;;;;;;;4673:530;4552:651;;;:::o;23051:571::-;23201:16;;;23215:1;23201:16;;;;;;;;23177:21;;23201:16;;;;;;;;;;-1:-1:-1;23201:16:0;23177:40;;23246:4;23228;23233:1;23228:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23228:23:0;;;:7;;;;;;;;;;:23;;;;23272:9;;:16;;;-1:-1:-1;;;23272:16:0;;;;:9;;;;;:14;;:16;;;;;23228:7;;23272:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23262:4;23267:1;23262:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23262:26:0;;;:7;;;;;;;;;:26;23333:9;;23301:56;;23318:4;;23333:9;23345:11;23301:8;:56::i;:::-;23396:9;;:218;;-1:-1:-1;;;23396:218:0;;-1:-1:-1;;;;;23396:9:0;;;;:60;;:218;;23471:11;;23396:9;;23541:4;;23568;;23588:15;;23396:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23106:516;23051:571;:::o;16350:220::-;-1:-1:-1;;;;;16451:39:0;;;;;;:31;:39;;;;;;;;:52;;-1:-1:-1;;16451:52:0;;;;;;;;;;16519:43;;21211:51:1;;;21278:18;;;21271:50;16519:43:0;;21184:18:1;16519:43:0;21043:284:1;196:180;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:597::-;493:4;522:2;551;540:9;533:21;583:6;577:13;626:6;621:2;610:9;606:18;599:34;651:1;661:140;675:6;672:1;669:13;661:140;;;770:14;;;766:23;;760:30;736:17;;;755:2;732:26;725:66;690:10;;661:140;;;819:6;816:1;813:13;810:91;;;889:1;884:2;875:6;864:9;860:22;856:31;849:42;810:91;-1:-1:-1;962:2:1;941:15;-1:-1:-1;;937:29:1;922:45;;;;969:2;918:54;;381:597;-1:-1:-1;;;381:597:1:o;1209:131::-;-1:-1:-1;;;;;1284:31:1;;1274:42;;1264:70;;1330:1;1327;1320:12;1345:315;1413:6;1421;1474:2;1462:9;1453:7;1449:23;1445:32;1442:52;;;1490:1;1487;1480:12;1442:52;1529:9;1516:23;1548:31;1573:5;1548:31;:::i;:::-;1598:5;1650:2;1635:18;;;;1622:32;;-1:-1:-1;;;1345:315:1:o;1857:247::-;1916:6;1969:2;1957:9;1948:7;1944:23;1940:32;1937:52;;;1985:1;1982;1975:12;1937:52;2024:9;2011:23;2043:31;2068:5;2043:31;:::i;:::-;2093:5;1857:247;-1:-1:-1;;;1857:247:1:o;2109:456::-;2186:6;2194;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:33;2408:32;2449:33;:::i;:::-;2109:456;;2501:7;;-1:-1:-1;;;2555:2:1;2540:18;;;;2527:32;;2109:456::o;2759:416::-;2824:6;2832;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;:::-;3009:5;-1:-1:-1;3066:2:1;3051:18;;3038:32;3108:15;;3101:23;3089:36;;3079:64;;3139:1;3136;3129:12;3079:64;3162:7;3152:17;;;2759:416;;;;;:::o;3180:529::-;3257:6;3265;3273;3326:2;3314:9;3305:7;3301:23;3297:32;3294:52;;;3342:1;3339;3332:12;3294:52;3381:9;3368:23;3400:31;3425:5;3400:31;:::i;:::-;3450:5;-1:-1:-1;3507:2:1;3492:18;;3479:32;3520:33;3479:32;3520:33;:::i;:::-;3572:7;-1:-1:-1;3631:2:1;3616:18;;3603:32;3644:33;3603:32;3644:33;:::i;:::-;3696:7;3686:17;;;3180:529;;;;;:::o;3922:405::-;3997:6;4005;4013;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4171:4;4164:5;4160:16;4153:5;4150:27;4140:55;;4191:1;4188;4181:12;4140:55;4214:5;4266:2;4251:18;;4238:32;;-1:-1:-1;4317:2:1;4302:18;;;4289:32;;3922:405;-1:-1:-1;;;3922:405:1:o;4332:388::-;4400:6;4408;4461:2;4449:9;4440:7;4436:23;4432:32;4429:52;;;4477:1;4474;4467:12;4429:52;4516:9;4503:23;4535:31;4560:5;4535:31;:::i;:::-;4585:5;-1:-1:-1;4642:2:1;4627:18;;4614:32;4655:33;4614:32;4655:33;:::i;4725:316::-;4802:6;4810;4818;4871:2;4859:9;4850:7;4846:23;4842:32;4839:52;;;4887:1;4884;4877:12;4839:52;-1:-1:-1;;4910:23:1;;;4980:2;4965:18;;4952:32;;-1:-1:-1;5031:2:1;5016:18;;;5003:32;;4725:316;-1:-1:-1;4725:316:1:o;5046:356::-;5248:2;5230:21;;;5267:18;;;5260:30;5326:34;5321:2;5306:18;;5299:62;5393:2;5378:18;;5046:356::o;6019:251::-;6089:6;6142:2;6130:9;6121:7;6117:23;6113:32;6110:52;;;6158:1;6155;6148:12;6110:52;6190:9;6184:16;6209:31;6234:5;6209:31;:::i;6275:127::-;6336:10;6331:3;6327:20;6324:1;6317:31;6367:4;6364:1;6357:15;6391:4;6388:1;6381:15;6407:461;6460:3;6498:5;6492:12;6525:6;6520:3;6513:19;6551:4;6580:2;6575:3;6571:12;6564:19;;6617:2;6610:5;6606:14;6638:1;6648:195;6662:6;6659:1;6656:13;6648:195;;;6727:13;;-1:-1:-1;;;;;6723:39:1;6711:52;;6783:12;;;;6818:15;;;;6759:1;6677:9;6648:195;;;-1:-1:-1;6859:3:1;;6407:461;-1:-1:-1;;;;;6407:461:1:o;6873:510::-;7144:6;7133:9;7126:25;7187:3;7182:2;7171:9;7167:18;7160:31;7107:4;7208:57;7260:3;7249:9;7245:19;7237:6;7208:57;:::i;:::-;-1:-1:-1;;;;;7301:32:1;;;;7296:2;7281:18;;7274:60;-1:-1:-1;7365:2:1;7350:18;7343:34;7200:65;6873:510;-1:-1:-1;;6873:510:1:o;7388:380::-;7467:1;7463:12;;;;7510;;;7531:61;;7585:4;7577:6;7573:17;7563:27;;7531:61;7638:2;7630:6;7627:14;7607:18;7604:38;7601:161;;7684:10;7679:3;7675:20;7672:1;7665:31;7719:4;7716:1;7709:15;7747:4;7744:1;7737:15;7601:161;;7388:380;;;:::o;8126:127::-;8187:10;8182:3;8178:20;8175:1;8168:31;8218:4;8215:1;8208:15;8242:4;8239:1;8232:15;8258:168;8298:7;8364:1;8360;8356:6;8352:14;8349:1;8346:21;8341:1;8334:9;8327:17;8323:45;8320:71;;;8371:18;;:::i;:::-;-1:-1:-1;8411:9:1;;8258:168::o;8431:217::-;8471:1;8497;8487:132;;8541:10;8536:3;8532:20;8529:1;8522:31;8576:4;8573:1;8566:15;8604:4;8601:1;8594:15;8487:132;-1:-1:-1;8633:9:1;;8431:217::o;9824:128::-;9864:3;9895:1;9891:6;9888:1;9885:13;9882:39;;;9901:18;;:::i;:::-;-1:-1:-1;9937:9:1;;9824:128::o;16396:401::-;16598:2;16580:21;;;16637:2;16617:18;;;16610:30;16676:34;16671:2;16656:18;;16649:62;-1:-1:-1;;;16742:2:1;16727:18;;16720:35;16787:3;16772:19;;16396:401::o;16802:399::-;17004:2;16986:21;;;17043:2;17023:18;;;17016:30;17082:34;17077:2;17062:18;;17055:62;-1:-1:-1;;;17148:2:1;17133:18;;17126:33;17191:3;17176:19;;16802:399::o;19919:125::-;19959:4;19987:1;19984;19981:8;19978:34;;;19992:18;;:::i;:::-;-1:-1:-1;20029:9:1;;19919:125::o;20456:582::-;20755:6;20744:9;20737:25;20798:6;20793:2;20782:9;20778:18;20771:34;20841:3;20836:2;20825:9;20821:18;20814:31;20718:4;20862:57;20914:3;20903:9;20899:19;20891:6;20862:57;:::i;:::-;-1:-1:-1;;;;;20955:32:1;;;;20950:2;20935:18;;20928:60;-1:-1:-1;21019:3:1;21004:19;20997:35;20854:65;20456:582;-1:-1:-1;;;20456:582:1:o

Swarm Source

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