ETH Price: $3,413.58 (+6.94%)
Gas: 18 Gwei

Token

PURPY (PURPY)
 

Overview

Max Total Supply

100,000,000,000 PURPY

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
74,420,739.478996774 PURPY

Value
$0.00
0x06a850bdfcbc48adc29e86fb2e64e5f813a7f343
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:
PURPY

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-04
*/

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

/*


Purpy has woken up
t.me/Purpy


*/

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

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

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

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

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

contract PURPY is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 100_000_000_000;
    string constant private _name = "PURPY";
    string constant private _symbol = "PURPY";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 2,
        development: 1,
        totalSwap: 3
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 3000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xd2a01DdBaB95CeC51872173e0E816Df64B1213c0),
        development: payable(0x46ae18A129030902Fb004A732c3b3aaB4aE200c3)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 1) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 development, uint16 marketing) external onlyOwner {
        _ratios.development = development;
        _ratios.marketing = marketing;
        _ratios.totalSwap = development + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable development) external onlyOwner {
        require(marketing != address(0) && development != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

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

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

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

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

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

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

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

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - developmentBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
    }

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

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

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","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":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028181556103e86080526107d060a05260c091909152600880546307d003e865ffffffffffff199182161790915560e0919091526001610100526003610120526009805490911664030001000217815561018060405273d2a01ddbab95cec51872173e0e816df64b1213c06101408190527346ae18a129030902fb004a732c3b3aab4ae200c3610160819052600c80546001600160a01b03199081169093179055600d8054909216179055600e805461ff0019169055600a6012819055606491620000cd91620003d5565b620000de9064174876e800620003ed565b620000eb906001620003ed565b620000f7919062000407565b6013556014805461ffff19169055601680546001600160a01b03191633179055620001256009600a620003d5565b620001369064174876e800620003ed565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200018a6009600a620003d5565b6200019b9064174876e800620003ed565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556200042a565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000317578160001904821115620002fb57620002fb620002c0565b808516156200030957918102915b93841c9390800290620002db565b509250929050565b6000826200033057506001620003cf565b816200033f57506000620003cf565b8160018114620003585760028114620003635762000383565b6001915050620003cf565b60ff841115620003775762000377620002c0565b50506001821b620003cf565b5060208310610133831016604e8410600b8410161715620003a8575081810a620003cf565b620003b48383620002d6565b8060001904821115620003cb57620003cb620002c0565b0290505b92915050565b6000620003e660ff8416836200031f565b9392505050565b8082028115828204841417620003cf57620003cf620002c0565b6000826200042557634e487b7160e01b600052601260045260246000fd5b500490565b6134dc806200043a6000396000f3fe60806040526004361061031e5760003560e01c80635a6f0918116101ab578063ab558e4d116100f7578063d3f6a15711610095578063f94aa1b41161006f578063f94aa1b414610980578063fb78680d146109c7578063fdb78c0e146109e7578063feadde9c14610a0657600080fd5b8063d3f6a15714610905578063dd62ed3e14610925578063ee5d9c2d1461096b57600080fd5b8063b7df8b36116100d1578063b7df8b361461087b578063bcd96a2514610895578063bfc2fc35146108b5578063cf847706146108d557600080fd5b8063ab558e4d1461082f578063b1b08f711461084f578063b3d514fb1461086557600080fd5b806378648edf116101645780638a63bd9b1161013e5780638a63bd9b146107e55780638a8c523c146107fa57806395d89b41146103d6578063a9059cbb1461080f57600080fd5b806378648edf1461079257806380c581d1146107a7578063893d20e8146107c757600080fd5b80635a6f0918146106d95780635c24b074146106ef5780635cce86cd1461070f5780636ebd00781461074857806370a082311461075d578063715018a61461077d57600080fd5b80632e8fa8211161026a5780634ada218b116102235780634fb2e45d116101fd5780634fb2e45d146106415780634fbee1931461066157806350a8e0161461069a578063590ffdce146106b957600080fd5b80634ada218b146105e75780634bbb93eb146106015780634e718e481461062157600080fd5b80632e8fa82114610535578063313ce5671461054b57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757600080fd5b8063095ea7b3116102d757806323b872dd116102b157806323b872dd146104c75780632610eaca146104e757806328577751146105095780632b28fc7a1461051f57600080fd5b8063095ea7b3146104595780630dcbcf1c1461047957806318160ddd146104b257600080fd5b806303fd2a451461032a5780630445b6671461035d578063069d955f1461038157806306fdde03146103d65780630758d9241461040a57806307dd79e01461042f57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036957600080fd5b50610373600f5481565b604051908152602001610354565b34801561038d57600080fd5b506008546103b19061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610354565b3480156103e257600080fd5b506040805180820182526005815264505552505960d81b602082015290516103549190612ce6565b34801561041657600080fd5b50600a546103409061010090046001600160a01b031681565b34801561043b57600080fd5b50600a546104499060ff1681565b6040519015158152602001610354565b34801561046557600080fd5b50610449610474366004612d49565b610a26565b34801561048557600080fd5b50610449610494366004612d75565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104be57600080fd5b50610373610a3d565b3480156104d357600080fd5b506104496104e2366004612d92565b610a5f565b3480156104f357600080fd5b50610507610502366004612ea9565b610ad7565b005b34801561051557600080fd5b5061037360125481565b34801561052b57600080fd5b506103736107d081565b34801561054157600080fd5b5061037360105481565b34801561055757600080fd5b5060405160098152602001610354565b34801561057357600080fd5b50610507610582366004612f82565b610c5d565b34801561059357600080fd5b506105076105a2366004612fd3565b610d86565b3480156105b357600080fd5b506105076105c236600461300c565b610ddb565b3480156105d357600080fd5b50600b54610340906001600160a01b031681565b3480156105f357600080fd5b506014546104499060ff1681565b34801561060d57600080fd5b5061037361061c36600461302e565b610f15565b34801561062d57600080fd5b5061050761063c36600461302e565b610f47565b34801561064d57600080fd5b5061050761065c366004612d75565b610fc0565b34801561066d57600080fd5b5061044961067c366004612d75565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106a657600080fd5b5060145461044990610100900460ff1681565b3480156106c557600080fd5b506105076106d4366004612fd3565b6110e9565b3480156106e557600080fd5b5061037360155481565b3480156106fb57600080fd5b5061050761070a366004612d75565b61113e565b34801561071b57600080fd5b5061044961072a366004612d75565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561075457600080fd5b506103736112e2565b34801561076957600080fd5b50610373610778366004612d75565b6112fd565b34801561078957600080fd5b50610507611318565b34801561079e57600080fd5b50610507611411565b3480156107b357600080fd5b506105076107c2366004612fd3565b61144a565b3480156107d357600080fd5b506016546001600160a01b0316610340565b3480156107f157600080fd5b50610449611629565b34801561080657600080fd5b5061050761167b565b34801561081b57600080fd5b5061044961082a366004612d49565b6118a5565b34801561083b57600080fd5b5061050761084a366004612d75565b6118bc565b34801561085b57600080fd5b506103736103e881565b34801561087157600080fd5b50610373610bb881565b34801561088757600080fd5b506011546104499060ff1681565b3480156108a157600080fd5b506105076108b0366004613047565b611a38565b3480156108c157600080fd5b506105076108d036600461307a565b611b3b565b3480156108e157600080fd5b506009546103b19061ffff80821691620100008104821691600160201b9091041683565b34801561091157600080fd5b50610507610920366004613098565b611bc4565b34801561093157600080fd5b50610373610940366004613098565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561097757600080fd5b50610507611c88565b34801561098c57600080fd5b50600c54600d546109a7916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610354565b3480156109d357600080fd5b506105076109e23660046130c6565b611ceb565b3480156109f357600080fd5b50600e5461044990610100900460ff1681565b348015610a1257600080fd5b50610507610a21366004612fd3565b611eff565b6000610a33338484611f54565b5060015b92915050565b6000610a4b6009600a6131f2565b610a5a9064174876e800613201565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ac4576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610abe908490613218565b90915550505b610acf84848461204d565b949350505050565b6016546001600160a01b03163314610b0a5760405162461bcd60e51b8152600401610b019061322b565b60405180910390fd5b8051825114610b535760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b01565b60005b82518161ffff161015610c5857610b6f6009600a6131f2565b828261ffff1681518110610b8557610b85613256565b6020026020010151610b979190613201565b610ba0336112fd565b1015610be35760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b01565b610c4533848361ffff1681518110610bfd57610bfd613256565b60200260200101516009600a610c1391906131f2565b858561ffff1681518110610c2957610c29613256565b6020026020010151610c3b9190613201565b600080600161243f565b5080610c508161326c565b915050610b56565b505050565b6016546001600160a01b03163314610c875760405162461bcd60e51b8152600401610b019061322b565b600a5460ff1615610cce5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b01565b6107d08361ffff1611158015610cea5750610bb88261ffff1611155b8015610cfc57506103e88161ffff1611155b610d485760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b01565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6016546001600160a01b03163314610db05760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b03163314610e055760405162461bcd60e51b8152600401610b019061322b565b6103e8610e146009600a6131f2565b610e239064174876e800613201565b610e2e906005613201565b610e38919061328d565b8183610e466009600a6131f2565b610e559064174876e800613201565b610e5f9190613201565b610e69919061328d565b1015610edd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b01565b8082610eeb6009600a6131f2565b610efa9064174876e800613201565b610f049190613201565b610f0e919061328d565b6013555050565b600b54600090612710908390610f33906001600160a01b03166112fd565b610f3d9190613201565b610a37919061328d565b6016546001600160a01b03163314610f715760405162461bcd60e51b8152600401610b019061322b565b6096811115610fbb5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b01565b601255565b6016546001600160a01b03163314610fea5760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b0381166110105760405162461bcd60e51b8152600401610b01906132af565b61deac196001600160a01b0382160161103b5760405162461bcd60e51b8152600401610b01906132af565b601654611052906001600160a01b031660006110e9565b61105d8160016110e9565b601654600090611075906001600160a01b03166112fd565b111561109757601654611095906001600160a01b031682610c3b826112fd565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146111135760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146111685760405162461bcd60e51b8152600401610b019061322b565b60145460ff161561117857600080fd5b306001600160a01b038216036111c15760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b01565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611247575060408051601f3d908101601f191682019092526112449181019061330c565b60015b61125057600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546112c09383169291900416600019611f54565b600a54610c5890309061010090046001600160a01b0316600019611f54565b50565b60006112f06009600a6131f2565b601354610a5a919061328d565b6001600160a01b031660009081526020819052604090205490565b6016546001600160a01b031633146113425760405162461bcd60e51b8152600401610b019061322b565b60145460ff166113ac5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b01565b6016546113c3906001600160a01b031660006110e9565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b0316331461143b5760405162461bcd60e51b8152600401610b019061322b565b600a805460ff19166001179055565b6016546001600160a01b031633146114745760405162461bcd60e51b8152600401610b019061322b565b80611504576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b1580156114e857600080fd5b505af11580156114fc573d6000803e3d6000fd5b505050505050565b6002541561155d576203f4806002544261151e9190613218565b1161155d5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b01565b6001600160a01b03821660009081526001602052604090205460ff16156115c65760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b01565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016114ce565b5050565b6016546000906001600160a01b031633146116565760405162461bcd60e51b8152600401610b019061322b565b600a5461167590309061010090046001600160a01b0316600019611f54565b50600190565b6016546001600160a01b031633146116a55760405162461bcd60e51b8152600401610b019061322b565b60145460ff16156116f85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b01565b601454610100900460ff1661174f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b01565b6014546201000090046001600160a01b031661177f576014805462010000600160b01b0319163062010000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156117f157600080fd5b505af1925050508015611802575060015b50601454600b546001600160a01b03620100009092048216916325a71cae9161182b91166112fd565b6040518263ffffffff1660e01b815260040161184991815260200190565b60408051808303816000875af1925050508015611883575060408051601f3d908101601f191682019092526118809181019061333b565b60015b1561189257600f919091556010555b6014805460ff1916600117905542601555565b60006118b233848461204d565b5060019392505050565b6016546001600160a01b031633146118e65760405162461bcd60e51b8152600401610b019061322b565b601454610100900460ff161561194e57306001600160a01b0382160361194e5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b01565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156119a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c9919061335f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c589190613378565b6016546001600160a01b03163314611a625760405162461bcd60e51b8152600401610b019061322b565b6009805463ffffffff19166201000061ffff8581169190910261ffff191691909117908316179055611a948183613395565b6009805465ffff000000001916600160201b61ffff93841602179055600854600091611ac99162010000810482169116613395565b60095461ffff9182169250600160201b900416811015610c585760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b01565b6016546001600160a01b03163314611b655760405162461bcd60e51b8152600401610b019061322b565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b03163314611bee5760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03821615801590611c0e57506001600160a01b03811615155b611c5a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b01565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6016546001600160a01b03163314611cb25760405162461bcd60e51b8152600401610b019061322b565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156112df573d6000803e3d6000fd5b6016546001600160a01b03163314611d155760405162461bcd60e51b8152600401610b019061322b565b8284611d236009600a6131f2565b611d329064174876e800613201565b611d3c9190613201565b611d46919061328d565b600f558082611d576009600a6131f2565b611d669064174876e800613201565b611d709190613201565b611d7a919061328d565b6010819055600f541115611dda5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b01565b600b5461271090611df3906001600160a01b03166112fd565b611dfe906096613201565b611e08919061328d565b6010541115611e655760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b01565b620f4240611e756009600a6131f2565b611e849064174876e800613201565b611e8e919061328d565b6010541015611eaf5760405162461bcd60e51b8152600401610b01906133b7565b620f4240611ebf6009600a6131f2565b611ece9064174876e800613201565b611ed8919061328d565b600f541015611ef95760405162461bcd60e51b8152600401610b01906133b7565b50505050565b6016546001600160a01b03163314611f295760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611fa05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b01565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b01565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166120b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b01565b6001600160a01b0383166121155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b01565b600082116121775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b01565b6001600160a01b0384166000908152600160205260408120548190819060ff16156121a557600192506121d3565b6001600160a01b03861660009081526001602052604090205460ff16156121cf57600191506121d3565b5060015b6121dd878761264c565b156123965760145460ff166122de57806122395760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b01565b6001600160a01b03871660009081526005602052604090205460ff1615801561227b57506001600160a01b03861660009081526005602052604090205460ff16155b156122de5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b01565b82806122e75750815b15612396576001600160a01b03871660009081526007602052604090205460ff1615801561232e57506001600160a01b03861660009081526007602052604090205460ff16155b15612396576013548511156123965760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b01565b811561242657600e5460ff1661242657600e54610100900460ff16156124265760006123c1306112fd565b9050600f5481106124245760105460115460ff161561240e57601254600b5461271091906123f7906001600160a01b03166112fd565b6124019190613201565b61240b919061328d565b90505b808210612419578091505b61242282612763565b505b505b61243487878786868661243f565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff168061248157506001600160a01b03871660009081526006602052604090205460ff165b1561248a575060005b6001600160a01b038816600090815260208190526040812080548892906124b2908490613218565b9091555060009050816124c557866124d1565b6124d189888888612a9b565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125079190613405565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161255391815260200190565b60405180910390a3601454610100900460ff1661263d576125748989612ba6565b601454610100900460ff161580156125915750612591898961264c565b80156125b657506001600160a01b03891660009081526005602052604090205460ff16155b80156125db57506001600160a01b03881660009081526005602052604090205460ff16155b80156125e5575083155b1561263d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b01565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061267b57506016546001600160a01b03838116911614155b801561269257506016546001600160a01b03163214155b80156126b757506001600160a01b03821660009081526004602052604090205460ff16155b80156126dc57506001600160a01b03831660009081526004602052604090205460ff16155b80156126f357506001600160a01b03821661dead14155b801561270757506001600160a01b03821615155b801561271c57506001600160a01b0383163014155b801561273c57506014546001600160a01b03848116620100009092041614155b801561275c57506014546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052906000036127af5750612a8e565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461281257306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284757612847613256565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128de9190613418565b816001815181106128f1576128f1613256565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061293e908690600090869030904290600401613435565b600060405180830381600087803b15801561295857600080fd5b505af1925050508015612969575060015b612974575050612a8e565b6000479050600080846040015161ffff16856020015161ffff16846129999190613201565b6129a3919061328d565b905060006129b18285613218565b865190915061ffff1615612a1c57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114612a11576040519150601f19603f3d011682016040523d82523d6000602084013e612a16565b606091505b50909350505b602086015161ffff1615612a8757600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114612a7c576040519150601f19603f3d011682016040523d82523d6000602084013e612a81565b606091505b50909350505b5050505050505b50600e805460ff19169055565b6000808315612ab1575060085461ffff16612ada565b8215612aca575060085462010000900461ffff16612ada565b50600854600160201b900461ffff165b6014546201000090046001600160a01b031630148015612afb575046606114155b15612b0557506111945b80600003612b165784915050610acf565b6000612710612b258388613201565b612b2f919061328d565b90508015612b9c573060009081526020819052604081208054839290612b56908490613405565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6124348187613218565b601454610100900460ff1615612c0a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b01565b612c14828261264c565b158015612c2e5750600b546001600160a01b038281169116145b15611625576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416612ca6576014805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611bb8565b600060208083528351808285015260005b81811015612d1357858101830151858201604001528201612cf7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112df57600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612d34565b946020939093013593505050565b600060208284031215612d8757600080fd5b813561275c81612d34565b600080600060608486031215612da757600080fd5b8335612db281612d34565b92506020840135612dc281612d34565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e1257612e12612dd3565b604052919050565b600067ffffffffffffffff821115612e3457612e34612dd3565b5060051b60200190565b600082601f830112612e4f57600080fd5b81356020612e64612e5f83612e1a565b612de9565b82815260059290921b84018101918181019086841115612e8357600080fd5b8286015b84811015612e9e5780358352918301918301612e87565b509695505050505050565b60008060408385031215612ebc57600080fd5b823567ffffffffffffffff80821115612ed457600080fd5b818501915085601f830112612ee857600080fd5b81356020612ef8612e5f83612e1a565b82815260059290921b84018101918181019089841115612f1757600080fd5b948201945b83861015612f3e578535612f2f81612d34565b82529482019490820190612f1c565b96505086013592505080821115612f5457600080fd5b50612f6185828601612e3e565b9150509250929050565b803561ffff81168114612f7d57600080fd5b919050565b600080600060608486031215612f9757600080fd5b612fa084612f6b565b9250612fae60208501612f6b565b9150612fbc60408501612f6b565b90509250925092565b80151581146112df57600080fd5b60008060408385031215612fe657600080fd5b8235612ff181612d34565b9150602083013561300181612fc5565b809150509250929050565b6000806040838503121561301f57600080fd5b50508035926020909101359150565b60006020828403121561304057600080fd5b5035919050565b6000806040838503121561305a57600080fd5b61306383612f6b565b915061307160208401612f6b565b90509250929050565b6000806040838503121561308d57600080fd5b8235612ff181612fc5565b600080604083850312156130ab57600080fd5b82356130b681612d34565b9150602083013561300181612d34565b600080600080608085870312156130dc57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561314957816000190482111561312f5761312f6130f8565b8085161561313c57918102915b93841c9390800290613113565b509250929050565b60008261316057506001610a37565b8161316d57506000610a37565b8160018114613183576002811461318d576131a9565b6001915050610a37565b60ff84111561319e5761319e6130f8565b50506001821b610a37565b5060208310610133831016604e8410600b84101617156131cc575081810a610a37565b6131d6838361310e565b80600019048211156131ea576131ea6130f8565b029392505050565b600061275c60ff841683613151565b8082028115828204841417610a3757610a376130f8565b81810381811115610a3757610a376130f8565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613283576132836130f8565b6001019392505050565b6000826132aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561331f57600080fd5b825161332a81612d34565b602084015190925061300181612d34565b6000806040838503121561334e57600080fd5b505080516020909101519092909150565b60006020828403121561337157600080fd5b5051919050565b60006020828403121561338a57600080fd5b815161275c81612fc5565b61ffff8181168382160190808211156133b0576133b06130f8565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b80820180821115610a3757610a376130f8565b60006020828403121561342a57600080fd5b815161275c81612d34565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134855784516001600160a01b031683529383019391830191600101613460565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204b01c9524dbd9283809669a6a28a2f36c1758165b5fdb33e94b3a587c3c4489564736f6c63430008130033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c80635a6f0918116101ab578063ab558e4d116100f7578063d3f6a15711610095578063f94aa1b41161006f578063f94aa1b414610980578063fb78680d146109c7578063fdb78c0e146109e7578063feadde9c14610a0657600080fd5b8063d3f6a15714610905578063dd62ed3e14610925578063ee5d9c2d1461096b57600080fd5b8063b7df8b36116100d1578063b7df8b361461087b578063bcd96a2514610895578063bfc2fc35146108b5578063cf847706146108d557600080fd5b8063ab558e4d1461082f578063b1b08f711461084f578063b3d514fb1461086557600080fd5b806378648edf116101645780638a63bd9b1161013e5780638a63bd9b146107e55780638a8c523c146107fa57806395d89b41146103d6578063a9059cbb1461080f57600080fd5b806378648edf1461079257806380c581d1146107a7578063893d20e8146107c757600080fd5b80635a6f0918146106d95780635c24b074146106ef5780635cce86cd1461070f5780636ebd00781461074857806370a082311461075d578063715018a61461077d57600080fd5b80632e8fa8211161026a5780634ada218b116102235780634fb2e45d116101fd5780634fb2e45d146106415780634fbee1931461066157806350a8e0161461069a578063590ffdce146106b957600080fd5b80634ada218b146105e75780634bbb93eb146106015780634e718e481461062157600080fd5b80632e8fa82114610535578063313ce5671461054b57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757600080fd5b8063095ea7b3116102d757806323b872dd116102b157806323b872dd146104c75780632610eaca146104e757806328577751146105095780632b28fc7a1461051f57600080fd5b8063095ea7b3146104595780630dcbcf1c1461047957806318160ddd146104b257600080fd5b806303fd2a451461032a5780630445b6671461035d578063069d955f1461038157806306fdde03146103d65780630758d9241461040a57806307dd79e01461042f57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561036957600080fd5b50610373600f5481565b604051908152602001610354565b34801561038d57600080fd5b506008546103b19061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610354565b3480156103e257600080fd5b506040805180820182526005815264505552505960d81b602082015290516103549190612ce6565b34801561041657600080fd5b50600a546103409061010090046001600160a01b031681565b34801561043b57600080fd5b50600a546104499060ff1681565b6040519015158152602001610354565b34801561046557600080fd5b50610449610474366004612d49565b610a26565b34801561048557600080fd5b50610449610494366004612d75565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104be57600080fd5b50610373610a3d565b3480156104d357600080fd5b506104496104e2366004612d92565b610a5f565b3480156104f357600080fd5b50610507610502366004612ea9565b610ad7565b005b34801561051557600080fd5b5061037360125481565b34801561052b57600080fd5b506103736107d081565b34801561054157600080fd5b5061037360105481565b34801561055757600080fd5b5060405160098152602001610354565b34801561057357600080fd5b50610507610582366004612f82565b610c5d565b34801561059357600080fd5b506105076105a2366004612fd3565b610d86565b3480156105b357600080fd5b506105076105c236600461300c565b610ddb565b3480156105d357600080fd5b50600b54610340906001600160a01b031681565b3480156105f357600080fd5b506014546104499060ff1681565b34801561060d57600080fd5b5061037361061c36600461302e565b610f15565b34801561062d57600080fd5b5061050761063c36600461302e565b610f47565b34801561064d57600080fd5b5061050761065c366004612d75565b610fc0565b34801561066d57600080fd5b5061044961067c366004612d75565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106a657600080fd5b5060145461044990610100900460ff1681565b3480156106c557600080fd5b506105076106d4366004612fd3565b6110e9565b3480156106e557600080fd5b5061037360155481565b3480156106fb57600080fd5b5061050761070a366004612d75565b61113e565b34801561071b57600080fd5b5061044961072a366004612d75565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561075457600080fd5b506103736112e2565b34801561076957600080fd5b50610373610778366004612d75565b6112fd565b34801561078957600080fd5b50610507611318565b34801561079e57600080fd5b50610507611411565b3480156107b357600080fd5b506105076107c2366004612fd3565b61144a565b3480156107d357600080fd5b506016546001600160a01b0316610340565b3480156107f157600080fd5b50610449611629565b34801561080657600080fd5b5061050761167b565b34801561081b57600080fd5b5061044961082a366004612d49565b6118a5565b34801561083b57600080fd5b5061050761084a366004612d75565b6118bc565b34801561085b57600080fd5b506103736103e881565b34801561087157600080fd5b50610373610bb881565b34801561088757600080fd5b506011546104499060ff1681565b3480156108a157600080fd5b506105076108b0366004613047565b611a38565b3480156108c157600080fd5b506105076108d036600461307a565b611b3b565b3480156108e157600080fd5b506009546103b19061ffff80821691620100008104821691600160201b9091041683565b34801561091157600080fd5b50610507610920366004613098565b611bc4565b34801561093157600080fd5b50610373610940366004613098565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561097757600080fd5b50610507611c88565b34801561098c57600080fd5b50600c54600d546109a7916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610354565b3480156109d357600080fd5b506105076109e23660046130c6565b611ceb565b3480156109f357600080fd5b50600e5461044990610100900460ff1681565b348015610a1257600080fd5b50610507610a21366004612fd3565b611eff565b6000610a33338484611f54565b5060015b92915050565b6000610a4b6009600a6131f2565b610a5a9064174876e800613201565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ac4576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610abe908490613218565b90915550505b610acf84848461204d565b949350505050565b6016546001600160a01b03163314610b0a5760405162461bcd60e51b8152600401610b019061322b565b60405180910390fd5b8051825114610b535760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b01565b60005b82518161ffff161015610c5857610b6f6009600a6131f2565b828261ffff1681518110610b8557610b85613256565b6020026020010151610b979190613201565b610ba0336112fd565b1015610be35760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b01565b610c4533848361ffff1681518110610bfd57610bfd613256565b60200260200101516009600a610c1391906131f2565b858561ffff1681518110610c2957610c29613256565b6020026020010151610c3b9190613201565b600080600161243f565b5080610c508161326c565b915050610b56565b505050565b6016546001600160a01b03163314610c875760405162461bcd60e51b8152600401610b019061322b565b600a5460ff1615610cce5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b01565b6107d08361ffff1611158015610cea5750610bb88261ffff1611155b8015610cfc57506103e88161ffff1611155b610d485760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b01565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6016546001600160a01b03163314610db05760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b03163314610e055760405162461bcd60e51b8152600401610b019061322b565b6103e8610e146009600a6131f2565b610e239064174876e800613201565b610e2e906005613201565b610e38919061328d565b8183610e466009600a6131f2565b610e559064174876e800613201565b610e5f9190613201565b610e69919061328d565b1015610edd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b01565b8082610eeb6009600a6131f2565b610efa9064174876e800613201565b610f049190613201565b610f0e919061328d565b6013555050565b600b54600090612710908390610f33906001600160a01b03166112fd565b610f3d9190613201565b610a37919061328d565b6016546001600160a01b03163314610f715760405162461bcd60e51b8152600401610b019061322b565b6096811115610fbb5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b01565b601255565b6016546001600160a01b03163314610fea5760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b0381166110105760405162461bcd60e51b8152600401610b01906132af565b61deac196001600160a01b0382160161103b5760405162461bcd60e51b8152600401610b01906132af565b601654611052906001600160a01b031660006110e9565b61105d8160016110e9565b601654600090611075906001600160a01b03166112fd565b111561109757601654611095906001600160a01b031682610c3b826112fd565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146111135760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146111685760405162461bcd60e51b8152600401610b019061322b565b60145460ff161561117857600080fd5b306001600160a01b038216036111c15760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b01565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611247575060408051601f3d908101601f191682019092526112449181019061330c565b60015b61125057600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546112c09383169291900416600019611f54565b600a54610c5890309061010090046001600160a01b0316600019611f54565b50565b60006112f06009600a6131f2565b601354610a5a919061328d565b6001600160a01b031660009081526020819052604090205490565b6016546001600160a01b031633146113425760405162461bcd60e51b8152600401610b019061322b565b60145460ff166113ac5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b01565b6016546113c3906001600160a01b031660006110e9565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b0316331461143b5760405162461bcd60e51b8152600401610b019061322b565b600a805460ff19166001179055565b6016546001600160a01b031633146114745760405162461bcd60e51b8152600401610b019061322b565b80611504576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b1580156114e857600080fd5b505af11580156114fc573d6000803e3d6000fd5b505050505050565b6002541561155d576203f4806002544261151e9190613218565b1161155d5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b01565b6001600160a01b03821660009081526001602052604090205460ff16156115c65760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b01565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d1906044016114ce565b5050565b6016546000906001600160a01b031633146116565760405162461bcd60e51b8152600401610b019061322b565b600a5461167590309061010090046001600160a01b0316600019611f54565b50600190565b6016546001600160a01b031633146116a55760405162461bcd60e51b8152600401610b019061322b565b60145460ff16156116f85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b01565b601454610100900460ff1661174f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b01565b6014546201000090046001600160a01b031661177f576014805462010000600160b01b0319163062010000021790555b601454600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156117f157600080fd5b505af1925050508015611802575060015b50601454600b546001600160a01b03620100009092048216916325a71cae9161182b91166112fd565b6040518263ffffffff1660e01b815260040161184991815260200190565b60408051808303816000875af1925050508015611883575060408051601f3d908101601f191682019092526118809181019061333b565b60015b1561189257600f919091556010555b6014805460ff1916600117905542601555565b60006118b233848461204d565b5060019392505050565b6016546001600160a01b031633146118e65760405162461bcd60e51b8152600401610b019061322b565b601454610100900460ff161561194e57306001600160a01b0382160361194e5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b01565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156119a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c9919061335f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c589190613378565b6016546001600160a01b03163314611a625760405162461bcd60e51b8152600401610b019061322b565b6009805463ffffffff19166201000061ffff8581169190910261ffff191691909117908316179055611a948183613395565b6009805465ffff000000001916600160201b61ffff93841602179055600854600091611ac99162010000810482169116613395565b60095461ffff9182169250600160201b900416811015610c585760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b01565b6016546001600160a01b03163314611b655760405162461bcd60e51b8152600401610b019061322b565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b03163314611bee5760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03821615801590611c0e57506001600160a01b03811615155b611c5a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b01565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6016546001600160a01b03163314611cb25760405162461bcd60e51b8152600401610b019061322b565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156112df573d6000803e3d6000fd5b6016546001600160a01b03163314611d155760405162461bcd60e51b8152600401610b019061322b565b8284611d236009600a6131f2565b611d329064174876e800613201565b611d3c9190613201565b611d46919061328d565b600f558082611d576009600a6131f2565b611d669064174876e800613201565b611d709190613201565b611d7a919061328d565b6010819055600f541115611dda5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b01565b600b5461271090611df3906001600160a01b03166112fd565b611dfe906096613201565b611e08919061328d565b6010541115611e655760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b01565b620f4240611e756009600a6131f2565b611e849064174876e800613201565b611e8e919061328d565b6010541015611eaf5760405162461bcd60e51b8152600401610b01906133b7565b620f4240611ebf6009600a6131f2565b611ece9064174876e800613201565b611ed8919061328d565b600f541015611ef95760405162461bcd60e51b8152600401610b01906133b7565b50505050565b6016546001600160a01b03163314611f295760405162461bcd60e51b8152600401610b019061322b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316611fa05760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b01565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b01565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166120b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b01565b6001600160a01b0383166121155760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b01565b600082116121775760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b01565b6001600160a01b0384166000908152600160205260408120548190819060ff16156121a557600192506121d3565b6001600160a01b03861660009081526001602052604090205460ff16156121cf57600191506121d3565b5060015b6121dd878761264c565b156123965760145460ff166122de57806122395760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b01565b6001600160a01b03871660009081526005602052604090205460ff1615801561227b57506001600160a01b03861660009081526005602052604090205460ff16155b156122de5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b01565b82806122e75750815b15612396576001600160a01b03871660009081526007602052604090205460ff1615801561232e57506001600160a01b03861660009081526007602052604090205460ff16155b15612396576013548511156123965760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b01565b811561242657600e5460ff1661242657600e54610100900460ff16156124265760006123c1306112fd565b9050600f5481106124245760105460115460ff161561240e57601254600b5461271091906123f7906001600160a01b03166112fd565b6124019190613201565b61240b919061328d565b90505b808210612419578091505b61242282612763565b505b505b61243487878786868661243f565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff168061248157506001600160a01b03871660009081526006602052604090205460ff165b1561248a575060005b6001600160a01b038816600090815260208190526040812080548892906124b2908490613218565b9091555060009050816124c557866124d1565b6124d189888888612a9b565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125079190613405565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161255391815260200190565b60405180910390a3601454610100900460ff1661263d576125748989612ba6565b601454610100900460ff161580156125915750612591898961264c565b80156125b657506001600160a01b03891660009081526005602052604090205460ff16155b80156125db57506001600160a01b03881660009081526005602052604090205460ff16155b80156125e5575083155b1561263d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b01565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061267b57506016546001600160a01b03838116911614155b801561269257506016546001600160a01b03163214155b80156126b757506001600160a01b03821660009081526004602052604090205460ff16155b80156126dc57506001600160a01b03831660009081526004602052604090205460ff16155b80156126f357506001600160a01b03821661dead14155b801561270757506001600160a01b03821615155b801561271c57506001600160a01b0383163014155b801561273c57506014546001600160a01b03848116620100009092041614155b801561275c57506014546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052906000036127af5750612a8e565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461281257306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284757612847613256565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128de9190613418565b816001815181106128f1576128f1613256565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061293e908690600090869030904290600401613435565b600060405180830381600087803b15801561295857600080fd5b505af1925050508015612969575060015b612974575050612a8e565b6000479050600080846040015161ffff16856020015161ffff16846129999190613201565b6129a3919061328d565b905060006129b18285613218565b865190915061ffff1615612a1c57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114612a11576040519150601f19603f3d011682016040523d82523d6000602084013e612a16565b606091505b50909350505b602086015161ffff1615612a8757600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114612a7c576040519150601f19603f3d011682016040523d82523d6000602084013e612a81565b606091505b50909350505b5050505050505b50600e805460ff19169055565b6000808315612ab1575060085461ffff16612ada565b8215612aca575060085462010000900461ffff16612ada565b50600854600160201b900461ffff165b6014546201000090046001600160a01b031630148015612afb575046606114155b15612b0557506111945b80600003612b165784915050610acf565b6000612710612b258388613201565b612b2f919061328d565b90508015612b9c573060009081526020819052604081208054839290612b56908490613405565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6124348187613218565b601454610100900460ff1615612c0a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b01565b612c14828261264c565b158015612c2e5750600b546001600160a01b038281169116145b15611625576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416612ca6576014805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611bb8565b600060208083528351808285015260005b81811015612d1357858101830151858201604001528201612cf7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112df57600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612d34565b946020939093013593505050565b600060208284031215612d8757600080fd5b813561275c81612d34565b600080600060608486031215612da757600080fd5b8335612db281612d34565b92506020840135612dc281612d34565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612e1257612e12612dd3565b604052919050565b600067ffffffffffffffff821115612e3457612e34612dd3565b5060051b60200190565b600082601f830112612e4f57600080fd5b81356020612e64612e5f83612e1a565b612de9565b82815260059290921b84018101918181019086841115612e8357600080fd5b8286015b84811015612e9e5780358352918301918301612e87565b509695505050505050565b60008060408385031215612ebc57600080fd5b823567ffffffffffffffff80821115612ed457600080fd5b818501915085601f830112612ee857600080fd5b81356020612ef8612e5f83612e1a565b82815260059290921b84018101918181019089841115612f1757600080fd5b948201945b83861015612f3e578535612f2f81612d34565b82529482019490820190612f1c565b96505086013592505080821115612f5457600080fd5b50612f6185828601612e3e565b9150509250929050565b803561ffff81168114612f7d57600080fd5b919050565b600080600060608486031215612f9757600080fd5b612fa084612f6b565b9250612fae60208501612f6b565b9150612fbc60408501612f6b565b90509250925092565b80151581146112df57600080fd5b60008060408385031215612fe657600080fd5b8235612ff181612d34565b9150602083013561300181612fc5565b809150509250929050565b6000806040838503121561301f57600080fd5b50508035926020909101359150565b60006020828403121561304057600080fd5b5035919050565b6000806040838503121561305a57600080fd5b61306383612f6b565b915061307160208401612f6b565b90509250929050565b6000806040838503121561308d57600080fd5b8235612ff181612fc5565b600080604083850312156130ab57600080fd5b82356130b681612d34565b9150602083013561300181612d34565b600080600080608085870312156130dc57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561314957816000190482111561312f5761312f6130f8565b8085161561313c57918102915b93841c9390800290613113565b509250929050565b60008261316057506001610a37565b8161316d57506000610a37565b8160018114613183576002811461318d576131a9565b6001915050610a37565b60ff84111561319e5761319e6130f8565b50506001821b610a37565b5060208310610133831016604e8410600b84101617156131cc575081810a610a37565b6131d6838361310e565b80600019048211156131ea576131ea6130f8565b029392505050565b600061275c60ff841683613151565b8082028115828204841417610a3757610a376130f8565b81810381811115610a3757610a376130f8565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613283576132836130f8565b6001019392505050565b6000826132aa57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561331f57600080fd5b825161332a81612d34565b602084015190925061300181612d34565b6000806040838503121561334e57600080fd5b505080516020909101519092909150565b60006020828403121561337157600080fd5b5051919050565b60006020828403121561338a57600080fd5b815161275c81612fc5565b61ffff8181168382160190808211156133b0576133b06130f8565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b80820180821115610a3757610a376130f8565b60006020828403121561342a57600080fd5b815161275c81612d34565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156134855784516001600160a01b031683529383019391830191600101613460565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204b01c9524dbd9283809669a6a28a2f36c1758165b5fdb33e94b3a587c3c4489564736f6c63430008130033

Deployed Bytecode Sourcemap

3939:19794:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:73;;;;;;;;;;;;5492:42;5461:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5461:73:0;;;;;;;;5927:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5927:28:0;222:177:1;4927:109:0;;;;;;;;;;-1:-1:-1;4927:109:0;;;;;;;;;;;;;;;-1:-1:-1;;;4927:109:0;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4927:109:0;404:365:1;9555:80:0;;;;;;;;;;-1:-1:-1;9627:5:0;;;;;;;;;;;-1:-1:-1;;;9627:5:0;;;;9555:80;;;;9627:5;9555:80;:::i;5400:26::-;;;;;;;;;;-1:-1:-1;5400:26:0;;;;;;;-1:-1:-1;;;;;5400:26:0;;;5367;;;;;;;;;;-1:-1:-1;5367:26:0;;;;;;;;;;;1717:14:1;;1710:22;1692:41;;1680:2;1665:18;5367:26:0;1552:187:1;10165:161:0;;;;;;;;;;-1:-1:-1;10165:161:0;;;;;:::i;:::-;;:::i;12851:140::-;;;;;;;;;;-1:-1:-1;12851:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;12949:34:0;12925:4;12949:34;;;:25;:34;;;;;;;;;12851:140;9290:83;;;;;;;;;;;;;:::i;10835:306::-;;;;;;;;;;-1:-1:-1;10835:306:0;;;;;:::i;:::-;;:::i;21683:447::-;;;;;;;;;;-1:-1:-1;21683:447:0;;;;;:::i;:::-;;:::i;:::-;;6035:33;;;;;;;;;;;;;;;;5164:42;;;;;;;;;;;;5202:4;5164:42;;5962:25;;;;;;;;;;;;;;;;9379:80;;;;;;;;;;-1:-1:-1;9379:80:0;;4626:1;5542:36:1;;5530:2;5515:18;9379:80:0;5400:184:1;13345:453:0;;;;;;;;;;-1:-1:-1;13345:453:0;;;;;:::i;:::-;;:::i;12426:140::-;;;;;;;;;;-1:-1:-1;12426:140:0;;;;;:::i;:::-;;:::i;14508:273::-;;;;;;;;;;-1:-1:-1;14508:273:0;;;;;:::i;:::-;;:::i;5433:21::-;;;;;;;;;;-1:-1:-1;5433:21:0;;;;-1:-1:-1;;;;;5433:21:0;;;6140:34;;;;;;;;;;-1:-1:-1;6140:34:0;;;;;;;;14905:189;;;;;;;;;;-1:-1:-1;14905:189:0;;;;;:::i;:::-;;:::i;15809:217::-;;;;;;;;;;-1:-1:-1;15809:217:0;;;;;:::i;:::-;;:::i;7928:654::-;;;;;;;;;;-1:-1:-1;7928:654:0;;;;;:::i;:::-;;:::i;12574:127::-;;;;;;;;;;-1:-1:-1;12574:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12665:28:0;12641:4;12665:28;;;:19;:28;;;;;;;;;12574:127;6181:36;;;;;;;;;;-1:-1:-1;6181:36:0;;;;;;;;;;;12709:134;;;;;;;;;;-1:-1:-1;12709:134:0;;;;;:::i;:::-;;:::i;6254:26::-;;;;;;;;;;;;;;;;11721:557;;;;;;;;;;-1:-1:-1;11721:557:0;;;;;:::i;:::-;;:::i;12286:132::-;;;;;;;;;;-1:-1:-1;12286:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12380:30:0;12356:4;12380:30;;;:21;:30;;;;;;;;;12286:132;14789:108;;;;;;;;;;;;;:::i;9867:117::-;;;;;;;;;;-1:-1:-1;9867:117:0;;;;;:::i;:::-;;:::i;8590:310::-;;;;;;;;;;;;;:::i;13155:182::-;;;;;;;;;;;;;:::i;11149:564::-;;;;;;;;;;-1:-1:-1;11149:564:0;;;;;:::i;:::-;;:::i;9641:79::-;;;;;;;;;;-1:-1:-1;9711:6:0;;-1:-1:-1;;;;;9711:6:0;9641:79;;10652:175;;;;;;;;;;;;;:::i;20555:695::-;;;;;;;;;;;;;:::i;9992:165::-;;;;;;;;;;-1:-1:-1;9992:165:0;;;;;:::i;:::-;;:::i;21379:296::-;;;;;;;;;;-1:-1:-1;21379:296:0;;;;;:::i;:::-;;:::i;5263:47::-;;;;;;;;;;;;5306:4;5263:47;;5213:43;;;;;;;;;;;;5252:4;5213:43;;5994:34;;;;;;;;;;-1:-1:-1;5994:34:0;;;;;;;;13806:374;;;;;;;;;;-1:-1:-1;13806:374:0;;;;;:::i;:::-;;:::i;16034:263::-;;;;;;;;;;-1:-1:-1;16034:263:0;;;;;:::i;:::-;;:::i;5045:110::-;;;;;;;;;;-1:-1:-1;5045:110:0;;;;;;;;;;;;;;;-1:-1:-1;;;5045:110:0;;;;;;14188:312;;;;;;;;;;-1:-1:-1;14188:312:0;;;;;:::i;:::-;;:::i;9726:133::-;;;;;;;;;;-1:-1:-1;9726:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9828:19:0;;;9810:7;9828:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9726:133;21258:113;;;;;;;;;;;;;:::i;5651:199::-;;;;;;;;;;-1:-1:-1;5651:199:0;;;;;;-1:-1:-1;;;;;5651:199:0;;;;;;;;;;;-1:-1:-1;;;;;8740:15:1;;;8722:34;;8792:15;;;;8787:2;8772:18;;8765:43;8657:18;5651:199:0;8478:336:1;15102:699:0;;;;;;;;;;-1:-1:-1;15102:699:0;;;;;:::i;:::-;;:::i;5881:39::-;;;;;;;;;;-1:-1:-1;5881:39:0;;;;;;;;;;;12999:148;;;;;;;;;;-1:-1:-1;12999:148:0;;;;;:::i;:::-;;:::i;10165:161::-;10242:4;10259:37;10268:10;10280:7;10289:6;10259:8;:37::i;:::-;-1:-1:-1;10314:4:0;10165:161;;;;;:::o;9290:83::-;9345:7;4686:13;4626:1;4686:2;:13;:::i;:::-;4669:30;;4475:15;4669:30;:::i;:::-;9356:14;;9290:83;:::o;10835:306::-;-1:-1:-1;;;;;10956:19:0;;10935:4;10956:19;;;:11;:19;;;;;;;;10976:10;10956:31;;;;;;;;-1:-1:-1;;10956:52:0;10952:126;;-1:-1:-1;;;;;11025:19:0;;;;;;:11;:19;;;;;;;;11045:10;11025:31;;;;;;;:41;;11060:6;;11025:19;:41;;11060:6;;11025:41;:::i;:::-;;;;-1:-1:-1;;10952:126:0;11097:36;11107:6;11115:9;11126:6;11097:9;:36::i;:::-;11090:43;10835:306;-1:-1:-1;;;;10835:306:0:o;21683:447::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;;;;;;;;;21818:7:::1;:14;21799:8;:15;:33;21791:67;;;::::0;-1:-1:-1;;;21791:67:0;;11578:2:1;21791:67:0::1;::::0;::::1;11560:21:1::0;11617:2;11597:18;;;11590:30;-1:-1:-1;;;11636:18:1;;;11629:51;11697:18;;21791:67:0::1;11376:345:1::0;21791:67:0::1;21874:8;21869:254;21892:8;:15;21888:1;:19;;;21869:254;;;21973:13;4626:1;21973:2;:13;:::i;:::-;21962:7;21970:1;21962:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21937:21;21947:10;21937:9;:21::i;:::-;:49;;21929:80;;;::::0;-1:-1:-1;;;21929:80:0;;12060:2:1;21929:80:0::1;::::0;::::1;12042:21:1::0;12099:2;12079:18;;;12072:30;-1:-1:-1;;;12118:18:1;;;12111:48;12176:18;;21929:80:0::1;11858:342:1::0;21929:80:0::1;22024:87;22041:10;22053:8;22062:1;22053:11;;;;;;;;;;:::i;:::-;;;;;;;4626:1;22077:2;:13;;;;:::i;:::-;22066:7;22074:1;22066:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22092:5;22099::::0;22106:4:::1;22024:16;:87::i;:::-;-1:-1:-1::0;21909:3:0;::::1;::::0;::::1;:::i;:::-;;;;21869:254;;;;21683:447:::0;;:::o;13345:453::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;13453:14:::1;::::0;::::1;;13452:15;13444:45;;;::::0;-1:-1:-1;;;13444:45:0;;12609:2:1;13444:45:0::1;::::0;::::1;12591:21:1::0;12648:2;12628:18;;;12621:30;-1:-1:-1;;;12667:18:1;;;12660:47;12724:18;;13444:45:0::1;12407:341:1::0;13444:45:0::1;5202:4;13508:6;:21;;;;:65;;;;;5252:4;13550:7;:23;;;;13508:65;:117;;;;;5306:4;13594:11;:31;;;;13508:117;13500:170;;;::::0;-1:-1:-1;;;13500:170:0;;12955:2:1;13500:170:0::1;::::0;::::1;12937:21:1::0;12994:2;12974:18;;;12967:30;13033:25;13013:18;;;13006:53;13076:18;;13500:170:0::1;12753:347:1::0;13500:170:0::1;13681:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;13717:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13755:35:0::1;-1:-1:-1::0;;;13755:35:0;;;::::1;;::::0;;;::::1;::::0;;13345:453::o;12426:140::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12518:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12518:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12426:140::o;14508:273::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;14653:4:::1;4686:13;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;14639:11;::::0;14649:1:::1;14639:11;:::i;:::-;:18;;;;:::i;:::-;14627:7:::0;14616;4686:13:::1;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;14606:17;;;;:::i;:::-;14605:29;;;;:::i;:::-;:53;;14597:121;;;::::0;-1:-1:-1;;;14597:121:0;;13529:2:1;14597:121:0::1;::::0;::::1;13511:21:1::0;13568:2;13548:18;;;13541:30;13607:34;13587:18;;;13580:62;13678:25;13658:18;;;13651:53;13721:19;;14597:121:0::1;13327:419:1::0;14597:121:0::1;14766:7:::0;14755;4686:13:::1;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;14745:17;;;;:::i;:::-;14744:29;;;;:::i;:::-;14729:12;:44:::0;-1:-1:-1;;14508:273:0:o;14905:189::-;15034:6;;14996:7;;5353:5;;15044:21;;15024:17;;-1:-1:-1;;;;;15034:6:0;15024:9;:17::i;:::-;:41;;;;:::i;:::-;15023:62;;;;:::i;15809:217::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;15939:3:::1;15913:22;:29;;15905:64;;;::::0;-1:-1:-1;;;15905:64:0;;13953:2:1;15905:64:0::1;::::0;::::1;13935:21:1::0;13992:2;13972:18;;;13965:30;-1:-1:-1;;;14011:18:1;;;14004:52;14073:18;;15905:64:0::1;13751:346:1::0;15905:64:0::1;15980:13;:38:::0;15809:217::o;7928:654::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8007:22:0;::::1;7999:96;;;;-1:-1:-1::0;;;7999:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8114:16:0;::::1;::::0;8106:90:::1;;;;-1:-1:-1::0;;;8106:90:0::1;;;;;;;:::i;:::-;8227:6;::::0;8207:34:::1;::::0;-1:-1:-1;;;;;8227:6:0::1;;8207:19;:34::i;:::-;8252:35;8272:8;8282:4;8252:19;:35::i;:::-;8322:6;::::0;8332:1:::1;::::0;8312:17:::1;::::0;-1:-1:-1;;;;;8322:6:0::1;8312:9;:17::i;:::-;:21;8308:127;;;8367:6;::::0;8350:73:::1;::::0;-1:-1:-1;;;;;8367:6:0::1;8375:8:::0;8385:17:::1;8367:6:::0;8385:9:::1;:17::i;8350:73::-;;8308:127;8474:6;::::0;;-1:-1:-1;;;;;8491:17:0;;::::1;-1:-1:-1::0;;;;;;8491:17:0;::::1;::::0;::::1;::::0;;;8524:40:::1;::::0;8474:6;::::1;::::0;8491:17;8474:6;;8524:40:::1;::::0;8455:16:::1;::::0;8524:40:::1;7988:594;7928:654:::0;:::o;12709:134::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12797:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12797:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12709:134::o;11721:557::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;11796:14:::1;::::0;::::1;;11795:15;11787:24;;;::::0;::::1;;11846:4;-1:-1:-1::0;;;;;11830:21:0;::::1;::::0;11822:48:::1;;;::::0;-1:-1:-1;;;11822:48:0;;14734:2:1;11822:48:0::1;::::0;::::1;14716:21:1::0;14773:2;14753:18;;;14746:30;-1:-1:-1;;;14792:18:1;;;14785:44;14846:18;;11822:48:0::1;14532:338:1::0;11822:48:0::1;11881:11;:31:::0;;-1:-1:-1;;;;;;11881:31:0::1;::::0;-1:-1:-1;;;;;11881:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;11927:23:::1;::::0;;-1:-1:-1;;;11927:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;11927:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;11927:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;11927:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;11923:348;;12260:8;::::0;::::1;11923:348;12014:9;:29:::0;;-1:-1:-1;;;;;;12014:29:0::1;;-1:-1:-1::0;;;;;12014:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12045:6:::1;:22:::0;;-1:-1:-1;;;;;;12045:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12069:15:0;;;-1:-1:-1;12069:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12069:22:0::1;::::0;;::::1;::::0;;12116:6:::1;::::0;12132:9;;12107:55:::1;::::0;12116:6;::::1;::::0;12132:9;;::::1;;-1:-1:-1::0;;12107:8:0::1;:55::i;:::-;12209:9;::::0;12177:62:::1;::::0;12194:4:::1;::::0;12209:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12209:9:0::1;-1:-1:-1::0;;12177:8:0::1;:62::i;11923:348::-;11721:557:::0;:::o;14789:108::-;14832:7;14875:13;4626:1;14875:2;:13;:::i;:::-;14859:12;;:30;;;;:::i;9867:117::-;-1:-1:-1;;;;;9960:16:0;9933:7;9960:16;;;;;;;;;;;;9867:117::o;8590:310::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;8657:14:::1;::::0;::::1;;8649:74;;;::::0;-1:-1:-1;;;8649:74:0;;15467:2:1;8649:74:0::1;::::0;::::1;15449:21:1::0;15506:2;15486:18;;;15479:30;15545:34;15525:18;;;15518:62;-1:-1:-1;;;15596:18:1;;;15589:45;15651:19;;8649:74:0::1;15265:411:1::0;8649:74:0::1;8754:6;::::0;8734:34:::1;::::0;-1:-1:-1;;;;;8754:6:0::1;;8734:19;:34::i;:::-;8798:6;::::0;;-1:-1:-1;;;;;;8815:19:0;::::1;::::0;;;8850:42:::1;::::0;-1:-1:-1;;;;;8798:6:0;;::::1;::::0;8779:16:::1;::::0;8798:6;;8850:42:::1;::::0;8779:16;;8850:42:::1;8638:262;8590:310::o:0;13155:182::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;13308:14:::1;:21:::0;;-1:-1:-1;;13308:21:0::1;13325:4;13308:21;::::0;;13155:182::o;11149:564::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;11231:7:::1;11226:480;;-1:-1:-1::0;;;;;11255:13:0;;::::1;11271:5;11255:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11255:21:0::1;::::0;;11291:11:::1;::::0;:34;;-1:-1:-1;;;11291:34:0;;::::1;::::0;::::1;15849:51:1::0;;;;15916:18;;;15909:50;;;;11291:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15822:18:1;;11291:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11149:564:::0;;:::o;11226:480::-:1;11362:17;::::0;:22;11358:135:::1;;11451:6;11431:17;;11413:15;:35;;;;:::i;:::-;:44;11405:72;;;::::0;-1:-1:-1;;;11405:72:0;;16172:2:1;11405:72:0::1;::::0;::::1;16154:21:1::0;16211:2;16191:18;;;16184:30;-1:-1:-1;;;16230:18:1;;;16223:45;16285:18;;11405:72:0::1;15970:339:1::0;11405:72:0::1;-1:-1:-1::0;;;;;11516:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11515:14;11507:54;;;::::0;-1:-1:-1;;;11507:54:0;;16516:2:1;11507:54:0::1;::::0;::::1;16498:21:1::0;16555:2;16535:18;;;16528:30;16594:29;16574:18;;;16567:57;16641:18;;11507:54:0::1;16314:351:1::0;11507:54:0::1;-1:-1:-1::0;;;;;11576:13:0;;::::1;;::::0;;;11592:4:::1;11576:13;::::0;;;;;;;;:20;;-1:-1:-1;;11576:20:0::1;::::0;::::1;::::0;;11631:15:::1;11611:17;:35:::0;11661:11:::1;::::0;:33;;-1:-1:-1;;;11661:33:0;;::::1;::::0;::::1;15849:51:1::0;;;;15916:18;;;15909:50;11661:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15822:18:1;;11661:33:0::1;15681:284:1::0;11226:480:0::1;11149:564:::0;;:::o;10652:175::-;7782:6;;10718:4;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;10767:9:::1;::::0;10735:62:::1;::::0;10752:4:::1;::::0;10767:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10767:9:0::1;-1:-1:-1::0;;10735:8:0::1;:62::i;:::-;-1:-1:-1::0;10815:4:0::1;10652:175:::0;:::o;20555:695::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;20617:14:::1;::::0;::::1;;20616:15;20608:52;;;::::0;-1:-1:-1;;;20608:52:0;;16872:2:1;20608:52:0::1;::::0;::::1;16854:21:1::0;16911:2;16891:18;;;16884:30;16950:26;16930:18;;;16923:54;16994:18;;20608:52:0::1;16670:348:1::0;20608:52:0::1;20679:16;::::0;::::1;::::0;::::1;;;20671:53;;;::::0;-1:-1:-1;;;20671:53:0;;17225:2:1;20671:53:0::1;::::0;::::1;17207:21:1::0;17264:2;17244:18;;;17237:30;17303:26;17283:18;;;17276:54;17347:18;;20671:53:0::1;17023:348:1::0;20671:53:0::1;20747:11;::::0;;;::::1;-1:-1:-1::0;;;;;20747:11:0::1;20735:106;;20789:11;:40:::0;;-1:-1:-1;;;;;;20789:40:0::1;20823:4;20789:40:::0;::::1;;::::0;;20735:106:::1;20855:11;::::0;20877:6:::1;::::0;20855:87:::1;::::0;-1:-1:-1;;;20855:87:0;;-1:-1:-1;;;;;20877:6:0;;::::1;20855:87;::::0;::::1;17599:51:1::0;17698:10;20892:12:0::1;17686:23:1::0;17666:18;;;17659:51;17758:18;20914:15:0::1;17746:31:1::0;17726:18;;;17719:59;4626:1:0::1;17794:18:1::0;;;17787:45;20855:11:0;;;::::1;;::::0;:21:::1;::::0;17571:19:1;;20855:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20851:103:::0;20968:11:::1;::::0;20999:6:::1;::::0;-1:-1:-1;;;;;20968:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;20989:17:::1;::::0;20999:6:::1;20989:9;:17::i;:::-;20968:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;20968:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20968:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20968:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20964:207:::0;::::1;;21079:13;:29:::0;;;;21123:10:::1;:27:::0;20964:207:::1;21181:14;:21:::0;;-1:-1:-1;;21181:21:0::1;21198:4;21181:21;::::0;;21227:15:::1;21213:11;:29:::0;20555:695::o;9992:165::-;10070:4;10087:40;10097:10;10109:9;10120:6;10087:9;:40::i;:::-;-1:-1:-1;10145:4:0;;9992:165;-1:-1:-1;;;9992:165:0:o;21379:296::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;21457:16:::1;::::0;::::1;::::0;::::1;;;21453:111;;;21515:4;-1:-1:-1::0;;;;;21498:22:0;::::1;::::0;21490:62:::1;;;::::0;-1:-1:-1;;;21490:62:0;;18295:2:1;21490:62:0::1;::::0;::::1;18277:21:1::0;18334:2;18314:18;;;18307:30;18373:29;18353:18;;;18346:57;18420:18;;21490:62:0::1;18093:351:1::0;21490:62:0::1;21628:6;::::0;21636:30:::1;::::0;-1:-1:-1;;;21636:30:0;;21660:4:::1;21636:30;::::0;::::1;160:51:1::0;21596:5:0;;-1:-1:-1;;;;;21613:14:0;;::::1;::::0;::::1;::::0;21628:6;;;::::1;::::0;21613:14;;21636:15:::1;::::0;133:18:1;;21636:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21613:54;::::0;-1:-1:-1;;;;;;21613:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18830:32:1;;;21613:54:0::1;::::0;::::1;18812:51:1::0;18879:18;;;18872:34;18785:18;;21613:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13806:374::-:0;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;13893:7:::1;:33:::0;;-1:-1:-1;;13937:29:0;13893:33;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;13937:29:0;;;;;;;::::1;;::::0;;13997:23:::1;13937:29:::0;13893:33;13997:23:::1;:::i;:::-;13977:7;:43:::0;;-1:-1:-1;;13977:43:0::1;-1:-1:-1::0;;;13977:43:0::1;::::0;;::::1;;;::::0;;14066:9:::1;:17:::0;-1:-1:-1;;14047:36:0::1;::::0;14066:17;;::::1;::::0;::::1;::::0;14047:16:::1;:36;:::i;:::-;14102:7;:17:::0;14031:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;14102:17:0;::::1;;:26:::0;-1:-1:-1;14102:26:0::1;14094:78;;;::::0;-1:-1:-1;;;14094:78:0;;19542:2:1;14094:78:0::1;::::0;::::1;19524:21:1::0;19581:2;19561:18;;;19554:30;19620:34;19600:18;;;19593:62;-1:-1:-1;;;19671:18:1;;;19664:37;19718:19;;14094:78:0::1;19340:403:1::0;16034:263:0;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;16143:19:::1;:33:::0;;-1:-1:-1;;16143:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;16187:22:::1;:47:::0;;-1:-1:-1;;16187:47:0::1;::::0;::::1;;;::::0;;16250:39:::1;::::0;1692:41:1;;;16250:39:0::1;::::0;1680:2:1;1665:18;16250:39:0::1;;;;;;;;16034:263:::0;;:::o;14188:312::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14302:23:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;14329:25:0;::::1;::::0;::::1;14302:52;14294:88;;;::::0;-1:-1:-1;;;14294:88:0;;19950:2:1;14294:88:0::1;::::0;::::1;19932:21:1::0;19989:2;19969:18;;;19962:30;20028:25;20008:18;;;20001:53;20071:18;;14294:88:0::1;19748:347:1::0;14294:88:0::1;14393:11;:42:::0;;-1:-1:-1;;;;;14393:42:0;;::::1;-1:-1:-1::0;;;;;;14393:42:0;;::::1;;::::0;;;14446:23;:46;;;;;::::1;::::0;::::1;;::::0;;14188:312::o;21258:113::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;21324:6:::1;::::0;21316:47:::1;::::0;-1:-1:-1;;;;;21324:6:0;;::::1;::::0;21341:21:::1;21316:47:::0;::::1;;;::::0;21324:6:::1;21316:47:::0;21324:6;21316:47;21341:21;21324:6;21316:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15102:699:::0;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;15302:16;15282;4686:13:::1;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;15272:26;;;;:::i;:::-;15271:47;;;;:::i;:::-;15255:13;:63:::0;15370:13;15353;4686::::1;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;15343:23;;;;:::i;:::-;15342:41;;;;:::i;:::-;15329:10;:54:::0;;;15402:13:::1;::::0;:27:::1;;15394:73;;;::::0;-1:-1:-1;;;15394:73:0;;20302:2:1;15394:73:0::1;::::0;::::1;20284:21:1::0;20341:2;20321:18;;;20314:30;20380:34;20360:18;;;20353:62;-1:-1:-1;;;20431:18:1;;;20424:31;20472:19;;15394:73:0::1;20100:397:1::0;15394:73:0::1;15511:6;::::0;5353:5:::1;::::0;15501:17:::1;::::0;-1:-1:-1;;;;;15511:6:0::1;15501:9;:17::i;:::-;:23;::::0;15521:3:::1;15501:23;:::i;:::-;15500:44;;;;:::i;:::-;15486:10;;:58;;15478:106;;;::::0;-1:-1:-1;;;15478:106:0;;20704:2:1;15478:106:0::1;::::0;::::1;20686:21:1::0;20743:2;20723:18;;;20716:30;20782:34;20762:18;;;20755:62;-1:-1:-1;;;20833:18:1;;;20826:33;20876:19;;15478:106:0::1;20502:399:1::0;15478:106:0::1;15627:9;4686:13;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;15617:19;;;;:::i;:::-;15603:10;;:33;;15595:92;;;;-1:-1:-1::0;;;15595:92:0::1;;;;;;;:::i;:::-;15733:9;4686:13;4626:1;4686:2;:13;:::i;:::-;4669:30;::::0;4475:15:::1;4669:30;:::i;:::-;15723:19;;;;:::i;:::-;15706:13;;:36;;15698:95;;;;-1:-1:-1::0;;;15698:95:0::1;;;;;;;:::i;:::-;15102:699:::0;;;;:::o;12999:148::-;7782:6;;-1:-1:-1;;;;;7782:6:0;7792:10;7782:20;7774:50;;;;-1:-1:-1;;;7774:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13095:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13095:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12999:148::o;10334:310::-;-1:-1:-1;;;;;10429:20:0;;10421:52;;;;-1:-1:-1;;;10421:52:0;;21523:2:1;10421:52:0;;;21505:21:1;21562:2;21542:18;;;21535:30;-1:-1:-1;;;21581:18:1;;;21574:49;21640:18;;10421:52:0;21321:343:1;10421:52:0;-1:-1:-1;;;;;10492:21:0;;10484:53;;;;-1:-1:-1;;;10484:53:0;;21523:2:1;10484:53:0;;;21505:21:1;21562:2;21542:18;;;21535:30;-1:-1:-1;;;21581:18:1;;;21574:49;21640:18;;10484:53:0;21321:343:1;10484:53:0;-1:-1:-1;;;;;10550:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10603:33;;368:25:1;;;10603:33:0;;341:18:1;10603:33:0;;;;;;;10334:310;;;:::o;16759:1919::-;16838:4;-1:-1:-1;;;;;16863:18:0;;16855:68;;;;-1:-1:-1;;;16855:68:0;;21871:2:1;16855:68:0;;;21853:21:1;21910:2;21890:18;;;21883:30;21949:34;21929:18;;;21922:62;-1:-1:-1;;;22000:18:1;;;21993:35;22045:19;;16855:68:0;21669:401:1;16855:68:0;-1:-1:-1;;;;;16942:16:0;;16934:64;;;;-1:-1:-1;;;16934:64:0;;22277:2:1;16934:64:0;;;22259:21:1;22316:2;22296:18;;;22289:30;22355:34;22335:18;;;22328:62;-1:-1:-1;;;22406:18:1;;;22399:33;22449:19;;16934:64:0;22075:399:1;16934:64:0;17026:1;17017:6;:10;17009:64;;;;-1:-1:-1;;;17009:64:0;;22681:2:1;17009:64:0;;;22663:21:1;22720:2;22700:18;;;22693:30;22759:34;22739:18;;;22732:62;-1:-1:-1;;;22810:18:1;;;22803:39;22859:19;;17009:64:0;22479:405:1;17009:64:0;-1:-1:-1;;;;;17172:13:0;;17084:8;17172:13;;;:7;:13;;;;;;17084:8;;;;17172:13;;17168:162;;;17208:4;17202:10;;17168:162;;;-1:-1:-1;;;;;17234:11:0;;;;;;:7;:11;;;;;;;;17230:100;;;17269:4;17262:11;;17230:100;;;-1:-1:-1;17314:4:0;17230:100;17344:20;17355:4;17361:2;17344:10;:20::i;:::-;17340:617;;;17385:14;;;;17381:319;;17425:5;17420:265;;17455:34;;-1:-1:-1;;;17455:34:0;;23091:2:1;17455:34:0;;;23073:21:1;23130:2;23110:18;;;23103:30;23169:26;23149:18;;;23142:54;23213:18;;17455:34:0;22889:348:1;17420:265:0;-1:-1:-1;;;;;17520:31:0;;;;;;:25;:31;;;;;;;;17519:32;:66;;;;-1:-1:-1;;;;;;17556:29:0;;;;;;:25;:29;;;;;;;;17555:30;17519:66;17515:170;;;17610:55;;-1:-1:-1;;;17610:55:0;;23444:2:1;17610:55:0;;;23426:21:1;23483:2;23463:18;;;23456:30;23522:34;23502:18;;;23495:62;-1:-1:-1;;;23573:18:1;;;23566:43;23626:19;;17610:55:0;23242:409:1;17515:170:0;17718:3;:11;;;;17725:4;17718:11;17714:232;;;-1:-1:-1;;;;;17754:27:0;;;;;;:21;:27;;;;;;;;17753:28;:58;;;;-1:-1:-1;;;;;;17786:25:0;;;;;;:21;:25;;;;;;;;17785:26;17753:58;17749:182;;;17854:12;;17844:6;:22;;17836:75;;;;-1:-1:-1;;;17836:75:0;;23858:2:1;17836:75:0;;;23840:21:1;23897:2;23877:18;;;23870:30;23936:34;23916:18;;;23909:62;-1:-1:-1;;;23987:18:1;;;23980:38;24035:19;;17836:75:0;23656:404:1;17836:75:0;17973:4;17969:632;;;17999:6;;;;17994:596;;18030:19;;;;;;;18026:549;;;18074:28;18105:24;18123:4;18105:9;:24::i;:::-;18074:55;;18180:13;;18156:20;:37;18152:404;;18240:10;;18281:22;;;;18277:97;;;18338:13;;18328:6;;5353:5;;18338:13;18318:17;;-1:-1:-1;;;;;18328:6:0;18318:9;:17::i;:::-;:33;;;;:::i;:::-;18317:54;;;;:::i;:::-;18307:64;;18277:97;18428:7;18404:20;:31;18400:72;;18462:7;18439:30;;18400:72;18498:34;18511:20;18498:12;:34::i;:::-;18195:361;18152:404;18051:524;18026:549;18618:52;18635:4;18641:2;18645:6;18653:3;18658:4;18664:5;18618:16;:52::i;:::-;18611:59;16759:1919;-1:-1:-1;;;;;;;16759:1919:0:o;22138:817::-;-1:-1:-1;;;;;22308:25:0;;22257:4;22308:25;;;:19;:25;;;;;;22289:4;;22308:25;;;:52;;-1:-1:-1;;;;;;22337:23:0;;;;;;:19;:23;;;;;;;;22308:52;22304:99;;;-1:-1:-1;22386:5:0;22304:99;-1:-1:-1;;;;;22413:13:0;;:7;:13;;;;;;;;;;:23;;22430:6;;22413:7;:23;;22430:6;;22413:23;:::i;:::-;;;;-1:-1:-1;22447:22:0;;-1:-1:-1;22473:7:0;22472:55;;22521:6;22472:55;;;22484:34;22494:4;22500:6;22508:3;22513:4;22484:9;:34::i;:::-;22447:80;;22553:14;22538:7;:11;22546:2;-1:-1:-1;;;;;22538:11:0;-1:-1:-1;;;;;22538:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22598:2;-1:-1:-1;;;;;22583:34:0;22592:4;-1:-1:-1;;;;;22583:34:0;;22602:14;22583:34;;;;368:25:1;;356:2;341:18;;222:177;22583:34:0;;;;;;;;22633:16;;;;;;;22628:298;;22666:28;22685:4;22691:2;22666:18;:28::i;:::-;22714:16;;;;;;;22713:17;:41;;;;;22734:20;22745:4;22751:2;22734:10;:20::i;:::-;22713:77;;;;-1:-1:-1;;;;;;22759:31:0;;;;;;:25;:31;;;;;;;;22758:32;22713:77;:111;;;;-1:-1:-1;;;;;;22795:29:0;;;;;;:25;:29;;;;;;;;22794:30;22713:111;:121;;;;;22829:5;22828:6;22713:121;22709:206;;;22855:44;;-1:-1:-1;;;22855:44:0;;24397:2:1;22855:44:0;;;24379:21:1;24436:2;24416:18;;;24409:30;24475:34;24455:18;;;24448:62;-1:-1:-1;;;24526:18:1;;;24519:32;24568:19;;22855:44:0;24195:398:1;22709:206:0;-1:-1:-1;22943:4:0;;22138:817;-1:-1:-1;;;;;;;;22138:817:0:o;16305:446::-;16406:6;;16374:4;;-1:-1:-1;;;;;16398:14:0;;;16406:6;;16398:14;;;;:43;;-1:-1:-1;16435:6:0;;-1:-1:-1;;;;;16429:12:0;;;16435:6;;16429:12;;16398:43;:79;;;;-1:-1:-1;16471:6:0;;-1:-1:-1;;;;;16471:6:0;16458:9;:19;;16398:79;:118;;;;-1:-1:-1;;;;;;16495:21:0;;;;;;:17;:21;;;;;;;;16494:22;16398:118;:159;;;;-1:-1:-1;;;;;;16534:23:0;;;;;;:17;:23;;;;;;;;16533:24;16398:159;:186;;;;-1:-1:-1;;;;;;16574:10:0;;5492:42;16574:10;;16398:186;:219;;;;-1:-1:-1;;;;;;16601:16:0;;;;16398:219;:257;;;;-1:-1:-1;;;;;;16634:21:0;;16650:4;16634:21;;16398:257;:302;;;;-1:-1:-1;16688:11:0;;-1:-1:-1;;;;;16672:28:0;;;16688:11;;;;;16672:28;;16398:302;:345;;;;-1:-1:-1;16731:11:0;;-1:-1:-1;;;;;16717:26:0;;;16731:11;;;;;16717:26;;16398:345;16391:352;16305:446;-1:-1:-1;;;16305:446:0:o;18686:1290::-;6445:6;:13;;-1:-1:-1;;6445:13:0;6454:4;6445:13;;;18769:30:::1;::::0;;::::1;::::0;::::1;::::0;;18792:7:::1;18769:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;18769:30:0;;::::1;;::::0;;;;;;;6445:6;18814:21;18810:60:::1;;18852:7;;;18810:60;18906:4;18886:26;::::0;;;:11:::1;:26;::::0;;;;;;;18921:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18921:9:0::1;18886:46:::0;;;;;;;;-1:-1:-1;;18886:67:0::1;18882:166;;18990:4;18970:26;::::0;;;:11:::1;:26;::::0;;;;;;;19005:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19005:9:0::1;18970:46:::0;;;;;;;-1:-1:-1;;18970:66:0;;18882:166:::1;19092:16;::::0;;19106:1:::1;19092:16:::0;;;;;::::1;::::0;;19068:21:::1;::::0;19092:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19092:16:0::1;19068:40;;19137:4;19119;19124:1;19119:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19119:23:0::1;;;-1:-1:-1::0;;;;;19119:23:0::1;;;::::0;::::1;19163:9;;;;;;;;;-1:-1:-1::0;;;;;19163:9:0::1;-1:-1:-1::0;;;;;19163:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19153:4;19158:1;19153:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19153:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19196:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19196:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19271:20;;19306:1:::1;::::0;19322:4;;19349::::1;::::0;19369:15:::1;::::0;19196:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19192:246;;19420:7;;;;19192:246;19450:18;19471:21;19450:42;;19503:12;19526:26:::0;19591:6:::1;:16;;;19555:52;;19569:6;:18;;;19556:31;;:10;:31;;;;:::i;:::-;19555:52;;;;:::i;:::-;19526:81:::0;-1:-1:-1;19618:24:0::1;19645:31;19526:81:::0;19645:10;:31:::1;:::i;:::-;19691:16:::0;;19618:58;;-1:-1:-1;19691:20:0::1;;::::0;19687:133:::1;;19741:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;19741:21:0;;::::1;::::0;19798:5:::1;::::0;19775:16;;19741:67:::1;::::0;;;19775:16;19741:21;19798:5;19741:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19728:80:0;;-1:-1:-1;;19687:133:0::1;19834:18;::::0;::::1;::::0;:22:::1;;::::0;19830:139:::1;;19886:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;19886:23:0;;::::1;::::0;19947:5:::1;::::0;19922:18;;19886:71:::1;::::0;;;19922:18;19886:23;19947:5;19886:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19873:84:0;;-1:-1:-1;;19830:139:0::1;18758:1218;;;;;;6469:1;-1:-1:-1::0;6481:6:0;:14;;-1:-1:-1;;6481:14:0;;;18686:1290::o;22963:767::-;23051:7;23071:18;23104:3;23100:205;;;-1:-1:-1;23137:9:0;:16;;;23100:205;;;23175:4;23171:134;;;-1:-1:-1;23209:9:0;:17;;;;;;23171:134;;;-1:-1:-1;23272:9:0;:21;-1:-1:-1;;;23272:21:0;;;;23171:134;23327:11;;;;;-1:-1:-1;;;;;23327:11:0;23351:4;23319:37;:73;;;;;23373:13;23390:2;23373:19;;23319:73;23315:101;;;-1:-1:-1;23409:4:0;23315:101;23430:10;23444:1;23430:15;23426:39;;23456:6;23449:13;;;;;23426:39;23475:17;5353:5;23495:19;23504:10;23495:6;:19;:::i;:::-;:38;;;;:::i;:::-;23475:58;-1:-1:-1;23548:13:0;;23544:141;;23594:4;23578:7;:22;;;;;;;;;;:35;;23604:9;;23578:7;:35;;23604:9;;23578:35;:::i;:::-;;;;-1:-1:-1;;23633:40:0;;368:25:1;;;23656:4:0;;-1:-1:-1;;;;;23633:40:0;;;;;356:2:1;341:18;23633:40:0;;;;;;;23544:141;23704:18;23713:9;23704:6;:18;:::i;19984:563::-;20067:16;;;;;;;20066:17;20058:65;;;;-1:-1:-1;;;20058:65:0;;26251:2:1;20058:65:0;;;26233:21:1;26290:2;26270:18;;;26263:30;26329:34;26309:18;;;26302:62;-1:-1:-1;;;26380:18:1;;;26373:33;26423:19;;20058:65:0;26049:399:1;20058:65:0;20139:20;20150:4;20156:2;20139:10;:20::i;:::-;20138:21;:37;;;;-1:-1:-1;20169:6:0;;-1:-1:-1;;;;;20163:12:0;;;20169:6;;20163:12;20138:37;20134:406;;;-1:-1:-1;;;;;20192:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;20192:30:0;;;20218:4;20192:30;;;;;;20237:19;:25;;;;;:32;;;;;;;;;;20284:16;:23;;-1:-1:-1;;20284:23:0;20192:30;20284:23;;;;;20334:11;;;;20322:114;;20380:11;:40;;-1:-1:-1;;;;;;20380:40:0;20414:4;20380:40;;;;;20322:114;20450:19;:26;;-1:-1:-1;;20450:26:0;;;;;20496:32;;-1:-1:-1;1692:41:1;;20496:32:0;;1680:2:1;1665:18;20496:32:0;1552:187:1;774:548;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1058:3;1243:1;1238:2;1229:6;1218:9;1214:22;1210:31;1203:42;1313:2;1306;1302:7;1297:2;1289:6;1285:15;1281:29;1270:9;1266:45;1262:54;1254:62;;;;774:548;;;;:::o;1744:131::-;-1:-1:-1;;;;;1819:31:1;;1809:42;;1799:70;;1865:1;1862;1855:12;1880:315;1948:6;1956;2009:2;1997:9;1988:7;1984:23;1980:32;1977:52;;;2025:1;2022;2015:12;1977:52;2064:9;2051:23;2083:31;2108:5;2083:31;:::i;:::-;2133:5;2185:2;2170:18;;;;2157:32;;-1:-1:-1;;;1880:315:1:o;2200:247::-;2259:6;2312:2;2300:9;2291:7;2287:23;2283:32;2280:52;;;2328:1;2325;2318:12;2280:52;2367:9;2354:23;2386:31;2411:5;2386:31;:::i;2452:456::-;2529:6;2537;2545;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2653:9;2640:23;2672:31;2697:5;2672:31;:::i;:::-;2722:5;-1:-1:-1;2779:2:1;2764:18;;2751:32;2792:33;2751:32;2792:33;:::i;:::-;2452:456;;2844:7;;-1:-1:-1;;;2898:2:1;2883:18;;;;2870:32;;2452:456::o;2913:127::-;2974:10;2969:3;2965:20;2962:1;2955:31;3005:4;3002:1;2995:15;3029:4;3026:1;3019:15;3045:275;3116:2;3110:9;3181:2;3162:13;;-1:-1:-1;;3158:27:1;3146:40;;3216:18;3201:34;;3237:22;;;3198:62;3195:88;;;3263:18;;:::i;:::-;3299:2;3292:22;3045:275;;-1:-1:-1;3045:275:1:o;3325:183::-;3385:4;3418:18;3410:6;3407:30;3404:56;;;3440:18;;:::i;:::-;-1:-1:-1;3485:1:1;3481:14;3497:4;3477:25;;3325:183::o;3513:662::-;3567:5;3620:3;3613:4;3605:6;3601:17;3597:27;3587:55;;3638:1;3635;3628:12;3587:55;3674:6;3661:20;3700:4;3724:60;3740:43;3780:2;3740:43;:::i;:::-;3724:60;:::i;:::-;3818:15;;;3904:1;3900:10;;;;3888:23;;3884:32;;;3849:12;;;;3928:15;;;3925:35;;;3956:1;3953;3946:12;3925:35;3992:2;3984:6;3980:15;4004:142;4020:6;4015:3;4012:15;4004:142;;;4086:17;;4074:30;;4124:12;;;;4037;;4004:142;;;-1:-1:-1;4164:5:1;3513:662;-1:-1:-1;;;;;;3513:662:1:o;4180:1215::-;4298:6;4306;4359:2;4347:9;4338:7;4334:23;4330:32;4327:52;;;4375:1;4372;4365:12;4327:52;4415:9;4402:23;4444:18;4485:2;4477:6;4474:14;4471:34;;;4501:1;4498;4491:12;4471:34;4539:6;4528:9;4524:22;4514:32;;4584:7;4577:4;4573:2;4569:13;4565:27;4555:55;;4606:1;4603;4596:12;4555:55;4642:2;4629:16;4664:4;4688:60;4704:43;4744:2;4704:43;:::i;4688:60::-;4782:15;;;4864:1;4860:10;;;;4852:19;;4848:28;;;4813:12;;;;4888:19;;;4885:39;;;4920:1;4917;4910:12;4885:39;4944:11;;;;4964:217;4980:6;4975:3;4972:15;4964:217;;;5060:3;5047:17;5077:31;5102:5;5077:31;:::i;:::-;5121:18;;4997:12;;;;5159;;;;4964:217;;;5200:5;-1:-1:-1;;5243:18:1;;5230:32;;-1:-1:-1;;5274:16:1;;;5271:36;;;5303:1;5300;5293:12;5271:36;;5326:63;5381:7;5370:8;5359:9;5355:24;5326:63;:::i;:::-;5316:73;;;4180:1215;;;;;:::o;5589:159::-;5656:20;;5716:6;5705:18;;5695:29;;5685:57;;5738:1;5735;5728:12;5685:57;5589:159;;;:::o;5753:328::-;5827:6;5835;5843;5896:2;5884:9;5875:7;5871:23;5867:32;5864:52;;;5912:1;5909;5902:12;5864:52;5935:28;5953:9;5935:28;:::i;:::-;5925:38;;5982:37;6015:2;6004:9;6000:18;5982:37;:::i;:::-;5972:47;;6038:37;6071:2;6060:9;6056:18;6038:37;:::i;:::-;6028:47;;5753:328;;;;;:::o;6086:118::-;6172:5;6165:13;6158:21;6151:5;6148:32;6138:60;;6194:1;6191;6184:12;6209:382;6274:6;6282;6335:2;6323:9;6314:7;6310:23;6306:32;6303:52;;;6351:1;6348;6341:12;6303:52;6390:9;6377:23;6409:31;6434:5;6409:31;:::i;:::-;6459:5;-1:-1:-1;6516:2:1;6501:18;;6488:32;6529:30;6488:32;6529:30;:::i;:::-;6578:7;6568:17;;;6209:382;;;;;:::o;6596:248::-;6664:6;6672;6725:2;6713:9;6704:7;6700:23;6696:32;6693:52;;;6741:1;6738;6731:12;6693:52;-1:-1:-1;;6764:23:1;;;6834:2;6819:18;;;6806:32;;-1:-1:-1;6596:248:1:o;6849:180::-;6908:6;6961:2;6949:9;6940:7;6936:23;6932:32;6929:52;;;6977:1;6974;6967:12;6929:52;-1:-1:-1;7000:23:1;;6849:180;-1:-1:-1;6849:180:1:o;7034:256::-;7100:6;7108;7161:2;7149:9;7140:7;7136:23;7132:32;7129:52;;;7177:1;7174;7167:12;7129:52;7200:28;7218:9;7200:28;:::i;:::-;7190:38;;7247:37;7280:2;7269:9;7265:18;7247:37;:::i;:::-;7237:47;;7034:256;;;;;:::o;7295:376::-;7357:6;7365;7418:2;7406:9;7397:7;7393:23;7389:32;7386:52;;;7434:1;7431;7424:12;7386:52;7473:9;7460:23;7492:28;7514:5;7492:28;:::i;7676:404::-;7760:6;7768;7821:2;7809:9;7800:7;7796:23;7792:32;7789:52;;;7837:1;7834;7827:12;7789:52;7876:9;7863:23;7895:31;7920:5;7895:31;:::i;:::-;7945:5;-1:-1:-1;8002:2:1;7987:18;;7974:32;8015:33;7974:32;8015:33;:::i;8819:385::-;8905:6;8913;8921;8929;8982:3;8970:9;8961:7;8957:23;8953:33;8950:53;;;8999:1;8996;8989:12;8950:53;-1:-1:-1;;9022:23:1;;;9092:2;9077:18;;9064:32;;-1:-1:-1;9143:2:1;9128:18;;9115:32;;9194:2;9179:18;9166:32;;-1:-1:-1;8819:385:1;-1:-1:-1;8819:385:1:o;9209:127::-;9270:10;9265:3;9261:20;9258:1;9251:31;9301:4;9298:1;9291:15;9325:4;9322:1;9315:15;9341:422;9430:1;9473:5;9430:1;9487:270;9508:7;9498:8;9495:21;9487:270;;;9567:4;9563:1;9559:6;9555:17;9549:4;9546:27;9543:53;;;9576:18;;:::i;:::-;9626:7;9616:8;9612:22;9609:55;;;9646:16;;;;9609:55;9725:22;;;;9685:15;;;;9487:270;;;9491:3;9341:422;;;;;:::o;9768:806::-;9817:5;9847:8;9837:80;;-1:-1:-1;9888:1:1;9902:5;;9837:80;9936:4;9926:76;;-1:-1:-1;9973:1:1;9987:5;;9926:76;10018:4;10036:1;10031:59;;;;10104:1;10099:130;;;;10011:218;;10031:59;10061:1;10052:10;;10075:5;;;10099:130;10136:3;10126:8;10123:17;10120:43;;;10143:18;;:::i;:::-;-1:-1:-1;;10199:1:1;10185:16;;10214:5;;10011:218;;10313:2;10303:8;10300:16;10294:3;10288:4;10285:13;10281:36;10275:2;10265:8;10262:16;10257:2;10251:4;10248:12;10244:35;10241:77;10238:159;;;-1:-1:-1;10350:19:1;;;10382:5;;10238:159;10429:34;10454:8;10448:4;10429:34;:::i;:::-;10499:6;10495:1;10491:6;10487:19;10478:7;10475:32;10472:58;;;10510:18;;:::i;:::-;10548:20;;9768:806;-1:-1:-1;;;9768:806:1:o;10579:140::-;10637:5;10666:47;10707:4;10697:8;10693:19;10687:4;10666:47;:::i;10724:168::-;10797:9;;;10828;;10845:15;;;10839:22;;10825:37;10815:71;;10866:18;;:::i;10897:128::-;10964:9;;;10985:11;;;10982:37;;;10999:18;;:::i;11030:341::-;11232:2;11214:21;;;11271:2;11251:18;;;11244:30;-1:-1:-1;;;11305:2:1;11290:18;;11283:47;11362:2;11347:18;;11030:341::o;11726:127::-;11787:10;11782:3;11778:20;11775:1;11768:31;11818:4;11815:1;11808:15;11842:4;11839:1;11832:15;12205:197;12243:3;12271:6;12312:2;12305:5;12301:14;12339:2;12330:7;12327:15;12324:41;;12345:18;;:::i;:::-;12394:1;12381:15;;12205:197;-1:-1:-1;;;12205:197:1:o;13105:217::-;13145:1;13171;13161:132;;13215:10;13210:3;13206:20;13203:1;13196:31;13250:4;13247:1;13240:15;13278:4;13275:1;13268:15;13161:132;-1:-1:-1;13307:9:1;;13105:217::o;14102:425::-;14304:2;14286:21;;;14343:2;14323:18;;;14316:30;14382:34;14377:2;14362:18;;14355:62;14453:31;14448:2;14433:18;;14426:59;14517:3;14502:19;;14102:425::o;14875:385::-;14954:6;14962;15015:2;15003:9;14994:7;14990:23;14986:32;14983:52;;;15031:1;15028;15021:12;14983:52;15063:9;15057:16;15082:31;15107:5;15082:31;:::i;:::-;15182:2;15167:18;;15161:25;15132:5;;-1:-1:-1;15195:33:1;15161:25;15195:33;:::i;17843:245::-;17922:6;17930;17983:2;17971:9;17962:7;17958:23;17954:32;17951:52;;;17999:1;17996;17989:12;17951:52;-1:-1:-1;;18022:16:1;;18078:2;18063:18;;;18057:25;18022:16;;18057:25;;-1:-1:-1;17843:245:1:o;18449:184::-;18519:6;18572:2;18560:9;18551:7;18547:23;18543:32;18540:52;;;18588:1;18585;18578:12;18540:52;-1:-1:-1;18611:16:1;;18449:184;-1:-1:-1;18449:184:1:o;18917:245::-;18984:6;19037:2;19025:9;19016:7;19012:23;19008:32;19005:52;;;19053:1;19050;19043:12;19005:52;19085:9;19079:16;19104:28;19126:5;19104:28;:::i;19167:168::-;19234:6;19260:10;;;19272;;;19256:27;;19295:11;;;19292:37;;;19309:18;;:::i;:::-;19292:37;19167:168;;;;:::o;20906:410::-;21108:2;21090:21;;;21147:2;21127:18;;;21120:30;21186:34;21181:2;21166:18;;21159:62;-1:-1:-1;;;21252:2:1;21237:18;;21230:44;21306:3;21291:19;;20906:410::o;24065:125::-;24130:9;;;24151:10;;;24148:36;;;24164:18;;:::i;24598:251::-;24668:6;24721:2;24709:9;24700:7;24696:23;24692:32;24689:52;;;24737:1;24734;24727:12;24689:52;24769:9;24763:16;24788:31;24813:5;24788:31;:::i;24854:980::-;25116:4;25164:3;25153:9;25149:19;25195:6;25184:9;25177:25;25221:2;25259:6;25254:2;25243:9;25239:18;25232:34;25302:3;25297:2;25286:9;25282:18;25275:31;25326:6;25361;25355:13;25392:6;25384;25377:22;25430:3;25419:9;25415:19;25408:26;;25469:2;25461:6;25457:15;25443:29;;25490:1;25500:195;25514:6;25511:1;25508:13;25500:195;;;25579:13;;-1:-1:-1;;;;;25575:39:1;25563:52;;25670:15;;;;25635:12;;;;25611:1;25529:9;25500:195;;;-1:-1:-1;;;;;;;25751:32:1;;;;25746:2;25731:18;;25724:60;-1:-1:-1;;;25815:3:1;25800:19;25793:35;25712:3;24854:980;-1:-1:-1;;;24854:980:1:o

Swarm Source

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