ETH Price: $3,420.79 (-0.53%)
Gas: 25 Gwei

Token

0xC0DE (CODE)
 

Overview

Max Total Supply

1,000,000 CODE

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,129.147911925870584538 CODE

Value
$0.00
0xdad3f6c3726e8526f9fbec68881aac5ba2a0e718
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:
OXCODE

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-25
*/

//https://0xc0de-eth.com
//https://t.me/OxCODEportal

// 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 OXCODE is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;

    IDexRouter public immutable dexRouter;
    address public immutable lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    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 buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    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 UpdatedOperationsAddress(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("0xC0DE", "CODE") {

        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 * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 10000; 

        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 35;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + 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);

        operationsAddress = address(newOwner);

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

    receive() external payable {}

    function openTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        require(deadBlocks <= 10, "Cannot set more than 10 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 _OperationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _OperationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _OperationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _OperationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + 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 * 99 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }

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

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / 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(operationsAddress),
            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);

        tokensForOperations = 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 makeSwapBack() 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":"UpdatedOperationsAddress","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":"buyOperationsFee","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":"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":[{"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":"makeSwapBack","outputs":[],"stateMutability":"nonpayable","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":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","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":"_OperationsFee","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":"_OperationsFee","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"}]

60c0604052600e805462ffffff191660019081179091556010805460ff191690911790553480156200002f575f80fd5b506040518060400160405280600681526020016530784330444560d01b81525060405180604001604052806004815260200163434f444560e01b81525081600390816200007d9190620007ab565b5060046200008c8282620007ab565b5050505f620000a0620003b360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062003393833981519152908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000134573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200015a919062000873565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000873565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000219573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023f919062000873565b6001600160a01b031660a08190526200025a906001620003b7565b60a0516200026a90600162000419565b69d3c21bcecceda1000000606462000284826002620008b6565b620002909190620008d6565b6006556064620002a2826002620008b6565b620002ae9190620008d6565b600755612710620002c1826001620008b6565b620002cd9190620008d6565b600955601960128190555f6013819055620002e891620008f6565b601155602360158190555f60168190556200030391620008f6565b60145562000313836001620003b7565b62000320306001620003b7565b6200032f61dead6001620003b7565b6080516200033f906001620003b7565b6200034c83600162000483565b6200035930600162000483565b6200036861dead600162000483565b6080516200037890600162000483565b600a80546001600160a01b0319166001600160a01b0385161790556200039f83826200052f565b620003aa8362000611565b5050506200090c565b3390565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601b60205260409020805460ff1916821515179055620004488282620003b7565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004d15760405162461bcd60e51b815260206004820181905260248201525f805160206200337383398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005875760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004c8565b8060025f8282546200059a9190620008f6565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005c8908490620008f6565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200065b5760405162461bcd60e51b815260206004820181905260248201525f80516020620033738339815191526044820152606401620004c8565b6001600160a01b038116620006c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004c8565b6005546040516001600160a01b038084169216905f8051602062003393833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200073457607f821691505b6020821081036200075357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007a6575f81815260208120601f850160051c81016020861015620007815750805b601f850160051c820191505b81811015620007a2578281556001016200078d565b5050505b505050565b81516001600160401b03811115620007c757620007c76200070b565b620007df81620007d884546200071f565b8462000759565b602080601f83116001811462000815575f8415620007fd5750858301515b5f19600386901b1c1916600185901b178555620007a2565b5f85815260208120601f198616915b82811015620008455788860151825594840194600190910190840162000824565b50858210156200086357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000884575f80fd5b81516001600160a01b03811681146200089b575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008d057620008d0620008a2565b92915050565b5f82620008f157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008d057620008d0620008a2565b60805160a051612a066200096d5f395f81816104aa01528181610e1b015281816111110152818161198e015281816119b70152611cab01525f818161034301528181611c6e0152818161243e015281816124f501526125340152612a065ff3fe6080604052600436106102dc575f3560e01c80638366e79a11610189578063d1633649116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b14610881578063f5648a4f146108a0578063f6374342146108b4578063fb002c97146108c9575f80fd5b8063e884f26014610843578063ee40166e14610857578063f11a24d31461086c575f80fd5b8063d163364914610778578063d257b34f14610797578063d85ba063146107b6578063dc3f0d0f146107cb578063dd62ed3e146107ea578063e2f456051461082e575f80fd5b8063a457c2d711610143578063b62496f51161011e578063b62496f5146106f4578063bbc0c74214610722578063c024666814610740578063c876d0b91461075f575f80fd5b8063a457c2d7146106a1578063a62068ce146106c0578063a9059cbb146106d5575f80fd5b80638366e79a1461060857806388e765ff1461062757806389c9e3201461063c5780638da5cb5b1461065157806395d89b411461066e5780639a7a23d614610682575f80fd5b8063452ed4f11161024557806366d602ae116101ff57806370a08231116101da57806370a082311461058d578063715018a6146105c1578063751039fc146105d55780637571336a146105e9575f80fd5b806366d602ae146105445780636a486a8e146105595780636ddd17131461056e575f80fd5b8063452ed4f1146104995780634a62bb65146104cc5780634f77f6c0146104e557806358a6d531146104fa5780635a139dd41461051057806366ca9b8314610525575f80fd5b80631a8145bb116102965780631a8145bb146103f85780631e038e391461040d57806323b872dd146104215780632be32b6114610440578063313ce5671461045f578063395093511461047a575f80fd5b806302dbd8f8146102e757806306fdde03146103085780630758d92414610332578063095ea7b31461037d57806310d5de53146103ac57806318160ddd146103da575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b50610306610301366004612608565b6108de565b005b348015610313575f80fd5b5061031c61092c565b6040516103299190612628565b60405180910390f35b34801561033d575f80fd5b506103657f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610329565b348015610388575f80fd5b5061039c61039736600461268a565b6109bc565b6040519015158152602001610329565b3480156103b7575f80fd5b5061039c6103c63660046126b4565b601a6020525f908152604090205460ff1681565b3480156103e5575f80fd5b506002545b604051908152602001610329565b348015610403575f80fd5b506103ea60185481565b348015610418575f80fd5b506103066109d2565b34801561042c575f80fd5b5061039c61043b3660046126d6565b610ad8565b34801561044b575f80fd5b5061030661045a366004612714565b610b80565b34801561046a575f80fd5b5060405160128152602001610329565b348015610485575f80fd5b5061039c61049436600461268a565b610c8d565b3480156104a4575f80fd5b506103657f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d7575f80fd5b50600e5461039c9060ff1681565b3480156104f0575f80fd5b506103ea60155481565b348015610505575f80fd5b50600d54431061039c565b34801561051b575f80fd5b506103ea60125481565b348015610530575f80fd5b5061030661053f366004612608565b610cc8565b34801561054f575f80fd5b506103ea60075481565b348015610564575f80fd5b506103ea60145481565b348015610579575f80fd5b50600e5461039c9062010000900460ff1681565b348015610598575f80fd5b506103ea6105a73660046126b4565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b50610306610d0d565b3480156105e0575f80fd5b50610306610d80565b3480156105f4575f80fd5b50610306610603366004612738565b610dea565b348015610613575f80fd5b5061039c61062236600461276f565b610ed4565b348015610632575f80fd5b506103ea60065481565b348015610647575f80fd5b506103ea600c5481565b34801561065c575f80fd5b506005546001600160a01b0316610365565b348015610679575f80fd5b5061031c6110d6565b34801561068d575f80fd5b5061030661069c366004612738565b6110e5565b3480156106ac575f80fd5b5061039c6106bb36600461268a565b6111fb565b3480156106cb575f80fd5b506103ea600d5481565b3480156106e0575f80fd5b5061039c6106ef36600461268a565b611293565b3480156106ff575f80fd5b5061039c61070e3660046126b4565b601b6020525f908152604090205460ff1681565b34801561072d575f80fd5b50600e5461039c90610100900460ff1681565b34801561074b575f80fd5b5061030661075a366004612738565b61129f565b34801561076a575f80fd5b5060105461039c9060ff1681565b348015610783575f80fd5b50610306610792366004612714565b611327565b3480156107a2575f80fd5b506103066107b1366004612714565b611459565b3480156107c1575f80fd5b506103ea60115481565b3480156107d6575f80fd5b506103066107e5366004612714565b6115a4565b3480156107f5575f80fd5b506103ea61080436600461276f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610839575f80fd5b506103ea60095481565b34801561084e575f80fd5b506103066116ab565b348015610862575f80fd5b506103ea600b5481565b348015610877575f80fd5b506103ea60135481565b34801561088c575f80fd5b5061030661089b3660046126b4565b6116e1565b3480156108ab575f80fd5b506103066117cb565b3480156108bf575f80fd5b506103ea60165481565b3480156108d4575f80fd5b506103ea60175481565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016109089061279b565b60405180910390fd5b6015829055601681905561092581836127e4565b6014555050565b60606003805461093b906127f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610967906127f7565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905090565b5f6109c833848461183f565b5060015b92915050565b6005546001600160a01b031633146109fc5760405162461bcd60e51b81526004016109089061279b565b600954305f908152602081905260409020541015610a84576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610908565b6008805460ff19166001179055610a99611962565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b5f610ae4848484611a86565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610908565b610b75853385840361183f565b506001949350505050565b6005546001600160a01b03163314610baa5760405162461bcd60e51b81526004016109089061279b565b670de0b6b3a76400006103e8610bbf60025490565b610bca90600261282f565b610bd49190612846565b610bde9190612846565b811015610c3f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610908565b610c5181670de0b6b3a764000061282f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109c8918590610cc39086906127e4565b61183f565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016109089061279b565b60128290556013819055610d0681836127e4565b6011555050565b6005546001600160a01b03163314610d375760405162461bcd60e51b81526004016109089061279b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610daa5760405162461bcd60e51b81526004016109089061279b565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610e145760405162461bcd60e51b81526004016109089061279b565b80610eaa577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610eaa5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610908565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610f005760405162461bcd60e51b81526004016109089061279b565b6001600160a01b038316610f565760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610908565b306001600160a01b03841603610fae5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610908565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190612865565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611066573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108a919061287c565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461093b906127f7565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109089061279b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111b65760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610908565b6111c08282612269565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610908565b611289338585840361183f565b5060019392505050565b5f6109c8338484611a86565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109089061279b565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113515760405162461bcd60e51b81526004016109089061279b565b600e54610100900460ff16156113a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610908565b600a8111156114055760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d6f7265207468616e2031302064656164626c6f636044820152616b7360f01b6064820152608401610908565b600e805462ffff0019166201010017905543600b81905542600c5561142b9082906127e4565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146114835760405162461bcd60e51b81526004016109089061279b565b620186a061149060025490565b61149b90600161282f565b6114a59190612846565b8110156115125760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610908565b6103e861151e60025490565b61152990600161282f565b6115339190612846565b81111561159f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610908565b600955565b6005546001600160a01b031633146115ce5760405162461bcd60e51b81526004016109089061279b565b670de0b6b3a76400006103e86115e360025490565b6115ee90600261282f565b6115f89190612846565b6116029190612846565b8110156116645760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610908565b61167681670de0b6b3a764000061282f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c82565b6005546001600160a01b031633146116d55760405162461bcd60e51b81526004016109089061279b565b6010805460ff19169055565b6005546001600160a01b0316331461170b5760405162461bcd60e51b81526004016109089061279b565b6001600160a01b0381166117705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610908565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117f55760405162461bcd60e51b81526004016109089061279b565b6040515f90339047908381818185875af1925050503d805f8114611834576040519150601f19603f3d011682016040523d82523d5f602084013e611839565b606091505b50505050565b6001600160a01b0383166118a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610908565b6001600160a01b0382166119025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610908565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6018541180156119835750601854305f9081526020819052604090205410155b15611a24576119b5307f0000000000000000000000000000000000000000000000000000000000000000601854612296565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611a0d575f80fd5b505af1158015611a1f573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611a425750565b600954611a5090601e61282f565b811115611a6857600954611a6590601e61282f565b90505b611a71816123e9565b305f9081526020819052604090205460175550565b6001600160a01b038316611aac5760405162461bcd60e51b815260040161090890612897565b6001600160a01b038216611ad25760405162461bcd60e51b8152600401610908906128dc565b5f8111611b215760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610908565b600e54610100900460ff16611bb2576001600160a01b0383165f9081526019602052604090205460ff1680611b6d57506001600160a01b0382165f9081526019602052604090205460ff165b611bb25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610908565b600e5460ff1615611f0f576005546001600160a01b03848116911614801590611be957506005546001600160a01b03838116911614155b8015611bfd57506001600160a01b03821615155b8015611c1457506001600160a01b03821661dead14155b8015611c3857506001600160a01b0383165f9081526019602052604090205460ff16155b8015611c5c57506001600160a01b0382165f9081526019602052604090205460ff16155b15611f0f5760105460ff1615611dba577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015611ce057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611dba57611cf060024361291f565b325f908152600f6020526040902054108015611d2c5750611d1260024361291f565b6001600160a01b0383165f908152600f6020526040902054105b611d965760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610908565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611df957506001600160a01b0382165f908152601a602052604090205460ff16155b15611e6657600654811115611e615760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610908565b611f0f565b6001600160a01b0382165f908152601b602052604090205460ff168015611ea557506001600160a01b0383165f908152601a602052604090205460ff16155b15611f0f57600754811115611f0f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610908565b305f9081526020819052604090205460095481108015908190611f3a5750600e5462010000900460ff165b8015611f49575060085460ff16155b8015611f6d57506001600160a01b0385165f908152601b602052604090205460ff16155b8015611f9157506001600160a01b0385165f9081526019602052604090205460ff16155b8015611fb557506001600160a01b0384165f9081526019602052604090205460ff16155b15611fda576008805460ff19166001179055611fcf611962565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff168061201a57506001600160a01b0385165f9081526019602052604090205460ff165b1561202257505f5b5f811561225557600d544310801561205157506001600160a01b0387165f908152601b602052604090205460ff165b801561207557506001600160a01b0386165f908152601b602052604090205460ff16155b801561208257505f601154115b1561210557606461209486606361282f565b61209e9190612846565b9050601154601354826120b1919061282f565b6120bb9190612846565b60185f8282546120cb91906127e4565b90915550506011546012546120e0908361282f565b6120ea9190612846565b60175f8282546120fa91906127e4565b909155506122379050565b6001600160a01b0386165f908152601b602052604090205460ff16801561212d57505f601454115b1561218e57606460145486612142919061282f565b61214c9190612846565b90506014546016548261215f919061282f565b6121699190612846565b60185f82825461217991906127e4565b90915550506014546015546120e0908361282f565b6001600160a01b0387165f908152601b602052604090205460ff1680156121b657505f601154115b15612237576064601154866121cb919061282f565b6121d59190612846565b9050601154601354826121e8919061282f565b6121f29190612846565b60185f82825461220291906127e4565b9091555050601154601254612217908361282f565b6122219190612846565b60175f82825461223191906127e4565b90915550505b801561224857612248873083612296565b612252818661291f565b94505b612260878787612296565b50505050505050565b6001600160a01b0382165f908152601b60205260409020805460ff19168215151790556111c082826125a6565b6001600160a01b0383166122bc5760405162461bcd60e51b815260040161090890612897565b6001600160a01b0382166122e25760405162461bcd60e51b8152600401610908906128dc565b6001600160a01b0383165f90815260208190526040902054818110156123595760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610908565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061238f9084906127e4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123db91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061241c5761241c612932565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612498573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bc9190612946565b816001815181106124cf576124cf612932565b60200260200101906001600160a01b031690816001600160a01b03168152505061251a307f00000000000000000000000000000000000000000000000000000000000000008461183f565b600a5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac947926125759287925f92889291909116904290600401612961565b5f604051808303815f87803b15801561258c575f80fd5b505af115801561259e573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f8060408385031215612619575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b8181101561265357858101830151858201604001528201612637565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612687575f80fd5b50565b5f806040838503121561269b575f80fd5b82356126a681612673565b946020939093013593505050565b5f602082840312156126c4575f80fd5b81356126cf81612673565b9392505050565b5f805f606084860312156126e8575f80fd5b83356126f381612673565b9250602084013561270381612673565b929592945050506040919091013590565b5f60208284031215612724575f80fd5b5035919050565b8015158114612687575f80fd5b5f8060408385031215612749575f80fd5b823561275481612673565b915060208301356127648161272b565b809150509250929050565b5f8060408385031215612780575f80fd5b823561278b81612673565b9150602083013561276481612673565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109cc576109cc6127d0565b600181811c9082168061280b57607f821691505b60208210810361282957634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109cc576109cc6127d0565b5f8261286057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612875575f80fd5b5051919050565b5f6020828403121561288c575f80fd5b81516126cf8161272b565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109cc576109cc6127d0565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612956575f80fd5b81516126cf81612673565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129af5784516001600160a01b03168352938301939183019160010161298a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202fefbe5445fe0674c2828a93554daa392ea0010a4ffcd827b5e74e32699de15564736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102dc575f3560e01c80638366e79a11610189578063d1633649116100d8578063e884f26011610092578063f2fde38b1161006d578063f2fde38b14610881578063f5648a4f146108a0578063f6374342146108b4578063fb002c97146108c9575f80fd5b8063e884f26014610843578063ee40166e14610857578063f11a24d31461086c575f80fd5b8063d163364914610778578063d257b34f14610797578063d85ba063146107b6578063dc3f0d0f146107cb578063dd62ed3e146107ea578063e2f456051461082e575f80fd5b8063a457c2d711610143578063b62496f51161011e578063b62496f5146106f4578063bbc0c74214610722578063c024666814610740578063c876d0b91461075f575f80fd5b8063a457c2d7146106a1578063a62068ce146106c0578063a9059cbb146106d5575f80fd5b80638366e79a1461060857806388e765ff1461062757806389c9e3201461063c5780638da5cb5b1461065157806395d89b411461066e5780639a7a23d614610682575f80fd5b8063452ed4f11161024557806366d602ae116101ff57806370a08231116101da57806370a082311461058d578063715018a6146105c1578063751039fc146105d55780637571336a146105e9575f80fd5b806366d602ae146105445780636a486a8e146105595780636ddd17131461056e575f80fd5b8063452ed4f1146104995780634a62bb65146104cc5780634f77f6c0146104e557806358a6d531146104fa5780635a139dd41461051057806366ca9b8314610525575f80fd5b80631a8145bb116102965780631a8145bb146103f85780631e038e391461040d57806323b872dd146104215780632be32b6114610440578063313ce5671461045f578063395093511461047a575f80fd5b806302dbd8f8146102e757806306fdde03146103085780630758d92414610332578063095ea7b31461037d57806310d5de53146103ac57806318160ddd146103da575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b50610306610301366004612608565b6108de565b005b348015610313575f80fd5b5061031c61092c565b6040516103299190612628565b60405180910390f35b34801561033d575f80fd5b506103657f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610329565b348015610388575f80fd5b5061039c61039736600461268a565b6109bc565b6040519015158152602001610329565b3480156103b7575f80fd5b5061039c6103c63660046126b4565b601a6020525f908152604090205460ff1681565b3480156103e5575f80fd5b506002545b604051908152602001610329565b348015610403575f80fd5b506103ea60185481565b348015610418575f80fd5b506103066109d2565b34801561042c575f80fd5b5061039c61043b3660046126d6565b610ad8565b34801561044b575f80fd5b5061030661045a366004612714565b610b80565b34801561046a575f80fd5b5060405160128152602001610329565b348015610485575f80fd5b5061039c61049436600461268a565b610c8d565b3480156104a4575f80fd5b506103657f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a347281565b3480156104d7575f80fd5b50600e5461039c9060ff1681565b3480156104f0575f80fd5b506103ea60155481565b348015610505575f80fd5b50600d54431061039c565b34801561051b575f80fd5b506103ea60125481565b348015610530575f80fd5b5061030661053f366004612608565b610cc8565b34801561054f575f80fd5b506103ea60075481565b348015610564575f80fd5b506103ea60145481565b348015610579575f80fd5b50600e5461039c9062010000900460ff1681565b348015610598575f80fd5b506103ea6105a73660046126b4565b6001600160a01b03165f9081526020819052604090205490565b3480156105cc575f80fd5b50610306610d0d565b3480156105e0575f80fd5b50610306610d80565b3480156105f4575f80fd5b50610306610603366004612738565b610dea565b348015610613575f80fd5b5061039c61062236600461276f565b610ed4565b348015610632575f80fd5b506103ea60065481565b348015610647575f80fd5b506103ea600c5481565b34801561065c575f80fd5b506005546001600160a01b0316610365565b348015610679575f80fd5b5061031c6110d6565b34801561068d575f80fd5b5061030661069c366004612738565b6110e5565b3480156106ac575f80fd5b5061039c6106bb36600461268a565b6111fb565b3480156106cb575f80fd5b506103ea600d5481565b3480156106e0575f80fd5b5061039c6106ef36600461268a565b611293565b3480156106ff575f80fd5b5061039c61070e3660046126b4565b601b6020525f908152604090205460ff1681565b34801561072d575f80fd5b50600e5461039c90610100900460ff1681565b34801561074b575f80fd5b5061030661075a366004612738565b61129f565b34801561076a575f80fd5b5060105461039c9060ff1681565b348015610783575f80fd5b50610306610792366004612714565b611327565b3480156107a2575f80fd5b506103066107b1366004612714565b611459565b3480156107c1575f80fd5b506103ea60115481565b3480156107d6575f80fd5b506103066107e5366004612714565b6115a4565b3480156107f5575f80fd5b506103ea61080436600461276f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610839575f80fd5b506103ea60095481565b34801561084e575f80fd5b506103066116ab565b348015610862575f80fd5b506103ea600b5481565b348015610877575f80fd5b506103ea60135481565b34801561088c575f80fd5b5061030661089b3660046126b4565b6116e1565b3480156108ab575f80fd5b506103066117cb565b3480156108bf575f80fd5b506103ea60165481565b3480156108d4575f80fd5b506103ea60175481565b6005546001600160a01b031633146109115760405162461bcd60e51b81526004016109089061279b565b60405180910390fd5b6015829055601681905561092581836127e4565b6014555050565b60606003805461093b906127f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610967906127f7565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905090565b5f6109c833848461183f565b5060015b92915050565b6005546001600160a01b031633146109fc5760405162461bcd60e51b81526004016109089061279b565b600954305f908152602081905260409020541015610a84576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610908565b6008805460ff19166001179055610a99611962565b6008805460ff191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b5f610ae4848484611a86565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b685760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610908565b610b75853385840361183f565b506001949350505050565b6005546001600160a01b03163314610baa5760405162461bcd60e51b81526004016109089061279b565b670de0b6b3a76400006103e8610bbf60025490565b610bca90600261282f565b610bd49190612846565b610bde9190612846565b811015610c3f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610908565b610c5181670de0b6b3a764000061282f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109c8918590610cc39086906127e4565b61183f565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016109089061279b565b60128290556013819055610d0681836127e4565b6011555050565b6005546001600160a01b03163314610d375760405162461bcd60e51b81526004016109089061279b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610daa5760405162461bcd60e51b81526004016109089061279b565b600e805460ff199081169091556010805490911690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610e145760405162461bcd60e51b81526004016109089061279b565b80610eaa577f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a34726001600160a01b0316826001600160a01b031603610eaa5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610908565b6001600160a01b03919091165f908152601a60205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610f005760405162461bcd60e51b81526004016109089061279b565b6001600160a01b038316610f565760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610908565b306001600160a01b03841603610fae5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610908565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ff2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190612865565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015611066573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108a919061287c565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461093b906127f7565b6005546001600160a01b0316331461110f5760405162461bcd60e51b81526004016109089061279b565b7f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a34726001600160a01b0316826001600160a01b0316036111b65760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610908565b6111c08282612269565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b03861684529091528120548281101561127c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610908565b611289338585840361183f565b5060019392505050565b5f6109c8338484611a86565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016109089061279b565b6001600160a01b0382165f81815260196020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113515760405162461bcd60e51b81526004016109089061279b565b600e54610100900460ff16156113a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610908565b600a8111156114055760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d6f7265207468616e2031302064656164626c6f636044820152616b7360f01b6064820152608401610908565b600e805462ffff0019166201010017905543600b81905542600c5561142b9082906127e4565b600d556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a150565b6005546001600160a01b031633146114835760405162461bcd60e51b81526004016109089061279b565b620186a061149060025490565b61149b90600161282f565b6114a59190612846565b8110156115125760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610908565b6103e861151e60025490565b61152990600161282f565b6115339190612846565b81111561159f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610908565b600955565b6005546001600160a01b031633146115ce5760405162461bcd60e51b81526004016109089061279b565b670de0b6b3a76400006103e86115e360025490565b6115ee90600261282f565b6115f89190612846565b6116029190612846565b8110156116645760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610908565b61167681670de0b6b3a764000061282f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c82565b6005546001600160a01b031633146116d55760405162461bcd60e51b81526004016109089061279b565b6010805460ff19169055565b6005546001600160a01b0316331461170b5760405162461bcd60e51b81526004016109089061279b565b6001600160a01b0381166117705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610908565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117f55760405162461bcd60e51b81526004016109089061279b565b6040515f90339047908381818185875af1925050503d805f8114611834576040519150601f19603f3d011682016040523d82523d5f602084013e611839565b606091505b50505050565b6001600160a01b0383166118a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610908565b6001600160a01b0382166119025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610908565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6018541180156119835750601854305f9081526020819052604090205410155b15611a24576119b5307f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a3472601854612296565b7f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a34726001600160a01b031663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611a0d575f80fd5b505af1158015611a1f573d5f803e3d5ffd5b505050505b5f60188190553081526020819052604081205490819003611a425750565b600954611a5090601e61282f565b811115611a6857600954611a6590601e61282f565b90505b611a71816123e9565b305f9081526020819052604090205460175550565b6001600160a01b038316611aac5760405162461bcd60e51b815260040161090890612897565b6001600160a01b038216611ad25760405162461bcd60e51b8152600401610908906128dc565b5f8111611b215760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610908565b600e54610100900460ff16611bb2576001600160a01b0383165f9081526019602052604090205460ff1680611b6d57506001600160a01b0382165f9081526019602052604090205460ff165b611bb25760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610908565b600e5460ff1615611f0f576005546001600160a01b03848116911614801590611be957506005546001600160a01b03838116911614155b8015611bfd57506001600160a01b03821615155b8015611c1457506001600160a01b03821661dead14155b8015611c3857506001600160a01b0383165f9081526019602052604090205460ff16155b8015611c5c57506001600160a01b0382165f9081526019602052604090205460ff16155b15611f0f5760105460ff1615611dba577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614158015611ce057507f000000000000000000000000c9952af6f2a49fe41a308e338c70842e557a34726001600160a01b0316826001600160a01b031614155b15611dba57611cf060024361291f565b325f908152600f6020526040902054108015611d2c5750611d1260024361291f565b6001600160a01b0383165f908152600f6020526040902054105b611d965760405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608401610908565b325f908152600f602052604080822043908190556001600160a01b03851683529120555b6001600160a01b0383165f908152601b602052604090205460ff168015611df957506001600160a01b0382165f908152601a602052604090205460ff16155b15611e6657600654811115611e615760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610908565b611f0f565b6001600160a01b0382165f908152601b602052604090205460ff168015611ea557506001600160a01b0383165f908152601a602052604090205460ff16155b15611f0f57600754811115611f0f5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610908565b305f9081526020819052604090205460095481108015908190611f3a5750600e5462010000900460ff165b8015611f49575060085460ff16155b8015611f6d57506001600160a01b0385165f908152601b602052604090205460ff16155b8015611f9157506001600160a01b0385165f9081526019602052604090205460ff16155b8015611fb557506001600160a01b0384165f9081526019602052604090205460ff16155b15611fda576008805460ff19166001179055611fcf611962565b6008805460ff191690555b6001600160a01b0385165f9081526019602052604090205460019060ff168061201a57506001600160a01b0385165f9081526019602052604090205460ff165b1561202257505f5b5f811561225557600d544310801561205157506001600160a01b0387165f908152601b602052604090205460ff165b801561207557506001600160a01b0386165f908152601b602052604090205460ff16155b801561208257505f601154115b1561210557606461209486606361282f565b61209e9190612846565b9050601154601354826120b1919061282f565b6120bb9190612846565b60185f8282546120cb91906127e4565b90915550506011546012546120e0908361282f565b6120ea9190612846565b60175f8282546120fa91906127e4565b909155506122379050565b6001600160a01b0386165f908152601b602052604090205460ff16801561212d57505f601454115b1561218e57606460145486612142919061282f565b61214c9190612846565b90506014546016548261215f919061282f565b6121699190612846565b60185f82825461217991906127e4565b90915550506014546015546120e0908361282f565b6001600160a01b0387165f908152601b602052604090205460ff1680156121b657505f601154115b15612237576064601154866121cb919061282f565b6121d59190612846565b9050601154601354826121e8919061282f565b6121f29190612846565b60185f82825461220291906127e4565b9091555050601154601254612217908361282f565b6122219190612846565b60175f82825461223191906127e4565b90915550505b801561224857612248873083612296565b612252818661291f565b94505b612260878787612296565b50505050505050565b6001600160a01b0382165f908152601b60205260409020805460ff19168215151790556111c082826125a6565b6001600160a01b0383166122bc5760405162461bcd60e51b815260040161090890612897565b6001600160a01b0382166122e25760405162461bcd60e51b8152600401610908906128dc565b6001600160a01b0383165f90815260208190526040902054818110156123595760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610908565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061238f9084906127e4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123db91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061241c5761241c612932565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612498573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124bc9190612946565b816001815181106124cf576124cf612932565b60200260200101906001600160a01b031690816001600160a01b03168152505061251a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461183f565b600a5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac947926125759287925f92889291909116904290600401612961565b5f604051808303815f87803b15801561258c575f80fd5b505af115801561259e573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f818152601a6020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f8060408385031215612619575f80fd5b50508035926020909101359150565b5f6020808352835180828501525f5b8181101561265357858101830151858201604001528201612637565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612687575f80fd5b50565b5f806040838503121561269b575f80fd5b82356126a681612673565b946020939093013593505050565b5f602082840312156126c4575f80fd5b81356126cf81612673565b9392505050565b5f805f606084860312156126e8575f80fd5b83356126f381612673565b9250602084013561270381612673565b929592945050506040919091013590565b5f60208284031215612724575f80fd5b5035919050565b8015158114612687575f80fd5b5f8060408385031215612749575f80fd5b823561275481612673565b915060208301356127648161272b565b809150509250929050565b5f8060408385031215612780575f80fd5b823561278b81612673565b9150602083013561276481612673565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109cc576109cc6127d0565b600181811c9082168061280b57607f821691505b60208210810361282957634e487b7160e01b5f52602260045260245ffd5b50919050565b80820281158282048414176109cc576109cc6127d0565b5f8261286057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612875575f80fd5b5051919050565b5f6020828403121561288c575f80fd5b81516126cf8161272b565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109cc576109cc6127d0565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612956575f80fd5b81516126cf81612673565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156129af5784516001600160a01b03168352938301939183019160010161298a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212202fefbe5445fe0674c2828a93554daa392ea0010a4ffcd827b5e74e32699de15564736f6c63430008140033

