ETH Price: $3,291.09 (+1.38%)
Gas: 2 Gwei

Token

Ordinal AI (OrdinalAI)
 

Overview

Max Total Supply

1,000,000,000 OrdinalAI

Holders

182

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.705947079584979631 OrdinalAI

Value
$0.00
0xd2a102507e4998b04ab2532967a443ab20189ea0
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:
OrdinalAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint burn);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint burn);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract OrdinalAI is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Ordinal AI";
    string constant private _symbol = "OrdinalAI";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    Fees public _taxRates = Fees({
        buyFee: 400,
        sellFee: 400,
        transferFee: 0
    });

    uint256 constant masterTaxDivisor = 10000;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xC0c6574c182C91C619f29Ca6B93648bEbAC47BCa);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        originalDeployer = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else {
            revert();
        }


        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
            setExcludedFromFees(oldOperator, false);
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
        setExcludedFromFees(newOperator, true);
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function removeSniper(address account) external onlyOwner {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.setProtections(_antiSnipe, _antiBlock);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setContractSwapEnabled(bool swapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(protections)
            && to != address(protections);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

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

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try protections.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-burn transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556008805460ff1916600117905560e0604052610190608081905260a05260c0526009805465ffffffffffff19166301900190179055600c8054600161ff0160a01b03191673c0c6574c182c91c619f29ca6b93648bebac47bca179055600f805461ffff19169055601180546001600160a01b0319908116339081179092556012805490911690911781556200009d90600a62000668565b620000ad90633b9aca0062000680565b601180546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001016012600a62000668565b6200011190633b9aca0062000680565b60405190815260200160405180910390a3466038036200015757600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620001eb565b466061036200018c57600a80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620001eb565b46600114806200019c5750466004145b80620001a85750466003145b80620001b45750466005145b15620001e657600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620001eb565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026591906200069a565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed91906200069a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036091906200069a565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601154600a54620003b492918216911660001962000452565b600a54620003d09030906001600160a01b031660001962000452565b601180546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055620006c5565b6001600160a01b038316620004a45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620004f25760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200049b565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005aa5781600019048211156200058e576200058e62000553565b808516156200059c57918102915b93841c93908002906200056e565b509250929050565b600082620005c35750600162000662565b81620005d25750600062000662565b8160018114620005eb5760028114620005f65762000616565b600191505062000662565b60ff8411156200060a576200060a62000553565b50506001821b62000662565b5060208310610133831016604e8410600b84101617156200063b575081810a62000662565b62000647838362000569565b80600019048211156200065e576200065e62000553565b0290505b92915050565b60006200067960ff841683620005b2565b9392505050565b808202811582820484141762000662576200066262000553565b600060208284031215620006ad57600080fd5b81516001600160a01b03811681146200067957600080fd5b6131e280620006d56000396000f3fe6080604052600436106102905760003560e01c8063570ca735116101645780638a8c523c116100c6578063cab5ebea1161008a578063fb78680d11610064578063fb78680d14610834578063fdb78c0e14610854578063feadde9c1461087557600080fd5b8063cab5ebea146107b9578063dd62ed3e146107d9578063ee5d9c2d1461081f57600080fd5b80638a8c523c1461071257806395d89b4114610727578063a9059cbb14610759578063ab558e4d14610779578063b3ab15fb1461079957600080fd5b8063715018a61161012857806381cf58a91161010257806381cf58a9146106bf578063893d20e8146106df5780638a63bd9b146106fd57600080fd5b8063715018a61461066a57806375f0a8741461067f57806380c581d11461069f57600080fd5b8063570ca735146105be578063590ffdce146105de5780635a6f0918146105fe5780635c24b0741461061457806370a082311461063457600080fd5b806323b872dd1161020d57806339a05902116101d15780634fb2e45d116101ab5780634fb2e45d146105465780634fbee1931461056657806350a8e0161461059f57600080fd5b806339a05902146104f7578063452ed4f11461050c5780634ada218b1461052c57600080fd5b806323b872dd146104655780632610eaca146104855780632e8fa821146104a5578063313ce567146104bb57806333251a0b146104d757600080fd5b80630758d924116102545780630758d924146103a7578063095ea7b3146103c75780630dcbcf1c146103f757806313b4a7f41461043057806318160ddd1461045057600080fd5b806303fd2a451461029c5780630445b667146102cf578063044df726146102f3578063069d955f1461031557806306fdde031461036b57600080fd5b3661029757005b600080fd5b3480156102a857600080fd5b506102b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102db57600080fd5b506102e5600d5481565b6040519081526020016102c6565b3480156102ff57600080fd5b5061031361030e366004612bcc565b610895565b005b34801561032157600080fd5b506009546103469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c6565b34801561037757600080fd5b5060408051808201909152600a8152694f7264696e616c20414960b01b60208201525b6040516102c69190612c05565b3480156103b357600080fd5b50600a546102b2906001600160a01b031681565b3480156103d357600080fd5b506103e76103e2366004612c68565b610959565b60405190151581526020016102c6565b34801561040357600080fd5b506103e7610412366004612c94565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561043c57600080fd5b5061031361044b366004612cb1565b610970565b34801561045c57600080fd5b506102e5610b34565b34801561047157600080fd5b506103e7610480366004612cdf565b610b55565b34801561049157600080fd5b506103136104a0366004612df6565b610bcd565b3480156104b157600080fd5b506102e5600e5481565b3480156104c757600080fd5b50604051601281526020016102c6565b3480156104e357600080fd5b506103136104f2366004612c94565b610d88565b34801561050357600080fd5b50610313610e3f565b34801561051857600080fd5b50600b546102b2906001600160a01b031681565b34801561053857600080fd5b50600f546103e79060ff1681565b34801561055257600080fd5b50610313610561366004612c94565b610ec6565b34801561057257600080fd5b506103e7610581366004612c94565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105ab57600080fd5b50600f546103e790610100900460ff1681565b3480156105ca57600080fd5b506013546102b2906001600160a01b031681565b3480156105ea57600080fd5b506103136105f9366004612eb8565b6110ce565b34801561060a57600080fd5b506102e560105481565b34801561062057600080fd5b5061031361062f366004612c94565b611147565b34801561064057600080fd5b506102e561064f366004612c94565b6001600160a01b031660009081526020819052604090205490565b34801561067657600080fd5b50610313611227565b34801561068b57600080fd5b50600c546102b2906001600160a01b031681565b3480156106ab57600080fd5b506103136106ba366004612eb8565b611352565b3480156106cb57600080fd5b506012546102b2906001600160a01b031681565b3480156106eb57600080fd5b506011546001600160a01b03166102b2565b34801561070957600080fd5b506103e7611542565b34801561071e57600080fd5b506103136115b3565b34801561073357600080fd5b506040805180820190915260098152684f7264696e616c414960b81b602082015261039a565b34801561076557600080fd5b506103e7610774366004612c68565b61180f565b34801561078557600080fd5b50610313610794366004612c94565b611826565b3480156107a557600080fd5b506103136107b4366004612c94565b6119de565b3480156107c557600080fd5b506103136107d4366004612ed6565b611acb565b3480156107e557600080fd5b506102e56107f4366004612cb1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082b57600080fd5b50610313611b71565b34801561084057600080fd5b5061031361084f366004612ef3565b611bfb565b34801561086057600080fd5b50600c546103e790600160a81b900460ff1681565b34801561088157600080fd5b50610313610890366004612eb8565b611ec3565b6011546001600160a01b031633146108e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600f5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561093d57600080fd5b505af1158015610951573d6000803e3d6000fd5b505050505050565b6000610966338484611f3c565b5060015b92915050565b6011546001600160a01b031633146109be5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b60085460ff166109cd57600080fd5b6001600160a01b03821630148015906109ef57506001600160a01b0381163014155b8015610a095750600b546001600160a01b03838116911614155b8015610a235750600b546001600160a01b03828116911614155b610a5d5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016108df565b806001600160a01b0316826001600160a01b031603610abf576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610abb9082906110ce565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610b299083906110ce565b610abb8160016110ce565b6000610b426012600a61301f565b610b5090633b9aca0061302e565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610bba576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610bb4908490613045565b90915550505b610bc5848484612035565b949350505050565b6011546001600160a01b03163314610c1b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b8051825114610c6c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016108df565b60005b82518161ffff161015610d8357610c886012600a61301f565b828261ffff1681518110610c9e57610c9e613058565b6020026020010151610cb0919061302e565b336000908152602081905260409020541015610d0e5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016108df565b610d7033848361ffff1681518110610d2857610d28613058565b60200260200101516012600a610d3e919061301f565b858561ffff1681518110610d5457610d54613058565b6020026020010151610d66919061302e565b6000806001612386565b5080610d7b8161306e565b915050610c6f565b505050565b6011546001600160a01b03163314610dd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b5050505050565b6012546001600160a01b03163314610eaa5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016108df565b610eb460006119de565b601280546001600160a01b0319169055565b6011546001600160a01b03163314610f145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b038116610f905760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016108df565b61deac196001600160a01b038216016110115760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016108df565b601154611028906001600160a01b031660006110ce565b6110338160016110ce565b6011546001600160a01b03166000908152602081905260409020541561107c576011546001600160a01b031660008181526020819052604090205461107a91908390610d66565b505b601180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6011546001600160a01b0316331461111c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6011546001600160a01b031633146111955760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff16156111a557600080fd5b306001600160a01b038216036111fd5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016108df565b600f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6011546001600160a01b031633146112755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff166112ed5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016108df565b601154611304906001600160a01b031660006110ce565b601180546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6011546001600160a01b031633146113a05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b80611413576001600160a01b03828116600081815260016020526040808220805460ff19169055600f5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b15801561093d57600080fd5b6002541561147a576203f4806002544261142d9190613045565b1161147a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e000000000000000000000000000000000060448201526064016108df565b6001600160a01b03821660009081526001602052604090205460ff16156114e35760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e000000000060448201526064016108df565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255600f5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610923565b6011546000906001600160a01b031633146115935760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600a546115ad9030906001600160a01b0316600019611f3c565b50600190565b6011546001600160a01b031633146116015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff16156116545760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016108df565b600f54610100900460ff166116ab5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016108df565b600f546201000090046001600160a01b03166116db57600f805462010000600160b01b0319163062010000021790555b600f54600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561174d57600080fd5b505af192505050801561175e575060015b50600f54600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156117e1575060408051601f3d908101601f191682019092526117de9181019061308f565b60015b156117f057600d91909155600e555b600f805460ff1990811660011790915560088054909116905542601055565b600061181c338484612035565b5060019392505050565b6011546001600160a01b031633146118745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f54610100900460ff16156118dc57306001600160a01b038216036118dc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e000000000060448201526064016108df565b6011546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611933573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195791906130b3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8391906130cc565b6012546001600160a01b03163314611a495760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016108df565b6013546001600160a01b03168015611a86576001600160a01b0381166000908152600460205260408120805460ff19169055611a869082906110ce565b601380546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610abb9083906110ce565b6011546001600160a01b03163314611b195760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600c8054821515600160a81b0260ff60a81b199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611b6690831515815260200190565b60405180910390a150565b6011546001600160a01b03163314611bbf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611bf8573d6000803e3d6000fd5b50565b6011546001600160a01b03163314611c495760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b8284611c576012600a61301f565b611c6590633b9aca0061302e565b611c6f919061302e565b611c7991906130e9565b600d558082611c8a6012600a61301f565b611c9890633b9aca0061302e565b611ca2919061302e565b611cac91906130e9565b600e819055600d541115611d0c5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016108df565b600b546001600160a01b031660009081526020819052604090205461271090611d3690609661302e565b611d4091906130e9565b600e541115611d9d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016108df565b620f4240611dad6012600a61301f565b611dbb90633b9aca0061302e565b611dc591906130e9565b600e541015611e2d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b60648201526084016108df565b620f4240611e3d6012600a61301f565b611e4b90633b9aca0061302e565b611e5591906130e9565b600d541015611ebd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b60648201526084016108df565b50505050565b6011546001600160a01b03163314611f115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611f885760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108df565b6001600160a01b038216611fd45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108df565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661209b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108df565b6001600160a01b0383166120fd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108df565b6000821161215f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108df565b6001600160a01b0384166000908152600160205260408120548190819060ff161561218d57600192506121bb565b6001600160a01b03861660009081526001602052604090205460ff16156121b757600191506121bb565b5060015b6121c5878761262e565b156122c657600f5460ff166122c657806122215760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016108df565b6001600160a01b03871660009081526005602052604090205460ff1615801561226357506001600160a01b03861660009081526005602052604090205460ff16155b156122c65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016108df565b811561236d57600c54600160a01b900460ff1661236d57600c54600160a81b900460ff16801561230f57506001600160a01b03861660009081526007602052604090205460ff16155b801561233457506001600160a01b03871660009081526007602052604090205460ff16155b1561236d5730600090815260208190526040902054600d54811061236b57600e54808210612360578091505b61236982612745565b505b505b61237b878787868686612386565b979650505050505050565b6000612392878761262e565b1561242c57600f5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612415575060408051601f3d908101601f19168201909252612412918101906130cc565b60015b61241e57600080fd5b90508061242a57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061246e57506001600160a01b03871660009081526006602052604090205460ff165b15612477575060005b6001600160a01b0388166000908152602081905260408120805488929061249f908490613045565b9091555060009050816124b257866124be565b6124be8988888861295e565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124f4919061310b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254091815260200190565b60405180910390a3600f54610100900460ff1661261f576125618989612a73565b600f54610100900460ff1615801561257e575061257e898961262e565b80156125a357506001600160a01b03891660009081526005602052604090205460ff16155b80156125c857506001600160a01b03881660009081526005602052604090205460ff16155b80156125d2575083155b1561261f5760405162461bcd60e51b815260206004820152601d60248201527f5072652d6275726e207472616e736665722070726f74656374696f6e2e00000060448201526064016108df565b50600198975050505050505050565b6011546000906001600160a01b0384811691161480159061265d57506011546001600160a01b03838116911614155b801561267457506011546001600160a01b03163214155b801561269957506001600160a01b03821660009081526004602052604090205460ff16155b80156126be57506001600160a01b03831660009081526004602052604090205460ff16155b80156126d557506001600160a01b03821661dead14155b80156126e957506001600160a01b03821615155b80156126fe57506001600160a01b0383163014155b801561271e5750600f546001600160a01b03848116620100009092041614155b801561273e5750600f546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a546001600160a01b03168452909152902054600019146127b157306000908152600360209081526040808320600a546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106127e6576127e6613058565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561283f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612863919061311e565b8160018151811061287657612876613058565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac947906128bc90859060009086903090429060040161313b565b600060405180830381600087803b1580156128d657600080fd5b505af19250505080156128e7575060015b6128f1575061294e565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114612943576040519150601f19603f3d011682016040523d82523d6000602084013e612948565b606091505b50505050505b50600c805460ff60a01b19169055565b6000808315612974575060095461ffff1661299e565b821561298d575060095462010000900461ffff1661299e565b50600954640100000000900461ffff165b806000036129af5784915050610bc5565b600f546201000090046001600160a01b0316301480156129d9575046600114806129d95750466038145b156129e357506111945b60006127106129f2838861302e565b6129fc91906130e9565b90508015612a69573060009081526020819052604081208054839290612a2390849061310b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61237b8187613045565b600f54610100900460ff1615612ad75760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108df565b612ae1828261262e565b158015612afb5750600b546001600160a01b038281169116145b15610abb576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055600f805461ff001916610100179081905562010000900416612b7357600f805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b8015158114611bf857600080fd5b60008060408385031215612bdf57600080fd5b8235612bea81612bbe565b91506020830135612bfa81612bbe565b809150509250929050565b600060208083528351808285015260005b81811015612c3257858101830151858201604001528201612c16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bf857600080fd5b60008060408385031215612c7b57600080fd5b8235612c8681612c53565b946020939093013593505050565b600060208284031215612ca657600080fd5b813561273e81612c53565b60008060408385031215612cc457600080fd5b8235612ccf81612c53565b91506020830135612bfa81612c53565b600080600060608486031215612cf457600080fd5b8335612cff81612c53565b92506020840135612d0f81612c53565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d5f57612d5f612d20565b604052919050565b600067ffffffffffffffff821115612d8157612d81612d20565b5060051b60200190565b600082601f830112612d9c57600080fd5b81356020612db1612dac83612d67565b612d36565b82815260059290921b84018101918181019086841115612dd057600080fd5b8286015b84811015612deb5780358352918301918301612dd4565b509695505050505050565b60008060408385031215612e0957600080fd5b823567ffffffffffffffff80821115612e2157600080fd5b818501915085601f830112612e3557600080fd5b81356020612e45612dac83612d67565b82815260059290921b84018101918181019089841115612e6457600080fd5b948201945b83861015612e8b578535612e7c81612c53565b82529482019490820190612e69565b96505086013592505080821115612ea157600080fd5b50612eae85828601612d8b565b9150509250929050565b60008060408385031215612ecb57600080fd5b8235612bea81612c53565b600060208284031215612ee857600080fd5b813561273e81612bbe565b60008060008060808587031215612f0957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612f76578160001904821115612f5c57612f5c612f25565b80851615612f6957918102915b93841c9390800290612f40565b509250929050565b600082612f8d5750600161096a565b81612f9a5750600061096a565b8160018114612fb05760028114612fba57612fd6565b600191505061096a565b60ff841115612fcb57612fcb612f25565b50506001821b61096a565b5060208310610133831016604e8410600b8410161715612ff9575081810a61096a565b6130038383612f3b565b806000190482111561301757613017612f25565b029392505050565b600061273e60ff841683612f7e565b808202811582820484141761096a5761096a612f25565b8181038181111561096a5761096a612f25565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361308557613085612f25565b6001019392505050565b600080604083850312156130a257600080fd5b505080516020909101519092909150565b6000602082840312156130c557600080fd5b5051919050565b6000602082840312156130de57600080fd5b815161273e81612bbe565b60008261310657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561096a5761096a612f25565b60006020828403121561313057600080fd5b815161273e81612c53565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561318b5784516001600160a01b031683529383019391830191600101613166565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220597a9203f8d9ac32bebf0f9759cfa1523f0dea8ff44ec4fdf132d318ff57c1ca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102905760003560e01c8063570ca735116101645780638a8c523c116100c6578063cab5ebea1161008a578063fb78680d11610064578063fb78680d14610834578063fdb78c0e14610854578063feadde9c1461087557600080fd5b8063cab5ebea146107b9578063dd62ed3e146107d9578063ee5d9c2d1461081f57600080fd5b80638a8c523c1461071257806395d89b4114610727578063a9059cbb14610759578063ab558e4d14610779578063b3ab15fb1461079957600080fd5b8063715018a61161012857806381cf58a91161010257806381cf58a9146106bf578063893d20e8146106df5780638a63bd9b146106fd57600080fd5b8063715018a61461066a57806375f0a8741461067f57806380c581d11461069f57600080fd5b8063570ca735146105be578063590ffdce146105de5780635a6f0918146105fe5780635c24b0741461061457806370a082311461063457600080fd5b806323b872dd1161020d57806339a05902116101d15780634fb2e45d116101ab5780634fb2e45d146105465780634fbee1931461056657806350a8e0161461059f57600080fd5b806339a05902146104f7578063452ed4f11461050c5780634ada218b1461052c57600080fd5b806323b872dd146104655780632610eaca146104855780632e8fa821146104a5578063313ce567146104bb57806333251a0b146104d757600080fd5b80630758d924116102545780630758d924146103a7578063095ea7b3146103c75780630dcbcf1c146103f757806313b4a7f41461043057806318160ddd1461045057600080fd5b806303fd2a451461029c5780630445b667146102cf578063044df726146102f3578063069d955f1461031557806306fdde031461036b57600080fd5b3661029757005b600080fd5b3480156102a857600080fd5b506102b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102db57600080fd5b506102e5600d5481565b6040519081526020016102c6565b3480156102ff57600080fd5b5061031361030e366004612bcc565b610895565b005b34801561032157600080fd5b506009546103469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016102c6565b34801561037757600080fd5b5060408051808201909152600a8152694f7264696e616c20414960b01b60208201525b6040516102c69190612c05565b3480156103b357600080fd5b50600a546102b2906001600160a01b031681565b3480156103d357600080fd5b506103e76103e2366004612c68565b610959565b60405190151581526020016102c6565b34801561040357600080fd5b506103e7610412366004612c94565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561043c57600080fd5b5061031361044b366004612cb1565b610970565b34801561045c57600080fd5b506102e5610b34565b34801561047157600080fd5b506103e7610480366004612cdf565b610b55565b34801561049157600080fd5b506103136104a0366004612df6565b610bcd565b3480156104b157600080fd5b506102e5600e5481565b3480156104c757600080fd5b50604051601281526020016102c6565b3480156104e357600080fd5b506103136104f2366004612c94565b610d88565b34801561050357600080fd5b50610313610e3f565b34801561051857600080fd5b50600b546102b2906001600160a01b031681565b34801561053857600080fd5b50600f546103e79060ff1681565b34801561055257600080fd5b50610313610561366004612c94565b610ec6565b34801561057257600080fd5b506103e7610581366004612c94565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105ab57600080fd5b50600f546103e790610100900460ff1681565b3480156105ca57600080fd5b506013546102b2906001600160a01b031681565b3480156105ea57600080fd5b506103136105f9366004612eb8565b6110ce565b34801561060a57600080fd5b506102e560105481565b34801561062057600080fd5b5061031361062f366004612c94565b611147565b34801561064057600080fd5b506102e561064f366004612c94565b6001600160a01b031660009081526020819052604090205490565b34801561067657600080fd5b50610313611227565b34801561068b57600080fd5b50600c546102b2906001600160a01b031681565b3480156106ab57600080fd5b506103136106ba366004612eb8565b611352565b3480156106cb57600080fd5b506012546102b2906001600160a01b031681565b3480156106eb57600080fd5b506011546001600160a01b03166102b2565b34801561070957600080fd5b506103e7611542565b34801561071e57600080fd5b506103136115b3565b34801561073357600080fd5b506040805180820190915260098152684f7264696e616c414960b81b602082015261039a565b34801561076557600080fd5b506103e7610774366004612c68565b61180f565b34801561078557600080fd5b50610313610794366004612c94565b611826565b3480156107a557600080fd5b506103136107b4366004612c94565b6119de565b3480156107c557600080fd5b506103136107d4366004612ed6565b611acb565b3480156107e557600080fd5b506102e56107f4366004612cb1565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561082b57600080fd5b50610313611b71565b34801561084057600080fd5b5061031361084f366004612ef3565b611bfb565b34801561086057600080fd5b50600c546103e790600160a81b900460ff1681565b34801561088157600080fd5b50610313610890366004612eb8565b611ec3565b6011546001600160a01b031633146108e85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b600f5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801561093d57600080fd5b505af1158015610951573d6000803e3d6000fd5b505050505050565b6000610966338484611f3c565b5060015b92915050565b6011546001600160a01b031633146109be5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b60085460ff166109cd57600080fd5b6001600160a01b03821630148015906109ef57506001600160a01b0381163014155b8015610a095750600b546001600160a01b03838116911614155b8015610a235750600b546001600160a01b03828116911614155b610a5d5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b60448201526064016108df565b806001600160a01b0316826001600160a01b031603610abf576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610abb9082906110ce565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610b299083906110ce565b610abb8160016110ce565b6000610b426012600a61301f565b610b5090633b9aca0061302e565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610bba576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610bb4908490613045565b90915550505b610bc5848484612035565b949350505050565b6011546001600160a01b03163314610c1b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b8051825114610c6c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e000000000000000000000060448201526064016108df565b60005b82518161ffff161015610d8357610c886012600a61301f565b828261ffff1681518110610c9e57610c9e613058565b6020026020010151610cb0919061302e565b336000908152602081905260409020541015610d0e5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e000000000000000000000000000060448201526064016108df565b610d7033848361ffff1681518110610d2857610d28613058565b60200260200101516012600a610d3e919061301f565b858561ffff1681518110610d5457610d54613058565b6020026020010151610d66919061302e565b6000806001612386565b5080610d7b8161306e565b915050610c6f565b505050565b6011546001600160a01b03163314610dd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610e2457600080fd5b505af1158015610e38573d6000803e3d6000fd5b5050505050565b6012546001600160a01b03163314610eaa5760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016108df565b610eb460006119de565b601280546001600160a01b0319169055565b6011546001600160a01b03163314610f145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b038116610f905760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016108df565b61deac196001600160a01b038216016110115760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e00000060648201526084016108df565b601154611028906001600160a01b031660006110ce565b6110338160016110ce565b6011546001600160a01b03166000908152602081905260409020541561107c576011546001600160a01b031660008181526020819052604090205461107a91908390610d66565b505b601180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6011546001600160a01b0316331461111c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6011546001600160a01b031633146111955760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff16156111a557600080fd5b306001600160a01b038216036111fd5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e00000000000000000000000000000000000060448201526064016108df565b600f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6011546001600160a01b031633146112755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff166112ed5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e000000000000000000000000000000000060648201526084016108df565b601154611304906001600160a01b031660006110ce565b601180546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6011546001600160a01b031633146113a05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b80611413576001600160a01b03828116600081815260016020526040808220805460ff19169055600f5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b15801561093d57600080fd5b6002541561147a576203f4806002544261142d9190613045565b1161147a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e000000000000000000000000000000000060448201526064016108df565b6001600160a01b03821660009081526001602052604090205460ff16156114e35760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e000000000060448201526064016108df565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255600f5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610923565b6011546000906001600160a01b031633146115935760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600a546115ad9030906001600160a01b0316600019611f3c565b50600190565b6011546001600160a01b031633146116015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f5460ff16156116545760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016108df565b600f54610100900460ff166116ab5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e000000000000000060448201526064016108df565b600f546201000090046001600160a01b03166116db57600f805462010000600160b01b0319163062010000021790555b600f54600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561174d57600080fd5b505af192505050801561175e575060015b50600f54600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156117e1575060408051601f3d908101601f191682019092526117de9181019061308f565b60015b156117f057600d91909155600e555b600f805460ff1990811660011790915560088054909116905542601055565b600061181c338484612035565b5060019392505050565b6011546001600160a01b031633146118745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600f54610100900460ff16156118dc57306001600160a01b038216036118dc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e000000000060448201526064016108df565b6011546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611933573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195791906130b3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156119ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8391906130cc565b6012546001600160a01b03163314611a495760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b60648201526084016108df565b6013546001600160a01b03168015611a86576001600160a01b0381166000908152600460205260408120805460ff19169055611a869082906110ce565b601380546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610abb9083906110ce565b6011546001600160a01b03163314611b195760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b600c8054821515600160a81b0260ff60a81b199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611b6690831515815260200190565b60405180910390a150565b6011546001600160a01b03163314611bbf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6011546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611bf8573d6000803e3d6000fd5b50565b6011546001600160a01b03163314611c495760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b8284611c576012600a61301f565b611c6590633b9aca0061302e565b611c6f919061302e565b611c7991906130e9565b600d558082611c8a6012600a61301f565b611c9890633b9aca0061302e565b611ca2919061302e565b611cac91906130e9565b600e819055600d541115611d0c5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b60648201526084016108df565b600b546001600160a01b031660009081526020819052604090205461271090611d3690609661302e565b611d4091906130e9565b600e541115611d9d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b60648201526084016108df565b620f4240611dad6012600a61301f565b611dbb90633b9aca0061302e565b611dc591906130e9565b600e541015611e2d5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b60648201526084016108df565b620f4240611e3d6012600a61301f565b611e4b90633b9aca0061302e565b611e5591906130e9565b600d541015611ebd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b60648201526084016108df565b50505050565b6011546001600160a01b03163314611f115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064016108df565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611f885760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108df565b6001600160a01b038216611fd45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016108df565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661209b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108df565b6001600160a01b0383166120fd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108df565b6000821161215f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108df565b6001600160a01b0384166000908152600160205260408120548190819060ff161561218d57600192506121bb565b6001600160a01b03861660009081526001602052604090205460ff16156121b757600191506121bb565b5060015b6121c5878761262e565b156122c657600f5460ff166122c657806122215760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016108df565b6001600160a01b03871660009081526005602052604090205460ff1615801561226357506001600160a01b03861660009081526005602052604090205460ff16155b156122c65760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b60648201526084016108df565b811561236d57600c54600160a01b900460ff1661236d57600c54600160a81b900460ff16801561230f57506001600160a01b03861660009081526007602052604090205460ff16155b801561233457506001600160a01b03871660009081526007602052604090205460ff16155b1561236d5730600090815260208190526040902054600d54811061236b57600e54808210612360578091505b61236982612745565b505b505b61237b878787868686612386565b979650505050505050565b6000612392878761262e565b1561242c57600f5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612415575060408051601f3d908101601f19168201909252612412918101906130cc565b60015b61241e57600080fd5b90508061242a57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061246e57506001600160a01b03871660009081526006602052604090205460ff165b15612477575060005b6001600160a01b0388166000908152602081905260408120805488929061249f908490613045565b9091555060009050816124b257866124be565b6124be8988888861295e565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124f4919061310b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254091815260200190565b60405180910390a3600f54610100900460ff1661261f576125618989612a73565b600f54610100900460ff1615801561257e575061257e898961262e565b80156125a357506001600160a01b03891660009081526005602052604090205460ff16155b80156125c857506001600160a01b03881660009081526005602052604090205460ff16155b80156125d2575083155b1561261f5760405162461bcd60e51b815260206004820152601d60248201527f5072652d6275726e207472616e736665722070726f74656374696f6e2e00000060448201526064016108df565b50600198975050505050505050565b6011546000906001600160a01b0384811691161480159061265d57506011546001600160a01b03838116911614155b801561267457506011546001600160a01b03163214155b801561269957506001600160a01b03821660009081526004602052604090205460ff16155b80156126be57506001600160a01b03831660009081526004602052604090205460ff16155b80156126d557506001600160a01b03821661dead14155b80156126e957506001600160a01b03821615155b80156126fe57506001600160a01b0383163014155b801561271e5750600f546001600160a01b03848116620100009092041614155b801561273e5750600f546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a546001600160a01b03168452909152902054600019146127b157306000908152600360209081526040808320600a546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106127e6576127e6613058565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561283f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612863919061311e565b8160018151811061287657612876613058565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac947906128bc90859060009086903090429060040161313b565b600060405180830381600087803b1580156128d657600080fd5b505af19250505080156128e7575060015b6128f1575061294e565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114612943576040519150601f19603f3d011682016040523d82523d6000602084013e612948565b606091505b50505050505b50600c805460ff60a01b19169055565b6000808315612974575060095461ffff1661299e565b821561298d575060095462010000900461ffff1661299e565b50600954640100000000900461ffff165b806000036129af5784915050610bc5565b600f546201000090046001600160a01b0316301480156129d9575046600114806129d95750466038145b156129e357506111945b60006127106129f2838861302e565b6129fc91906130e9565b90508015612a69573060009081526020819052604081208054839290612a2390849061310b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61237b8187613045565b600f54610100900460ff1615612ad75760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016108df565b612ae1828261262e565b158015612afb5750600b546001600160a01b038281169116145b15610abb576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055600f805461ff001916610100179081905562010000900416612b7357600f805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b8015158114611bf857600080fd5b60008060408385031215612bdf57600080fd5b8235612bea81612bbe565b91506020830135612bfa81612bbe565b809150509250929050565b600060208083528351808285015260005b81811015612c3257858101830151858201604001528201612c16565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bf857600080fd5b60008060408385031215612c7b57600080fd5b8235612c8681612c53565b946020939093013593505050565b600060208284031215612ca657600080fd5b813561273e81612c53565b60008060408385031215612cc457600080fd5b8235612ccf81612c53565b91506020830135612bfa81612c53565b600080600060608486031215612cf457600080fd5b8335612cff81612c53565b92506020840135612d0f81612c53565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d5f57612d5f612d20565b604052919050565b600067ffffffffffffffff821115612d8157612d81612d20565b5060051b60200190565b600082601f830112612d9c57600080fd5b81356020612db1612dac83612d67565b612d36565b82815260059290921b84018101918181019086841115612dd057600080fd5b8286015b84811015612deb5780358352918301918301612dd4565b509695505050505050565b60008060408385031215612e0957600080fd5b823567ffffffffffffffff80821115612e2157600080fd5b818501915085601f830112612e3557600080fd5b81356020612e45612dac83612d67565b82815260059290921b84018101918181019089841115612e6457600080fd5b948201945b83861015612e8b578535612e7c81612c53565b82529482019490820190612e69565b96505086013592505080821115612ea157600080fd5b50612eae85828601612d8b565b9150509250929050565b60008060408385031215612ecb57600080fd5b8235612bea81612c53565b600060208284031215612ee857600080fd5b813561273e81612bbe565b60008060008060808587031215612f0957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612f76578160001904821115612f5c57612f5c612f25565b80851615612f6957918102915b93841c9390800290612f40565b509250929050565b600082612f8d5750600161096a565b81612f9a5750600061096a565b8160018114612fb05760028114612fba57612fd6565b600191505061096a565b60ff841115612fcb57612fcb612f25565b50506001821b61096a565b5060208310610133831016604e8410600b8410161715612ff9575081810a61096a565b6130038383612f3b565b806000190482111561301757613017612f25565b029392505050565b600061273e60ff841683612f7e565b808202811582820484141761096a5761096a612f25565b8181038181111561096a5761096a612f25565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361308557613085612f25565b6001019392505050565b600080604083850312156130a257600080fd5b505080516020909101519092909150565b6000602082840312156130c557600080fd5b5051919050565b6000602082840312156130de57600080fd5b815161273e81612bbe565b60008261310657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561096a5761096a612f25565b60006020828403121561313057600080fd5b815161273e81612c53565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561318b5784516001600160a01b031683529383019391830191600101613166565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220597a9203f8d9ac32bebf0f9759cfa1523f0dea8ff44ec4fdf132d318ff57c1ca64736f6c63430008130033

Deployed Bytecode Sourcemap

4017:18324:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5174:73;;;;;;;;;;;;5205:42;5174:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5174:73:0;;;;;;;;5423:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5423:28:0;245:177:1;13520:153:0;;;;;;;;;;-1:-1:-1;13520:153:0;;;;;:::i;:::-;;:::i;:::-;;4949:107;;;;;;;;;;-1:-1:-1;4949:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;4949:107:0;931:365:1;10427:80:0;;;;;;;;;;-1:-1:-1;10499:5:0;;;;;;;;;;;;-1:-1:-1;;;10499:5:0;;;;10427:80;;;;;;;:::i;5113:26::-;;;;;;;;;;-1:-1:-1;5113:26:0;;;;-1:-1:-1;;;;;5113:26:0;;;11035:161;;;;;;;;;;-1:-1:-1;11035:161:0;;;;;:::i;:::-;;:::i;:::-;;;2746:14:1;;2739:22;2721:41;;2709:2;2694:18;11035:161:0;2581:187:1;13098:140:0;;;;;;;;;;-1:-1:-1;13098:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13196:34:0;13172:4;13196:34;;;:25;:34;;;;;;;;;13098:140;14572:809;;;;;;;;;;-1:-1:-1;14572:809:0;;;;;:::i;:::-;;:::i;10162:83::-;;;;;;;;;;;;;:::i;11705:306::-;;;;;;;;;;-1:-1:-1;11705:306:0;;;;;:::i;:::-;;:::i;20021:447::-;;;;;;;;;;-1:-1:-1;20021:447:0;;;;;:::i;:::-;;:::i;5458:25::-;;;;;;;;;;;;;;;;10251:80;;;;;;;;;;-1:-1:-1;10251:80:0;;4760:2;6508:36:1;;6496:2;6481:18;10251:80:0;6366:184:1;13402:110:0;;;;;;;;;;-1:-1:-1;13402:110:0;;;;;:::i;:::-;;:::i;9545:221::-;;;;;;;;;;;;;:::i;5146:21::-;;;;;;;;;;-1:-1:-1;5146:21:0;;;;-1:-1:-1;;;;;5146:21:0;;;5490:34;;;;;;;;;;-1:-1:-1;5490:34:0;;;;;;;;7852:654;;;;;;;;;;-1:-1:-1;7852:654:0;;;;;:::i;:::-;;:::i;12821:127::-;;;;;;;;;;-1:-1:-1;12821:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12912:28:0;12888:4;12912:28;;;:19;:28;;;;;;;;;12821:127;5531:36;;;;;;;;;;-1:-1:-1;5531:36:0;;;;;;;;;;;8870:23;;;;;;;;;;-1:-1:-1;8870:23:0;;;;-1:-1:-1;;;;;8870:23:0;;;12956:134;;;;;;;;;;-1:-1:-1;12956:134:0;;;;;:::i;:::-;;:::i;5604:26::-;;;;;;;;;;;;;;;;12591:222;;;;;;;;;;-1:-1:-1;12591:222:0;;;;;:::i;:::-;;:::i;10737:117::-;;;;;;;;;;-1:-1:-1;10737:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10830:16:0;10803:7;10830:16;;;;;;;;;;;;10737:117;8514:310;;;;;;;;;;;;;:::i;5254:92::-;;;;;;;;;;-1:-1:-1;5254:92:0;;;;-1:-1:-1;;;;;5254:92:0;;;12019:564;;;;;;;;;;-1:-1:-1;12019:564:0;;;;;:::i;:::-;;:::i;8832:31::-;;;;;;;;;;-1:-1:-1;8832:31:0;;;;-1:-1:-1;;;;;8832:31:0;;;10513:79;;;;;;;;;;-1:-1:-1;10583:6:0;;-1:-1:-1;;;;;10583:6:0;10513:79;;11522:175;;;;;;;;;;;;;:::i;18851:737::-;;;;;;;;;;;;;:::i;10337:84::-;;;;;;;;;;-1:-1:-1;10411:7:0;;;;;;;;;;;;-1:-1:-1;;;10411:7:0;;;;10337:84;;10862:165;;;;;;;;;;-1:-1:-1;10862:165:0;;;;;:::i;:::-;;:::i;19717:296::-;;;;;;;;;;-1:-1:-1;19717:296:0;;;;;:::i;:::-;;:::i;9055:482::-;;;;;;;;;;-1:-1:-1;9055:482:0;;;;;:::i;:::-;;:::i;14388:176::-;;;;;;;;;;-1:-1:-1;14388:176:0;;;;;:::i;:::-;;:::i;10598:133::-;;;;;;;;;;-1:-1:-1;10598:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10700:19:0;;;10682:7;10700:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10598:133;19596:113;;;;;;;;;;;;;:::i;13681:699::-;;;;;;;;;;-1:-1:-1;13681:699:0;;;;;:::i;:::-;;:::i;5377:39::-;;;;;;;;;;-1:-1:-1;5377:39:0;;;;-1:-1:-1;;;5377:39:0;;;;;;13246:148;;;;;;;;;;-1:-1:-1;13246:148:0;;;;;:::i;:::-;;:::i;13520:153::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;;;;;;;;;13615:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;13615:50:0;;8358:14:1;;8351:22;13615:50:0::1;::::0;::::1;8333:41:1::0;8417:14;;8410:22;8390:18;;;8383:50;13615:11:0;;;::::1;-1:-1:-1::0;;;;;13615:11:0::1;::::0;:26:::1;::::0;8306:18:1;;13615:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13520:153:::0;;:::o;11035:161::-;11112:4;11129:37;11138:10;11150:7;11159:6;11129:8;:37::i;:::-;-1:-1:-1;11184:4:0;11035:161;;;;;:::o;14572:809::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;14676:23:::1;::::0;::::1;;14668:32;;;::::0;::::1;;-1:-1:-1::0;;;;;14719:23:0;::::1;14737:4;14719:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;14764:24:0;::::1;14783:4;14764:24;;14719:69;:107;;;;-1:-1:-1::0;14810:6:0::1;::::0;-1:-1:-1;;;;;14810:16:0;;::::1;:6:::0;::::1;:16;;14719:107;:146;;;;-1:-1:-1::0;14848:6:0::1;::::0;-1:-1:-1;;;;;14848:17:0;;::::1;:6:::0;::::1;:17;;14719:146;14711:170;;;::::0;-1:-1:-1;;;14711:170:0;;8646:2:1;14711:170:0::1;::::0;::::1;8628:21:1::0;8685:2;8665:18;;;8658:30;-1:-1:-1;;;8704:18:1;;;8697:41;8755:18;;14711:170:0::1;8444:335:1::0;14711:170:0::1;14906:7;-1:-1:-1::0;;;;;14896:17:0::1;:6;-1:-1:-1::0;;;;;14896:17:0::1;::::0;14892:482:::1;;-1:-1:-1::0;;;;;14930:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;14959:4:::1;-1:-1:-1::0;;14930:33:0;;::::1;::::0;::::1;::::0;;;14978:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;15025:34:::1;::::0;14930:26;;15025:19:::1;:34::i;:::-;14572:809:::0;;:::o;14892:482::-:1;-1:-1:-1::0;;;;;15092:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;15120:4:::1;-1:-1:-1::0;;15092:32:0;;::::1;::::0;::::1;::::0;;;15139:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;15187:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;15233:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;15280:33:::1;::::0;15092:25;;15280:19:::1;:33::i;:::-;15328:34;15348:7;15357:4;15328:19;:34::i;10162:83::-:0;10217:7;4821:13;4760:2;4821;:13;:::i;:::-;4804:30;;4602:13;4804:30;:::i;:::-;10228:14;;10162:83;:::o;11705:306::-;-1:-1:-1;;;;;11826:19:0;;11805:4;11826:19;;;:11;:19;;;;;;;;11846:10;11826:31;;;;;;;;-1:-1:-1;;11826:52:0;11822:126;;-1:-1:-1;;;;;11895:19:0;;;;;;:11;:19;;;;;;;;11915:10;11895:31;;;;;;;:41;;11930:6;;11895:19;:41;;11930:6;;11895:41;:::i;:::-;;;;-1:-1:-1;;11822:126:0;11967:36;11977:6;11985:9;11996:6;11967:9;:36::i;:::-;11960:43;11705:306;-1:-1:-1;;;;11705:306:0:o;20021:447::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;20156:7:::1;:14;20137:8;:15;:33;20129:67;;;::::0;-1:-1:-1;;;20129:67:0;;10807:2:1;20129:67:0::1;::::0;::::1;10789:21:1::0;10846:2;10826:18;;;10819:30;10885:23;10865:18;;;10858:51;10926:18;;20129:67:0::1;10605:345:1::0;20129:67:0::1;20212:8;20207:254;20230:8;:15;20226:1;:19;;;20207:254;;;20311:13;4760:2;20311;:13;:::i;:::-;20300:7;20308:1;20300:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;20285:10;10803:7:::0;10830:16;;;;;;;;;;;20275:49:::1;;20267:80;;;::::0;-1:-1:-1;;;20267:80:0;;11289:2:1;20267:80:0::1;::::0;::::1;11271:21:1::0;11328:2;11308:18;;;11301:30;11367:20;11347:18;;;11340:48;11405:18;;20267:80:0::1;11087:342:1::0;20267:80:0::1;20362:87;20379:10;20391:8;20400:1;20391:11;;;;;;;;;;:::i;:::-;;;;;;;4760:2;20415;:13;;;;:::i;:::-;20404:7;20412:1;20404:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;20430:5;20437::::0;20444:4:::1;20362:16;:87::i;:::-;-1:-1:-1::0;20247:3:0;::::1;::::0;::::1;:::i;:::-;;;;20207:254;;;;20021:447:::0;;:::o;13402:110::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;13471:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13471:33:0;;-1:-1:-1;;;;;178:55:1;;;13471:33:0::1;::::0;::::1;160:74:1::0;13471:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13471:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13402:110:::0;:::o;9545:221::-;9623:16;;-1:-1:-1;;;;;9623:16:0;9609:10;:30;9601:83;;;;-1:-1:-1;;;9601:83:0;;11838:2:1;9601:83:0;;;11820:21:1;11877:2;11857:18;;;11850:30;11916:34;11896:18;;;11889:62;-1:-1:-1;;;11967:18:1;;;11960:38;12015:19;;9601:83:0;11636:404:1;9601:83:0;9695:23;9715:1;9695:11;:23::i;:::-;9729:16;:29;;-1:-1:-1;;;;;;9729:29:0;;;9545:221::o;7852:654::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;-1:-1:-1;;;;;7931:22:0;::::1;7923:96;;;::::0;-1:-1:-1;;;7923:96:0;;12247:2:1;7923:96:0::1;::::0;::::1;12229:21:1::0;12286:2;12266:18;;;12259:30;12325:34;12305:18;;;12298:62;12396:31;12376:18;;;12369:59;12445:19;;7923:96:0::1;12045:425:1::0;7923:96:0::1;-1:-1:-1::0;;;;;;;8038:16:0;::::1;::::0;8030:90:::1;;;::::0;-1:-1:-1;;;8030:90:0;;12247:2:1;8030:90:0::1;::::0;::::1;12229:21:1::0;12286:2;12266:18;;;12259:30;12325:34;12305:18;;;12298:62;12396:31;12376:18;;;12369:59;12445:19;;8030:90:0::1;12045:425:1::0;8030:90:0::1;8151:6;::::0;8131:34:::1;::::0;-1:-1:-1;;;;;8151:6:0::1;;8131:19;:34::i;:::-;8176:35;8196:8;8206:4;8176:19;:35::i;:::-;8246:6;::::0;-1:-1:-1;;;;;8246:6:0::1;8256:1;10830:16:::0;;;;;;;;;;;8236:21;8232:127:::1;;8291:6;::::0;-1:-1:-1;;;;;8291:6:0::1;10803:7:::0;10830:16;;;;;;;;;;;8274:73:::1;::::0;8291:6;8299:8;;8309:17:::1;10737:117:::0;8274:73:::1;;8232:127;8398:6;::::0;;-1:-1:-1;;;;;8415:17:0;;::::1;-1:-1:-1::0;;;;;;8415:17:0;::::1;::::0;::::1;::::0;;;8448:40:::1;::::0;8398:6;::::1;::::0;8415:17;8398:6;;8448:40:::1;::::0;8379:16:::1;::::0;8448:40:::1;7912:594;7852:654:::0;:::o;12956:134::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;-1:-1:-1;;;;;13044:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13044:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12956:134::o;12591:222::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;12675:14:::1;::::0;::::1;;12674:15;12666:24;;;::::0;::::1;;12732:4;-1:-1:-1::0;;;;;12709:28:0;::::1;::::0;12701:55:::1;;;::::0;-1:-1:-1;;;12701:55:0;;12677:2:1;12701:55:0::1;::::0;::::1;12659:21:1::0;12716:2;12696:18;;;12689:30;12755:16;12735:18;;;12728:44;12789:18;;12701:55:0::1;12475:338:1::0;12701:55:0::1;12767:11;:38:::0;;-1:-1:-1;;;;;12767:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;12767:38:0;;::::1;::::0;;;::::1;::::0;;12591:222::o;8514:310::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;8581:14:::1;::::0;::::1;;8573:74;;;::::0;-1:-1:-1;;;8573:74:0;;13020:2:1;8573:74:0::1;::::0;::::1;13002:21:1::0;13059:2;13039:18;;;13032:30;13098:34;13078:18;;;13071:62;13169:17;13149:18;;;13142:45;13204:19;;8573:74:0::1;12818:411:1::0;8573:74:0::1;8678:6;::::0;8658:34:::1;::::0;-1:-1:-1;;;;;8678:6:0::1;;8658:19;:34::i;:::-;8722:6;::::0;;-1:-1:-1;;;;;;8739:19:0;::::1;::::0;;;8774:42:::1;::::0;-1:-1:-1;;;;;8722:6:0;;::::1;::::0;8703:16:::1;::::0;8722:6;;8774:42:::1;::::0;8703:16;;8774:42:::1;8562:262;8514:310::o:0;12019:564::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;12101:7:::1;12096:480;;-1:-1:-1::0;;;;;12125:13:0;;::::1;12141:5;12125:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12125:21:0::1;::::0;;12161:11:::1;::::0;:34;;-1:-1:-1;;;12161:34:0;;::::1;::::0;::::1;13402:74:1::0;;;;13492:18;;;13485:50;;;;12161:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;13375:18:1;;12161:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;12096:480;12232:17;::::0;:22;12228:135:::1;;12321:6;12301:17;;12283:15;:35;;;;:::i;:::-;:44;12275:72;;;::::0;-1:-1:-1;;;12275:72:0;;13748:2:1;12275:72:0::1;::::0;::::1;13730:21:1::0;13787:2;13767:18;;;13760:30;13826:17;13806:18;;;13799:45;13861:18;;12275:72:0::1;13546:339:1::0;12275:72:0::1;-1:-1:-1::0;;;;;12386:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12385:14;12377:54;;;::::0;-1:-1:-1;;;12377:54:0;;14092:2:1;12377:54:0::1;::::0;::::1;14074:21:1::0;14131:2;14111:18;;;14104:30;14170:29;14150:18;;;14143:57;14217:18;;12377:54:0::1;13890:351:1::0;12377:54:0::1;-1:-1:-1::0;;;;;12446:13:0;;::::1;;::::0;;;12462:4:::1;12446:13;::::0;;;;;;;;:20;;-1:-1:-1;;12446:20:0::1;::::0;::::1;::::0;;12501:15:::1;12481:17;:35:::0;12531:11:::1;::::0;:33;;-1:-1:-1;;;12531:33:0;;::::1;::::0;::::1;13402:74:1::0;;;;13492:18;;;13485:50;12531:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;13375:18:1;;12531:33:0::1;13234:307:1::0;11522:175:0;7706:6;;11588:4;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;11637:9:::1;::::0;11605:62:::1;::::0;11622:4:::1;::::0;-1:-1:-1;;;;;11637:9:0::1;-1:-1:-1::0;;11605:8:0::1;:62::i;:::-;-1:-1:-1::0;11685:4:0::1;11522:175:::0;:::o;18851:737::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;18913:14:::1;::::0;::::1;;18912:15;18904:52;;;::::0;-1:-1:-1;;;18904:52:0;;14448:2:1;18904:52:0::1;::::0;::::1;14430:21:1::0;14487:2;14467:18;;;14460:30;14526:26;14506:18;;;14499:54;14570:18;;18904:52:0::1;14246:348:1::0;18904:52:0::1;18975:16;::::0;::::1;::::0;::::1;;;18967:53;;;::::0;-1:-1:-1;;;18967:53:0;;14801:2:1;18967:53:0::1;::::0;::::1;14783:21:1::0;14840:2;14820:18;;;14813:30;14879:26;14859:18;;;14852:54;14923:18;;18967:53:0::1;14599:348:1::0;18967:53:0::1;19043:11;::::0;;;::::1;-1:-1:-1::0;;;;;19043:11:0::1;19031:106;;19085:11;:40:::0;;-1:-1:-1;;;;;;19085:40:0::1;19119:4;19085:40:::0;::::1;;::::0;;19031:106:::1;19151:11;::::0;19173:6:::1;::::0;19151:87:::1;::::0;-1:-1:-1;;;19151:87:0;;-1:-1:-1;;;;;19173:6:0;;::::1;19151:87;::::0;::::1;15175:74:1::0;15297:10;19188:12:0::1;15285:23:1::0;15265:18;;;15258:51;15357:18;19210:15:0::1;15345:31:1::0;15325:18;;;15318:59;4760:2:0::1;15393:18:1::0;;;15386:45;19151:11:0;;;::::1;;::::0;:21:::1;::::0;15147:19:1;;19151:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;19264:11:0::1;::::0;19295:6:::1;::::0;-1:-1:-1;;;;;19295:6:0;;::::1;10803:7:::0;10830:16;;;;;;;;;;;;;19264:39;;-1:-1:-1;;;19264:39:0;;::::1;::::0;::::1;391:25:1::0;;;;19264:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;19264:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;19264:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;19264:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;19260:207:::0;::::1;;19375:13;:29:::0;;;;19419:10:::1;:27:::0;19260:207:::1;19477:14;:21:::0;;-1:-1:-1;;19477:21:0;;::::1;19494:4;19477:21;::::0;;;19509:23:::1;:31:::0;;;;::::1;::::0;;19565:15:::1;19551:11;:29:::0;18851:737::o;10862:165::-;10940:4;10957:40;10967:10;10979:9;10990:6;10957:9;:40::i;:::-;-1:-1:-1;11015:4:0;;10862:165;-1:-1:-1;;;10862:165:0:o;19717:296::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;19795:16:::1;::::0;::::1;::::0;::::1;;;19791:111;;;19853:4;-1:-1:-1::0;;;;;19836:22:0;::::1;::::0;19828:62:::1;;;::::0;-1:-1:-1;;;19828:62:0;;15894:2:1;19828:62:0::1;::::0;::::1;15876:21:1::0;15933:2;15913:18;;;15906:30;15972:29;15952:18;;;15945:57;16019:18;;19828:62:0::1;15692:351:1::0;19828:62:0::1;19966:6;::::0;19974:30:::1;::::0;-1:-1:-1;;;19974:30:0;;19998:4:::1;19974:30;::::0;::::1;160:74:1::0;19934:5:0;;-1:-1:-1;;;;;19951:14:0;;::::1;::::0;::::1;::::0;19966:6;;;::::1;::::0;19951:14;;19974:15:::1;::::0;133:18:1;;19974:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19951:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16429:55:1;;;19951:54:0::1;::::0;::::1;16411:74:1::0;16501:18;;;16494:34;16384:18;;19951:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9055:482::-:0;9137:16;;-1:-1:-1;;;;;9137:16:0;9123:10;:30;9115:83;;;;-1:-1:-1;;;9115:83:0;;11838:2:1;9115:83:0;;;11820:21:1;11877:2;11857:18;;;11850:30;11916:34;11896:18;;;11889:62;-1:-1:-1;;;11967:18:1;;;11960:38;12015:19;;9115:83:0;11636:404:1;9115:83:0;9231:8;;-1:-1:-1;;;;;9231:8:0;9254:25;;9250:150;;-1:-1:-1;;;;;9296:30:0;;9329:5;9296:30;;;:17;:30;;;;;:38;;-1:-1:-1;;9296:38:0;;;9349:39;;9314:11;;9349:19;:39::i;:::-;9410:8;:22;;-1:-1:-1;;;;;;9410:22:0;-1:-1:-1;;;;;9410:22:0;;;;;;;;-1:-1:-1;9443:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;9443:37:0;-1:-1:-1;9443:37:0;;;;;;9491:38;;9410:22;;9491:19;:38::i;14388:176::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;14468:19:::1;:33:::0;;;::::1;;-1:-1:-1::0;;;14468:33:0::1;-1:-1:-1::0;;;;14468:33:0;;::::1;;::::0;;14517:39:::1;::::0;::::1;::::0;::::1;::::0;14490:11;2746:14:1;2739:22;2721:41;;2709:2;2694:18;;2581:187;14517:39:0::1;;;;;;;;14388:176:::0;:::o;19596:113::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;19662:6:::1;::::0;19654:47:::1;::::0;-1:-1:-1;;;;;19662:6:0;;::::1;::::0;19679:21:::1;19654:47:::0;::::1;;;::::0;19662:6:::1;19654:47:::0;19662:6;19654:47;19679:21;19662:6;19654:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19596:113::o:0;13681:699::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;13881:16;13861;4821:13:::1;4760:2;4821;:13;:::i;:::-;4804:30;::::0;4602:13:::1;4804:30;:::i;:::-;13851:26;;;;:::i;:::-;13850:47;;;;:::i;:::-;13834:13;:63:::0;13949:13;13932;4821::::1;4760:2;4821;:13;:::i;:::-;4804:30;::::0;4602:13:::1;4804:30;:::i;:::-;13922:23;;;;:::i;:::-;13921:41;;;;:::i;:::-;13908:10;:54:::0;;;13981:13:::1;::::0;:27:::1;;13973:73;;;::::0;-1:-1:-1;;;13973:73:0;;17213:2:1;13973:73:0::1;::::0;::::1;17195:21:1::0;17252:2;17232:18;;;17225:30;17291:34;17271:18;;;17264:62;-1:-1:-1;;;17342:18:1;;;17335:31;17383:19;;13973:73:0::1;17011:397:1::0;13973:73:0::1;14090:6;::::0;-1:-1:-1;;;;;14090:6:0::1;10803:7:::0;10830:16;;;;;;;;;;;5101:5:::1;::::0;14080:23:::1;::::0;14100:3:::1;14080:23;:::i;:::-;14079:44;;;;:::i;:::-;14065:10;;:58;;14057:106;;;::::0;-1:-1:-1;;;14057:106:0;;17615:2:1;14057:106:0::1;::::0;::::1;17597:21:1::0;17654:2;17634:18;;;17627:30;17693:34;17673:18;;;17666:62;-1:-1:-1;;;17744:18:1;;;17737:33;17787:19;;14057:106:0::1;17413:399:1::0;14057:106:0::1;14206:9;4821:13;4760:2;4821;:13;:::i;:::-;4804:30;::::0;4602:13:::1;4804:30;:::i;:::-;14196:19;;;;:::i;:::-;14182:10;;:33;;14174:92;;;::::0;-1:-1:-1;;;14174:92:0;;18019:2:1;14174:92:0::1;::::0;::::1;18001:21:1::0;18058:2;18038:18;;;18031:30;18097:34;18077:18;;;18070:62;-1:-1:-1;;;18148:18:1;;;18141:44;18202:19;;14174:92:0::1;17817:410:1::0;14174:92:0::1;14312:9;4821:13;4760:2;4821;:13;:::i;:::-;4804:30;::::0;4602:13:::1;4804:30;:::i;:::-;14302:19;;;;:::i;:::-;14285:13;;:36;;14277:95;;;::::0;-1:-1:-1;;;14277:95:0;;18019:2:1;14277:95:0::1;::::0;::::1;18001:21:1::0;18058:2;18038:18;;;18031:30;18097:34;18077:18;;;18070:62;-1:-1:-1;;;18148:18:1;;;18141:44;18202:19;;14277:95:0::1;17817:410:1::0;14277:95:0::1;13681:699:::0;;;;:::o;13246:148::-;7706:6;;-1:-1:-1;;;;;7706:6:0;7716:10;7706:20;7698:50;;;;-1:-1:-1;;;7698:50:0;;8027:2:1;7698:50:0;;;8009:21:1;8066:2;8046:18;;;8039:30;-1:-1:-1;;;8085:18:1;;;8078:47;8142:18;;7698:50:0;7825:341:1;7698:50:0;-1:-1:-1;;;;;13342:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13342:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13246:148::o;11204:310::-;-1:-1:-1;;;;;11299:20:0;;11291:52;;;;-1:-1:-1;;;11291:52:0;;18434:2:1;11291:52:0;;;18416:21:1;18473:2;18453:18;;;18446:30;-1:-1:-1;;;18492:18:1;;;18485:49;18551:18;;11291:52:0;18232:343:1;11291:52:0;-1:-1:-1;;;;;11362:21:0;;11354:53;;;;-1:-1:-1;;;11354:53:0;;18434:2:1;11354:53:0;;;18416:21:1;18473:2;18453:18;;;18446:30;-1:-1:-1;;;18492:18:1;;;18485:49;18551:18;;11354:53:0;18232:343:1;11354:53:0;-1:-1:-1;;;;;11420:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11473:33;;391:25:1;;;11473:33:0;;364:18:1;11473:33:0;;;;;;;11204:310;;;:::o;15843:1660::-;15922:4;-1:-1:-1;;;;;15947:18:0;;15939:68;;;;-1:-1:-1;;;15939:68:0;;18782:2:1;15939:68:0;;;18764:21:1;18821:2;18801:18;;;18794:30;18860:34;18840:18;;;18833:62;-1:-1:-1;;;18911:18:1;;;18904:35;18956:19;;15939:68:0;18580:401:1;15939:68:0;-1:-1:-1;;;;;16026:16:0;;16018:64;;;;-1:-1:-1;;;16018:64:0;;19188:2:1;16018:64:0;;;19170:21:1;19227:2;19207:18;;;19200:30;19266:34;19246:18;;;19239:62;-1:-1:-1;;;19317:18:1;;;19310:33;19360:19;;16018:64:0;18986:399:1;16018:64:0;16110:1;16101:6;:10;16093:64;;;;-1:-1:-1;;;16093:64:0;;19592:2:1;16093:64:0;;;19574:21:1;19631:2;19611:18;;;19604:30;19670:34;19650:18;;;19643:62;-1:-1:-1;;;19721:18:1;;;19714:39;19770:19;;16093:64:0;19390:405:1;16093:64:0;-1:-1:-1;;;;;16256:13:0;;16168:8;16256:13;;;:7;:13;;;;;;16168:8;;;;16256:13;;16252:162;;;16292:4;16286:10;;16252:162;;;-1:-1:-1;;;;;16318:11:0;;;;;;:7;:11;;;;;;;;16314:100;;;16353:4;16346:11;;16314:100;;;-1:-1:-1;16398:4:0;16314:100;16428:20;16439:4;16445:2;16428:10;:20::i;:::-;16424:371;;;16469:14;;;;16465:319;;16509:5;16504:265;;16539:34;;-1:-1:-1;;;16539:34:0;;20002:2:1;16539:34:0;;;19984:21:1;20041:2;20021:18;;;20014:30;20080:26;20060:18;;;20053:54;20124:18;;16539:34:0;19800:348:1;16504:265:0;-1:-1:-1;;;;;16604:31:0;;;;;;:25;:31;;;;;;;;16603:32;:66;;;;-1:-1:-1;;;;;;16640:29:0;;;;;;:25;:29;;;;;;;;16639:30;16603:66;16599:170;;;16694:55;;-1:-1:-1;;;16694:55:0;;20355:2:1;16694:55:0;;;20337:21:1;20394:2;20374:18;;;20367:30;20433:34;20413:18;;;20406:62;-1:-1:-1;;;20484:18:1;;;20477:43;20537:19;;16694:55:0;20153:409:1;16599:170:0;16811:4;16807:619;;;16837:6;;-1:-1:-1;;;16837:6:0;;;;16832:583;;16868:19;;-1:-1:-1;;;16868:19:0;;;;:64;;;;-1:-1:-1;;;;;;16912:20:0;;;;;;:16;:20;;;;;;;;16911:21;16868:64;:111;;;;-1:-1:-1;;;;;;16957:22:0;;;;;;:16;:22;;;;;;;;16956:23;16868:111;16864:536;;;17071:4;17022:28;10830:16;;;;;;;;;;;17128:13;;17104:37;;17100:281;;17188:10;;17229:31;;;17225:72;;17287:7;17264:30;;17225:72;17323:34;17336:20;17323:12;:34::i;:::-;17143:238;17100:281;16999:401;16864:536;17443:52;17460:4;17466:2;17470:6;17478:3;17483:4;17489:5;17443:16;:52::i;:::-;17436:59;15843:1660;-1:-1:-1;;;;;;;15843:1660:0:o;20476:1050::-;20595:4;20616:20;20627:4;20633:2;20616:10;:20::i;:::-;20612:228;;;20671:11;;:39;;-1:-1:-1;;;20671:39:0;;-1:-1:-1;;;;;20848:15:1;;;20671:39:0;;;20830:34:1;20900:15;;;20880:18;;;20873:43;20932:18;;;20925:34;;;20640:12:0;;20671:11;;;;;:21;;20742:18:1;;20671:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;20671:39:0;;;;;;;;-1:-1:-1;;20671:39:0;;;;;;;;;;;;:::i;:::-;;;20667:122;;20778:8;;;20667:122;20761:5;-1:-1:-1;20807:7:0;20803:26;;20818:8;;;20803:26;20638:202;20612:228;-1:-1:-1;;;;;20884:25:0;;20850:12;20884:25;;;:19;:25;;;;;;20865:4;;20884:25;;;:52;;-1:-1:-1;;;;;;20913:23:0;;;;;;:19;:23;;;;;;;;20884:52;20880:99;;;-1:-1:-1;20962:5:0;20880:99;-1:-1:-1;;;;;20989:13:0;;:7;:13;;;;;;;;;;:23;;21006:6;;20989:7;:23;;21006:6;;20989:23;:::i;:::-;;;;-1:-1:-1;21023:22:0;;-1:-1:-1;21049:7:0;21048:55;;21097:6;21048:55;;;21060:34;21070:4;21076:6;21084:3;21089:4;21060:9;:34::i;:::-;21023:80;;21129:14;21114:7;:11;21122:2;-1:-1:-1;;;;;21114:11:0;-1:-1:-1;;;;;21114:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;21174:2;-1:-1:-1;;;;;21159:34:0;21168:4;-1:-1:-1;;;;;21159:34:0;;21178:14;21159:34;;;;391:25:1;;379:2;364:18;;245:177;21159:34:0;;;;;;;;21209:16;;;;;;;21204:293;;21242:28;21261:4;21267:2;21242:18;:28::i;:::-;21290:16;;;;;;;21289:17;:41;;;;;21310:20;21321:4;21327:2;21310:10;:20::i;:::-;21289:77;;;;-1:-1:-1;;;;;;21335:31:0;;;;;;:25;:31;;;;;;;;21334:32;21289:77;:111;;;;-1:-1:-1;;;;;;21371:29:0;;;;;;:25;:29;;;;;;;;21370:30;21289:111;:121;;;;;21405:5;21404:6;21289:121;21285:201;;;21431:39;;-1:-1:-1;;;21431:39:0;;21302:2:1;21431:39:0;;;21284:21:1;21341:2;21321:18;;;21314:30;21380:31;21360:18;;;21353:59;21429:18;;21431:39:0;21100:353:1;21285:201:0;-1:-1:-1;21514:4:0;;20476:1050;-1:-1:-1;;;;;;;;20476:1050:0:o;15389:446::-;15490:6;;15458:4;;-1:-1:-1;;;;;15482:14:0;;;15490:6;;15482:14;;;;:43;;-1:-1:-1;15519:6:0;;-1:-1:-1;;;;;15513:12:0;;;15519:6;;15513:12;;15482:43;:79;;;;-1:-1:-1;15555:6:0;;-1:-1:-1;;;;;15555:6:0;15542:9;:19;;15482:79;:118;;;;-1:-1:-1;;;;;;15579:21:0;;;;;;:17;:21;;;;;;;;15578:22;15482:118;:159;;;;-1:-1:-1;;;;;;15618:23:0;;;;;;:17;:23;;;;;;;;15617:24;15482:159;:186;;;;-1:-1:-1;;;;;;15658:10:0;;5205:42;15658:10;;15482:186;:219;;;;-1:-1:-1;;;;;;15685:16:0;;;;15482:219;:257;;;;-1:-1:-1;;;;;;15718:21:0;;15734:4;15718:21;;15482:257;:302;;;;-1:-1:-1;15772:11:0;;-1:-1:-1;;;;;15756:28:0;;;15772:11;;;;;15756:28;;15482:302;:345;;;;-1:-1:-1;15815:11:0;;-1:-1:-1;;;;;15801:26:0;;;15815:11;;;;;15801:26;;15482:345;15475:352;15389:446;-1:-1:-1;;;15389:446:0:o;17511:761::-;5795:6;:13;;-1:-1:-1;;;;5795:13:0;-1:-1:-1;;;5795:13:0;;;17618:4:::1;5795:13:::0;17598:26;;;:11:::1;:26;::::0;;;;;;;17633:9:::1;::::0;-1:-1:-1;;;;;17633:9:0::1;17598:46:::0;;;;;;;;-1:-1:-1;;17598:67:0::1;17594:166;;17702:4;17682:26;::::0;;;:11:::1;:26;::::0;;;;;;;17717:9:::1;::::0;-1:-1:-1;;;;;17717:9:0::1;17682:46:::0;;;;;;;-1:-1:-1;;17682:66:0;;17594:166:::1;17804:16;::::0;;17818:1:::1;17804:16:::0;;;;;::::1;::::0;;17780:21:::1;::::0;17804:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17804:16:0::1;17780:40;;17849:4;17831;17836:1;17831:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17831:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17875:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;17875:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;17831:7;;17875:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17865:4;17870:1;17865:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17865:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;17908:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;17908:199:0;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;17983:20;;17908:9:::1;::::0;18034:4;;18061::::1;::::0;18081:15:::1;::::0;17908:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;17904:246;;18132:7;;;17904:246;18198:15;::::0;:66:::1;::::0;18162:12:::1;::::0;-1:-1:-1;;;;;18198:15:0::1;::::0;18254:5:::1;::::0;18226:21:::1;::::0;18162:12;18198:66;18162:12;18198:66;18226:21;18198:15;18254:5;18198:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5819:1:0::1;-1:-1:-1::0;5831:6:0;:14;;-1:-1:-1;;;;5831:14:0;;;17511:761::o;21534:804::-;21622:7;21642:18;21675:3;21671:205;;;-1:-1:-1;21708:9:0;:16;;;21671:205;;;21746:4;21742:134;;;-1:-1:-1;21780:9:0;:17;;;;;;21742:134;;;-1:-1:-1;21843:9:0;:21;;;;;;21742:134;21890:10;21904:1;21890:15;21886:39;;21916:6;21909:13;;;;;21886:39;21947:11;;;;;-1:-1:-1;;;;;21947:11:0;21971:4;21939:37;:110;;;;;21994:13;22011:1;21994:18;:54;;;;22029:13;22046:2;22029:19;21994:54;21935:138;;;-1:-1:-1;22066:4:0;21935:138;22083:17;5101:5;22103:19;22112:10;22103:6;:19;:::i;:::-;:38;;;;:::i;:::-;22083:58;-1:-1:-1;22156:13:0;;22152:141;;22202:4;22186:7;:22;;;;;;;;;;:35;;22212:9;;22186:7;:35;;22212:9;;22186:35;:::i;:::-;;;;-1:-1:-1;;22241:40:0;;391:25:1;;;22264:4:0;;-1:-1:-1;;;;;22241:40:0;;;;;379:2:1;364:18;22241:40:0;;;;;;;22152:141;22312:18;22321:9;22312:6;:18;:::i;18280:563::-;18363:16;;;;;;;18362:17;18354:65;;;;-1:-1:-1;;;18354:65:0;;23157:2:1;18354:65:0;;;23139:21:1;23196:2;23176:18;;;23169:30;23235:34;23215:18;;;23208:62;-1:-1:-1;;;23286:18:1;;;23279:33;23329:19;;18354:65:0;22955:399:1;18354:65:0;18435:20;18446:4;18452:2;18435:10;:20::i;:::-;18434:21;:37;;;;-1:-1:-1;18465:6:0;;-1:-1:-1;;;;;18459:12:0;;;18465:6;;18459:12;18434:37;18430:406;;;-1:-1:-1;;;;;18488:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;18488:30:0;;;18514:4;18488:30;;;;;;18533:19;:25;;;;;:32;;;;;;;;;;18580:16;:23;;-1:-1:-1;;18580:23:0;18488:30;18580:23;;;;;18630:11;;;;18618:114;;18676:11;:40;;-1:-1:-1;;;;;;18676:40:0;18710:4;18676:40;;;;;18618:114;18746:19;:26;;-1:-1:-1;;;;18746:26:0;-1:-1:-1;;;18746:26:0;;;18792:32;;-1:-1:-1;2721:41:1;;18792:32:0;;2709:2:1;2694:18;18792:32:0;;;;;;;18280:563;;:::o;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2102:154::-;-1:-1:-1;;;;;2181:5:1;2177:54;2170:5;2167:65;2157:93;;2246:1;2243;2236:12;2261:315;2329:6;2337;2390:2;2378:9;2369:7;2365:23;2361:32;2358:52;;;2406:1;2403;2396:12;2358:52;2445:9;2432:23;2464:31;2489:5;2464:31;:::i;:::-;2514:5;2566:2;2551:18;;;;2538:32;;-1:-1:-1;;;2261:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:382::-;6620:6;6628;6681:2;6669:9;6660:7;6656:23;6652:32;6649:52;;;6697:1;6694;6687:12;6649:52;6736:9;6723:23;6755:31;6780:5;6755:31;:::i;7189:241::-;7245:6;7298:2;7286:9;7277:7;7273:23;7269:32;7266:52;;;7314:1;7311;7304:12;7266:52;7353:9;7340:23;7372:28;7394:5;7372:28;:::i;7435:385::-;7521:6;7529;7537;7545;7598:3;7586:9;7577:7;7573:23;7569:33;7566:53;;;7615:1;7612;7605:12;7566:53;-1:-1:-1;;7638:23:1;;;7708:2;7693:18;;7680:32;;-1:-1:-1;7759:2:1;7744:18;;7731:32;;7810:2;7795:18;7782:32;;-1:-1:-1;7435:385:1;-1:-1:-1;7435:385:1:o;8784:127::-;8845:10;8840:3;8836:20;8833:1;8826:31;8876:4;8873:1;8866:15;8900:4;8897:1;8890:15;8916:422;9005:1;9048:5;9005:1;9062:270;9083:7;9073:8;9070:21;9062:270;;;9142:4;9138:1;9134:6;9130:17;9124:4;9121:27;9118:53;;;9151:18;;:::i;:::-;9201:7;9191:8;9187:22;9184:55;;;9221:16;;;;9184:55;9300:22;;;;9260:15;;;;9062:270;;;9066:3;8916:422;;;;;:::o;9343:806::-;9392:5;9422:8;9412:80;;-1:-1:-1;9463:1:1;9477:5;;9412:80;9511:4;9501:76;;-1:-1:-1;9548:1:1;9562:5;;9501:76;9593:4;9611:1;9606:59;;;;9679:1;9674:130;;;;9586:218;;9606:59;9636:1;9627:10;;9650:5;;;9674:130;9711:3;9701:8;9698:17;9695:43;;;9718:18;;:::i;:::-;-1:-1:-1;;9774:1:1;9760:16;;9789:5;;9586:218;;9888:2;9878:8;9875:16;9869:3;9863:4;9860:13;9856:36;9850:2;9840:8;9837:16;9832:2;9826:4;9823:12;9819:35;9816:77;9813:159;;;-1:-1:-1;9925:19:1;;;9957:5;;9813:159;10004:34;10029:8;10023:4;10004:34;:::i;:::-;10074:6;10070:1;10066:6;10062:19;10053:7;10050:32;10047:58;;;10085:18;;:::i;:::-;10123:20;;9343:806;-1:-1:-1;;;9343:806:1:o;10154:140::-;10212:5;10241:47;10282:4;10272:8;10268:19;10262:4;10241:47;:::i;10299:168::-;10372:9;;;10403;;10420:15;;;10414:22;;10400:37;10390:71;;10441:18;;:::i;10472:128::-;10539:9;;;10560:11;;;10557:37;;;10574:18;;:::i;10955:127::-;11016:10;11011:3;11007:20;11004:1;10997:31;11047:4;11044:1;11037:15;11071:4;11068:1;11061:15;11434:197;11472:3;11500:6;11541:2;11534:5;11530:14;11568:2;11559:7;11556:15;11553:41;;11574:18;;:::i;:::-;11623:1;11610:15;;11434:197;-1:-1:-1;;;11434:197:1:o;15442:245::-;15521:6;15529;15582:2;15570:9;15561:7;15557:23;15553:32;15550:52;;;15598:1;15595;15588:12;15550:52;-1:-1:-1;;15621:16:1;;15677:2;15662:18;;;15656:25;15621:16;;15656:25;;-1:-1:-1;15442:245:1:o;16048:184::-;16118:6;16171:2;16159:9;16150:7;16146:23;16142:32;16139:52;;;16187:1;16184;16177:12;16139:52;-1:-1:-1;16210:16:1;;16048:184;-1:-1:-1;16048:184:1:o;16539:245::-;16606:6;16659:2;16647:9;16638:7;16634:23;16630:32;16627:52;;;16675:1;16672;16665:12;16627:52;16707:9;16701:16;16726:28;16748:5;16726:28;:::i;16789:217::-;16829:1;16855;16845:132;;16899:10;16894:3;16890:20;16887:1;16880:31;16934:4;16931:1;16924:15;16962:4;16959:1;16952:15;16845:132;-1:-1:-1;16991:9:1;;16789:217::o;20970:125::-;21035:9;;;21056:10;;;21053:36;;;21069:18;;:::i;21458:251::-;21528:6;21581:2;21569:9;21560:7;21556:23;21552:32;21549:52;;;21597:1;21594;21587:12;21549:52;21629:9;21623:16;21648:31;21673:5;21648:31;:::i;21714:1026::-;21976:4;22024:3;22013:9;22009:19;22055:6;22044:9;22037:25;22081:2;22119:6;22114:2;22103:9;22099:18;22092:34;22162:3;22157:2;22146:9;22142:18;22135:31;22186:6;22221;22215:13;22252:6;22244;22237:22;22290:3;22279:9;22275:19;22268:26;;22329:2;22321:6;22317:15;22303:29;;22350:1;22360:218;22374:6;22371:1;22368:13;22360:218;;;22439:13;;-1:-1:-1;;;;;22435:62:1;22423:75;;22553:15;;;;22518:12;;;;22396:1;22389:9;22360:218;;;-1:-1:-1;;;;;;;22634:55:1;;;;22629:2;22614:18;;22607:83;-1:-1:-1;;;22721:3:1;22706:19;22699:35;22595:3;21714:1026;-1:-1:-1;;;21714:1026:1:o

Swarm Source

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