ETH Price: $3,506.56 (+2.35%)
Gas: 3 Gwei

Token

ETHER YIELD (ETY)
 

Overview

Max Total Supply

100,000,000 ETY

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
301,590.790867855538062638 ETY

Value
$0.00
0x8a5651f02b6821bf4d9aa3e61e377330aae01265
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:
ETHERYIELD

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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


/*

Token Name: ETHER YIELD
Ticker: ETY

Website: https://etheryield.tech/
TG: https://t.me/etheryieldeth
Twitter: https://x.com/etheryield

*/

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;
}

interface Cashier {
    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address user, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
    function getUserInfo(address user) external view returns(string memory, string memory, string memory, string memory);
    function getUserRealizedRewards(address user) external view returns (uint256);
    function getPendingRewards(address user) external view returns (uint256);
    function initialize() external;
    function getCurrentReward() external view returns (address);
}

contract ETHERYIELD is IERC20 {
    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;

    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "ETHER YIELD";
    string constant private _symbol = "ETY";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * (10 ** _decimals);

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

    struct Ratios {
        uint16 rewards;
        uint16 marketing;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        rewards: 1,
        marketing: 1,
        total: 2
    });

    uint256 constant public maxBuyTaxes = 2500;
    uint256 constant public maxSellTaxes = 2500;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 2500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;
    address payable public marketingWallet = payable(0x5Acb15D3D8d93cd40aA77cFA6a08CFf8c38Be398);

    Cashier cashier;
    uint256 cashierGas = 300000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;

    bool public processReflect = false;

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

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

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);

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

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

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

        // Exclude common lockers from dividends and fees.
        _isExcludedFromDividends[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromDividends[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromDividends[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromDividends[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 {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

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

    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: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

    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);
        lpPairs[lpPair] = false;
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _isExcludedFromDividends[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            _isExcludedFromDividends[pair] = true;
            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 setInitializers(address aInit, address cInit) public onlyOwner {
        require(!tradingEnabled);
        require(cInit != address(this) && aInit != address(this) && cInit != aInit);
        cashier = Cashier(cInit);
        initializer = Initializer(aInit);
        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);
            _isExcludedFromDividends[lpPair] = true;
        } catch { revert(); }
        try cashier.initialize() {} catch {}
    }

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

    function isExcludedFromDividends(address account) external view returns(bool) {
        return _isExcludedFromDividends[account];
    }

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

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

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

    function setDividendExcluded(address account, bool enabled) public onlyOwner {
        require(account != address(this) 
                && account != lpPair
                && account != DEAD);
        _isExcludedFromDividends[account] = enabled;
        if (enabled) {
            try cashier.tally(account, 0) {} catch {}
        } else {
            try cashier.tally(account, _tOwned[account]) {} catch {}
        }
    }

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

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

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

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

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

    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.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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

    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 processReflectEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        processReflect = processReflectEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        cashier.setRewardsProperties(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        cashierGas = gas;
    }

    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 _basicTransfer(address from, address to, uint256 amount) internal returns (bool) {
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

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

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }
        
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance);

        if (ratios.rewards > 0) {
            try cashier.load{value: rewardsBalance}() {} catch {}
        }
        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)) {
                initializer = Initializer(address(this));
            }
            if (address(cashier) ==  address(0)) {
                cashier = Cashier(address(this));
            }
            contractSwapEnabled = true;
            allowedPresaleExclusion = false;
            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 {}
        try cashier.initialize() {} catch {}
        tradingEnabled = true;
        processReflect = true;
        allowedPresaleExclusion = false;
    }

    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 = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell, other);
        }
        _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.");
            }
        }
        processRewards(from, to);
        
        return true;
    }

    function processRewards(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try cashier.tally(from, _tOwned[from]) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try cashier.tally(to, _tOwned[to]) {} catch {}
        }
        if (processReflect) {
            try cashier.cashout(cashierGas) {} catch {}
        }
    }

    function manualProcess(uint256 manualGas) external {
        try cashier.cashout(manualGas) {} catch {}
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell, bool other) 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 == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    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 manualDeposit() external onlyOwner {
        try cashier.load{value: address(this).balance}() {} catch {}
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

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

    function claimPendingRewards() external {
        cashier.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return cashier.getTotalDistributed();
    }

    function getUserInfo(address user) external view returns (string memory, string memory, string memory, string memory) {
        return cashier.getUserInfo(user);
    }

    function getUserRealizedGains(address user) external view returns (uint256) {
        return cashier.getUserRealizedRewards(user);
    }

    function getUserUnpaidEarnings(address user) external view returns (uint256) {
        return cashier.getPendingRewards(user);
    }

    function getCurrentReward() external view returns (address) {
        return cashier.getCurrentReward();
    }
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"claimPendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentReward","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","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":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcess","outputs":[],"stateMutability":"nonpayable","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":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","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":"setDividendExcluded","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":"aInit","type":"address"},{"internalType":"address","name":"cInit","type":"address"}],"name":"setInitializers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setRewardsProperties","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":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002818155600a805460ff1916600190811782556101f4608081905260a05260c093909352600b805465ffffffffffff199081166301f401f41790915561014060405260e08490526101009390935261012091909152600c8054640200010001931692909217909155600f80546001600160a01b0319908116735acb15d3d8d93cd40aa77cfa6a08cff8c38be39817909155620493e06011556012805461ff001916815560168390556017805462ffffff19169055601880549092163317909155620000cd9162000493565b620000dd906305f5e100620004ab565b601880546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001316012600a62000493565b62000141906305f5e100620004ab565b60405190815260200160405180910390a36018546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3601880546001600160a01b0390811660009081526005602081815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805483168417905597549096168552600783528185208054871682179055958452832080548516861790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516861790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548516861790557f369570fab114047d6931f481fe65511f6f30128550291df97f26a8b12fbb064780548516861790557f76e04a725e11e15e15ab8a12e133522d6ebb6e4ce8401eb7fccaa3f298dfd6e580548516861790557fa41ba8ce755a9610529fb4698883547ff2835b475c582169085f2e8c39e304f78054851686179055527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548316841790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805483168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f80549091169091179055620004c5565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003d5578160001904821115620003b957620003b96200037e565b80851615620003c757918102915b93841c939080029062000399565b509250929050565b600082620003ee575060016200048d565b81620003fd575060006200048d565b8160018114620004165760028114620004215762000441565b60019150506200048d565b60ff8411156200043557620004356200037e565b50506001821b6200048d565b5060208310610133831016604e8410600b841016171562000466575081810a6200048d565b62000472838362000394565b80600019048211156200048957620004896200037e565b0290505b92915050565b6000620004a460ff841683620003dd565b9392505050565b80820281158282048414176200048d576200048d6200037e565b61459180620004d56000396000f3fe6080604052600436106103e85760003560e01c80636ab86dc111610208578063b3d514fb11610118578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610c06578063f7c245ea14610c26578063fb78680d14610c3b578063fdb78c0e14610c5b578063feadde9c14610c7a57600080fd5b8063eafb5a3c14610b97578063eb50e70e14610bb7578063ee5d9c2d14610bd7578063efe7dc9014610bec57600080fd5b8063c705c569116100e7578063c705c56914610ac8578063cf84770614610b01578063d0b1449d14610b31578063dd62ed3e14610b5157600080fd5b8063b3d514fb14610632578063b421626c14610a6e578063b7df8b3614610a8e578063bcd96a2514610aa857600080fd5b80638a63bd9b1161019b57806395d89b411161016a57806395d89b41146109cc578063a9059cbb146109f8578063ab558e4d14610a18578063ab5cb5a614610a38578063b1b08f7114610a5857600080fd5b80638a63bd9b146109785780638a8c523c1461098d5780638aec8542146109a257806392bd7b2c146109b757600080fd5b806375f0a874116101d757806375f0a8741461090557806378648edf1461092557806380c581d11461093a578063893d20e81461095a57600080fd5b80636ab86dc11461089b5780636b639a25146108b057806370a08231146108d0578063715018a6146108f057600080fd5b8063313ce567116103035780634e718e4811610296578063590ffdce11610265578063590ffdce146107d25780635cce86cd146107f25780636372c68f1461082b5780636386c1c71461084b5780636505079a1461087b57600080fd5b80634e718e48146107395780634fb2e45d146107595780634fbee1931461077957806350a8e016146107b257600080fd5b8063452ed4f1116102d2578063452ed4f1146106da57806346ea7ac8146106325780634ada218b146106fa5780634bbb93eb1461071957600080fd5b8063313ce5671461065e57806332cde6641461067a57806333251a0b1461069a57806336fddb04146106ba57600080fd5b80630dcbcf1c1161037b5780632610eaca1161034a5780632610eaca146105fc578063285777511461061c5780632b28fc7a146106325780632e8fa8211461064857600080fd5b80630dcbcf1c1461056e57806318160ddd146105a7578063218950bc146105bc57806323b872dd146105dc57600080fd5b806306fdde03116103b757806306fdde03146104c25780630758d924146104ff57806307dd79e014610524578063095ea7b31461054e57600080fd5b806303fd2a45146103f45780630445b66714610427578063044df7261461044b578063069d955f1461046d57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043357600080fd5b5061043d60135481565b60405190815260200161041e565b34801561045757600080fd5b5061046b610466366004613bd5565b610c9a565b005b34801561047957600080fd5b50600b5461049d9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041e565b3480156104ce57600080fd5b5060408051808201909152600b81526a115512115488165251531160aa1b60208201525b60405161041e9190613c5e565b34801561050b57600080fd5b50600d5461040a9061010090046001600160a01b031681565b34801561053057600080fd5b50600d5461053e9060ff1681565b604051901515815260200161041e565b34801561055a57600080fd5b5061053e610569366004613c86565b610d3f565b34801561057a57600080fd5b5061053e610589366004613cb2565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105b357600080fd5b5061043d610d56565b3480156105c857600080fd5b5061046b6105d7366004613ccf565b610d77565b3480156105e857600080fd5b5061053e6105f7366004613cfd565b610fc4565b34801561060857600080fd5b5061046b610617366004613e14565b61103c565b34801561062857600080fd5b5061043d60165481565b34801561063e57600080fd5b5061043d6109c481565b34801561065457600080fd5b5061043d60145481565b34801561066a57600080fd5b506040516012815260200161041e565b34801561068657600080fd5b5061046b610695366004613eed565b6111b4565b3480156106a657600080fd5b5061046b6106b5366004613cb2565b61133c565b3480156106c657600080fd5b5061046b6106d5366004613f30565b6113d0565b3480156106e657600080fd5b50600e5461040a906001600160a01b031681565b34801561070657600080fd5b5060175461053e90610100900460ff1681565b34801561072557600080fd5b5061043d610734366004613f4e565b611425565b34801561074557600080fd5b5061046b610754366004613f4e565b611457565b34801561076557600080fd5b5061046b610774366004613cb2565b6114d0565b34801561078557600080fd5b5061053e610794366004613cb2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107be57600080fd5b5060175461053e9062010000900460ff1681565b3480156107de57600080fd5b5061046b6107ed366004613f30565b611631565b3480156107fe57600080fd5b5061053e61080d366004613cb2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083757600080fd5b5061043d610846366004613cb2565b611686565b34801561085757600080fd5b5061086b610866366004613cb2565b6116f6565b60405161041e9493929190613f67565b34801561088757600080fd5b5061046b610896366004613fb4565b61177e565b3480156108a757600080fd5b5061046b611817565b3480156108bc57600080fd5b5061046b6108cb366004613f30565b6118a6565b3480156108dc57600080fd5b5061043d6108eb366004613cb2565b611a0b565b3480156108fc57600080fd5b5061046b611a26565b34801561091157600080fd5b50600f5461040a906001600160a01b031681565b34801561093157600080fd5b5061046b611ab5565b34801561094657600080fd5b5061046b610955366004613f30565b611aee565b34801561096657600080fd5b506018546001600160a01b031661040a565b34801561098457600080fd5b5061053e611cc5565b34801561099957600080fd5b5061046b611d17565b3480156109ae57600080fd5b5061040a611fb6565b3480156109c357600080fd5b5061046b612024565b3480156109d857600080fd5b5060408051808201909152600381526245545960e81b60208201526104f2565b348015610a0457600080fd5b5061053e610a13366004613c86565b612083565b348015610a2457600080fd5b5061046b610a33366004613cb2565b612097565b348015610a4457600080fd5b5061043d610a53366004613cb2565b612203565b348015610a6457600080fd5b5061043d6107d081565b348015610a7a57600080fd5b5061046b610a89366004613fff565b612236565b348015610a9a57600080fd5b5060155461053e9060ff1681565b348015610ab457600080fd5b5061046b610ac336600461402b565b6122e0565b348015610ad457600080fd5b5061053e610ae3366004613cb2565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b0d57600080fd5b50600c5461049d9061ffff80821691620100008104821691600160201b9091041683565b348015610b3d57600080fd5b5061046b610b4c366004613f4e565b6123da565b348015610b5d57600080fd5b5061043d610b6c366004613ccf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ba357600080fd5b5061046b610bb2366004613cb2565b612418565b348015610bc357600080fd5b5061046b610bd2366004613cb2565b612806565b348015610be357600080fd5b5061046b6128a8565b348015610bf857600080fd5b5060175461053e9060ff1681565b348015610c1257600080fd5b5061046b610c21366004613f4e565b612964565b348015610c3257600080fd5b5061043d6129c3565b348015610c4757600080fd5b5061046b610c5636600461405e565b612a31565b348015610c6757600080fd5b5060125461053e90610100900460ff1681565b348015610c8657600080fd5b5061046b610c95366004613f30565b612c3b565b6018546001600160a01b03163314610ccd5760405162461bcd60e51b8152600401610cc490614090565b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b505050505050565b6000610d4c338484612c90565b5060015b92915050565b6000610d646012600a6141b5565b610d72906305f5e1006141c4565b905090565b6018546001600160a01b03163314610da15760405162461bcd60e51b8152600401610cc490614090565b601754610100900460ff1615610db657600080fd5b6001600160a01b0381163014801590610dd857506001600160a01b0382163014155b8015610df65750816001600160a01b0316816001600160a01b031614155b610dff57600080fd5b601080546001600160a01b0319166001600160a01b0383811691909117909155601780546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af1925050508015610e9e575060408051601f3d908101601f19168201909252610e9b918101906141db565b60015b610ea757600080fd5b600d8054610100600160a81b0319166101006001600160a01b038581168202929092178355600e80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556018549254610f179383169291900416600019612c90565b600d54610f3690309061010090046001600160a01b0316600019612c90565b5050600e546001600160a01b03166000908152600760205260409020805460ff19166001179055601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fad57600080fd5b505af1925050508015610fbe575060015b505b5050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611029576001600160a01b03841660009081526003602090815260408083203384529091528120805484929061102390849061420a565b90915550505b611034848484612db4565b949350505050565b6018546001600160a01b031633146110665760405162461bcd60e51b8152600401610cc490614090565b80518251146110af5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610cc4565b60005b82518161ffff161015610fbe576110cb6012600a6141b5565b828261ffff16815181106110e1576110e161421d565b60200260200101516110f391906141c4565b6110fc33611a0b565b101561113f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610cc4565b6111a133848361ffff16815181106111595761115961421d565b60200260200101516012600a61116f91906141b5565b858561ffff16815181106111855761118561421d565b602002602001015161119791906141c4565b60008060016130f3565b50806111ac81614233565b9150506110b2565b6018546001600160a01b031633146111de5760405162461bcd60e51b8152600401610cc490614090565b600d5460ff16156112255760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610cc4565b6109c48361ffff161115801561124157506109c48261ffff1611155b801561125357506107d08161ffff1611155b61129f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cc4565b6109c46112ac8385614254565b61ffff1611156112fe5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610cc4565b600b805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6018546001600160a01b031633146113665760405162461bcd60e51b8152600401610cc490614090565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b1580156113b557600080fd5b505af11580156113c9573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146113fa5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600e54600090612710908390611443906001600160a01b0316611a0b565b61144d91906141c4565b610d509190614276565b6018546001600160a01b031633146114815760405162461bcd60e51b8152600401610cc490614090565b60968111156114cb5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610cc4565b601655565b6018546001600160a01b031633146114fa5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b0381166115205760405162461bcd60e51b8152600401610cc490614298565b61deac196001600160a01b0382160161154b5760405162461bcd60e51b8152600401610cc490614298565b601880546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600780845282862080548316905588871686529383528185208054821660019081179091559390925283208054909116909117905591546115bd9116611a0b565b11156115df576018546115dd906001600160a01b03168261119782611a0b565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b0316331461165b5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5091906142f5565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261176f9190810190614372565b93509350935093509193509193565b6018546001600160a01b031633146117a85760405162461bcd60e51b8152600401610cc490614090565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b031633146118415760405162461bcd60e51b8152600401610cc490614090565b601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561189157600080fd5b505af1935050505080156118a3575060015b50565b6018546001600160a01b031633146118d05760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03821630148015906118f75750600e546001600160a01b03838116911614155b801561190e57506001600160a01b03821661dead14155b61191757600080fd5b6001600160a01b0382166000908152600760205260409020805460ff191682158015919091179091556119ac57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b15801561199257600080fd5b505af19250505080156119a3575060015b15610fc0575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b158015610fad57600080fd5b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b03163314611a505760405162461bcd60e51b8152600401610cc490614090565b601854611a67906001600160a01b03166000611631565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611adf5760405162461bcd60e51b8152600401610cc490614090565b600d805460ff19166001179055565b6018546001600160a01b03163314611b185760405162461bcd60e51b8152600401610cc490614090565b80611ba3576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d2357600080fd5b60025415611bfc576203f48060025442611bbd919061420a565b11611bfc5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610cc4565b6001600160a01b03821660009081526001602052604090205460ff1615611c655760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cc4565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d09565b6018546000906001600160a01b03163314611cf25760405162461bcd60e51b8152600401610cc490614090565b600d54611d1190309061010090046001600160a01b0316600019612c90565b50600190565b6018546001600160a01b03163314611d415760405162461bcd60e51b8152600401610cc490614090565b601754610100900460ff1615611d995760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cc4565b60175462010000900460ff16611df15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cc4565b601754630100000090046001600160a01b0316611e2457601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611e9757600080fd5b505af1925050508015611ea8575060015b50601754600e546001600160a01b0363010000009092048216916325a71cae91611ed29116611a0b565b6040518263ffffffff1660e01b8152600401611ef091815260200190565b60408051808303816000875af1925050508015611f2a575060408051601f3d908101601f19168201909252611f279181019061441f565b60015b15611f39576013919091556014555b601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f8957600080fd5b505af1925050508015611f9a575060015b506017805461ffff1916610101179055600a805460ff19169055565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa158015612000573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d729190614443565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561206957600080fd5b505af115801561207d573d6000803e3d6000fd5b50505050565b6000612090338484612db4565b9392505050565b6018546001600160a01b031633146120c15760405162461bcd60e51b8152600401610cc490614090565b306001600160a01b038216036121195760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cc4565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219491906142f5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190614460565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016116b5565b6018546001600160a01b031633146122605760405162461bcd60e51b8152600401610cc490614090565b61226b81600a61447d565b61227590836141c4565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156122c357600080fd5b505af11580156122d7573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b0316331461230a5760405162461bcd60e51b8152600401610cc490614090565b600c805461ffff838116620100000263ffffffff19909216908516171790556123338183614254565b600c805465ffff000000001916600160201b61ffff93841602179055600b546000916123689162010000810482169116614254565b600c5461ffff9182169250600160201b900416811015610fbe5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cc4565b6018546001600160a01b031633146124045760405162461bcd60e51b8152600401610cc490614090565b620b71b0811061241357600080fd5b601155565b6018546001600160a01b031633146124425760405162461bcd60e51b8152600401610cc490614090565b60175462010000900460ff161561249b5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cc4565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190614443565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125909190614443565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff9190614443565b90506001600160a01b03811661277857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190614443565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e29190614443565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561272f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127539190614443565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612794565b600e80546001600160a01b0319166001600160a01b0383161790555b600d8054610100600160a81b0319166101006001600160a01b038581168202929092178355600e805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154610fbe923092910416600019612c90565b6018546001600160a01b031633146128305760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b0381166128865760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cc4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b031633146128d25760405162461bcd60e51b8152600401610cc490614090565b60175462010000900460ff161561292b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cc4565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156118a3573d6000803e3d6000fd5b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b1580156129aa57600080fd5b505af19250505080156129bb575060015b156118a35750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7291906142f5565b6018546001600160a01b03163314612a5b5760405162461bcd60e51b8152600401610cc490614090565b8284612a696012600a6141b5565b612a77906305f5e1006141c4565b612a8191906141c4565b612a8b9190614276565b6013558082612a9c6012600a6141b5565b612aaa906305f5e1006141c4565b612ab491906141c4565b612abe9190614276565b60148190556013541115612b1e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cc4565b600e5461271090612b37906001600160a01b0316611a0b565b612b429060966141c4565b612b4c9190614276565b6014541115612ba95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cc4565b620f4240612bb96012600a6141b5565b612bc7906305f5e1006141c4565b612bd19190614276565b6014541015612bf25760405162461bcd60e51b8152600401610cc490614489565b620f4240612c026012600a6141b5565b612c10906305f5e1006141c4565b612c1a9190614276565b601354101561207d5760405162461bcd60e51b8152600401610cc490614489565b6018546001600160a01b03163314612c655760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612cf25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc4565b6001600160a01b038216612d535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e1a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc4565b6001600160a01b038316612e7c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc4565b60008211612ede5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc4565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612f0c5760019250612f3a565b6001600160a01b03861660009081526001602052604090205460ff1615612f365760019150612f3a565b5060015b612f4487876133a3565b1561304a57601754610100900460ff1661304a5780612fa55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cc4565b6001600160a01b03871660009081526004602052604090205460ff16158015612fe757506001600160a01b03861660009081526004602052604090205460ff16155b1561304a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cc4565b81156130da5760125460ff166130da57601254610100900460ff16156130da57600061307530611a0b565b905060135481106130d85760145460155460ff16156130c257601654600e5461271091906130ab906001600160a01b0316611a0b565b6130b591906141c4565b6130bf9190614276565b90505b8082106130cd578091505b6130d6826134ba565b505b505b6130e88787878686866130f3565b979650505050505050565b60006130ff87876133a3565b1561319a5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613183575060408051601f3d908101601f1916820190925261318091810190614460565b60015b61318c57600080fd5b90508061319857600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff16806131dc57506001600160a01b03871660009081526005602052604090205460ff165b156131e5575060005b6001600160a01b0388166000908152602081905260408120805488929061320d90849061420a565b90915550869050811561322a5761322789888888886137e1565b90505b6001600160a01b038816600090815260208190526040812080548392906132529084906144d7565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329e91815260200190565b60405180910390a360175462010000900460ff1661338a576132c08989613904565b60175462010000900460ff161580156132de57506132de89896133a3565b801561330357506001600160a01b03891660009081526004602052604090205460ff16155b801561332857506001600160a01b03881660009081526004602052604090205460ff16155b8015613332575083155b1561338a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cc4565b6133948989613a65565b50600198975050505050505050565b6018546000906001600160a01b038481169116148015906133d257506018546001600160a01b03838116911614155b80156133e957506018546001600160a01b03163214155b801561340e57506001600160a01b03821660009081526008602052604090205460ff16155b801561343357506001600160a01b03831660009081526008602052604090205460ff16155b801561344a57506001600160a01b03821661dead14155b801561345e57506001600160a01b03821615155b801561347357506001600160a01b0383163014155b801561349457506017546001600160a01b0384811663010000009092041614155b8015612090575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff808216835262010000820481166020840152600160201b909104169181018290529060000361350657506137d4565b306000908152600360209081526040808320600d5461010090046001600160a01b031684529091529020546000191461356957306000908152600360209081526040808320600d5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061359e5761359e61421d565b60200260200101906001600160a01b031690816001600160a01b031681525050600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136359190614443565b816001815181106136485761364861421d565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b81526101009091049091169063791ac947906136959086906000908690309042906004016144ea565b600060405180830381600087803b1580156136af57600080fd5b505af19250505080156136c0575060015b6136cb5750506137d4565b60408201518251479160009161ffff918216916136e99116846141c4565b6136f39190614276565b90506000613701828461420a565b855190915061ffff161561377357601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561375f57600080fd5b505af193505050508015613771575060015b505b600f546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146137c5576040519150601f19603f3d011682016040523d82523d6000602084013e6137ca565b606091505b5050505050505050505b506012805460ff19169055565b60008084156137f75750600b5461ffff16613820565b83156138105750600b5462010000900461ffff16613820565b50600b54600160201b900461ffff165b8060000361383157859150506138fb565b601754630100000090046001600160a01b03163014801561385c5750466001148061385c5750466038145b1561386657506111945b600061271061387583896141c4565b61387f9190614276565b905080156138ec5730600090815260208190526040812080548392906138a69084906144d7565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6138f6818861420a565b925050505b95945050505050565b60175462010000900460ff16156139695760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc4565b61397382826133a3565b15801561398d5750600e546001600160a01b038281169116145b15610fc0576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff0000191662010000179081905563010000009004166139f157601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613a1457601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16613af6576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ae357600080fd5b505af1925050508015613af4575060015b505b6001600160a01b03811660009081526007602052604090205460ff16613b87576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613b7457600080fd5b505af1925050508015613b85575060015b505b60175460ff1615610fc05760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb916119f19160040190815260200190565b80151581146118a357600080fd5b60008060408385031215613be857600080fd5b8235613bf381613bc7565b91506020830135613c0381613bc7565b809150509250929050565b60005b83811015613c29578181015183820152602001613c11565b50506000910152565b60008151808452613c4a816020860160208601613c0e565b601f01601f19169290920160200192915050565b6020815260006120906020830184613c32565b6001600160a01b03811681146118a357600080fd5b60008060408385031215613c9957600080fd5b8235613ca481613c71565b946020939093013593505050565b600060208284031215613cc457600080fd5b813561209081613c71565b60008060408385031215613ce257600080fd5b8235613ced81613c71565b91506020830135613c0381613c71565b600080600060608486031215613d1257600080fd5b8335613d1d81613c71565b92506020840135613d2d81613c71565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d7d57613d7d613d3e565b604052919050565b600067ffffffffffffffff821115613d9f57613d9f613d3e565b5060051b60200190565b600082601f830112613dba57600080fd5b81356020613dcf613dca83613d85565b613d54565b82815260059290921b84018101918181019086841115613dee57600080fd5b8286015b84811015613e095780358352918301918301613df2565b509695505050505050565b60008060408385031215613e2757600080fd5b823567ffffffffffffffff80821115613e3f57600080fd5b818501915085601f830112613e5357600080fd5b81356020613e63613dca83613d85565b82815260059290921b84018101918181019089841115613e8257600080fd5b948201945b83861015613ea9578535613e9a81613c71565b82529482019490820190613e87565b96505086013592505080821115613ebf57600080fd5b50613ecc85828601613da9565b9150509250929050565b803561ffff81168114613ee857600080fd5b919050565b600080600060608486031215613f0257600080fd5b613f0b84613ed6565b9250613f1960208501613ed6565b9150613f2760408501613ed6565b90509250925092565b60008060408385031215613f4357600080fd5b8235613bf381613c71565b600060208284031215613f6057600080fd5b5035919050565b608081526000613f7a6080830187613c32565b8281036020840152613f8c8187613c32565b90508281036040840152613fa08186613c32565b905082810360608401526130e88185613c32565b600080600060608486031215613fc957600080fd5b8335613fd481613bc7565b92506020840135613fe481613bc7565b91506040840135613ff481613bc7565b809150509250925092565b60008060006060848603121561401457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561403e57600080fd5b61404783613ed6565b915061405560208401613ed6565b90509250929050565b6000806000806080858703121561407457600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561410c5781600019048211156140f2576140f26140bb565b808516156140ff57918102915b93841c93908002906140d6565b509250929050565b60008261412357506001610d50565b8161413057506000610d50565b816001811461414657600281146141505761416c565b6001915050610d50565b60ff841115614161576141616140bb565b50506001821b610d50565b5060208310610133831016604e8410600b841016171561418f575081810a610d50565b61419983836140d1565b80600019048211156141ad576141ad6140bb565b029392505050565b600061209060ff841683614114565b8082028115828204841417610d5057610d506140bb565b600080604083850312156141ee57600080fd5b82516141f981613c71565b6020840151909250613c0381613c71565b81810381811115610d5057610d506140bb565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361424a5761424a6140bb565b6001019392505050565b61ffff81811683821601908082111561426f5761426f6140bb565b5092915050565b60008261429357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60006020828403121561430757600080fd5b5051919050565b600082601f83011261431f57600080fd5b815167ffffffffffffffff81111561433957614339613d3e565b61434c601f8201601f1916602001613d54565b81815284602083860101111561436157600080fd5b611034826020830160208701613c0e565b6000806000806080858703121561438857600080fd5b845167ffffffffffffffff808211156143a057600080fd5b6143ac8883890161430e565b955060208701519150808211156143c257600080fd5b6143ce8883890161430e565b945060408701519150808211156143e457600080fd5b6143f08883890161430e565b9350606087015191508082111561440657600080fd5b506144138782880161430e565b91505092959194509250565b6000806040838503121561443257600080fd5b505080516020909101519092909150565b60006020828403121561445557600080fd5b815161209081613c71565b60006020828403121561447257600080fd5b815161209081613bc7565b60006120908383614114565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b80820180821115610d5057610d506140bb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561453a5784516001600160a01b031683529383019391830191600101614515565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122082942da8bae48fadb4af5a82b38fbb9cd93a31a8382b31384cd511e2f683613d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103e85760003560e01c80636ab86dc111610208578063b3d514fb11610118578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610c06578063f7c245ea14610c26578063fb78680d14610c3b578063fdb78c0e14610c5b578063feadde9c14610c7a57600080fd5b8063eafb5a3c14610b97578063eb50e70e14610bb7578063ee5d9c2d14610bd7578063efe7dc9014610bec57600080fd5b8063c705c569116100e7578063c705c56914610ac8578063cf84770614610b01578063d0b1449d14610b31578063dd62ed3e14610b5157600080fd5b8063b3d514fb14610632578063b421626c14610a6e578063b7df8b3614610a8e578063bcd96a2514610aa857600080fd5b80638a63bd9b1161019b57806395d89b411161016a57806395d89b41146109cc578063a9059cbb146109f8578063ab558e4d14610a18578063ab5cb5a614610a38578063b1b08f7114610a5857600080fd5b80638a63bd9b146109785780638a8c523c1461098d5780638aec8542146109a257806392bd7b2c146109b757600080fd5b806375f0a874116101d757806375f0a8741461090557806378648edf1461092557806380c581d11461093a578063893d20e81461095a57600080fd5b80636ab86dc11461089b5780636b639a25146108b057806370a08231146108d0578063715018a6146108f057600080fd5b8063313ce567116103035780634e718e4811610296578063590ffdce11610265578063590ffdce146107d25780635cce86cd146107f25780636372c68f1461082b5780636386c1c71461084b5780636505079a1461087b57600080fd5b80634e718e48146107395780634fb2e45d146107595780634fbee1931461077957806350a8e016146107b257600080fd5b8063452ed4f1116102d2578063452ed4f1146106da57806346ea7ac8146106325780634ada218b146106fa5780634bbb93eb1461071957600080fd5b8063313ce5671461065e57806332cde6641461067a57806333251a0b1461069a57806336fddb04146106ba57600080fd5b80630dcbcf1c1161037b5780632610eaca1161034a5780632610eaca146105fc578063285777511461061c5780632b28fc7a146106325780632e8fa8211461064857600080fd5b80630dcbcf1c1461056e57806318160ddd146105a7578063218950bc146105bc57806323b872dd146105dc57600080fd5b806306fdde03116103b757806306fdde03146104c25780630758d924146104ff57806307dd79e014610524578063095ea7b31461054e57600080fd5b806303fd2a45146103f45780630445b66714610427578063044df7261461044b578063069d955f1461046d57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043357600080fd5b5061043d60135481565b60405190815260200161041e565b34801561045757600080fd5b5061046b610466366004613bd5565b610c9a565b005b34801561047957600080fd5b50600b5461049d9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041e565b3480156104ce57600080fd5b5060408051808201909152600b81526a115512115488165251531160aa1b60208201525b60405161041e9190613c5e565b34801561050b57600080fd5b50600d5461040a9061010090046001600160a01b031681565b34801561053057600080fd5b50600d5461053e9060ff1681565b604051901515815260200161041e565b34801561055a57600080fd5b5061053e610569366004613c86565b610d3f565b34801561057a57600080fd5b5061053e610589366004613cb2565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105b357600080fd5b5061043d610d56565b3480156105c857600080fd5b5061046b6105d7366004613ccf565b610d77565b3480156105e857600080fd5b5061053e6105f7366004613cfd565b610fc4565b34801561060857600080fd5b5061046b610617366004613e14565b61103c565b34801561062857600080fd5b5061043d60165481565b34801561063e57600080fd5b5061043d6109c481565b34801561065457600080fd5b5061043d60145481565b34801561066a57600080fd5b506040516012815260200161041e565b34801561068657600080fd5b5061046b610695366004613eed565b6111b4565b3480156106a657600080fd5b5061046b6106b5366004613cb2565b61133c565b3480156106c657600080fd5b5061046b6106d5366004613f30565b6113d0565b3480156106e657600080fd5b50600e5461040a906001600160a01b031681565b34801561070657600080fd5b5060175461053e90610100900460ff1681565b34801561072557600080fd5b5061043d610734366004613f4e565b611425565b34801561074557600080fd5b5061046b610754366004613f4e565b611457565b34801561076557600080fd5b5061046b610774366004613cb2565b6114d0565b34801561078557600080fd5b5061053e610794366004613cb2565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107be57600080fd5b5060175461053e9062010000900460ff1681565b3480156107de57600080fd5b5061046b6107ed366004613f30565b611631565b3480156107fe57600080fd5b5061053e61080d366004613cb2565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561083757600080fd5b5061043d610846366004613cb2565b611686565b34801561085757600080fd5b5061086b610866366004613cb2565b6116f6565b60405161041e9493929190613f67565b34801561088757600080fd5b5061046b610896366004613fb4565b61177e565b3480156108a757600080fd5b5061046b611817565b3480156108bc57600080fd5b5061046b6108cb366004613f30565b6118a6565b3480156108dc57600080fd5b5061043d6108eb366004613cb2565b611a0b565b3480156108fc57600080fd5b5061046b611a26565b34801561091157600080fd5b50600f5461040a906001600160a01b031681565b34801561093157600080fd5b5061046b611ab5565b34801561094657600080fd5b5061046b610955366004613f30565b611aee565b34801561096657600080fd5b506018546001600160a01b031661040a565b34801561098457600080fd5b5061053e611cc5565b34801561099957600080fd5b5061046b611d17565b3480156109ae57600080fd5b5061040a611fb6565b3480156109c357600080fd5b5061046b612024565b3480156109d857600080fd5b5060408051808201909152600381526245545960e81b60208201526104f2565b348015610a0457600080fd5b5061053e610a13366004613c86565b612083565b348015610a2457600080fd5b5061046b610a33366004613cb2565b612097565b348015610a4457600080fd5b5061043d610a53366004613cb2565b612203565b348015610a6457600080fd5b5061043d6107d081565b348015610a7a57600080fd5b5061046b610a89366004613fff565b612236565b348015610a9a57600080fd5b5060155461053e9060ff1681565b348015610ab457600080fd5b5061046b610ac336600461402b565b6122e0565b348015610ad457600080fd5b5061053e610ae3366004613cb2565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b0d57600080fd5b50600c5461049d9061ffff80821691620100008104821691600160201b9091041683565b348015610b3d57600080fd5b5061046b610b4c366004613f4e565b6123da565b348015610b5d57600080fd5b5061043d610b6c366004613ccf565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ba357600080fd5b5061046b610bb2366004613cb2565b612418565b348015610bc357600080fd5b5061046b610bd2366004613cb2565b612806565b348015610be357600080fd5b5061046b6128a8565b348015610bf857600080fd5b5060175461053e9060ff1681565b348015610c1257600080fd5b5061046b610c21366004613f4e565b612964565b348015610c3257600080fd5b5061043d6129c3565b348015610c4757600080fd5b5061046b610c5636600461405e565b612a31565b348015610c6757600080fd5b5060125461053e90610100900460ff1681565b348015610c8657600080fd5b5061046b610c95366004613f30565b612c3b565b6018546001600160a01b03163314610ccd5760405162461bcd60e51b8152600401610cc490614090565b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b505050505050565b6000610d4c338484612c90565b5060015b92915050565b6000610d646012600a6141b5565b610d72906305f5e1006141c4565b905090565b6018546001600160a01b03163314610da15760405162461bcd60e51b8152600401610cc490614090565b601754610100900460ff1615610db657600080fd5b6001600160a01b0381163014801590610dd857506001600160a01b0382163014155b8015610df65750816001600160a01b0316816001600160a01b031614155b610dff57600080fd5b601080546001600160a01b0319166001600160a01b0383811691909117909155601780546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af1925050508015610e9e575060408051601f3d908101601f19168201909252610e9b918101906141db565b60015b610ea757600080fd5b600d8054610100600160a81b0319166101006001600160a01b038581168202929092178355600e80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556018549254610f179383169291900416600019612c90565b600d54610f3690309061010090046001600160a01b0316600019612c90565b5050600e546001600160a01b03166000908152600760205260409020805460ff19166001179055601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610fad57600080fd5b505af1925050508015610fbe575060015b505b5050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611029576001600160a01b03841660009081526003602090815260408083203384529091528120805484929061102390849061420a565b90915550505b611034848484612db4565b949350505050565b6018546001600160a01b031633146110665760405162461bcd60e51b8152600401610cc490614090565b80518251146110af5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610cc4565b60005b82518161ffff161015610fbe576110cb6012600a6141b5565b828261ffff16815181106110e1576110e161421d565b60200260200101516110f391906141c4565b6110fc33611a0b565b101561113f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610cc4565b6111a133848361ffff16815181106111595761115961421d565b60200260200101516012600a61116f91906141b5565b858561ffff16815181106111855761118561421d565b602002602001015161119791906141c4565b60008060016130f3565b50806111ac81614233565b9150506110b2565b6018546001600160a01b031633146111de5760405162461bcd60e51b8152600401610cc490614090565b600d5460ff16156112255760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610cc4565b6109c48361ffff161115801561124157506109c48261ffff1611155b801561125357506107d08161ffff1611155b61129f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cc4565b6109c46112ac8385614254565b61ffff1611156112fe5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610cc4565b600b805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6018546001600160a01b031633146113665760405162461bcd60e51b8152600401610cc490614090565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b1580156113b557600080fd5b505af11580156113c9573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146113fa5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600e54600090612710908390611443906001600160a01b0316611a0b565b61144d91906141c4565b610d509190614276565b6018546001600160a01b031633146114815760405162461bcd60e51b8152600401610cc490614090565b60968111156114cb5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610cc4565b601655565b6018546001600160a01b031633146114fa5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b0381166115205760405162461bcd60e51b8152600401610cc490614298565b61deac196001600160a01b0382160161154b5760405162461bcd60e51b8152600401610cc490614298565b601880546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600780845282862080548316905588871686529383528185208054821660019081179091559390925283208054909116909117905591546115bd9116611a0b565b11156115df576018546115dd906001600160a01b03168261119782611a0b565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b0316331461165b5760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5091906142f5565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611747573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261176f9190810190614372565b93509350935093509193509193565b6018546001600160a01b031633146117a85760405162461bcd60e51b8152600401610cc490614090565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b031633146118415760405162461bcd60e51b8152600401610cc490614090565b601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561189157600080fd5b505af1935050505080156118a3575060015b50565b6018546001600160a01b031633146118d05760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03821630148015906118f75750600e546001600160a01b03838116911614155b801561190e57506001600160a01b03821661dead14155b61191757600080fd5b6001600160a01b0382166000908152600760205260409020805460ff191682158015919091179091556119ac57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b15801561199257600080fd5b505af19250505080156119a3575060015b15610fc0575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b158015610fad57600080fd5b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b03163314611a505760405162461bcd60e51b8152600401610cc490614090565b601854611a67906001600160a01b03166000611631565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611adf5760405162461bcd60e51b8152600401610cc490614090565b600d805460ff19166001179055565b6018546001600160a01b03163314611b185760405162461bcd60e51b8152600401610cc490614090565b80611ba3576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d2357600080fd5b60025415611bfc576203f48060025442611bbd919061420a565b11611bfc5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610cc4565b6001600160a01b03821660009081526001602052604090205460ff1615611c655760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cc4565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d09565b6018546000906001600160a01b03163314611cf25760405162461bcd60e51b8152600401610cc490614090565b600d54611d1190309061010090046001600160a01b0316600019612c90565b50600190565b6018546001600160a01b03163314611d415760405162461bcd60e51b8152600401610cc490614090565b601754610100900460ff1615611d995760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cc4565b60175462010000900460ff16611df15760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cc4565b601754630100000090046001600160a01b0316611e2457601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611e9757600080fd5b505af1925050508015611ea8575060015b50601754600e546001600160a01b0363010000009092048216916325a71cae91611ed29116611a0b565b6040518263ffffffff1660e01b8152600401611ef091815260200190565b60408051808303816000875af1925050508015611f2a575060408051601f3d908101601f19168201909252611f279181019061441f565b60015b15611f39576013919091556014555b601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f8957600080fd5b505af1925050508015611f9a575060015b506017805461ffff1916610101179055600a805460ff19169055565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa158015612000573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d729190614443565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561206957600080fd5b505af115801561207d573d6000803e3d6000fd5b50505050565b6000612090338484612db4565b9392505050565b6018546001600160a01b031633146120c15760405162461bcd60e51b8152600401610cc490614090565b306001600160a01b038216036121195760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cc4565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219491906142f5565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe9190614460565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016116b5565b6018546001600160a01b031633146122605760405162461bcd60e51b8152600401610cc490614090565b61226b81600a61447d565b61227590836141c4565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b1580156122c357600080fd5b505af11580156122d7573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b0316331461230a5760405162461bcd60e51b8152600401610cc490614090565b600c805461ffff838116620100000263ffffffff19909216908516171790556123338183614254565b600c805465ffff000000001916600160201b61ffff93841602179055600b546000916123689162010000810482169116614254565b600c5461ffff9182169250600160201b900416811015610fbe5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cc4565b6018546001600160a01b031633146124045760405162461bcd60e51b8152600401610cc490614090565b620b71b0811061241357600080fd5b601155565b6018546001600160a01b031633146124425760405162461bcd60e51b8152600401610cc490614090565b60175462010000900460ff161561249b5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cc4565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190614443565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125909190614443565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff9190614443565b90506001600160a01b03811661277857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126719190614443565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e29190614443565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561272f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127539190614443565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612794565b600e80546001600160a01b0319166001600160a01b0383161790555b600d8054610100600160a81b0319166101006001600160a01b038581168202929092178355600e805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154610fbe923092910416600019612c90565b6018546001600160a01b031633146128305760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b0381166128865760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cc4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b031633146128d25760405162461bcd60e51b8152600401610cc490614090565b60175462010000900460ff161561292b5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cc4565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156118a3573d6000803e3d6000fd5b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b1580156129aa57600080fd5b505af19250505080156129bb575060015b156118a35750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7291906142f5565b6018546001600160a01b03163314612a5b5760405162461bcd60e51b8152600401610cc490614090565b8284612a696012600a6141b5565b612a77906305f5e1006141c4565b612a8191906141c4565b612a8b9190614276565b6013558082612a9c6012600a6141b5565b612aaa906305f5e1006141c4565b612ab491906141c4565b612abe9190614276565b60148190556013541115612b1e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cc4565b600e5461271090612b37906001600160a01b0316611a0b565b612b429060966141c4565b612b4c9190614276565b6014541115612ba95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cc4565b620f4240612bb96012600a6141b5565b612bc7906305f5e1006141c4565b612bd19190614276565b6014541015612bf25760405162461bcd60e51b8152600401610cc490614489565b620f4240612c026012600a6141b5565b612c10906305f5e1006141c4565b612c1a9190614276565b601354101561207d5760405162461bcd60e51b8152600401610cc490614489565b6018546001600160a01b03163314612c655760405162461bcd60e51b8152600401610cc490614090565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612cf25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc4565b6001600160a01b038216612d535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612e1a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc4565b6001600160a01b038316612e7c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc4565b60008211612ede5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc4565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612f0c5760019250612f3a565b6001600160a01b03861660009081526001602052604090205460ff1615612f365760019150612f3a565b5060015b612f4487876133a3565b1561304a57601754610100900460ff1661304a5780612fa55760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cc4565b6001600160a01b03871660009081526004602052604090205460ff16158015612fe757506001600160a01b03861660009081526004602052604090205460ff16155b1561304a5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cc4565b81156130da5760125460ff166130da57601254610100900460ff16156130da57600061307530611a0b565b905060135481106130d85760145460155460ff16156130c257601654600e5461271091906130ab906001600160a01b0316611a0b565b6130b591906141c4565b6130bf9190614276565b90505b8082106130cd578091505b6130d6826134ba565b505b505b6130e88787878686866130f3565b979650505050505050565b60006130ff87876133a3565b1561319a5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613183575060408051601f3d908101601f1916820190925261318091810190614460565b60015b61318c57600080fd5b90508061319857600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff16806131dc57506001600160a01b03871660009081526005602052604090205460ff165b156131e5575060005b6001600160a01b0388166000908152602081905260408120805488929061320d90849061420a565b90915550869050811561322a5761322789888888886137e1565b90505b6001600160a01b038816600090815260208190526040812080548392906132529084906144d7565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329e91815260200190565b60405180910390a360175462010000900460ff1661338a576132c08989613904565b60175462010000900460ff161580156132de57506132de89896133a3565b801561330357506001600160a01b03891660009081526004602052604090205460ff16155b801561332857506001600160a01b03881660009081526004602052604090205460ff16155b8015613332575083155b1561338a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cc4565b6133948989613a65565b50600198975050505050505050565b6018546000906001600160a01b038481169116148015906133d257506018546001600160a01b03838116911614155b80156133e957506018546001600160a01b03163214155b801561340e57506001600160a01b03821660009081526008602052604090205460ff16155b801561343357506001600160a01b03831660009081526008602052604090205460ff16155b801561344a57506001600160a01b03821661dead14155b801561345e57506001600160a01b03821615155b801561347357506001600160a01b0383163014155b801561349457506017546001600160a01b0384811663010000009092041614155b8015612090575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff808216835262010000820481166020840152600160201b909104169181018290529060000361350657506137d4565b306000908152600360209081526040808320600d5461010090046001600160a01b031684529091529020546000191461356957306000908152600360209081526040808320600d5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061359e5761359e61421d565b60200260200101906001600160a01b031690816001600160a01b031681525050600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136359190614443565b816001815181106136485761364861421d565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b81526101009091049091169063791ac947906136959086906000908690309042906004016144ea565b600060405180830381600087803b1580156136af57600080fd5b505af19250505080156136c0575060015b6136cb5750506137d4565b60408201518251479160009161ffff918216916136e99116846141c4565b6136f39190614276565b90506000613701828461420a565b855190915061ffff161561377357601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561375f57600080fd5b505af193505050508015613771575060015b505b600f546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146137c5576040519150601f19603f3d011682016040523d82523d6000602084013e6137ca565b606091505b5050505050505050505b506012805460ff19169055565b60008084156137f75750600b5461ffff16613820565b83156138105750600b5462010000900461ffff16613820565b50600b54600160201b900461ffff165b8060000361383157859150506138fb565b601754630100000090046001600160a01b03163014801561385c5750466001148061385c5750466038145b1561386657506111945b600061271061387583896141c4565b61387f9190614276565b905080156138ec5730600090815260208190526040812080548392906138a69084906144d7565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6138f6818861420a565b925050505b95945050505050565b60175462010000900460ff16156139695760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc4565b61397382826133a3565b15801561398d5750600e546001600160a01b038281169116145b15610fc0576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff0000191662010000179081905563010000009004166139f157601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613a1457601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16613af6576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613ae357600080fd5b505af1925050508015613af4575060015b505b6001600160a01b03811660009081526007602052604090205460ff16613b87576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613b7457600080fd5b505af1925050508015613b85575060015b505b60175460ff1615610fc05760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb916119f19160040190815260200190565b80151581146118a357600080fd5b60008060408385031215613be857600080fd5b8235613bf381613bc7565b91506020830135613c0381613bc7565b809150509250929050565b60005b83811015613c29578181015183820152602001613c11565b50506000910152565b60008151808452613c4a816020860160208601613c0e565b601f01601f19169290920160200192915050565b6020815260006120906020830184613c32565b6001600160a01b03811681146118a357600080fd5b60008060408385031215613c9957600080fd5b8235613ca481613c71565b946020939093013593505050565b600060208284031215613cc457600080fd5b813561209081613c71565b60008060408385031215613ce257600080fd5b8235613ced81613c71565b91506020830135613c0381613c71565b600080600060608486031215613d1257600080fd5b8335613d1d81613c71565b92506020840135613d2d81613c71565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d7d57613d7d613d3e565b604052919050565b600067ffffffffffffffff821115613d9f57613d9f613d3e565b5060051b60200190565b600082601f830112613dba57600080fd5b81356020613dcf613dca83613d85565b613d54565b82815260059290921b84018101918181019086841115613dee57600080fd5b8286015b84811015613e095780358352918301918301613df2565b509695505050505050565b60008060408385031215613e2757600080fd5b823567ffffffffffffffff80821115613e3f57600080fd5b818501915085601f830112613e5357600080fd5b81356020613e63613dca83613d85565b82815260059290921b84018101918181019089841115613e8257600080fd5b948201945b83861015613ea9578535613e9a81613c71565b82529482019490820190613e87565b96505086013592505080821115613ebf57600080fd5b50613ecc85828601613da9565b9150509250929050565b803561ffff81168114613ee857600080fd5b919050565b600080600060608486031215613f0257600080fd5b613f0b84613ed6565b9250613f1960208501613ed6565b9150613f2760408501613ed6565b90509250925092565b60008060408385031215613f4357600080fd5b8235613bf381613c71565b600060208284031215613f6057600080fd5b5035919050565b608081526000613f7a6080830187613c32565b8281036020840152613f8c8187613c32565b90508281036040840152613fa08186613c32565b905082810360608401526130e88185613c32565b600080600060608486031215613fc957600080fd5b8335613fd481613bc7565b92506020840135613fe481613bc7565b91506040840135613ff481613bc7565b809150509250925092565b60008060006060848603121561401457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561403e57600080fd5b61404783613ed6565b915061405560208401613ed6565b90509250929050565b6000806000806080858703121561407457600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561410c5781600019048211156140f2576140f26140bb565b808516156140ff57918102915b93841c93908002906140d6565b509250929050565b60008261412357506001610d50565b8161413057506000610d50565b816001811461414657600281146141505761416c565b6001915050610d50565b60ff841115614161576141616140bb565b50506001821b610d50565b5060208310610133831016604e8410600b841016171561418f575081810a610d50565b61419983836140d1565b80600019048211156141ad576141ad6140bb565b029392505050565b600061209060ff841683614114565b8082028115828204841417610d5057610d506140bb565b600080604083850312156141ee57600080fd5b82516141f981613c71565b6020840151909250613c0381613c71565b81810381811115610d5057610d506140bb565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361424a5761424a6140bb565b6001019392505050565b61ffff81811683821601908082111561426f5761426f6140bb565b5092915050565b60008261429357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60006020828403121561430757600080fd5b5051919050565b600082601f83011261431f57600080fd5b815167ffffffffffffffff81111561433957614339613d3e565b61434c601f8201601f1916602001613d54565b81815284602083860101111561436157600080fd5b611034826020830160208701613c0e565b6000806000806080858703121561438857600080fd5b845167ffffffffffffffff808211156143a057600080fd5b6143ac8883890161430e565b955060208701519150808211156143c257600080fd5b6143ce8883890161430e565b945060408701519150808211156143e457600080fd5b6143f08883890161430e565b9350606087015191508082111561440657600080fd5b506144138782880161430e565b91505092959194509250565b6000806040838503121561443257600080fd5b505080516020909101519092909150565b60006020828403121561445557600080fd5b815161209081613c71565b60006020828403121561447257600080fd5b815161209081613bc7565b60006120908383614114565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b80820180821115610d5057610d506140bb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561453a5784516001600160a01b031683529383019391830191600101614515565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122082942da8bae48fadb4af5a82b38fbb9cd93a31a8382b31384cd511e2f683613d64736f6c63430008130033

