ETH Price: $3,176.64 (+2.33%)

Token

BigApe (BA)
 

Overview

Max Total Supply

1,000,000 BA

Holders

42

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,479.504138571635241699 BA

Value
$0.00
0x83a69D9e4988D7bFAfA9325294D172fF16a39534
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:
BigApe

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-09-23
*/

//https://bigapetoken.com
//https://t.me/BigApeCoin

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

interface ILpPair {
    function sync() external;
}

contract BigApe is ERC20, Ownable {


    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address marketingAddress;

    uint256 public tradingActiveBlock;
    uint256 public tradingActiveTs;
    uint256 public blockForPenaltyEnd;

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

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

    uint256 public buyTotalFees;
    uint256 public buymarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellmarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensFormarketing;
    uint256 public tokensForLiquidity;

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

    // 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 SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedmarketingAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("BigApe", "BA") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.
        address _dexRouter;

        _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2

        dexRouter = IDexRouter(_dexRouter);

        // create pair
        lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e6 * 1e18;

        maxBuyAmount = totalSupply * 1 / 100;
        maxSellAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 1 / 10000; 

        buymarketingFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buymarketingFee + buyLiquidityFee;

        sellmarketingFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellmarketingFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(dexRouter), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(dexRouter), true);

        marketingAddress = address(newOwner);

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

    receive() external payable {}

    function openTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(deadBlocks <= 5, "Cannot set more than 5 deadblocks");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        tradingActiveTs = block.timestamp;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

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

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e18, "Cannot set max buy amount lower than 0.2%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

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

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

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

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

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

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

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buymarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buymarketingFee + buyLiquidityFee;
    }

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

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

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

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled){
                    if (to != address(dexRouter) && to != address(lpPair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // 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){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){
                fees = amount * 95 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFormarketing += fees * buymarketingFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensFormarketing += fees * sellmarketingFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFormarketing += fees * buymarketingFee / buyTotalFees;
            }

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

        	amount -= fees;
        }

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

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {

        if(tokensForLiquidity > 0 && balanceOf(address(this)) >= tokensForLiquidity) {
            super._transfer(address(this), address(lpPair),tokensForLiquidity);
            ILpPair(lpPair).sync();
        }
        tokensForLiquidity = 0;

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 30){
            contractBalance = swapTokensAtAmount * 30;
        }

        swapTokensForEth(contractBalance);

        tokensFormarketing = balanceOf(address(this));
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"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":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedmarketingAddress","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":"blockForPenaltyEnd","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":"buyTotalFees","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":"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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellmarketingFee","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":"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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600e805462ffffff191660019081179091556010805460ff191690911790553480156200002f575f80fd5b506040518060400160405280600681526020016542696741706560d01b81525060405180604001604052806002815260200161424160f01b81525081600390816200007b9190620007a9565b5060046200008a8282620007a9565b5050505f6200009e620003b160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062003390833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000132573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000158919062000871565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000871565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000217573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023d919062000871565b6001600160a01b031660a081905262000258906001620003b5565b60a0516200026890600162000417565b69d3c21bcecceda1000000606462000282826001620008b4565b6200028e9190620008d4565b6006556064620002a0826001620008b4565b620002ac9190620008d4565b600755612710620002bf826001620008b4565b620002cb9190620008d4565b600955601960128190555f6013819055620002e691620008f4565b601155602360158190555f60168190556200030191620008f4565b60145562000311836001620003b5565b6200031e306001620003b5565b6200032d61dead6001620003b5565b6080516200033d906001620003b5565b6200034a83600162000481565b6200035730600162000481565b6200036661dead600162000481565b6080516200037690600162000481565b600a80546001600160a01b0319166001600160a01b0385161790556200039d83826200052d565b620003a8836200060f565b5050506200090a565b3390565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055620004468282620003b5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004cf5760405162461bcd60e51b815260206004820181905260248201525f805160206200337083398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004c6565b8060025f828254620005989190620008f4565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005c6908490620008f4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006595760405162461bcd60e51b815260206004820181905260248201525f80516020620033708339815191526044820152606401620004c6565b6001600160a01b038116620006c05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004c6565b6005546040516001600160a01b038084169216905f8051602062003390833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200073257607f821691505b6020821081036200075157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007a4575f81815260208120601f850160051c810160208610156200077f5750805b601f850160051c820191505b81811015620007a0578281556001016200078b565b5050505b505050565b81516001600160401b03811115620007c557620007c562000709565b620007dd81620007d684546200071d565b8462000757565b602080601f83116001811462000813575f8415620007fb5750858301515b5f19600386901b1c1916600185901b178555620007a0565b5f85815260208120601f198616915b82811015620008435788860151825594840194600190910190840162000822565b50858210156200086157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000882575f80fd5b81516001600160a01b038116811462000899575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008ce57620008ce620008a0565b92915050565b5f82620008ef57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008ce57620008ce620008a0565b60805160a051612a056200096b5f395f81816104c001528181610e1b0152818161111101528181611b8601528181612170015261219901525f818161034301528181611b490152818161243d015281816124f401526125330152612a055ff3fe6080604052600436106102dc575f3560e01c80638366e79a11610189578063c876d0b9116100d8578063e2f4560511610092578063f11a24d31161006d578063f11a24d314610881578063f2fde38b14610896578063f5648a4f146108b5578063f6374342146108c9575f80fd5b8063e2f4560514610843578063e884f26014610858578063ee40166e1461086c575f80fd5b8063c876d0b914610774578063d16336491461078d578063d257b34f146107ac578063d85ba063146107cb578063dc3f0d0f146107e0578063dd62ed3e146107ff575f80fd5b8063a184e6dc11610143578063a9059cbb1161011e578063a9059cbb146106ea578063b62496f514610709578063bbc0c74214610737578063c024666814610755575f80fd5b8063a184e6dc146106a1578063a457c2d7146106b6578063a62068ce146106d5575f80fd5b80638366e79a1461060857806388e765ff1461062757806389c9e3201461063c5780638da5cb5b1461065157806395d89b411461066e5780639a7a23d614610682575f80fd5b8063395093511161024557806366d602ae116101ff57806370a08231116101da57806370a082311461058d578063715018a6146105c1578063751039fc146105d55780637571336a146105e9575f80fd5b806366d602ae146105445780636a486a8e146105595780636ddd17131461056e575f80fd5b80633950935114610490578063452ed4f1146104af5780634a62bb65146104e257806351f205e4146104fb57806358a6d5311461050f57806366ca9b8314610525575f80fd5b806318d213e21161029657806318d213e2146103f857806319466ebe1461040d5780631a8145bb1461042257806323b872dd146104375780632be32b6114610456578063313ce56714610475575f80fd5b806302dbd8f8146102e757806306fdde03146103085780630758d92414610332578063095ea7b31461037d57806310d5de53146103ac57806318160ddd146103da575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b50610306610301366004612607565b6108de565b005b348015610313575f80fd5b5061031c61092c565b6040516103299190612627565b60405180910390f35b34801561033d575f80fd5b506103657f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610329565b348015610388575f80fd5b5061039c610397366004612689565b6109bc565b6040519015158152602001610329565b3480156103b7575f80fd5b5061039c6103c63660046126b3565b601a6020525f908152604090205460ff1681565b3480156103e5575f80fd5b506002545b604051908152602001610329565b348015610403575f80fd5b506103ea60125481565b348015610418575f80fd5b506103ea60175481565b34801561042d575f80fd5b506103ea60185481565b348015610442575f80fd5b5061039c6104513660046126d5565b6109d2565b348015610461575f80fd5b50610306610470366004612713565b610a7a565b348015610480575f80fd5b5060405160128152602001610329565b34801561049b575f80fd5b5061039c6104aa366004612689565b610b87565b3480156104ba575f80fd5b506103657f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ed575f80fd5b50600e5461039c9060ff1681565b348015610506575f80fd5b50610306610bc2565b34801561051a575f80fd5b50600d54431061039c565b348015610530575f80fd5b5061030661053f366004612607565b610cc8565b34801561054f575f80fd5b506103ea60075481565b348015610564575f80fd5b506103ea60145481565b348015610579575f80fd5b50600e5461039c9062010000900460ff1681565b348015610598575f80fd5b506103ea6105a73660046126b3565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b50610306610d0d565b3480156105e0575f80fd5b50610306610d80565b3480156105f4575f80fd5b50610306610603366004612737565b610dea565b348015610613575f80fd5b5061039c61062236600461276e565b610ed4565b348015610632575f80fd5b506103ea60065481565b348015610647575f80fd5b506103ea600c5481565b34801561065c575f80fd5b506005546001600160a01b0316610365565b348015610679575f80fd5b5061031c6110d6565b34801561068d575f80fd5b5061030661069c366004612737565b6110e5565b3480156106ac575f80fd5b506103ea60155481565b3480156106c1575f80fd5b5061039c6106d0366004612689565b6111fb565b3480156106e0575f80fd5b506103ea600d5481565b3480156106f5575f80fd5b5061039c610704366004612689565b611293565b348015610714575f80fd5b5061039c6107233660046126b3565b601b6020525f908152604090205460ff1681565b348015610742575f80fd5b50600e5461039c90610100900460ff1681565b348015610760575f80fd5b5061030661076f366004612737565b61129f565b34801561077f575f80fd5b5060105461039c9060ff1681565b348015610798575f80fd5b506103066107a7366004612713565b611327565b3480156107b7575f80fd5b506103066107c6366004612713565b611458565b3480156107d6575f80fd5b506103ea60115481565b3480156107eb575f80fd5b506103066107fa366004612713565b6115a3565b34801561080a575f80fd5b506103ea61081936600461276e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561084e575f80fd5b506103ea60095481565b348015610863575f80fd5b506103066116aa565b348015610877575f80fd5b506103ea600b5481565b34801561088c575f80fd5b506103ea60135481565b3480156108a1575f80fd5b506103066108b03660046126b3565b6116e0565b3480156108c0575f80fd5b506103066117ca565b3480156108d4575f80fd5b506103ea60165481565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016109089061279a565b60405180910390fd5b6015829055601681905561092581836127e3565b6014555050565b60606003805461093b906127f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610967906127f6565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905090565b5f6109c833848461183e565b5060015b92915050565b5f6109de848484611961565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a625760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610908565b610a6f853385840361183e565b506001949350505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016109089061279a565b670de0b6b3a76400006103e8610ab960025490565b610ac490600261282e565b610ace9190612845565b610ad89190612845565b811015610b395760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610908565b610b4b81670de0b6b3a764000061282e565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109c8918590610bbd9086906127e3565b61183e565b6005546001600160a01b03163314610bec5760405162461bcd60e51b81526004016109089061279a565b600954305f908152602081905260409020541015610c74576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610908565b6008805460ff19166001179055610c89612144565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016109089061279a565b60128290556013819055610d0681836127e3565b6011555050565b6005546001600160a01b03163314610d375760405162461bcd60e51b81526004016109089061279a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610daa5760405162461bcd60e51b81526004016109089061279a565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610e145760405162461bcd60e51b81526004016109089061279a565b80610eaa577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610eaa5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610908565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610f005760405162461bcd60e51b81526004016109089061279a565b6001600160a01b038316610f565760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610908565b306001600160a01b03841603610fae5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610908565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190612864565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611066573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108a919061287b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461093b906127f6565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109089061279a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111b65760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610908565b6111c08282612268565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610908565b611289338585840361183e565b5060019392505050565b5f6109c8338484611961565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109089061279a565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113515760405162461bcd60e51b81526004016109089061279a565b600e54610100900460ff16156113a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610908565b60058111156114045760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20352064656164626c6f636b6044820152607360f81b6064820152608401610908565b600e805462ffff0019166201010017905543600b81905542600c5561142a9082906127e3565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146114825760405162461bcd60e51b81526004016109089061279a565b620186a061148f60025490565b61149a90600161282e565b6114a49190612845565b8110156115115760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610908565b6103e861151d60025490565b61152890600161282e565b6115329190612845565b81111561159e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610908565b600955565b6005546001600160a01b031633146115cd5760405162461bcd60e51b81526004016109089061279a565b670de0b6b3a76400006103e86115e260025490565b6115ed90600261282e565b6115f79190612845565b6116019190612845565b8110156116635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610908565b61167581670de0b6b3a764000061282e565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b7c565b6005546001600160a01b031633146116d45760405162461bcd60e51b81526004016109089061279a565b6010805460ff19169055565b6005546001600160a01b0316331461170a5760405162461bcd60e51b81526004016109089061279a565b6001600160a01b03811661176f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610908565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117f45760405162461bcd60e51b81526004016109089061279a565b6040515f90339047908381818185875af1925050503d805f8114611833576040519150601f19603f3d011682016040523d82523d5f602084013e611838565b606091505b50505050565b6001600160a01b0383166118a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610908565b6001600160a01b0382166119015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610908565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119875760405162461bcd60e51b815260040161090890612896565b6001600160a01b0382166119ad5760405162461bcd60e51b8152600401610908906128db565b5f81116119fc5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610908565b600e54610100900460ff16611a8d576001600160a01b0383165f9081526019602052604090205460ff1680611a4857506001600160a01b0382165f9081526019602052604090205460ff165b611a8d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610908565b600e5460ff1615611dea576005546001600160a01b03848116911614801590611ac457506005546001600160a01b03838116911614155b8015611ad857506001600160a01b03821615155b8015611aef57506001600160a01b03821661dead14155b8015611b1357506001600160a01b0383165f9081526019602052604090205460ff16155b8015611b3757506001600160a01b0382165f9081526019602052604090205460ff16155b15611dea5760105460ff1615611c95577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611bbb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611c9557611bcb60024361291e565b325f908152600f6020526040902054108015611c075750611bed60024361291e565b6001600160a01b0383165f908152600f6020526040902054105b611c715760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610908565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611cd457506001600160a01b0382165f908152601a602052604090205460ff16155b15611d4157600654811115611d3c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610908565b611dea565b6001600160a01b0382165f908152601b602052604090205460ff168015611d8057506001600160a01b0383165f908152601a602052604090205460ff16155b15611dea57600754811115611dea5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610908565b305f9081526020819052604090205460095481108015908190611e155750600e5462010000900460ff165b8015611e24575060085460ff16155b8015611e4857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611e6c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611e9057506001600160a01b0384165f9081526019602052604090205460ff16155b15611eb5576008805460ff19166001179055611eaa612144565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff1680611ef557506001600160a01b0385165f9081526019602052604090205460ff165b15611efd57505f5b5f811561213057600d5443108015611f2c57506001600160a01b0387165f908152601b602052604090205460ff165b8015611f5057506001600160a01b0386165f908152601b602052604090205460ff16155b8015611f5d57505f601154115b15611fe0576064611f6f86605f61282e565b611f799190612845565b905060115460135482611f8c919061282e565b611f969190612845565b60185f828254611fa691906127e3565b9091555050601154601254611fbb908361282e565b611fc59190612845565b60175f828254611fd591906127e3565b909155506121129050565b6001600160a01b0386165f908152601b602052604090205460ff16801561200857505f601454115b156120695760646014548661201d919061282e565b6120279190612845565b90506014546016548261203a919061282e565b6120449190612845565b60185f82825461205491906127e3565b9091555050601454601554611fbb908361282e565b6001600160a01b0387165f908152601b602052604090205460ff16801561209157505f601154115b15612112576064601154866120a6919061282e565b6120b09190612845565b9050601154601354826120c3919061282e565b6120cd9190612845565b60185f8282546120dd91906127e3565b90915550506011546012546120f2908361282e565b6120fc9190612845565b60175f82825461210c91906127e3565b90915550505b801561212357612123873083612295565b61212d818661291e565b94505b61213b878787612295565b50505050505050565b5f6018541180156121655750601854305f9081526020819052604090205410155b1561220657612197307f0000000000000000000000000000000000000000000000000000000000000000601854612295565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156121ef575f80fd5b505af1158015612201573d5f803e3d5ffd5b505050505b5f601881905530815260208190526040812054908190036122245750565b60095461223290601e61282e565b81111561224a5760095461224790601e61282e565b90505b612253816123e8565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff19168215151790556111c082826125a5565b6001600160a01b0383166122bb5760405162461bcd60e51b815260040161090890612896565b6001600160a01b0382166122e15760405162461bcd60e51b8152600401610908906128db565b6001600160a01b0383165f90815260208190526040902054818110156123585760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610908565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061238e9084906127e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123da91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061241b5761241b612931565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612497573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bb9190612945565b816001815181106124ce576124ce612931565b60200260200101906001600160a01b031690816001600160a01b031681525050612519307f00000000000000000000000000000000000000000000000000000000000000008461183e565b600a5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926125749287925f92889291909116904290600401612960565b5f604051808303815f87803b15801561258b575f80fd5b505af115801561259d573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f8060408385031215612618575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b8181101561265257858101830151858201604001528201612636565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612686575f80fd5b50565b5f806040838503121561269a575f80fd5b82356126a581612672565b946020939093013593505050565b5f602082840312156126c3575f80fd5b81356126ce81612672565b9392505050565b5f805f606084860312156126e7575f80fd5b83356126f281612672565b9250602084013561270281612672565b929592945050506040919091013590565b5f60208284031215612723575f80fd5b5035919050565b8015158114612686575f80fd5b5f8060408385031215612748575f80fd5b823561275381612672565b915060208301356127638161272a565b809150509250929050565b5f806040838503121561277f575f80fd5b823561278a81612672565b9150602083013561276381612672565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109cc576109cc6127cf565b600181811c9082168061280a57607f821691505b60208210810361282857634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109cc576109cc6127cf565b5f8261285f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612874575f80fd5b5051919050565b5f6020828403121561288b575f80fd5b81516126ce8161272a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109cc576109cc6127cf565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612955575f80fd5b81516126ce81612672565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129ae5784516001600160a01b031683529383019391830191600101612989565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122077d4181807ee3d6d34cd034f711a52e89cd4bea4a3eae89e42a6e023ae16808364736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102dc575f3560e01c80638366e79a11610189578063c876d0b9116100d8578063e2f4560511610092578063f11a24d31161006d578063f11a24d314610881578063f2fde38b14610896578063f5648a4f146108b5578063f6374342146108c9575f80fd5b8063e2f4560514610843578063e884f26014610858578063ee40166e1461086c575f80fd5b8063c876d0b914610774578063d16336491461078d578063d257b34f146107ac578063d85ba063146107cb578063dc3f0d0f146107e0578063dd62ed3e146107ff575f80fd5b8063a184e6dc11610143578063a9059cbb1161011e578063a9059cbb146106ea578063b62496f514610709578063bbc0c74214610737578063c024666814610755575f80fd5b8063a184e6dc146106a1578063a457c2d7146106b6578063a62068ce146106d5575f80fd5b80638366e79a1461060857806388e765ff1461062757806389c9e3201461063c5780638da5cb5b1461065157806395d89b411461066e5780639a7a23d614610682575f80fd5b8063395093511161024557806366d602ae116101ff57806370a08231116101da57806370a082311461058d578063715018a6146105c1578063751039fc146105d55780637571336a146105e9575f80fd5b806366d602ae146105445780636a486a8e146105595780636ddd17131461056e575f80fd5b80633950935114610490578063452ed4f1146104af5780634a62bb65146104e257806351f205e4146104fb57806358a6d5311461050f57806366ca9b8314610525575f80fd5b806318d213e21161029657806318d213e2146103f857806319466ebe1461040d5780631a8145bb1461042257806323b872dd146104375780632be32b6114610456578063313ce56714610475575f80fd5b806302dbd8f8146102e757806306fdde03146103085780630758d92414610332578063095ea7b31461037d57806310d5de53146103ac57806318160ddd146103da575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b50610306610301366004612607565b6108de565b005b348015610313575f80fd5b5061031c61092c565b6040516103299190612627565b60405180910390f35b34801561033d575f80fd5b506103657f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610329565b348015610388575f80fd5b5061039c610397366004612689565b6109bc565b6040519015158152602001610329565b3480156103b7575f80fd5b5061039c6103c63660046126b3565b601a6020525f908152604090205460ff1681565b3480156103e5575f80fd5b506002545b604051908152602001610329565b348015610403575f80fd5b506103ea60125481565b348015610418575f80fd5b506103ea60175481565b34801561042d575f80fd5b506103ea60185481565b348015610442575f80fd5b5061039c6104513660046126d5565b6109d2565b348015610461575f80fd5b50610306610470366004612713565b610a7a565b348015610480575f80fd5b5060405160128152602001610329565b34801561049b575f80fd5b5061039c6104aa366004612689565b610b87565b3480156104ba575f80fd5b506103657f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a3481565b3480156104ed575f80fd5b50600e5461039c9060ff1681565b348015610506575f80fd5b50610306610bc2565b34801561051a575f80fd5b50600d54431061039c565b348015610530575f80fd5b5061030661053f366004612607565b610cc8565b34801561054f575f80fd5b506103ea60075481565b348015610564575f80fd5b506103ea60145481565b348015610579575f80fd5b50600e5461039c9062010000900460ff1681565b348015610598575f80fd5b506103ea6105a73660046126b3565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b50610306610d0d565b3480156105e0575f80fd5b50610306610d80565b3480156105f4575f80fd5b50610306610603366004612737565b610dea565b348015610613575f80fd5b5061039c61062236600461276e565b610ed4565b348015610632575f80fd5b506103ea60065481565b348015610647575f80fd5b506103ea600c5481565b34801561065c575f80fd5b506005546001600160a01b0316610365565b348015610679575f80fd5b5061031c6110d6565b34801561068d575f80fd5b5061030661069c366004612737565b6110e5565b3480156106ac575f80fd5b506103ea60155481565b3480156106c1575f80fd5b5061039c6106d0366004612689565b6111fb565b3480156106e0575f80fd5b506103ea600d5481565b3480156106f5575f80fd5b5061039c610704366004612689565b611293565b348015610714575f80fd5b5061039c6107233660046126b3565b601b6020525f908152604090205460ff1681565b348015610742575f80fd5b50600e5461039c90610100900460ff1681565b348015610760575f80fd5b5061030661076f366004612737565b61129f565b34801561077f575f80fd5b5060105461039c9060ff1681565b348015610798575f80fd5b506103066107a7366004612713565b611327565b3480156107b7575f80fd5b506103066107c6366004612713565b611458565b3480156107d6575f80fd5b506103ea60115481565b3480156107eb575f80fd5b506103066107fa366004612713565b6115a3565b34801561080a575f80fd5b506103ea61081936600461276e565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561084e575f80fd5b506103ea60095481565b348015610863575f80fd5b506103066116aa565b348015610877575f80fd5b506103ea600b5481565b34801561088c575f80fd5b506103ea60135481565b3480156108a1575f80fd5b506103066108b03660046126b3565b6116e0565b3480156108c0575f80fd5b506103066117ca565b3480156108d4575f80fd5b506103ea60165481565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016109089061279a565b60405180910390fd5b6015829055601681905561092581836127e3565b6014555050565b60606003805461093b906127f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610967906127f6565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905090565b5f6109c833848461183e565b5060015b92915050565b5f6109de848484611961565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610a625760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610908565b610a6f853385840361183e565b506001949350505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016109089061279a565b670de0b6b3a76400006103e8610ab960025490565b610ac490600261282e565b610ace9190612845565b610ad89190612845565b811015610b395760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610908565b610b4b81670de0b6b3a764000061282e565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109c8918590610bbd9086906127e3565b61183e565b6005546001600160a01b03163314610bec5760405162461bcd60e51b81526004016109089061279a565b600954305f908152602081905260409020541015610c74576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610908565b6008805460ff19166001179055610c89612144565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016109089061279a565b60128290556013819055610d0681836127e3565b6011555050565b6005546001600160a01b03163314610d375760405162461bcd60e51b81526004016109089061279a565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610daa5760405162461bcd60e51b81526004016109089061279a565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610e145760405162461bcd60e51b81526004016109089061279a565b80610eaa577f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a346001600160a01b0316826001600160a01b031603610eaa5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610908565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610f005760405162461bcd60e51b81526004016109089061279a565b6001600160a01b038316610f565760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610908565b306001600160a01b03841603610fae5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610908565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190612864565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611066573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108a919061287b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461093b906127f6565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109089061279a565b7f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a346001600160a01b0316826001600160a01b0316036111b65760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610908565b6111c08282612268565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610908565b611289338585840361183e565b5060019392505050565b5f6109c8338484611961565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109089061279a565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113515760405162461bcd60e51b81526004016109089061279a565b600e54610100900460ff16156113a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610908565b60058111156114045760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d6f7265207468616e20352064656164626c6f636b6044820152607360f81b6064820152608401610908565b600e805462ffff0019166201010017905543600b81905542600c5561142a9082906127e3565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146114825760405162461bcd60e51b81526004016109089061279a565b620186a061148f60025490565b61149a90600161282e565b6114a49190612845565b8110156115115760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610908565b6103e861151d60025490565b61152890600161282e565b6115329190612845565b81111561159e5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610908565b600955565b6005546001600160a01b031633146115cd5760405162461bcd60e51b81526004016109089061279a565b670de0b6b3a76400006103e86115e260025490565b6115ed90600261282e565b6115f79190612845565b6116019190612845565b8110156116635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610908565b61167581670de0b6b3a764000061282e565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610b7c565b6005546001600160a01b031633146116d45760405162461bcd60e51b81526004016109089061279a565b6010805460ff19169055565b6005546001600160a01b0316331461170a5760405162461bcd60e51b81526004016109089061279a565b6001600160a01b03811661176f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610908565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117f45760405162461bcd60e51b81526004016109089061279a565b6040515f90339047908381818185875af1925050503d805f8114611833576040519150601f19603f3d011682016040523d82523d5f602084013e611838565b606091505b50505050565b6001600160a01b0383166118a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610908565b6001600160a01b0382166119015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610908565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166119875760405162461bcd60e51b815260040161090890612896565b6001600160a01b0382166119ad5760405162461bcd60e51b8152600401610908906128db565b5f81116119fc5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610908565b600e54610100900460ff16611a8d576001600160a01b0383165f9081526019602052604090205460ff1680611a4857506001600160a01b0382165f9081526019602052604090205460ff165b611a8d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610908565b600e5460ff1615611dea576005546001600160a01b03848116911614801590611ac457506005546001600160a01b03838116911614155b8015611ad857506001600160a01b03821615155b8015611aef57506001600160a01b03821661dead14155b8015611b1357506001600160a01b0383165f9081526019602052604090205460ff16155b8015611b3757506001600160a01b0382165f9081526019602052604090205460ff16155b15611dea5760105460ff1615611c95577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611bbb57507f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a346001600160a01b0316826001600160a01b031614155b15611c9557611bcb60024361291e565b325f908152600f6020526040902054108015611c075750611bed60024361291e565b6001600160a01b0383165f908152600f6020526040902054105b611c715760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610908565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611cd457506001600160a01b0382165f908152601a602052604090205460ff16155b15611d4157600654811115611d3c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610908565b611dea565b6001600160a01b0382165f908152601b602052604090205460ff168015611d8057506001600160a01b0383165f908152601a602052604090205460ff16155b15611dea57600754811115611dea5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610908565b305f9081526020819052604090205460095481108015908190611e155750600e5462010000900460ff165b8015611e24575060085460ff16155b8015611e4857506001600160a01b0385165f908152601b602052604090205460ff16155b8015611e6c57506001600160a01b0385165f9081526019602052604090205460ff16155b8015611e9057506001600160a01b0384165f9081526019602052604090205460ff16155b15611eb5576008805460ff19166001179055611eaa612144565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff1680611ef557506001600160a01b0385165f9081526019602052604090205460ff165b15611efd57505f5b5f811561213057600d5443108015611f2c57506001600160a01b0387165f908152601b602052604090205460ff165b8015611f5057506001600160a01b0386165f908152601b602052604090205460ff16155b8015611f5d57505f601154115b15611fe0576064611f6f86605f61282e565b611f799190612845565b905060115460135482611f8c919061282e565b611f969190612845565b60185f828254611fa691906127e3565b9091555050601154601254611fbb908361282e565b611fc59190612845565b60175f828254611fd591906127e3565b909155506121129050565b6001600160a01b0386165f908152601b602052604090205460ff16801561200857505f601454115b156120695760646014548661201d919061282e565b6120279190612845565b90506014546016548261203a919061282e565b6120449190612845565b60185f82825461205491906127e3565b9091555050601454601554611fbb908361282e565b6001600160a01b0387165f908152601b602052604090205460ff16801561209157505f601154115b15612112576064601154866120a6919061282e565b6120b09190612845565b9050601154601354826120c3919061282e565b6120cd9190612845565b60185f8282546120dd91906127e3565b90915550506011546012546120f2908361282e565b6120fc9190612845565b60175f82825461210c91906127e3565b90915550505b801561212357612123873083612295565b61212d818661291e565b94505b61213b878787612295565b50505050505050565b5f6018541180156121655750601854305f9081526020819052604090205410155b1561220657612197307f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a34601854612295565b7f000000000000000000000000190cafb780eb7cb9a8dd87574a00edb0f9206a346001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156121ef575f80fd5b505af1158015612201573d5f803e3d5ffd5b505050505b5f601881905530815260208190526040812054908190036122245750565b60095461223290601e61282e565b81111561224a5760095461224790601e61282e565b90505b612253816123e8565b305f9081526020819052604090205460175550565b6001600160a01b0382165f908152601b60205260409020805460ff19168215151790556111c082826125a5565b6001600160a01b0383166122bb5760405162461bcd60e51b815260040161090890612896565b6001600160a01b0382166122e15760405162461bcd60e51b8152600401610908906128db565b6001600160a01b0383165f90815260208190526040902054818110156123585760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610908565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061238e9084906127e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123da91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061241b5761241b612931565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612497573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bb9190612945565b816001815181106124ce576124ce612931565b60200260200101906001600160a01b031690816001600160a01b031681525050612519307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461183e565b600a5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926125749287925f92889291909116904290600401612960565b5f604051808303815f87803b15801561258b575f80fd5b505af115801561259d573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f8060408385031215612618575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b8181101561265257858101830151858201604001528201612636565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612686575f80fd5b50565b5f806040838503121561269a575f80fd5b82356126a581612672565b946020939093013593505050565b5f602082840312156126c3575f80fd5b81356126ce81612672565b9392505050565b5f805f606084860312156126e7575f80fd5b83356126f281612672565b9250602084013561270281612672565b929592945050506040919091013590565b5f60208284031215612723575f80fd5b5035919050565b8015158114612686575f80fd5b5f8060408385031215612748575f80fd5b823561275381612672565b915060208301356127638161272a565b809150509250929050565b5f806040838503121561277f575f80fd5b823561278a81612672565b9150602083013561276381612672565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109cc576109cc6127cf565b600181811c9082168061280a57607f821691505b60208210810361282857634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109cc576109cc6127cf565b5f8261285f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612874575f80fd5b5051919050565b5f6020828403121561288b575f80fd5b81516126ce8161272a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109cc576109cc6127cf565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612955575f80fd5b81516126ce81612672565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129ae5784516001600160a01b031683529383019391830191600101612989565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122077d4181807ee3d6d34cd034f711a52e89cd4bea4a3eae89e42a6e023ae16808364736f6c63430008140033

Deployed Bytecode Sourcemap

10152:14202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17199:245;;;;;;;;;;-1:-1:-1;17199:245:0;;;;;:::i;:::-;;:::i;:::-;;4002:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10268:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;10268:37:0;820:221:1;4916:169:0;;;;;;;;;;-1:-1:-1;4916:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;4916:169:0;1502:187:1;11367:64:0;;;;;;;;;;-1:-1:-1;11367:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4323:108;;;;;;;;;;-1:-1:-1;4411:12:0;;4323:108;;;2092:25:1;;;2080:2;2065:18;4323:108:0;1946:177:1;10955:30:0;;;;;;;;;;;;;;;;11144:33;;;;;;;;;;;;;;;;11184;;;;;;;;;;;;;;;;5093:492;;;;;;;;;;-1:-1:-1;5093:492:0;;;;;:::i;:::-;;:::i;14943:269::-;;;;;;;;;;-1:-1:-1;14943:269:0;;;;;:::i;:::-;;:::i;4222:93::-;;;;;;;;;;-1:-1:-1;4222:93:0;;4305:2;2916:36:1;;2904:2;2889:18;4222:93:0;2774:184:1;5593:215:0;;;;;;;;;;-1:-1:-1;5593:215:0;;;;;:::i;:::-;;:::i;10312:31::-;;;;;;;;;;;;;;;10574:33;;;;;;;;;;-1:-1:-1;10574:33:0;;;;;;;;24039:312;;;;;;;;;;;;;:::i;21429:120::-;;;;;;;;;;-1:-1:-1;21523:18:0;;21508:12;:33;21429:120;;16952:239;;;;;;;;;;-1:-1:-1;16952:239:0;;;;;:::i;:::-;;:::i;10231:28::-;;;;;;;;;;;;;;;;11031;;;;;;;;;;;;;;;;10654:31;;;;;;;;;;-1:-1:-1;10654:31:0;;;;;;;;;;;4439:127;;;;;;;;;;-1:-1:-1;4439:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4540:18:0;4513:7;4540:18;;;;;;;;;;;;4439:127;8637:150;;;;;;;;;;;;;:::i;14618:154::-;;;;;;;;;;;;;:::i;16133:260::-;;;;;;;;;;-1:-1:-1;16133:260:0;;;;;:::i;:::-;;:::i;23301:456::-;;;;;;;;;;-1:-1:-1;23301:456:0;;;;;:::i;:::-;;:::i;10197:27::-;;;;;;;;;;;;;;;;10495:30;;;;;;;;;;;;;;;;8423:79;;;;;;;;;;-1:-1:-1;8488:6:0;;-1:-1:-1;;;;;8488:6:0;8423:79;;4110:104;;;;;;;;;;;;;:::i;16401:295::-;;;;;;;;;;-1:-1:-1;16401:295:0;;;;;:::i;:::-;;:::i;11066:31::-;;;;;;;;;;;;;;;;5816:413;;;;;;;;;;-1:-1:-1;5816:413:0;;;;;:::i;:::-;;:::i;10532:33::-;;;;;;;;;;;;;;;;4574:175;;;;;;;;;;-1:-1:-1;4574:175:0;;;;;:::i;:::-;;:::i;11589:58::-;;;;;;;;;;-1:-1:-1;11589:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10614:33;;;;;;;;;;-1:-1:-1;10614:33:0;;;;;;;;;;;17452:182;;;;;;;;;;-1:-1:-1;17452:182:0;;;;;:::i;:::-;;:::i;10873:39::-;;;;;;;;;;-1:-1:-1;10873:39:0;;;;;;;;14122:444;;;;;;;;;;-1:-1:-1;14122:444:0;;;;;:::i;:::-;;:::i;15564:346::-;;;;;;;;;;-1:-1:-1;15564:346:0;;;;;:::i;:::-;;:::i;10921:27::-;;;;;;;;;;;;;;;;15220:274;;;;;;;;;;-1:-1:-1;15220:274:0;;;;;:::i;:::-;;:::i;4757:151::-;;;;;;;;;;-1:-1:-1;4757:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4873:18:0;;;4846:7;4873:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4757:151;10380:33;;;;;;;;;;;;;;;;14833:98;;;;;;;;;;;;;:::i;10455:33::-;;;;;;;;;;;;;;;;10992:30;;;;;;;;;;;;;;;;8795:244;;;;;;;;;;-1:-1:-1;8795:244:0;;;;;:::i;:::-;;:::i;23827:160::-;;;;;;;;;;;;;:::i;11104:31::-;;;;;;;;;;;;;;;;17199:245;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;;;;;;;;;17299:16:::1;:32:::0;;;17342:16:::1;:32:::0;;;17401:35:::1;17361:13:::0;17318;17401:35:::1;:::i;:::-;17385:13;:51:::0;-1:-1:-1;;17199:245:0:o;4002:100::-;4056:13;4089:5;4082:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4002:100;:::o;4916:169::-;4999:4;5016:39;231:10;5039:7;5048:6;5016:8;:39::i;:::-;-1:-1:-1;5073:4:0;4916:169;;;;;:::o;5093:492::-;5233:4;5250:36;5260:6;5268:9;5279:6;5250:9;:36::i;:::-;-1:-1:-1;;;;;5326:19:0;;5299:24;5326:19;;;:11;:19;;;;;;;;231:10;5326:33;;;;;;;;5378:26;;;;5370:79;;;;-1:-1:-1;;;5370:79:0;;5284:2:1;5370:79:0;;;5266:21:1;5323:2;5303:18;;;5296:30;5362:34;5342:18;;;5335:62;-1:-1:-1;;;5413:18:1;;;5406:38;5461:19;;5370:79:0;5082:404:1;5370:79:0;5485:57;5494:6;231:10;5535:6;5516:16;:25;5485:8;:57::i;:::-;-1:-1:-1;5573:4:0;;5093:492;-1:-1:-1;;;;5093:492:0:o;14943:269::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15062:4:::1;15056;15036:13;4411:12:::0;;;4323:108;15036:13:::1;:17;::::0;15052:1:::1;15036:17;:::i;:::-;:24;;;;:::i;:::-;15035:31;;;;:::i;:::-;15025:6;:41;;15017:95;;;::::0;-1:-1:-1;;;15017:95:0;;6088:2:1;15017:95:0::1;::::0;::::1;6070:21:1::0;6127:2;6107:18;;;6100:30;6166:34;6146:18;;;6139:62;-1:-1:-1;;;6217:18:1;;;6210:39;6266:19;;15017:95:0::1;5886:405:1::0;15017:95:0::1;15138:17;:6:::0;15148::::1;15138:17;:::i;:::-;15123:12;:32:::0;;;15171:33:::1;::::0;2092:25:1;;;15171:33:0::1;::::0;2080:2:1;2065:18;15171:33:0::1;;;;;;;;14943:269:::0;:::o;5593:215::-;231:10;5681:4;5730:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5730:34:0;;;;;;;;;;5681:4;;5698:80;;5721:7;;5730:47;;5767:10;;5730:47;:::i;:::-;5698:8;:80::i;24039:312::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;24130:18:::1;::::0;24120:4:::1;4513:7:::0;4540:18;;;;;;;;;;;24102:46:::1;;24094:123;;;::::0;;-1:-1:-1;;;24094:123:0;;6498:2:1;24094:123:0::1;::::0;::::1;6480:21:1::0;6517:18;;;6510:30;;;;6576:34;6556:18;;;6549:62;6647:34;6627:18;;;6620:62;6699:19;;24094:123:0::1;6296:428:1::0;24094:123:0::1;24228:8;:15:::0;;-1:-1:-1;;24228:15:0::1;24239:4;24228:15;::::0;;24254:10:::1;:8;:10::i;:::-;24275:8;:16:::0;;-1:-1:-1;;24275:16:0::1;::::0;;24307:36:::1;::::0;24327:15:::1;2092:25:1::0;;24307:36:0::1;::::0;2080:2:1;2065:18;24307:36:0::1;;;;;;;24039:312::o:0;16952:239::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;17051:15:::1;:31:::0;;;17093:15:::1;:31:::0;;;17150:33:::1;17111:13:::0;17069;17150:33:::1;:::i;:::-;17135:12;:48:::0;-1:-1:-1;;16952:239:0:o;8637:150::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;8730:6:::1;::::0;8709:40:::1;::::0;8746:1:::1;::::0;-1:-1:-1;;;;;8730:6:0::1;::::0;8709:40:::1;::::0;8746:1;;8709:40:::1;8760:6;:19:::0;;-1:-1:-1;;;;;;8760:19:0::1;::::0;;8637:150::o;14618:154::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14672:14:::1;:22:::0;;-1:-1:-1;;14672:22:0;;::::1;::::0;;;14705:20:::1;:28:::0;;;;::::1;::::0;;14749:15:::1;::::0;::::1;::::0;14689:5:::1;::::0;14749:15:::1;14618:154::o:0;16133:260::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;16229:4:::1;16225:104;;16267:6;-1:-1:-1::0;;;;;16257:16:0::1;:6;-1:-1:-1::0;;;;;16257:16:0::1;::::0;16249:68:::1;;;::::0;-1:-1:-1;;;16249:68:0;;6931:2:1;16249:68:0::1;::::0;::::1;6913:21:1::0;6970:2;6950:18;;;6943:30;7009:34;6989:18;;;6982:62;-1:-1:-1;;;7060:18:1;;;7053:37;7107:19;;16249:68:0::1;6729:403:1::0;16249:68:0::1;-1:-1:-1::0;;;;;16339:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16339:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16133:260::o;23301:456::-;8550:6;;23388:10;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23419:20:0;::::1;23411:59;;;::::0;-1:-1:-1;;;23411:59:0;;7339:2:1;23411:59:0::1;::::0;::::1;7321:21:1::0;7378:2;7358:18;;;7351:30;7417:28;7397:18;;;7390:56;7463:18;;23411:59:0::1;7137:350:1::0;23411:59:0::1;23507:4;-1:-1:-1::0;;;;;23489:23:0;::::1;::::0;23481:64:::1;;;::::0;-1:-1:-1;;;23481:64:0;;7694:2:1;23481:64:0::1;::::0;::::1;7676:21:1::0;7733:2;7713:18;;;7706:30;7772;7752:18;;;7745:58;7820:18;;23481:64:0::1;7492:352:1::0;23481:64:0::1;23583:39;::::0;-1:-1:-1;;;23583:39:0;;23616:4:::1;23583:39;::::0;::::1;984:51:1::0;23556:24:0::1;::::0;-1:-1:-1;;;;;23583:24:0;::::1;::::0;::::1;::::0;957:18:1;;23583:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23641:46;::::0;-1:-1:-1;;;23641:46:0;;-1:-1:-1;;;;;8230:32:1;;;23641:46:0::1;::::0;::::1;8212:51:1::0;8279:18;;;8272:34;;;23556:66:0;;-1:-1:-1;23641:23:0;;::::1;::::0;::::1;::::0;8185:18:1;;23641:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23703;::::0;;-1:-1:-1;;;;;8230:32:1;;8212:51;;8294:2;8279:18;;8272:34;;;23633:54:0;;-1:-1:-1;23703:46:0::1;::::0;8185:18:1;23703:46:0::1;;;;;;;23400:357;23301:456:::0;;;;:::o;4110:104::-;4166:13;4199:7;4192:14;;;;;:::i;16401:295::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;16510:6:::1;-1:-1:-1::0;;;;;16502:14:0::1;:4;-1:-1:-1::0;;;;;16502:14:0::1;::::0;16494:84:::1;;;::::0;-1:-1:-1;;;16494:84:0;;8769:2:1;16494:84:0::1;::::0;::::1;8751:21:1::0;8808:2;8788:18;;;8781:30;8847:34;8827:18;;;8820:62;8918:27;8898:18;;;8891:55;8963:19;;16494:84:0::1;8567:421:1::0;16494:84:0::1;16591:41;16620:4;16626:5;16591:28;:41::i;:::-;16648:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16648:40:0;::::1;::::0;::::1;::::0;;;::::1;16401:295:::0;;:::o;5816:413::-;231:10;5909:4;5953:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5953:34:0;;;;;;;;;;6006:35;;;;5998:85;;;;-1:-1:-1;;;5998:85:0;;9195:2:1;5998:85:0;;;9177:21:1;9234:2;9214:18;;;9207:30;9273:34;9253:18;;;9246:62;-1:-1:-1;;;9324:18:1;;;9317:35;9369:19;;5998:85:0;8993:401:1;5998:85:0;6119:67;231:10;6142:7;6170:15;6151:16;:34;6119:8;:67::i;:::-;-1:-1:-1;6217:4:0;;5816:413;-1:-1:-1;;;5816:413:0:o;4574:175::-;4660:4;4677:42;231:10;4701:9;4712:6;4677:9;:42::i;17452:182::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17537:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17537:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17592:34;;1642:41:1;;;17592:34:0::1;::::0;1615:18:1;17592:34:0::1;;;;;;;17452:182:::0;;:::o;14122:444::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14202:13:::1;::::0;::::1;::::0;::::1;;;14201:14;14193:50;;;::::0;-1:-1:-1;;;14193:50:0;;9601:2:1;14193:50:0::1;::::0;::::1;9583:21:1::0;9640:2;9620:18;;;9613:30;9679:25;9659:18;;;9652:53;9722:18;;14193:50:0::1;9399:347:1::0;14193:50:0::1;14276:1;14262:10;:15;;14254:61;;;::::0;-1:-1:-1;;;14254:61:0;;9953:2:1;14254:61:0::1;::::0;::::1;9935:21:1::0;9992:2;9972:18;;;9965:30;10031:34;10011:18;;;10004:62;-1:-1:-1;;;10082:18:1;;;10075:31;10123:19;;14254:61:0::1;9751:397:1::0;14254:61:0::1;14326:13;:20:::0;;-1:-1:-1;;14357:18:0;;;;;14407:12:::1;14386:18;:33:::0;;;14448:15:::1;14430;:33:::0;14495:31:::1;::::0;14516:10;;14495:31:::1;:::i;:::-;14474:18;:52:::0;14542:16:::1;::::0;::::1;::::0;;;::::1;14122:444:::0;:::o;15564:346::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15687:6:::1;15667:13;4411:12:::0;;;4323:108;15667:13:::1;:17;::::0;15683:1:::1;15667:17;:::i;:::-;:26;;;;:::i;:::-;15654:9;:39;;15646:105;;;::::0;-1:-1:-1;;;15646:105:0;;10355:2:1;15646:105:0::1;::::0;::::1;10337:21:1::0;10394:2;10374:18;;;10367:30;10433:34;10413:18;;;10406:62;-1:-1:-1;;;10484:18:1;;;10477:51;10545:19;;15646:105:0::1;10153:417:1::0;15646:105:0::1;15802:4;15782:13;4411:12:::0;;;4323:108;15782:13:::1;:17;::::0;15798:1:::1;15782:17;:::i;:::-;:24;;;;:::i;:::-;15769:9;:37;;15761:102;;;::::0;-1:-1:-1;;;15761:102:0;;10777:2:1;15761:102:0::1;::::0;::::1;10759:21:1::0;10816:2;10796:18;;;10789:30;10855:34;10835:18;;;10828:62;-1:-1:-1;;;10906:18:1;;;10899:50;10966:19;;15761:102:0::1;10575:416:1::0;15761:102:0::1;15873:18;:30:::0;15564:346::o;15220:274::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;15340:4:::1;15334;15314:13;4411:12:::0;;;4323:108;15314:13:::1;:17;::::0;15330:1:::1;15314:17;:::i;:::-;:24;;;;:::i;:::-;15313:31;;;;:::i;:::-;15303:6;:41;;15295:96;;;::::0;-1:-1:-1;;;15295:96:0;;11198:2:1;15295:96:0::1;::::0;::::1;11180:21:1::0;11237:2;11217:18;;;11210:30;11276:34;11256:18;;;11249:62;-1:-1:-1;;;11327:18:1;;;11320:40;11377:19;;15295:96:0::1;10996:406:1::0;15295:96:0::1;15418:17;:6:::0;15428::::1;15418:17;:::i;:::-;15402:13;:33:::0;;;15451:35:::1;::::0;2092:25:1;;;15451:35:0::1;::::0;2080:2:1;2065:18;15451:35:0::1;1946:177:1::0;14833:98:0;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;14895:20:::1;:28:::0;;-1:-1:-1;;14895:28:0::1;::::0;;14833:98::o;8795:244::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8884:22:0;::::1;8876:73;;;::::0;-1:-1:-1;;;8876:73:0;;11609:2:1;8876:73:0::1;::::0;::::1;11591:21:1::0;11648:2;11628:18;;;11621:30;11687:34;11667:18;;;11660:62;-1:-1:-1;;;11738:18:1;;;11731:36;11784:19;;8876:73:0::1;11407:402:1::0;8876:73:0::1;8986:6;::::0;8965:38:::1;::::0;-1:-1:-1;;;;;8965:38:0;;::::1;::::0;8986:6:::1;::::0;8965:38:::1;::::0;8986:6:::1;::::0;8965:38:::1;9014:6;:17:::0;;-1:-1:-1;;;;;;9014:17:0::1;-1:-1:-1::0;;;;;9014:17:0;;;::::1;::::0;;;::::1;::::0;;8795:244::o;23827:160::-;8550:6;;-1:-1:-1;;;;;8550:6:0;231:10;8550:22;8542:67;;;;-1:-1:-1;;;8542:67:0;;;;;;;:::i;:::-;23921:58:::1;::::0;23885:12:::1;::::0;23929:10:::1;::::0;23953:21:::1;::::0;23885:12;23921:58;23885:12;23921:58;23953:21;23929:10;23921:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23827:160:0:o;7716:380::-;-1:-1:-1;;;;;7852:19:0;;7844:68;;;;-1:-1:-1;;;7844:68:0;;12226:2:1;7844:68:0;;;12208:21:1;12265:2;12245:18;;;12238:30;12304:34;12284:18;;;12277:62;-1:-1:-1;;;12355:18:1;;;12348:34;12399:19;;7844:68:0;12024:400:1;7844:68:0;-1:-1:-1;;;;;7931:21:0;;7923:68;;;;-1:-1:-1;;;7923:68:0;;12631:2:1;7923:68:0;;;12613:21:1;12670:2;12650:18;;;12643:30;12709:34;12689:18;;;12682:62;-1:-1:-1;;;12760:18:1;;;12753:32;12802:19;;7923:68:0;12429:398:1;7923:68:0;-1:-1:-1;;;;;8004:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8056:32;;2092:25:1;;;8056:32:0;;2065:18:1;8056:32:0;;;;;;;7716:380;;;:::o;17642:3779::-;-1:-1:-1;;;;;17742:18:0;;17734:68;;;;-1:-1:-1;;;17734:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17821:16:0;;17813:64;;;;-1:-1:-1;;;17813:64:0;;;;;;;:::i;:::-;17905:1;17896:6;:10;17888:52;;;;-1:-1:-1;;;17888:52:0;;13844:2:1;17888:52:0;;;13826:21:1;13883:2;13863:18;;;13856:30;13922:31;13902:18;;;13895:59;13971:18;;17888:52:0;13642:353:1;17888:52:0;17957:13;;;;;;;17953:132;;-1:-1:-1;;;;;17994:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18023:23:0;;;;;;:19;:23;;;;;;;;17994:52;17986:87;;;;-1:-1:-1;;;17986:87:0;;14202:2:1;17986:87:0;;;14184:21:1;14241:2;14221:18;;;14214:30;-1:-1:-1;;;14260:18:1;;;14253:52;14322:18;;17986:87:0;14000:346:1;17986:87:0;18100:14;;;;18097:1359;;;8488:6;;-1:-1:-1;;;;;18134:15:0;;;8488:6;;18134:15;;;;:32;;-1:-1:-1;8488:6:0;;-1:-1:-1;;;;;18153:13:0;;;8488:6;;18153:13;;18134:32;:52;;;;-1:-1:-1;;;;;;18170:16:0;;;;18134:52;:77;;;;-1:-1:-1;;;;;;18190:21:0;;18204:6;18190:21;;18134:77;:107;;;;-1:-1:-1;;;;;;18216:25:0;;;;;;:19;:25;;;;;;;;18215:26;18134:107;:135;;;;-1:-1:-1;;;;;;18246:23:0;;;;;;:19;:23;;;;;;;;18245:24;18134:135;18130:1315;;;18427:20;;;;18423:506;;;18489:9;-1:-1:-1;;;;;18475:24:0;:2;-1:-1:-1;;;;;18475:24:0;;;:49;;;;;18517:6;-1:-1:-1;;;;;18503:21:0;:2;-1:-1:-1;;;;;18503:21:0;;;18475:49;18471:439;;;18602:16;18617:1;18602:12;:16;:::i;:::-;18589:9;18560:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18657:16:0;18672:1;18657:12;:16;:::i;:::-;-1:-1:-1;;;;;18622:32:0;;;;;;:28;:32;;;;;;:51;18560:113;18552:179;;;;-1:-1:-1;;;18552:179:0;;14686:2:1;18552:179:0;;;14668:21:1;14725:2;14705:18;;;14698:30;14764:34;14744:18;;;14737:62;-1:-1:-1;;;14815:18:1;;;14808:51;14876:19;;18552:179:0;14484:417:1;18552:179:0;18787:9;18758:39;;;;:28;:39;;;;;;18800:12;18758:54;;;;-1:-1:-1;;;;;18839:32:0;;;;;;:47;18471:439;-1:-1:-1;;;;;18981:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19017:35:0;;;;;;:31;:35;;;;;;;;19016:36;18981:71;18977:453;;;19099:12;;19089:6;:22;;19081:75;;;;-1:-1:-1;;;19081:75:0;;15108:2:1;19081:75:0;;;15090:21:1;15147:2;15127:18;;;15120:30;15186:34;15166:18;;;15159:62;-1:-1:-1;;;15237:18:1;;;15230:38;15285:19;;19081:75:0;14906:404:1;19081:75:0;18977:453;;;-1:-1:-1;;;;;19232:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19266:37:0;;;;;;:31;:37;;;;;;;;19265:38;19232:71;19228:202;;;19350:13;;19340:6;:23;;19332:78;;;;-1:-1:-1;;;19332:78:0;;15517:2:1;19332:78:0;;;15499:21:1;15556:2;15536:18;;;15529:30;15595:34;15575:18;;;15568:62;-1:-1:-1;;;15646:18:1;;;15639:40;15696:19;;19332:78:0;15315:406:1;19332:78:0;19517:4;19468:28;4540:18;;;;;;;;;;;19575;;19551:42;;;;;;;19609:22;;-1:-1:-1;19620:11:0;;;;;;;19609:22;:35;;;;-1:-1:-1;19636:8:0;;;;19635:9;19609:35;:71;;;;-1:-1:-1;;;;;;19649:31:0;;;;;;:25;:31;;;;;;;;19648:32;19609:71;:101;;;;-1:-1:-1;;;;;;19685:25:0;;;;;;:19;:25;;;;;;;;19684:26;19609:101;:129;;;;-1:-1:-1;;;;;;19715:23:0;;;;;;:19;:23;;;;;;;;19714:24;19609:129;19606:236;;;19755:8;:15;;-1:-1:-1;;19755:15:0;19766:4;19755:15;;;19787:10;:8;:10::i;:::-;19814:8;:16;;-1:-1:-1;;19814:16:0;;;19606:236;-1:-1:-1;;;;;19972:25:0;;19854:12;19972:25;;;:19;:25;;;;;;19869:4;;19972:25;;;:52;;-1:-1:-1;;;;;;20001:23:0;;;;;;:19;:23;;;;;;;;19972:52;19969:99;;;-1:-1:-1;20051:5:0;19969:99;20080:12;20186:7;20183:1185;;;21523:18;;21508:12;:33;20248:60;;;;-1:-1:-1;;;;;;20277:31:0;;;;;;:25;:31;;;;;;;;20248:60;:94;;;;-1:-1:-1;;;;;;20313:29:0;;;;;;:25;:29;;;;;;;;20312:30;20248:94;:114;;;;;20361:1;20346:12;;:16;20248:114;20245:979;;;20403:3;20389:11;:6;20398:2;20389:11;:::i;:::-;:17;;;;:::i;:::-;20382:24;;20469:12;;20451:15;;20444:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20422:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20547:12:0;;20529:15;;20522:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;20500:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;20245:979:0;;-1:-1:-1;20245:979:0;;-1:-1:-1;;;;;20624:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20673:1;20657:13;;:17;20624:50;20620:604;;;20726:3;20710:13;;20701:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20694:35;;20796:13;;20777:16;;20770:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20748:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20876:13:0;;20857:16;;20850:23;;:4;:23;:::i;20620:604::-;-1:-1:-1;;;;;20952:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21002:1;20987:12;;:16;20952:51;20949:275;;;21052:3;21037:12;;21028:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21021:34;;21118:12;;21100:15;;21093:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21071:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21196:12:0;;21178:15;;21171:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;21149:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20949:275:0;21243:8;;21240:89;;21271:42;21287:4;21301;21308;21271:15;:42::i;:::-;21342:14;21352:4;21342:14;;:::i;:::-;;;20183:1185;21380:33;21396:4;21402:2;21406:6;21380:15;:33::i;:::-;17721:3700;;;;17642:3779;;;:::o;22667:626::-;22732:1;22711:18;;:22;:72;;;;-1:-1:-1;22765:18:0;;22755:4;4513:7;4540:18;;;;;;;;;;;22737:46;;22711:72;22708:207;;;22800:66;22824:4;22839:6;22847:18;;22800:15;:66::i;:::-;22889:6;-1:-1:-1;;;;;22881:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22708:207;22946:1;22925:18;:22;;;23004:4;4540:18;;;;;;;;;;;23026:20;;;23023:34;;23049:7;22667:626::o;23023:34::-;23090:18;;:23;;23111:2;23090:23;:::i;:::-;23072:15;:41;23069:113;;;23147:18;;:23;;23168:2;23147:23;:::i;:::-;23129:41;;23069:113;23194:33;23211:15;23194:16;:33::i;:::-;23279:4;4513:7;4540:18;;;;;;;;;;;23240;:45;-1:-1:-1;22667:626:0:o;16704:240::-;-1:-1:-1;;;;;16787:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16787:39:0;;;;;;;16839;16787:31;:39;16839:26;:39::i;6237:614::-;-1:-1:-1;;;;;6377:20:0;;6369:70;;;;-1:-1:-1;;;6369:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6458:23:0;;6450:71;;;;-1:-1:-1;;;6450:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6558:17:0;;6534:21;6558:17;;;;;;;;;;;6594:23;;;;6586:74;;;;-1:-1:-1;;;6586:74:0;;15928:2:1;6586:74:0;;;15910:21:1;15967:2;15947:18;;;15940:30;16006:34;15986:18;;;15979:62;-1:-1:-1;;;16057:18:1;;;16050:36;16103:19;;6586:74:0;15726:402:1;6586:74:0;-1:-1:-1;;;;;6696:17:0;;;:9;:17;;;;;;;;;;;6716:22;;;6696:42;;6760:20;;;;;;;;:30;;6732:6;;6696:9;6760:30;;6732:6;;6760:30;:::i;:::-;;;;;;;;6825:9;-1:-1:-1;;;;;6808:35:0;6817:6;-1:-1:-1;;;;;6808:35:0;;6836:6;6808:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;6808:35:0;;;;;;;;6358:493;6237:614;;;:::o;21557:585::-;21709:16;;;21723:1;21709:16;;;;;;;;21685:21;;21709:16;;;;;;;;;;-1:-1:-1;21709:16:0;21685:40;;21754:4;21736;21741:1;21736:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21736:23:0;;;-1:-1:-1;;;;;21736:23:0;;;;;21780:9;-1:-1:-1;;;;;21780:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21770:4;21775:1;21770:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;21770:26:0;;;-1:-1:-1;;;;;21770:26:0;;;;;21809:56;21826:4;21841:9;21853:11;21809:8;:56::i;:::-;22076:16;;21904:230;;-1:-1:-1;;;21904:230:0;;-1:-1:-1;;;;;21904:9:0;:60;;;;;:230;;21979:11;;22005:1;;22049:4;;22076:16;;;;;22108:15;;21904:230;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21612:530;21557:585;:::o;15918:207::-;-1:-1:-1;;;;;16006:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;16006:52:0;;;;;;;;;;16074:43;;17806:51:1;;;17873:18;;;17866:50;16074:43:0;;17779:18:1;16074:43:0;;;;;;;15918:207;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;1046:131::-;-1:-1:-1;;;;;1121:31:1;;1111:42;;1101:70;;1167:1;1164;1157:12;1101:70;1046:131;:::o;1182:315::-;1250:6;1258;1311:2;1299:9;1290:7;1286:23;1282:32;1279:52;;;1327:1;1324;1317:12;1279:52;1366:9;1353:23;1385:31;1410:5;1385:31;:::i;:::-;1435:5;1487:2;1472:18;;;;1459:32;;-1:-1:-1;;;1182:315:1:o;1694:247::-;1753:6;1806:2;1794:9;1785:7;1781:23;1777:32;1774:52;;;1822:1;1819;1812:12;1774:52;1861:9;1848:23;1880:31;1905:5;1880:31;:::i;:::-;1930:5;1694:247;-1:-1:-1;;;1694:247:1:o;2128:456::-;2205:6;2213;2221;2274:2;2262:9;2253:7;2249:23;2245:32;2242:52;;;2290:1;2287;2280:12;2242:52;2329:9;2316:23;2348:31;2373:5;2348:31;:::i;:::-;2398:5;-1:-1:-1;2455:2:1;2440:18;;2427:32;2468:33;2427:32;2468:33;:::i;:::-;2128:456;;2520:7;;-1:-1:-1;;;2574:2:1;2559:18;;;;2546:32;;2128:456::o;2589:180::-;2648:6;2701:2;2689:9;2680:7;2676:23;2672:32;2669:52;;;2717:1;2714;2707:12;2669:52;-1:-1:-1;2740:23:1;;2589:180;-1:-1:-1;2589:180:1:o;3171:118::-;3257:5;3250:13;3243:21;3236:5;3233:32;3223:60;;3279:1;3276;3269:12;3294:382;3359:6;3367;3420:2;3408:9;3399:7;3395:23;3391:32;3388:52;;;3436:1;3433;3426:12;3388:52;3475:9;3462:23;3494:31;3519:5;3494:31;:::i;:::-;3544:5;-1:-1:-1;3601:2:1;3586:18;;3573:32;3614:30;3573:32;3614:30;:::i;:::-;3663:7;3653:17;;;3294:382;;;;;:::o;3681:388::-;3749:6;3757;3810:2;3798:9;3789:7;3785:23;3781:32;3778:52;;;3826:1;3823;3816:12;3778:52;3865:9;3852:23;3884:31;3909:5;3884:31;:::i;:::-;3934:5;-1:-1:-1;3991:2:1;3976:18;;3963:32;4004:33;3963:32;4004:33;:::i;4074:356::-;4276:2;4258:21;;;4295:18;;;4288:30;4354:34;4349:2;4334:18;;4327:62;4421:2;4406:18;;4074:356::o;4435:127::-;4496:10;4491:3;4487:20;4484:1;4477:31;4527:4;4524:1;4517:15;4551:4;4548:1;4541:15;4567:125;4632:9;;;4653:10;;;4650:36;;;4666:18;;:::i;4697:380::-;4776:1;4772:12;;;;4819;;;4840:61;;4894:4;4886:6;4882:17;4872:27;;4840:61;4947:2;4939:6;4936:14;4916:18;4913:38;4910:161;;4993:10;4988:3;4984:20;4981:1;4974:31;5028:4;5025:1;5018:15;5056:4;5053:1;5046:15;4910:161;;4697:380;;;:::o;5491:168::-;5564:9;;;5595;;5612:15;;;5606:22;;5592:37;5582:71;;5633:18;;:::i;5664:217::-;5704:1;5730;5720:132;;5774:10;5769:3;5765:20;5762:1;5755:31;5809:4;5806:1;5799:15;5837:4;5834:1;5827:15;5720:132;-1:-1:-1;5866:9:1;;5664:217::o;7849:184::-;7919:6;7972:2;7960:9;7951:7;7947:23;7943:32;7940:52;;;7988:1;7985;7978:12;7940:52;-1:-1:-1;8011:16:1;;7849:184;-1:-1:-1;7849:184:1:o;8317:245::-;8384:6;8437:2;8425:9;8416:7;8412:23;8408:32;8405:52;;;8453:1;8450;8443:12;8405:52;8485:9;8479:16;8504:28;8526:5;8504:28;:::i;12832:401::-;13034:2;13016:21;;;13073:2;13053:18;;;13046:30;13112:34;13107:2;13092:18;;13085:62;-1:-1:-1;;;13178:2:1;13163:18;;13156:35;13223:3;13208:19;;12832:401::o;13238:399::-;13440:2;13422:21;;;13479:2;13459:18;;;13452:30;13518:34;13513:2;13498:18;;13491:62;-1:-1:-1;;;13584:2:1;13569:18;;13562:33;13627:3;13612:19;;13238:399::o;14351:128::-;14418:9;;;14439:11;;;14436:37;;;14453:18;;:::i;16265:127::-;16326:10;16321:3;16317:20;16314:1;16307:31;16357:4;16354:1;16347:15;16381:4;16378:1;16371:15;16397:251;16467:6;16520:2;16508:9;16499:7;16495:23;16491:32;16488:52;;;16536:1;16533;16526:12;16488:52;16568:9;16562:16;16587:31;16612:5;16587:31;:::i;16653:980::-;16915:4;16963:3;16952:9;16948:19;16994:6;16983:9;16976:25;17020:2;17058:6;17053:2;17042:9;17038:18;17031:34;17101:3;17096:2;17085:9;17081:18;17074:31;17125:6;17160;17154:13;17191:6;17183;17176:22;17229:3;17218:9;17214:19;17207:26;;17268:2;17260:6;17256:15;17242:29;;17289:1;17299:195;17313:6;17310:1;17307:13;17299:195;;;17378:13;;-1:-1:-1;;;;;17374:39:1;17362:52;;17469:15;;;;17434:12;;;;17410:1;17328:9;17299:195;;;-1:-1:-1;;;;;;;17550:32:1;;;;17545:2;17530:18;;17523:60;-1:-1:-1;;;17614:3:1;17599:19;17592:35;17511:3;16653:980;-1:-1:-1;;;16653:980:1:o

Swarm Source

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