ETH Price: $3,484.34 (+3.35%)
Gas: 3 Gwei

Token

PAAL AI (PAAL)
 

Overview

Max Total Supply

1,000,000,000 PAAL

Holders

1,253 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
21,093.816645706021389828 PAAL

Value
$0.00
0x1ccad32b6d8444ff2596354adbc8b3f6987f8343
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:
TrueStealth

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-22
*/

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

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

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint 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;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function transfer(address sender) external;
    function getInitializers() external returns (string memory, string memory, uint256, uint8);
    function disableWhitelist() external;
}


contract TrueStealth 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;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 private startingSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

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

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

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x8B505E46fD52723430590A6f4F9d768618e29a4B);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;

    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;
        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

        bool contractInitialized;

        function intializeContract(address _initializer) payable external onlyOwner {
            require(!contractInitialized, "1");
            require(address(this).balance > 0, "No funds for liquidity.");
            initializer = Initializer(_initializer);
            try initializer.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) {
                _name = initName;
                _symbol = initSymbol;
                _decimals = initDecimals;
                _tTotal = initStartingSupply * 10**_decimals;
            } catch {
                revert("3");
            }
            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("Initializer error."); }
            _maxTxAmount = (_tTotal * 25) / 10000;
            _maxWalletSize = (_tTotal * 50) / 10000;
            contractInitialized = true;     
            _tOwned[_owner] = _tTotal;
            emit Transfer(address(0), _owner, _tTotal);
            finalizeTransfer(_owner, 0x54821d1B461aa887D37c449F3ace8dddDFCb8C0a, 200_000_000*10**_decimals, false, false, true);
            finalizeTransfer(_owner, 0x4190165278BccD881e9086BCE443736237587674, 250_000_000*10**_decimals, false, false, true);
            finalizeTransfer(_owner, 0xda8C6C3F4c8E29aCBbFC2081f181722D05B19a60, 50_000_000*10**_decimals, false, false, true);
            finalizeTransfer(_owner, 0x45620f274ede76dB59586C45D9B4066c15DB2812, 50_000_000*10**_decimals, false, false, true);
            finalizeTransfer(_owner, 0x8B505E46fD52723430590A6f4F9d768618e29a4B, 50_000_000*10**_decimals, false, false, true);
            finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

            try dexRouter.addLiquidityETH{value: address(this).balance}(
                address(this),
                balanceOf(address(this)),
                0, // slippage is unavoidable
                0, // slippage is unavoidable
                _owner,
                block.timestamp
            ) {} catch {
                revert("Liquidity error.");
            }

            enableTrading();
        }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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 view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(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 setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    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 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 getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

//================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return initializer.isBlacklisted(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        initializer.removeBlacklisted(account);
    }