Deployed Bytecode Sourcemap

5022:24335:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6744:73;;;;;;;;;;;;6775:42;6744:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6744:73:0;;;;;;;;7128:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;7128:28:0;222:177:1;16570:153:0;;;;;;;;;;-1:-1:-1;16570:153:0;;;;;:::i;:::-;;:::i;:::-;;6165:107;;;;;;;;;;-1:-1:-1;6165:107:0;;;;;;;;;;;;;;;-1:-1:-1;;;6165:107:0;;;;;;;;;;1114:6:1;1147:15;;;1129:34;;1199:15;;;1194:2;1179:18;;1172:43;1251:15;;1231:18;;;1224:43;;;;1092:2;1077:18;6165:107:0;908:365:1;11292:80:0;;;;;;;;;;-1:-1:-1;11364:5:0;;;;;;;;;;;;-1:-1:-1;;;11364:5:0;;;;11292:80;;;;;;;:::i;6681:26::-;;;;;;;;;;-1:-1:-1;6681:26:0;;;;;;;-1:-1:-1;;;;;6681:26:0;;;6648;;;;;;;;;;-1:-1:-1;6648:26:0;;;;;;;;;;;2424:14:1;;2417:22;2399:41;;2387:2;2372:18;6648:26:0;2259:187:1;11713:161:0;;;;;;;;;;-1:-1:-1;11713:161:0;;;;;:::i;:::-;;:::i;15274:140::-;;;;;;;;;;-1:-1:-1;15274:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15372:34:0;15348:4;15372:34;;;:25;:34;;;;;;;;;15274:140;11027:83;;;;;;;;;;;;;:::i;14249:737::-;;;;;;;;;;-1:-1:-1;14249:737:0;;;;;:::i;:::-;;:::i;12573:306::-;;;;;;;;;;-1:-1:-1;12573:306:0;;;;;:::i;:::-;;:::i;27516:447::-;;;;;;;;;;-1:-1:-1;27516:447:0;;;;;:::i;:::-;;:::i;7236:33::-;;;;;;;;;;;;;;;;6392:42;;;;;;;;;;;;6430:4;6392:42;;7163:25;;;;;;;;;;;;;;;;11116:80;;;;;;;;;;-1:-1:-1;11116:80:0;;5867:2;6642:36:1;;6630:2;6615:18;11116:80:0;6500:184:1;17121:544:0;;;;;;;;;;-1:-1:-1;17121:544:0;;;;;:::i;:::-;;:::i;16452:110::-;;;;;;;;;;-1:-1:-1;16452:110:0;;;;;:::i;:::-;;:::i;15562:140::-;;;;;;;;;;-1:-1:-1;15562:140:0;;;;;:::i;:::-;;:::i;6714:21::-;;;;;;;;;;-1:-1:-1;6714:21:0;;;;-1:-1:-1;;;;;6714:21:0;;;7321:34;;;;;;;;;;-1:-1:-1;7321:34:0;;;;;;;;;;;18031:189;;;;;;;;;;-1:-1:-1;18031:189:0;;;;;:::i;:::-;;:::i;18935:217::-;;;;;;;;;;-1:-1:-1;18935:217:0;;;;;:::i;:::-;;:::i;9645:759::-;;;;;;;;;;-1:-1:-1;9645:759:0;;;;;:::i;:::-;;:::i;14994:127::-;;;;;;;;;;-1:-1:-1;14994:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15085:28:0;15061:4;15085:28;;;:19;:28;;;;;;;;;14994:127;7362:36;;;;;;;;;;-1:-1:-1;7362:36:0;;;;;;;;;;;16154:134;;;;;;;;;;-1:-1:-1;16154:134:0;;;;;:::i;:::-;;:::i;15422:132::-;;;;;;;;;;-1:-1:-1;15422:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15516:30:0;15492:4;15516:30;;;:21;:30;;;;;;;;;15422:132;28954:138;;;;;;;;;;-1:-1:-1;28954:138:0;;;;;:::i;:::-;;:::i;28777:169::-;;;;;;;;;;-1:-1:-1;28777:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;19160:340::-;;;;;;;;;;-1:-1:-1;19160:340:0;;;;;:::i;:::-;;:::i;27971:122::-;;;;;;;;;;;;;:::i;15710:436::-;;;;;;;;;;-1:-1:-1;15710:436:0;;;;;:::i;:::-;;:::i;11463:103::-;;;;;;;;;;-1:-1:-1;11463:103:0;;;;;:::i;:::-;;:::i;10412:225::-;;;;;;;;;;;;;:::i;6905:92::-;;;;;;;;;;-1:-1:-1;6905:92:0;;;;-1:-1:-1;;;;;6905:92:0;;;16931:182;;;;;;;;;;;;;:::i;13625:616::-;;;;;;;;;;-1:-1:-1;13625:616:0;;;;;:::i;:::-;;:::i;11378:79::-;;;;;;;;;;-1:-1:-1;11448:6:0;;-1:-1:-1;;;;;11448:6:0;11378:79;;12232:173;;;;;;;;;;;;;:::i;24179:775::-;;;;;;;;;;;;;:::i;29242:112::-;;;;;;;;;;;;;:::i;28547:98::-;;;;;;;;;;;;;:::i;11202:84::-;;;;;;;;;;-1:-1:-1;11276:7:0;;;;;;;;;;;;-1:-1:-1;;;11276:7:0;;;;11202:84;;12413:152;;;;;;;;;;-1:-1:-1;12413:152:0;;;;;:::i;:::-;;:::i;28291:248::-;;;;;;;;;;-1:-1:-1;28291:248:0;;;;;:::i;:::-;;:::i;29100:134::-;;;;;;;;;;-1:-1:-1;29100:134:0;;;;;:::i;:::-;;:::i;6491:47::-;;;;;;;;;;;;6534:4;6491:47;;19508:273;;;;;;;;;;-1:-1:-1;19508:273:0;;;;;:::i;:::-;;:::i;7195:34::-;;;;;;;;;;-1:-1:-1;7195:34:0;;;;;;;;17673:350;;;;;;;;;;-1:-1:-1;17673:350:0;;;;;:::i;:::-;;:::i;15129:137::-;;;;;;;;;;-1:-1:-1;15129:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;15225:33:0;15201:4;15225:33;;;:24;:33;;;;;;;;;15129:137;6281:102;;;;;;;;;;-1:-1:-1;6281:102:0;;;;;;;;;;;;;;;-1:-1:-1;;;6281:102:0;;;;;;19789:129;;;;;;;;;;-1:-1:-1;19789:129:0;;;;;:::i;:::-;;:::i;11572:133::-;;;;;;;;;;-1:-1:-1;11572:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11674:19:0;;;11656:7;11674:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11572:133;12887:730;;;;;;;;;;-1:-1:-1;12887:730:0;;;;;:::i;:::-;;:::i;16731:192::-;;;;;;;;;;-1:-1:-1;16731:192:0;;;;;:::i;:::-;;:::i;28101:182::-;;;;;;;;;;;;;:::i;7278:34::-;;;;;;;;;;-1:-1:-1;7278:34:0;;;;;;;;26547:111;;;;;;;;;;-1:-1:-1;26547:111:0;;;;;:::i;:::-;;:::i;28653:116::-;;;;;;;;;;;;;:::i;18228:699::-;;;;;;;;;;-1:-1:-1;18228:699:0;;;;;:::i;:::-;;:::i;7082:39::-;;;;;;;;;;-1:-1:-1;7082:39:0;;;;;;;;;;;16296:148;;;;;;;;;;-1:-1:-1;16296:148:0;;;;;:::i;:::-;;:::i;16570:153::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;;;;;;;;;16665:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;16665:50:0;;10979:14:1;;10972:22;16665:50:0::1;::::0;::::1;10954:41:1::0;11038:14;;11031:22;11011:18;;;11004:50;16665:11:0;;;::::1;-1:-1:-1::0;;;;;16665:11:0::1;::::0;:26:::1;::::0;10927:18:1;;16665:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16570:153:::0;;:::o;11713:161::-;11790:4;11807:37;11816:10;11828:7;11837:6;11807:8;:37::i;:::-;-1:-1:-1;11862:4:0;11713:161;;;;;:::o;11027:83::-;11082:7;5929:15;5867:2;5929;:15;:::i;:::-;5911:34;;5716:11;5911:34;:::i;:::-;11093:14;;11027:83;:::o;14249:737::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;14341:14:::1;::::0;::::1;::::0;::::1;;;14340:15;14332:24;;;::::0;::::1;;-1:-1:-1::0;;;;;14375:22:0;::::1;14392:4;14375:22;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;14401:22:0;::::1;14418:4;14401:22;;14375:48;:66;;;;;14436:5;-1:-1:-1::0;;;;;14427:14:0::1;:5;-1:-1:-1::0;;;;;14427:14:0::1;;;14375:66;14367:75;;;::::0;::::1;;14453:7;:24:::0;;-1:-1:-1;;;;;;14453:24:0::1;-1:-1:-1::0;;;;;14453:24:0;;::::1;::::0;;;::::1;::::0;;;14488:11:::1;:32:::0;;-1:-1:-1;;;;;;14488:32:0::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;14535:23:::1;::::0;;-1:-1:-1;;;14535:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;-1:-1:-1;14535:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;14535:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14535:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14531:402;;14922:8;::::0;::::1;14531:402;14622:9;:29:::0;;-1:-1:-1;;;;;;14622:29:0::1;;-1:-1:-1::0;;;;;14622:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14653:6:::1;:22:::0;;-1:-1:-1;;;;;;14653:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;14677:15:0;;;-1:-1:-1;14677:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14677:22:0::1;::::0;;::::1;::::0;;14724:6:::1;::::0;14740:9;;14715:55:::1;::::0;14724:6;::::1;::::0;14740:9;;::::1;;-1:-1:-1::0;;14715:8:0::1;:55::i;:::-;14817:9;::::0;14785:62:::1;::::0;14802:4:::1;::::0;14817:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14817:9:0::1;-1:-1:-1::0;;14785:8:0::1;:62::i;:::-;-1:-1:-1::0;;14887:6:0::1;::::0;-1:-1:-1;;;;;14887:6:0::1;14862:32;::::0;;;:24:::1;:32;::::0;;;;:39;;-1:-1:-1;;14862:39:0::1;14897:4;14862:39;::::0;;14947:7:::1;;;;;;;;;-1:-1:-1::0;;;;;14947:7:0::1;-1:-1:-1::0;;;;;14947:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;14943:36:::0;::::1;14249:737:::0;;:::o;12573:306::-;-1:-1:-1;;;;;12694:19:0;;12673:4;12694:19;;;:11;:19;;;;;;;;12714:10;12694:31;;;;;;;;-1:-1:-1;;12694:52:0;12690:126;;-1:-1:-1;;;;;12763:19:0;;;;;;:11;:19;;;;;;;;12783:10;12763:31;;;;;;;:41;;12798:6;;12763:19;:41;;12798:6;;12763:41;:::i;:::-;;;;-1:-1:-1;;12690:126:0;12835:36;12845:6;12853:9;12864:6;12835:9;:36::i;:::-;12828:43;12573:306;-1:-1:-1;;;;12573:306:0:o;27516:447::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;27651:7:::1;:14;27632:8;:15;:33;27624:67;;;::::0;-1:-1:-1;;;27624:67:0;;13478:2:1;27624:67:0::1;::::0;::::1;13460:21:1::0;13517:2;13497:18;;;13490:30;-1:-1:-1;;;13536:18:1;;;13529:51;13597:18;;27624:67:0::1;13276:345:1::0;27624:67:0::1;27707:8;27702:254;27725:8;:15;27721:1;:19;;;27702:254;;;27806:13;5867:2;27806;:13;:::i;:::-;27795:7;27803:1;27795:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27770:21;27780:10;27770:9;:21::i;:::-;:49;;27762:80;;;::::0;-1:-1:-1;;;27762:80:0;;13960:2:1;27762:80:0::1;::::0;::::1;13942:21:1::0;13999:2;13979:18;;;13972:30;-1:-1:-1;;;14018:18:1;;;14011:48;14076:18;;27762:80:0::1;13758:342:1::0;27762:80:0::1;27857:87;27874:10;27886:8;27895:1;27886:11;;;;;;;;;;:::i;:::-;;;;;;;5867:2;27910;:13;;;;:::i;:::-;27899:7;27907:1;27899:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27925:5;27932::::0;27939:4:::1;27857:16;:87::i;:::-;-1:-1:-1::0;27742:3:0;::::1;::::0;::::1;:::i;:::-;;;;27702:254;;17121:544:::0;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;17229:14:::1;::::0;::::1;;17228:15;17220:45;;;::::0;-1:-1:-1;;;17220:45:0;;14509:2:1;17220:45:0::1;::::0;::::1;14491:21:1::0;14548:2;14528:18;;;14521:30;-1:-1:-1;;;14567:18:1;;;14560:47;14624:18;;17220:45:0::1;14307:341:1::0;17220:45:0::1;6430:4;17284:6;:21;;;;:65;;;;;6480:4;17326:7;:23;;;;17284:65;:117;;;;;6534:4;17370:11;:31;;;;17284:117;17276:170;;;::::0;-1:-1:-1;;;17276:170:0;;14855:2:1;17276:170:0::1;::::0;::::1;14837:21:1::0;14894:2;14874:18;;;14867:30;14933:25;14913:18;;;14906:53;14976:18;;17276:170:0::1;14653:347:1::0;17276:170:0::1;6587:4;17465:16;17474:7:::0;17465:6;:16:::1;:::i;:::-;:35;;;;17457:80;;;::::0;-1:-1:-1;;;17457:80:0;;15380:2:1;17457:80:0::1;::::0;::::1;15362:21:1::0;;;15399:18;;;15392:30;15458:34;15438:18;;;15431:62;15510:18;;17457:80:0::1;15178:356:1::0;17457:80:0::1;17548:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17584:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17622:35:0::1;-1:-1:-1::0;;;17622:35:0;;;::::1;;::::0;;;::::1;::::0;;17121:544::o;16452:110::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;16521:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16521:33:0;;-1:-1:-1;;;;;178:32:1;;;16521:33:0::1;::::0;::::1;160:51:1::0;16521:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16521:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16452:110:::0;:::o;15562:140::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15654:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15654:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15562:140::o;18031:189::-;18160:6;;18122:7;;6634:5;;18170:21;;18150:17;;-1:-1:-1;;;;;18160:6:0;18150:9;:17::i;:::-;:41;;;;:::i;:::-;18149:62;;;;:::i;18935:217::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;19065:3:::1;19039:22;:29;;19031:64;;;::::0;-1:-1:-1;;;19031:64:0;;15963:2:1;19031:64:0::1;::::0;::::1;15945:21:1::0;16002:2;15982:18;;;15975:30;-1:-1:-1;;;16021:18:1;;;16014:52;16083:18;;19031:64:0::1;15761:346:1::0;19031:64:0::1;19106:13;:38:::0;18935:217::o;9645:759::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9724:22:0;::::1;9716:96;;;;-1:-1:-1::0;;;9716:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;9831:16:0;::::1;::::0;9823:90:::1;;;;-1:-1:-1::0;;;9823:90:0::1;;;;;;;:::i;:::-;9944:6;::::0;;-1:-1:-1;;;;;9944:6:0;;::::1;9954:5;9924:27:::0;;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;9924:35:0;;::::1;::::0;;;9995:6;;;::::1;9970:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;10021:29;;::::1;::::0;;;;;;;;:36;;;::::1;9944:6:::0;10021:36;;::::1;::::0;;;10068:34;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;10144:6;;10134:17:::1;::::0;10144:6:::1;10134:9;:17::i;:::-;:21;10130:127;;;10189:6;::::0;10172:73:::1;::::0;-1:-1:-1;;;;;10189:6:0::1;10197:8:::0;10207:17:::1;10189:6:::0;10207:9:::1;:17::i;10172:73::-;;10130:127;10296:6;::::0;;-1:-1:-1;;;;;10313:17:0;;::::1;-1:-1:-1::0;;;;;;10313:17:0;::::1;::::0;::::1;::::0;;;10346:40:::1;::::0;10296:6;::::1;::::0;10313:17;10296:6;;10346:40:::1;::::0;10277:16:::1;::::0;10346:40:::1;9705:699;9645:759:::0;:::o;16154:134::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16242:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16242:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16154:134::o;28954:138::-;29048:7;;:36;;-1:-1:-1;;;29048:36:0;;-1:-1:-1;;;;;178:32:1;;;29048:36:0;;;160:51:1;29021:7:0;;29048;;:30;;133:18:1;;29048:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28777:169::-;28913:7;;:25;;-1:-1:-1;;;28913:25:0;;-1:-1:-1;;;;;178:32:1;;;28913:25:0;;;160:51:1;28835:13:0;;;;;;;;28913:7;;:19;;133:18:1;;28913:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28913:25:0;;;;;;;;;;;;:::i;:::-;28906:32;;;;;;;;28777:169;;;;;:::o;19160:340::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;19297:19:::1;:33:::0;;-1:-1:-1;;19297:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19341:14:::1;:38:::0;;-1:-1:-1;;19341:38:0;;::::1;::::0;::::1;;;::::0;;;19390:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;19453:39:::1;::::0;2399:41:1;;;19453:39:0::1;::::0;2387:2:1;2372:18;19453:39:0::1;;;;;;;19160:340:::0;;;:::o;27971:122::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;28030:7:::1;;;;;;;;;-1:-1:-1::0;;;;;28030:7:0::1;-1:-1:-1::0;;;;;28030:12:0::1;;28050:21;28030:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;28026:60:::0;27971:122::o;15710:436::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15806:24:0;::::1;15825:4;15806:24;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;15863:6:0::1;::::0;-1:-1:-1;;;;;15852:17:0;;::::1;15863:6:::0;::::1;15852:17;;15806:63;:99;;;;-1:-1:-1::0;;;;;;15890:15:0;::::1;6775:42;15890:15;;15806:99;15798:108;;;::::0;::::1;;-1:-1:-1::0;;;;;15917:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;15917:43:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15971:168:::1;;16003:7;::::0;:25:::1;::::0;-1:-1:-1;;;16003:25:0;;-1:-1:-1;;;;;18422:32:1;;;16003:25:0::1;::::0;::::1;18404:51:1::0;16003:7:0::1;18471:18:1::0;;;18464:34;16003:7:0;;::::1;::::0;:13:::1;::::0;18377:18:1;;16003:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15999:41:::0;15971:168:::1;15999:41;14249:737:::0;;:::o;15971:168::-:1;16076:7;::::0;-1:-1:-1;;;;;16099:16:0;;::::1;16076:7;16099:16:::0;;;::::1;::::0;;;;;;;;;16076:40;;-1:-1:-1;;;16076:40:0;;::::1;::::0;::::1;18404:51:1::0;;;;18471:18;;;18464:34;16076:7:0;::::1;::::0;:13:::1;::::0;18377:18:1;;16076:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;11463:103:::0;-1:-1:-1;;;;;11547:16:0;11529:7;11547:16;;;;;;;;;;;;11463:103::o;10412:225::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;10491:6:::1;::::0;10471:34:::1;::::0;-1:-1:-1;;;;;10491:6:0::1;;10471:19;:34::i;:::-;10535:6;::::0;;-1:-1:-1;;;;;;10552:19:0;::::1;::::0;;;10587:42:::1;::::0;-1:-1:-1;;;;;10535:6:0;;::::1;::::0;10516:16:::1;::::0;10535:6;;10587:42:::1;::::0;10516:16;;10587:42:::1;10460:177;10412:225::o:0;16931:182::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;17084:14:::1;:21:::0;;-1:-1:-1;;17084:21:0::1;17101:4;17084:21;::::0;;16931:182::o;13625:616::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;13707:7:::1;13702:532;;-1:-1:-1::0;;;;;13731:13:0;;::::1;13747:5;13731:13:::0;;;:7:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;13731:21:0;;::::1;::::0;;;13767:24:::1;:30:::0;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;13819:11:::1;::::0;:34;;-1:-1:-1;;;13819:34:0;;::::1;::::0;::::1;18956:51:1::0;;;;19023:18;;;19016:50;;;;13819:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18929:18:1;;13819:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;13702:532;13890:17;::::0;:22;13886:135:::1;;13979:6;13959:17;;13941:15;:35;;;;:::i;:::-;:44;13933:72;;;::::0;-1:-1:-1;;;13933:72:0;;19279:2:1;13933:72:0::1;::::0;::::1;19261:21:1::0;19318:2;19298:18;;;19291:30;-1:-1:-1;;;19337:18:1;;;19330:45;19392:18;;13933:72:0::1;19077:339:1::0;13933:72:0::1;-1:-1:-1::0;;;;;14044:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14043:14;14035:54;;;::::0;-1:-1:-1;;;14035:54:0;;19623:2:1;14035:54:0::1;::::0;::::1;19605:21:1::0;19662:2;19642:18;;;19635:30;19701:29;19681:18;;;19674:57;19748:18;;14035:54:0::1;19421:351:1::0;14035:54:0::1;-1:-1:-1::0;;;;;14104:13:0;;::::1;;::::0;;;14120:4:::1;14104:13;::::0;;;;;;;;:20;;-1:-1:-1;;14104:20:0::1;::::0;::::1;::::0;;14159:15:::1;14139:17;:35:::0;14189:11:::1;::::0;:33;;-1:-1:-1;;;14189:33:0;;::::1;::::0;::::1;18956:51:1::0;;;;19023:18;;;19016:50;14189:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18929:18:1;;14189:33:0::1;18788:284:1::0;12232:173:0;9499:6;;12296:4;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;12345:9:::1;::::0;12313:62:::1;::::0;12330:4:::1;::::0;12345:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12345:9:0::1;-1:-1:-1::0;;12313:8:0::1;:62::i;:::-;-1:-1:-1::0;12393:4:0::1;12232:173:::0;:::o;24179:775::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;24241:14:::1;::::0;::::1;::::0;::::1;;;24240:15;24232:52;;;::::0;-1:-1:-1;;;24232:52:0;;19979:2:1;24232:52:0::1;::::0;::::1;19961:21:1::0;20018:2;19998:18;;;19991:30;20057:26;20037:18;;;20030:54;20101:18;;24232:52:0::1;19777:348:1::0;24232:52:0::1;24303:16;::::0;;;::::1;;;24295:53;;;::::0;-1:-1:-1;;;24295:53:0;;20332:2:1;24295:53:0::1;::::0;::::1;20314:21:1::0;20371:2;20351:18;;;20344:30;20410:26;20390:18;;;20383:54;20454:18;;24295:53:0::1;20130:348:1::0;24295:53:0::1;24371:11;::::0;;;::::1;-1:-1:-1::0;;;;;24371:11:0::1;24359:106;;24413:11;:40:::0;;-1:-1:-1;;;;;;24413:40:0::1;24447:4;24413:40:::0;::::1;;::::0;;24359:106:::1;24479:11;::::0;24501:6:::1;::::0;24479:87:::1;::::0;-1:-1:-1;;;24479:87:0;;-1:-1:-1;;;;;24501:6:0;;::::1;24479:87;::::0;::::1;20706:51:1::0;20805:10;24516:12:0::1;20793:23:1::0;20773:18;;;20766:51;20865:18;24538:15:0::1;20853:31:1::0;20833:18;;;20826:59;5867:2:0::1;20901:18:1::0;;;20894:45;24479:11:0;;;::::1;;::::0;:21:::1;::::0;20678:19:1;;24479:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24475:103:::0;24592:11:::1;::::0;24623:6:::1;::::0;-1:-1:-1;;;;;24592:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;24613:17:::1;::::0;24623:6:::1;24613:9;:17::i;:::-;24592:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;24592:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;24592:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;24592:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;24588:207:::0;::::1;;24703:13;:29:::0;;;;24747:10:::1;:27:::0;24588:207:::1;24809:7;;;;;;;;;-1:-1:-1::0;;;;;24809:7:0::1;-1:-1:-1::0;;;;;24809:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24805:36:::0;24851:14:::1;:21:::0;;-1:-1:-1;;24883:21:0;;;;;24915:23:::1;:31:::0;;-1:-1:-1;;24915:31:0::1;::::0;;24179:775::o;29242:112::-;29320:7;;:26;;;-1:-1:-1;;;29320:26:0;;;;29293:7;;-1:-1:-1;;;;;29320:7:0;;:24;;:26;;;;;;;;;;;;;;:7;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28547:98::-;28598:7;;:39;;-1:-1:-1;;;28598:39:0;;28626:10;28598:39;;;160:51:1;-1:-1:-1;;;;;28598:7:0;;;;:27;;133:18:1;;28598:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28547:98::o;12413:152::-;12493:4;12517:40;12527:10;12539:9;12550:6;12517:9;:40::i;:::-;12510:47;12413:152;-1:-1:-1;;;12413:152:0:o;28291:248::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;28390:4:::1;-1:-1:-1::0;;;;;28373:22:0;::::1;::::0;28365:62:::1;;;::::0;-1:-1:-1;;;28365:62:0;;21658:2:1;28365:62:0::1;::::0;::::1;21640:21:1::0;21697:2;21677:18;;;21670:30;21736:29;21716:18;;;21709:57;21783:18;;28365:62:0::1;21456:351:1::0;28365:62:0::1;28492:6;::::0;28500:30:::1;::::0;-1:-1:-1;;;28500:30:0;;28524:4:::1;28500:30;::::0;::::1;160:51:1::0;28460:5:0;;-1:-1:-1;;;;;28477:14:0;;::::1;::::0;::::1;::::0;28492:6;;;::::1;::::0;28477:14;;28500:15:::1;::::0;133:18:1;;28500:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28477:54;::::0;-1:-1:-1;;;;;;28477:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18422:32:1;;;28477:54:0::1;::::0;::::1;18404:51:1::0;18471:18;;;18464:34;18377:18;;28477:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29100:134::-:0;29195:7;;:31;;-1:-1:-1;;;29195:31:0;;-1:-1:-1;;;;;178:32:1;;;29195:31:0;;;160:51:1;29168:7:0;;29195;;:25;;133:18:1;;29195:31:0;14:203:1;19508:273:0;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;19679:27:::1;19683:23:::0;19679:2:::1;:27;:::i;:::-;19662:44;::::0;:14;:44:::1;:::i;:::-;19717:7;::::0;:56:::1;::::0;-1:-1:-1;;;19717:56:0;;::::1;::::0;::::1;22372:25:1::0;;;22413:18;;;22406:34;;;19645:61:0;;-1:-1:-1;;;;;;19717:7:0::1;::::0;:28:::1;::::0;22345:18:1;;19717:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19508:273:::0;;;:::o;17673:350::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;17756:7:::1;:25:::0;;::::1;17792:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;17792:29:0;;;17756:25;;::::1;17792:29:::0;::::1;::::0;;17848:19:::1;17812:9:::0;17774:7;17848:19:::1;:::i;:::-;17832:7;:35:::0;;-1:-1:-1;;17832:35:0::1;-1:-1:-1::0;;;17832:35:0::1;::::0;;::::1;;;::::0;;17913:9:::1;:17:::0;-1:-1:-1;;17894:36:0::1;::::0;17913:17;;::::1;::::0;::::1;::::0;17894:16:::1;:36;:::i;:::-;17949:7;:13:::0;17878:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;17949:13:0;::::1;;:22:::0;-1:-1:-1;17949:22:0::1;17941:74;;;::::0;-1:-1:-1;;;17941:74:0;;22653:2:1;17941:74:0::1;::::0;::::1;22635:21:1::0;22692:2;22672:18;;;22665:30;22731:34;22711:18;;;22704:62;-1:-1:-1;;;22782:18:1;;;22775:37;22829:19;;17941:74:0::1;22451:403:1::0;19789:129:0;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;19876:6:::1;19870:3;:12;19862:21;;;::::0;::::1;;19894:10;:16:::0;19789:129::o;12887:730::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;12967:16:::1;::::0;;;::::1;;;12966:17;12958:60;;;::::0;-1:-1:-1;;;12958:60:0;;23061:2:1;12958:60:0::1;::::0;::::1;23043:21:1::0;23100:2;23080:18;;;23073:30;23139:32;23119:18;;;23112:60;23189:18;;12958:60:0::1;22859:354:1::0;12958:60:0::1;13091:6;::::0;-1:-1:-1;;;;;13091:6:0;;::::1;13029:20;13083:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;13083:23:0::1;::::0;;13147:20;;-1:-1:-1;;;13147:20:0;;;;13062:9;;13147:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13136:40:0::1;;13185:4;13192:10;-1:-1:-1::0;;;;;13192:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13136:74;::::0;-1:-1:-1;;;;;;13136:74:0::1;::::0;;;;;;-1:-1:-1;;;;;23448:15:1;;;13136:74:0::1;::::0;::::1;23430:34:1::0;23500:15;;23480:18;;;23473:43;23365:18;;13136:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13117:93:::0;-1:-1:-1;;;;;;13225:22:0;::::1;13221:200;;13284:10;-1:-1:-1::0;;;;;13284:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13273:43:0::1;;13325:4;13332:10;-1:-1:-1::0;;;;;13332:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13273:77;::::0;-1:-1:-1;;;;;;13273:77:0::1;::::0;;;;;;-1:-1:-1;;;;;23448:15:1;;;13273:77:0::1;::::0;::::1;23430:34:1::0;23500:15;;23480:18;;;23473:43;23365:18;;13273:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13264:6;:86:::0;;-1:-1:-1;;;;;;13264:86:0::1;-1:-1:-1::0;;;;;13264:86:0;;;::::1;::::0;;;::::1;::::0;;13221:200:::1;;;13392:6;:17:::0;;-1:-1:-1;;;;;;13392:17:0::1;-1:-1:-1::0;;;;;13392:17:0;::::1;;::::0;;13221:200:::1;13431:9;:22:::0;;-1:-1:-1;;;;;;13431:22:0::1;;-1:-1:-1::0;;;;;13431:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13472:6:::1;::::0;;;::::1;-1:-1:-1::0;13464:15:0;;;-1:-1:-1;13464:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13464:22:0;;::::1;::::0;::::1;::::0;;;13522:6;;;::::1;13497:32:::0;;:24:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;13579:9;;13547:62:::1;::::0;13564:4:::1;::::0;13579:9;::::1;;-1:-1:-1::0;;13547:8:0::1;:62::i;16731:192::-:0;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16816:23:0;::::1;16808:59;;;::::0;-1:-1:-1;;;16808:59:0;;23729:2:1;16808:59:0::1;::::0;::::1;23711:21:1::0;23768:2;23748:18;;;23741:30;23807:25;23787:18;;;23780:53;23850:18;;16808:59:0::1;23527:347:1::0;16808:59:0::1;16878:15;:36:::0;;-1:-1:-1;;;;;;16878:36:0::1;-1:-1:-1::0;;;;;16878:36:0;;;::::1;::::0;;;::::1;::::0;;16731:192::o;28101:182::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;28168:16:::1;::::0;;;::::1;;;28167:17;28159:58;;;::::0;-1:-1:-1;;;28159:58:0;;24081:2:1;28159:58:0::1;::::0;::::1;24063:21:1::0;24120:2;24100:18;;;24093:30;24159;24139:18;;;24132:58;24207:18;;28159:58:0::1;23879:352:1::0;28159:58:0::1;28236:6;::::0;28228:47:::1;::::0;-1:-1:-1;;;;;28236:6:0;;::::1;::::0;28253:21:::1;28228:47:::0;::::1;;;::::0;28236:6:::1;28228:47:::0;28236:6;28228:47;28253:21;28236:6;28228:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;26547:111:::0;26613:7;;:26;;-1:-1:-1;;;26613:26:0;;;;;368:25:1;;;-1:-1:-1;;;;;26613:7:0;;;;:15;;341:18:1;;26613:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26609:42;;;26547:111;:::o;28653:116::-;28732:7;;:29;;;-1:-1:-1;;;28732:29:0;;;;28705:7;;-1:-1:-1;;;;;28732:7:0;;:27;;:29;;;;;;;;;;;;;;:7;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18228:699::-;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;18428:16;18408;5929:15:::1;5867:2;5929;:15;:::i;:::-;5911:34;::::0;5716:11:::1;5911:34;:::i;:::-;18398:26;;;;:::i;:::-;18397:47;;;;:::i;:::-;18381:13;:63:::0;18496:13;18479;5929:15:::1;5867:2;5929;:15;:::i;:::-;5911:34;::::0;5716:11:::1;5911:34;:::i;:::-;18469:23;;;;:::i;:::-;18468:41;;;;:::i;:::-;18455:10;:54:::0;;;18528:13:::1;::::0;:27:::1;;18520:73;;;::::0;-1:-1:-1;;;18520:73:0;;24438:2:1;18520:73:0::1;::::0;::::1;24420:21:1::0;24477:2;24457:18;;;24450:30;24516:34;24496:18;;;24489:62;-1:-1:-1;;;24567:18:1;;;24560:31;24608:19;;18520:73:0::1;24236:397:1::0;18520:73:0::1;18637:6;::::0;6634:5:::1;::::0;18627:17:::1;::::0;-1:-1:-1;;;;;18637:6:0::1;18627:9;:17::i;:::-;:23;::::0;18647:3:::1;18627:23;:::i;:::-;18626:44;;;;:::i;:::-;18612:10;;:58;;18604:106;;;::::0;-1:-1:-1;;;18604:106:0;;24840:2:1;18604:106:0::1;::::0;::::1;24822:21:1::0;24879:2;24859:18;;;24852:30;24918:34;24898:18;;;24891:62;-1:-1:-1;;;24969:18:1;;;24962:33;25012:19;;18604:106:0::1;24638:399:1::0;18604:106:0::1;18753:9;5929:15;5867:2;5929;:15;:::i;:::-;5911:34;::::0;5716:11:::1;5911:34;:::i;:::-;18743:19;;;;:::i;:::-;18729:10;;:33;;18721:92;;;;-1:-1:-1::0;;;18721:92:0::1;;;;;;;:::i;:::-;18859:9;5929:15;5867:2;5929;:15;:::i;:::-;5911:34;::::0;5716:11:::1;5911:34;:::i;:::-;18849:19;;;;:::i;:::-;18832:13;;:36;;18824:95;;;;-1:-1:-1::0;;;18824:95:0::1;;;;;;;:::i;16296:148::-:0;9499:6;;-1:-1:-1;;;;;9499:6:0;9509:10;9499:20;9491:50;;;;-1:-1:-1;;;9491:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16392:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16392:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16296:148::o;11882:342::-;-1:-1:-1;;;;;11977:20:0;;11969:69;;;;-1:-1:-1;;;11969:69:0;;25659:2:1;11969:69:0;;;25641:21:1;25698:2;25678:18;;;25671:30;25737:34;25717:18;;;25710:62;-1:-1:-1;;;25788:18:1;;;25781:34;25832:19;;11969:69:0;25457:400:1;11969:69:0;-1:-1:-1;;;;;12057:21:0;;12049:68;;;;-1:-1:-1;;;12049:68:0;;26064:2:1;12049:68:0;;;26046:21:1;26103:2;26083:18;;;26076:30;26142:34;26122:18;;;26115:62;-1:-1:-1;;;26193:18:1;;;26186:32;26235:19;;12049:68:0;25862:398:1;12049:68:0;-1:-1:-1;;;;;12130:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12183:33;;368:25:1;;;12183:33:0;;341:18:1;12183:33:0;;;;;;;11882:342;;;:::o;20616:1674::-;20695:4;-1:-1:-1;;;;;20720:18:0;;20712:68;;;;-1:-1:-1;;;20712:68:0;;26467:2:1;20712:68:0;;;26449:21:1;26506:2;26486:18;;;26479:30;26545:34;26525:18;;;26518:62;-1:-1:-1;;;26596:18:1;;;26589:35;26641:19;;20712:68:0;26265:401:1;20712:68:0;-1:-1:-1;;;;;20799:16:0;;20791:64;;;;-1:-1:-1;;;20791:64:0;;26873:2:1;20791:64:0;;;26855:21:1;26912:2;26892:18;;;26885:30;26951:34;26931:18;;;26924:62;-1:-1:-1;;;27002:18:1;;;26995:33;27045:19;;20791:64:0;26671:399:1;20791:64:0;20883:1;20874:6;:10;20866:64;;;;-1:-1:-1;;;20866:64:0;;27277:2:1;20866:64:0;;;27259:21:1;27316:2;27296:18;;;27289:30;27355:34;27335:18;;;27328:62;-1:-1:-1;;;27406:18:1;;;27399:39;27455:19;;20866:64:0;27075:405:1;20866:64:0;-1:-1:-1;;;;;21029:13:0;;20941:8;21029:13;;;:7;:13;;;;;;20941:8;;;;21029:13;;21025:162;;;21065:4;21059:10;;21025:162;;;-1:-1:-1;;;;;21091:11:0;;;;;;:7;:11;;;;;;;;21087:100;;;21126:4;21119:11;;21087:100;;;-1:-1:-1;21171:4:0;21087:100;21201:20;21212:4;21218:2;21201:10;:20::i;:::-;21197:371;;;21242:14;;;;;;;21238:319;;21282:5;21277:265;;21312:34;;-1:-1:-1;;;21312:34:0;;27687:2:1;21312:34:0;;;27669:21:1;27726:2;27706:18;;;27699:30;27765:26;27745:18;;;27738:54;27809:18;;21312:34:0;27485:348:1;21277:265:0;-1:-1:-1;;;;;21377:31:0;;;;;;:25;:31;;;;;;;;21376:32;:66;;;;-1:-1:-1;;;;;;21413:29:0;;;;;;:25;:29;;;;;;;;21412:30;21376:66;21372:170;;;21467:55;;-1:-1:-1;;;21467:55:0;;28040:2:1;21467:55:0;;;28022:21:1;28079:2;28059:18;;;28052:30;28118:34;28098:18;;;28091:62;-1:-1:-1;;;28169:18:1;;;28162:43;28222:19;;21467:55:0;27838:409:1;21372:170:0;21584:4;21580:632;;;21610:6;;;;21605:596;;21641:19;;;;;;;21637:549;;;21685:28;21716:24;21734:4;21716:9;:24::i;:::-;21685:55;;21791:13;;21767:20;:37;21763:404;;21851:10;;21892:22;;;;21888:97;;;21949:13;;21939:6;;6634:5;;21949:13;21929:17;;-1:-1:-1;;;;;21939:6:0;21929:9;:17::i;:::-;:33;;;;:::i;:::-;21928:54;;;;:::i;:::-;21918:64;;21888:97;22039:7;22015:20;:31;22011:72;;22073:7;22050:30;;22011:72;22109:34;22122:20;22109:12;:34::i;:::-;21806:361;21763:404;21662:524;21637:549;22230:52;22247:4;22253:2;22257:6;22265:3;22270:4;22276:5;22230:16;:52::i;:::-;22223:59;20616:1674;-1:-1:-1;;;;;;;20616:1674:0:o;24962:1163::-;25081:4;25102:20;25113:4;25119:2;25102:10;:20::i;:::-;25098:228;;;25157:11;;:39;;-1:-1:-1;;;25157:39:0;;-1:-1:-1;;;;;28510:15:1;;;25157:39:0;;;28492:34:1;28562:15;;;28542:18;;;28535:43;28594:18;;;28587:34;;;25126:12:0;;25157:11;;;;;:21;;28427:18:1;;25157:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25157:39:0;;;;;;;;-1:-1:-1;;25157:39:0;;;;;;;;;;;;:::i;:::-;;;25153:122;;25264:8;;;25153:122;25247:5;-1:-1:-1;25293:7:0;25289:26;;25304:8;;;25289:26;25124:202;25098:228;-1:-1:-1;;;;;25372:25:0;;25338:12;25372:25;;;:19;:25;;;;;;25353:4;;25372:25;;;:52;;-1:-1:-1;;;;;;25401:23:0;;;;;;:19;:23;;;;;;;;25372:52;25368:99;;;-1:-1:-1;25450:5:0;25368:99;-1:-1:-1;;;;;25479:13:0;;:7;:13;;;;;;;;;;:23;;25496:6;;25479:7;:23;;25496:6;;25479:23;:::i;:::-;;;;-1:-1:-1;25538:6:0;;-1:-1:-1;25555:98:0;;;;25600:41;25610:4;25616:6;25624:3;25629:4;25635:5;25600:9;:41::i;:::-;25583:58;;25555:98;-1:-1:-1;;;;;25663:11:0;;:7;:11;;;;;;;;;;:29;;25678:14;;25663:7;:29;;25678:14;;25663:29;:::i;:::-;;;;;;;;25723:2;-1:-1:-1;;;;;25708:34:0;25717:4;-1:-1:-1;;;;;25708:34:0;;25727:14;25708:34;;;;368:25:1;;356:2;341:18;;222:177;25708:34:0;;;;;;;;25758:16;;;;;;;25753:298;;25791:28;25810:4;25816:2;25791:18;:28::i;:::-;25839:16;;;;;;;25838:17;:41;;;;;25859:20;25870:4;25876:2;25859:10;:20::i;:::-;25838:77;;;;-1:-1:-1;;;;;;25884:31:0;;;;;;:25;:31;;;;;;;;25883:32;25838:77;:111;;;;-1:-1:-1;;;;;;25920:29:0;;;;;;:25;:29;;;;;;;;25919:30;25838:111;:121;;;;;25954:5;25953:6;25838:121;25834:206;;;25980:44;;-1:-1:-1;;;25980:44:0;;28964:2:1;25980:44:0;;;28946:21:1;29003:2;28983:18;;;28976:30;29042:34;29022:18;;;29015:62;-1:-1:-1;;;29093:18:1;;;29086:32;29135:19;;25980:44:0;28762:398:1;25834:206:0;26061:24;26076:4;26082:2;26061:14;:24::i;:::-;-1:-1:-1;26113:4:0;;24962:1163;-1:-1:-1;;;;;;;;24962:1163:0:o;19926:446::-;20027:6;;19995:4;;-1:-1:-1;;;;;20019:14:0;;;20027:6;;20019:14;;;;:43;;-1:-1:-1;20056:6:0;;-1:-1:-1;;;;;20050:12:0;;;20056:6;;20050:12;;20019:43;:79;;;;-1:-1:-1;20092:6:0;;-1:-1:-1;;;;;20092:6:0;20079:9;:19;;20019:79;:118;;;;-1:-1:-1;;;;;;20116:21:0;;;;;;:17;:21;;;;;;;;20115:22;20019:118;:159;;;;-1:-1:-1;;;;;;20155:23:0;;;;;;:17;:23;;;;;;;;20154:24;20019:159;:186;;;;-1:-1:-1;;;;;;20195:10:0;;6775:42;20195:10;;20019:186;:219;;;;-1:-1:-1;;;;;;20222:16:0;;;;20019:219;:257;;;;-1:-1:-1;;;;;;20255:21:0;;20271:4;20255:21;;20019:257;:302;;;;-1:-1:-1;20309:11:0;;-1:-1:-1;;;;;20293:28:0;;;20309:11;;;;;20293:28;;20019:302;:345;;;;-1:-1:-1;;20352:11:0;;;;;-1:-1:-1;;;;;20352:11:0;;;20338:26;;;;;19926:446;-1:-1:-1;19926:446:0:o;22298:1185::-;7470:6;:13;;-1:-1:-1;;7470:13:0;7479:4;7470:13;;;22381:30:::1;::::0;;::::1;::::0;::::1;::::0;;22404:7:::1;22381:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;22381:30:0;;::::1;;::::0;;;;;;;7470:6;22426:17;22422:56:::1;;22460:7;;;22422:56;22522:4;22502:26;::::0;;;:11:::1;:26;::::0;;;;;;;22537:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22537:9:0::1;22502:46:::0;;;;;;;;-1:-1:-1;;22502:67:0::1;22498:166;;22606:4;22586:26;::::0;;;:11:::1;:26;::::0;;;;;;;22621:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22621:9:0::1;22586:46:::0;;;;;;;-1:-1:-1;;22586:66:0;;22498:166:::1;22700:16;::::0;;22714:1:::1;22700:16:::0;;;;;::::1;::::0;;22676:21:::1;::::0;22700:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22700:16:0::1;22676:40;;22745:4;22727;22732:1;22727:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22727:23:0::1;;;-1:-1:-1::0;;;;;22727:23:0::1;;;::::0;::::1;22771:9;;;;;;;;;-1:-1:-1::0;;;;;22771:9:0::1;-1:-1:-1::0;;;;;22771:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22761:4;22766:1;22761:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22761:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22804:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;22804:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;22879:20;;22914:1:::1;::::0;22930:4;;22957::::1;::::0;22977:15:::1;::::0;22804:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22800:246;;23028:7;;;;22800:246;23168:12;::::0;::::1;::::0;23150:14;;23079:21:::1;::::0;23058:18:::1;::::0;23136:44:::1;::::0;;::::1;::::0;23137:27:::1;::::0;::::1;23079:21:::0;23137:27:::1;:::i;:::-;23136:44;;;;:::i;:::-;23111:69:::0;-1:-1:-1;23191:24:0::1;23218:29;23111:69:::0;23218:10;:29:::1;:::i;:::-;23264:14:::0;;23191:56;;-1:-1:-1;23264:18:0::1;;::::0;23260:103:::1;;23303:7;;;;;;;;;-1:-1:-1::0;;;;;23303:7:0::1;-1:-1:-1::0;;;;;23303:12:0::1;;23323:14;23303:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23299:53:::0;::::1;23409:15;::::0;:66:::1;::::0;23373:12:::1;::::0;-1:-1:-1;;;;;23409:15:0::1;::::0;23465:5:::1;::::0;23437:21:::1;::::0;23373:12;23409:66;23373:12;23409:66;23437:21;23409:15;23465:5;23409:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;7494:1:0::1;-1:-1:-1::0;7506:6:0;:14;;-1:-1:-1;;7506:14:0;;;22298:1185::o;26666:842::-;26766:7;26786:18;26819:3;26815:205;;;-1:-1:-1;26852:9:0;:16;;;26815:205;;;26890:4;26886:134;;;-1:-1:-1;26924:9:0;:17;;;;;;26886:134;;;-1:-1:-1;26987:9:0;:21;-1:-1:-1;;;26987:21:0;;;;26886:134;27036:10;27050:1;27036:15;27032:61;;27075:6;27068:13;;;;;27032:61;27117:11;;;;;-1:-1:-1;;;;;27117:11:0;27141:4;27109:37;:110;;;;;27164:13;27181:1;27164:18;:54;;;;27199:13;27216:2;27199:19;27164:54;27105:138;;;-1:-1:-1;27236:4:0;27105:138;27253:17;6634:5;27273:19;27282:10;27273:6;:19;:::i;:::-;:38;;;;:::i;:::-;27253:58;-1:-1:-1;27326:13:0;;27322:141;;27372:4;27356:7;:22;;;;;;;;;;:35;;27382:9;;27356:7;:35;;27382:9;;27356:35;:::i;:::-;;;;-1:-1:-1;;27411:40:0;;368:25:1;;;27434:4:0;;-1:-1:-1;;;;;27411:40:0;;;;;356:2:1;341:18;27411:40:0;;;;;;;27322:141;27482:18;27491:9;27482:6;:18;:::i;:::-;27475:25;;;;26666:842;;;;;;;;:::o;23491:680::-;23573:16;;;;;;;23572:17;23564:65;;;;-1:-1:-1;;;23564:65:0;;30562:2:1;23564:65:0;;;30544:21:1;30601:2;30581:18;;;30574:30;30640:34;30620:18;;;30613:62;-1:-1:-1;;;30691:18:1;;;30684:33;30734:19;;23564:65:0;30360:399:1;23564:65:0;23645:20;23656:4;23662:2;23645:10;:20::i;:::-;23644:21;:37;;;;-1:-1:-1;23675:6:0;;-1:-1:-1;;;;;23669:12:0;;;23675:6;;23669:12;23644:37;23640:524;;;-1:-1:-1;;;;;23698:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23698:30:0;23724:4;23698:30;;;23743:16;:23;;-1:-1:-1;;23743:23:0;;;;;;;23793:11;;;;23781:115;;23840:11;:40;;-1:-1:-1;;;;;;23840:40:0;23874:4;23840:40;;;;;23781:115;23922:7;;-1:-1:-1;;;;;23922:7:0;23910:104;;23966:7;:32;;-1:-1:-1;;;;;;23966:32:0;23992:4;23966:32;;;23910:104;24028:19;:26;;-1:-1:-1;;24028:26:0;;;;;24069:23;:31;;-1:-1:-1;;24069:31:0;;;24120:32;;-1:-1:-1;2399:41:1;;24120:32:0;;2387:2:1;2372:18;24120:32:0;;;;;;;23491:680;;:::o;26133:406::-;-1:-1:-1;;;;;26208:30:0;;;;;;:24;:30;;;;;;;;26203:113;;26259:7;;-1:-1:-1;;;;;26279:13:0;;;26259:7;26279:13;;;;;;;;;;;;;26259:34;;-1:-1:-1;;;26259:34:0;;;;;18404:51:1;;;;18471:18;;;18464:34;26259:7:0;;;:13;;18377:18:1;;26259:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26255:50;;-1:-1:-1;;;;;26331:28:0;;;;;;:24;:28;;;;;;;;26326:107;;26380:7;;-1:-1:-1;;;;;26398:11:0;;;26380:7;26398:11;;;;;;;;;;;;;26380:30;;-1:-1:-1;;;26380:30:0;;;;;18404:51:1;;;;18471:18;;;18464:34;26380:7:0;;;:13;;18377:18:1;;26380:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26376:46;;26447:14;;;;26443:89;;;26482:7;;26498:10;;26482:27;;-1:-1:-1;;;26482:27:0;;-1:-1:-1;;;;;26482:7:0;;;;:15;;:27;;;;368:25:1;;;356:2;341:18;;222:177;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;1278:250::-;1363:1;1373:113;1387:6;1384:1;1381:13;1373:113;;;1463:11;;;1457:18;1444:11;;;1437:39;1409:2;1402:10;1373:113;;;-1:-1:-1;;1520:1:1;1502:16;;1495:27;1278:250::o;1533:271::-;1575:3;1613:5;1607:12;1640:6;1635:3;1628:19;1656:76;1725:6;1718:4;1713:3;1709:14;1702:4;1695:5;1691:16;1656:76;:::i;:::-;1786:2;1765:15;-1:-1:-1;;1761:29:1;1752:39;;;;1793:4;1748:50;;1533:271;-1:-1:-1;;1533:271:1:o;1809:220::-;1958:2;1947:9;1940:21;1921:4;1978:45;2019:2;2008:9;2004:18;1996:6;1978:45;:::i;2451:131::-;-1:-1:-1;;;;;2526:31:1;;2516:42;;2506:70;;2572:1;2569;2562:12;2587:315;2655:6;2663;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2771:9;2758:23;2790:31;2815:5;2790:31;:::i;:::-;2840:5;2892:2;2877:18;;;;2864:32;;-1:-1:-1;;;2587:315:1:o;2907:247::-;2966:6;3019:2;3007:9;2998:7;2994:23;2990:32;2987:52;;;3035:1;3032;3025:12;2987:52;3074:9;3061:23;3093:31;3118:5;3093:31;:::i;3159:388::-;3227:6;3235;3288:2;3276:9;3267:7;3263:23;3259:32;3256:52;;;3304:1;3301;3294:12;3256:52;3343:9;3330:23;3362:31;3387:5;3362:31;:::i;:::-;3412:5;-1:-1:-1;3469:2:1;3454:18;;3441:32;3482:33;3441:32;3482:33;:::i;3552:456::-;3629:6;3637;3645;3698:2;3686:9;3677:7;3673:23;3669:32;3666:52;;;3714:1;3711;3704:12;3666:52;3753:9;3740:23;3772:31;3797:5;3772:31;:::i;:::-;3822:5;-1:-1:-1;3879:2:1;3864:18;;3851:32;3892:33;3851:32;3892:33;:::i;:::-;3552:456;;3944:7;;-1:-1:-1;;;3998:2:1;3983:18;;;;3970:32;;3552:456::o;4013:127::-;4074:10;4069:3;4065:20;4062:1;4055:31;4105:4;4102:1;4095:15;4129:4;4126:1;4119:15;4145:275;4216:2;4210:9;4281:2;4262:13;;-1:-1:-1;;4258:27:1;4246:40;;4316:18;4301:34;;4337:22;;;4298:62;4295:88;;;4363:18;;:::i;:::-;4399:2;4392:22;4145:275;;-1:-1:-1;4145:275:1:o;4425:183::-;4485:4;4518:18;4510:6;4507:30;4504:56;;;4540:18;;:::i;:::-;-1:-1:-1;4585:1:1;4581:14;4597:4;4577:25;;4425:183::o;4613:662::-;4667:5;4720:3;4713:4;4705:6;4701:17;4697:27;4687:55;;4738:1;4735;4728:12;4687:55;4774:6;4761:20;4800:4;4824:60;4840:43;4880:2;4840:43;:::i;:::-;4824:60;:::i;:::-;4918:15;;;5004:1;5000:10;;;;4988:23;;4984:32;;;4949:12;;;;5028:15;;;5025:35;;;5056:1;5053;5046:12;5025:35;5092:2;5084:6;5080:15;5104:142;5120:6;5115:3;5112:15;5104:142;;;5186:17;;5174:30;;5224:12;;;;5137;;5104:142;;;-1:-1:-1;5264:5:1;4613:662;-1:-1:-1;;;;;;4613:662:1:o;5280:1215::-;5398:6;5406;5459:2;5447:9;5438:7;5434:23;5430:32;5427:52;;;5475:1;5472;5465:12;5427:52;5515:9;5502:23;5544:18;5585:2;5577:6;5574:14;5571:34;;;5601:1;5598;5591:12;5571:34;5639:6;5628:9;5624:22;5614:32;;5684:7;5677:4;5673:2;5669:13;5665:27;5655:55;;5706:1;5703;5696:12;5655:55;5742:2;5729:16;5764:4;5788:60;5804:43;5844:2;5804:43;:::i;5788:60::-;5882:15;;;5964:1;5960:10;;;;5952:19;;5948:28;;;5913:12;;;;5988:19;;;5985:39;;;6020:1;6017;6010:12;5985:39;6044:11;;;;6064:217;6080:6;6075:3;6072:15;6064:217;;;6160:3;6147:17;6177:31;6202:5;6177:31;:::i;:::-;6221:18;;6097:12;;;;6259;;;;6064:217;;;6300:5;-1:-1:-1;;6343:18:1;;6330:32;;-1:-1:-1;;6374:16:1;;;6371:36;;;6403:1;6400;6393:12;6371:36;;6426:63;6481:7;6470:8;6459:9;6455:24;6426:63;:::i;:::-;6416:73;;;5280:1215;;;;;:::o;6689:159::-;6756:20;;6816:6;6805:18;;6795:29;;6785:57;;6838:1;6835;6828:12;6785:57;6689:159;;;:::o;6853:328::-;6927:6;6935;6943;6996:2;6984:9;6975:7;6971:23;6967:32;6964:52;;;7012:1;7009;7002:12;6964:52;7035:28;7053:9;7035:28;:::i;:::-;7025:38;;7082:37;7115:2;7104:9;7100:18;7082:37;:::i;:::-;7072:47;;7138:37;7171:2;7160:9;7156:18;7138:37;:::i;:::-;7128:47;;6853:328;;;;;:::o;7186:382::-;7251:6;7259;7312:2;7300:9;7291:7;7287:23;7283:32;7280:52;;;7328:1;7325;7318:12;7280:52;7367:9;7354:23;7386:31;7411:5;7386:31;:::i;7573:180::-;7632:6;7685:2;7673:9;7664:7;7660:23;7656:32;7653:52;;;7701:1;7698;7691:12;7653:52;-1:-1:-1;7724:23:1;;7573:180;-1:-1:-1;7573:180:1:o;7758:711::-;8051:3;8040:9;8033:22;8014:4;8078:46;8119:3;8108:9;8104:19;8096:6;8078:46;:::i;:::-;8172:9;8164:6;8160:22;8155:2;8144:9;8140:18;8133:50;8206:33;8232:6;8224;8206:33;:::i;:::-;8192:47;;8287:9;8279:6;8275:22;8270:2;8259:9;8255:18;8248:50;8321:33;8347:6;8339;8321:33;:::i;:::-;8307:47;;8402:9;8394:6;8390:22;8385:2;8374:9;8370:18;8363:50;8430:33;8456:6;8448;8430:33;:::i;8474:511::-;8542:6;8550;8558;8611:2;8599:9;8590:7;8586:23;8582:32;8579:52;;;8627:1;8624;8617:12;8579:52;8666:9;8653:23;8685:28;8707:5;8685:28;:::i;:::-;8732:5;-1:-1:-1;8789:2:1;8774:18;;8761:32;8802:30;8761:32;8802:30;:::i;:::-;8851:7;-1:-1:-1;8910:2:1;8895:18;;8882:32;8923:30;8882:32;8923:30;:::i;:::-;8972:7;8962:17;;;8474:511;;;;;:::o;9214:316::-;9291:6;9299;9307;9360:2;9348:9;9339:7;9335:23;9331:32;9328:52;;;9376:1;9373;9366:12;9328:52;-1:-1:-1;;9399:23:1;;;9469:2;9454:18;;9441:32;;-1:-1:-1;9520:2:1;9505:18;;;9492:32;;9214:316;-1:-1:-1;9214:316:1:o;9535:256::-;9601:6;9609;9662:2;9650:9;9641:7;9637:23;9633:32;9630:52;;;9678:1;9675;9668:12;9630:52;9701:28;9719:9;9701:28;:::i;:::-;9691:38;;9748:37;9781:2;9770:9;9766:18;9748:37;:::i;:::-;9738:47;;9535:256;;;;;:::o;10056:385::-;10142:6;10150;10158;10166;10219:3;10207:9;10198:7;10194:23;10190:33;10187:53;;;10236:1;10233;10226:12;10187:53;-1:-1:-1;;10259:23:1;;;10329:2;10314:18;;10301:32;;-1:-1:-1;10380:2:1;10365:18;;10352:32;;10431:2;10416:18;10403:32;;-1:-1:-1;10056:385:1;-1:-1:-1;10056:385:1:o;10446:341::-;10648:2;10630:21;;;10687:2;10667:18;;;10660:30;-1:-1:-1;;;10721:2:1;10706:18;;10699:47;10778:2;10763:18;;10446:341::o;11065:127::-;11126:10;11121:3;11117:20;11114:1;11107:31;11157:4;11154:1;11147:15;11181:4;11178:1;11171:15;11197:422;11286:1;11329:5;11286:1;11343:270;11364:7;11354:8;11351:21;11343:270;;;11423:4;11419:1;11415:6;11411:17;11405:4;11402:27;11399:53;;;11432:18;;:::i;:::-;11482:7;11472:8;11468:22;11465:55;;;11502:16;;;;11465:55;11581:22;;;;11541:15;;;;11343:270;;;11347:3;11197:422;;;;;:::o;11624:806::-;11673:5;11703:8;11693:80;;-1:-1:-1;11744:1:1;11758:5;;11693:80;11792:4;11782:76;;-1:-1:-1;11829:1:1;11843:5;;11782:76;11874:4;11892:1;11887:59;;;;11960:1;11955:130;;;;11867:218;;11887:59;11917:1;11908:10;;11931:5;;;11955:130;11992:3;11982:8;11979:17;11976:43;;;11999:18;;:::i;:::-;-1:-1:-1;;12055:1:1;12041:16;;12070:5;;11867:218;;12169:2;12159:8;12156:16;12150:3;12144:4;12141:13;12137:36;12131:2;12121:8;12118:16;12113:2;12107:4;12104:12;12100:35;12097:77;12094:159;;;-1:-1:-1;12206:19:1;;;12238:5;;12094:159;12285:34;12310:8;12304:4;12285:34;:::i;:::-;12355:6;12351:1;12347:6;12343:19;12334:7;12331:32;12328:58;;;12366:18;;:::i;:::-;12404:20;;11624:806;-1:-1:-1;;;11624:806:1:o;12435:140::-;12493:5;12522:47;12563:4;12553:8;12549:19;12543:4;12522:47;:::i;12580:168::-;12653:9;;;12684;;12701:15;;;12695:22;;12681:37;12671:71;;12722:18;;:::i;12753:385::-;12832:6;12840;12893:2;12881:9;12872:7;12868:23;12864:32;12861:52;;;12909:1;12906;12899:12;12861:52;12941:9;12935:16;12960:31;12985:5;12960:31;:::i;:::-;13060:2;13045:18;;13039:25;13010:5;;-1:-1:-1;13073:33:1;13039:25;13073:33;:::i;13143:128::-;13210:9;;;13231:11;;;13228:37;;;13245:18;;:::i;13626:127::-;13687:10;13682:3;13678:20;13675:1;13668:31;13718:4;13715:1;13708:15;13742:4;13739:1;13732:15;14105:197;14143:3;14171:6;14212:2;14205:5;14201:14;14239:2;14230:7;14227:15;14224:41;;14245:18;;:::i;:::-;14294:1;14281:15;;14105:197;-1:-1:-1;;;14105:197:1:o;15005:168::-;15072:6;15098:10;;;15110;;;15094:27;;15133:11;;;15130:37;;;15147:18;;:::i;:::-;15130:37;15005:168;;;;:::o;15539:217::-;15579:1;15605;15595:132;;15649:10;15644:3;15640:20;15637:1;15630:31;15684:4;15681:1;15674:15;15712:4;15709:1;15702:15;15595:132;-1:-1:-1;15741:9:1;;15539:217::o;16112:425::-;16314:2;16296:21;;;16353:2;16333:18;;;16326:30;16392:34;16387:2;16372:18;;16365:62;16463:31;16458:2;16443:18;;16436:59;16527:3;16512:19;;16112:425::o;16542:184::-;16612:6;16665:2;16653:9;16644:7;16640:23;16636:32;16633:52;;;16681:1;16678;16671:12;16633:52;-1:-1:-1;16704:16:1;;16542:184;-1:-1:-1;16542:184:1:o;16731:510::-;16785:5;16838:3;16831:4;16823:6;16819:17;16815:27;16805:55;;16856:1;16853;16846:12;16805:55;16885:6;16879:13;16911:18;16907:2;16904:26;16901:52;;;16933:18;;:::i;:::-;16977:55;17020:2;17001:13;;-1:-1:-1;;16997:27:1;17026:4;16993:38;16977:55;:::i;:::-;17057:2;17048:7;17041:19;17103:3;17096:4;17091:2;17083:6;17079:15;17075:26;17072:35;17069:55;;;17120:1;17117;17110:12;17069:55;17133:77;17207:2;17200:4;17191:7;17187:18;17180:4;17172:6;17168:17;17133:77;:::i;17246:971::-;17383:6;17391;17399;17407;17460:3;17448:9;17439:7;17435:23;17431:33;17428:53;;;17477:1;17474;17467:12;17428:53;17510:9;17504:16;17539:18;17580:2;17572:6;17569:14;17566:34;;;17596:1;17593;17586:12;17566:34;17619:61;17672:7;17663:6;17652:9;17648:22;17619:61;:::i;:::-;17609:71;;17726:2;17715:9;17711:18;17705:25;17689:41;;17755:2;17745:8;17742:16;17739:36;;;17771:1;17768;17761:12;17739:36;17794:63;17849:7;17838:8;17827:9;17823:24;17794:63;:::i;:::-;17784:73;;17903:2;17892:9;17888:18;17882:25;17866:41;;17932:2;17922:8;17919:16;17916:36;;;17948:1;17945;17938:12;17916:36;17971:63;18026:7;18015:8;18004:9;18000:24;17971:63;:::i;:::-;17961:73;;18080:2;18069:9;18065:18;18059:25;18043:41;;18109:2;18099:8;18096:16;18093:36;;;18125:1;18122;18115:12;18093:36;;18148:63;18203:7;18192:8;18181:9;18177:24;18148:63;:::i;:::-;18138:73;;;17246:971;;;;;;;:::o;20950:245::-;21029:6;21037;21090:2;21078:9;21069:7;21065:23;21061:32;21058:52;;;21106:1;21103;21096:12;21058:52;-1:-1:-1;;21129:16:1;;21185:2;21170:18;;;21164:25;21129:16;;21164:25;;-1:-1:-1;20950:245:1:o;21200:251::-;21270:6;21323:2;21311:9;21302:7;21298:23;21294:32;21291:52;;;21339:1;21336;21329:12;21291:52;21371:9;21365:16;21390:31;21415:5;21390:31;:::i;21812:245::-;21879:6;21932:2;21920:9;21911:7;21907:23;21903:32;21900:52;;;21948:1;21945;21938:12;21900:52;21980:9;21974:16;21999:28;22021:5;21999:28;:::i;22062:131::-;22122:5;22151:36;22178:8;22172:4;22151:36;:::i;25042:410::-;25244:2;25226:21;;;25283:2;25263:18;;;25256:30;25322:34;25317:2;25302:18;;25295:62;-1:-1:-1;;;25388:2:1;25373:18;;25366:44;25442:3;25427:19;;25042:410::o;28632:125::-;28697:9;;;28718:10;;;28715:36;;;28731:18;;:::i;29165:980::-;29427:4;29475:3;29464:9;29460:19;29506:6;29495:9;29488:25;29532:2;29570:6;29565:2;29554:9;29550:18;29543:34;29613:3;29608:2;29597:9;29593:18;29586:31;29637:6;29672;29666:13;29703:6;29695;29688:22;29741:3;29730:9;29726:19;29719:26;;29780:2;29772:6;29768:15;29754:29;;29801:1;29811:195;29825:6;29822:1;29819:13;29811:195;;;29890:13;;-1:-1:-1;;;;;29886:39:1;29874:52;;29981:15;;;;29946:12;;;;29922:1;29840:9;29811:195;;;-1:-1:-1;;;;;;;30062:32:1;;;;30057:2;30042:18;;30035:60;-1:-1:-1;;;30126:3:1;30111:19;30104:35;30023:3;29165:980;-1:-1:-1;;;29165:980:1:o

Swarm Source

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