ETH Price: $3,382.17 (-1.89%)
Gas: 4 Gwei

Token

Snibbu (SNIBBU)
 

Overview

Max Total Supply

100,000,000 SNIBBU

Holders

89

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
etf2024.eth
Balance
134,076.137901195 SNIBBU

Value
$0.00
0x3d1f79595e1d0c79463dc6079f311506dbafba15
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:
alpha

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-08
*/

// Website : https://snibbutoken.com/
// Telegram : https://t.me/SnibbuEntryPortal
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.11;

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function 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 IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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 liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract alpha is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    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 _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniper;

    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;   

    bool private isInitialized = false;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply;

    string private _name;
    string private _symbol;
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    uint antiDumpLT;
    }

    taxes public Fees = taxes(
    {buyFee: 0, sellFee: 0, transferFee: 0, antiDumpLT: 0});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    uint maxAntiDump;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 500, maxSell: 500, maxTransfer: 500, maxAntiDump: 500});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint operations;
    uint developer;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 100, burn: 100, operations: 100, developer: 100});
//==========================
    // Anti-Dump
    struct jeetParameters {
    uint longTerm;
    bool enabled;
    }
    jeetParameters public terms = jeetParameters(
    {longTerm: 24 hours, enabled: false});
    // Anti-Dump