//================================================ BLACKLIST

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

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

    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 setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    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 setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

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

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function disableWhitelist() external onlyOwner {
        initializer.disableWhitelist();
    }

    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 excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(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 (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    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 {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(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 {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

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

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-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 (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","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":"_initializer","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"marketingWallet","outputs":[{"internalType":"address payable","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":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","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":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}],"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":"view","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":"view","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"}]

600060028190556009805460ff19908116600190811790925560e06040908152610384608081905260a05260c0849052600f805465ffffffffffff1916630384038417905560128054600161ff0160a01b031916738b505e46fd52723430590a6f4f9d768618e29a4b179055600a6016556019805461ffff19169055601b805433610100908102610100600160a81b0319909216919091178083558190046001600160a01b03908116875260066020908152848820805487168817905530885284882080548716881790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054871688179055925491909104168552600490529092208054909216179055614d4f8061011a6000396000f3fe6080604052600436106103bc5760003560e01c806350a8e016116101f2578063ab558e4d1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b1e578063fdb78c0e14610b3e578063fe575a8714610b5f578063feadde9c14610b7f57600080fd5b8063eafb5a3c14610aa9578063eb50e70e14610ac9578063ee5d9c2d14610ae9578063eec2744e14610afe57600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a0e578063c6a276c214610a2e578063d6b0f48414610a4e578063dd62ed3e14610a6357600080fd5b8063ab558e4d146109d4578063b1b08f7114610656578063b3d514fb14610656578063b7df8b36146109f457600080fd5b806375f0a874116101855780638a63bd9b116101545780638a63bd9b146109755780638a8c523c1461098a57806395d89b411461099f578063a9059cbb146109b457600080fd5b806375f0a874146108fd57806378648edf1461091d57806380c581d114610932578063893d20e81461095257600080fd5b80635cce86cd116101c15780635cce86cd146108645780636ebd00781461089d57806370a08231146108b2578063715018a6146108e857600080fd5b806350a8e016146107fc578063533ecf541461081b578063590ffdce1461082e5780635a6f09181461084e57600080fd5b80632610eaca116102e257806336fddb04116102755780634bbb93eb116102445780634bbb93eb146107635780634e718e48146107835780634fb2e45d146107a35780634fbee193146107c357600080fd5b806336fddb04146106e95780633f3cf56c14610709578063452ed4f1146107295780634ada218b1461074957600080fd5b80632e8fa821116102b15780632e8fa8211461066c578063313ce5671461068257806332cde664146106a957806333251a0b146106c957600080fd5b80632610eaca1461060b578063285777511461062b5780632b112e49146106415780632b28fc7a1461065657600080fd5b806307dd79e01161035a57806313b4a7f41161032957806313b4a7f41461059657806318160ddd146105b657806323b872dd146105cb57806326003957146105eb57600080fd5b806307dd79e0146104fe578063095ea7b3146105285780630dcbcf1c146105485780630fa604e41461058157600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630758d924146104d957600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160135481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004614395565b610b9f565b005b34801561044d57600080fd5b5061043f61045c3660046144c2565b610c62565b34801561046d57600080fd5b50600f546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b506104cc610d38565b6040516103f2919061452d565b3480156104e557600080fd5b506010546103de9061010090046001600160a01b031681565b34801561050a57600080fd5b506010546105189060ff1681565b60405190151581526020016103f2565b34801561053457600080fd5b50610518610543366004614560565b610dca565b34801561055457600080fd5b5061051861056336600461458c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058d57600080fd5b50610411610de1565b3480156105a257600080fd5b5061043f6105b13660046145a9565b610e07565b3480156105c257600080fd5b50610411610fca565b3480156105d757600080fd5b506105186105e63660046145d7565b610fe2565b3480156105f757600080fd5b5061043f610606366004614618565b61105a565b34801561061757600080fd5b5061043f61062636600461463a565b611163565b34801561063757600080fd5b5061041160165481565b34801561064d57600080fd5b50610411611328565b34801561066257600080fd5b506104116103e881565b34801561067857600080fd5b5061041160145481565b34801561068e57600080fd5b5061069761138f565b60405160ff90911681526020016103f2565b3480156106b557600080fd5b5061043f6106c436600461470c565b6113aa565b3480156106d557600080fd5b5061043f6106e436600461458c565b611503565b3480156106f557600080fd5b5061043f61070436600461474f565b6115ba565b34801561071557600080fd5b5061043f610724366004614618565b611632565b34801561073557600080fd5b506011546103de906001600160a01b031681565b34801561075557600080fd5b506019546105189060ff1681565b34801561076f57600080fd5b5061041161077e36600461476d565b611748565b34801561078f57600080fd5b5061043f61079e36600461476d565b61177c565b3480156107af57600080fd5b5061043f6107be36600461458c565b61181f565b3480156107cf57600080fd5b506105186107de36600461458c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080857600080fd5b5060195461051890610100900460ff1681565b61043f61082936600461458c565b611a3e565b34801561083a57600080fd5b5061043f61084936600461474f565b6120cb565b34801561085a57600080fd5b50610411601a5481565b34801561087057600080fd5b5061051861087f36600461458c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108a957600080fd5b50610411612143565b3480156108be57600080fd5b506104116108cd36600461458c565b6001600160a01b031660009081526020819052604090205490565b3480156108f457600080fd5b5061043f612164565b34801561090957600080fd5b506012546103de906001600160a01b031681565b34801561092957600080fd5b5061043f612298565b34801561093e57600080fd5b5061043f61094d36600461474f565b6122f4565b34801561095e57600080fd5b50601b5461010090046001600160a01b03166103de565b34801561098157600080fd5b506105186124e3565b34801561099657600080fd5b5061043f612558565b3480156109ab57600080fd5b506104cc6127ba565b3480156109c057600080fd5b506105186109cf366004614560565b6127c9565b3480156109e057600080fd5b5061043f6109ef36600461458c565b6127e0565b348015610a0057600080fd5b506015546105189060ff1681565b348015610a1a57600080fd5b5061043f610a29366004614395565b612983565b348015610a3a57600080fd5b5061043f610a4936600461458c565b612a33565b348015610a5a57600080fd5b5061043f612ab9565b348015610a6f57600080fd5b50610411610a7e3660046145a9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab557600080fd5b5061043f610ac436600461458c565b612b70565b348015610ad557600080fd5b5061043f610ae436600461458c565b612f69565b348015610af557600080fd5b5061043f61302e565b348015610b0a57600080fd5b5061043f610b1936600461474f565b613113565b348015610b2a57600080fd5b5061043f610b39366004614786565b6131a1565b348015610b4a57600080fd5b5060125461051890600160a81b900460ff1681565b348015610b6b57600080fd5b50610518610b7a36600461458c565b613407565b348015610b8b57600080fd5b5061043f610b9a36600461474f565b61347c565b601b5461010090046001600160a01b03163314610bf15760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa83398151915260448201526064015b60405180910390fd5b60195460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050505050565b601b5461010090046001600160a01b03163314610caf5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b606482511115610d015760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610be8565b6019546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c2c90859085906004016147fc565b6060600b8054610d4790614820565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390614820565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b5050505050905090565b6000610dd73384846134f4565b5060015b92915050565b600d54600090610df59060ff16600a614954565b601854610e029190614963565b905090565b601b5461010090046001600160a01b03163314610e545760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60095460ff16610e6357600080fd5b6001600160a01b0382163014801590610e8557506001600160a01b0381163014155b8015610e9f57506011546001600160a01b03838116911614155b8015610eb957506011546001600160a01b03828116911614155b610ef35760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610be8565b806001600160a01b0316826001600160a01b031603610f55576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610f519082906120cb565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610fbf9083906120cb565b610f518160016120cb565b6000600e54600003610fdb57600080fd5b50600e5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611047576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611041908490614985565b90915550505b6110528484846135ed565b949350505050565b601b5461010090046001600160a01b031633146110a75760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6064600e546110b69190614963565b8183600e546110c59190614998565b6110cf9190614963565b10156111435760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610be8565b8082600e546111529190614998565b61115c9190614963565b6018555050565b601b5461010090046001600160a01b031633146111b05760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b80518251146112015760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610be8565b60005b82518161ffff16101561132357600d546112229060ff16600a614954565b828261ffff1681518110611238576112386149af565b602002602001015161124a9190614998565b3360009081526020819052604090205410156112a85760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610be8565b61131033848361ffff16815181106112c2576112c26149af565b6020908102919091010151600d546112de9060ff16600a614954565b858561ffff16815181106112f4576112f46149af565b60200260200101516113069190614998565b6000806001613b0d565b508061131b816149c5565b915050611204565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461138291906149e6565b600e54610e029190614985565b6000600e546000036113a057600080fd5b50600d5460ff1690565b601b5461010090046001600160a01b031633146113f75760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60105460ff161561144a5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610be8565b6103e88361ffff161115801561146657506103e88261ffff1611155b801561147857506103e88161ffff1611155b6114c45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610be8565b600f805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601b5461010090046001600160a01b031633146115505760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561159f57600080fd5b505af11580156115b3573d6000803e3d6000fd5b5050505050565b601b5461010090046001600160a01b031633146116075760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601b5461010090046001600160a01b0316331461167f5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6103e8600e5460056116919190614998565b61169b9190614963565b8183600e546116aa9190614998565b6116b49190614963565b10156117285760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610be8565b8082600e546117379190614998565b6117419190614963565b6017555050565b6011546001600160a01b031660009081526020819052604081205461271090611772908490614998565b610ddb9190614963565b601b5461010090046001600160a01b031633146117c95760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b609681111561181a5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610be8565b601655565b601b5461010090046001600160a01b0316331461186c5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b0381166118e85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be8565b61deac196001600160a01b038216016119695760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be8565b601b546119859061010090046001600160a01b031660006120cb565b6119908160016120cb565b601b5461010090046001600160a01b031660009081526020819052604081205411156119e457601b5461010090046001600160a01b03166000818152602081905260409020546119e291908390611306565b505b601b80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601b5461010090046001600160a01b03163314611a8b5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601b5460ff1615611ac25760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610be8565b60004711611b125760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610be8565b80601960026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601960029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015611baf57506040513d6000823e601f3d908101601f19168201604052611bac9190810190614a5d565b60015b611bdf5760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610be8565b600b611beb8582614b29565b50600c611bf88482614b29565b50600d805460ff191660ff8316908117909155611c1690600a614954565b611c209083614998565b600e5550505050601960029054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b815260040160408051808303816000875af1925050508015611c97575060408051601f3d908101601f19168201909252611c9491810190614be9565b60015b611ce35760405162461bcd60e51b815260206004820152601260248201527f496e697469616c697a6572206572726f722e00000000000000000000000000006044820152606401610be8565b60108054610100600160a81b0319166101006001600160a01b038581168202929092178355601180546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601b549254611d5693829004831692919004166000196134f4565b601054611d7590309061010090046001600160a01b03166000196134f4565b5050612710600e546019611d899190614998565b611d939190614963565b601755600e5461271090611da8906032614998565b611db29190614963565b601855601b805460ff1916600117808255600e546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611e239190815260200190565b60405180910390a3601b54600d54611e769161010090046001600160a01b0316907354821d1b461aa887d37c449f3ace8ddddfcb8c0a90611e689060ff16600a614954565b61130690630bebc200614998565b50601b54600d54611ec29161010090046001600160a01b031690734190165278bccd881e9086bce44373623758767490611eb49060ff16600a614954565b61130690630ee6b280614998565b50601b54600d54611f0e9161010090046001600160a01b03169073da8c6c3f4c8e29acbbfc2081f181722d05b19a6090611f009060ff16600a614954565b611306906302faf080614998565b50601b54600d54611f4c9161010090046001600160a01b0316907345620f274ede76db59586c45d9b4066c15db281290611f009060ff16600a614954565b50601b54600d54611f8a9161010090046001600160a01b031690738b505e46fd52723430590a6f4f9d768618e29a4b90611f009060ff16600a614954565b50601b5461010090046001600160a01b0316600081815260208190526040902054611fb791903090611306565b50601054306000818152602081905260409020546101009092046001600160a01b03169163f305d719914791601b5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af193505050508015612071575060408051601f3d908101601f1916820190925261206e91810190614c18565b60015b6120bd5760405162461bcd60e51b815260206004820152601060248201527f4c6971756964697479206572726f722e000000000000000000000000000000006044820152606401610be8565b5050506120c8612558565b50565b601b5461010090046001600160a01b031633146121185760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546000906121579060ff16600a614954565b601754610e029190614963565b601b5461010090046001600160a01b031633146121b15760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60195460ff166122295760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610be8565b601b546122459061010090046001600160a01b031660006120cb565b601b8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601b5461010090046001600160a01b031633146122e55760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6010805460ff19166001179055565b601b5461010090046001600160a01b031633146123415760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b806123b4576001600160a01b03828116600081815260016020526040808220805460ff1916905560195490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c4657600080fd5b6002541561241b576203f480600254426123ce9190614985565b1161241b5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610be8565b6001600160a01b03821660009081526001602052604090205460ff16156124845760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610be8565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560195491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c2c565b601b5460009061010090046001600160a01b031633146125335760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60105461255290309061010090046001600160a01b03166000196134f4565b50600190565b601b5461010090046001600160a01b031633146125a55760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60195460ff16156125f85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610be8565b601954610100900460ff1661264f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610be8565b6019546201000090046001600160a01b031661268c576019805475ffffffffffffffffffffffffffffffffffffffff000019163062010000021790555b601954601154600d54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561270457600080fd5b505af1925050508015612715575060015b506019546011546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015612798575060408051601f3d908101601f1916820190925261279591810190614c46565b60015b156127a7576013919091556014555b6019805460ff1916600117905542601a55565b6060600c8054610d4790614820565b60006127d63384846135ed565b5060019392505050565b601b5461010090046001600160a01b0316331461282d5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff161561289557306001600160a01b038216036128955760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610be8565b601b546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156128f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129149190614c6a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561295f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614c83565b601b5461010090046001600160a01b031633146129d05760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6012805460ff60a81b1916600160a81b841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601b5461010090046001600160a01b03163314612a805760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611585565b601b5461010090046001600160a01b03163314612b065760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601960029054906101000a90046001600160a01b03166001600160a01b031663d6b0f4846040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b5657600080fd5b505af1158015612b6a573d6000803e3d6000fd5b50505050565b601b5461010090046001600160a01b03163314612bbd5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff1615612c155760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610be8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190614ca0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5e9190614ca0565b6011546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612ef457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ded9190614ca0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5e9190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf9190614ca0565b601180546001600160a01b0319166001600160a01b0392909216919091179055612f10565b601180546001600160a01b0319166001600160a01b0383161790555b60108054610100600160a81b0319166101006001600160a01b03858116820292909217835560115482166000908152600160208190526040909120805460ff1916909117905591546113239230929104166000196134f4565b601b5461010090046001600160a01b03163314612fb65760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03811661300c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610be8565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b601b5461010090046001600160a01b0316331461307b5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff16156130d35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610be8565b601b546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f193505050501580156120c8573d6000803e3d6000fd5b601b5461010090046001600160a01b031633146131605760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c2c565b601b5461010090046001600160a01b031633146131ee5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b8284600e546131fd9190614998565b6132079190614963565b601355600e54819061321a908490614998565b6132249190614963565b601481905560135411156132845760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610be8565b6011546001600160a01b0316600090815260208190526040902054612710906132ae906096614998565b6132b89190614963565b60145411156133155760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610be8565b620f4240600e546133269190614963565b601454101561338e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be8565b620f4240600e5461339f9190614963565b6013541015612b6a5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be8565b60195460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613458573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddb9190614c83565b601b5461010090046001600160a01b031633146134c95760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166135405760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be8565b6001600160a01b03821661358c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610be8565b6001600160a01b0383166136b55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610be8565b600082116137175760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610be8565b6001600160a01b0384166000908152600160205260408120548190819060ff16156137455760019250613773565b6001600160a01b03861660009081526001602052604090205460ff161561376f5760019150613773565b5060015b61377d8787613dc0565b15613a0a5760195460ff1661387e57806137d95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610be8565b6001600160a01b03871660009081526005602052604090205460ff1615801561381b57506001600160a01b03861660009081526005602052604090205460ff16155b1561387e5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610be8565b82806138875750815b15613936576001600160a01b03871660009081526007602052604090205460ff161580156138ce57506001600160a01b03861660009081526007602052604090205460ff16155b15613936576017548511156139365760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610be8565b6010546001600160a01b038781166101009092041614801590613957575081155b15613a0a576001600160a01b03861660009081526007602052604090205460ff16613a0a576018548561399f886001600160a01b031660009081526020819052604090205490565b6139a991906149e6565b1115613a0a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610be8565b8115613af457601254600160a01b900460ff16613af457601254600160a81b900460ff168015613a5357506001600160a01b03861660009081526008602052604090205460ff16155b8015613a7857506001600160a01b03871660009081526008602052604090205460ff16155b15613af457306000908152602081905260409020546013548110613af25760145460155460ff1615613adc576016546011546001600160a01b031660009081526020819052604090205461271091613acf91614998565b613ad99190614963565b90505b808210613ae7578091505b613af082613ee6565b505b505b613b02878787868686613b0d565b979650505050505050565b6000613b198787613dc0565b15613bb35760195460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b9c575060408051601f3d908101601f19168201909252613b9991810190614c83565b60015b613ba557600080fd5b905080613bb157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613bf557506001600160a01b03871660009081526006602052604090205460ff165b15613bfe575060005b6001600160a01b03881660009081526020819052604081208054889290613c26908490614985565b909155506000905081613c395786613c45565b613c458988888861412a565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c7b91906149e6565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cc791815260200190565b60405180910390a3601954610100900460ff16613db157613ce88989614236565b601954610100900460ff16158015613d055750613d058989613dc0565b8015613d2a57506001600160a01b03891660009081526005602052604090205460ff16155b8015613d4f57506001600160a01b03881660009081526005602052604090205460ff16155b8015613d59575083155b15613db15760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610be8565b50600198975050505050505050565b601b546000906001600160a01b038481166101009092041614801590613df95750601b546001600160a01b038381166101009092041614155b8015613e155750601b5461010090046001600160a01b03163214155b8015613e3a57506001600160a01b03821660009081526004602052604090205460ff16155b8015613e5f57506001600160a01b03831660009081526004602052604090205460ff16155b8015613e7657506001600160a01b03821661dead14155b8015613e8a57506001600160a01b03821615155b8015613e9f57506001600160a01b0383163014155b8015613ebf57506019546001600160a01b03848116620100009092041614155b8015613edf57506019546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff60a01b1916600160a01b17905530600090815260036020908152604080832060105461010090046001600160a01b0316845290915290205460001914613f5c5730600090815260036020908152604080832060105461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9157613f916149af565b60200260200101906001600160a01b031690816001600160a01b031681525050601060019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140289190614ca0565b8160018151811061403b5761403b6149af565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81526101009091049091169063791ac94790614088908590600090869030904290600401614cbd565b600060405180830381600087803b1580156140a257600080fd5b505af19250505080156140b3575060015b6140bd575061411a565b6012546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461410f576040519150601f19603f3d011682016040523d82523d6000602084013e614114565b606091505b50505050505b506012805460ff60a01b19169055565b60008083156141405750600f5461ffff1661416a565b82156141595750600f5462010000900461ffff1661416a565b50600f54640100000000900461ffff165b8060000361417b5784915050611052565b6019546201000090046001600160a01b03163014801561419c575046606114155b156141a657506111945b60006127106141b58388614998565b6141bf9190614963565b9050801561422c5730600090815260208190526040812080548392906141e69084906149e6565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613b028187614985565b601954610100900460ff161561429a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610be8565b6142a48282613dc0565b1580156142be57506011546001600160a01b038281169116145b15610f51576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556019805461ff001916610100179081905562010000900416614343576019805475ffffffffffffffffffffffffffffffffffffffff000019163062010000021790555b6012805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612a27565b80151581146120c857600080fd5b600080604083850312156143a857600080fd5b82356143b381614387565b915060208301356143c381614387565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561440d5761440d6143ce565b604052919050565b600067ffffffffffffffff82111561442f5761442f6143ce565b5060051b60200190565b6001600160a01b03811681146120c857600080fd5b600082601f83011261445f57600080fd5b8135602061447461446f83614415565b6143e4565b82815260059290921b8401810191818101908684111561449357600080fd5b8286015b848110156144b75780356144aa81614439565b8352918301918301614497565b509695505050505050565b600080604083850312156144d557600080fd5b823567ffffffffffffffff8111156144ec57600080fd5b6144f88582860161444e565b92505060208301356143c381614387565b60005b8381101561452457818101518382015260200161450c565b50506000910152565b602081526000825180602084015261454c816040850160208701614509565b601f01601f19169190910160400192915050565b6000806040838503121561457357600080fd5b823561457e81614439565b946020939093013593505050565b60006020828403121561459e57600080fd5b8135613edf81614439565b600080604083850312156145bc57600080fd5b82356145c781614439565b915060208301356143c381614439565b6000806000606084860312156145ec57600080fd5b83356145f781614439565b9250602084013561460781614439565b929592945050506040919091013590565b6000806040838503121561462b57600080fd5b50508035926020909101359150565b6000806040838503121561464d57600080fd5b823567ffffffffffffffff8082111561466557600080fd5b6146718683870161444e565b935060209150818501358181111561468857600080fd5b85019050601f8101861361469b57600080fd5b80356146a961446f82614415565b81815260059190911b820183019083810190888311156146c857600080fd5b928401925b828410156146e6578335825292840192908401906146cd565b80955050505050509250929050565b803561ffff8116811461470757600080fd5b919050565b60008060006060848603121561472157600080fd5b61472a846146f5565b9250614738602085016146f5565b9150614746604085016146f5565b90509250925092565b6000806040838503121561476257600080fd5b82356143b381614439565b60006020828403121561477f57600080fd5b5035919050565b6000806000806080858703121561479c57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156147f15781516001600160a01b0316875295820195908201906001016147cc565b509495945050505050565b60408152600061480f60408301856147b8565b905082151560208301529392505050565b600181811c9082168061483457607f821691505b60208210810361485457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156148ab5781600019048211156148915761489161485a565b8085161561489e57918102915b93841c9390800290614875565b509250929050565b6000826148c257506001610ddb565b816148cf57506000610ddb565b81600181146148e557600281146148ef5761490b565b6001915050610ddb565b60ff8411156149005761490061485a565b50506001821b610ddb565b5060208310610133831016604e8410600b841016171561492e575081810a610ddb565b6149388383614870565b806000190482111561494c5761494c61485a565b029392505050565b6000613edf60ff8416836148b3565b60008261498057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ddb57610ddb61485a565b8082028115828204841417610ddb57610ddb61485a565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036149dc576149dc61485a565b6001019392505050565b80820180821115610ddb57610ddb61485a565b600082601f830112614a0a57600080fd5b815167ffffffffffffffff811115614a2457614a246143ce565b614a37601f8201601f19166020016143e4565b818152846020838601011115614a4c57600080fd5b611052826020830160208701614509565b60008060008060808587031215614a7357600080fd5b845167ffffffffffffffff80821115614a8b57600080fd5b614a97888389016149f9565b95506020870151915080821115614aad57600080fd5b50614aba878288016149f9565b93505060408501519150606085015160ff81168114614ad857600080fd5b939692955090935050565b601f82111561132357600081815260208120601f850160051c81016020861015614b0a5750805b601f850160051c820191505b81811015610c5a57828155600101614b16565b815167ffffffffffffffff811115614b4357614b436143ce565b614b5781614b518454614820565b84614ae3565b602080601f831160018114614b8c5760008415614b745750858301515b600019600386901b1c1916600185901b178555610c5a565b600085815260208120601f198616915b82811015614bbb57888601518255948401946001909101908401614b9c565b5085821015614bd95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008060408385031215614bfc57600080fd5b8251614c0781614439565b60208401519092506143c381614439565b600080600060608486031215614c2d57600080fd5b8351925060208401519150604084015190509250925092565b60008060408385031215614c5957600080fd5b505080516020909101519092909150565b600060208284031215614c7c57600080fd5b5051919050565b600060208284031215614c9557600080fd5b8151613edf81614387565b600060208284031215614cb257600080fd5b8151613edf81614439565b85815284602082015260a060408201526000614cdc60a08301866147b8565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220b2379d5e331fa7519302f9d7b2bca26ac42e045e5a6bffa402e3b914af17a65064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806350a8e016116101f2578063ab558e4d1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610b1e578063fdb78c0e14610b3e578063fe575a8714610b5f578063feadde9c14610b7f57600080fd5b8063eafb5a3c14610aa9578063eb50e70e14610ac9578063ee5d9c2d14610ae9578063eec2744e14610afe57600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a0e578063c6a276c214610a2e578063d6b0f48414610a4e578063dd62ed3e14610a6357600080fd5b8063ab558e4d146109d4578063b1b08f7114610656578063b3d514fb14610656578063b7df8b36146109f457600080fd5b806375f0a874116101855780638a63bd9b116101545780638a63bd9b146109755780638a8c523c1461098a57806395d89b411461099f578063a9059cbb146109b457600080fd5b806375f0a874146108fd57806378648edf1461091d57806380c581d114610932578063893d20e81461095257600080fd5b80635cce86cd116101c15780635cce86cd146108645780636ebd00781461089d57806370a08231146108b2578063715018a6146108e857600080fd5b806350a8e016146107fc578063533ecf541461081b578063590ffdce1461082e5780635a6f09181461084e57600080fd5b80632610eaca116102e257806336fddb04116102755780634bbb93eb116102445780634bbb93eb146107635780634e718e48146107835780634fb2e45d146107a35780634fbee193146107c357600080fd5b806336fddb04146106e95780633f3cf56c14610709578063452ed4f1146107295780634ada218b1461074957600080fd5b80632e8fa821116102b15780632e8fa8211461066c578063313ce5671461068257806332cde664146106a957806333251a0b146106c957600080fd5b80632610eaca1461060b578063285777511461062b5780632b112e49146106415780632b28fc7a1461065657600080fd5b806307dd79e01161035a57806313b4a7f41161032957806313b4a7f41461059657806318160ddd146105b657806323b872dd146105cb57806326003957146105eb57600080fd5b806307dd79e0146104fe578063095ea7b3146105285780630dcbcf1c146105485780630fa604e41461058157600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630758d924146104d957600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160135481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004614395565b610b9f565b005b34801561044d57600080fd5b5061043f61045c3660046144c2565b610c62565b34801561046d57600080fd5b50600f546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b506104cc610d38565b6040516103f2919061452d565b3480156104e557600080fd5b506010546103de9061010090046001600160a01b031681565b34801561050a57600080fd5b506010546105189060ff1681565b60405190151581526020016103f2565b34801561053457600080fd5b50610518610543366004614560565b610dca565b34801561055457600080fd5b5061051861056336600461458c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058d57600080fd5b50610411610de1565b3480156105a257600080fd5b5061043f6105b13660046145a9565b610e07565b3480156105c257600080fd5b50610411610fca565b3480156105d757600080fd5b506105186105e63660046145d7565b610fe2565b3480156105f757600080fd5b5061043f610606366004614618565b61105a565b34801561061757600080fd5b5061043f61062636600461463a565b611163565b34801561063757600080fd5b5061041160165481565b34801561064d57600080fd5b50610411611328565b34801561066257600080fd5b506104116103e881565b34801561067857600080fd5b5061041160145481565b34801561068e57600080fd5b5061069761138f565b60405160ff90911681526020016103f2565b3480156106b557600080fd5b5061043f6106c436600461470c565b6113aa565b3480156106d557600080fd5b5061043f6106e436600461458c565b611503565b3480156106f557600080fd5b5061043f61070436600461474f565b6115ba565b34801561071557600080fd5b5061043f610724366004614618565b611632565b34801561073557600080fd5b506011546103de906001600160a01b031681565b34801561075557600080fd5b506019546105189060ff1681565b34801561076f57600080fd5b5061041161077e36600461476d565b611748565b34801561078f57600080fd5b5061043f61079e36600461476d565b61177c565b3480156107af57600080fd5b5061043f6107be36600461458c565b61181f565b3480156107cf57600080fd5b506105186107de36600461458c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561080857600080fd5b5060195461051890610100900460ff1681565b61043f61082936600461458c565b611a3e565b34801561083a57600080fd5b5061043f61084936600461474f565b6120cb565b34801561085a57600080fd5b50610411601a5481565b34801561087057600080fd5b5061051861087f36600461458c565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108a957600080fd5b50610411612143565b3480156108be57600080fd5b506104116108cd36600461458c565b6001600160a01b031660009081526020819052604090205490565b3480156108f457600080fd5b5061043f612164565b34801561090957600080fd5b506012546103de906001600160a01b031681565b34801561092957600080fd5b5061043f612298565b34801561093e57600080fd5b5061043f61094d36600461474f565b6122f4565b34801561095e57600080fd5b50601b5461010090046001600160a01b03166103de565b34801561098157600080fd5b506105186124e3565b34801561099657600080fd5b5061043f612558565b3480156109ab57600080fd5b506104cc6127ba565b3480156109c057600080fd5b506105186109cf366004614560565b6127c9565b3480156109e057600080fd5b5061043f6109ef36600461458c565b6127e0565b348015610a0057600080fd5b506015546105189060ff1681565b348015610a1a57600080fd5b5061043f610a29366004614395565b612983565b348015610a3a57600080fd5b5061043f610a4936600461458c565b612a33565b348015610a5a57600080fd5b5061043f612ab9565b348015610a6f57600080fd5b50610411610a7e3660046145a9565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab557600080fd5b5061043f610ac436600461458c565b612b70565b348015610ad557600080fd5b5061043f610ae436600461458c565b612f69565b348015610af557600080fd5b5061043f61302e565b348015610b0a57600080fd5b5061043f610b1936600461474f565b613113565b348015610b2a57600080fd5b5061043f610b39366004614786565b6131a1565b348015610b4a57600080fd5b5060125461051890600160a81b900460ff1681565b348015610b6b57600080fd5b50610518610b7a36600461458c565b613407565b348015610b8b57600080fd5b5061043f610b9a36600461474f565b61347c565b601b5461010090046001600160a01b03163314610bf15760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa83398151915260448201526064015b60405180910390fd5b60195460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050505050565b601b5461010090046001600160a01b03163314610caf5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b606482511115610d015760405162461bcd60e51b815260206004820152601160248201527f546f6f206d616e79206174206f6e63652e0000000000000000000000000000006044820152606401610be8565b6019546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610c2c90859085906004016147fc565b6060600b8054610d4790614820565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7390614820565b8015610dc05780601f10610d9557610100808354040283529160200191610dc0565b820191906000526020600020905b815481529060010190602001808311610da357829003601f168201915b5050505050905090565b6000610dd73384846134f4565b5060015b92915050565b600d54600090610df59060ff16600a614954565b601854610e029190614963565b905090565b601b5461010090046001600160a01b03163314610e545760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60095460ff16610e6357600080fd5b6001600160a01b0382163014801590610e8557506001600160a01b0381163014155b8015610e9f57506011546001600160a01b03838116911614155b8015610eb957506011546001600160a01b03828116911614155b610ef35760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610be8565b806001600160a01b0316826001600160a01b031603610f55576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610f519082906120cb565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610fbf9083906120cb565b610f518160016120cb565b6000600e54600003610fdb57600080fd5b50600e5490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611047576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611041908490614985565b90915550505b6110528484846135ed565b949350505050565b601b5461010090046001600160a01b031633146110a75760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6064600e546110b69190614963565b8183600e546110c59190614998565b6110cf9190614963565b10156111435760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610be8565b8082600e546111529190614998565b61115c9190614963565b6018555050565b601b5461010090046001600160a01b031633146111b05760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b80518251146112015760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610be8565b60005b82518161ffff16101561132357600d546112229060ff16600a614954565b828261ffff1681518110611238576112386149af565b602002602001015161124a9190614998565b3360009081526020819052604090205410156112a85760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610be8565b61131033848361ffff16815181106112c2576112c26149af565b6020908102919091010151600d546112de9060ff16600a614954565b858561ffff16815181106112f4576112f46149af565b60200260200101516113069190614998565b6000806001613b0d565b508061131b816149c5565b915050611204565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf835461138291906149e6565b600e54610e029190614985565b6000600e546000036113a057600080fd5b50600d5460ff1690565b601b5461010090046001600160a01b031633146113f75760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60105460ff161561144a5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610be8565b6103e88361ffff161115801561146657506103e88261ffff1611155b801561147857506103e88161ffff1611155b6114c45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610be8565b600f805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601b5461010090046001600160a01b031633146115505760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561159f57600080fd5b505af11580156115b3573d6000803e3d6000fd5b5050505050565b601b5461010090046001600160a01b031633146116075760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601b5461010090046001600160a01b0316331461167f5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6103e8600e5460056116919190614998565b61169b9190614963565b8183600e546116aa9190614998565b6116b49190614963565b10156117285760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610be8565b8082600e546117379190614998565b6117419190614963565b6017555050565b6011546001600160a01b031660009081526020819052604081205461271090611772908490614998565b610ddb9190614963565b601b5461010090046001600160a01b031633146117c95760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b609681111561181a5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610be8565b601655565b601b5461010090046001600160a01b0316331461186c5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b0381166118e85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be8565b61deac196001600160a01b038216016119695760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610be8565b601b546119859061010090046001600160a01b031660006120cb565b6119908160016120cb565b601b5461010090046001600160a01b031660009081526020819052604081205411156119e457601b5461010090046001600160a01b03166000818152602081905260409020546119e291908390611306565b505b601b80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601b5461010090046001600160a01b03163314611a8b5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601b5460ff1615611ac25760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610be8565b60004711611b125760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610be8565b80601960026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601960029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af1925050508015611baf57506040513d6000823e601f3d908101601f19168201604052611bac9190810190614a5d565b60015b611bdf5760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610be8565b600b611beb8582614b29565b50600c611bf88482614b29565b50600d805460ff191660ff8316908117909155611c1690600a614954565b611c209083614998565b600e5550505050601960029054906101000a90046001600160a01b03166001600160a01b031663c3f909d46040518163ffffffff1660e01b815260040160408051808303816000875af1925050508015611c97575060408051601f3d908101601f19168201909252611c9491810190614be9565b60015b611ce35760405162461bcd60e51b815260206004820152601260248201527f496e697469616c697a6572206572726f722e00000000000000000000000000006044820152606401610be8565b60108054610100600160a81b0319166101006001600160a01b038581168202929092178355601180546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601b549254611d5693829004831692919004166000196134f4565b601054611d7590309061010090046001600160a01b03166000196134f4565b5050612710600e546019611d899190614998565b611d939190614963565b601755600e5461271090611da8906032614998565b611db29190614963565b601855601b805460ff1916600117808255600e546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91611e239190815260200190565b60405180910390a3601b54600d54611e769161010090046001600160a01b0316907354821d1b461aa887d37c449f3ace8ddddfcb8c0a90611e689060ff16600a614954565b61130690630bebc200614998565b50601b54600d54611ec29161010090046001600160a01b031690734190165278bccd881e9086bce44373623758767490611eb49060ff16600a614954565b61130690630ee6b280614998565b50601b54600d54611f0e9161010090046001600160a01b03169073da8c6c3f4c8e29acbbfc2081f181722d05b19a6090611f009060ff16600a614954565b611306906302faf080614998565b50601b54600d54611f4c9161010090046001600160a01b0316907345620f274ede76db59586c45d9b4066c15db281290611f009060ff16600a614954565b50601b54600d54611f8a9161010090046001600160a01b031690738b505e46fd52723430590a6f4f9d768618e29a4b90611f009060ff16600a614954565b50601b5461010090046001600160a01b0316600081815260208190526040902054611fb791903090611306565b50601054306000818152602081905260409020546101009092046001600160a01b03169163f305d719914791601b5460405160e086901b6001600160e01b03191681526001600160a01b03938416600482015260248101929092526000604483018190526064830152610100900490911660848201524260a482015260c40160606040518083038185885af193505050508015612071575060408051601f3d908101601f1916820190925261206e91810190614c18565b60015b6120bd5760405162461bcd60e51b815260206004820152601060248201527f4c6971756964697479206572726f722e000000000000000000000000000000006044820152606401610be8565b5050506120c8612558565b50565b601b5461010090046001600160a01b031633146121185760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600d546000906121579060ff16600a614954565b601754610e029190614963565b601b5461010090046001600160a01b031633146121b15760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60195460ff166122295760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610be8565b601b546122459061010090046001600160a01b031660006120cb565b601b8054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601b5461010090046001600160a01b031633146122e55760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6010805460ff19166001179055565b601b5461010090046001600160a01b031633146123415760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b806123b4576001600160a01b03828116600081815260016020526040808220805460ff1916905560195490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610c4657600080fd5b6002541561241b576203f480600254426123ce9190614985565b1161241b5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610be8565b6001600160a01b03821660009081526001602052604090205460ff16156124845760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610be8565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560195491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c2c565b601b5460009061010090046001600160a01b031633146125335760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60105461255290309061010090046001600160a01b03166000196134f4565b50600190565b601b5461010090046001600160a01b031633146125a55760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b60195460ff16156125f85760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610be8565b601954610100900460ff1661264f5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610be8565b6019546201000090046001600160a01b031661268c576019805475ffffffffffffffffffffffffffffffffffffffff000019163062010000021790555b601954601154600d54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561270457600080fd5b505af1925050508015612715575060015b506019546011546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015612798575060408051601f3d908101601f1916820190925261279591810190614c46565b60015b156127a7576013919091556014555b6019805460ff1916600117905542601a55565b6060600c8054610d4790614820565b60006127d63384846135ed565b5060019392505050565b601b5461010090046001600160a01b0316331461282d5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff161561289557306001600160a01b038216036128955760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610be8565b601b546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb9261010090049091169083906370a0823190602401602060405180830381865afa1580156128f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129149190614c6a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561295f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614c83565b601b5461010090046001600160a01b031633146129d05760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6012805460ff60a81b1916600160a81b841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601b5461010090046001600160a01b03163314612a805760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c290602401611585565b601b5461010090046001600160a01b03163314612b065760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601960029054906101000a90046001600160a01b03166001600160a01b031663d6b0f4846040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612b5657600080fd5b505af1158015612b6a573d6000803e3d6000fd5b50505050565b601b5461010090046001600160a01b03163314612bbd5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff1615612c155760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610be8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190614ca0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5e9190614ca0565b6011546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612ef457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ded9190614ca0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5e9190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecf9190614ca0565b601180546001600160a01b0319166001600160a01b0392909216919091179055612f10565b601180546001600160a01b0319166001600160a01b0383161790555b60108054610100600160a81b0319166101006001600160a01b03858116820292909217835560115482166000908152600160208190526040909120805460ff1916909117905591546113239230929104166000196134f4565b601b5461010090046001600160a01b03163314612fb65760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03811661300c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610be8565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b601b5461010090046001600160a01b0316331461307b5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b601954610100900460ff16156130d35760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610be8565b601b546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f193505050501580156120c8573d6000803e3d6000fd5b601b5461010090046001600160a01b031633146131605760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6019546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c2c565b601b5461010090046001600160a01b031633146131ee5760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b8284600e546131fd9190614998565b6132079190614963565b601355600e54819061321a908490614998565b6132249190614963565b601481905560135411156132845760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610be8565b6011546001600160a01b0316600090815260208190526040902054612710906132ae906096614998565b6132b89190614963565b60145411156133155760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610be8565b620f4240600e546133269190614963565b601454101561338e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be8565b620f4240600e5461339f9190614963565b6013541015612b6a5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610be8565b60195460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613458573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddb9190614c83565b601b5461010090046001600160a01b031633146134c95760405162461bcd60e51b81526020600482015260116024820152600080516020614cfa8339815191526044820152606401610be8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166135405760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be8565b6001600160a01b03821661358c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610be8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166136535760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610be8565b6001600160a01b0383166136b55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610be8565b600082116137175760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610be8565b6001600160a01b0384166000908152600160205260408120548190819060ff16156137455760019250613773565b6001600160a01b03861660009081526001602052604090205460ff161561376f5760019150613773565b5060015b61377d8787613dc0565b15613a0a5760195460ff1661387e57806137d95760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610be8565b6001600160a01b03871660009081526005602052604090205460ff1615801561381b57506001600160a01b03861660009081526005602052604090205460ff16155b1561387e5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610be8565b82806138875750815b15613936576001600160a01b03871660009081526007602052604090205460ff161580156138ce57506001600160a01b03861660009081526007602052604090205460ff16155b15613936576017548511156139365760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610be8565b6010546001600160a01b038781166101009092041614801590613957575081155b15613a0a576001600160a01b03861660009081526007602052604090205460ff16613a0a576018548561399f886001600160a01b031660009081526020819052604090205490565b6139a991906149e6565b1115613a0a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610be8565b8115613af457601254600160a01b900460ff16613af457601254600160a81b900460ff168015613a5357506001600160a01b03861660009081526008602052604090205460ff16155b8015613a7857506001600160a01b03871660009081526008602052604090205460ff16155b15613af457306000908152602081905260409020546013548110613af25760145460155460ff1615613adc576016546011546001600160a01b031660009081526020819052604090205461271091613acf91614998565b613ad99190614963565b90505b808210613ae7578091505b613af082613ee6565b505b505b613b02878787868686613b0d565b979650505050505050565b6000613b198787613dc0565b15613bb35760195460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b9c575060408051601f3d908101601f19168201909252613b9991810190614c83565b60015b613ba557600080fd5b905080613bb157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613bf557506001600160a01b03871660009081526006602052604090205460ff165b15613bfe575060005b6001600160a01b03881660009081526020819052604081208054889290613c26908490614985565b909155506000905081613c395786613c45565b613c458988888861412a565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c7b91906149e6565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cc791815260200190565b60405180910390a3601954610100900460ff16613db157613ce88989614236565b601954610100900460ff16158015613d055750613d058989613dc0565b8015613d2a57506001600160a01b03891660009081526005602052604090205460ff16155b8015613d4f57506001600160a01b03881660009081526005602052604090205460ff16155b8015613d59575083155b15613db15760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610be8565b50600198975050505050505050565b601b546000906001600160a01b038481166101009092041614801590613df95750601b546001600160a01b038381166101009092041614155b8015613e155750601b5461010090046001600160a01b03163214155b8015613e3a57506001600160a01b03821660009081526004602052604090205460ff16155b8015613e5f57506001600160a01b03831660009081526004602052604090205460ff16155b8015613e7657506001600160a01b03821661dead14155b8015613e8a57506001600160a01b03821615155b8015613e9f57506001600160a01b0383163014155b8015613ebf57506019546001600160a01b03848116620100009092041614155b8015613edf57506019546001600160a01b03838116620100009092041614155b9392505050565b6012805460ff60a01b1916600160a01b17905530600090815260036020908152604080832060105461010090046001600160a01b0316845290915290205460001914613f5c5730600090815260036020908152604080832060105461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9157613f916149af565b60200260200101906001600160a01b031690816001600160a01b031681525050601060019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140289190614ca0565b8160018151811061403b5761403b6149af565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b81526101009091049091169063791ac94790614088908590600090869030904290600401614cbd565b600060405180830381600087803b1580156140a257600080fd5b505af19250505080156140b3575060015b6140bd575061411a565b6012546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461410f576040519150601f19603f3d011682016040523d82523d6000602084013e614114565b606091505b50505050505b506012805460ff60a01b19169055565b60008083156141405750600f5461ffff1661416a565b82156141595750600f5462010000900461ffff1661416a565b50600f54640100000000900461ffff165b8060000361417b5784915050611052565b6019546201000090046001600160a01b03163014801561419c575046606114155b156141a657506111945b60006127106141b58388614998565b6141bf9190614963565b9050801561422c5730600090815260208190526040812080548392906141e69084906149e6565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613b028187614985565b601954610100900460ff161561429a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610be8565b6142a48282613dc0565b1580156142be57506011546001600160a01b038281169116145b15610f51576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556019805461ff001916610100179081905562010000900416614343576019805475ffffffffffffffffffffffffffffffffffffffff000019163062010000021790555b6012805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612a27565b80151581146120c857600080fd5b600080604083850312156143a857600080fd5b82356143b381614387565b915060208301356143c381614387565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561440d5761440d6143ce565b604052919050565b600067ffffffffffffffff82111561442f5761442f6143ce565b5060051b60200190565b6001600160a01b03811681146120c857600080fd5b600082601f83011261445f57600080fd5b8135602061447461446f83614415565b6143e4565b82815260059290921b8401810191818101908684111561449357600080fd5b8286015b848110156144b75780356144aa81614439565b8352918301918301614497565b509695505050505050565b600080604083850312156144d557600080fd5b823567ffffffffffffffff8111156144ec57600080fd5b6144f88582860161444e565b92505060208301356143c381614387565b60005b8381101561452457818101518382015260200161450c565b50506000910152565b602081526000825180602084015261454c816040850160208701614509565b601f01601f19169190910160400192915050565b6000806040838503121561457357600080fd5b823561457e81614439565b946020939093013593505050565b60006020828403121561459e57600080fd5b8135613edf81614439565b600080604083850312156145bc57600080fd5b82356145c781614439565b915060208301356143c381614439565b6000806000606084860312156145ec57600080fd5b83356145f781614439565b9250602084013561460781614439565b929592945050506040919091013590565b6000806040838503121561462b57600080fd5b50508035926020909101359150565b6000806040838503121561464d57600080fd5b823567ffffffffffffffff8082111561466557600080fd5b6146718683870161444e565b935060209150818501358181111561468857600080fd5b85019050601f8101861361469b57600080fd5b80356146a961446f82614415565b81815260059190911b820183019083810190888311156146c857600080fd5b928401925b828410156146e6578335825292840192908401906146cd565b80955050505050509250929050565b803561ffff8116811461470757600080fd5b919050565b60008060006060848603121561472157600080fd5b61472a846146f5565b9250614738602085016146f5565b9150614746604085016146f5565b90509250925092565b6000806040838503121561476257600080fd5b82356143b381614439565b60006020828403121561477f57600080fd5b5035919050565b6000806000806080858703121561479c57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156147f15781516001600160a01b0316875295820195908201906001016147cc565b509495945050505050565b60408152600061480f60408301856147b8565b905082151560208301529392505050565b600181811c9082168061483457607f821691505b60208210810361485457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156148ab5781600019048211156148915761489161485a565b8085161561489e57918102915b93841c9390800290614875565b509250929050565b6000826148c257506001610ddb565b816148cf57506000610ddb565b81600181146148e557600281146148ef5761490b565b6001915050610ddb565b60ff8411156149005761490061485a565b50506001821b610ddb565b5060208310610133831016604e8410600b841016171561492e575081810a610ddb565b6149388383614870565b806000190482111561494c5761494c61485a565b029392505050565b6000613edf60ff8416836148b3565b60008261498057634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ddb57610ddb61485a565b8082028115828204841417610ddb57610ddb61485a565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036149dc576149dc61485a565b6001019392505050565b80820180821115610ddb57610ddb61485a565b600082601f830112614a0a57600080fd5b815167ffffffffffffffff811115614a2457614a246143ce565b614a37601f8201601f19166020016143e4565b818152846020838601011115614a4c57600080fd5b611052826020830160208701614509565b60008060008060808587031215614a7357600080fd5b845167ffffffffffffffff80821115614a8b57600080fd5b614a97888389016149f9565b95506020870151915080821115614aad57600080fd5b50614aba878288016149f9565b93505060408501519150606085015160ff81168114614ad857600080fd5b939692955090935050565b601f82111561132357600081815260208120601f850160051c81016020861015614b0a5750805b601f850160051c820191505b81811015610c5a57828155600101614b16565b815167ffffffffffffffff811115614b4357614b436143ce565b614b5781614b518454614820565b84614ae3565b602080601f831160018114614b8c5760008415614b745750858301515b600019600386901b1c1916600185901b178555610c5a565b600085815260208120601f198616915b82811015614bbb57888601518255948401946001909101908401614b9c565b5085821015614bd95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008060408385031215614bfc57600080fd5b8251614c0781614439565b60208401519092506143c381614439565b600080600060608486031215614c2d57600080fd5b8351925060208401519150604084015190509250925092565b60008060408385031215614c5957600080fd5b505080516020909101519092909150565b600060208284031215614c7c57600080fd5b5051919050565b600060208284031215614c9557600080fd5b8151613edf81614387565b600060208284031215614cb257600080fd5b8151613edf81614439565b85815284602082015260a060408201526000614cdc60a08301866147b8565b6001600160a01b039490941660608301525060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220b2379d5e331fa7519302f9d7b2bca26ac42e045e5a6bffa402e3b914af17a65064736f6c63430008130033

Deployed Bytecode Sourcemap

4583:24154:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5864:73;;;;;;;;;;;;5895:42;5864:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5864:73:0;;;;;;;;6113:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6113:28:0;245:177:1;17041:153:0;;;;;;;;;;-1:-1:-1;17041:153:0;;;;;:::i;:::-;;:::i;:::-;;16163:341;;;;;;;;;;-1:-1:-1;16163:341:0;;;;;:::i;:::-;;:::i;5451:107::-;;;;;;;;;;-1:-1:-1;5451:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;3120:6:1;3153:15;;;3135:34;;3205:15;;;3200:2;3185:18;;3178:43;3257:15;;3237:18;;;3230:43;;;;3098:2;3083:18;5451:107:0;2914:365:1;11970:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5803:26::-;;;;;;;;;;-1:-1:-1;5803:26:0;;;;;;;-1:-1:-1;;;;;5803:26:0;;;5770;;;;;;;;;;-1:-1:-1;5770:26:0;;;;;;;;;;;4353:14:1;;4346:22;4328:41;;4316:2;4301:18;5770:26:0;4188:187:1;12578:161:0;;;;;;;;;;-1:-1:-1;12578:161:0;;;;;:::i;:::-;;:::i;15387:140::-;;;;;;;;;;-1:-1:-1;15387:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15485:34:0;15461:4;15485:34;;;:25;:34;;;;;;;;;15387:140;18721:114;;;;;;;;;;;;;:::i;20347:809::-;;;;;;;;;;-1:-1:-1;20347:809:0;;;;;:::i;:::-;;:::i;11641:115::-;;;;;;;;;;;;;:::i;13248:306::-;;;;;;;;;;-1:-1:-1;13248:306:0;;;;;:::i;:::-;;:::i;18333:264::-;;;;;;;;;;-1:-1:-1;18333:264:0;;;;;:::i;:::-;;:::i;26449:447::-;;;;;;;;;;-1:-1:-1;26449:447:0;;;;;:::i;:::-;;:::i;6221:33::-;;;;;;;;;;;;;;;;15691:141;;;;;;;;;;;;;:::i;5567:42::-;;;;;;;;;;;;5605:4;5567:42;;6148:25;;;;;;;;;;;;;;;;11762:112;;;;;;;;;;;;;:::i;:::-;;;7374:4:1;7362:17;;;7344:36;;7332:2;7317:18;11762:112:0;7202:184:1;17392:453:0;;;;;;;;;;-1:-1:-1;17392:453:0;;;;;:::i;:::-;;:::i;16923:110::-;;;;;;;;;;-1:-1:-1;16923:110:0;;;;;:::i;:::-;;:::i;14962:140::-;;;;;;;;;;-1:-1:-1;14962:140:0;;;;;:::i;:::-;;:::i;18052:273::-;;;;;;;;;;-1:-1:-1;18052:273:0;;;;;:::i;:::-;;:::i;5836:21::-;;;;;;;;;;-1:-1:-1;5836:21:0;;;;-1:-1:-1;;;;;5836:21:0;;;6341:34;;;;;;;;;;-1:-1:-1;6341:34:0;;;;;;;;18947:189;;;;;;;;;;-1:-1:-1;18947:189:0;;;;;:::i;:::-;;:::i;19851:217::-;;;;;;;;;;-1:-1:-1;19851:217:0;;;;;:::i;:::-;;:::i;10273:654::-;;;;;;;;;;-1:-1:-1;10273:654:0;;;;;:::i;:::-;;:::i;15110:127::-;;;;;;;;;;-1:-1:-1;15110:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15201:28:0;15177:4;15201:28;;;:19;:28;;;;;;;;;15110:127;6382:36;;;;;;;;;;-1:-1:-1;6382:36:0;;;;;;;;;;;7032:2479;;;;;;:::i;:::-;;:::i;15245:134::-;;;;;;;;;;-1:-1:-1;15245:134:0;;;;;:::i;:::-;;:::i;6455:26::-;;;;;;;;;;;;;;;;14822:132;;;;;;;;;;-1:-1:-1;14822:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14916:30:0;14892:4;14916:30;;;:21;:30;;;;;;;;;14822:132;18605:108;;;;;;;;;;;;;:::i;12280:117::-;;;;;;;;;;-1:-1:-1;12280:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12373:16:0;12346:7;12373:16;;;;;;;;;;;;12280:117;10935:310;;;;;;;;;;;;;:::i;5944:92::-;;;;;;;;;;-1:-1:-1;5944:92:0;;;;-1:-1:-1;;;;;5944:92:0;;;17202:182;;;;;;;;;;;;;:::i;14250:564::-;;;;;;;;;;-1:-1:-1;14250:564:0;;;;;:::i;:::-;;:::i;12056:79::-;;;;;;;;;;-1:-1:-1;12126:6:0;;;;;-1:-1:-1;;;;;12126:6:0;12056:79;;13065:175;;;;;;;;;;;;;:::i;25252:695::-;;;;;;;;;;;;;:::i;11880:84::-;;;;;;;;;;;;;:::i;12405:165::-;;;;;;;;;;-1:-1:-1;12405:165:0;;;;;:::i;:::-;;:::i;26145:296::-;;;;;;;;;;-1:-1:-1;26145:296:0;;;;;:::i;:::-;;:::i;6180:34::-;;;;;;;;;;-1:-1:-1;6180:34:0;;;;;;;;20076:263;;;;;;;;;;-1:-1:-1;20076:263:0;;;;;:::i;:::-;;:::i;16649:202::-;;;;;;;;;;-1:-1:-1;16649:202:0;;;;;:::i;:::-;;:::i;18843:96::-;;;;;;;;;;;;;:::i;12141:133::-;;;;;;;;;;-1:-1:-1;12141:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12243:19:0;;;12225:7;12243:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12141:133;13562:680;;;;;;;;;;-1:-1:-1;13562:680:0;;;;;:::i;:::-;;:::i;17853:191::-;;;;;;;;;;-1:-1:-1;17853:191:0;;;;;:::i;:::-;;:::i;25955:182::-;;;;;;;;;;;;;:::i;15904:251::-;;;;;;;;;;-1:-1:-1;15904:251:0;;;;;:::i;:::-;;:::i;19144:699::-;;;;;;;;;;-1:-1:-1;19144:699:0;;;;;:::i;:::-;;:::i;6067:39::-;;;;;;;;;;-1:-1:-1;6067:39:0;;;;-1:-1:-1;;;6067:39:0;;;;;;16512:129;;;;;;;;;;-1:-1:-1;16512:129:0;;;;;:::i;:::-;;:::i;15535:148::-;;;;;;;;;;-1:-1:-1;15535:148:0;;;;;:::i;:::-;;:::i;17041:153::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;;;;;;;;;17136:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;17136:50:0;;9890:14:1;;9883:22;17136:50:0::1;::::0;::::1;9865:41:1::0;9949:14;;9942:22;9922:18;;;9915:50;17136:11:0;;;::::1;-1:-1:-1::0;;;;;17136:11:0::1;::::0;:26:::1;::::0;9838:18:1;;17136:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17041:153:::0;;:::o;16163:341::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;16402:3:::1;16383:8;:15;:22;;16375:52;;;::::0;-1:-1:-1;;;16375:52:0;;10178:2:1;16375:52:0::1;::::0;::::1;10160:21:1::0;10217:2;10197:18;;;10190:30;10256:19;10236:18;;;10229:47;10293:18;;16375:52:0::1;9976:341:1::0;16375:52:0::1;16438:11;::::0;:58:::1;::::0;-1:-1:-1;;;16438:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;16438:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;16478:8;;16488:7;;16438:58:::1;;;:::i;11970:80::-:0;12018:13;12042:5;12035:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:80;:::o;12578:161::-;12655:4;12672:37;12681:10;12693:7;12702:6;12672:8;:37::i;:::-;-1:-1:-1;12727:4:0;12578:161;;;;;:::o;18721:114::-;18817:9;;18768:7;;18813:13;;18817:9;;18813:2;:13;:::i;:::-;18795:14;;:32;;;;:::i;:::-;18788:39;;18721:114;:::o;20347:809::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;20451:23:::1;::::0;::::1;;20443:32;;;::::0;::::1;;-1:-1:-1::0;;;;;20494:23:0;::::1;20512:4;20494:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;20539:24:0;::::1;20558:4;20539:24;;20494:69;:107;;;;-1:-1:-1::0;20585:6:0::1;::::0;-1:-1:-1;;;;;20585:16:0;;::::1;:6:::0;::::1;:16;;20494:107;:146;;;;-1:-1:-1::0;20623:6:0::1;::::0;-1:-1:-1;;;;;20623:17:0;;::::1;:6:::0;::::1;:17;;20494:146;20486:170;;;::::0;-1:-1:-1;;;20486:170:0;;13482:2:1;20486:170:0::1;::::0;::::1;13464:21:1::0;13521:2;13501:18;;;13494:30;-1:-1:-1;;;13540:18:1;;;13533:41;13591:18;;20486:170:0::1;13280:335:1::0;20486:170:0::1;20681:7;-1:-1:-1::0;;;;;20671:17:0::1;:6;-1:-1:-1::0;;;;;20671:17:0::1;::::0;20667:482:::1;;-1:-1:-1::0;;;;;20705:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;20734:4:::1;-1:-1:-1::0;;20705:33:0;;::::1;::::0;::::1;::::0;;;20753:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;20800:34:::1;::::0;20705:26;;20800:19:::1;:34::i;:::-;20347:809:::0;;:::o;20667:482::-:1;-1:-1:-1::0;;;;;20867:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;20895:4:::1;-1:-1:-1::0;;20867:32:0;;::::1;::::0;::::1;::::0;;;20914:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;20962:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;21008:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;21055:33:::1;::::0;20867:25;;21055:19:::1;:33::i;:::-;21103:34;21123:7;21132:4;21103:19;:34::i;11641:115::-:0;11696:7;11711;;11722:1;11711:12;11707:31;;11727:8;;;11707:31;-1:-1:-1;11746:7:0;;;11641:115::o;13248:306::-;-1:-1:-1;;;;;13369:19:0;;13348:4;13369:19;;;:11;:19;;;;;;;;13389:10;13369:31;;;;;;;;-1:-1:-1;;13369:52:0;13365:126;;-1:-1:-1;;;;;13438:19:0;;;;;;:11;:19;;;;;;;;13458:10;13438:31;;;;;;;:41;;13473:6;;13438:19;:41;;13473:6;;13438:41;:::i;:::-;;;;-1:-1:-1;;13365:126:0;13510:36;13520:6;13528:9;13539:6;13510:9;:36::i;:::-;13503:43;13248:306;-1:-1:-1;;;;13248:306:0:o;18333:264::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;18475:3:::1;18465:7;;:13;;;;:::i;:::-;18453:7;18442;18432;;:17;;;;:::i;:::-;18431:29;;;;:::i;:::-;:48;;18423:109;;;::::0;-1:-1:-1;;;18423:109:0;;14128:2:1;18423:109:0::1;::::0;::::1;14110:21:1::0;14167:2;14147:18;;;14140:30;14206:34;14186:18;;;14179:62;14277:18;14257;;;14250:46;14313:19;;18423:109:0::1;13926:412:1::0;18423:109:0::1;18582:7;18571;18561;;:17;;;;:::i;:::-;18560:29;;;;:::i;:::-;18543:14;:46:::0;-1:-1:-1;;18333:264:0:o;26449:447::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;26584:7:::1;:14;26565:8;:15;:33;26557:67;;;::::0;-1:-1:-1;;;26557:67:0;;14545:2:1;26557:67:0::1;::::0;::::1;14527:21:1::0;14584:2;14564:18;;;14557:30;14623:23;14603:18;;;14596:51;14664:18;;26557:67:0::1;14343:345:1::0;26557:67:0::1;26640:8;26635:254;26658:8;:15;26654:1;:19;;;26635:254;;;26743:9;::::0;26739:13:::1;::::0;26743:9:::1;;26739:2;:13;:::i;:::-;26728:7;26736:1;26728:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;26713:10;12346:7:::0;12373:16;;;;;;;;;;;26703:49:::1;;26695:80;;;::::0;-1:-1:-1;;;26695:80:0;;15027:2:1;26695:80:0::1;::::0;::::1;15009:21:1::0;15066:2;15046:18;;;15039:30;15105:20;15085:18;;;15078:48;15143:18;;26695:80:0::1;14825:342:1::0;26695:80:0::1;26790:87;26807:10;26819:8;26828:1;26819:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;26847:9:::1;::::0;26843:13:::1;::::0;26847:9:::1;;26843:2;:13;:::i;:::-;26832:7;26840:1;26832:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;26858:5;26865::::0;26872:4:::1;26790:16;:87::i;:::-;-1:-1:-1::0;26675:3:0;::::1;::::0;::::1;:::i;:::-;;;;26635:254;;;;26449:447:::0;;:::o;15691:141::-;15744:7;12373:16;;;;;;5895:42;12373:16;;;;15783:39;;12373:16;15783:39;:::i;:::-;15772:7;;:51;;;;:::i;11762:112::-;11814:5;11827:7;;11838:1;11827:12;11823:31;;11843:8;;;11823:31;-1:-1:-1;11862:9:0;;;;;11762:112::o;17392:453::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;17500:14:::1;::::0;::::1;;17499:15;17491:45;;;::::0;-1:-1:-1;;;17491:45:0;;15706:2:1;17491:45:0::1;::::0;::::1;15688:21:1::0;15745:2;15725:18;;;15718:30;15784:19;15764:18;;;15757:47;15821:18;;17491:45:0::1;15504:341:1::0;17491:45:0::1;5605:4;17555:6;:21;;;;:65;;;;;5655:4;17597:7;:23;;;;17555:65;:117;;;;;5709:4;17641:11;:31;;;;17555:117;17547:170;;;::::0;-1:-1:-1;;;17547:170:0;;16052:2:1;17547:170:0::1;::::0;::::1;16034:21:1::0;16091:2;16071:18;;;16064:30;16130:25;16110:18;;;16103:53;16173:18;;17547:170:0::1;15850:347:1::0;17547:170:0::1;17728:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17764:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17802:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17392:453::o;16923:110::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;16992:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16992:33:0;;-1:-1:-1;;;;;178:55:1;;;16992:33:0::1;::::0;::::1;160:74:1::0;16992:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16992:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16923:110:::0;:::o;14962:140::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;-1:-1:-1;;;;;15054:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15054:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14962:140::o;18052:273::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;18197:4:::1;18183:7;;18193:1;18183:11;;;;:::i;:::-;:18;;;;:::i;:::-;18171:7;18160;18150;;:17;;;;:::i;:::-;18149:29;;;;:::i;:::-;:53;;18141:121;;;::::0;-1:-1:-1;;;18141:121:0;;16404:2:1;18141:121:0::1;::::0;::::1;16386:21:1::0;16443:2;16423:18;;;16416:30;16482:34;16462:18;;;16455:62;16553:25;16533:18;;;16526:53;16596:19;;18141:121:0::1;16202:419:1::0;18141:121:0::1;18310:7;18299;18289;;:17;;;;:::i;:::-;18288:29;;;;:::i;:::-;18273:12;:44:::0;-1:-1:-1;;18052:273:0:o;18947:189::-;19076:6;;-1:-1:-1;;;;;19076:6:0;19038:7;12373:16;;;;;;;;;;;5756:5;;19066:41;;19086:21;;19066:41;:::i;:::-;19065:62;;;;:::i;19851:217::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;19981:3:::1;19955:22;:29;;19947:64;;;::::0;-1:-1:-1;;;19947:64:0;;16828:2:1;19947:64:0::1;::::0;::::1;16810:21:1::0;16867:2;16847:18;;;16840:30;16906:24;16886:18;;;16879:52;16948:18;;19947:64:0::1;16626:346:1::0;19947:64:0::1;20022:13;:38:::0;19851:217::o;10273:654::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;-1:-1:-1;;;;;10352:22:0;::::1;10344:96;;;::::0;-1:-1:-1;;;10344:96:0;;17179:2:1;10344:96:0::1;::::0;::::1;17161:21:1::0;17218:2;17198:18;;;17191:30;17257:34;17237:18;;;17230:62;17328:31;17308:18;;;17301:59;17377:19;;10344:96:0::1;16977:425:1::0;10344:96:0::1;-1:-1:-1::0;;;;;;;10459:16:0;::::1;::::0;10451:90:::1;;;::::0;-1:-1:-1;;;10451:90:0;;17179:2:1;10451:90:0::1;::::0;::::1;17161:21:1::0;17218:2;17198:18;;;17191:30;17257:34;17237:18;;;17230:62;17328:31;17308:18;;;17301:59;17377:19;;10451:90:0::1;16977:425:1::0;10451:90:0::1;10572:6;::::0;10552:34:::1;::::0;10572:6:::1;::::0;::::1;-1:-1:-1::0;;;;;10572:6:0::1;10580:5;10552:19;:34::i;:::-;10597:35;10617:8;10627:4;10597:19;:35::i;:::-;10667:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;10667:6:0::1;10677:1;12373:16:::0;;;;;;;;;;;10657:21:::1;10653:127;;;10712:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;10712:6:0::1;12346:7:::0;12373:16;;;;;;;;;;;10695:73:::1;::::0;10712:6;10720:8;;10730:17:::1;12280:117:::0;10695:73:::1;;10653:127;10819:6;::::0;;-1:-1:-1;;;;;10836:17:0;;::::1;10819:6;10836:17:::0;;::::1;-1:-1:-1::0;;;;;;10836:17:0;::::1;;::::0;;;10869:40:::1;::::0;10819:6;;;::::1;;::::0;;;10869:40:::1;::::0;10800:16:::1;::::0;10869:40:::1;10333:594;10273:654:::0;:::o;7032:2479::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;7132:19:::1;::::0;::::1;;7131:20;7123:34;;;::::0;-1:-1:-1;;;7123:34:0;;17609:2:1;7123:34:0::1;::::0;::::1;17591:21:1::0;17648:1;17628:18;;;17621:29;-1:-1:-1;;;17666:18:1;;;17659:31;17707:18;;7123:34:0::1;17407:324:1::0;7123:34:0::1;7204:1;7180:21;:25;7172:61;;;::::0;-1:-1:-1;;;7172:61:0;;17938:2:1;7172:61:0::1;::::0;::::1;17920:21:1::0;17977:2;17957:18;;;17950:30;18016:25;17996:18;;;17989:53;18059:18;;7172:61:0::1;17736:347:1::0;7172:61:0::1;7274:12;7248:11;;:39;;;;;-1:-1:-1::0;;;;;7248:39:0::1;;;;;-1:-1:-1::0;;;;;7248:39:0::1;;;;;;7306:11;;;;;;;;;-1:-1:-1::0;;;;;7306:11:0::1;-1:-1:-1::0;;;;;7306:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;7306:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;7302:390;;7665:11;::::0;-1:-1:-1;;;7665:11:0;;19584:2:1;7665:11:0::1;::::0;::::1;19566:21:1::0;19623:1;19603:18;;;19596:29;-1:-1:-1;;;19641:18:1;;;19634:31;19682:18;;7665:11:0::1;19382:324:1::0;7302:390:0::1;7462:5;:16;7470:8:::0;7462:5;:16:::1;:::i;:::-;-1:-1:-1::0;7497:7:0::1;:20;7507:10:::0;7497:7;:20:::1;:::i;:::-;-1:-1:-1::0;7536:9:0::1;:24:::0;;-1:-1:-1;;7536:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;;7610:13:::1;::::0;:2:::1;:13;:::i;:::-;7589:34;::::0;:18;:34:::1;:::i;:::-;7579:7;:44:::0;-1:-1:-1;;;;7710:11:0::1;;;;;;;;;-1:-1:-1::0;;;;;7710:11:0::1;-1:-1:-1::0;;;;;7710:21:0::1;;:23;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;7710:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;7710:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;7706:384;;8059:28;::::0;-1:-1:-1;;;8059:28:0;;22507:2:1;8059:28:0::1;::::0;::::1;22489:21:1::0;22546:2;22526:18;;;22519:30;22585:20;22565:18;;;22558:48;22623:18;;8059:28:0::1;22305:342:1::0;7706:384:0::1;7801:9;:29:::0;;-1:-1:-1;;;;;;7801:29:0::1;;-1:-1:-1::0;;;;;7801:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;7832:6:::1;:22:::0;;-1:-1:-1;;;;;;7832:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;7856:15:0;;;-1:-1:-1;7856:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;7856:22:0::1;::::0;;::::1;::::0;;7907:6:::1;::::0;7923:9;;7898:55:::1;::::0;7907:6;;::::1;::::0;::::1;::::0;7923:9;;::::1;;-1:-1:-1::0;;7898:8:0::1;:55::i;:::-;8004:9;::::0;7972:62:::1;::::0;7989:4:::1;::::0;8004:9:::1;::::0;::::1;-1:-1:-1::0;;;;;8004:9:0::1;-1:-1:-1::0;;7972:8:0::1;:62::i;:::-;7734:316;;8136:5;8120:7;;8130:2;8120:12;;;;:::i;:::-;8119:22;;;;:::i;:::-;8104:12;:37:::0;8174:7:::1;::::0;8190:5:::1;::::0;8174:12:::1;::::0;8184:2:::1;8174:12;:::i;:::-;8173:22;;;;:::i;:::-;8156:14;:39:::0;8210:19:::1;:26:::0;;-1:-1:-1;;8210:26:0::1;8232:4;8210:26;::::0;;;8274:7:::1;::::0;-1:-1:-1;;;;;8210:26:0::1;8264:6:::0;;;::::1;::::0;::::1;8210:19;8256:15:::0;;;::::1;::::0;;;;;;;:25;;;8322:6;;8301:37;;8322:6;;;::::1;;::::0;8210:19;8301:37:::1;::::0;::::1;::::0;391:25:1;;;379:2;364:18;;245:177;8301:37:0::1;;;;;;;;8370:6;::::0;8438:9:::1;::::0;8353:115:::1;::::0;8370:6:::1;::::0;::::1;-1:-1:-1::0;;;;;8370:6:0::1;::::0;8378:42:::1;::::0;8434:13:::1;::::0;8438:9:::1;;8434:2;:13;:::i;:::-;8422:25;::::0;:11:::1;:25;:::i;8353:115::-;-1:-1:-1::0;8500:6:0::1;::::0;8568:9:::1;::::0;8483:115:::1;::::0;8500:6:::1;::::0;::::1;-1:-1:-1::0;;;;;8500:6:0::1;::::0;8508:42:::1;::::0;8564:13:::1;::::0;8568:9:::1;;8564:2;:13;:::i;:::-;8552:25;::::0;:11:::1;:25;:::i;8483:115::-;-1:-1:-1::0;8630:6:0::1;::::0;8697:9:::1;::::0;8613:114:::1;::::0;8630:6:::1;::::0;::::1;-1:-1:-1::0;;;;;8630:6:0::1;::::0;8638:42:::1;::::0;8693:13:::1;::::0;8697:9:::1;;8693:2;:13;:::i;:::-;8682:24;::::0;:10:::1;:24;:::i;8613:114::-;-1:-1:-1::0;8759:6:0::1;::::0;8826:9:::1;::::0;8742:114:::1;::::0;8759:6:::1;::::0;::::1;-1:-1:-1::0;;;;;8759:6:0::1;::::0;8767:42:::1;::::0;8822:13:::1;::::0;8826:9:::1;;8822:2;:13;:::i;8742:114::-;-1:-1:-1::0;8888:6:0::1;::::0;8955:9:::1;::::0;8871:114:::1;::::0;8888:6:::1;::::0;::::1;-1:-1:-1::0;;;;;8888:6:0::1;::::0;8896:42:::1;::::0;8951:13:::1;::::0;8955:9:::1;;8951:2;:13;:::i;8871:114::-;-1:-1:-1::0;9017:6:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;9017:6:0::1;12346:7:::0;12373:16;;;;;;;;;;;9000:78:::1;::::0;9017:6;9033:4:::1;::::0;9040:17:::1;12280:117:::0;9000:78:::1;-1:-1:-1::0;9099:9:0::1;::::0;9181:4:::1;12346:7:::0;12373:16;;;;;;;;;;;9099:9:::1;::::0;;::::1;-1:-1:-1::0;;;;;9099:9:0::1;::::0;:25:::1;::::0;9132:21:::1;::::0;9342:6:::1;::::0;9099:298:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9099:298:0;;;-1:-1:-1;;;;;23034:15:1;;;9099:298:0::1;::::0;::::1;23016:34:1::0;23066:18;;;23059:34;;;;9248:1:0::1;23109:18:1::0;;;23102:34;;;23152:18;;;23145:34;9342:6:0::1;::::0;::::1;::::0;;::::1;23195:19:1::0;;;23188:44;9367:15:0::1;23248:19:1::0;;;23241:35;22927:19;;9099:298:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;9099:298:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;9099:298:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;9095:373;;9426:26;::::0;-1:-1:-1;;;9426:26:0;;23800:2:1;9426:26:0::1;::::0;::::1;23782:21:1::0;23839:2;23819:18;;;23812:30;23878:18;23858;;;23851:46;23914:18;;9426:26:0::1;23598:340:1::0;9095:373:0::1;;;;9484:15;:13;:15::i;:::-;7032:2479:::0;:::o;15245:134::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;-1:-1:-1;;;;;15333:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15333:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15245:134::o;18605:108::-;18695:9;;18648:7;;18691:13;;18695:9;;18691:2;:13;:::i;:::-;18675:12;;:30;;;;:::i;10935:310::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;11002:14:::1;::::0;::::1;;10994:74;;;::::0;-1:-1:-1;;;10994:74:0;;24145:2:1;10994:74:0::1;::::0;::::1;24127:21:1::0;24184:2;24164:18;;;24157:30;24223:34;24203:18;;;24196:62;24294:17;24274:18;;;24267:45;24329:19;;10994:74:0::1;23943:411:1::0;10994:74:0::1;11099:6;::::0;11079:34:::1;::::0;11099:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11099:6:0::1;11107:5;11079:19;:34::i;:::-;11143:6;::::0;;-1:-1:-1;;;;;;11160:19:0;::::1;::::0;;;11195:42:::1;::::0;11143:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;11143:6:0::1;::::0;-1:-1:-1;;11143:6:0;;11195:42:::1;::::0;-1:-1:-1;;11195:42:0::1;10983:262;10935:310::o:0;17202:182::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;17355:14:::1;:21:::0;;-1:-1:-1;;17355:21:0::1;17372:4;17355:21;::::0;;17202:182::o;14250:564::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;14332:7:::1;14327:480;;-1:-1:-1::0;;;;;14356:13:0;;::::1;14372:5;14356:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14356:21:0::1;::::0;;14392:11:::1;::::0;:34;;-1:-1:-1;;;14392:34:0;;::::1;::::0;::::1;24527:74:1::0;;;;24617:18;;;24610:50;;;;14392:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;24500:18:1;;14392:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;14327:480;14463:17;::::0;:22;14459:135:::1;;14552:6;14532:17;;14514:15;:35;;;;:::i;:::-;:44;14506:72;;;::::0;-1:-1:-1;;;14506:72:0;;24873:2:1;14506:72:0::1;::::0;::::1;24855:21:1::0;24912:2;24892:18;;;24885:30;24951:17;24931:18;;;24924:45;24986:18;;14506:72:0::1;24671:339:1::0;14506:72:0::1;-1:-1:-1::0;;;;;14617:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14616:14;14608:54;;;::::0;-1:-1:-1;;;14608:54:0;;25217:2:1;14608:54:0::1;::::0;::::1;25199:21:1::0;25256:2;25236:18;;;25229:30;25295:29;25275:18;;;25268:57;25342:18;;14608:54:0::1;25015:351:1::0;14608:54:0::1;-1:-1:-1::0;;;;;14677:13:0;;::::1;;::::0;;;14693:4:::1;14677:13;::::0;;;;;;;;:20;;-1:-1:-1;;14677:20:0::1;::::0;::::1;::::0;;14732:15:::1;14712:17;:35:::0;14762:11:::1;::::0;:33;;-1:-1:-1;;;14762:33:0;;::::1;::::0;::::1;24527:74:1::0;;;;24617:18;;;24610:50;14762:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;24500:18:1;;14762:33:0::1;24359:307:1::0;13065:175:0;10127:6;;13131:4;;10127:6;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;13180:9:::1;::::0;13148:62:::1;::::0;13165:4:::1;::::0;13180:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13180:9:0::1;-1:-1:-1::0;;13148:8:0::1;:62::i;:::-;-1:-1:-1::0;13228:4:0::1;13065:175:::0;:::o;25252:695::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;25314:14:::1;::::0;::::1;;25313:15;25305:52;;;::::0;-1:-1:-1;;;25305:52:0;;25573:2:1;25305:52:0::1;::::0;::::1;25555:21:1::0;25612:2;25592:18;;;25585:30;25651:26;25631:18;;;25624:54;25695:18;;25305:52:0::1;25371:348:1::0;25305:52:0::1;25376:16;::::0;::::1;::::0;::::1;;;25368:53;;;::::0;-1:-1:-1;;;25368:53:0;;25926:2:1;25368:53:0::1;::::0;::::1;25908:21:1::0;25965:2;25945:18;;;25938:30;26004:26;25984:18;;;25977:54;26048:18;;25368:53:0::1;25724:348:1::0;25368:53:0::1;25444:11;::::0;;;::::1;-1:-1:-1::0;;;;;25444:11:0::1;25432:106;;25486:11;:40:::0;;-1:-1:-1;;25486:40:0::1;25520:4;25486:40:::0;::::1;;::::0;;25432:106:::1;25552:11;::::0;25574:6:::1;::::0;25629:9:::1;::::0;25552:87:::1;::::0;-1:-1:-1;;;25552:87:0;;-1:-1:-1;;;;;25574:6:0;;::::1;25552:87;::::0;::::1;26300:74:1::0;26422:10;25589:12:0::1;26410:23:1::0;26390:18;;;26383:51;26482:18;25611:15:0::1;26470:31:1::0;26450:18;;;26443:59;25629:9:0::1;::::0;;::::1;26518:18:1::0;;;26511:45;25552:11:0;;;::::1;;::::0;:21:::1;::::0;26272:19:1;;25552:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;25665:11:0::1;::::0;25696:6:::1;::::0;-1:-1:-1;;;;;25696:6:0;;::::1;12346:7:::0;12373:16;;;;;;;;;;;;;25665:39;;-1:-1:-1;;;25665:39:0;;::::1;::::0;::::1;391:25:1::0;;;;25665:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;25665:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;25665:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25665:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25661:207:::0;::::1;;25776:13;:29:::0;;;;25820:10:::1;:27:::0;25661:207:::1;25878:14;:21:::0;;-1:-1:-1;;25878:21:0::1;25895:4;25878:21;::::0;;25924:15:::1;25910:11;:29:::0;25252:695::o;11880:84::-;11930:13;11954:7;11947:14;;;;;:::i;12405:165::-;12483:4;12500:40;12510:10;12522:9;12533:6;12500:9;:40::i;:::-;-1:-1:-1;12558:4:0;;12405:165;-1:-1:-1;;;12405:165:0:o;26145:296::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;26223:16:::1;::::0;::::1;::::0;::::1;;;26219:111;;;26281:4;-1:-1:-1::0;;;;;26264:22:0;::::1;::::0;26256:62:::1;;;::::0;-1:-1:-1;;;26256:62:0;;27019:2:1;26256:62:0::1;::::0;::::1;27001:21:1::0;27058:2;27038:18;;;27031:30;27097:29;27077:18;;;27070:57;27144:18;;26256:62:0::1;26817:351:1::0;26256:62:0::1;26394:6;::::0;26402:30:::1;::::0;-1:-1:-1;;;26402:30:0;;26426:4:::1;26402:30;::::0;::::1;160:74:1::0;26362:5:0;;-1:-1:-1;;;;;26379:14:0;;::::1;::::0;::::1;::::0;26394:6:::1;::::0;::::1;::::0;;::::1;::::0;26379:14;;26402:15:::1;::::0;133:18:1;;26402:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26379:54;::::0;-1:-1:-1;;;;;;26379:54:0::1;::::0;;;;;;-1:-1:-1;;;;;27554:55:1;;;26379:54:0::1;::::0;::::1;27536:74:1::0;27626:18;;;27619:34;27509:18;;26379:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20076:263::-:0;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;20185:19:::1;:33:::0;;-1:-1:-1;;;;20185:33:0::1;-1:-1:-1::0;;;20185:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;:19:::1;20229:47:::0;;-1:-1:-1;;20229:47:0::1;::::0;::::1;;;::::0;;20292:39:::1;::::0;4328:41:1;;;20292:39:0::1;::::0;4316:2:1;4301:18;20292:39:0::1;;;;;;;;20076:263:::0;;:::o;16649:202::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;16805:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;16805:38:0;;-1:-1:-1;;;;;178:55:1;;;16805:38:0::1;::::0;::::1;160:74:1::0;16805:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;16805:38:0::1;14:226:1::0;18843:96:0;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;18901:11:::1;;;;;;;;;-1:-1:-1::0;;;;;18901:11:0::1;-1:-1:-1::0;;;;;18901:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18843:96::o:0;13562:680::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;13642:16:::1;::::0;::::1;::::0;::::1;;;13641:17;13633:60;;;::::0;-1:-1:-1;;;13633:60:0;;28116:2:1;13633:60:0::1;::::0;::::1;28098:21:1::0;28155:2;28135:18;;;28128:30;28194:32;28174:18;;;28167:60;28244:18;;13633:60:0::1;27914:354:1::0;13633:60:0::1;13704:20;13737:9;13704:43;;13758:16;13788:10;-1:-1:-1::0;;;;;13788:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13777:40:0::1;;13826:4;13833:10;-1:-1:-1::0;;;;;13833:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13777:74;::::0;-1:-1:-1;;;;;;13777:74:0::1;::::0;;;;;;-1:-1:-1;;;;;28782:15:1;;;13777:74:0::1;::::0;::::1;28764:34:1::0;28834:15;;28814:18;;;28807:43;28676:18;;13777:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13870:6;::::0;-1:-1:-1;;;;;13870:6:0;;::::1;13880:5;13862:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;13862:23:0::1;::::0;;13758:93;;-1:-1:-1;13900:22:0;::::1;13896:200;;13959:10;-1:-1:-1::0;;;;;13959:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13948:43:0::1;;14000:4;14007:10;-1:-1:-1::0;;;;;14007:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13948:77;::::0;-1:-1:-1;;;;;;13948:77:0::1;::::0;;;;;;-1:-1:-1;;;;;28782:15:1;;;13948:77:0::1;::::0;::::1;28764:34:1::0;28834:15;;28814:18;;;28807:43;28676:18;;13948:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13939:6;:86:::0;;-1:-1:-1;;;;;;13939:86:0::1;-1:-1:-1::0;;;;;13939:86:0;;;::::1;::::0;;;::::1;::::0;;13896:200:::1;;;14067:6;:17:::0;;-1:-1:-1;;;;;;14067:17:0::1;-1:-1:-1::0;;;;;14067:17:0;::::1;;::::0;;13896:200:::1;14106:9;:22:::0;;-1:-1:-1;;;;;;14106:22:0::1;;-1:-1:-1::0;;;;;14106:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14147:6:::1;::::0;;::::1;-1:-1:-1::0;14139:15:0;;;-1:-1:-1;14139:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14139:22:0::1;::::0;;::::1;::::0;;14204:9;;14172:62:::1;::::0;14189:4:::1;::::0;14204:9;::::1;;-1:-1:-1::0;;14172:8:0::1;:62::i;17853:191::-:0;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;-1:-1:-1;;;;;17938:23:0;::::1;17930:59;;;::::0;-1:-1:-1;;;17930:59:0;;29063:2:1;17930:59:0::1;::::0;::::1;29045:21:1::0;29102:2;29082:18;;;29075:30;29141:25;29121:18;;;29114:53;29184:18;;17930:59:0::1;28861:347:1::0;17930:59:0::1;18000:15;:36:::0;;-1:-1:-1;;;;;;18000:36:0::1;-1:-1:-1::0;;;;;18000:36:0;;;::::1;::::0;;;::::1;::::0;;17853:191::o;25955:182::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;26022:16:::1;::::0;::::1;::::0;::::1;;;26021:17;26013:58;;;::::0;-1:-1:-1;;;26013:58:0;;29415:2:1;26013:58:0::1;::::0;::::1;29397:21:1::0;29454:2;29434:18;;;29427:30;29493;29473:18;;;29466:58;29541:18;;26013:58:0::1;29213:352:1::0;26013:58:0::1;26090:6;::::0;26082:47:::1;::::0;-1:-1:-1;;;;;26090:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;26107:21:::1;26082:47:::0;::::1;;;::::0;::::1;::::0;;;26107:21;26090:6;26082:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15904:251:::0;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;16098:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;16098:49:0;;-1:-1:-1;;;;;24545:55:1;;;16098:49:0::1;::::0;::::1;24527:74:1::0;24644:14;;24637:22;24617:18;;;24610:50;16098:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;24500:18:1;;16098:49:0::1;24359:307:1::0;19144:699:0;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;19344:16:::1;19324;19314:7;;:26;;;;:::i;:::-;19313:47;;;;:::i;:::-;19297:13;:63:::0;19385:7:::1;::::0;19412:13;;19385:23:::1;::::0;19395:13;;19385:23:::1;:::i;:::-;19384:41;;;;:::i;:::-;19371:10;:54:::0;;;19444:13:::1;::::0;:27:::1;;19436:73;;;::::0;-1:-1:-1;;;19436:73:0;;29772:2:1;19436:73:0::1;::::0;::::1;29754:21:1::0;29811:2;29791:18;;;29784:30;29850:34;29830:18;;;29823:62;-1:-1:-1;;;29901:18:1;;;29894:31;29942:19;;19436:73:0::1;29570:397:1::0;19436:73:0::1;19553:6;::::0;-1:-1:-1;;;;;19553:6:0::1;12346:7:::0;12373:16;;;;;;;;;;;5756:5:::1;::::0;19543:23:::1;::::0;19563:3:::1;19543:23;:::i;:::-;19542:44;;;;:::i;:::-;19528:10;;:58;;19520:106;;;::::0;-1:-1:-1;;;19520:106:0;;30174:2:1;19520:106:0::1;::::0;::::1;30156:21:1::0;30213:2;30193:18;;;30186:30;30252:34;30232:18;;;30225:62;-1:-1:-1;;;30303:18:1;;;30296:33;30346:19;;19520:106:0::1;29972:399:1::0;19520:106:0::1;19669:9;19659:7;;:19;;;;:::i;:::-;19645:10;;:33;;19637:92;;;::::0;-1:-1:-1;;;19637:92:0;;30578:2:1;19637:92:0::1;::::0;::::1;30560:21:1::0;30617:2;30597:18;;;30590:30;30656:34;30636:18;;;30629:62;-1:-1:-1;;;30707:18:1;;;30700:44;30761:19;;19637:92:0::1;30376:410:1::0;19637:92:0::1;19775:9;19765:7;;:19;;;;:::i;:::-;19748:13;;:36;;19740:95;;;::::0;-1:-1:-1;;;19740:95:0;;30578:2:1;19740:95:0::1;::::0;::::1;30560:21:1::0;30617:2;30597:18;;;30590:30;30656:34;30636:18;;;30629:62;-1:-1:-1;;;30707:18:1;;;30700:44;30761:19;;19740:95:0::1;30376:410:1::0;16512:129:0;16599:11;;:34;;-1:-1:-1;;;16599:34:0;;-1:-1:-1;;;;;178:55:1;;;16599:34:0;;;160:74:1;16575:4:0;;16599:11;;;;;:25;;133:18:1;;16599:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15535:148::-;10127:6;;;;;-1:-1:-1;;;;;10127:6:0;10137:10;10127:20;10119:50;;;;-1:-1:-1;;;10119:50:0;;9559:2:1;10119:50:0;;;9541:21:1;9598:2;9578:18;;;9571:30;-1:-1:-1;;;;;;;;;;;9617:18:1;;;9610:47;9674:18;;10119:50:0;9357:341:1;10119:50:0;-1:-1:-1;;;;;15631:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;15631:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15535:148::o;12747:310::-;-1:-1:-1;;;;;12842:20:0;;12834:52;;;;-1:-1:-1;;;12834:52:0;;30993:2:1;12834:52:0;;;30975:21:1;31032:2;31012:18;;;31005:30;-1:-1:-1;;;31051:18:1;;;31044:49;31110:18;;12834:52:0;30791:343:1;12834:52:0;-1:-1:-1;;;;;12905:21:0;;12897:53;;;;-1:-1:-1;;;12897:53:0;;30993:2:1;12897:53:0;;;30975:21:1;31032:2;31012:18;;;31005:30;-1:-1:-1;;;31051:18:1;;;31044:49;31110:18;;12897:53:0;30791:343:1;12897:53:0;-1:-1:-1;;;;;12963:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13016:33;;391:25:1;;;13016:33:0;;364:18:1;13016:33:0;;;;;;;12747:310;;;:::o;21618:2286::-;21697:4;-1:-1:-1;;;;;21722:18:0;;21714:68;;;;-1:-1:-1;;;21714:68:0;;31341:2:1;21714:68:0;;;31323:21:1;31380:2;31360:18;;;31353:30;31419:34;31399:18;;;31392:62;-1:-1:-1;;;31470:18:1;;;31463:35;31515:19;;21714:68:0;31139:401:1;21714:68:0;-1:-1:-1;;;;;21801:16:0;;21793:64;;;;-1:-1:-1;;;21793:64:0;;31747:2:1;21793:64:0;;;31729:21:1;31786:2;31766:18;;;31759:30;31825:34;31805:18;;;31798:62;-1:-1:-1;;;31876:18:1;;;31869:33;31919:19;;21793:64:0;31545:399:1;21793:64:0;21885:1;21876:6;:10;21868:64;;;;-1:-1:-1;;;21868:64:0;;32151:2:1;21868:64:0;;;32133:21:1;32190:2;32170:18;;;32163:30;32229:34;32209:18;;;32202:62;-1:-1:-1;;;32280:18:1;;;32273:39;32329:19;;21868:64:0;31949:405:1;21868:64:0;-1:-1:-1;;;;;22031:13:0;;21943:8;22031:13;;;:7;:13;;;;;;21943:8;;;;22031:13;;22027:162;;;22067:4;22061:10;;22027:162;;;-1:-1:-1;;;;;22093:11:0;;;;;;:7;:11;;;;;;;;22089:100;;;22128:4;22121:11;;22089:100;;;-1:-1:-1;22173:4:0;22089:100;22203:20;22214:4;22220:2;22203:10;:20::i;:::-;22199:874;;;22244:14;;;;22240:319;;22284:5;22279:265;;22314:34;;-1:-1:-1;;;22314:34:0;;32561:2:1;22314:34:0;;;32543:21:1;32600:2;32580:18;;;32573:30;32639:26;32619:18;;;32612:54;32683:18;;22314:34:0;32359:348:1;22279:265:0;-1:-1:-1;;;;;22379:31:0;;;;;;:25;:31;;;;;;;;22378:32;:66;;;;-1:-1:-1;;;;;;22415:29:0;;;;;;:25;:29;;;;;;;;22414:30;22378:66;22374:170;;;22469:55;;-1:-1:-1;;;22469:55:0;;32914:2:1;22469:55:0;;;32896:21:1;32953:2;32933:18;;;32926:30;32992:34;32972:18;;;32965:62;-1:-1:-1;;;33043:18:1;;;33036:43;33096:19;;22469:55:0;32712:409:1;22374:170:0;22577:3;:11;;;;22584:4;22577:11;22573:232;;;-1:-1:-1;;;;;22613:27:0;;;;;;:21;:27;;;;;;;;22612:28;:58;;;;-1:-1:-1;;;;;;22645:25:0;;;;;;:21;:25;;;;;;;;22644:26;22612:58;22608:182;;;22713:12;;22703:6;:22;;22695:75;;;;-1:-1:-1;;;22695:75:0;;33328:2:1;22695:75:0;;;33310:21:1;33367:2;33347:18;;;33340:30;33406:34;33386:18;;;33379:62;-1:-1:-1;;;33457:18:1;;;33450:38;33505:19;;22695:75:0;33126:404:1;22695:75:0;22837:9;;-1:-1:-1;;;;;22823:24:0;;;22837:9;;;;;22823:24;;;;:33;;;22852:4;22851:5;22823:33;22819:243;;;-1:-1:-1;;;;;22882:25:0;;;;;;:21;:25;;;;;;;;22877:170;;22966:14;;22956:6;22940:13;22950:2;-1:-1:-1;;;;;12373:16:0;12346:7;12373:16;;;;;;;;;;;;12280:117;22940:13;:22;;;;:::i;:::-;:40;;22932:95;;;;-1:-1:-1;;;22932:95:0;;33737:2:1;22932:95:0;;;33719:21:1;33776:2;33756:18;;;33749:30;33815:34;33795:18;;;33788:62;-1:-1:-1;;;33866:18:1;;;33859:40;33916:19;;22932:95:0;33535:406:1;22932:95:0;23089:4;23085:742;;;23115:6;;-1:-1:-1;;;23115:6:0;;;;23110:706;;23146:19;;-1:-1:-1;;;23146:19:0;;;;:64;;;;-1:-1:-1;;;;;;23190:20:0;;;;;;:16;:20;;;;;;;;23189:21;23146:64;:111;;;;-1:-1:-1;;;;;;23235:22:0;;;;;;:16;:22;;;;;;;;23234:23;23146:111;23142:659;;;23349:4;23300:28;12373:16;;;;;;;;;;;23406:13;;23382:37;;23378:404;;23466:10;;23507:22;;;;23503:97;;;23564:13;;23554:6;;-1:-1:-1;;;;;23554:6:0;12346:7;12373:16;;;;;;;;;;;5756:5;;23544:33;;;:::i;:::-;23543:54;;;;:::i;:::-;23533:64;;23503:97;23654:7;23630:20;:31;23626:72;;23688:7;23665:30;;23626:72;23724:34;23737:20;23724:12;:34::i;:::-;23421:361;23378:404;23277:524;23142:659;23844:52;23861:4;23867:2;23871:6;23879:3;23884:4;23890:5;23844:16;:52::i;:::-;23837:59;21618:2286;-1:-1:-1;;;;;;;21618:2286:0:o;26904:1055::-;27023:4;27044:20;27055:4;27061:2;27044:10;:20::i;:::-;27040:228;;;27099:11;;:39;;-1:-1:-1;;;27099:39:0;;-1:-1:-1;;;;;34227:15:1;;;27099:39:0;;;34209:34:1;34279:15;;;34259:18;;;34252:43;34311:18;;;34304:34;;;27068:12:0;;27099:11;;;;;:21;;34121:18:1;;27099:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;27099:39:0;;;;;;;;-1:-1:-1;;27099:39:0;;;;;;;;;;;;:::i;:::-;;;27095:122;;27206:8;;;27095:122;27189:5;-1:-1:-1;27235:7:0;27231:26;;27246:8;;;27231:26;27066:202;27040:228;-1:-1:-1;;;;;27312:25:0;;27278:12;27312:25;;;:19;:25;;;;;;27293:4;;27312:25;;;:52;;-1:-1:-1;;;;;;27341:23:0;;;;;;:19;:23;;;;;;;;27312:52;27308:99;;;-1:-1:-1;27390:5:0;27308:99;-1:-1:-1;;;;;27417:13:0;;:7;:13;;;;;;;;;;:23;;27434:6;;27417:7;:23;;27434:6;;27417:23;:::i;:::-;;;;-1:-1:-1;27451:22:0;;-1:-1:-1;27477:7:0;27476:55;;27525:6;27476:55;;;27488:34;27498:4;27504:6;27512:3;27517:4;27488:9;:34::i;:::-;27451:80;;27557:14;27542:7;:11;27550:2;-1:-1:-1;;;;;27542:11:0;-1:-1:-1;;;;;27542:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;27602:2;-1:-1:-1;;;;;27587:34:0;27596:4;-1:-1:-1;;;;;27587:34:0;;27606:14;27587:34;;;;391:25:1;;379:2;364:18;;245:177;27587:34:0;;;;;;;;27637:16;;;;;;;27632:298;;27670:28;27689:4;27695:2;27670:18;:28::i;:::-;27718:16;;;;;;;27717:17;:41;;;;;27738:20;27749:4;27755:2;27738:10;:20::i;:::-;27717:77;;;;-1:-1:-1;;;;;;27763:31:0;;;;;;:25;:31;;;;;;;;27762:32;27717:77;:111;;;;-1:-1:-1;;;;;;27799:29:0;;;;;;:25;:29;;;;;;;;27798:30;27717:111;:121;;;;;27833:5;27832:6;27717:121;27713:206;;;27859:44;;-1:-1:-1;;;27859:44:0;;34551:2:1;27859:44:0;;;34533:21:1;34590:2;34570:18;;;34563:30;34629:34;34609:18;;;34602:62;-1:-1:-1;;;34680:18:1;;;34673:32;34722:19;;27859:44:0;34349:398:1;27713:206:0;-1:-1:-1;27947:4:0;;26904:1055;-1:-1:-1;;;;;;;;26904:1055:0:o;21164:446::-;21265:6;;21233:4;;-1:-1:-1;;;;;21257:14:0;;;21265:6;;;;;21257:14;;;;:43;;-1:-1:-1;21294:6:0;;-1:-1:-1;;;;;21288:12:0;;;21294:6;;;;;21288:12;;21257:43;:79;;;;-1:-1:-1;21330:6:0;;;;;-1:-1:-1;;;;;21330:6:0;21317:9;:19;;21257:79;:118;;;;-1:-1:-1;;;;;;21354:21:0;;;;;;:17;:21;;;;;;;;21353:22;21257:118;:159;;;;-1:-1:-1;;;;;;21393:23:0;;;;;;:17;:23;;;;;;;;21392:24;21257:159;:186;;;;-1:-1:-1;;;;;;21433:10:0;;5895:42;21433:10;;21257:186;:219;;;;-1:-1:-1;;;;;;21460:16:0;;;;21257:219;:257;;;;-1:-1:-1;;;;;;21493:21:0;;21509:4;21493:21;;21257:257;:302;;;;-1:-1:-1;21547:11:0;;-1:-1:-1;;;;;21531:28:0;;;21547:11;;;;;21531:28;;21257:302;:345;;;;-1:-1:-1;21590:11:0;;-1:-1:-1;;;;;21576:26:0;;;21590:11;;;;;21576:26;;21257:345;21250:352;21164:446;-1:-1:-1;;;21164:446:0:o;23912:761::-;6646:6;:13;;-1:-1:-1;;;;6646:13:0;-1:-1:-1;;;6646:13:0;;;24019:4:::1;6646:13:::0;23999:26;;;:11:::1;:26;::::0;;;;;;;24034:9:::1;::::0;6646:13;24034:9;::::1;-1:-1:-1::0;;;;;24034:9:0::1;23999:46:::0;;;;;;;;-1:-1:-1;;23999:67:0::1;23995:166;;24103:4;24083:26;::::0;;;:11:::1;:26;::::0;;;;;;;24118:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24118:9:0::1;24083:46:::0;;;;;;;-1:-1:-1;;24083:66:0;;23995:166:::1;24205:16;::::0;;24219:1:::1;24205:16:::0;;;;;::::1;::::0;;24181:21:::1;::::0;24205:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24205:16:0::1;24181:40;;24250:4;24232;24237:1;24232:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;24232:23:0::1;;;-1:-1:-1::0;;;;;24232:23:0::1;;;::::0;::::1;24276:9;;;;;;;;;-1:-1:-1::0;;;;;24276:9:0::1;-1:-1:-1::0;;;;;24276:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24266:4;24271:1;24266:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24266:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;24309:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;24309:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;24384:20;;24419:1:::1;::::0;24435:4;;24462::::1;::::0;24482:15:::1;::::0;24309:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24305:246;;24533:7;;;24305:246;24599:15;::::0;:66:::1;::::0;24563:12:::1;::::0;-1:-1:-1;;;;;24599:15:0::1;::::0;24655:5:::1;::::0;24627:21:::1;::::0;24563:12;24599:66;24563:12;24599:66;24627:21;24599:15;24655:5;24599:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6670:1:0::1;-1:-1:-1::0;6682:6:0;:14;;-1:-1:-1;;;;6682:14:0;;;23912:761::o;27967:767::-;28055:7;28075:18;28108:3;28104:205;;;-1:-1:-1;28141:9:0;:16;;;28104:205;;;28179:4;28175:134;;;-1:-1:-1;28213:9:0;:17;;;;;;28175:134;;;-1:-1:-1;28276:9:0;:21;;;;;;28175:134;28323:10;28337:1;28323:15;28319:39;;28349:6;28342:13;;;;;28319:39;28380:11;;;;;-1:-1:-1;;;;;28380:11:0;28404:4;28372:37;:73;;;;;28426:13;28443:2;28426:19;;28372:73;28368:101;;;-1:-1:-1;28462:4:0;28368:101;28479:17;5756:5;28499:19;28508:10;28499:6;:19;:::i;:::-;:38;;;;:::i;:::-;28479:58;-1:-1:-1;28552:13:0;;28548:141;;28598:4;28582:7;:22;;;;;;;;;;:35;;28608:9;;28582:7;:35;;28608:9;;28582:35;:::i;:::-;;;;-1:-1:-1;;28637:40:0;;391:25:1;;;28660:4:0;;-1:-1:-1;;;;;28637:40:0;;;;;379:2:1;364:18;28637:40:0;;;;;;;28548:141;28708:18;28717:9;28708:6;:18;:::i;24681:563::-;24764:16;;;;;;;24763:17;24755:65;;;;-1:-1:-1;;;24755:65:0;;35774:2:1;24755:65:0;;;35756:21:1;35813:2;35793:18;;;35786:30;35852:34;35832:18;;;35825:62;-1:-1:-1;;;35903:18:1;;;35896:33;35946:19;;24755:65:0;35572:399:1;24755:65:0;24836:20;24847:4;24853:2;24836:10;:20::i;:::-;24835:21;:37;;;;-1:-1:-1;24866:6:0;;-1:-1:-1;;;;;24860:12:0;;;24866:6;;24860:12;24835:37;24831:406;;;-1:-1:-1;;;;;24889:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;24889:30:0;;;24915:4;24889:30;;;;;;24934:19;:25;;;;;:32;;;;;;;;;;24981:16;:23;;-1:-1:-1;;24981:23:0;24889:30;24981:23;;;;;25031:11;;;;25019:114;;25077:11;:40;;-1:-1:-1;;25077:40:0;25111:4;25077:40;;;;;25019:114;25147:19;:26;;-1:-1:-1;;;;25147:26:0;-1:-1:-1;;;25147:26:0;;;25193:32;;-1:-1:-1;4328:41:1;;25193:32:0;;4316:2:1;4301:18;25193:32:0;4188:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:127::-;992:10;987:3;983:20;980:1;973:31;1023:4;1020:1;1013:15;1047:4;1044:1;1037:15;1063:275;1134:2;1128:9;1199:2;1180:13;;-1:-1:-1;;1176:27:1;1164:40;;1234:18;1219:34;;1255:22;;;1216:62;1213:88;;;1281:18;;:::i;:::-;1317:2;1310:22;1063:275;;-1:-1:-1;1063:275:1:o;1343:183::-;1403:4;1436:18;1428:6;1425:30;1422:56;;;1458:18;;:::i;:::-;-1:-1:-1;1503:1:1;1499:14;1515:4;1495:25;;1343:183::o;1531:154::-;-1:-1:-1;;;;;1610:5:1;1606:54;1599:5;1596:65;1586:93;;1675:1;1672;1665:12;1690:737;1744:5;1797:3;1790:4;1782:6;1778:17;1774:27;1764:55;;1815:1;1812;1805:12;1764:55;1851:6;1838:20;1877:4;1901:60;1917:43;1957:2;1917:43;:::i;:::-;1901:60;:::i;:::-;1995:15;;;2081:1;2077:10;;;;2065:23;;2061:32;;;2026:12;;;;2105:15;;;2102:35;;;2133:1;2130;2123:12;2102:35;2169:2;2161:6;2157:15;2181:217;2197:6;2192:3;2189:15;2181:217;;;2277:3;2264:17;2294:31;2319:5;2294:31;:::i;:::-;2338:18;;2376:12;;;;2214;;2181:217;;;-1:-1:-1;2416:5:1;1690:737;-1:-1:-1;;;;;;1690:737:1:o;2432:477::-;2522:6;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2639:9;2626:23;2672:18;2664:6;2661:30;2658:50;;;2704:1;2701;2694:12;2658:50;2727:61;2780:7;2771:6;2760:9;2756:22;2727:61;:::i;:::-;2717:71;;;2838:2;2827:9;2823:18;2810:32;2851:28;2873:5;2851:28;:::i;3284:250::-;3369:1;3379:113;3393:6;3390:1;3387:13;3379:113;;;3469:11;;;3463:18;3450:11;;;3443:39;3415:2;3408:10;3379:113;;;-1:-1:-1;;3526:1:1;3508:16;;3501:27;3284:250::o;3539:396::-;3688:2;3677:9;3670:21;3651:4;3720:6;3714:13;3763:6;3758:2;3747:9;3743:18;3736:34;3779:79;3851:6;3846:2;3835:9;3831:18;3826:2;3818:6;3814:15;3779:79;:::i;:::-;3919:2;3898:15;-1:-1:-1;;3894:29:1;3879:45;;;;3926:2;3875:54;;3539:396;-1:-1:-1;;3539:396:1:o;4380:315::-;4448:6;4456;4509:2;4497:9;4488:7;4484:23;4480:32;4477:52;;;4525:1;4522;4515:12;4477:52;4564:9;4551:23;4583:31;4608:5;4583:31;:::i;:::-;4633:5;4685:2;4670:18;;;;4657:32;;-1:-1:-1;;;4380:315:1:o;4700:247::-;4759:6;4812:2;4800:9;4791:7;4787:23;4783:32;4780:52;;;4828:1;4825;4818:12;4780:52;4867:9;4854:23;4886:31;4911:5;4886:31;:::i;4952:388::-;5020:6;5028;5081:2;5069:9;5060:7;5056:23;5052:32;5049:52;;;5097:1;5094;5087:12;5049:52;5136:9;5123:23;5155:31;5180:5;5155:31;:::i;:::-;5205:5;-1:-1:-1;5262:2:1;5247:18;;5234:32;5275:33;5234:32;5275:33;:::i;5345:456::-;5422:6;5430;5438;5491:2;5479:9;5470:7;5466:23;5462:32;5459:52;;;5507:1;5504;5497:12;5459:52;5546:9;5533:23;5565:31;5590:5;5565:31;:::i;:::-;5615:5;-1:-1:-1;5672:2:1;5657:18;;5644:32;5685:33;5644:32;5685:33;:::i;:::-;5345:456;;5737:7;;-1:-1:-1;;;5791:2:1;5776:18;;;;5763:32;;5345:456::o;5806:248::-;5874:6;5882;5935:2;5923:9;5914:7;5910:23;5906:32;5903:52;;;5951:1;5948;5941:12;5903:52;-1:-1:-1;;5974:23:1;;;6044:2;6029:18;;;6016:32;;-1:-1:-1;5806:248:1:o;6059:1138::-;6177:6;6185;6238:2;6226:9;6217:7;6213:23;6209:32;6206:52;;;6254:1;6251;6244:12;6206:52;6294:9;6281:23;6323:18;6364:2;6356:6;6353:14;6350:34;;;6380:1;6377;6370:12;6350:34;6403:61;6456:7;6447:6;6436:9;6432:22;6403:61;:::i;:::-;6393:71;;6483:2;6473:12;;6538:2;6527:9;6523:18;6510:32;6567:2;6557:8;6554:16;6551:36;;;6583:1;6580;6573:12;6551:36;6606:24;;;-1:-1:-1;6661:4:1;6653:13;;6649:27;-1:-1:-1;6639:55:1;;6690:1;6687;6680:12;6639:55;6726:2;6713:16;6749:60;6765:43;6805:2;6765:43;:::i;6749:60::-;6843:15;;;6925:1;6921:10;;;;6913:19;;6909:28;;;6874:12;;;;6949:19;;;6946:39;;;6981:1;6978;6971:12;6946:39;7005:11;;;;7025:142;7041:6;7036:3;7033:15;7025:142;;;7107:17;;7095:30;;7058:12;;;;7145;;;;7025:142;;;7186:5;7176:15;;;;;;;6059:1138;;;;;:::o;7391:159::-;7458:20;;7518:6;7507:18;;7497:29;;7487:57;;7540:1;7537;7530:12;7487:57;7391:159;;;:::o;7555:328::-;7629:6;7637;7645;7698:2;7686:9;7677:7;7673:23;7669:32;7666:52;;;7714:1;7711;7704:12;7666:52;7737:28;7755:9;7737:28;:::i;:::-;7727:38;;7784:37;7817:2;7806:9;7802:18;7784:37;:::i;:::-;7774:47;;7840:37;7873:2;7862:9;7858:18;7840:37;:::i;:::-;7830:47;;7555:328;;;;;:::o;7888:382::-;7953:6;7961;8014:2;8002:9;7993:7;7989:23;7985:32;7982:52;;;8030:1;8027;8020:12;7982:52;8069:9;8056:23;8088:31;8113:5;8088:31;:::i;8275:180::-;8334:6;8387:2;8375:9;8366:7;8362:23;8358:32;8355:52;;;8403:1;8400;8393:12;8355:52;-1:-1:-1;8426:23:1;;8275:180;-1:-1:-1;8275:180:1:o;8967:385::-;9053:6;9061;9069;9077;9130:3;9118:9;9109:7;9105:23;9101:33;9098:53;;;9147:1;9144;9137:12;9098:53;-1:-1:-1;;9170:23:1;;;9240:2;9225:18;;9212:32;;-1:-1:-1;9291:2:1;9276:18;;9263:32;;9342:2;9327:18;9314:32;;-1:-1:-1;8967:385:1;-1:-1:-1;8967:385:1:o;10322:484::-;10375:3;10413:5;10407:12;10440:6;10435:3;10428:19;10466:4;10495:2;10490:3;10486:12;10479:19;;10532:2;10525:5;10521:14;10553:1;10563:218;10577:6;10574:1;10571:13;10563:218;;;10642:13;;-1:-1:-1;;;;;10638:62:1;10626:75;;10721:12;;;;10756:15;;;;10599:1;10592:9;10563:218;;;-1:-1:-1;10797:3:1;;10322:484;-1:-1:-1;;;;;10322:484:1:o;10811:342::-;11012:2;11001:9;10994:21;10975:4;11032:56;11084:2;11073:9;11069:18;11061:6;11032:56;:::i;:::-;11024:64;;11138:6;11131:14;11124:22;11119:2;11108:9;11104:18;11097:50;10811:342;;;;;:::o;11158:380::-;11237:1;11233:12;;;;11280;;;11301:61;;11355:4;11347:6;11343:17;11333:27;;11301:61;11408:2;11400:6;11397:14;11377:18;11374:38;11371:161;;11454:10;11449:3;11445:20;11442:1;11435:31;11489:4;11486:1;11479:15;11517:4;11514:1;11507:15;11371:161;;11158:380;;;:::o;11543:127::-;11604:10;11599:3;11595:20;11592:1;11585:31;11635:4;11632:1;11625:15;11659:4;11656:1;11649:15;11675:422;11764:1;11807:5;11764:1;11821:270;11842:7;11832:8;11829:21;11821:270;;;11901:4;11897:1;11893:6;11889:17;11883:4;11880:27;11877:53;;;11910:18;;:::i;:::-;11960:7;11950:8;11946:22;11943:55;;;11980:16;;;;11943:55;12059:22;;;;12019:15;;;;11821:270;;;11825:3;11675:422;;;;;:::o;12102:806::-;12151:5;12181:8;12171:80;;-1:-1:-1;12222:1:1;12236:5;;12171:80;12270:4;12260:76;;-1:-1:-1;12307:1:1;12321:5;;12260:76;12352:4;12370:1;12365:59;;;;12438:1;12433:130;;;;12345:218;;12365:59;12395:1;12386:10;;12409:5;;;12433:130;12470:3;12460:8;12457:17;12454:43;;;12477:18;;:::i;:::-;-1:-1:-1;;12533:1:1;12519:16;;12548:5;;12345:218;;12647:2;12637:8;12634:16;12628:3;12622:4;12619:13;12615:36;12609:2;12599:8;12596:16;12591:2;12585:4;12582:12;12578:35;12575:77;12572:159;;;-1:-1:-1;12684:19:1;;;12716:5;;12572:159;12763:34;12788:8;12782:4;12763:34;:::i;:::-;12833:6;12829:1;12825:6;12821:19;12812:7;12809:32;12806:58;;;12844:18;;:::i;:::-;12882:20;;12102:806;-1:-1:-1;;;12102:806:1:o;12913:140::-;12971:5;13000:47;13041:4;13031:8;13027:19;13021:4;13000:47;:::i;13058:217::-;13098:1;13124;13114:132;;13168:10;13163:3;13159:20;13156:1;13149:31;13203:4;13200:1;13193:15;13231:4;13228:1;13221:15;13114:132;-1:-1:-1;13260:9:1;;13058:217::o;13620:128::-;13687:9;;;13708:11;;;13705:37;;;13722:18;;:::i;13753:168::-;13826:9;;;13857;;13874:15;;;13868:22;;13854:37;13844:71;;13895:18;;:::i;14693:127::-;14754:10;14749:3;14745:20;14742:1;14735:31;14785:4;14782:1;14775:15;14809:4;14806:1;14799:15;15172:197;15210:3;15238:6;15279:2;15272:5;15268:14;15306:2;15297:7;15294:15;15291:41;;15312:18;;:::i;:::-;15361:1;15348:15;;15172:197;-1:-1:-1;;;15172:197:1:o;15374:125::-;15439:9;;;15460:10;;;15457:36;;;15473:18;;:::i;18088:510::-;18142:5;18195:3;18188:4;18180:6;18176:17;18172:27;18162:55;;18213:1;18210;18203:12;18162:55;18242:6;18236:13;18268:18;18264:2;18261:26;18258:52;;;18290:18;;:::i;:::-;18334:55;18377:2;18358:13;;-1:-1:-1;;18354:27:1;18383:4;18350:38;18334:55;:::i;:::-;18414:2;18405:7;18398:19;18460:3;18453:4;18448:2;18440:6;18436:15;18432:26;18429:35;18426:55;;;18477:1;18474;18467:12;18426:55;18490:77;18564:2;18557:4;18548:7;18544:18;18537:4;18529:6;18525:17;18490:77;:::i;18603:774::-;18718:6;18726;18734;18742;18795:3;18783:9;18774:7;18770:23;18766:33;18763:53;;;18812:1;18809;18802:12;18763:53;18845:9;18839:16;18874:18;18915:2;18907:6;18904:14;18901:34;;;18931:1;18928;18921:12;18901:34;18954:61;19007:7;18998:6;18987:9;18983:22;18954:61;:::i;:::-;18944:71;;19061:2;19050:9;19046:18;19040:25;19024:41;;19090:2;19080:8;19077:16;19074:36;;;19106:1;19103;19096:12;19074:36;;19129:63;19184:7;19173:8;19162:9;19158:24;19129:63;:::i;:::-;19119:73;;;19232:2;19221:9;19217:18;19211:25;19201:35;;19279:2;19268:9;19264:18;19258:25;19323:4;19316:5;19312:16;19305:5;19302:27;19292:55;;19343:1;19340;19333:12;19292:55;18603:774;;;;-1:-1:-1;18603:774:1;;-1:-1:-1;;18603:774:1:o;19837:545::-;19939:2;19934:3;19931:11;19928:448;;;19975:1;20000:5;19996:2;19989:17;20045:4;20041:2;20031:19;20115:2;20103:10;20099:19;20096:1;20092:27;20086:4;20082:38;20151:4;20139:10;20136:20;20133:47;;;-1:-1:-1;20174:4:1;20133:47;20229:2;20224:3;20220:12;20217:1;20213:20;20207:4;20203:31;20193:41;;20284:82;20302:2;20295:5;20292:13;20284:82;;;20347:17;;;20328:1;20317:13;20284:82;;20558:1352;20684:3;20678:10;20711:18;20703:6;20700:30;20697:56;;;20733:18;;:::i;:::-;20762:97;20852:6;20812:38;20844:4;20838:11;20812:38;:::i;:::-;20806:4;20762:97;:::i;:::-;20914:4;;20978:2;20967:14;;20995:1;20990:663;;;;21697:1;21714:6;21711:89;;;-1:-1:-1;21766:19:1;;;21760:26;21711:89;-1:-1:-1;;20515:1:1;20511:11;;;20507:24;20503:29;20493:40;20539:1;20535:11;;;20490:57;21813:81;;20960:944;;20990:663;19784:1;19777:14;;;19821:4;19808:18;;-1:-1:-1;;21026:20:1;;;21144:236;21158:7;21155:1;21152:14;21144:236;;;21247:19;;;21241:26;21226:42;;21339:27;;;;21307:1;21295:14;;;;21174:19;;21144:236;;;21148:3;21408:6;21399:7;21396:19;21393:201;;;21469:19;;;21463:26;-1:-1:-1;;21552:1:1;21548:14;;;21564:3;21544:24;21540:37;21536:42;21521:58;21506:74;;21393:201;-1:-1:-1;;;;;21640:1:1;21624:14;;;21620:22;21607:36;;-1:-1:-1;20558:1352:1:o;21915:385::-;21994:6;22002;22055:2;22043:9;22034:7;22030:23;22026:32;22023:52;;;22071:1;22068;22061:12;22023:52;22103:9;22097:16;22122:31;22147:5;22122:31;:::i;:::-;22222:2;22207:18;;22201:25;22172:5;;-1:-1:-1;22235:33:1;22201:25;22235:33;:::i;23287:306::-;23375:6;23383;23391;23444:2;23432:9;23423:7;23419:23;23415:32;23412:52;;;23460:1;23457;23450:12;23412:52;23489:9;23483:16;23473:26;;23539:2;23528:9;23524:18;23518:25;23508:35;;23583:2;23572:9;23568:18;23562:25;23552:35;;23287:306;;;;;:::o;26567:245::-;26646:6;26654;26707:2;26695:9;26686:7;26682:23;26678:32;26675:52;;;26723:1;26720;26713:12;26675:52;-1:-1:-1;;26746:16:1;;26802:2;26787:18;;;26781:25;26746:16;;26781:25;;-1:-1:-1;26567:245:1:o;27173:184::-;27243:6;27296:2;27284:9;27275:7;27271:23;27267:32;27264:52;;;27312:1;27309;27302:12;27264:52;-1:-1:-1;27335:16:1;;27173:184;-1:-1:-1;27173:184:1:o;27664:245::-;27731:6;27784:2;27772:9;27763:7;27759:23;27755:32;27752:52;;;27800:1;27797;27790:12;27752:52;27832:9;27826:16;27851:28;27873:5;27851:28;:::i;28273:251::-;28343:6;28396:2;28384:9;28375:7;28371:23;28367:32;28364:52;;;28412:1;28409;28402:12;28364:52;28444:9;28438:16;28463:31;28488:5;28463:31;:::i;34752:605::-;35051:6;35040:9;35033:25;35094:6;35089:2;35078:9;35074:18;35067:34;35137:3;35132:2;35121:9;35117:18;35110:31;35014:4;35158:57;35210:3;35199:9;35195:19;35187:6;35158:57;:::i;:::-;-1:-1:-1;;;;;35251:55:1;;;;35246:2;35231:18;;35224:83;-1:-1:-1;35338:3:1;35323:19;35316:35;35150:65;34752:605;-1:-1:-1;;;34752:605:1:o

Swarm Source

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