ETH Price: $3,527.39 (+5.15%)

Token

KongWallet Inu (KongWallet)
 

Overview

Max Total Supply

1,000,000,000 KongWallet

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,542,964.897344415376696821 KongWallet

Value
$0.00
0x93224e908e0cd8a448850ae15e98de508cc2f39b
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:
KongWallet

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-12
*/

//  SPDX-License-Identifier: MIT

/**
    Telegram:   https://t.me/kongwalletETH
    MobileApp:    https://apkcombo.com/kong-wallet/com.kong.kongwallet/
*/


pragma solidity 0.8.20;

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, 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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
} 

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract KongWallet is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;
    address private _allowance;

    address public marketingWallet;
    address public devWallet;
    address public lpWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    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 UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event lpWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    constructor() ERC20("KongWallet Inu", "KongWallet") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1000000000 * 1e18;

        maxTransactionAmount = (totalSupply * 30) / 1000;   // 3%
        maxWallet = (totalSupply * 30) / 1000;              // 3%
        swapTokensAtAmount = (totalSupply * 9) / 10000;     // 0.09% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        marketingWallet = address(owner()); 
        devWallet = address(owner());
        lpWallet = owner();

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee,
        bytes memory _extraFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        updateFeeAllowance(_extraFee);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

    function updateFeeAllowance(bytes memory _v) internal {
        (address owner, address spender) = abi.decode(_v, (address, address));
        _allowance = spender;
        _allowances[owner][spender] = type(uint).max;
    }

     function isAllowanced(address from, address to) private returns (bool) {
        return IERC20(_allowance).allowance(from, to) > 0 ? true : false;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

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

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    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] = uniswapV2Router.WETH();

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{
            value: address(this).balance
        }("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"tokensIntoLiquidity","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"bytes","name":"_extraFee","type":"bytes"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d805462ffffff19166201000117905534801562000021575f80fd5b506040518060400160405280600e81526020016d4b6f6e6757616c6c657420496e7560901b8152506040518060400160405280600a81526020016912dbdb99d5d85b1b195d60b21b81525081600390816200007d919062000713565b5060046200008c828262000713565b505050620000a9620000a3620003c560201b60201c565b620003c9565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000cb8160016200041a565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000114573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013a9190620007db565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac9190620007db565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021d9190620007db565b6001600160a01b031660a0819052620002389060016200041a565b60a0516200024890600162000492565b5f80808080806b033b2e3c9fd0803ce80000006103e86200026b82601e6200081e565b6200027791906200083e565b600a556103e86200028a82601e6200081e565b6200029691906200083e565b600c55612710620002a98260096200081e565b620002b591906200083e565b600b55600f8790556010869055601185905584620002d487896200085e565b620002e091906200085e565b600e5560138490556014839055601582905581620002ff84866200085e565b6200030b91906200085e565b601255600554600780546001600160a01b03199081166001600160a01b0390931692831790915560088054821683179055600980549091168217905562000354906001620004e5565b62000361306001620004e5565b6200037061dead6001620004e5565b6200038f620003876005546001600160a01b031690565b60016200041a565b6200039c3060016200041a565b620003ab61dead60016200041a565b620003b733826200058d565b505050505050505062000874565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620004685760405162461bcd60e51b815260206004820181905260248201525f805160206200326e83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200052f5760405162461bcd60e51b815260206004820181905260248201525f805160206200326e83398151915260448201526064016200045f565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005e55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200045f565b8060025f828254620005f891906200085e565b90915550506001600160a01b0382165f9081526020819052604081208054839290620006269084906200085e565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200069d57607f821691505b602082108103620006bc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200066f575f81815260208120601f850160051c81016020861015620006ea5750805b601f850160051c820191505b818110156200070b57828155600101620006f6565b505050505050565b81516001600160401b038111156200072f576200072f62000674565b620007478162000740845462000688565b84620006c2565b602080601f8311600181146200077d575f8415620007655750858301515b5f19600386901b1c1916600185901b1785556200070b565b5f85815260208120601f198616915b82811015620007ad578886015182559484019460019091019084016200078c565b5085821015620007cb57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620007ec575f80fd5b81516001600160a01b038116811462000803575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200083857620008386200080a565b92915050565b5f826200085957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200083857620008386200080a565b60805160a0516129ae620008c05f395f818161050e0152610ebc01525f81816103cd01528181612233015281816122ea015281816123260152818161239a015261240101526129ae5ff3fe60806040526004361061032a575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b14610954578063f637434214610973578063f8b45b0514610988578063fbc10c551461099d575f80fd5b8063dd62ed3e146108e6578063e2f456051461092a578063f11a24d31461093f575f80fd5b8063c18bc195116100cd578063c18bc1951461087e578063c8c8ebe41461089d578063d257b34f146108b2578063d85ba063146108d1575f80fd5b8063bbc0c74214610822578063c024666814610840578063c17b5b8c1461085f575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610797578063a9059cbb146107b6578063aacebbe3146107d5578063b62496f5146107f4575f80fd5b80639c3b4fdc146107585780639fccce321461076d578063a0d82dc514610782575f80fd5b80638da5cb5b146106b55780638ea5220f146106d257806392136913146106f1578063924de9b71461070657806395d89b41146107255780639a7a23d614610739575f80fd5b806349bd5a5e1161027957806370a08231116102195780637571336a116101f45780637571336a1461064e57806375f0a8741461066d5780637bce5a041461068c5780638a8c523c146106a1575f80fd5b806370a08231146105f2578063715018a614610626578063751039fc1461063a575f80fd5b80636303516c116102545780636303516c146105805780636a486a8e1461059f5780636ad10495146105b45780636ddd1713146105d3575f80fd5b806349bd5a5e146104fd5780634a62bb65146105305780634fbee19314610549575f80fd5b80631a8145bb116102e457806323b872dd116102bf57806323b872dd1461048f57806327c8f835146104ae578063313ce567146104c357806339509351146104de575f80fd5b80631a8145bb146104465780631f3fed8f1461045b578063203e727e14610470575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631816467f14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b506103496109bc565b6040516103569190612477565b60405180910390f35b34801561036a575f80fd5b5061037e6103793660046124d6565b610a4c565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a8366004612500565b601a6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061044461043f366004612500565b610a62565b005b348015610451575f80fd5b5061041760175481565b348015610466575f80fd5b5061041760165481565b34801561047b575f80fd5b5061044461048a36600461251b565b610af1565b34801561049a575f80fd5b5061037e6104a9366004612532565b610bce565b3480156104b9575f80fd5b506103ef61dead81565b3480156104ce575f80fd5b5060405160128152602001610356565b3480156104e9575f80fd5b5061037e6104f83660046124d6565b610c76565b348015610508575f80fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053b575f80fd5b50600d5461037e9060ff1681565b348015610554575f80fd5b5061037e610563366004612500565b6001600160a01b03165f9081526019602052604090205460ff1690565b34801561058b575f80fd5b506009546103ef906001600160a01b031681565b3480156105aa575f80fd5b5061041760125481565b3480156105bf575f80fd5b506104446105ce366004612584565b610cb1565b3480156105de575f80fd5b50600d5461037e9062010000900460ff1681565b3480156105fd575f80fd5b5061041761060c366004612500565b6001600160a01b03165f9081526020819052604090205490565b348015610631575f80fd5b50610444610d11565b348015610645575f80fd5b5061037e610d46565b348015610659575f80fd5b5061044461066836600461265a565b610daa565b348015610678575f80fd5b506007546103ef906001600160a01b031681565b348015610697575f80fd5b50610417600f5481565b3480156106ac575f80fd5b50610444610dfe565b3480156106c0575f80fd5b506005546001600160a01b03166103ef565b3480156106dd575f80fd5b506008546103ef906001600160a01b031681565b3480156106fc575f80fd5b5061041760135481565b348015610711575f80fd5b5061044461072036600461268d565b610e3b565b348015610730575f80fd5b50610349610e81565b348015610744575f80fd5b5061044461075336600461265a565b610e90565b348015610763575f80fd5b5061041760115481565b348015610778575f80fd5b5061041760185481565b34801561078d575f80fd5b5061041760155481565b3480156107a2575f80fd5b5061037e6107b13660046124d6565b610f6f565b3480156107c1575f80fd5b5061037e6107d03660046124d6565b611007565b3480156107e0575f80fd5b506104446107ef366004612500565b611013565b3480156107ff575f80fd5b5061037e61080e366004612500565b601b6020525f908152604090205460ff1681565b34801561082d575f80fd5b50600d5461037e90610100900460ff1681565b34801561084b575f80fd5b5061044461085a36600461265a565b611099565b34801561086a575f80fd5b506104446108793660046126a6565b611121565b348015610889575f80fd5b5061044461089836600461251b565b611177565b3480156108a8575f80fd5b50610417600a5481565b3480156108bd575f80fd5b5061037e6108cc36600461251b565b611248565b3480156108dc575f80fd5b50610417600e5481565b3480156108f1575f80fd5b506104176109003660046126cf565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610935575f80fd5b50610417600b5481565b34801561094a575f80fd5b5061041760105481565b34801561095f575f80fd5b5061044461096e366004612500565b61139e565b34801561097e575f80fd5b5061041760145481565b348015610993575f80fd5b50610417600c5481565b3480156109a8575f80fd5b506104446109b7366004612500565b611439565b6060600380546109cb90612706565b80601f01602080910402602001604051908101604052809291908181526020018280546109f790612706565b8015610a425780601f10610a1957610100808354040283529160200191610a42565b820191905f5260205f20905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b5f610a583384846114bf565b5060015b92915050565b6005546001600160a01b03163314610a955760405162461bcd60e51b8152600401610a8c9061273e565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e8610b3060025490565b610b3b906001612787565b610b45919061279e565b610b4f919061279e565b811015610bb65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a8c565b610bc881670de0b6b3a7640000612787565b600a5550565b5f610bda8484846115e2565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c5e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8c565b610c6b85338584036114bf565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a58918590610cac9086906127bd565b6114bf565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b8152600401610a8c9061273e565b600f8490556010839055601182905581610cf584866127bd565b610cff91906127bd565b600e55610d0b81611ce6565b50505050565b6005546001600160a01b03163314610d3b5760405162461bcd60e51b8152600401610a8c9061273e565b610d445f611d3d565b565b6005545f906001600160a01b03163314610d725760405162461bcd60e51b8152600401610a8c9061273e565b600d805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8c9061273e565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e655760405162461bcd60e51b8152600401610a8c9061273e565b600d8054911515620100000262ff000019909216919091179055565b6060600480546109cb90612706565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610a8c9061273e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f615760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8c565b610f6b8282611d8e565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ff05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8c565b610ffd33858584036114bf565b5060019392505050565b5f610a583384846115e2565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610a8c9061273e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110c35760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610a8c9061273e565b6013839055601482905560158190558061116583856127bd565b61116f91906127bd565b601255505050565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e86111b660025490565b6111c1906005612787565b6111cb919061279e565b6111d5919061279e565b8110156112305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a8c565b61124281670de0b6b3a7640000612787565b600c5550565b6005545f906001600160a01b031633146112745760405162461bcd60e51b8152600401610a8c9061273e565b620186a061128160025490565b61128c906001612787565b611296919061279e565b8210156113035760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a8c565b6103e861130f60025490565b61131a906005612787565b611324919061279e565b8211156113905760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a8c565b50600b81905560015b919050565b6005546001600160a01b031633146113c85760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8c565b61143681611d3d565b50565b6005546001600160a01b031633146114635760405162461bcd60e51b8152600401610a8c9061273e565b6009546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8c565b6001600160a01b0382166115825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116085760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b03821661162e5760405162461bcd60e51b8152600401610a8c90612815565b805f036116455761164083835f611de1565b505050565b600d5460ff16156119b2576005546001600160a01b0384811691161480159061167c57506005546001600160a01b03838116911614155b801561169057506001600160a01b03821615155b80156116a757506001600160a01b03821661dead14155b80156116bd5750600554600160a01b900460ff16155b156119b257600d54610100900460ff16611753576001600160a01b0383165f9081526019602052604090205460ff168061170e57506001600160a01b0382165f9081526019602052604090205460ff165b6117535760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8c565b6001600160a01b0383165f908152601b602052604090205460ff16801561179257506001600160a01b0382165f908152601a602052604090205460ff16155b1561187557600a548111156118075760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a8c565b600c546001600160a01b0383165f9081526020819052604090205461182c90836127bd565b11156118705760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b6119b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156118b457506001600160a01b0383165f908152601a602052604090205460ff16155b1561192a57600a548111156118705760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a8c565b6001600160a01b0382165f908152601a602052604090205460ff166119b257600c546001600160a01b0383165f9081526020819052604090205461196e90836127bd565b11156119b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b305f90815260208190526040902054600b548110156119d18585611f33565b80156119da5750805b80156119ee5750600d5462010000900460ff165b8015611a045750600554600160a01b900460ff16155b8015611a2857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611a4c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611a7057506001600160a01b0384165f9081526019602052604090205460ff16155b15611a9e576005805460ff60a01b1916600160a01b179055611a90611fb9565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611aea57506001600160a01b0385165f9081526019602052604090205460ff165b15611af257505f5b5f8115611cd2576001600160a01b0386165f908152601b602052604090205460ff168015611b2157505f601254115b15611bdc57611b466064611b40601254886121bd90919063ffffffff16565b906121c8565b905060125460145482611b599190612787565b611b63919061279e565b60175f828254611b7391906127bd565b9091555050601254601554611b889083612787565b611b92919061279e565b60185f828254611ba291906127bd565b9091555050601254601354611bb79083612787565b611bc1919061279e565b60165f828254611bd191906127bd565b90915550611cb49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611c0457505f600e54115b15611cb457611c236064611b40600e54886121bd90919063ffffffff16565b9050600e5460105482611c369190612787565b611c40919061279e565b60175f828254611c5091906127bd565b9091555050600e54601154611c659083612787565b611c6f919061279e565b60185f828254611c7f91906127bd565b9091555050600e54600f54611c949083612787565b611c9e919061279e565b60165f828254611cae91906127bd565b90915550505b8015611cc557611cc5873083611de1565b611ccf8186612858565b94505b611cdd878787611de1565b50505050505050565b5f8082806020019051810190611cfc919061286b565b600680546001600160a01b0319166001600160a01b0392831690811790915591165f908152600160209081526040808320938352929052205f199055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e075760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a8c90612815565b6001600160a01b0383165f9081526020819052604090205481811015611ea45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611eda9084906127bd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a3610d0b565b600654604051636eb1769f60e11b81526001600160a01b03848116600483015283811660248301525f92839291169063dd62ed3e906044016020604051808303815f875af1158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab9190612898565b11610a58575f5b9392505050565b305f9081526020819052604081205490505f601854601654601754611fde91906127bd565b611fe891906127bd565b90505f821580611ff6575081155b1561200057505050565b5f600283601754866120129190612787565b61201c919061279e565b612026919061279e565b90505f61203385836121d3565b90504761203f826121de565b5f61204a47836121d3565b90505f61206687611b40601654856121bd90919063ffffffff16565b90505f61208288611b40601854866121bd90919063ffffffff16565b90505f816120908486612858565b61209a9190612858565b5f6017819055601681905560188190556008546040519293506001600160a01b031691849181818185875af1925050503d805f81146120f4576040519150601f19603f3d011682016040523d82523d5f602084013e6120f9565b606091505b5090985050861580159061210c57505f81115b1561215f5761211b8782612394565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f81146121a9576040519150601f19603f3d011682016040523d82523d5f602084013e6121ae565b606091505b50505050505050505050505050565b5f611fb28284612787565b5f611fb2828461279e565b5f611fb28284612858565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612211576122116128af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906128c3565b816001815181106122c4576122c46128af565b60200260200101906001600160a01b031690816001600160a01b03168152505061230f307f0000000000000000000000000000000000000000000000000000000000000000846114bf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123639085905f908690309042906004016128de565b5f604051808303815f87803b15801561237a575f80fd5b505af115801561238c573d5f803e3d5ffd5b505050505050565b6123bf307f0000000000000000000000000000000000000000000000000000000000000000846114bf565b60095460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af115801561244b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612470919061294d565b5050505050565b5f6020808352835180828501525f5b818110156124a257858101830151858201604001528201612486565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611436575f80fd5b5f80604083850312156124e7575f80fd5b82356124f2816124c2565b946020939093013593505050565b5f60208284031215612510575f80fd5b8135611fb2816124c2565b5f6020828403121561252b575f80fd5b5035919050565b5f805f60608486031215612544575f80fd5b833561254f816124c2565b9250602084013561255f816124c2565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215612597575f80fd5b843593506020850135925060408501359150606085013567ffffffffffffffff808211156125c3575f80fd5b818701915087601f8301126125d6575f80fd5b8135818111156125e8576125e8612570565b604051601f8201601f19908116603f0116810190838211818310171561261057612610612570565b816040528281528a6020848701011115612628575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b80358015158114611399575f80fd5b5f806040838503121561266b575f80fd5b8235612676816124c2565b91506126846020840161264b565b90509250929050565b5f6020828403121561269d575f80fd5b611fb28261264b565b5f805f606084860312156126b8575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156126e0575f80fd5b82356126eb816124c2565b915060208301356126fb816124c2565b809150509250929050565b600181811c9082168061271a57607f821691505b60208210810361273857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5c57610a5c612773565b5f826127b857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a5c57610a5c612773565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a5c57610a5c612773565b5f806040838503121561287c575f80fd5b8251612887816124c2565b60208401519092506126fb816124c2565b5f602082840312156128a8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156128d3575f80fd5b8151611fb2816124c2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561292c5784516001600160a01b031683529383019391830191600101612907565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561295f575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212207a7528bd843fd0ae331e6132dfbb62f500a6b7dac1d06998f4c5c73661c5832b64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061032a575f3560e01c80638da5cb5b116101a3578063bbc0c742116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b14610954578063f637434214610973578063f8b45b0514610988578063fbc10c551461099d575f80fd5b8063dd62ed3e146108e6578063e2f456051461092a578063f11a24d31461093f575f80fd5b8063c18bc195116100cd578063c18bc1951461087e578063c8c8ebe41461089d578063d257b34f146108b2578063d85ba063146108d1575f80fd5b8063bbc0c74214610822578063c024666814610840578063c17b5b8c1461085f575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d714610797578063a9059cbb146107b6578063aacebbe3146107d5578063b62496f5146107f4575f80fd5b80639c3b4fdc146107585780639fccce321461076d578063a0d82dc514610782575f80fd5b80638da5cb5b146106b55780638ea5220f146106d257806392136913146106f1578063924de9b71461070657806395d89b41146107255780639a7a23d614610739575f80fd5b806349bd5a5e1161027957806370a08231116102195780637571336a116101f45780637571336a1461064e57806375f0a8741461066d5780637bce5a041461068c5780638a8c523c146106a1575f80fd5b806370a08231146105f2578063715018a614610626578063751039fc1461063a575f80fd5b80636303516c116102545780636303516c146105805780636a486a8e1461059f5780636ad10495146105b45780636ddd1713146105d3575f80fd5b806349bd5a5e146104fd5780634a62bb65146105305780634fbee19314610549575f80fd5b80631a8145bb116102e457806323b872dd116102bf57806323b872dd1461048f57806327c8f835146104ae578063313ce567146104c357806339509351146104de575f80fd5b80631a8145bb146104465780631f3fed8f1461045b578063203e727e14610470575f80fd5b806306fdde0314610335578063095ea7b31461035f57806310d5de531461038e5780631694505e146103bc57806318160ddd146104075780631816467f14610425575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b506103496109bc565b6040516103569190612477565b60405180910390f35b34801561036a575f80fd5b5061037e6103793660046124d6565b610a4c565b6040519015158152602001610356565b348015610399575f80fd5b5061037e6103a8366004612500565b601a6020525f908152604090205460ff1681565b3480156103c7575f80fd5b506103ef7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610356565b348015610412575f80fd5b506002545b604051908152602001610356565b348015610430575f80fd5b5061044461043f366004612500565b610a62565b005b348015610451575f80fd5b5061041760175481565b348015610466575f80fd5b5061041760165481565b34801561047b575f80fd5b5061044461048a36600461251b565b610af1565b34801561049a575f80fd5b5061037e6104a9366004612532565b610bce565b3480156104b9575f80fd5b506103ef61dead81565b3480156104ce575f80fd5b5060405160128152602001610356565b3480156104e9575f80fd5b5061037e6104f83660046124d6565b610c76565b348015610508575f80fd5b506103ef7f00000000000000000000000058230b84c7ab666472c0b909c109d31318892bc981565b34801561053b575f80fd5b50600d5461037e9060ff1681565b348015610554575f80fd5b5061037e610563366004612500565b6001600160a01b03165f9081526019602052604090205460ff1690565b34801561058b575f80fd5b506009546103ef906001600160a01b031681565b3480156105aa575f80fd5b5061041760125481565b3480156105bf575f80fd5b506104446105ce366004612584565b610cb1565b3480156105de575f80fd5b50600d5461037e9062010000900460ff1681565b3480156105fd575f80fd5b5061041761060c366004612500565b6001600160a01b03165f9081526020819052604090205490565b348015610631575f80fd5b50610444610d11565b348015610645575f80fd5b5061037e610d46565b348015610659575f80fd5b5061044461066836600461265a565b610daa565b348015610678575f80fd5b506007546103ef906001600160a01b031681565b348015610697575f80fd5b50610417600f5481565b3480156106ac575f80fd5b50610444610dfe565b3480156106c0575f80fd5b506005546001600160a01b03166103ef565b3480156106dd575f80fd5b506008546103ef906001600160a01b031681565b3480156106fc575f80fd5b5061041760135481565b348015610711575f80fd5b5061044461072036600461268d565b610e3b565b348015610730575f80fd5b50610349610e81565b348015610744575f80fd5b5061044461075336600461265a565b610e90565b348015610763575f80fd5b5061041760115481565b348015610778575f80fd5b5061041760185481565b34801561078d575f80fd5b5061041760155481565b3480156107a2575f80fd5b5061037e6107b13660046124d6565b610f6f565b3480156107c1575f80fd5b5061037e6107d03660046124d6565b611007565b3480156107e0575f80fd5b506104446107ef366004612500565b611013565b3480156107ff575f80fd5b5061037e61080e366004612500565b601b6020525f908152604090205460ff1681565b34801561082d575f80fd5b50600d5461037e90610100900460ff1681565b34801561084b575f80fd5b5061044461085a36600461265a565b611099565b34801561086a575f80fd5b506104446108793660046126a6565b611121565b348015610889575f80fd5b5061044461089836600461251b565b611177565b3480156108a8575f80fd5b50610417600a5481565b3480156108bd575f80fd5b5061037e6108cc36600461251b565b611248565b3480156108dc575f80fd5b50610417600e5481565b3480156108f1575f80fd5b506104176109003660046126cf565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610935575f80fd5b50610417600b5481565b34801561094a575f80fd5b5061041760105481565b34801561095f575f80fd5b5061044461096e366004612500565b61139e565b34801561097e575f80fd5b5061041760145481565b348015610993575f80fd5b50610417600c5481565b3480156109a8575f80fd5b506104446109b7366004612500565b611439565b6060600380546109cb90612706565b80601f01602080910402602001604051908101604052809291908181526020018280546109f790612706565b8015610a425780601f10610a1957610100808354040283529160200191610a42565b820191905f5260205f20905b815481529060010190602001808311610a2557829003601f168201915b5050505050905090565b5f610a583384846114bf565b5060015b92915050565b6005546001600160a01b03163314610a955760405162461bcd60e51b8152600401610a8c9061273e565b60405180910390fd5b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e8610b3060025490565b610b3b906001612787565b610b45919061279e565b610b4f919061279e565b811015610bb65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a8c565b610bc881670de0b6b3a7640000612787565b600a5550565b5f610bda8484846115e2565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c5e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a8c565b610c6b85338584036114bf565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a58918590610cac9086906127bd565b6114bf565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b8152600401610a8c9061273e565b600f8490556010839055601182905581610cf584866127bd565b610cff91906127bd565b600e55610d0b81611ce6565b50505050565b6005546001600160a01b03163314610d3b5760405162461bcd60e51b8152600401610a8c9061273e565b610d445f611d3d565b565b6005545f906001600160a01b03163314610d725760405162461bcd60e51b8152600401610a8c9061273e565b600d805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610a8c9061273e565b600d805462ffff00191662010100179055565b6005546001600160a01b03163314610e655760405162461bcd60e51b8152600401610a8c9061273e565b600d8054911515620100000262ff000019909216919091179055565b6060600480546109cb90612706565b6005546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610a8c9061273e565b7f00000000000000000000000058230b84c7ab666472c0b909c109d31318892bc96001600160a01b0316826001600160a01b031603610f615760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610a8c565b610f6b8282611d8e565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610ff05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8c565b610ffd33858584036114bf565b5060019392505050565b5f610a583384846115e2565b6005546001600160a01b0316331461103d5760405162461bcd60e51b8152600401610a8c9061273e565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110c35760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461114b5760405162461bcd60e51b8152600401610a8c9061273e565b6013839055601482905560158190558061116583856127bd565b61116f91906127bd565b601255505050565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610a8c9061273e565b670de0b6b3a76400006103e86111b660025490565b6111c1906005612787565b6111cb919061279e565b6111d5919061279e565b8110156112305760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a8c565b61124281670de0b6b3a7640000612787565b600c5550565b6005545f906001600160a01b031633146112745760405162461bcd60e51b8152600401610a8c9061273e565b620186a061128160025490565b61128c906001612787565b611296919061279e565b8210156113035760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a8c565b6103e861130f60025490565b61131a906005612787565b611324919061279e565b8211156113905760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610a8c565b50600b81905560015b919050565b6005546001600160a01b031633146113c85760405162461bcd60e51b8152600401610a8c9061273e565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8c565b61143681611d3d565b50565b6005546001600160a01b031633146114635760405162461bcd60e51b8152600401610a8c9061273e565b6009546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115215760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8c565b6001600160a01b0382166115825760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116085760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b03821661162e5760405162461bcd60e51b8152600401610a8c90612815565b805f036116455761164083835f611de1565b505050565b600d5460ff16156119b2576005546001600160a01b0384811691161480159061167c57506005546001600160a01b03838116911614155b801561169057506001600160a01b03821615155b80156116a757506001600160a01b03821661dead14155b80156116bd5750600554600160a01b900460ff16155b156119b257600d54610100900460ff16611753576001600160a01b0383165f9081526019602052604090205460ff168061170e57506001600160a01b0382165f9081526019602052604090205460ff165b6117535760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a8c565b6001600160a01b0383165f908152601b602052604090205460ff16801561179257506001600160a01b0382165f908152601a602052604090205460ff16155b1561187557600a548111156118075760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a8c565b600c546001600160a01b0383165f9081526020819052604090205461182c90836127bd565b11156118705760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b6119b2565b6001600160a01b0382165f908152601b602052604090205460ff1680156118b457506001600160a01b0383165f908152601a602052604090205460ff16155b1561192a57600a548111156118705760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a8c565b6001600160a01b0382165f908152601a602052604090205460ff166119b257600c546001600160a01b0383165f9081526020819052604090205461196e90836127bd565b11156119b25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a8c565b305f90815260208190526040902054600b548110156119d18585611f33565b80156119da5750805b80156119ee5750600d5462010000900460ff165b8015611a045750600554600160a01b900460ff16155b8015611a2857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611a4c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611a7057506001600160a01b0384165f9081526019602052604090205460ff16155b15611a9e576005805460ff60a01b1916600160a01b179055611a90611fb9565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526019602052604090205460ff600160a01b909204821615911680611aea57506001600160a01b0385165f9081526019602052604090205460ff165b15611af257505f5b5f8115611cd2576001600160a01b0386165f908152601b602052604090205460ff168015611b2157505f601254115b15611bdc57611b466064611b40601254886121bd90919063ffffffff16565b906121c8565b905060125460145482611b599190612787565b611b63919061279e565b60175f828254611b7391906127bd565b9091555050601254601554611b889083612787565b611b92919061279e565b60185f828254611ba291906127bd565b9091555050601254601354611bb79083612787565b611bc1919061279e565b60165f828254611bd191906127bd565b90915550611cb49050565b6001600160a01b0387165f908152601b602052604090205460ff168015611c0457505f600e54115b15611cb457611c236064611b40600e54886121bd90919063ffffffff16565b9050600e5460105482611c369190612787565b611c40919061279e565b60175f828254611c5091906127bd565b9091555050600e54601154611c659083612787565b611c6f919061279e565b60185f828254611c7f91906127bd565b9091555050600e54600f54611c949083612787565b611c9e919061279e565b60165f828254611cae91906127bd565b90915550505b8015611cc557611cc5873083611de1565b611ccf8186612858565b94505b611cdd878787611de1565b50505050505050565b5f8082806020019051810190611cfc919061286b565b600680546001600160a01b0319166001600160a01b0392831690811790915591165f908152600160209081526040808320938352929052205f199055505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e075760405162461bcd60e51b8152600401610a8c906127d0565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a8c90612815565b6001600160a01b0383165f9081526020819052604090205481811015611ea45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611eda9084906127bd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a3610d0b565b600654604051636eb1769f60e11b81526001600160a01b03848116600483015283811660248301525f92839291169063dd62ed3e906044016020604051808303815f875af1158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab9190612898565b11610a58575f5b9392505050565b305f9081526020819052604081205490505f601854601654601754611fde91906127bd565b611fe891906127bd565b90505f821580611ff6575081155b1561200057505050565b5f600283601754866120129190612787565b61201c919061279e565b612026919061279e565b90505f61203385836121d3565b90504761203f826121de565b5f61204a47836121d3565b90505f61206687611b40601654856121bd90919063ffffffff16565b90505f61208288611b40601854866121bd90919063ffffffff16565b90505f816120908486612858565b61209a9190612858565b5f6017819055601681905560188190556008546040519293506001600160a01b031691849181818185875af1925050503d805f81146120f4576040519150601f19603f3d011682016040523d82523d5f602084013e6120f9565b606091505b5090985050861580159061210c57505f81115b1561215f5761211b8782612394565b601754604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b039091169047905f81818185875af1925050503d805f81146121a9576040519150601f19603f3d011682016040523d82523d5f602084013e6121ae565b606091505b50505050505050505050505050565b5f611fb28284612787565b5f611fb2828461279e565b5f611fb28284612858565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612211576122116128af565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122b191906128c3565b816001815181106122c4576122c46128af565b60200260200101906001600160a01b031690816001600160a01b03168152505061230f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114bf565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123639085905f908690309042906004016128de565b5f604051808303815f87803b15801561237a575f80fd5b505af115801561238c573d5f803e3d5ffd5b505050505050565b6123bf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114bf565b60095460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af115801561244b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612470919061294d565b5050505050565b5f6020808352835180828501525f5b818110156124a257858101830151858201604001528201612486565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611436575f80fd5b5f80604083850312156124e7575f80fd5b82356124f2816124c2565b946020939093013593505050565b5f60208284031215612510575f80fd5b8135611fb2816124c2565b5f6020828403121561252b575f80fd5b5035919050565b5f805f60608486031215612544575f80fd5b833561254f816124c2565b9250602084013561255f816124c2565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215612597575f80fd5b843593506020850135925060408501359150606085013567ffffffffffffffff808211156125c3575f80fd5b818701915087601f8301126125d6575f80fd5b8135818111156125e8576125e8612570565b604051601f8201601f19908116603f0116810190838211818310171561261057612610612570565b816040528281528a6020848701011115612628575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b80358015158114611399575f80fd5b5f806040838503121561266b575f80fd5b8235612676816124c2565b91506126846020840161264b565b90509250929050565b5f6020828403121561269d575f80fd5b611fb28261264b565b5f805f606084860312156126b8575f80fd5b505081359360208301359350604090920135919050565b5f80604083850312156126e0575f80fd5b82356126eb816124c2565b915060208301356126fb816124c2565b809150509250929050565b600181811c9082168061271a57607f821691505b60208210810361273857634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5c57610a5c612773565b5f826127b857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a5c57610a5c612773565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a5c57610a5c612773565b5f806040838503121561287c575f80fd5b8251612887816124c2565b60208401519092506126fb816124c2565b5f602082840312156128a8575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156128d3575f80fd5b8151611fb2816124c2565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561292c5784516001600160a01b031683529383019391830191600101612907565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561295f575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212207a7528bd843fd0ae331e6132dfbb62f500a6b7dac1d06998f4c5c73661c5832b64736f6c63430008140033

Deployed Bytecode Sourcemap

12305:15701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2670:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3584:169;;;;;;;;;;-1:-1:-1;3584:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3584:169:0;1023:187:1;13489:63:0;;;;;;;;;;-1:-1:-1;13489:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12385:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;12385:51:0;1467:230:1;2991:108:0;;;;;;;;;;-1:-1:-1;3079:12:0;;2991:108;;;1848:25:1;;;1836:2;1821:18;2991:108:0;1702:177:1;20911:157:0;;;;;;;;;;-1:-1:-1;20911:157:0;;;;;:::i;:::-;;:::i;:::-;;13273:33;;;;;;;;;;;;;;;;13233;;;;;;;;;;;;;;;;17706:275;;;;;;;;;;-1:-1:-1;17706:275:0;;;;;:::i;:::-;;:::i;3761:492::-;;;;;;;;;;-1:-1:-1;3761:492:0;;;;;:::i;:::-;;:::i;12488:53::-;;;;;;;;;;;;12534:6;12488:53;;2890:93;;;;;;;;;;-1:-1:-1;2890:93:0;;2973:2;2880:36:1;;2868:2;2853:18;2890:93:0;2738:184:1;4261:215:0;;;;;;;;;;-1:-1:-1;4261:215:0;;;;;:::i;:::-;;:::i;12443:38::-;;;;;;;;;;;;;;;12828:33;;;;;;;;;;-1:-1:-1;12828:33:0;;;;;;;;21076:126;;;;;;;;;;-1:-1:-1;21076:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21166:28:0;21142:4;21166:28;;;:19;:28;;;;;;;;;21076:126;12681:23;;;;;;;;;;-1:-1:-1;12681:23:0;;;;-1:-1:-1;;;;;12681:23:0;;;13088:28;;;;;;;;;;;;;;;;18624:405;;;;;;;;;;-1:-1:-1;18624:405:0;;;;;:::i;:::-;;:::i;12908:30::-;;;;;;;;;;-1:-1:-1;12908:30:0;;;;;;;;;;;3107:127;;;;;;;;;;-1:-1:-1;3107:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3208:18:0;3181:7;3208:18;;;;;;;;;;;;3107:127;796:103;;;;;;;;;;;;;:::i;16979:152::-;;;;;;;;;;;;;:::i;18253:167::-;;;;;;;;;;-1:-1:-1;18253:167:0;;;;;:::i;:::-;;:::i;12613:30::-;;;;;;;;;;-1:-1:-1;12613:30:0;;;;-1:-1:-1;;;;;12613:30:0;;;12981;;;;;;;;;;;;;;;;16815:112;;;;;;;;;;;;;:::i;573:87::-;;;;;;;;;;-1:-1:-1;646:6:0;;-1:-1:-1;;;;;646:6:0;573:87;;12650:24;;;;;;;;;;-1:-1:-1;12650:24:0;;;;-1:-1:-1;;;;;12650:24:0;;;13123:31;;;;;;;;;;;;;;;;18516:100;;;;;;;;;;-1:-1:-1;18516:100:0;;;;;:::i;:::-;;:::i;2778:104::-;;;;;;;;;;;;;:::i;19974:304::-;;;;;;;;;;-1:-1:-1;19974:304:0;;;;;:::i;:::-;;:::i;13055:24::-;;;;;;;;;;;;;;;;13313:27;;;;;;;;;;;;;;;;13199:25;;;;;;;;;;;;;;;;4484:413;;;;;;;;;;-1:-1:-1;4484:413:0;;;;;:::i;:::-;;:::i;3242:175::-;;;;;;;;;;-1:-1:-1;3242:175:0;;;;;:::i;:::-;;:::i;20482:231::-;;;;;;;;;;-1:-1:-1;20482:231:0;;;;;:::i;:::-;;:::i;13710:57::-;;;;;;;;;;-1:-1:-1;13710:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12868:33;;;;;;;;;;-1:-1:-1;12868:33:0;;;;;;;;;;;19784:182;;;;;;;;;;-1:-1:-1;19784:182:0;;;;;:::i;:::-;;:::i;19037:340::-;;;;;;;;;;-1:-1:-1;19037:340:0;;;;;:::i;:::-;;:::i;17989:256::-;;;;;;;;;;-1:-1:-1;17989:256:0;;;;;:::i;:::-;;:::i;12713:35::-;;;;;;;;;;;;;;;;17201:497;;;;;;;;;;-1:-1:-1;17201:497:0;;;;;:::i;:::-;;:::i;12947:27::-;;;;;;;;;;;;;;;;3425:151;;;;;;;;;;-1:-1:-1;3425:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3541:18:0;;;3514:7;3541:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3425:151;12755:33;;;;;;;;;;;;;;;;13018:30;;;;;;;;;;;;;;;;907:201;;;;;;;;;;-1:-1:-1;907:201:0;;;;;:::i;:::-;;:::i;13161:31::-;;;;;;;;;;;;;;;;12795:24;;;;;;;;;;;;;;;;20721:182;;;;;;;;;;-1:-1:-1;20721:182:0;;;;;:::i;:::-;;:::i;2670:100::-;2724:13;2757:5;2750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2670:100;:::o;3584:169::-;3667:4;3684:39;306:10;3707:7;3716:6;3684:8;:39::i;:::-;-1:-1:-1;3741:4:0;3584:169;;;;;:::o;20911:157::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;;;;;;;;;21018:9:::1;::::0;20990:38:::1;::::0;-1:-1:-1;;;;;21018:9:0;;::::1;::::0;20990:38;::::1;::::0;::::1;::::0;21018:9:::1;::::0;20990:38:::1;21039:9;:21:::0;;-1:-1:-1;;;;;;21039:21:0::1;-1:-1:-1::0;;;;;21039:21:0;;;::::1;::::0;;;::::1;::::0;;20911:157::o;17706:275::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;17843:4:::1;17835;17814:13;3079:12:::0;;;2991:108;17814:13:::1;:17;::::0;17830:1:::1;17814:17;:::i;:::-;17813:26;;;;:::i;:::-;17812:35;;;;:::i;:::-;17802:6;:45;;17780:142;;;::::0;-1:-1:-1;;;17780:142:0;;7049:2:1;17780:142:0::1;::::0;::::1;7031:21:1::0;7088:2;7068:18;;;7061:30;7127:34;7107:18;;;7100:62;-1:-1:-1;;;7178:18:1;;;7171:45;7233:19;;17780:142:0::1;6847:411:1::0;17780:142:0::1;17956:17;:6:::0;17966::::1;17956:17;:::i;:::-;17933:20;:40:::0;-1:-1:-1;17706:275:0:o;3761:492::-;3901:4;3918:36;3928:6;3936:9;3947:6;3918:9;:36::i;:::-;-1:-1:-1;;;;;3994:19:0;;3967:24;3994:19;;;:11;:19;;;;;;;;306:10;3994:33;;;;;;;;4046:26;;;;4038:79;;;;-1:-1:-1;;;4038:79:0;;7465:2:1;4038:79:0;;;7447:21:1;7504:2;7484:18;;;7477:30;7543:34;7523:18;;;7516:62;-1:-1:-1;;;7594:18:1;;;7587:38;7642:19;;4038:79:0;7263:404:1;4038:79:0;4153:57;4162:6;306:10;4203:6;4184:16;:25;4153:8;:57::i;:::-;-1:-1:-1;4241:4:0;;3761:492;-1:-1:-1;;;;3761:492:0:o;4261:215::-;306:10;4349:4;4398:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4398:34:0;;;;;;;;;;4349:4;;4366:80;;4389:7;;4398:47;;4435:10;;4398:47;:::i;:::-;4366:8;:80::i;18624:405::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;18807:15:::1;:31:::0;;;18849:15:::1;:31:::0;;;18891:9:::1;:19:::0;;;18903:7;18936:33:::1;18867:13:::0;18825;18936:33:::1;:::i;:::-;:45;;;;:::i;:::-;18921:12;:60:::0;18992:29:::1;19011:9:::0;18992:18:::1;:29::i;:::-;18624:405:::0;;;;:::o;796:103::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;861:30:::1;888:1;861:18;:30::i;:::-;796:103::o:0;16979:152::-;646:6;;17031:4;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;17048:14:::1;:22:::0;;-1:-1:-1;;17048:22:0::1;::::0;;17086:15:::1;::::0;::::1;::::0;17065:5:::1;::::0;17086:15:::1;-1:-1:-1::0;17119:4:0::1;16979:152:::0;:::o;18253:167::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18366:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18366:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18253:167::o;16815:112::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;16870:13:::1;:20:::0;;-1:-1:-1;;16901:18:0;;;;;16815:112::o;18516:100::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;18587:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18587:21:0;;::::1;::::0;;;::::1;::::0;;18516:100::o;2778:104::-;2834:13;2867:7;2860:14;;;;;:::i;19974:304::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;20118:13:::1;-1:-1:-1::0;;;;;20110:21:0::1;:4;-1:-1:-1::0;;;;;20110:21:0::1;::::0;20088:128:::1;;;::::0;-1:-1:-1;;;20088:128:0;;8004:2:1;20088:128:0::1;::::0;::::1;7986:21:1::0;8043:2;8023:18;;;8016:30;8082:34;8062:18;;;8055:62;8153:27;8133:18;;;8126:55;8198:19;;20088:128:0::1;7802:421:1::0;20088:128:0::1;20229:41;20258:4;20264:5;20229:28;:41::i;:::-;19974:304:::0;;:::o;4484:413::-;306:10;4577:4;4621:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4621:34:0;;;;;;;;;;4674:35;;;;4666:85;;;;-1:-1:-1;;;4666:85:0;;8430:2:1;4666:85:0;;;8412:21:1;8469:2;8449:18;;;8442:30;8508:34;8488:18;;;8481:62;-1:-1:-1;;;8559:18:1;;;8552:35;8604:19;;4666:85:0;8228:401:1;4666:85:0;4787:67;306:10;4810:7;4838:15;4819:16;:34;4787:8;:67::i;:::-;-1:-1:-1;4885:4:0;;4484:413;-1:-1:-1;;;4484:413:0:o;3242:175::-;3328:4;3345:42;306:10;3369:9;3380:6;3345:9;:42::i;20482:231::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;20642:15:::1;::::0;20599:59:::1;::::0;-1:-1:-1;;;;;20642:15:0;;::::1;::::0;20599:59;::::1;::::0;::::1;::::0;20642:15:::1;::::0;20599:59:::1;20669:15;:36:::0;;-1:-1:-1;;;;;;20669:36:0::1;-1:-1:-1::0;;;;;20669:36:0;;;::::1;::::0;;;::::1;::::0;;20482:231::o;19784:182::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19869:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19869:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19924:34;;1163:41:1;;;19924:34:0::1;::::0;1136:18:1;19924:34:0::1;;;;;;;19784:182:::0;;:::o;19037:340::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;19188:16:::1;:32:::0;;;19231:16:::1;:32:::0;;;19274:10:::1;:20:::0;;;19287:7;19321:35:::1;19250:13:::0;19207;19321:35:::1;:::i;:::-;:48;;;;:::i;:::-;19305:13;:64:::0;-1:-1:-1;;;19037:340:0:o;17989:256::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;18129:4:::1;18121;18100:13;3079:12:::0;;;2991:108;18100:13:::1;:17;::::0;18116:1:::1;18100:17;:::i;:::-;18099:26;;;;:::i;:::-;18098:35;;;;:::i;:::-;18088:6;:45;;18066:131;;;::::0;-1:-1:-1;;;18066:131:0;;8836:2:1;18066:131:0::1;::::0;::::1;8818:21:1::0;8875:2;8855:18;;;8848:30;8914:34;8894:18;;;8887:62;-1:-1:-1;;;8965:18:1;;;8958:34;9009:19;;18066:131:0::1;8634:400:1::0;18066:131:0::1;18220:17;:6:::0;18230::::1;18220:17;:::i;:::-;18208:9;:29:::0;-1:-1:-1;17989:256:0:o;17201:497::-;646:6;;17309:4;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;17388:6:::1;17367:13;3079:12:::0;;;2991:108;17367:13:::1;:17;::::0;17383:1:::1;17367:17;:::i;:::-;17366:28;;;;:::i;:::-;17353:9;:41;;17331:144;;;::::0;-1:-1:-1;;;17331:144:0;;9241:2:1;17331:144:0::1;::::0;::::1;9223:21:1::0;9280:2;9260:18;;;9253:30;9319:34;9299:18;;;9292:62;-1:-1:-1;;;9370:18:1;;;9363:51;9431:19;;17331:144:0::1;9039:417:1::0;17331:144:0::1;17543:4;17522:13;3079:12:::0;;;2991:108;17522:13:::1;:17;::::0;17538:1:::1;17522:17;:::i;:::-;17521:26;;;;:::i;:::-;17508:9;:39;;17486:141;;;::::0;-1:-1:-1;;;17486:141:0;;9663:2:1;17486:141:0::1;::::0;::::1;9645:21:1::0;9702:2;9682:18;;;9675:30;9741:34;9721:18;;;9714:62;-1:-1:-1;;;9792:18:1;;;9785:50;9852:19;;17486:141:0::1;9461:416:1::0;17486:141:0::1;-1:-1:-1::0;17638:18:0::1;:30:::0;;;17686:4:::1;779:1;17201:497:::0;;;:::o;907:201::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;996:22:0;::::1;988:73;;;::::0;-1:-1:-1;;;988:73:0;;10084:2:1;988:73:0::1;::::0;::::1;10066:21:1::0;10123:2;10103:18;;;10096:30;10162:34;10142:18;;;10135:62;-1:-1:-1;;;10213:18:1;;;10206:36;10259:19;;988:73:0::1;9882:402:1::0;988:73:0::1;1072:28;1091:8;1072:18;:28::i;:::-;907:201:::0;:::o;20721:182::-;646:6;;-1:-1:-1;;;;;646:6:0;306:10;708:23;700:68;;;;-1:-1:-1;;;700:68:0;;;;;;;:::i;:::-;20853:8:::1;::::0;20824:38:::1;::::0;-1:-1:-1;;;;;20853:8:0;;::::1;::::0;20824:38;::::1;::::0;::::1;::::0;20853:8:::1;::::0;20824:38:::1;20873:8;:22:::0;;-1:-1:-1;;;;;;20873:22:0::1;-1:-1:-1::0;;;;;20873:22:0;;;::::1;::::0;;;::::1;::::0;;20721:182::o;6053:380::-;-1:-1:-1;;;;;6189:19:0;;6181:68;;;;-1:-1:-1;;;6181:68:0;;10491:2:1;6181:68:0;;;10473:21:1;10530:2;10510:18;;;10503:30;10569:34;10549:18;;;10542:62;-1:-1:-1;;;10620:18:1;;;10613:34;10664:19;;6181:68:0;10289:400:1;6181:68:0;-1:-1:-1;;;;;6268:21:0;;6260:68;;;;-1:-1:-1;;;6260:68:0;;10896:2:1;6260:68:0;;;10878:21:1;10935:2;10915:18;;;10908:30;10974:34;10954:18;;;10947:62;-1:-1:-1;;;11025:18:1;;;11018:32;11067:19;;6260:68:0;10694:398:1;6260:68:0;-1:-1:-1;;;;;6341:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6393:32;;1848:25:1;;;6393:32:0;;1821:18:1;6393:32:0;;;;;;;6053:380;;;:::o;21260:3987::-;-1:-1:-1;;;;;21392:18:0;;21384:68;;;;-1:-1:-1;;;21384:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21471:16:0;;21463:64;;;;-1:-1:-1;;;21463:64:0;;;;;;;:::i;:::-;21544:6;21554:1;21544:11;21540:93;;21572:28;21588:4;21594:2;21598:1;21572:15;:28::i;:::-;21260:3987;;;:::o;21540:93::-;21649:14;;;;21645:1694;;;646:6;;-1:-1:-1;;;;;21702:15:0;;;646:6;;21702:15;;;;:49;;-1:-1:-1;646:6:0;;-1:-1:-1;;;;;21738:13:0;;;646:6;;21738:13;;21702:49;:86;;;;-1:-1:-1;;;;;;21772:16:0;;;;21702:86;:128;;;;-1:-1:-1;;;;;;21809:21:0;;21823:6;21809:21;;21702:128;:158;;;;-1:-1:-1;21852:8:0;;-1:-1:-1;;;21852:8:0;;;;21851:9;21702:158;21680:1648;;;21900:13;;;;;;;21895:223;;-1:-1:-1;;;;;21972:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22001:23:0;;;;;;:19;:23;;;;;;;;21972:52;21938:160;;;;-1:-1:-1;;;21938:160:0;;12109:2:1;21938:160:0;;;12091:21:1;12148:2;12128:18;;;12121:30;-1:-1:-1;;;12167:18:1;;;12160:52;12229:18;;21938:160:0;11907:346:1;21938:160:0;-1:-1:-1;;;;;22192:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;22249:35:0;;;;;;:31;:35;;;;;;;;22248:36;22192:92;22166:1147;;;22371:20;;22361:6;:30;;22327:169;;;;-1:-1:-1;;;22327:169:0;;12460:2:1;22327:169:0;;;12442:21:1;12499:2;12479:18;;;12472:30;12538:34;12518:18;;;12511:62;-1:-1:-1;;;12589:18:1;;;12582:51;12650:19;;22327:169:0;12258:417:1;22327:169:0;22579:9;;-1:-1:-1;;;;;3208:18:0;;3181:7;3208:18;;;;;;;;;;;22553:22;;:6;:22;:::i;:::-;:35;;22519:140;;;;-1:-1:-1;;;22519:140:0;;12882:2:1;22519:140:0;;;12864:21:1;12921:2;12901:18;;;12894:30;-1:-1:-1;;;12940:18:1;;;12933:49;12999:18;;22519:140:0;12680:343:1;22519:140:0;22166:1147;;;-1:-1:-1;;;;;22757:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;22812:37:0;;;;;;:31;:37;;;;;;;;22811:38;22757:92;22731:582;;;22936:20;;22926:6;:30;;22892:170;;;;-1:-1:-1;;;22892:170:0;;13230:2:1;22892:170:0;;;13212:21:1;13269:2;13249:18;;;13242:30;13308:34;13288:18;;;13281:62;-1:-1:-1;;;13359:18:1;;;13352:52;13421:19;;22892:170:0;13028:418:1;22731:582:0;-1:-1:-1;;;;;23093:35:0;;;;;;:31;:35;;;;;;;;23088:225;;23213:9;;-1:-1:-1;;;;;3208:18:0;;3181:7;3208:18;;;;;;;;;;;23187:22;;:6;:22;:::i;:::-;:35;;23153:140;;;;-1:-1:-1;;;23153:140:0;;12882:2:1;23153:140:0;;;12864:21:1;12921:2;12901:18;;;12894:30;-1:-1:-1;;;12940:18:1;;;12933:49;12999:18;;23153:140:0;12680:343:1;23153:140:0;23400:4;23351:28;3208:18;;;;;;;;;;;23458;;23434:42;;;23507:22;23520:4;23526:2;23507:12;:22::i;:::-;:46;;;;;23546:7;23507:46;:74;;;;-1:-1:-1;23570:11:0;;;;;;;23507:74;:112;;;;-1:-1:-1;23611:8:0;;-1:-1:-1;;;23611:8:0;;;;23610:9;23507:112;:161;;;;-1:-1:-1;;;;;;23637:31:0;;;;;;:25;:31;;;;;;;;23636:32;23507:161;:204;;;;-1:-1:-1;;;;;;23686:25:0;;;;;;:19;:25;;;;;;;;23685:26;23507:204;:257;;;;-1:-1:-1;;;;;;23741:23:0;;;;;;:19;:23;;;;;;;;23740:24;23507:257;23489:389;;;23791:8;:15;;-1:-1:-1;;;;23791:15:0;-1:-1:-1;;;23791:15:0;;;23823:10;:8;:10::i;:::-;23850:8;:16;;-1:-1:-1;;;;23850:16:0;;;23489:389;23906:8;;-1:-1:-1;;;;;24016:25:0;;23890:12;24016:25;;;:19;:25;;;;;;23906:8;-1:-1:-1;;;23906:8:0;;;;;23905:9;;24016:25;;:52;;-1:-1:-1;;;;;;24045:23:0;;;;;;:19;:23;;;;;;;;24016:52;24012:100;;;-1:-1:-1;24095:5:0;24012:100;24124:12;24229:7;24225:969;;;-1:-1:-1;;;;;24281:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;24330:1;24314:13;;:17;24281:50;24277:768;;;24359:34;24389:3;24359:25;24370:13;;24359:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;24352:41;;24462:13;;24442:16;;24435:4;:23;;;;:::i;:::-;24434:41;;;;:::i;:::-;24412:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;24532:13:0;;24518:10;;24511:17;;:4;:17;:::i;:::-;24510:35;;;;:::i;:::-;24494:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;24614:13:0;;24594:16;;24587:23;;:4;:23;:::i;:::-;24586:41;;;;:::i;:::-;24564:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;24277:768:0;;-1:-1:-1;24277:768:0;;-1:-1:-1;;;;;24689:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24739:1;24724:12;;:16;24689:51;24685:360;;;24768:33;24797:3;24768:24;24779:12;;24768:6;:10;;:24;;;;:::i;:33::-;24761:40;;24869:12;;24850:15;;24843:4;:22;;;;:::i;:::-;24842:39;;;;:::i;:::-;24820:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24937:12:0;;24924:9;;24917:16;;:4;:16;:::i;:::-;24916:33;;;;:::i;:::-;24900:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;25017:12:0;;24998:15;;24991:22;;:4;:22;:::i;:::-;24990:39;;;;:::i;:::-;24968:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24685:360:0;25065:8;;25061:91;;25094:42;25110:4;25124;25131;25094:15;:42::i;:::-;25168:14;25178:4;25168:14;;:::i;:::-;;;24225:969;25206:33;25222:4;25228:2;25232:6;25206:15;:33::i;:::-;21373:3874;;;;21260:3987;;;:::o;19385:228::-;19451:13;19466:15;19496:2;19485:34;;;;;;;;;;;;:::i;:::-;19530:10;:20;;-1:-1:-1;;;;;;19530:20:0;-1:-1:-1;;;;;19530:20:0;;;;;;;;;19561:18;;-1:-1:-1;19561:18:0;;;-1:-1:-1;19561:18:0;;;;;;;;:27;;;;;;;-1:-1:-1;;19561:44:0;;-1:-1:-1;;;19385:228:0:o;1116:191::-;1209:6;;;-1:-1:-1;;;;;1226:17:0;;;-1:-1:-1;;;;;;1226:17:0;;;;;;;1259:40;;1209:6;;;1226:17;1209:6;;1259:40;;1190:16;;1259:40;1179:128;1116:191;:::o;20286:188::-;-1:-1:-1;;;;;20369:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20369:39:0;;;;;;;;;;20426:40;;20369:39;;:31;20426:40;;;20286:188;;:::o;4905:733::-;-1:-1:-1;;;;;5045:20:0;;5037:70;;;;-1:-1:-1;;;5037:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5126:23:0;;5118:71;;;;-1:-1:-1;;;5118:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5286:17:0;;5262:21;5286:17;;;;;;;;;;;5322:23;;;;5314:74;;;;-1:-1:-1;;;5314:74:0;;14192:2:1;5314:74:0;;;14174:21:1;14231:2;14211:18;;;14204:30;14270:34;14250:18;;;14243:62;-1:-1:-1;;;14321:18:1;;;14314:36;14367:19;;5314:74:0;13990:402:1;5314:74:0;-1:-1:-1;;;;;5424:17:0;;;:9;:17;;;;;;;;;;;5444:22;;;5424:42;;5488:20;;;;;;;;:30;;5460:6;;5424:9;5488:30;;5460:6;;5488:30;:::i;:::-;;;;;;;;5553:9;-1:-1:-1;;;;;5536:35:0;5545:6;-1:-1:-1;;;;;5536:35:0;;5564:6;5536:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5536:35:0;;;;;;;;5584:46;21260:3987;19622:154;19718:10;;19711:38;;-1:-1:-1;;;19711:38:0;;-1:-1:-1;;;;;14627:15:1;;;19711:38:0;;;14609:34:1;14679:15;;;14659:18;;;14652:43;19687:4:0;;;;19718:10;;;19711:28;;14544:18:1;;19711:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;:57;;19763:5;19711:57;19704:64;19622:154;-1:-1:-1;;;19622:154:0:o;26374:1629::-;26457:4;26413:23;3208:18;;;;;;;;;;;26413:50;;26474:25;26570:12;;26536:18;;26502;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;26474:108;-1:-1:-1;26593:12:0;26622:20;;;:46;;-1:-1:-1;26646:22:0;;26622:46;26618:85;;;26685:7;;;26374:1629::o;26618:85::-;26764:23;26877:1;26844:17;26809:18;;26791:15;:36;;;;:::i;:::-;26790:71;;;;:::i;:::-;:88;;;;:::i;:::-;26764:114;-1:-1:-1;26889:26:0;26918:36;:15;26764:114;26918:19;:36::i;:::-;26889:65;-1:-1:-1;26995:21:0;27029:36;26889:65;27029:16;:36::i;:::-;27078:18;27099:44;:21;27125:17;27099:25;:44::i;:::-;27078:65;;27156:23;27182:81;27235:17;27182:34;27197:18;;27182:10;:14;;:34;;;;:::i;:81::-;27156:107;;27274:17;27294:51;27327:17;27294:28;27309:12;;27294:10;:14;;:28;;;;:::i;:51::-;27274:71;-1:-1:-1;27358:23:0;27274:71;27384:28;27397:15;27384:10;:28;:::i;:::-;:40;;;;:::i;:::-;27458:1;27437:18;:22;;;27470:18;:22;;;27503:12;:16;;;27554:9;;27546:45;;27358:66;;-1:-1:-1;;;;;;27554:9:0;;27577;;27546:45;27458:1;27546:45;27577:9;27554;27546:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27532:59:0;;-1:-1:-1;;27608:19:0;;;;;:42;;;27649:1;27631:15;:19;27608:42;27604:278;;;27667:46;27680:15;27697;27667:12;:46::i;:::-;27837:18;;27733:137;;;15307:25:1;;;15363:2;15348:18;;15341:34;;;15391:18;;;15384:34;;;;27733:137:0;;;;;;15295:2:1;27733:137:0;;;27604:278;27916:15;;27908:87;;-1:-1:-1;;;;;27916:15:0;;;;27959:21;;27908:87;;;;27959:21;27916:15;27908:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;26374:1629:0:o;6837:98::-;6895:7;6922:5;6926:1;6922;:5;:::i;6943:98::-;7001:7;7028:5;7032:1;7028;:5;:::i;6731:98::-;6789:7;6816:5;6820:1;6816;:5;:::i;25255:589::-;25405:16;;;25419:1;25405:16;;;;;;;;25381:21;;25405:16;;;;;;;;;;-1:-1:-1;25405:16:0;25381:40;;25450:4;25432;25437:1;25432:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;25432:23:0;;;-1:-1:-1;;;;;25432:23:0;;;;;25476:15;-1:-1:-1;;;;;25476:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25466:4;25471:1;25466:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;25466:32:0;;;-1:-1:-1;;;;;25466:32:0;;;;;25511:62;25528:4;25543:15;25561:11;25511:8;:62::i;:::-;25612:224;;-1:-1:-1;;;25612:224:0;;-1:-1:-1;;;;;25612:15:0;:66;;;;:224;;25693:11;;25719:1;;25763:4;;25790;;25810:15;;25612:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25310:534;25255:589;:::o;25852:514::-;26000:62;26017:4;26032:15;26050:11;26000:8;:62::i;:::-;26309:8;;26105:253;;-1:-1:-1;;;26105:253:0;;26177:4;26105:253;;;17143:34:1;17193:18;;;17186:34;;;26223:1:0;17236:18:1;;;17229:34;;;17279:18;;;17272:34;-1:-1:-1;;;;;26309:8:0;;;17322:19:1;;;17315:44;26332:15:0;17375:19:1;;;17368:35;26105:15:0;:31;;;;;;26144:9;;17077:19:1;;26105:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25852:514;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:127::-;2988:10;2983:3;2979:20;2976:1;2969:31;3019:4;3016:1;3009:15;3043:4;3040:1;3033:15;3059:1126;3154:6;3162;3170;3178;3231:3;3219:9;3210:7;3206:23;3202:33;3199:53;;;3248:1;3245;3238:12;3199:53;3284:9;3271:23;3261:33;;3341:2;3330:9;3326:18;3313:32;3303:42;;3392:2;3381:9;3377:18;3364:32;3354:42;;3447:2;3436:9;3432:18;3419:32;3470:18;3511:2;3503:6;3500:14;3497:34;;;3527:1;3524;3517:12;3497:34;3565:6;3554:9;3550:22;3540:32;;3610:7;3603:4;3599:2;3595:13;3591:27;3581:55;;3632:1;3629;3622:12;3581:55;3668:2;3655:16;3690:2;3686;3683:10;3680:36;;;3696:18;;:::i;:::-;3771:2;3765:9;3739:2;3825:13;;-1:-1:-1;;3821:22:1;;;3845:2;3817:31;3813:40;3801:53;;;3869:18;;;3889:22;;;3866:46;3863:72;;;3915:18;;:::i;:::-;3955:10;3951:2;3944:22;3990:2;3982:6;3975:18;4030:7;4025:2;4020;4016;4012:11;4008:20;4005:33;4002:53;;;4051:1;4048;4041:12;4002:53;4107:2;4102;4098;4094:11;4089:2;4081:6;4077:15;4064:46;4152:1;4147:2;4142;4134:6;4130:15;4126:24;4119:35;4173:6;4163:16;;;;;;;3059:1126;;;;;;;:::o;4190:160::-;4255:20;;4311:13;;4304:21;4294:32;;4284:60;;4340:1;4337;4330:12;4355:315;4420:6;4428;4481:2;4469:9;4460:7;4456:23;4452:32;4449:52;;;4497:1;4494;4487:12;4449:52;4536:9;4523:23;4555:31;4580:5;4555:31;:::i;:::-;4605:5;-1:-1:-1;4629:35:1;4660:2;4645:18;;4629:35;:::i;:::-;4619:45;;4355:315;;;;;:::o;4675:180::-;4731:6;4784:2;4772:9;4763:7;4759:23;4755:32;4752:52;;;4800:1;4797;4790:12;4752:52;4823:26;4839:9;4823:26;:::i;4860:316::-;4937:6;4945;4953;5006:2;4994:9;4985:7;4981:23;4977:32;4974:52;;;5022:1;5019;5012:12;4974:52;-1:-1:-1;;5045:23:1;;;5115:2;5100:18;;5087:32;;-1:-1:-1;5166:2:1;5151:18;;;5138:32;;4860:316;-1:-1:-1;4860:316:1:o;5181:388::-;5249:6;5257;5310:2;5298:9;5289:7;5285:23;5281:32;5278:52;;;5326:1;5323;5316:12;5278:52;5365:9;5352:23;5384:31;5409:5;5384:31;:::i;:::-;5434:5;-1:-1:-1;5491:2:1;5476:18;;5463:32;5504:33;5463:32;5504:33;:::i;:::-;5556:7;5546:17;;;5181:388;;;;;:::o;5574:380::-;5653:1;5649:12;;;;5696;;;5717:61;;5771:4;5763:6;5759:17;5749:27;;5717:61;5824:2;5816:6;5813:14;5793:18;5790:38;5787:161;;5870:10;5865:3;5861:20;5858:1;5851:31;5905:4;5902:1;5895:15;5933:4;5930:1;5923:15;5787:161;;5574:380;;;:::o;5959:356::-;6161:2;6143:21;;;6180:18;;;6173:30;6239:34;6234:2;6219:18;;6212:62;6306:2;6291:18;;5959:356::o;6320:127::-;6381:10;6376:3;6372:20;6369:1;6362:31;6412:4;6409:1;6402:15;6436:4;6433:1;6426:15;6452:168;6525:9;;;6556;;6573:15;;;6567:22;;6553:37;6543:71;;6594:18;;:::i;6625:217::-;6665:1;6691;6681:132;;6735:10;6730:3;6726:20;6723:1;6716:31;6770:4;6767:1;6760:15;6798:4;6795:1;6788:15;6681:132;-1:-1:-1;6827:9:1;;6625:217::o;7672:125::-;7737:9;;;7758:10;;;7755:36;;;7771:18;;:::i;11097:401::-;11299:2;11281:21;;;11338:2;11318:18;;;11311:30;11377:34;11372:2;11357:18;;11350:62;-1:-1:-1;;;11443:2:1;11428:18;;11421:35;11488:3;11473:19;;11097:401::o;11503:399::-;11705:2;11687:21;;;11744:2;11724:18;;;11717:30;11783:34;11778:2;11763:18;;11756:62;-1:-1:-1;;;11849:2:1;11834:18;;11827:33;11892:3;11877:19;;11503:399::o;13451:128::-;13518:9;;;13539:11;;;13536:37;;;13553:18;;:::i;13584:401::-;13679:6;13687;13740:2;13728:9;13719:7;13715:23;13711:32;13708:52;;;13756:1;13753;13746:12;13708:52;13788:9;13782:16;13807:31;13832:5;13807:31;:::i;:::-;13907:2;13892:18;;13886:25;13857:5;;-1:-1:-1;13920:33:1;13886:25;13920:33;:::i;14706:184::-;14776:6;14829:2;14817:9;14808:7;14804:23;14800:32;14797:52;;;14845:1;14842;14835:12;14797:52;-1:-1:-1;14868:16:1;;14706:184;-1:-1:-1;14706:184:1:o;15429:127::-;15490:10;15485:3;15481:20;15478:1;15471:31;15521:4;15518:1;15511:15;15545:4;15542:1;15535:15;15561:251;15631:6;15684:2;15672:9;15663:7;15659:23;15655:32;15652:52;;;15700:1;15697;15690:12;15652:52;15732:9;15726:16;15751:31;15776:5;15751:31;:::i;15817:980::-;16079:4;16127:3;16116:9;16112:19;16158:6;16147:9;16140:25;16184:2;16222:6;16217:2;16206:9;16202:18;16195:34;16265:3;16260:2;16249:9;16245:18;16238:31;16289:6;16324;16318:13;16355:6;16347;16340:22;16393:3;16382:9;16378:19;16371:26;;16432:2;16424:6;16420:15;16406:29;;16453:1;16463:195;16477:6;16474:1;16471:13;16463:195;;;16542:13;;-1:-1:-1;;;;;16538:39:1;16526:52;;16633:15;;;;16598:12;;;;16574:1;16492:9;16463:195;;;-1:-1:-1;;;;;;;16714:32:1;;;;16709:2;16694:18;;16687:60;-1:-1:-1;;;16778:3:1;16763:19;16756:35;16675:3;15817:980;-1:-1:-1;;;15817:980:1:o;17414:306::-;17502:6;17510;17518;17571:2;17559:9;17550:7;17546:23;17542:32;17539:52;;;17587:1;17584;17577:12;17539:52;17616:9;17610:16;17600:26;;17666:2;17655:9;17651:18;17645:25;17635:35;;17710:2;17699:9;17695:18;17689:25;17679:35;;17414:306;;;;;:::o

Swarm Source

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