//==========================
    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNICORN ROUTER 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
    // PANCAKE ROUTER 0x10ED43C718714eb63d5aA57B78B54704E256024E


    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable public _operationsWallet = payable(0x000000000000000000000000000000000000dEaD);
    address payable public _developerWallet = payable(0x000000000000000000000000000000000000dEaD);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent;
    uint256 private maxTxDivisor;
    uint256 private _maxTxAmount;
    
    uint256 private maxWalletPercent;
    uint256 private maxWalletDivisor;
    uint256 private _maxWalletSize;

    uint256 private swapThreshold;
    uint256 private swapAmount;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller != owner.");
        _;
    }
    
    constructor () payable {
        _owner = msg.sender;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    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 (_operationsWallet == payable(_owner))
            _operationsWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }


    function intializeContract() external onlyOwner {
        require(!isInitialized, "Contract already initialized.");
        require(_liqAddStatus == 0);
        
        _name = "Snibbu";
        _symbol = "SNIBBU";

        startingSupply = 100_000_000;
        _decimals = 9;
        _tTotal = startingSupply * 10**_decimals;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        maxTxPercent = 1; // Max Transaction Amount = 0.5%
        maxTxDivisor = 100;
        _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
        
        maxWalletPercent = 15; //Max Wallet = 2%
        maxWalletDivisor = 1000;
        _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
        
        swapThreshold = (_tTotal * 5) / 10_000;
        swapAmount = (_tTotal * 5) / 1_000;

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


        approve(_routerAddress, type(uint256).max);
        approve(owner(), type(uint256).max);


        isInitialized = true;
        _tOwned[owner()] = _tTotal;
        _approve(owner(), _routerAddress, _tTotal);
        emit Transfer(address(0), owner(), _tTotal);
    }

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");

        _liqAddStatus = rInitializer;
        snipeBlockAmt = 0;
    }

    function setRatios(uint _liquidity, uint _operations, uint _developer, uint _burn) external onlyOwner {
        require ( (_liquidity+_operations+_developer+_burn) == 1100, "!(1K)");
        Ratios.liquidity = _liquidity;
        Ratios.operations = _operations;
        Ratios.developer = _developer;
        Ratios.burn = _burn;}

    function antiDumpParameters(bool _enabled, uint _longTerm) external onlyOwner {
        require(_longTerm <= 24);
        terms.longTerm = _longTerm * 1 hours;
        terms.enabled = _enabled;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee, uint _antiDumpLT) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer
                && _antiDumpLT <= maxFees.maxAntiDump,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
         Fees.antiDumpLT= _antiDumpLT;

    }

    function setMaxTxPercent(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint percent, uint divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 300), "Must be above 0.33~% of total supply.");
        _maxWalletSize = check;

    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable operationsWallet, address payable developerWallet) external onlyOwner {
        _operationsWallet = payable(operationsWallet);
        _developerWallet = payable(developerWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(isExcludedFromMaxWalletRestrictions[from] || isExcludedFromMaxWalletRestrictions[to])) {
                if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                }
                if(to != _routerAddress && !lpPairs[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                }

            }
            
        }

        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.operations + Ratios.developer == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operations + Ratios.developer) ) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operations + Ratios.developer) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            bool _devHappy = true;
            // bool _operationFeeSuccess = true;
            // uint _ethForOperations = (((currentBalance - liquidityBalance) * Ratios.developer) / (Ratios.operations + Ratios.developer));
        
            // (_operationFeeSuccess,) = payable(_operationsWallet).call{value: _ethForOperations}("");
            (_devHappy,) = payable(_developerWallet).call{value: address(this).balance}(""); 
            // uint _devSplit = address(this).balance / 2;
            // (_devHappy,) = payable(_developerWallet).call{value: _devSplit}(""); 
           

        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 0) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniper(from) || isSniper(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniper[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //A
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            if (terms.enabled){
                if (firstBuy[from] + terms.longTerm > block.timestamp) {currentFee = Fees.antiDumpLT;}

                else {currentFee = Fees.sellFee;}
            }
            else {currentFee=Fees.sellFee;}
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (1)) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.operations + Ratios.developer ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"},{"internalType":"uint256","name":"antiDumpLT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"operations","type":"uint256"},{"internalType":"uint256","name":"developer","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_operationsWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_longTerm","type":"uint256"}],"name":"antiDumpParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"internalType":"uint256","name":"maxAntiDump","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","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":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_operations","type":"uint256"},{"internalType":"uint256","name":"_developer","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","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":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"},{"internalType":"uint256","name":"_antiDumpLT","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"operationsWallet","type":"address"},{"internalType":"address payable","name":"developerWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"uint256","name":"longTerm","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

600060038190556009805460ff19908116909155600b805482169055608082905260a082905260c082905260e082905260108290556011829055601282905560138290556101f461010081905261012081905261014081905261016081905260148190556015819055601681905560175560646101808190526101a08190526101c08190526101e081905260188190556019819055601a819055601b556102406040526201518061020081905261022092909252601c91909155601d80549091169055601e54620000d59060ff16600a62000267565b600d54620000e491906200027f565b601f55602380546001600160a01b031990811661dead90811790925560248054600161ff0160a01b031916909217909155602d805461ffff191660011790556000602e819055602f8190556030819055603181905560328190556033819055805490911633179055620002a1565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001a95781600019048211156200018d576200018d62000152565b808516156200019b57918102915b93841c93908002906200016d565b509250929050565b600082620001c25750600162000261565b81620001d15750600062000261565b8160018114620001ea5760028114620001f55762000215565b600191505062000261565b60ff84111562000209576200020962000152565b50506001821b62000261565b5060208310610133831016604e8410600b84101617156200023a575081810a62000261565b62000246838362000168565b80600019048211156200025d576200025d62000152565b0290505b92915050565b60006200027860ff841683620001b1565b9392505050565b60008160001904831182151516156200029c576200029c62000152565b500290565b61319c80620002b16000396000f3fe60806040526004361061028c5760003560e01c8063715018a61161015a578063b5f7bfa2116100c1578063dd62ed3e1161007a578063dd62ed3e14610844578063e5b55c6b1461088a578063e79d4160146108aa578063e83e34b1146108c0578063eafb5a3c146108e3578063fb78680d1461090357600080fd5b8063b5f7bfa21461076e578063bc1323e814610791578063c49b9a80146107b1578063ce8b79c9146107d1578063d3f6a157146107f1578063d50256251461081157600080fd5b80638da5cb5b116101135780638da5cb5b1461067557806395d89b41146106c3578063a12a7d61146106d8578063a13ce2c6146106f8578063a457c2d71461072e578063a9059cbb1461074e57600080fd5b8063715018a61461060b5780637ed57c8b1461062057806380c581d11461063557806381c6f11b14610655578063893d20e8146106755780638c7321ad1461069357600080fd5b806339509351116101fe5780634fb2e45d116101b75780634fb2e45d1461051d5780634fbee1931461053d57806350a8e01614610576578063571ac8b014610595578063590ffdce146105b557806370a08231146105d557600080fd5b806339509351146104395780633aaa36e6146104595780633da878061461049c5780633f3cf56c146104bc578063452ed4f1146104dc5780634a74bb02146104fc57600080fd5b80631793fe4e116102505780631793fe4e1461037657806318160ddd1461039857806323b872dd146103b757806326003957146103d7578063313ce567146103f7578063355b74de1461041957600080fd5b806303fd2a451461029857806306fdde03146102cb5780630758d924146102ed578063095ea7b31461030d5780630f3a325f1461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d757600080fd5b506102e0610923565b6040516102c29190612bbb565b3480156102f957600080fd5b506021546102ae906001600160a01b031681565b34801561031957600080fd5b5061032d610328366004612c28565b6109b5565b60405190151581526020016102c2565b34801561034957600080fd5b5061032d610358366004612c54565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561038257600080fd5b50610396610391366004612c71565b6109cc565b005b3480156103a457600080fd5b50601f545b6040519081526020016102c2565b3480156103c357600080fd5b5061032d6103d2366004612ca3565b610a6b565b3480156103e357600080fd5b506103966103f2366004612ce4565b610ae3565b34801561040357600080fd5b50601e5460405160ff90911681526020016102c2565b34801561042557600080fd5b50610396610434366004612d1b565b610b60565b34801561044557600080fd5b5061032d610454366004612c28565b610bbb565b34801561046557600080fd5b5060105460115460125460135461047c9392919084565b6040805194855260208501939093529183015260608201526080016102c2565b3480156104a857600080fd5b506023546102ae906001600160a01b031681565b3480156104c857600080fd5b506103966104d7366004612ce4565b610bf7565b3480156104e857600080fd5b506022546102ae906001600160a01b031681565b34801561050857600080fd5b5060245461032d90600160a81b900460ff1681565b34801561052957600080fd5b50610396610538366004612c54565b610c74565b34801561054957600080fd5b5061032d610558366004612c54565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561058257600080fd5b50602d5461032d90610100900460ff1681565b3480156105a157600080fd5b5061032d6105b0366004612c54565b610dfc565b3480156105c157600080fd5b506103966105d0366004612d37565b610e0a565b3480156105e157600080fd5b506103a96105f0366004612c54565b6001600160a01b031660009081526001602052604090205490565b34801561061757600080fd5b50610396610e5f565b34801561062c57600080fd5b50610396610ede565b34801561064157600080fd5b50610396610650366004612d37565b611423565b34801561066157600080fd5b50610396610670366004612d6c565b6114fc565b34801561068157600080fd5b506000546001600160a01b03166102ae565b34801561069f57600080fd5b5061032d6106ae366004612c54565b60076020526000908152604090205460ff1681565b3480156106cf57600080fd5b506102e0611569565b3480156106e457600080fd5b506103966106f3366004612c71565b611578565b34801561070457600080fd5b506103a9610713366004612c54565b6001600160a01b03166000908152600c602052604090205490565b34801561073a57600080fd5b5061032d610749366004612c28565b611632565b34801561075a57600080fd5b5061032d610769366004612c28565b611669565b34801561077a57600080fd5b50601854601954601a54601b5461047c9392919084565b34801561079d57600080fd5b506103966107ac366004612c54565b611680565b3480156107bd57600080fd5b506103966107cc366004612d85565b6116cb565b3480156107dd57600080fd5b506103966107ec366004612c54565b61174d565b3480156107fd57600080fd5b5061039661080c366004612da0565b61179b565b34801561081d57600080fd5b50601c54601d5461082f919060ff1682565b604080519283529015156020830152016102c2565b34801561085057600080fd5b506103a961085f366004612da0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561089657600080fd5b506024546102ae906001600160a01b031681565b3480156108b657600080fd5b506103a960335481565b3480156108cc57600080fd5b5060145460155460165460175461047c9392919084565b3480156108ef57600080fd5b506103966108fe366004612c54565b6117f3565b34801561090f57600080fd5b5061039661091e366004612c71565b611b1f565b6060600e805461093290612dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461095e90612dd9565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905090565b60006109c2338484611b88565b5060015b92915050565b6000546001600160a01b031633146109ff5760405162461bcd60e51b81526004016109f690612e14565b60405180910390fd5b8082610a0b8587612e54565b610a159190612e54565b610a1f9190612e54565b61044c14610a575760405162461bcd60e51b81526020600482015260056024820152642128314b2960d81b60448201526064016109f6565b601893909355601a91909155601b55601955565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ad0576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aca908490612e6c565b90915550505b610adb848484611c81565b949350505050565b6000546001600160a01b03163314610b0d5760405162461bcd60e51b81526004016109f690612e14565b60008183601f54610b1e9190612e83565b610b289190612ea2565b905061012c601f54610b3a9190612ea2565b811015610b595760405162461bcd60e51b81526004016109f690612ec4565b602a555050565b6000546001600160a01b03163314610b8a5760405162461bcd60e51b81526004016109f690612e14565b6018811115610b9857600080fd5b610ba481610e10612e83565b601c5550601d805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109c2918590610bf2908690612e54565b611b88565b6000546001600160a01b03163314610c215760405162461bcd60e51b81526004016109f690612e14565b60008183601f54610c329190612e83565b610c3c9190612ea2565b905061012c601f54610c4e9190612ea2565b811015610c6d5760405162461bcd60e51b81526004016109f690612ec4565b6027555050565b6000546001600160a01b03163314610c9e5760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b038116610cc45760405162461bcd60e51b81526004016109f690612f09565b6001600160a01b03811661dead1415610cef5760405162461bcd60e51b81526004016109f690612f09565b60008054610d08916001600160a01b0390911690610e0a565b610d13816001610e0a565b6000546023546001600160a01b0390811691161415610d4857602380546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610db157600080546001600160a01b03168082526001602052604090912054610daf91908390611c81565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006109c6826000196109b5565b6000546001600160a01b03163314610e345760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e895760405162461bcd60e51b81526004016109f690612e14565b60008054610ea2916001600160a01b0390911690610e0a565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f085760405162461bcd60e51b81526004016109f690612e14565b600b5460ff1615610f5b5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e00000060448201526064016109f6565b602e5415610f6857600080fd5b60408051808201909152600680825265536e6962627560d01b6020909201918252610f9591600e91612b22565b5060408051808201909152600680825265534e4942425560d01b6020909201918252610fc391600f91612b22565b506305f5e100600d55601e805460ff19166009908117909155610fe790600a61304a565b600d54610ff49190612e83565b601f55602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190613059565b6001600160a01b031663c9c65396602160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190613059565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613059565b602280546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060215490951684529390915290206000199055602581905560646026819055601f5490916111e991612e83565b6111f39190612ea2565b602755600f60288190556103e86029819055601f54909161121391612e83565b61121d9190612ea2565b602a55601f5461271090611232906005612e83565b61123c9190612ea2565b602b55601f546103e890611251906005612e83565b61125b9190612ea2565b602c556001600660006112766000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906112fd6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611345737a250d5630b4cf539739df2c5dacb4c659f2488d6000196109b5565b5061136361135b6000546001600160a01b031690565b6000196109b5565b50600b805460ff19166001908117909155601f5490600061138c6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556113d86113bb6000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601f54611b88565b6000546001600160a01b03166001600160a01b031660006001600160a01b0316600080516020613147833981519152601f5460405161141991815260200190565b60405180910390a3565b6000546001600160a01b0316331461144d5760405162461bcd60e51b81526004016109f690612e14565b8061147457506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156114d05762093a806003544261148e9190612e6c565b116114d05760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016109f6565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146115265760405162461bcd60e51b81526004016109f690612e14565b602e541561155f5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016109f6565b602e556000603255565b6060600f805461093290612dd9565b6000546001600160a01b031633146115a25760405162461bcd60e51b81526004016109f690612e14565b60145484118015906115b657506015548311155b80156115c457506016548211155b80156115d257506017548111155b61161e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109f6565b601093909355601191909155601255601355565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109c2918590610bf2908690612e6c565b6000611676338484611c81565b5060019392505050565b6000546001600160a01b031633146116aa5760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116f55760405162461bcd60e51b81526004016109f690612e14565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061174290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117775760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117c55760405162461bcd60e51b81526004016109f690612e14565b602380546001600160a01b039384166001600160a01b03199182161790915560248054929093169116179055565b6000546001600160a01b0316331461181d5760405162461bcd60e51b81526004016109f690612e14565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190613059565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f79190613059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190613059565b90506001600160a01b038116611adf57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d89190613059565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190613059565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190613059565b602280546001600160a01b0319166001600160a01b0392909216919091179055611afb565b602280546001600160a01b0319166001600160a01b0383161790555b50602180546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b495760405162461bcd60e51b81526004016109f690612e14565b8284601f54611b589190612e83565b611b629190612ea2565b602b55601f548190611b75908490612e83565b611b7f9190612ea2565b602c5550505050565b6001600160a01b038316611bd45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109f6565b6001600160a01b038216611c205760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109f6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611cd05760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109f6565b6001600160a01b038316611d1d5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109f6565b60008211611d585760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016109f6565b611d6284846120cc565b15611fb85760095460ff1615611e19576001600160a01b03841660009081526002602052604090205460ff1615611dd8576001600160a01b0383166000908152600a6020526040902054431415611db857600080fd5b6001600160a01b0383166000908152600a60205260409020439055611e19565b6001600160a01b0384166000908152600a6020526040902054431415611dfd57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611e5857506001600160a01b03831660009081526007602052604090205460ff165b611fb8576001600160a01b03841660009081526002602052604090205460ff1680611e9b57506001600160a01b03831660009081526002602052604090205460ff165b15611ef257602754821115611ef25760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016109f6565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590611f3857506001600160a01b03831660009081526002602052604090205460ff16155b15611fb857602a5482611f60856001600160a01b031660009081526001602052604090205490565b611f6a9190612e54565b1115611fb85760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016109f6565b6001600160a01b038316600090815260016020526040902054611ff1576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061203357506001600160a01b03841660009081526006602052604090205460ff165b1561203c575060005b6001600160a01b03841660009081526002602052604090205460ff16156120b757602454600160a01b900460ff161580156120805750602454600160a81b900460ff165b156120b75730600090815260016020526040902054602b5481106120b557602c5481106120ac5750602c545b6120b58161218a565b505b6120c38585858461233b565b95945050505050565b600080546001600160a01b038481169116148015906120f957506000546001600160a01b03838116911614155b801561211e57506001600160a01b03821660009081526005602052604090205460ff16155b801561214357506001600160a01b03831660009081526005602052604090205460ff16155b801561215a57506001600160a01b03821661dead14155b801561216e57506001600160a01b03821615155b801561218357506001600160a01b0383163014155b9392505050565b6024805460ff60a01b1916600160a01b179055601b54601a546018546121b09190612e54565b6121ba9190612e54565b6121c35761232b565b601b54601a5460185460009260029290916121de9190612e54565b6121e89190612e54565b6018546121f59085612e83565b6121ff9190612ea2565b6122099190612ea2565b905060006122178284612e6c565b9050612222816125e8565b601b54601a54601854479260009260029261223d9190612e54565b6122479190612e54565b6018546122549085612e83565b61225e9190612ea2565b6122689190612ea2565b905083156122bc5761227a8482612729565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006122c88587612e6c565b1115612326576024546040516001916001600160a01b0316904790600081818185875af1925050503d806000811461231c576040519150601f19603f3d011682016040523d82523d6000602084013e612321565b606091505b505050505b505050505b506024805460ff60a01b19169055565b602d5460009060ff1615612527576001600160a01b03851660009081526008602052604090205460ff168061238857506001600160a01b03841660009081526008602052604090205460ff165b156123c85760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016109f6565b602d54610100900460ff1661245e576123e185856127c3565b602d54610100900460ff161580156123fe57506123fe85856120cc565b156124595760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109f6565b612527565b6000602f5411801561248857506001600160a01b03851660009081526002602052604090205460ff165b8015612499575061249985856120cc565b1561252757603254602f546124ae9043612e6c565b1015612527576001600160a01b0384166000908152600860205260408120805460ff1916600117905560338054916124e583613076565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b0385166000908152600160205260408120805485929061254f908490612e6c565b909155506000905082612562578361256d565b61256d8686866128fe565b6001600160a01b03861660009081526001602052604081208054929350839290919061259a908490612e54565b92505081905550846001600160a01b0316866001600160a01b0316600080516020613147833981519152836040516125d491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261d5761261d613091565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a9190613059565b816001815181106126ad576126ad613091565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b815291169063791ac947906126f39085906000908690309042906004016130a7565b600060405180830381600087803b15801561270d57600080fd5b505af1158015612721573d6000803e3d6000fd5b505050505050565b60215460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612797573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127bc9190613118565b5050505050565b602d54610100900460ff16156128275760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109f6565b61283182826120cc565b15801561284b57506022546001600160a01b038281169116145b156114f8576032541561286c5761286443611388612e54565b602f55612871565b43602f555b6001600160a01b03821660009081526005602052604090819020805460ff19166001908117909155602d805461ff001916610100179055426030556024805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916128f291901515815260200190565b60405180910390a15050565b60225460009081906001600160a01b038581169116141561296357601d5460ff161561295a57601c546001600160a01b0386166000908152600c6020526040902054429161294b91612e54565b111561295a5750601354612987565b50601154612987565b6022546001600160a01b03868116911614156129825750601054612987565b506012545b61299185856120cc565b156129b257602e5415806129a85750602e54600114155b156129b257600080fd5b601b54601a5460185460195460009361271093909290916129d39190612e54565b6129dd9190612e54565b6129e79190612e54565b6019546129f48588612e83565b6129fe9190612e83565b612a089190612ea2565b612a129190612ea2565b9050600081612710612a248588612e83565b612a2e9190612ea2565b612a389190612e6c565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612a7b908490612e54565b90915550503060009081526001602052604081208054839290612a9f908490612e54565b909155505060405182815261dead906001600160a01b038916906000805160206131478339815191529060200160405180910390a360405181815230906001600160a01b038916906000805160206131478339815191529060200160405180910390a381612b0d8287612e6c565b612b179190612e6c565b979650505050505050565b828054612b2e90612dd9565b90600052602060002090601f016020900481019282612b505760008555612b96565b82601f10612b6957805160ff1916838001178555612b96565b82800160010185558215612b96579182015b82811115612b96578251825591602001919060010190612b7b565b50612ba2929150612ba6565b5090565b5b80821115612ba25760008155600101612ba7565b600060208083528351808285015260005b81811015612be857858101830151858201604001528201612bcc565b81811115612bfa576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2557600080fd5b50565b60008060408385031215612c3b57600080fd5b8235612c4681612c10565b946020939093013593505050565b600060208284031215612c6657600080fd5b813561218381612c10565b60008060008060808587031215612c8757600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612cb857600080fd5b8335612cc381612c10565b92506020840135612cd381612c10565b929592945050506040919091013590565b60008060408385031215612cf757600080fd5b50508035926020909101359150565b80358015158114612d1657600080fd5b919050565b60008060408385031215612d2e57600080fd5b612c4683612d06565b60008060408385031215612d4a57600080fd5b8235612d5581612c10565b9150612d6360208401612d06565b90509250929050565b600060208284031215612d7e57600080fd5b5035919050565b600060208284031215612d9757600080fd5b61218382612d06565b60008060408385031215612db357600080fd5b8235612dbe81612c10565b91506020830135612dce81612c10565b809150509250929050565b600181811c90821680612ded57607f821691505b60208210811415612e0e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612e6757612e67612e3e565b500190565b600082821015612e7e57612e7e612e3e565b500390565b6000816000190483118215151615612e9d57612e9d612e3e565b500290565b600082612ebf57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600181815b80851115612fa1578160001904821115612f8757612f87612e3e565b80851615612f9457918102915b93841c9390800290612f6b565b509250929050565b600082612fb8575060016109c6565b81612fc5575060006109c6565b8160018114612fdb5760028114612fe557613001565b60019150506109c6565b60ff841115612ff657612ff6612e3e565b50506001821b6109c6565b5060208310610133831016604e8410600b8410161715613024575081810a6109c6565b61302e8383612f66565b806000190482111561304257613042612e3e565b029392505050565b600061218360ff841683612fa9565b60006020828403121561306b57600080fd5b815161218381612c10565b600060001982141561308a5761308a612e3e565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130f75784516001600160a01b0316835293830193918301916001016130d2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561312d57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f4b52cbdcda9cfde0b3c097d65dec04843b9760ad742874c9eecc9bdd81ff96e64736f6c634300080b0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063715018a61161015a578063b5f7bfa2116100c1578063dd62ed3e1161007a578063dd62ed3e14610844578063e5b55c6b1461088a578063e79d4160146108aa578063e83e34b1146108c0578063eafb5a3c146108e3578063fb78680d1461090357600080fd5b8063b5f7bfa21461076e578063bc1323e814610791578063c49b9a80146107b1578063ce8b79c9146107d1578063d3f6a157146107f1578063d50256251461081157600080fd5b80638da5cb5b116101135780638da5cb5b1461067557806395d89b41146106c3578063a12a7d61146106d8578063a13ce2c6146106f8578063a457c2d71461072e578063a9059cbb1461074e57600080fd5b8063715018a61461060b5780637ed57c8b1461062057806380c581d11461063557806381c6f11b14610655578063893d20e8146106755780638c7321ad1461069357600080fd5b806339509351116101fe5780634fb2e45d116101b75780634fb2e45d1461051d5780634fbee1931461053d57806350a8e01614610576578063571ac8b014610595578063590ffdce146105b557806370a08231146105d557600080fd5b806339509351146104395780633aaa36e6146104595780633da878061461049c5780633f3cf56c146104bc578063452ed4f1146104dc5780634a74bb02146104fc57600080fd5b80631793fe4e116102505780631793fe4e1461037657806318160ddd1461039857806323b872dd146103b757806326003957146103d7578063313ce567146103f7578063355b74de1461041957600080fd5b806303fd2a451461029857806306fdde03146102cb5780630758d924146102ed578063095ea7b31461030d5780630f3a325f1461033d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d757600080fd5b506102e0610923565b6040516102c29190612bbb565b3480156102f957600080fd5b506021546102ae906001600160a01b031681565b34801561031957600080fd5b5061032d610328366004612c28565b6109b5565b60405190151581526020016102c2565b34801561034957600080fd5b5061032d610358366004612c54565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561038257600080fd5b50610396610391366004612c71565b6109cc565b005b3480156103a457600080fd5b50601f545b6040519081526020016102c2565b3480156103c357600080fd5b5061032d6103d2366004612ca3565b610a6b565b3480156103e357600080fd5b506103966103f2366004612ce4565b610ae3565b34801561040357600080fd5b50601e5460405160ff90911681526020016102c2565b34801561042557600080fd5b50610396610434366004612d1b565b610b60565b34801561044557600080fd5b5061032d610454366004612c28565b610bbb565b34801561046557600080fd5b5060105460115460125460135461047c9392919084565b6040805194855260208501939093529183015260608201526080016102c2565b3480156104a857600080fd5b506023546102ae906001600160a01b031681565b3480156104c857600080fd5b506103966104d7366004612ce4565b610bf7565b3480156104e857600080fd5b506022546102ae906001600160a01b031681565b34801561050857600080fd5b5060245461032d90600160a81b900460ff1681565b34801561052957600080fd5b50610396610538366004612c54565b610c74565b34801561054957600080fd5b5061032d610558366004612c54565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561058257600080fd5b50602d5461032d90610100900460ff1681565b3480156105a157600080fd5b5061032d6105b0366004612c54565b610dfc565b3480156105c157600080fd5b506103966105d0366004612d37565b610e0a565b3480156105e157600080fd5b506103a96105f0366004612c54565b6001600160a01b031660009081526001602052604090205490565b34801561061757600080fd5b50610396610e5f565b34801561062c57600080fd5b50610396610ede565b34801561064157600080fd5b50610396610650366004612d37565b611423565b34801561066157600080fd5b50610396610670366004612d6c565b6114fc565b34801561068157600080fd5b506000546001600160a01b03166102ae565b34801561069f57600080fd5b5061032d6106ae366004612c54565b60076020526000908152604090205460ff1681565b3480156106cf57600080fd5b506102e0611569565b3480156106e457600080fd5b506103966106f3366004612c71565b611578565b34801561070457600080fd5b506103a9610713366004612c54565b6001600160a01b03166000908152600c602052604090205490565b34801561073a57600080fd5b5061032d610749366004612c28565b611632565b34801561075a57600080fd5b5061032d610769366004612c28565b611669565b34801561077a57600080fd5b50601854601954601a54601b5461047c9392919084565b34801561079d57600080fd5b506103966107ac366004612c54565b611680565b3480156107bd57600080fd5b506103966107cc366004612d85565b6116cb565b3480156107dd57600080fd5b506103966107ec366004612c54565b61174d565b3480156107fd57600080fd5b5061039661080c366004612da0565b61179b565b34801561081d57600080fd5b50601c54601d5461082f919060ff1682565b604080519283529015156020830152016102c2565b34801561085057600080fd5b506103a961085f366004612da0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561089657600080fd5b506024546102ae906001600160a01b031681565b3480156108b657600080fd5b506103a960335481565b3480156108cc57600080fd5b5060145460155460165460175461047c9392919084565b3480156108ef57600080fd5b506103966108fe366004612c54565b6117f3565b34801561090f57600080fd5b5061039661091e366004612c71565b611b1f565b6060600e805461093290612dd9565b80601f016020809104026020016040519081016040528092919081815260200182805461095e90612dd9565b80156109ab5780601f10610980576101008083540402835291602001916109ab565b820191906000526020600020905b81548152906001019060200180831161098e57829003601f168201915b5050505050905090565b60006109c2338484611b88565b5060015b92915050565b6000546001600160a01b031633146109ff5760405162461bcd60e51b81526004016109f690612e14565b60405180910390fd5b8082610a0b8587612e54565b610a159190612e54565b610a1f9190612e54565b61044c14610a575760405162461bcd60e51b81526020600482015260056024820152642128314b2960d81b60448201526064016109f6565b601893909355601a91909155601b55601955565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610ad0576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aca908490612e6c565b90915550505b610adb848484611c81565b949350505050565b6000546001600160a01b03163314610b0d5760405162461bcd60e51b81526004016109f690612e14565b60008183601f54610b1e9190612e83565b610b289190612ea2565b905061012c601f54610b3a9190612ea2565b811015610b595760405162461bcd60e51b81526004016109f690612ec4565b602a555050565b6000546001600160a01b03163314610b8a5760405162461bcd60e51b81526004016109f690612e14565b6018811115610b9857600080fd5b610ba481610e10612e83565b601c5550601d805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109c2918590610bf2908690612e54565b611b88565b6000546001600160a01b03163314610c215760405162461bcd60e51b81526004016109f690612e14565b60008183601f54610c329190612e83565b610c3c9190612ea2565b905061012c601f54610c4e9190612ea2565b811015610c6d5760405162461bcd60e51b81526004016109f690612ec4565b6027555050565b6000546001600160a01b03163314610c9e5760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b038116610cc45760405162461bcd60e51b81526004016109f690612f09565b6001600160a01b03811661dead1415610cef5760405162461bcd60e51b81526004016109f690612f09565b60008054610d08916001600160a01b0390911690610e0a565b610d13816001610e0a565b6000546023546001600160a01b0390811691161415610d4857602380546001600160a01b0319166001600160a01b0383161790555b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610db157600080546001600160a01b03168082526001602052604090912054610daf91908390611c81565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006109c6826000196109b5565b6000546001600160a01b03163314610e345760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e895760405162461bcd60e51b81526004016109f690612e14565b60008054610ea2916001600160a01b0390911690610e0a565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610f085760405162461bcd60e51b81526004016109f690612e14565b600b5460ff1615610f5b5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e00000060448201526064016109f6565b602e5415610f6857600080fd5b60408051808201909152600680825265536e6962627560d01b6020909201918252610f9591600e91612b22565b5060408051808201909152600680825265534e4942425560d01b6020909201918252610fc391600f91612b22565b506305f5e100600d55601e805460ff19166009908117909155610fe790600a61304a565b600d54610ff49190612e83565b601f55602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190613059565b6001600160a01b031663c9c65396602160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111049190613059565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015611150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111749190613059565b602280546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060215490951684529390915290206000199055602581905560646026819055601f5490916111e991612e83565b6111f39190612ea2565b602755600f60288190556103e86029819055601f54909161121391612e83565b61121d9190612ea2565b602a55601f5461271090611232906005612e83565b61123c9190612ea2565b602b55601f546103e890611251906005612e83565b61125b9190612ea2565b602c556001600660006112766000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252812080548316600190811790915561dead82527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805490931681179092556005906112fd6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611345737a250d5630b4cf539739df2c5dacb4c659f2488d6000196109b5565b5061136361135b6000546001600160a01b031690565b6000196109b5565b50600b805460ff19166001908117909155601f5490600061138c6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020556113d86113bb6000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d601f54611b88565b6000546001600160a01b03166001600160a01b031660006001600160a01b0316600080516020613147833981519152601f5460405161141991815260200190565b60405180910390a3565b6000546001600160a01b0316331461144d5760405162461bcd60e51b81526004016109f690612e14565b8061147457506001600160a01b03166000908152600260205260409020805460ff19169055565b600354156114d05762093a806003544261148e9190612e6c565b116114d05760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b60448201526064016109f6565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146115265760405162461bcd60e51b81526004016109f690612e14565b602e541561155f5760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b60448201526064016109f6565b602e556000603255565b6060600f805461093290612dd9565b6000546001600160a01b031633146115a25760405162461bcd60e51b81526004016109f690612e14565b60145484118015906115b657506015548311155b80156115c457506016548211155b80156115d257506017548111155b61161e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e00000000000000000060448201526064016109f6565b601093909355601191909155601255601355565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109c2918590610bf2908690612e6c565b6000611676338484611c81565b5060019392505050565b6000546001600160a01b031633146116aa5760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116f55760405162461bcd60e51b81526004016109f690612e14565b60248054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061174290831515815260200190565b60405180910390a150565b6000546001600160a01b031633146117775760405162461bcd60e51b81526004016109f690612e14565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000546001600160a01b031633146117c55760405162461bcd60e51b81526004016109f690612e14565b602380546001600160a01b039384166001600160a01b03199182161790915560248054929093169116179055565b6000546001600160a01b0316331461181d5760405162461bcd60e51b81526004016109f690612e14565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190613059565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f79190613059565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190613059565b90506001600160a01b038116611adf57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d89190613059565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190613059565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aba9190613059565b602280546001600160a01b0319166001600160a01b0392909216919091179055611afb565b602280546001600160a01b0319166001600160a01b0383161790555b50602180546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b03163314611b495760405162461bcd60e51b81526004016109f690612e14565b8284601f54611b589190612e83565b611b629190612ea2565b602b55601f548190611b75908490612e83565b611b7f9190612ea2565b602c5550505050565b6001600160a01b038316611bd45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109f6565b6001600160a01b038216611c205760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016109f6565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611cd05760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109f6565b6001600160a01b038316611d1d5760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b60448201526064016109f6565b60008211611d585760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b60448201526064016109f6565b611d6284846120cc565b15611fb85760095460ff1615611e19576001600160a01b03841660009081526002602052604090205460ff1615611dd8576001600160a01b0383166000908152600a6020526040902054431415611db857600080fd5b6001600160a01b0383166000908152600a60205260409020439055611e19565b6001600160a01b0384166000908152600a6020526040902054431415611dfd57600080fd5b6001600160a01b0384166000908152600a602052604090204390555b6001600160a01b03841660009081526007602052604090205460ff1680611e5857506001600160a01b03831660009081526007602052604090205460ff165b611fb8576001600160a01b03841660009081526002602052604090205460ff1680611e9b57506001600160a01b03831660009081526002602052604090205460ff165b15611ef257602754821115611ef25760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e000000000000000060448201526064016109f6565b6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14801590611f3857506001600160a01b03831660009081526002602052604090205460ff16155b15611fb857602a5482611f60856001600160a01b031660009081526001602052604090205490565b611f6a9190612e54565b1115611fb85760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016109f6565b6001600160a01b038316600090815260016020526040902054611ff1576001600160a01b0383166000908152600c602052604090204290555b6001600160a01b03841660009081526006602052604090205460019060ff168061203357506001600160a01b03841660009081526006602052604090205460ff165b1561203c575060005b6001600160a01b03841660009081526002602052604090205460ff16156120b757602454600160a01b900460ff161580156120805750602454600160a81b900460ff165b156120b75730600090815260016020526040902054602b5481106120b557602c5481106120ac5750602c545b6120b58161218a565b505b6120c38585858461233b565b95945050505050565b600080546001600160a01b038481169116148015906120f957506000546001600160a01b03838116911614155b801561211e57506001600160a01b03821660009081526005602052604090205460ff16155b801561214357506001600160a01b03831660009081526005602052604090205460ff16155b801561215a57506001600160a01b03821661dead14155b801561216e57506001600160a01b03821615155b801561218357506001600160a01b0383163014155b9392505050565b6024805460ff60a01b1916600160a01b179055601b54601a546018546121b09190612e54565b6121ba9190612e54565b6121c35761232b565b601b54601a5460185460009260029290916121de9190612e54565b6121e89190612e54565b6018546121f59085612e83565b6121ff9190612ea2565b6122099190612ea2565b905060006122178284612e6c565b9050612222816125e8565b601b54601a54601854479260009260029261223d9190612e54565b6122479190612e54565b6018546122549085612e83565b61225e9190612ea2565b6122689190612ea2565b905083156122bc5761227a8482612729565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60006122c88587612e6c565b1115612326576024546040516001916001600160a01b0316904790600081818185875af1925050503d806000811461231c576040519150601f19603f3d011682016040523d82523d6000602084013e612321565b606091505b505050505b505050505b506024805460ff60a01b19169055565b602d5460009060ff1615612527576001600160a01b03851660009081526008602052604090205460ff168061238857506001600160a01b03841660009081526008602052604090205460ff165b156123c85760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b60448201526064016109f6565b602d54610100900460ff1661245e576123e185856127c3565b602d54610100900460ff161580156123fe57506123fe85856120cc565b156124595760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016109f6565b612527565b6000602f5411801561248857506001600160a01b03851660009081526002602052604090205460ff165b8015612499575061249985856120cc565b1561252757603254602f546124ae9043612e6c565b1015612527576001600160a01b0384166000908152600860205260408120805460ff1916600117905560338054916124e583613076565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b0385166000908152600160205260408120805485929061254f908490612e6c565b909155506000905082612562578361256d565b61256d8686866128fe565b6001600160a01b03861660009081526001602052604081208054929350839290919061259a908490612e54565b92505081905550846001600160a01b0316866001600160a01b0316600080516020613147833981519152836040516125d491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261d5761261d613091565b6001600160a01b03928316602091820292909201810191909152602154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a9190613059565b816001815181106126ad576126ad613091565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b815291169063791ac947906126f39085906000908690309042906004016130a7565b600060405180830381600087803b15801561270d57600080fd5b505af1158015612721573d6000803e3d6000fd5b505050505050565b60215460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612797573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127bc9190613118565b5050505050565b602d54610100900460ff16156128275760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016109f6565b61283182826120cc565b15801561284b57506022546001600160a01b038281169116145b156114f8576032541561286c5761286443611388612e54565b602f55612871565b43602f555b6001600160a01b03821660009081526005602052604090819020805460ff19166001908117909155602d805461ff001916610100179055426030556024805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916128f291901515815260200190565b60405180910390a15050565b60225460009081906001600160a01b038581169116141561296357601d5460ff161561295a57601c546001600160a01b0386166000908152600c6020526040902054429161294b91612e54565b111561295a5750601354612987565b50601154612987565b6022546001600160a01b03868116911614156129825750601054612987565b506012545b61299185856120cc565b156129b257602e5415806129a85750602e54600114155b156129b257600080fd5b601b54601a5460185460195460009361271093909290916129d39190612e54565b6129dd9190612e54565b6129e79190612e54565b6019546129f48588612e83565b6129fe9190612e83565b612a089190612ea2565b612a129190612ea2565b9050600081612710612a248588612e83565b612a2e9190612ea2565b612a389190612e6c565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549293508492909190612a7b908490612e54565b90915550503060009081526001602052604081208054839290612a9f908490612e54565b909155505060405182815261dead906001600160a01b038916906000805160206131478339815191529060200160405180910390a360405181815230906001600160a01b038916906000805160206131478339815191529060200160405180910390a381612b0d8287612e6c565b612b179190612e6c565b979650505050505050565b828054612b2e90612dd9565b90600052602060002090601f016020900481019282612b505760008555612b96565b82601f10612b6957805160ff1916838001178555612b96565b82800160010185558215612b96579182015b82811115612b96578251825591602001919060010190612b7b565b50612ba2929150612ba6565b5090565b5b80821115612ba25760008155600101612ba7565b600060208083528351808285015260005b81811015612be857858101830151858201604001528201612bcc565b81811115612bfa576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2557600080fd5b50565b60008060408385031215612c3b57600080fd5b8235612c4681612c10565b946020939093013593505050565b600060208284031215612c6657600080fd5b813561218381612c10565b60008060008060808587031215612c8757600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612cb857600080fd5b8335612cc381612c10565b92506020840135612cd381612c10565b929592945050506040919091013590565b60008060408385031215612cf757600080fd5b50508035926020909101359150565b80358015158114612d1657600080fd5b919050565b60008060408385031215612d2e57600080fd5b612c4683612d06565b60008060408385031215612d4a57600080fd5b8235612d5581612c10565b9150612d6360208401612d06565b90509250929050565b600060208284031215612d7e57600080fd5b5035919050565b600060208284031215612d9757600080fd5b61218382612d06565b60008060408385031215612db357600080fd5b8235612dbe81612c10565b91506020830135612dce81612c10565b809150509250929050565b600181811c90821680612ded57607f821691505b60208210811415612e0e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f21b0b63632b910109e9037bbb732b91760811b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612e6757612e67612e3e565b500190565b600082821015612e7e57612e7e612e3e565b500390565b6000816000190483118215151615612e9d57612e9d612e3e565b500290565b600082612ebf57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f4d7573742062652061626f766520302e33337e25206f6620746f74616c2073756040820152643838363c9760d91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600181815b80851115612fa1578160001904821115612f8757612f87612e3e565b80851615612f9457918102915b93841c9390800290612f6b565b509250929050565b600082612fb8575060016109c6565b81612fc5575060006109c6565b8160018114612fdb5760028114612fe557613001565b60019150506109c6565b60ff841115612ff657612ff6612e3e565b50506001821b6109c6565b5060208310610133831016604e8410600b8410161715613024575081810a6109c6565b61302e8383612f66565b806000190482111561304257613042612e3e565b029392505050565b600061218360ff841683612fa9565b60006020828403121561306b57600080fd5b815161218381612c10565b600060001982141561308a5761308a612e3e565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130f75784516001600160a01b0316835293830193918301916001016130d2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561312d57600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f4b52cbdcda9cfde0b3c097d65dec04843b9760ad742874c9eecc9bdd81ff96e64736f6c634300080b0033

Deployed Bytecode Sourcemap

3721:21828:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6230:73;;;;;;;;;;;;6261:42;6230:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6230:73:0;;;;;;;;10283:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5925:35::-;;;;;;;;;;-1:-1:-1;5925:35:0;;;;-1:-1:-1;;;;;5925:35:0;;;10896:161;;;;;;;;;;-1:-1:-1;10896:161:0;;;;;:::i;:::-;;:::i;:::-;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;10896:161:0;1514:187:1;15469:106:0;;;;;;;;;;-1:-1:-1;15469:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;15549:18:0;15525:4;15549:18;;;:9;:18;;;;;;;;;15469:106;15779:336;;;;;;;;;;-1:-1:-1;15779:336:0;;;;;:::i;:::-;;:::i;:::-;;10018:83;;;;;;;;;;-1:-1:-1;10091:7:0;;10018:83;;;2494:25:1;;;2482:2;2467:18;10018:83:0;2348:177:1;11629:306:0;;;;;;;;;;-1:-1:-1;11629:306:0;;;;;:::i;:::-;;:::i;17108:257::-;;;;;;;;;;-1:-1:-1;17108:257:0;;;;;:::i;:::-;;:::i;10107:80::-;;;;;;;;;;-1:-1:-1;10175:9:0;;10107:80;;10175:9;;;;3386:36:1;;3374:2;3359:18;10107:80:0;3244:184:1;16123:197:0;;;;;;;;;;-1:-1:-1;16123:197:0;;;;;:::i;:::-;;:::i;11943:215::-;;;;;;;;;;-1:-1:-1;11943:215:0;;;;;:::i;:::-;;:::i;4760:87::-;;;;;;;;;;-1:-1:-1;4760:87:0;;;;;;;;;;;;;;;;;;;4082:25:1;;;4138:2;4123:18;;4116:34;;;;4166:18;;;4159:34;4224:2;4209:18;;4202:34;4069:3;4054:19;4760:87:0;3851:391:1;6376:94:0;;;;;;;;;;-1:-1:-1;6376:94:0;;;;-1:-1:-1;;;;;6376:94:0;;;16848:252;;;;;;;;;;-1:-1:-1;16848:252:0;;;;;:::i;:::-;;:::i;5967:21::-;;;;;;;;;;-1:-1:-1;5967:21:0;;;;-1:-1:-1;;;;;5967:21:0;;;6611:41;;;;;;;;;;-1:-1:-1;6611:41:0;;;;-1:-1:-1;;;6611:41:0;;;;;;8693:763;;;;;;;;;;-1:-1:-1;8693:763:0;;;;;:::i;:::-;;:::i;12399:125::-;;;;;;;;;;-1:-1:-1;12399:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;12488:28:0;12464:4;12488:28;;;:19;:28;;;;;;;;;12399:125;7007:36;;;;;;;;;;-1:-1:-1;7007:36:0;;;;;;;;;;;11382:120;;;;;;;;;;-1:-1:-1;11382:120:0;;;;;:::i;:::-;;:::i;14985:134::-;;;;;;;;;;-1:-1:-1;14985:134:0;;;;;:::i;:::-;;:::i;10596:117::-;;;;;;;;;;-1:-1:-1;10596:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10689:16:0;10662:7;10689:16;;;:7;:16;;;;;;;10596:117;9464:195;;;;;;;;;;;;;:::i;13465:1512::-;;;;;;;;;;;;;:::i;13045:410::-;;;;;;;;;;-1:-1:-1;13045:410:0;;;;;:::i;:::-;;:::i;15583:188::-;;;;;;;;;;-1:-1:-1;15583:188:0;;;;;:::i;:::-;;:::i;10369:80::-;;;;;;;;;;-1:-1:-1;10421:7:0;8671:6;-1:-1:-1;;;;;8671:6:0;10369:80;;4184:68;;;;;;;;;;-1:-1:-1;4184:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10193:84;;;;;;;;;;;;;:::i;16328:512::-;;;;;;;;;;-1:-1:-1;16328:512:0;;;;;:::i;:::-;;:::i;11510:111::-;;;;;;;;;;-1:-1:-1;11510:111:0;;;;;:::i;:::-;-1:-1:-1;;;;;11596:17:0;11569:7;11596:17;;;:8;:17;;;;;;;11510:111;12166:225;;;;;;;;;;-1:-1:-1;12166:225:0;;;;;:::i;:::-;;:::i;10721:167::-;;;;;;;;;;-1:-1:-1;10721:167:0;;;;;:::i;:::-;;:::i;5302:114::-;;;;;;;;;;-1:-1:-1;5302:114:0;;;;;;;;;;;;;;;15295:166;;;;;;;;;;-1:-1:-1;15295:166:0;;;;;:::i;:::-;;:::i;17902:171::-;;;;;;;;;;-1:-1:-1;17902:171:0;;;;;:::i;:::-;;:::i;15129:158::-;;;;;;;;;;-1:-1:-1;15129:158:0;;;;;:::i;:::-;;:::i;17670:224::-;;;;;;;;;;-1:-1:-1;17670:224:0;;;;;:::i;:::-;;:::i;5546:88::-;;;;;;;;;;-1:-1:-1;5546:88:0;;;;;;;;;;;;;;;5738:25:1;;;5806:14;;5799:22;5794:2;5779:18;;5772:50;5711:18;5546:88:0;5570:258:1;10455:133:0;;;;;;;;;;-1:-1:-1;10455:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10557:19:0;;;10539:7;10557:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10455:133;6477:93;;;;;;;;;;-1:-1:-1;6477:93:0;;;;-1:-1:-1;;;;;6477:93:0;;;7281:32;;;;;;;;;;;;;;;;5014:101;;;;;;;;;;-1:-1:-1;5014:101:0;;;;;;;;;;;;;;;12536:501;;;;;;;;;;-1:-1:-1;12536:501:0;;;;;:::i;:::-;;:::i;17373:289::-;;;;;;;;;;-1:-1:-1;17373:289:0;;;;;:::i;:::-;;:::i;10283:80::-;10331:13;10355:5;10348:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10283:80;:::o;10896:161::-;10971:4;10988:39;273:10;11011:7;11020:6;10988:8;:39::i;:::-;-1:-1:-1;11045:4:0;10896:161;;;;;:::o;15779:336::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;;;;;;;;;15937:5;15926:10;15903:22:::1;15914:11:::0;15903:10;:22:::1;:::i;:::-;:33;;;;:::i;:::-;:39;;;;:::i;:::-;15947:4;15902:49;15892:69;;;::::0;-1:-1:-1;;;15892:69:0;;7423:2:1;15892:69:0::1;::::0;::::1;7405:21:1::0;7462:1;7442:18;;;7435:29;-1:-1:-1;;;7480:18:1;;;7473:35;7525:18;;15892:69:0::1;7221:328:1::0;15892:69:0::1;15972:6;:29:::0;;;;16012:17;:31;;;;16054:16;:29;16094:11;:19;15779:336::o;11629:306::-;-1:-1:-1;;;;;11750:19:0;;11729:4;11750:19;;;:11;:19;;;;;;;;11770:10;11750:31;;;;;;;;-1:-1:-1;;11750:52:0;11746:126;;-1:-1:-1;;;;;11819:19:0;;;;;;:11;:19;;;;;;;;11839:10;11819:31;;;;;;;:41;;11854:6;;11819:19;:41;;11854:6;;11819:41;:::i;:::-;;;;-1:-1:-1;;11746:126:0;11891:36;11901:6;11909:9;11920:6;11891:9;:36::i;:::-;11884:43;11629:306;-1:-1:-1;;;;11629:306:0:o;17108:257::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;17192:13:::1;17230:7;17219;17209;;:17;;;;:::i;:::-;17208:29;;;;:::i;:::-;17192:45;;17276:3;17266:7;;:13;;;;:::i;:::-;17256:5;:24;;17248:74;;;;-1:-1:-1::0;;;17248:74:0::1;;;;;;;:::i;:::-;17333:14;:22:::0;-1:-1:-1;;17108:257:0:o;16123:197::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;16233:2:::1;16220:9;:15;;16212:24;;;::::0;::::1;;16264:19;:9:::0;16276:7:::1;16264:19;:::i;:::-;16247:5;:36:::0;-1:-1:-1;16294:13:0;:24;;-1:-1:-1;;16294:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16123:197::o;11943:215::-;273:10;12031:4;12080:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12080:34:0;;;;;;;;;;12031:4;;12048:80;;12071:7;;12080:47;;12117:10;;12080:47;:::i;:::-;12048:8;:80::i;16848:252::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;16931:13:::1;16969:7;16958;16948;;:17;;;;:::i;:::-;16947:29;;;;:::i;:::-;16931:45;;17015:3;17005:7;;:13;;;;:::i;:::-;16995:5;:24;;16987:74;;;;-1:-1:-1::0;;;16987:74:0::1;;;;;;;:::i;:::-;17072:12;:20:::0;-1:-1:-1;;16848:252:0:o;8693:763::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8774:22:0;::::1;8766:96;;;;-1:-1:-1::0;;;8766:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8881:16:0;::::1;6261:42;8881:16;;8873:90;;;;-1:-1:-1::0;;;8873:90:0::1;;;;;;;:::i;:::-;8994:6;::::0;;8974:34:::1;::::0;-1:-1:-1;;;;;8994:6:0;;::::1;::::0;8974:19:::1;:34::i;:::-;9019:35;9039:8;9049:4;9019:19;:35::i;:::-;9108:6;::::0;9079:17:::1;::::0;-1:-1:-1;;;;;9079:17:0;;::::1;9108:6:::0;::::1;9079:36;9075:92;;;9130:17;:37:::0;;-1:-1:-1;;;;;;9130:37:0::1;-1:-1:-1::0;;;;;9130:37:0;::::1;;::::0;;9075:92:::1;9230:6;::::0;;-1:-1:-1;;;;;9230:6:0;;::::1;10689:16:::0;;:7;:16;;;;;;;;;9188:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;9261:6;;;;::::1;10689:16:::0;;;;;;9251:21;9248:99:::1;;9299:6;::::0;;-1:-1:-1;;;;;9299:6:0::1;10689:16:::0;;;:7;:16;;;;;;;9289:46:::1;::::0;9299:6;9307:8;;9289:9:::1;:46::i;:::-;;9248:99;9367:6;:17:::0;;-1:-1:-1;;;;;;9367:17:0::1;-1:-1:-1::0;;;;;9367:17:0;::::1;::::0;;::::1;::::0;;9400:38:::1;::::0;9367:17;;;;9400:38:::1;::::0;9367:6;9400:38:::1;8693:763:::0;:::o;11382:120::-;11435:4;11459:35;11467:7;-1:-1:-1;;11459:7:0;:35::i;14985:134::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15073:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15073:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14985:134::o;9464:195::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;9551:6:::1;::::0;;9531:34:::1;::::0;-1:-1:-1;;;;;9551:6:0;;::::1;::::0;9531:19:::1;:34::i;:::-;9593:1;9576:19:::0;;-1:-1:-1;;;;;;9576:19:0::1;::::0;;9611:40:::1;::::0;9593:1;;9611:40:::1;::::0;9593:1;;9611:40:::1;9464:195::o:0;13465:1512::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;13533:13:::1;::::0;::::1;;13532:14;13524:56;;;::::0;-1:-1:-1;;;13524:56:0;;9117:2:1;13524:56:0::1;::::0;::::1;9099:21:1::0;9156:2;9136:18;;;9129:30;9195:31;9175:18;;;9168:59;9244:18;;13524:56:0::1;8915:353:1::0;13524:56:0::1;13599:13;::::0;:18;13591:27:::1;;;::::0;::::1;;13639:16;::::0;;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;13639:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;:5:::1;::::0;:16:::1;:::i;:::-;-1:-1:-1::0;13666:18:0::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;13666:18:0::1;::::0;;::::1;::::0;;;::::1;::::0;:7:::1;::::0;:18:::1;:::i;:::-;-1:-1:-1::0;13714:11:0::1;13697:14;:28:::0;13736:9:::1;:13:::0;;-1:-1:-1;;13736:13:0::1;13748:1;13736:13:::0;;::::1;::::0;;;13787::::1;::::0;:2:::1;:13;:::i;:::-;13770:14;;:30;;;;:::i;:::-;13760:7;:40:::0;13813:9:::1;:46:::0;;-1:-1:-1;;;;;;13813:46:0::1;6175:42;13813:46:::0;;::::1;::::0;;;13897:19:::1;::::0;;-1:-1:-1;;;13897:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;6175:42;13897:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13879:49:0::1;;13929:9;;;;;;;;;-1:-1:-1::0;;;;;13929:9:0::1;-1:-1:-1::0;;;;;13929:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13879:82;::::0;-1:-1:-1;;;;;;13879:82:0::1;::::0;;;;;;-1:-1:-1;;;;;11142:15:1;;;13879:82:0::1;::::0;::::1;11124:34:1::0;13955:4:0::1;11174:18:1::0;;;11167:43;11059:18;;13879:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13870:6;:91:::0;;-1:-1:-1;;;;;;13870:91:0::1;-1:-1:-1::0;;;;;13870:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13972:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;13972:22:0::1;-1:-1:-1::0;13972:22:0;;::::1;::::0;;;14025:4:::1;14005:26:::0;;:11:::1;:26:::0;;;;;14040:9:::1;::::0;;;::::1;14005:46:::0;;;;;;;;-1:-1:-1;;14005:66:0;;14084:12:::1;:16:::0;;;14159:3:::1;14144:12;:18:::0;;;14189:7:::1;::::0;14159:3;;14189:22:::1;::::0;::::1;:::i;:::-;14188:39;;;;:::i;:::-;14173:12;:54:::0;14267:2:::1;14248:16;:21:::0;;;14317:4:::1;14298:16;:23:::0;;;14350:7:::1;::::0;14317:4;;14350:26:::1;::::0;::::1;:::i;:::-;14349:47;;;;:::i;:::-;14332:14;:64:::0;14434:7:::1;::::0;14449:6:::1;::::0;14434:11:::1;::::0;14444:1:::1;14434:11;:::i;:::-;14433:22;;;;:::i;:::-;14417:13;:38:::0;14480:7:::1;::::0;14495:5:::1;::::0;14480:11:::1;::::0;14490:1:::1;14480:11;:::i;:::-;14479:21;;;;:::i;:::-;14466:10;:34:::0;14544:4:::1;14513:19;:28;14533:7;8644::::0;8671:6;-1:-1:-1;;;;;8671:6:0;;8606:79;14533:7:::1;-1:-1:-1::0;;;;;14513:28:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;14513:28:0;;;:35;;;::::1;;-1:-1:-1::0;;14513:35:0;;::::1;;::::0;;14587:4:::1;14559:34:::0;;:19:::1;:34:::0;;;;;:41;;;::::1;14513:35:::0;14559:41;;::::1;::::0;;;6261:42:::1;14611:25:::0;;;:32;;;;::::1;::::0;::::1;::::0;;;14654:17:::1;::::0;14672:7:::1;8644::::0;8671:6;-1:-1:-1;;;;;8671:6:0;;8606:79;14672:7:::1;-1:-1:-1::0;;;;;14654:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14654:26:0;:33;;-1:-1:-1;;14654:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14702:42:::1;6175;-1:-1:-1::0;;14702:7:0::1;:42::i;:::-;;14755:35;14763:7;8644::::0;8671:6;-1:-1:-1;;;;;8671:6:0;;8606:79;14763:7:::1;-1:-1:-1::0;;14755:7:0::1;:35::i;:::-;-1:-1:-1::0;14805:13:0::1;:20:::0;;-1:-1:-1;;14805:20:0::1;14821:4;14805:20:::0;;::::1;::::0;;;14855:7:::1;::::0;;14805:13:::1;14844:7;8644::::0;8671:6;-1:-1:-1;;;;;8671:6:0;;8606:79;14844:7:::1;-1:-1:-1::0;;;;;14836:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14836:16:0;:26;14873:42:::1;14882:7;8644::::0;8671:6;-1:-1:-1;;;;;8671:6:0;;8606:79;14882:7:::1;6175:42;14907:7;;14873:8;:42::i;:::-;8644:7:::0;8671:6;-1:-1:-1;;;;;8671:6:0;-1:-1:-1;;;;;14931:38:0::1;14948:1;-1:-1:-1::0;;;;;14931:38:0::1;-1:-1:-1::0;;;;;;;;;;;14961:7:0::1;;14931:38;;;;2494:25:1::0;;2482:2;2467:18;;2348:177;14931:38:0::1;;;;;;;;13465:1512::o:0;13045:410::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;13126:16;13122:326:::1;;-1:-1:-1::0;;;;;;13159:13:0::1;13175:5;13159:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;13159:21:0::1;::::0;;13045:410::o;13122:326::-:1;13217:17;::::0;:22;13213:139:::1;;13306:7;13286:17;;13268:15;:35;;;;:::i;:::-;:45;13260:76;;;::::0;-1:-1:-1;;;13260:76:0;;11423:2:1;13260:76:0::1;::::0;::::1;11405:21:1::0;11462:2;11442:18;;;11435:30;-1:-1:-1;;;11481:18:1;;;11474:48;11539:18;;13260:76:0::1;11221:342:1::0;13260:76:0::1;-1:-1:-1::0;;;;;13366:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;13366:20:0::1;13382:4;13366:20;::::0;;13421:15:::1;13401:17;:35:::0;13122:326:::1;13045:410:::0;;:::o;15583:188::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;15665:13:::1;::::0;:18;15656:38:::1;;;::::0;-1:-1:-1;;;15656:38:0;;11770:2:1;15656:38:0::1;::::0;::::1;11752:21:1::0;11809:1;11789:18;;;11782:29;-1:-1:-1;;;11827:18:1;;;11820:36;11873:18;;15656:38:0::1;11568:329:1::0;15656:38:0::1;15707:13;:28:::0;15762:1:::1;15746:13;:17:::0;15583:188::o;10193:84::-;10243:13;10267:7;10260:14;;;;;:::i;16328:512::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;16461:7:::1;:14:::0;16450:25;::::1;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;16508:15:0;;16496:27;::::1;;16450:73;:129;;;;-1:-1:-1::0;16560:19:0;;16544:35;::::1;;16450:129;:184;;;;-1:-1:-1::0;16615:19:0;;16600:34;::::1;;16450:184;16442:237;;;::::0;-1:-1:-1;;;16442:237:0;;12104:2:1;16442:237:0::1;::::0;::::1;12086:21:1::0;12143:2;12123:18;;;12116:30;12182:25;12162:18;;;12155:53;12225:18;;16442:237:0::1;11902:347:1::0;16442:237:0::1;16691:4;:21:::0;;;;16724:12;:23;;;;16759:16;:31;16802:15;:28;16328:512::o;12166:225::-;273:10;12259:4;12308:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12308:34:0;;;;;;;;;;12259:4;;12276:85;;12299:7;;12308:52;;12345:15;;12308:52;:::i;10721:167::-;10799:4;10816:42;273:10;10840:9;10851:6;10816:9;:42::i;:::-;-1:-1:-1;10876:4:0;;10721:167;-1:-1:-1;;;10721:167:0:o;15295:166::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15393:52:0::1;15448:5;15393:52:::0;;;:35:::1;:52;::::0;;;;:60;;-1:-1:-1;;15393:60:0::1;::::0;;15295:166::o;17902:171::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;17979:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;17979:32:0::1;-1:-1:-1::0;;;;17979:32:0;;::::1;;::::0;;18027:38:::1;::::0;::::1;::::0;::::1;::::0;18003:8;1679:14:1;1672:22;1654:41;;1642:2;1627:18;;1514:187;18027:38:0::1;;;;;;;;17902:171:::0;:::o;15129:158::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15220:52:0::1;;::::0;;;:35:::1;:52;::::0;;;;:59;;-1:-1:-1;;15220:59:0::1;15275:4;15220:59;::::0;;15129:158::o;17670:224::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;17787:17:::1;:45:::0;;-1:-1:-1;;;;;17787:45:0;;::::1;-1:-1:-1::0;;;;;;17787:45:0;;::::1;;::::0;;;17843:16:::1;:43:::0;;;;;::::1;::::0;::::1;;::::0;;17670:224::o;12536:501::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;12607:29:::1;12658:9;12607:61;;12679:16;12716:10;-1:-1:-1::0;;;;;12716:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12698:47:0::1;;12754:4;12761:10;-1:-1:-1::0;;;;;12761:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12698:81;::::0;-1:-1:-1;;;;;;12698:81:0::1;::::0;;;;;;-1:-1:-1;;;;;11142:15:1;;;12698:81:0::1;::::0;::::1;11124:34:1::0;11194:15;;11174:18;;;11167:43;11059:18;;12698:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12679:100:::0;-1:-1:-1;;;;;;12794:22:0;::::1;12790:207;;12860:10;-1:-1:-1::0;;;;;12860:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12842:50:0::1;;12901:4;12908:10;-1:-1:-1::0;;;;;12908:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12842:84;::::0;-1:-1:-1;;;;;;12842:84:0::1;::::0;;;;;;-1:-1:-1;;;;;11142:15:1;;;12842:84:0::1;::::0;::::1;11124:34:1::0;11194:15;;11174:18;;;11167:43;11059:18;;12842:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12833:6;:93:::0;;-1:-1:-1;;;;;;12833:93:0::1;-1:-1:-1::0;;;;;12833:93:0;;;::::1;::::0;;;::::1;::::0;;12790:207:::1;;;12968:6;:17:::0;;-1:-1:-1;;;;;;12968:17:0::1;-1:-1:-1::0;;;;;12968:17:0;::::1;;::::0;;12790:207:::1;-1:-1:-1::0;13007:9:0::1;:22:::0;;-1:-1:-1;;;;;;13007:22:0::1;-1:-1:-1::0;;;;;13007:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;12536:501:0:o;17373:289::-;7880:6;;-1:-1:-1;;;;;7880:6:0;273:10;7880:22;7872:51;;;;-1:-1:-1;;;7872:51:0;;;;;;;:::i;:::-;17573:16:::1;17553;17543:7;;:26;;;;:::i;:::-;17542:47;;;;:::i;:::-;17526:13;:63:::0;17614:7:::1;::::0;17641:13;;17614:23:::1;::::0;17624:13;;17614:23:::1;:::i;:::-;17613:41;;;;:::i;:::-;17600:10;:54:::0;-1:-1:-1;;;;17373:289:0:o;11065:309::-;-1:-1:-1;;;;;11159:20:0;;11151:52;;;;-1:-1:-1;;;11151:52:0;;12456:2:1;11151:52:0;;;12438:21:1;12495:2;12475:18;;;12468:30;-1:-1:-1;;;12514:18:1;;;12507:49;12573:18;;11151:52:0;12254:343:1;11151:52:0;-1:-1:-1;;;;;11222:21:0;;11214:53;;;;-1:-1:-1;;;11214:53:0;;12456:2:1;11214:53:0;;;12438:21:1;12495:2;12475:18;;;12468:30;-1:-1:-1;;;12514:18:1;;;12507:49;12573:18;;11214:53:0;12254:343:1;11214:53:0;-1:-1:-1;;;;;11280:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11333:33;;2494:25:1;;;11333:33:0;;2467:18:1;11333:33:0;;;;;;;11065:309;;;:::o;18412:1921::-;18491:4;-1:-1:-1;;;;;18516:18:0;;18508:51;;;;-1:-1:-1;;;18508:51:0;;12804:2:1;18508:51:0;;;12786:21:1;12843:2;12823:18;;;12816:30;-1:-1:-1;;;12862:18:1;;;12855:50;12922:18;;18508:51:0;12602:344:1;18508:51:0;-1:-1:-1;;;;;18578:16:0;;18570:49;;;;-1:-1:-1;;;18570:49:0;;12804:2:1;18570:49:0;;;12786:21:1;12843:2;12823:18;;;12816:30;-1:-1:-1;;;12862:18:1;;;12855:50;12922:18;;18570:49:0;12602:344:1;18570:49:0;18647:1;18638:6;:10;18630:31;;;;-1:-1:-1;;;18630:31:0;;13153:2:1;18630:31:0;;;13135:21:1;13192:1;13172:18;;;13165:29;-1:-1:-1;;;13210:18:1;;;13203:38;13258:18;;18630:31:0;12951:331:1;18630:31:0;18675:20;18686:4;18692:2;18675:10;:20::i;:::-;18672:891;;;18716:15;;;;18712:373;;;-1:-1:-1;;;;;18756:13:0;;;;;;:7;:13;;;;;;;;18752:318;;;-1:-1:-1;;;;;18801:13:0;;;;;;:9;:13;;;;;;18818:12;18801:29;;18793:38;;;;;;-1:-1:-1;;;;;18854:13:0;;;;;;:9;:13;;;;;18870:12;18854:28;;18752:318;;;-1:-1:-1;;;;;18961:15:0;;;;;;:9;:15;;;;;;18980:12;18961:31;;18953:40;;;;;;-1:-1:-1;;;;;19016:15:0;;;;;;:9;:15;;;;;19034:12;19016:30;;18752:318;-1:-1:-1;;;;;19104:41:0;;;;;;:35;:41;;;;;;;;;:84;;-1:-1:-1;;;;;;19149:39:0;;;;;;:35;:39;;;;;;;;19104:84;19099:439;;-1:-1:-1;;;;;19213:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19230:11:0;;;;;;:7;:11;;;;;;;;19213:28;19210:130;;;19279:12;;19269:6;:22;;19261:59;;;;-1:-1:-1;;;19261:59:0;;13489:2:1;19261:59:0;;;13471:21:1;13528:2;13508:18;;;13501:30;13567:26;13547:18;;;13540:54;13611:18;;19261:59:0;13287:348:1;19261:59:0;-1:-1:-1;;;;;19361:20:0;;6175:42;19361:20;;;;:36;;-1:-1:-1;;;;;;19386:11:0;;;;;;:7;:11;;;;;;;;19385:12;19361:36;19358:163;;;19456:14;;19446:6;19430:13;19440:2;-1:-1:-1;;;;;10689:16:0;10662:7;10689:16;;;:7;:16;;;;;;;10596:117;19430:13;:22;;;;:::i;:::-;:40;;19422:79;;;;-1:-1:-1;;;19422:79:0;;13842:2:1;19422:79:0;;;13824:21:1;13881:2;13861:18;;;13854:30;13920:28;13900:18;;;13893:56;13966:18;;19422:79:0;13640:350:1;19422:79:0;-1:-1:-1;;;;;19579:11:0;;;;;;:7;:11;;;;;;19575:79;;-1:-1:-1;;;;;19612:12:0;;;;;;:8;:12;;;;;19627:15;19612:30;;19575:79;-1:-1:-1;;;;;19699:25:0;;19666:12;19699:25;;;:19;:25;;;;;;19681:4;;19699:25;;;:52;;-1:-1:-1;;;;;;19728:23:0;;;;;;:19;:23;;;;;;;;19699:52;19696:98;;;-1:-1:-1;19777:5:0;19696:98;-1:-1:-1;;;;;19810:11:0;;;;;;:7;:11;;;;;;;;19806:457;;;19843:16;;-1:-1:-1;;;19843:16:0;;;;19842:17;:59;;;;-1:-1:-1;19880:21:0;;-1:-1:-1;;;19880:21:0;;;;19842:59;19838:408;;;19985:4;19936:28;10689:16;;;:7;:16;;;;;;20038:13;;20014:37;;20010:221;;20103:10;;20079:20;:34;20076:77;;-1:-1:-1;20140:10:0;;20076:77;20175:36;20190:20;20175:14;:36::i;:::-;19917:329;19838:408;20281:44;20299:4;20305:2;20309:6;20317:7;20281:17;:44::i;:::-;20274:51;18412:1921;-1:-1:-1;;;;;18412:1921:0:o;18081:323::-;18149:4;8671:6;;-1:-1:-1;;;;;18173:15:0;;;8671:6;;18173:15;;;;:45;;-1:-1:-1;8644:7:0;8671:6;-1:-1:-1;;;;;18205:13:0;;;8671:6;;18205:13;;18173:45;:84;;;;-1:-1:-1;;;;;;18236:21:0;;;;;;:17;:21;;;;;;;;18235:22;18173:84;:125;;;;-1:-1:-1;;;;;;18275:23:0;;;;;;:17;:23;;;;;;;;18274:24;18173:125;:152;;;;-1:-1:-1;;;;;;18315:10:0;;6261:42;18315:10;;18173:152;:185;;;;-1:-1:-1;;;;;;18342:16:0;;;;18173:185;:223;;;;-1:-1:-1;;;;;;18375:21:0;;18391:4;18375:21;;18173:223;18166:230;18081:323;-1:-1:-1;;;18081:323:0:o;20341:1461::-;7754:16;:23;;-1:-1:-1;;;;7754:23:0;-1:-1:-1;;;7754:23:0;;;20469:16;;20449:17;;20469:6:::1;20430:16:::0;:36:::1;::::0;20449:17;20430:36:::1;:::i;:::-;:55;;;;:::i;:::-;20426:86;;20505:7;;20426:86;20627:16:::0;;20607:17;;20627:6:::1;20588:16:::0;20522:17:::1;::::0;20649:1:::1;::::0;20627:16;;20588:36:::1;::::0;20607:17;20588:36:::1;:::i;:::-;:55;;;;:::i;:::-;20567:6;:16:::0;20544:39:::1;::::0;:20;:39:::1;:::i;:::-;20543:101;;;;:::i;:::-;20542:108;;;;:::i;:::-;20522:128:::0;-1:-1:-1;20663:20:0::1;20686:32;20522:128:::0;20686:20;:32:::1;:::i;:::-;20663:55;;20729:30;20746:12;20729:16;:30::i;:::-;20935:16:::0;;20915:17;;20935:6:::1;20896:16:::0;20797:21:::1;::::0;20772:22:::1;::::0;20957:1:::1;::::0;20896:36:::1;::::0;20915:17;20896:36:::1;:::i;:::-;:55;;;;:::i;:::-;20875:6;:16:::0;20858:33:::1;::::0;:14;:33:::1;:::i;:::-;20857:95;;;;:::i;:::-;20856:102;;;;:::i;:::-;20829:129:::0;-1:-1:-1;20975:13:0;;20971:161:::1;;21005:41;21018:9;21029:16;21005:12;:41::i;:::-;21066:54;::::0;;14197:25:1;;;14253:2;14238:18;;14231:34;;;14281:18;;;14274:34;;;21066:54:0::1;::::0;14185:2:1;14170:18;21066:54:0::1;;;;;;;20971:161;21181:1;21146:32;21169:9:::0;21146:20;:32:::1;:::i;:::-;:36;21142:653;;;21565:16;::::0;21557:64:::1;::::0;21216:4:::1;::::0;-1:-1:-1;;;;;21565:16:0::1;::::0;21595:21:::1;::::0;21557:64:::1;::::0;;;21595:21;21565:16;21557:64:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;21142:653:0::1;20415:1387;;;;7788:1;-1:-1:-1::0;7800:16:0;:24;;-1:-1:-1;;;;7800:24:0;;;20341:1461::o;23198:1181::-;23319:16;;23298:4;;23319:16;;23315:819;;;-1:-1:-1;;;;;15549:18:0;;15525:4;15549:18;;;:9;:18;;;;;;;;23355:30;;;-1:-1:-1;;;;;;15549:18:0;;15525:4;15549:18;;;:9;:18;;;;;;;;23373:12;23351:97;;;23406:26;;-1:-1:-1;;;23406:26:0;;14731:2:1;23406:26:0;;;14713:21:1;14770:2;14750:18;;;14743:30;-1:-1:-1;;;14789:18:1;;;14782:46;14845:18;;23406:26:0;14529:340:1;23351:97:0;23469:16;;;;;;;23464:659;;23506:28;23525:4;23531:2;23506:18;:28::i;:::-;23558:16;;;;;;;23557:17;:41;;;;;23578:20;23589:4;23595:2;23578:10;:20::i;:::-;23553:137;;;23623:47;;-1:-1:-1;;;23623:47:0;;15076:2:1;23623:47:0;;;15058:21:1;15115:2;15095:18;;;15088:30;15154:34;15134:18;;;15127:62;-1:-1:-1;;;15205:18:1;;;15198:35;15250:19;;23623:47:0;14874:401:1;23553:137:0;23464:659;;;23749:1;23734:12;;:16;:55;;;;-1:-1:-1;;;;;;23776:13:0;;;;;;:7;:13;;;;;;;;23734:55;:101;;;;;23815:20;23826:4;23832:2;23815:10;:20::i;:::-;23730:378;;;23912:13;;23897:12;;23882:27;;:12;:27;:::i;:::-;:43;23878:211;;;-1:-1:-1;;;;;23954:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;23954:20:0;23970:4;23954:20;;;24001:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;24049:16:0;;-1:-1:-1;;;;;178:32:1;;160:51;;24049:16:0;;148:2:1;133:18;24049:16:0;;;;;;;23878:211;-1:-1:-1;;;;;24146:13:0;;;;;;:7;:13;;;;;:23;;24163:6;;24146:13;:23;;24163:6;;24146:23;:::i;:::-;;;;-1:-1:-1;24180:22:0;;-1:-1:-1;24206:7:0;24205:48;;24247:6;24205:48;;;24217:27;24227:4;24233:2;24237:6;24217:9;:27::i;:::-;-1:-1:-1;;;;;24268:11:0;;;;;;:7;:11;;;;;:29;;24180:73;;-1:-1:-1;24180:73:0;;24268:11;;;:29;;24180:73;;24268:29;:::i;:::-;;;;;;;;24330:2;-1:-1:-1;;;;;24315:34:0;24324:4;-1:-1:-1;;;;;24315:34:0;-1:-1:-1;;;;;;;;;;;24334:14:0;24315:34;;;;2494:25:1;;2482:2;2467:18;;2348:177;24315:34:0;;;;;;;;-1:-1:-1;24367:4:0;;23198:1181;-1:-1:-1;;;;;23198:1181:0:o;21810:417::-;21901:16;;;21915:1;21901:16;;;;;;;;21877:21;;21901:16;;;;;;;;;;-1:-1:-1;21901:16:0;21877:40;;21946:4;21928;21933:1;21928:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21928:23:0;;;:7;;;;;;;;;;:23;;;;21972:9;;:16;;;-1:-1:-1;;;21972:16:0;;;;:9;;;;;:14;;:16;;;;;21928:7;;21972:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21962:4;21967:1;21962:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21962:26:0;;;:7;;;;;;;;;:26;22001:9;;:218;;-1:-1:-1;;;22001:218:0;;:9;;;:60;;:218;;22076:11;;22001:9;;22146:4;;22173;;22193:15;;22001:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21866:361;21810:417;:::o;22235:332::-;22316:9;;:243;;-1:-1:-1;;;22316:243:0;;22382:4;22316:243;;;17010:34:1;17060:18;;;17053:34;;;22316:9:0;17103:18:1;;;17096:34;;;17146:18;;;17139:34;6261:42:0;17189:19:1;;;17182:44;22533:15:0;17242:19:1;;;17235:35;-1:-1:-1;;;;;22316:9:0;;;;:25;;22349:9;;16944:19:1;;22316:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22235:332;;:::o;22575:615::-;22657:16;;;;;;;22656:17;22648:65;;;;-1:-1:-1;;;22648:65:0;;17794:2:1;22648:65:0;;;17776:21:1;17833:2;17813:18;;;17806:30;17872:34;17852:18;;;17845:62;-1:-1:-1;;;17923:18:1;;;17916:33;17966:19;;22648:65:0;17592:399:1;22648:65:0;22729:20;22740:4;22746:2;22729:10;:20::i;:::-;22728:21;:37;;;;-1:-1:-1;22759:6:0;;-1:-1:-1;;;;;22753:12:0;;;22759:6;;22753:12;22728:37;22724:459;;;22786:13;;:18;22782:161;;22840:19;:12;22855:4;22840:19;:::i;:::-;22825:12;:34;22782:161;;;22915:12;22900;:27;22782:161;-1:-1:-1;;;;;22959:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;22959:30:0;22985:4;22959:30;;;;;;23004:16;:23;;-1:-1:-1;;23004:23:0;22959:30;23004:23;;;23057:15;23042:12;:30;23089:21;:28;;-1:-1:-1;;;;23089:28:0;-1:-1:-1;;;23089:28:0;;;23137:34;;;;;;1679:14:1;;1672:22;1654:41;;1642:2;1627:18;;1514:187;23137:34:0;;;;;;;;22575:615;;:::o;24387:1159::-;24527:6;;24466:7;;;;-1:-1:-1;;;;;24521:12:0;;;24527:6;;24521:12;24517:399;;;24554:13;;;;24550:236;;;24608:5;:14;-1:-1:-1;;;;;24591:14:0;;24608;24591;;;:8;:14;;;;;;24625:15;;24591:31;;;:::i;:::-;:49;24587:139;;;-1:-1:-1;24656:15:0;;24517:399;;24587:139;-1:-1:-1;24712:12:0;;24517:399;;;24831:6;;-1:-1:-1;;;;;24823:14:0;;;24831:6;;24823:14;24819:97;;;-1:-1:-1;24853:4:0;:11;24819:97;;;-1:-1:-1;24898:16:0;;24819:97;24932:20;24943:4;24949:2;24932:10;:20::i;:::-;24928:142;;;24972:13;;:18;;:42;;;24994:13;;25012:1;24994:20;;24972:42;24968:91;;;25035:8;;;24968:91;25190:16;;25170:17;;25190:6;25151:16;25137:11;;25080:15;;5733:5;;25190:16;;25170:17;;25137:30;;25151:16;25137:30;:::i;:::-;:50;;;;:::i;:::-;:69;;;;:::i;:::-;25121:11;;25099:19;25108:10;25099:6;:19;:::i;:::-;:33;;;;:::i;:::-;25098:110;;;;:::i;:::-;:129;;;;:::i;:::-;25080:147;-1:-1:-1;25238:17:0;25080:147;5733:5;25259:19;25268:10;25259:6;:19;:::i;:::-;:38;;;;:::i;:::-;25258:50;;;;:::i;:::-;6261:42;25319:13;;;;:7;:13;;;:24;;25238:70;;-1:-1:-1;25336:7:0;;25319:13;;;:24;;25336:7;;25319:24;:::i;:::-;;;;-1:-1:-1;;25370:4:0;25354:22;;;;:7;:22;;;;;:37;;25381:9;;25354:22;:37;;25381:9;;25354:37;:::i;:::-;;;;-1:-1:-1;;25407:29:0;;2494:25:1;;;6261:42:0;;-1:-1:-1;;;;;25407:29:0;;;-1:-1:-1;;;;;;;;;;;25407:29:0;2482:2:1;2467:18;25407:29:0;;;;;;;25452:40;;2494:25:1;;;25475:4:0;;-1:-1:-1;;;;;25452:40:0;;;-1:-1:-1;;;;;;;;;;;25452:40:0;2482:2:1;2467:18;25452:40:0;;;;;;;25531:7;25510:18;25519:9;25510:6;:18;:::i;:::-;:28;;;;:::i;:::-;25503:35;24387:1159;-1:-1:-1;;;;;;;24387:1159:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;222:597:1;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;660:6;657:1;654:13;651:91;;;730:1;725:2;716:6;705:9;701:22;697:31;690:42;651:91;-1:-1:-1;803:2:1;782:15;-1:-1:-1;;778:29:1;763:45;;;;810:2;759:54;;222:597;-1:-1:-1;;;222:597:1:o;1058:131::-;-1:-1:-1;;;;;1133:31:1;;1123:42;;1113:70;;1179:1;1176;1169:12;1113:70;1058:131;:::o;1194:315::-;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1378:9;1365:23;1397:31;1422:5;1397:31;:::i;:::-;1447:5;1499:2;1484:18;;;;1471:32;;-1:-1:-1;;;1194:315:1:o;1706:247::-;1765:6;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1873:9;1860:23;1892:31;1917:5;1892:31;:::i;1958:385::-;2044:6;2052;2060;2068;2121:3;2109:9;2100:7;2096:23;2092:33;2089:53;;;2138:1;2135;2128:12;2089:53;-1:-1:-1;;2161:23:1;;;2231:2;2216:18;;2203:32;;-1:-1:-1;2282:2:1;2267:18;;2254:32;;2333:2;2318:18;2305:32;;-1:-1:-1;1958:385:1;-1:-1:-1;1958:385:1:o;2530:456::-;2607:6;2615;2623;2676:2;2664:9;2655:7;2651:23;2647:32;2644:52;;;2692:1;2689;2682:12;2644:52;2731:9;2718:23;2750:31;2775:5;2750:31;:::i;:::-;2800:5;-1:-1:-1;2857:2:1;2842:18;;2829:32;2870:33;2829:32;2870:33;:::i;:::-;2530:456;;2922:7;;-1:-1:-1;;;2976:2:1;2961:18;;;;2948:32;;2530:456::o;2991:248::-;3059:6;3067;3120:2;3108:9;3099:7;3095:23;3091:32;3088:52;;;3136:1;3133;3126:12;3088:52;-1:-1:-1;;3159:23:1;;;3229:2;3214:18;;;3201:32;;-1:-1:-1;2991:248:1:o;3433:160::-;3498:20;;3554:13;;3547:21;3537:32;;3527:60;;3583:1;3580;3573:12;3527:60;3433:160;;;:::o;3598:248::-;3663:6;3671;3724:2;3712:9;3703:7;3699:23;3695:32;3692:52;;;3740:1;3737;3730:12;3692:52;3763:26;3779:9;3763:26;:::i;4471:315::-;4536:6;4544;4597:2;4585:9;4576:7;4572:23;4568:32;4565:52;;;4613:1;4610;4603:12;4565:52;4652:9;4639:23;4671:31;4696:5;4671:31;:::i;:::-;4721:5;-1:-1:-1;4745:35:1;4776:2;4761:18;;4745:35;:::i;:::-;4735:45;;4471:315;;;;;:::o;4791:180::-;4850:6;4903:2;4891:9;4882:7;4878:23;4874:32;4871:52;;;4919:1;4916;4909:12;4871:52;-1:-1:-1;4942:23:1;;4791:180;-1:-1:-1;4791:180:1:o;4976:::-;5032:6;5085:2;5073:9;5064:7;5060:23;5056:32;5053:52;;;5101:1;5098;5091:12;5053:52;5124:26;5140:9;5124:26;:::i;5161:404::-;5245:6;5253;5306:2;5294:9;5285:7;5281:23;5277:32;5274:52;;;5322:1;5319;5312:12;5274:52;5361:9;5348:23;5380:31;5405:5;5380:31;:::i;:::-;5430:5;-1:-1:-1;5487:2:1;5472:18;;5459:32;5500:33;5459:32;5500:33;:::i;:::-;5552:7;5542:17;;;5161:404;;;;;:::o;6226:380::-;6305:1;6301:12;;;;6348;;;6369:61;;6423:4;6415:6;6411:17;6401:27;;6369:61;6476:2;6468:6;6465:14;6445:18;6442:38;6439:161;;;6522:10;6517:3;6513:20;6510:1;6503:31;6557:4;6554:1;6547:15;6585:4;6582:1;6575:15;6439:161;;6226:380;;;:::o;6611:340::-;6813:2;6795:21;;;6852:2;6832:18;;;6825:30;-1:-1:-1;;;6886:2:1;6871:18;;6864:46;6942:2;6927:18;;6611:340::o;6956:127::-;7017:10;7012:3;7008:20;7005:1;6998:31;7048:4;7045:1;7038:15;7072:4;7069:1;7062:15;7088:128;7128:3;7159:1;7155:6;7152:1;7149:13;7146:39;;;7165:18;;:::i;:::-;-1:-1:-1;7201:9:1;;7088:128::o;7554:125::-;7594:4;7622:1;7619;7616:8;7613:34;;;7627:18;;:::i;:::-;-1:-1:-1;7664:9:1;;7554:125::o;7684:168::-;7724:7;7790:1;7786;7782:6;7778:14;7775:1;7772:21;7767:1;7760:9;7753:17;7749:45;7746:71;;;7797:18;;:::i;:::-;-1:-1:-1;7837:9:1;;7684:168::o;7857:217::-;7897:1;7923;7913:132;;7967:10;7962:3;7958:20;7955:1;7948:31;8002:4;7999:1;7992:15;8030:4;8027:1;8020:15;7913:132;-1:-1:-1;8059:9:1;;7857:217::o;8079:401::-;8281:2;8263:21;;;8320:2;8300:18;;;8293:30;8359:34;8354:2;8339:18;;8332:62;-1:-1:-1;;;8425:2:1;8410:18;;8403:35;8470:3;8455:19;;8079:401::o;8485:425::-;8687:2;8669:21;;;8726:2;8706:18;;;8699:30;8765:34;8760:2;8745:18;;8738:62;8836:31;8831:2;8816:18;;8809:59;8900:3;8885:19;;8485:425::o;9273:422::-;9362:1;9405:5;9362:1;9419:270;9440:7;9430:8;9427:21;9419:270;;;9499:4;9495:1;9491:6;9487:17;9481:4;9478:27;9475:53;;;9508:18;;:::i;:::-;9558:7;9548:8;9544:22;9541:55;;;9578:16;;;;9541:55;9657:22;;;;9617:15;;;;9419:270;;;9423:3;9273:422;;;;;:::o;9700:806::-;9749:5;9779:8;9769:80;;-1:-1:-1;9820:1:1;9834:5;;9769:80;9868:4;9858:76;;-1:-1:-1;9905:1:1;9919:5;;9858:76;9950:4;9968:1;9963:59;;;;10036:1;10031:130;;;;9943:218;;9963:59;9993:1;9984:10;;10007:5;;;10031:130;10068:3;10058:8;10055:17;10052:43;;;10075:18;;:::i;:::-;-1:-1:-1;;10131:1:1;10117:16;;10146:5;;9943:218;;10245:2;10235:8;10232:16;10226:3;10220:4;10217:13;10213:36;10207:2;10197:8;10194:16;10189:2;10183:4;10180:12;10176:35;10173:77;10170:159;;;-1:-1:-1;10282:19:1;;;10314:5;;10170:159;10361:34;10386:8;10380:4;10361:34;:::i;:::-;10431:6;10427:1;10423:6;10419:19;10410:7;10407:32;10404:58;;;10442:18;;:::i;:::-;10480:20;;9700:806;-1:-1:-1;;;9700:806:1:o;10511:140::-;10569:5;10598:47;10639:4;10629:8;10625:19;10619:4;10598:47;:::i;10656:251::-;10726:6;10779:2;10767:9;10758:7;10754:23;10750:32;10747:52;;;10795:1;10792;10785:12;10747:52;10827:9;10821:16;10846:31;10871:5;10846:31;:::i;15280:135::-;15319:3;-1:-1:-1;;15340:17:1;;15337:43;;;15360:18;;:::i;:::-;-1:-1:-1;15407:1:1;15396:13;;15280:135::o;15552:127::-;15613:10;15608:3;15604:20;15601:1;15594:31;15644:4;15641:1;15634:15;15668:4;15665:1;15658:15;15684:980;15946:4;15994:3;15983:9;15979:19;16025:6;16014:9;16007:25;16051:2;16089:6;16084:2;16073:9;16069:18;16062:34;16132:3;16127:2;16116:9;16112:18;16105:31;16156:6;16191;16185:13;16222:6;16214;16207:22;16260:3;16249:9;16245:19;16238:26;;16299:2;16291:6;16287:15;16273:29;;16320:1;16330:195;16344:6;16341:1;16338:13;16330:195;;;16409:13;;-1:-1:-1;;;;;16405:39:1;16393:52;;16500:15;;;;16465:12;;;;16441:1;16359:9;16330:195;;;-1:-1:-1;;;;;;;16581:32:1;;;;16576:2;16561:18;;16554:60;-1:-1:-1;;;16645:3:1;16630:19;16623:35;16542:3;15684:980;-1:-1:-1;;;15684:980:1:o;17281:306::-;17369:6;17377;17385;17438:2;17426:9;17417:7;17413:23;17409:32;17406:52;;;17454:1;17451;17444:12;17406:52;17483:9;17477:16;17467:26;;17533:2;17522:9;17518:18;17512:25;17502:35;;17577:2;17566:9;17562:18;17556:25;17546:35;;17281:306;;;;;:::o

Swarm Source

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