Deployed Bytecode Sourcemap

10153:14229:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17216:249;;;;;;;;;;-1:-1:-1;17216:249:0;;;;;:::i;:::-;;:::i;:::-;;4003:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10267:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1002:32:1;;;984:51;;972:2;957:18;10267:37:0;820:221:1;4917:169:0;;;;;;;;;;-1:-1:-1;4917:169:0;;;;;:::i;:::-;;:::i;:::-;;;1667:14:1;;1660:22;1642:41;;1630:2;1615:18;4917:169:0;1502:187:1;11370:64:0;;;;;;;;;;-1:-1:-1;11370:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4324:108;;;;;;;;;;-1:-1:-1;4412:12:0;;4324:108;;;2092:25:1;;;2080:2;2065:18;4324:108:0;1946:177:1;11187:33:0;;;;;;;;;;;;;;;;24068:311;;;;;;;;;;;;;:::i;5094:492::-;;;;;;;;;;-1:-1:-1;5094:492:0;;;;;:::i;:::-;;:::i;14956:269::-;;;;;;;;;;-1:-1:-1;14956:269:0;;;;;:::i;:::-;;:::i;4223:93::-;;;;;;;;;;-1:-1:-1;4223:93:0;;4306:2;2916:36:1;;2904:2;2889:18;4223:93:0;2774:184:1;5594:215:0;;;;;;;;;;-1:-1:-1;5594:215:0;;;;;:::i;:::-;;:::i;10311:31::-;;;;;;;;;;;;;;;10574:33;;;;;;;;;;-1:-1:-1;10574:33:0;;;;;;;;11067:32;;;;;;;;;;;;;;;;21456:120;;;;;;;;;;-1:-1:-1;21550:18:0;;21535:12;:33;21456:120;;10955:31;;;;;;;;;;;;;;;;16965:243;;;;;;;;;;-1:-1:-1;16965:243:0;;;;;:::i;:::-;;:::i;10230:28::-;;;;;;;;;;;;;;;;11032;;;;;;;;;;;;;;;;10654:31;;;;;;;;;;-1:-1:-1;10654:31:0;;;;;;;;;;;4440:127;;;;;;;;;;-1:-1:-1;4440:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4541:18:0;4514:7;4541:18;;;;;;;;;;;;4440:127;8638:150;;;;;;;;;;;;;:::i;14631:154::-;;;;;;;;;;;;;:::i;16146:260::-;;;;;;;;;;-1:-1:-1;16146:260:0;;;;;:::i;:::-;;:::i;23330:456::-;;;;;;;;;;-1:-1:-1;23330:456:0;;;;;:::i;:::-;;:::i;10196:27::-;;;;;;;;;;;;;;;;10495:30;;;;;;;;;;;;;;;;8424:79;;;;;;;;;;-1:-1:-1;8489:6:0;;-1:-1:-1;;;;;8489:6:0;8424:79;;4111:104;;;;;;;;;;;;;:::i;16414:295::-;;;;;;;;;;-1:-1:-1;16414:295:0;;;;;:::i;:::-;;:::i;5817:413::-;;;;;;;;;;-1:-1:-1;5817:413:0;;;;;:::i;:::-;;:::i;10532:33::-;;;;;;;;;;;;;;;;4575:175;;;;;;;;;;-1:-1:-1;4575:175:0;;;;;:::i;:::-;;:::i;11592:58::-;;;;;;;;;;-1:-1:-1;11592:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10614:33;;;;;;;;;;-1:-1:-1;10614:33:0;;;;;;;;;;;17473:182;;;;;;;;;;-1:-1:-1;17473:182:0;;;;;:::i;:::-;;:::i;10873:39::-;;;;;;;;;;-1:-1:-1;10873:39:0;;;;;;;;14133:446;;;;;;;;;;-1:-1:-1;14133:446:0;;;;;:::i;:::-;;:::i;15577:346::-;;;;;;;;;;-1:-1:-1;15577:346:0;;;;;:::i;:::-;;:::i;10921:27::-;;;;;;;;;;;;;;;;15233:274;;;;;;;;;;-1:-1:-1;15233:274:0;;;;;:::i;:::-;;:::i;4758:151::-;;;;;;;;;;-1:-1:-1;4758:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4874:18:0;;;4847:7;4874:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4758:151;10379:33;;;;;;;;;;;;;;;;14846:98;;;;;;;;;;;;;:::i;10455:33::-;;;;;;;;;;;;;;;;10993:30;;;;;;;;;;;;;;;;8796:244;;;;;;;;;;-1:-1:-1;8796:244:0;;;;;:::i;:::-;;:::i;23856:160::-;;;;;;;;;;;;;:::i;11106:31::-;;;;;;;;;;;;;;;;11146:34;;;;;;;;;;;;;;;;17216:249;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;;;;;;;;;17317:17:::1;:34:::0;;;17362:16:::1;:32:::0;;;17421:36:::1;17381:13:::0;17337:14;17421:36:::1;:::i;:::-;17405:13;:52:::0;-1:-1:-1;;17216:249:0:o;4003:100::-;4057:13;4090:5;4083:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4003:100;:::o;4917:169::-;5000:4;5017:39;232:10;5040:7;5049:6;5017:8;:39::i;:::-;-1:-1:-1;5074:4:0;4917:169;;;;;:::o;24068:311::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;24158:18:::1;::::0;24148:4:::1;4514:7:::0;4541:18;;;;;;;;;;;24130:46:::1;;24122:123;;;::::0;;-1:-1:-1;;;24122:123:0;;5284:2:1;24122:123:0::1;::::0;::::1;5266:21:1::0;5303:18;;;5296:30;;;;5362:34;5342:18;;;5335:62;5433:34;5413:18;;;5406:62;5485:19;;24122:123:0::1;5082:428:1::0;24122:123:0::1;24256:8;:15:::0;;-1:-1:-1;;24256:15:0::1;24267:4;24256:15;::::0;;24282:10:::1;:8;:10::i;:::-;24303:8;:16:::0;;-1:-1:-1;;24303:16:0::1;::::0;;24335:36:::1;::::0;24355:15:::1;2092:25:1::0;;24335:36:0::1;::::0;2080:2:1;2065:18;24335:36:0::1;;;;;;;24068:311::o:0;5094:492::-;5234:4;5251:36;5261:6;5269:9;5280:6;5251:9;:36::i;:::-;-1:-1:-1;;;;;5327:19:0;;5300:24;5327:19;;;:11;:19;;;;;;;;232:10;5327:33;;;;;;;;5379:26;;;;5371:79;;;;-1:-1:-1;;;5371:79:0;;5717:2:1;5371:79:0;;;5699:21:1;5756:2;5736:18;;;5729:30;5795:34;5775:18;;;5768:62;-1:-1:-1;;;5846:18:1;;;5839:38;5894:19;;5371:79:0;5515:404:1;5371:79:0;5486:57;5495:6;232:10;5536:6;5517:16;:25;5486:8;:57::i;:::-;-1:-1:-1;5574:4:0;;5094:492;-1:-1:-1;;;;5094:492:0:o;14956:269::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;15075:4:::1;15069;15049:13;4412:12:::0;;;4324:108;15049:13:::1;:17;::::0;15065:1:::1;15049:17;:::i;:::-;:24;;;;:::i;:::-;15048:31;;;;:::i;:::-;15038:6;:41;;15030:95;;;::::0;-1:-1:-1;;;15030:95:0;;6521:2:1;15030:95:0::1;::::0;::::1;6503:21:1::0;6560:2;6540:18;;;6533:30;6599:34;6579:18;;;6572:62;-1:-1:-1;;;6650:18:1;;;6643:39;6699:19;;15030:95:0::1;6319:405:1::0;15030:95:0::1;15151:17;:6:::0;15161::::1;15151:17;:::i;:::-;15136:12;:32:::0;;;15184:33:::1;::::0;2092:25:1;;;15184:33:0::1;::::0;2080:2:1;2065:18;15184:33:0::1;;;;;;;;14956:269:::0;:::o;5594:215::-;232:10;5682:4;5731:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5731:34:0;;;;;;;;;;5682:4;;5699:80;;5722:7;;5731:47;;5768:10;;5731:47;:::i;:::-;5699:8;:80::i;16965:243::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;17065:16:::1;:33:::0;;;17109:15:::1;:31:::0;;;17166:34:::1;17127:13:::0;17084:14;17166:34:::1;:::i;:::-;17151:12;:49:::0;-1:-1:-1;;16965:243:0:o;8638:150::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;8731:6:::1;::::0;8710:40:::1;::::0;8747:1:::1;::::0;-1:-1:-1;;;;;8731:6:0::1;::::0;8710:40:::1;::::0;8747:1;;8710:40:::1;8761:6;:19:::0;;-1:-1:-1;;;;;;8761:19:0::1;::::0;;8638:150::o;14631:154::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;14685:14:::1;:22:::0;;-1:-1:-1;;14685:22:0;;::::1;::::0;;;14718:20:::1;:28:::0;;;;::::1;::::0;;14762:15:::1;::::0;::::1;::::0;14702:5:::1;::::0;14762:15:::1;14631:154::o:0;16146:260::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;16242:4:::1;16238:104;;16280:6;-1:-1:-1::0;;;;;16270:16:0::1;:6;-1:-1:-1::0;;;;;16270:16:0::1;::::0;16262:68:::1;;;::::0;-1:-1:-1;;;16262:68:0;;6931:2:1;16262: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;;16262:68:0::1;6729:403:1::0;16262:68:0::1;-1:-1:-1::0;;;;;16352:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;16352:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16146:260::o;23330:456::-;8551:6;;23417:10;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23448:20:0;::::1;23440:59;;;::::0;-1:-1:-1;;;23440:59:0;;7339:2:1;23440:59:0::1;::::0;::::1;7321:21:1::0;7378:2;7358:18;;;7351:30;7417:28;7397:18;;;7390:56;7463:18;;23440:59:0::1;7137:350:1::0;23440:59:0::1;23536:4;-1:-1:-1::0;;;;;23518:23:0;::::1;::::0;23510:64:::1;;;::::0;-1:-1:-1;;;23510:64:0;;7694:2:1;23510:64:0::1;::::0;::::1;7676:21:1::0;7733:2;7713:18;;;7706:30;7772;7752:18;;;7745:58;7820:18;;23510:64:0::1;7492:352:1::0;23510:64:0::1;23612:39;::::0;-1:-1:-1;;;23612:39:0;;23645:4:::1;23612:39;::::0;::::1;984:51:1::0;23585:24:0::1;::::0;-1:-1:-1;;;;;23612:24:0;::::1;::::0;::::1;::::0;957:18:1;;23612:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23670:46;::::0;-1:-1:-1;;;23670:46:0;;-1:-1:-1;;;;;8230:32:1;;;23670:46:0::1;::::0;::::1;8212:51:1::0;8279:18;;;8272:34;;;23585:66:0;;-1:-1:-1;23670:23:0;;::::1;::::0;::::1;::::0;8185:18:1;;23670:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23732;::::0;;-1:-1:-1;;;;;8230:32:1;;8212:51;;8294:2;8279:18;;8272:34;;;23662:54:0;;-1:-1:-1;23732:46:0::1;::::0;8185:18:1;23732:46:0::1;;;;;;;23429:357;23330:456:::0;;;;:::o;4111:104::-;4167:13;4200:7;4193:14;;;;;:::i;16414:295::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;16523:6:::1;-1:-1:-1::0;;;;;16515:14:0::1;:4;-1:-1:-1::0;;;;;16515:14:0::1;::::0;16507:84:::1;;;::::0;-1:-1:-1;;;16507:84:0;;8769:2:1;16507: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;;16507:84:0::1;8567:421:1::0;16507:84:0::1;16604:41;16633:4;16639:5;16604:28;:41::i;:::-;16661:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16661:40:0;::::1;::::0;::::1;::::0;;;::::1;16414:295:::0;;:::o;5817:413::-;232:10;5910:4;5954:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5954:34:0;;;;;;;;;;6007:35;;;;5999:85;;;;-1:-1:-1;;;5999:85:0;;9195:2:1;5999: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;;5999:85:0;8993:401:1;5999:85:0;6120:67;232:10;6143:7;6171:15;6152:16;:34;6120:8;:67::i;:::-;-1:-1:-1;6218:4:0;;5817:413;-1:-1:-1;;;5817:413:0:o;4575:175::-;4661:4;4678:42;232:10;4702:9;4713:6;4678:9;:42::i;17473:182::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17558:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;17558:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17613:34;;1642:41:1;;;17613:34:0::1;::::0;1615:18:1;17613:34:0::1;;;;;;;17473:182:::0;;:::o;14133:446::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;14213:13:::1;::::0;::::1;::::0;::::1;;;14212:14;14204:50;;;::::0;-1:-1:-1;;;14204:50:0;;9601:2:1;14204:50:0::1;::::0;::::1;9583:21:1::0;9640:2;9620:18;;;9613:30;9679:25;9659:18;;;9652:53;9722:18;;14204:50:0::1;9399:347:1::0;14204:50:0::1;14287:2;14273:10;:16;;14265:63;;;::::0;-1:-1:-1;;;14265:63:0;;9953:2:1;14265:63: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:32;10124:19;;14265:63:0::1;9751:398:1::0;14265:63:0::1;14339:13;:20:::0;;-1:-1:-1;;14370:18:0;;;;;14420:12:::1;14399:18;:33:::0;;;14461:15:::1;14443;:33:::0;14508:31:::1;::::0;14529:10;;14508:31:::1;:::i;:::-;14487:18;:52:::0;14555:16:::1;::::0;::::1;::::0;;;::::1;14133:446:::0;:::o;15577:346::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;15700:6:::1;15680:13;4412:12:::0;;;4324:108;15680:13:::1;:17;::::0;15696:1:::1;15680:17;:::i;:::-;:26;;;;:::i;:::-;15667:9;:39;;15659:105;;;::::0;-1:-1:-1;;;15659:105:0;;10356:2:1;15659:105:0::1;::::0;::::1;10338:21:1::0;10395:2;10375:18;;;10368:30;10434:34;10414:18;;;10407:62;-1:-1:-1;;;10485:18:1;;;10478:51;10546:19;;15659:105:0::1;10154:417:1::0;15659:105:0::1;15815:4;15795:13;4412:12:::0;;;4324:108;15795:13:::1;:17;::::0;15811:1:::1;15795:17;:::i;:::-;:24;;;;:::i;:::-;15782:9;:37;;15774:102;;;::::0;-1:-1:-1;;;15774:102:0;;10778:2:1;15774:102:0::1;::::0;::::1;10760:21:1::0;10817:2;10797:18;;;10790:30;10856:34;10836:18;;;10829:62;-1:-1:-1;;;10907:18:1;;;10900:50;10967:19;;15774:102:0::1;10576:416:1::0;15774:102:0::1;15886:18;:30:::0;15577:346::o;15233:274::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;15353:4:::1;15347;15327:13;4412:12:::0;;;4324:108;15327:13:::1;:17;::::0;15343:1:::1;15327:17;:::i;:::-;:24;;;;:::i;:::-;15326:31;;;;:::i;:::-;15316:6;:41;;15308:96;;;::::0;-1:-1:-1;;;15308:96:0;;11199:2:1;15308:96:0::1;::::0;::::1;11181:21:1::0;11238:2;11218:18;;;11211:30;11277:34;11257:18;;;11250:62;-1:-1:-1;;;11328:18:1;;;11321:40;11378:19;;15308:96:0::1;10997:406:1::0;15308:96:0::1;15431:17;:6:::0;15441::::1;15431:17;:::i;:::-;15415:13;:33:::0;;;15464:35:::1;::::0;2092:25:1;;;15464:35:0::1;::::0;2080:2:1;2065:18;15464:35:0::1;1946:177:1::0;14846:98:0;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;14908:20:::1;:28:::0;;-1:-1:-1;;14908:28:0::1;::::0;;14846:98::o;8796:244::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8885:22:0;::::1;8877:73;;;::::0;-1:-1:-1;;;8877:73:0;;11610:2:1;8877:73:0::1;::::0;::::1;11592:21:1::0;11649:2;11629:18;;;11622:30;11688:34;11668:18;;;11661:62;-1:-1:-1;;;11739:18:1;;;11732:36;11785:19;;8877:73:0::1;11408:402:1::0;8877:73:0::1;8987:6;::::0;8966:38:::1;::::0;-1:-1:-1;;;;;8966:38:0;;::::1;::::0;8987:6:::1;::::0;8966:38:::1;::::0;8987:6:::1;::::0;8966:38:::1;9015:6;:17:::0;;-1:-1:-1;;;;;;9015:17:0::1;-1:-1:-1::0;;;;;9015:17:0;;;::::1;::::0;;;::::1;::::0;;8796:244::o;23856:160::-;8551:6;;-1:-1:-1;;;;;8551:6:0;232:10;8551:22;8543:67;;;;-1:-1:-1;;;8543:67:0;;;;;;;:::i;:::-;23950:58:::1;::::0;23914:12:::1;::::0;23958:10:::1;::::0;23982:21:::1;::::0;23914:12;23950:58;23914:12;23950:58;23982:21;23958:10;23950:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;23856:160:0:o;7717:380::-;-1:-1:-1;;;;;7853:19:0;;7845:68;;;;-1:-1:-1;;;7845:68:0;;12227:2:1;7845:68:0;;;12209:21:1;12266:2;12246:18;;;12239:30;12305:34;12285:18;;;12278:62;-1:-1:-1;;;12356:18:1;;;12349:34;12400:19;;7845:68:0;12025:400:1;7845:68:0;-1:-1:-1;;;;;7932:21:0;;7924:68;;;;-1:-1:-1;;;7924:68:0;;12632:2:1;7924:68:0;;;12614:21:1;12671:2;12651:18;;;12644:30;12710:34;12690:18;;;12683:62;-1:-1:-1;;;12761:18:1;;;12754:32;12803:19;;7924:68:0;12430:398:1;7924:68:0;-1:-1:-1;;;;;8005:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8057:32;;2092:25:1;;;8057:32:0;;2065:18:1;8057:32:0;;;;;;;7717:380;;;:::o;22695:627::-;22760:1;22739:18;;:22;:72;;;;-1:-1:-1;22793:18:0;;22783:4;4514:7;4541:18;;;;;;;;;;;22765:46;;22739:72;22736:207;;;22828:66;22852:4;22867:6;22875:18;;22828:15;:66::i;:::-;22917:6;-1:-1:-1;;;;;22909:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22736:207;22974:1;22953:18;:22;;;23032:4;4541:18;;;;;;;;;;;23054:20;;;23051:34;;23077:7;22695:627::o;23051:34::-;23118:18;;:23;;23139:2;23118:23;:::i;:::-;23100:15;:41;23097:113;;;23175:18;;:23;;23196:2;23175:23;:::i;:::-;23157:41;;23097:113;23222:33;23239:15;23222:16;:33::i;:::-;23308:4;4514:7;4541:18;;;;;;;;;;;23268:19;:46;-1:-1:-1;22695:627:0:o;17663:3785::-;-1:-1:-1;;;;;17763:18:0;;17755:68;;;;-1:-1:-1;;;17755:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17842:16:0;;17834:64;;;;-1:-1:-1;;;17834:64:0;;;;;;;:::i;:::-;17926:1;17917:6;:10;17909:52;;;;-1:-1:-1;;;17909:52:0;;13845:2:1;17909:52:0;;;13827:21:1;13884:2;13864:18;;;13857:30;13923:31;13903:18;;;13896:59;13972:18;;17909:52:0;13643:353:1;17909:52:0;17978:13;;;;;;;17974:132;;-1:-1:-1;;;;;18015:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18044:23:0;;;;;;:19;:23;;;;;;;;18015:52;18007:87;;;;-1:-1:-1;;;18007:87:0;;14203:2:1;18007:87:0;;;14185:21:1;14242:2;14222:18;;;14215:30;-1:-1:-1;;;14261:18:1;;;14254:52;14323:18;;18007:87:0;14001:346:1;18007:87:0;18121:14;;;;18118:1359;;;8489:6;;-1:-1:-1;;;;;18155:15:0;;;8489:6;;18155:15;;;;:32;;-1:-1:-1;8489:6:0;;-1:-1:-1;;;;;18174:13:0;;;8489:6;;18174:13;;18155:32;:52;;;;-1:-1:-1;;;;;;18191:16:0;;;;18155:52;:77;;;;-1:-1:-1;;;;;;18211:21:0;;18225:6;18211:21;;18155:77;:107;;;;-1:-1:-1;;;;;;18237:25:0;;;;;;:19;:25;;;;;;;;18236:26;18155:107;:135;;;;-1:-1:-1;;;;;;18267:23:0;;;;;;:19;:23;;;;;;;;18266:24;18155:135;18151:1315;;;18448:20;;;;18444:506;;;18510:9;-1:-1:-1;;;;;18496:24:0;:2;-1:-1:-1;;;;;18496:24:0;;;:49;;;;;18538:6;-1:-1:-1;;;;;18524:21:0;:2;-1:-1:-1;;;;;18524:21:0;;;18496:49;18492:439;;;18623:16;18638:1;18623:12;:16;:::i;:::-;18610:9;18581:39;;;;:28;:39;;;;;;:58;:113;;;;-1:-1:-1;18678:16:0;18693:1;18678:12;:16;:::i;:::-;-1:-1:-1;;;;;18643:32:0;;;;;;:28;:32;;;;;;:51;18581:113;18573:179;;;;-1:-1:-1;;;18573:179:0;;14687:2:1;18573:179:0;;;14669:21:1;14726:2;14706:18;;;14699:30;14765:34;14745:18;;;14738:62;-1:-1:-1;;;14816:18:1;;;14809:51;14877:19;;18573:179:0;14485:417:1;18573:179:0;18808:9;18779:39;;;;:28;:39;;;;;;18821:12;18779:54;;;;-1:-1:-1;;;;;18860:32:0;;;;;;:47;18492:439;-1:-1:-1;;;;;19002:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;19038:35:0;;;;;;:31;:35;;;;;;;;19037:36;19002:71;18998:453;;;19120:12;;19110:6;:22;;19102:75;;;;-1:-1:-1;;;19102:75:0;;15109:2:1;19102:75:0;;;15091:21:1;15148:2;15128:18;;;15121:30;15187:34;15167:18;;;15160:62;-1:-1:-1;;;15238:18:1;;;15231:38;15286:19;;19102:75:0;14907:404:1;19102:75:0;18998:453;;;-1:-1:-1;;;;;19253:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;19287:37:0;;;;;;:31;:37;;;;;;;;19286:38;19253:71;19249:202;;;19371:13;;19361:6;:23;;19353:78;;;;-1:-1:-1;;;19353:78:0;;15518:2:1;19353:78:0;;;15500:21:1;15557:2;15537:18;;;15530:30;15596:34;15576:18;;;15569:62;-1:-1:-1;;;15647:18:1;;;15640:40;15697:19;;19353:78:0;15316:406:1;19353:78:0;19538:4;19489:28;4541:18;;;;;;;;;;;19596;;19572:42;;;;;;;19630:22;;-1:-1:-1;19641:11:0;;;;;;;19630:22;:35;;;;-1:-1:-1;19657:8:0;;;;19656:9;19630:35;:71;;;;-1:-1:-1;;;;;;19670:31:0;;;;;;:25;:31;;;;;;;;19669:32;19630:71;:101;;;;-1:-1:-1;;;;;;19706:25:0;;;;;;:19;:25;;;;;;;;19705:26;19630:101;:129;;;;-1:-1:-1;;;;;;19736:23:0;;;;;;:19;:23;;;;;;;;19735:24;19630:129;19627:236;;;19776:8;:15;;-1:-1:-1;;19776:15:0;19787:4;19776:15;;;19808:10;:8;:10::i;:::-;19835:8;:16;;-1:-1:-1;;19835:16:0;;;19627:236;-1:-1:-1;;;;;19993:25:0;;19875:12;19993:25;;;:19;:25;;;;;;19890:4;;19993:25;;;:52;;-1:-1:-1;;;;;;20022:23:0;;;;;;:19;:23;;;;;;;;19993:52;19990:99;;;-1:-1:-1;20072:5:0;19990:99;20101:12;20207:7;20204:1191;;;21550:18;;21535:12;:33;20269:60;;;;-1:-1:-1;;;;;;20298:31:0;;;;;;:25;:31;;;;;;;;20269:60;:94;;;;-1:-1:-1;;;;;;20334:29:0;;;;;;:25;:29;;;;;;;;20333:30;20269:94;:114;;;;;20382:1;20367:12;;:16;20269:114;20266:985;;;20424:3;20410:11;:6;20419:2;20410:11;:::i;:::-;:17;;;;:::i;:::-;20403:24;;20490:12;;20472:15;;20465:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20443:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;20570:12:0;;20551:16;;20544:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;20521:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;20266:985:0;;-1:-1:-1;20266:985:0;;-1:-1:-1;;;;;20647:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20696:1;20680:13;;:17;20647:50;20643:608;;;20749:3;20733:13;;20724:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20717:35;;20819:13;;20800:16;;20793:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20771:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20901:13:0;;20881:17;;20874:24;;:4;:24;:::i;20643:608::-;-1:-1:-1;;;;;20977:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21027:1;21012:12;;:16;20977:51;20974:277;;;21077:3;21062:12;;21053:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21046:34;;21143:12;;21125:15;;21118:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21096:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21223:12:0;;21204:16;;21197:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;21174:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20974:277:0;21270:8;;21267:89;;21298:42;21314:4;21328;21335;21298:15;:42::i;:::-;21369:14;21379:4;21369:14;;:::i;:::-;;;20204:1191;21407:33;21423:4;21429:2;21433:6;21407:15;:33::i;:::-;17742:3706;;;;17663:3785;;;:::o;16717:240::-;-1:-1:-1;;;;;16800:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;16800:39:0;;;;;;;16852;16800:31;:39;16852:26;:39::i;6238:614::-;-1:-1:-1;;;;;6378:20:0;;6370:70;;;;-1:-1:-1;;;6370:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6459:23:0;;6451:71;;;;-1:-1:-1;;;6451:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6559:17:0;;6535:21;6559:17;;;;;;;;;;;6595:23;;;;6587:74;;;;-1:-1:-1;;;6587:74:0;;15929:2:1;6587:74:0;;;15911:21:1;15968:2;15948:18;;;15941:30;16007:34;15987:18;;;15980:62;-1:-1:-1;;;16058:18:1;;;16051:36;16104:19;;6587:74:0;15727:402:1;6587:74:0;-1:-1:-1;;;;;6697:17:0;;;:9;:17;;;;;;;;;;;6717:22;;;6697:42;;6761:20;;;;;;;;:30;;6733:6;;6697:9;6761:30;;6733:6;;6761:30;:::i;:::-;;;;;;;;6826:9;-1:-1:-1;;;;;6809:35:0;6818:6;-1:-1:-1;;;;;6809:35:0;;6837:6;6809:35;;;;2092:25:1;;2080:2;2065:18;;1946:177;6809:35:0;;;;;;;;6359:493;6238:614;;;:::o;21584:586::-;21736:16;;;21750:1;21736:16;;;;;;;;21712:21;;21736:16;;;;;;;;;;-1:-1:-1;21736:16:0;21712:40;;21781:4;21763;21768:1;21763:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21763:23:0;;;-1:-1:-1;;;;;21763:23:0;;;;;21807:9;-1:-1:-1;;;;;21807:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21797:4;21802:1;21797:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;21797:26:0;;;-1:-1:-1;;;;;21797:26:0;;;;;21836:56;21853:4;21868:9;21880:11;21836:8;:56::i;:::-;22103:17;;21931:231;;-1:-1:-1;;;21931:231:0;;-1:-1:-1;;;;;21931:9:0;:60;;;;;:231;;22006:11;;22032:1;;22076:4;;22103:17;;;;;22136:15;;21931:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21639:531;21584:586;:::o;15931:207::-;-1:-1:-1;;;;;16019:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;16019:52:0;;;;;;;;;;16087:43;;17807:51:1;;;17874:18;;;17867:50;16087:43:0;;17780:18:1;16087:43:0;;;;;;;15931: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;5924:168::-;5997:9;;;6028;;6045:15;;;6039:22;;6025:37;6015:71;;6066:18;;:::i;6097:217::-;6137:1;6163;6153:132;;6207:10;6202:3;6198:20;6195:1;6188:31;6242:4;6239:1;6232:15;6270:4;6267:1;6260:15;6153:132;-1:-1:-1;6299:9:1;;6097: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;12833:401::-;13035:2;13017:21;;;13074:2;13054:18;;;13047:30;13113:34;13108:2;13093:18;;13086:62;-1:-1:-1;;;13179:2:1;13164:18;;13157:35;13224:3;13209:19;;12833:401::o;13239:399::-;13441:2;13423:21;;;13480:2;13460:18;;;13453:30;13519:34;13514:2;13499:18;;13492:62;-1:-1:-1;;;13585:2:1;13570:18;;13563:33;13628:3;13613:19;;13239:399::o;14352:128::-;14419:9;;;14440:11;;;14437:37;;;14454:18;;:::i;16266:127::-;16327:10;16322:3;16318:20;16315:1;16308:31;16358:4;16355:1;16348:15;16382:4;16379:1;16372:15;16398:251;16468:6;16521:2;16509:9;16500:7;16496:23;16492:32;16489:52;;;16537:1;16534;16527:12;16489:52;16569:9;16563:16;16588:31;16613:5;16588:31;:::i;16654:980::-;16916:4;16964:3;16953:9;16949:19;16995:6;16984:9;16977:25;17021:2;17059:6;17054:2;17043:9;17039:18;17032:34;17102:3;17097:2;17086:9;17082:18;17075:31;17126:6;17161;17155:13;17192:6;17184;17177:22;17230:3;17219:9;17215:19;17208:26;;17269:2;17261:6;17257:15;17243:29;;17290:1;17300:195;17314:6;17311:1;17308:13;17300:195;;;17379:13;;-1:-1:-1;;;;;17375:39:1;17363:52;;17470:15;;;;17435:12;;;;17411:1;17329:9;17300:195;;;-1:-1:-1;;;;;;;17551:32:1;;;;17546:2;17531:18;;17524:60;-1:-1:-1;;;17615:3:1;17600:19;17593:35;17512:3;16654:980;-1:-1:-1;;;16654:980:1:o

Swarm Source

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