ETH Price: $3,138.98 (-8.66%)
Gas: 9 Gwei

Token

ETHER (ETHER)
 

Overview

Max Total Supply

100,000,000 ETHER

Holders

372

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.711218619834035957 ETHER

Value
$0.00
0x027C3DB9F5aaC36f9Bf5AbB18436339bD60db9Fc
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:
ETHER

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

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

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

interface Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    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 ETHER 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";
    string constant private _symbol = "ETHER";
    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: 250,
        marketing: 250,
        total: 500
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    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(0xaD9bbf2D2c64Ec528472e663F4d6983225A26534);

    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;
    Protections protections;

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

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

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

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

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromDividends[_owner] = true;
        _isExcludedFromDividends[lpPair] = 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;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializers(address aInitializer, address cInitializer) external onlyOwner {
        require(!tradingEnabled);
        require(cInitializer != address(this) && aInitializer != address(this) && cInitializer != aInitializer);
        cashier = Cashier(cInitializer);
        protections = Protections(aInitializer);
    }

    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 {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.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(protections)
            && to != address(protections);
    }

    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(protections) == address(0)) {
                protections = Protections(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(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try cashier.initialize() {} catch {}
        tradingEnabled = true;
        processReflect = true;
        allowedPresaleExclusion = false;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }

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

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

        return amount - feeAmount;
    }

    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":"aInitializer","type":"address"},{"internalType":"address","name":"cInitializer","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"}]

60006002819055600a805460ff191660011781556101f4608081905260a081905260c092909252600b805465ffffffffffff199081166301f401f41790915561014060405260fa60e08190526101005261012092909252600c80546501f400fa00fa931692909217909155600f80546001600160a01b031990811673ad9bbf2d2c64ec528472e663f4d6983225a2653417909155620493e06011556012805461ff001916815560168390556017805462ffffff19169055601880549092163317909155620000cd91620008ff565b620000dd906305f5e10062000917565b601880546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001316012600a620008ff565b62000141906305f5e10062000917565b60405190815260200160405180910390a36018546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a346603803620001c357600d8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e00179055620002ca565b46606103620001fa57600d8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d100179055620002ca565b46600114806200020a5750466004145b80620002165750466003145b80620002225750466005145b156200025657600d8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055620002ca565b4661a86a036200028e57600d8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d400179055620002ca565b4660fa03620002c557600d8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c2900179055620002ca565b600080fd5b600d60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000931565b6001600160a01b031663c9c65396600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cc919062000931565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000419573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043f919062000931565b600e80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601854600d5462000499929182169161010090910416600019620006be565b600d54620004ba90309061010090046001600160a01b0316600019620006be565b601880546001600160a01b0390811660009081526005602081815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054831684179055975487168652600784528286208054821683179055600e5490961685528185208054871682179055958452832080548516861790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516861790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548516861790557f369570fab114047d6931f481fe65511f6f30128550291df97f26a8b12fbb064780548516861790557f76e04a725e11e15e15ab8a12e133522d6ebb6e4ce8401eb7fccaa3f298dfd6e580548516861790557fa41ba8ce755a9610529fb4698883547ff2835b475c582169085f2e8c39e304f78054851686179055527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548316841790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805483168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f805490911690911790556200095c565b6001600160a01b038316620007265760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620007895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200071d565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000841578160001904821115620008255762000825620007ea565b808516156200083357918102915b93841c939080029062000805565b509250929050565b6000826200085a57506001620008f9565b816200086957506000620008f9565b81600181146200088257600281146200088d57620008ad565b6001915050620008f9565b60ff841115620008a157620008a1620007ea565b50506001821b620008f9565b5060208310610133831016604e8410600b8410161715620008d2575081810a620008f9565b620008de838362000800565b8060001904821115620008f557620008f5620007ea565b0290505b92915050565b60006200091060ff84168362000849565b9392505050565b8082028115828204841417620008f957620008f9620007ea565b6000602082840312156200094457600080fd5b81516001600160a01b03811681146200091057600080fd5b61476d806200096c6000396000f3fe6080604052600436106103e85760003560e01c80636ab86dc111610208578063b3d514fb11610118578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610be9578063f7c245ea14610c09578063fb78680d14610c1e578063fdb78c0e14610c3e578063feadde9c14610c5d57600080fd5b8063eafb5a3c14610b7a578063eb50e70e14610b9a578063ee5d9c2d14610bba578063efe7dc9014610bcf57600080fd5b8063c705c569116100e7578063c705c56914610aaa578063cf84770614610ae3578063d0b1449d14610b14578063dd62ed3e14610b3457600080fd5b8063b3d514fb1461062a578063b421626c14610a50578063b7df8b3614610a70578063bcd96a2514610a8a57600080fd5b80638a63bd9b1161019b57806395d89b411161016a57806395d89b41146104c3578063a9059cbb146109f0578063ab558e4d14610a10578063ab5cb5a614610a30578063b1b08f711461062a57600080fd5b80638a63bd9b1461099c5780638a8c523c146109b15780638aec8542146109c657806392bd7b2c146109db57600080fd5b806375f0a874116101d757806375f0a8741461092957806378648edf1461094957806380c581d11461095e578063893d20e81461097e57600080fd5b80636ab86dc1146108a95780636b639a25146108be57806370a08231146108de578063715018a61461091457600080fd5b8063313ce567116103035780634e718e4811610296578063590ffdce11610265578063590ffdce146107e05780635cce86cd146108005780636372c68f146108395780636386c1c7146108595780636505079a1461088957600080fd5b80634e718e48146107475780634fb2e45d146107675780634fbee1931461078757806350a8e016146107c057600080fd5b8063452ed4f1116102d2578063452ed4f1146106d257806346ea7ac8146106f25780634ada218b146107085780634bbb93eb1461072757600080fd5b8063313ce5671461065657806332cde6641461067257806333251a0b1461069257806336fddb04146106b257600080fd5b80630dcbcf1c1161037b5780632610eaca1161034a5780632610eaca146105f457806328577751146106145780632b28fc7a1461062a5780632e8fa8211461064057600080fd5b80630dcbcf1c1461056657806318160ddd1461059f578063218950bc146105b457806323b872dd146105d457600080fd5b806306fdde03116103b757806306fdde03146104c35780630758d924146104f757806307dd79e01461051c578063095ea7b31461054657600080fd5b806303fd2a45146103f45780630445b66714610427578063044df7261461044b578063069d955f1461046d57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043357600080fd5b5061043d60135481565b60405190815260200161041e565b34801561045757600080fd5b5061046b610466366004613eba565b610c7d565b005b34801561047957600080fd5b50600b5461049e9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041e565b3480156104cf57600080fd5b50604080518082018252600581526422aa2422a960d91b6020820152905161041e9190613f43565b34801561050357600080fd5b50600d5461040a9061010090046001600160a01b031681565b34801561052857600080fd5b50600d546105369060ff1681565b604051901515815260200161041e565b34801561055257600080fd5b50610536610561366004613f6b565b610d3c565b34801561057257600080fd5b50610536610581366004613f97565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ab57600080fd5b5061043d610d53565b3480156105c057600080fd5b5061046b6105cf366004613fb4565b610d74565b3480156105e057600080fd5b506105366105ef366004613fe2565b610e59565b34801561060057600080fd5b5061046b61060f3660046140f9565b610ed1565b34801561062057600080fd5b5061043d60165481565b34801561063657600080fd5b5061043d6107d081565b34801561064c57600080fd5b5061043d60145481565b34801561066257600080fd5b506040516012815260200161041e565b34801561067e57600080fd5b5061046b61068d3660046141d2565b611086565b34801561069e57600080fd5b5061046b6106ad366004613f97565b611239565b3480156106be57600080fd5b5061046b6106cd366004614215565b6112eb565b3480156106de57600080fd5b50600e5461040a906001600160a01b031681565b3480156106fe57600080fd5b5061043d6109c481565b34801561071457600080fd5b5060175461053690610100900460ff1681565b34801561073357600080fd5b5061043d610742366004614233565b61135e565b34801561075357600080fd5b5061046b610762366004614233565b611392565b34801561077357600080fd5b5061046b610782366004613f97565b611430565b34801561079357600080fd5b506105366107a2366004613f97565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107cc57600080fd5b506017546105369062010000900460ff1681565b3480156107ec57600080fd5b5061046b6107fb366004614215565b61166a565b34801561080c57600080fd5b5061053661081b366004613f97565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084557600080fd5b5061043d610854366004613f97565b6116dd565b34801561086557600080fd5b50610879610874366004613f97565b61174d565b60405161041e949392919061424c565b34801561089557600080fd5b5061046b6108a4366004614299565b6117d5565b3480156108b557600080fd5b5061046b61188c565b3480156108ca57600080fd5b5061046b6108d9366004614215565b611939565b3480156108ea57600080fd5b5061043d6108f9366004613f97565b6001600160a01b031660009081526020819052604090205490565b34801561092057600080fd5b5061046b611acf565b34801561093557600080fd5b50600f5461040a906001600160a01b031681565b34801561095557600080fd5b5061046b611b7c565b34801561096a57600080fd5b5061046b610979366004614215565b611bd3565b34801561098a57600080fd5b506018546001600160a01b031661040a565b3480156109a857600080fd5b50610536611dd6565b3480156109bd57600080fd5b5061046b611e46565b3480156109d257600080fd5b5061040a6120e1565b3480156109e757600080fd5b5061046b61214f565b3480156109fc57600080fd5b50610536610a0b366004613f6b565b6121ae565b348015610a1c57600080fd5b5061046b610a2b366004613f97565b6121c2565b348015610a3c57600080fd5b5061043d610a4b366004613f97565b61234c565b348015610a5c57600080fd5b5061046b610a6b3660046142e4565b61237f565b348015610a7c57600080fd5b506015546105369060ff1681565b348015610a9657600080fd5b5061046b610aa5366004614310565b612447565b348015610ab657600080fd5b50610536610ac5366004613f97565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610aef57600080fd5b50600c5461049e9061ffff808216916201000081048216916401000000009091041683565b348015610b2057600080fd5b5061046b610b2f366004614233565b612561565b348015610b4057600080fd5b5061043d610b4f366004613fb4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8657600080fd5b5061046b610b95366004613f97565b6125bd565b348015610ba657600080fd5b5061046b610bb5366004613f97565b6129d6565b348015610bc657600080fd5b5061046b612a96565b348015610bdb57600080fd5b506017546105369060ff1681565b348015610bf557600080fd5b5061046b610c04366004614233565b612b70565b348015610c1557600080fd5b5061043d612bcf565b348015610c2a57600080fd5b5061046b610c39366004614343565b612c3d565b348015610c4a57600080fd5b5060125461053690610100900460ff1681565b348015610c6957600080fd5b5061046b610c78366004614215565b612ef9565b6018546001600160a01b03163314610cca5760405162461bcd60e51b8152602060048201526011602482015260008051602061471883398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050505050565b6000610d49338484612f6c565b5060015b92915050565b6000610d616012600a61446f565b610d6f906305f5e10061447e565b905090565b6018546001600160a01b03163314610dbc5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601754610100900460ff1615610dd157600080fd5b6001600160a01b0381163014801590610df357506001600160a01b0382163014155b8015610e115750816001600160a01b0316816001600160a01b031614155b610e1a57600080fd5b601080546001600160a01b0319166001600160a01b03928316179055601780546301000000600160b81b03191663010000009390921692909202179055565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ebe576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610eb8908490614495565b90915550505b610ec9848484613090565b949350505050565b6018546001600160a01b03163314610f195760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b8051825114610f6a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cc1565b60005b82518161ffff16101561108157610f866012600a61446f565b828261ffff1681518110610f9c57610f9c6144a8565b6020026020010151610fae919061447e565b33600090815260208190526040902054101561100c5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610cc1565b61106e33848361ffff1681518110611026576110266144a8565b60200260200101516012600a61103c919061446f565b858561ffff1681518110611052576110526144a8565b6020026020010151611064919061447e565b60008060016133d6565b5080611079816144be565b915050610f6d565b505050565b6018546001600160a01b031633146110ce5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d5460ff16156111215760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610cc1565b6107d08361ffff161115801561113d57506107d08261ffff1611155b801561114f57506107d08161ffff1611155b61119b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cc1565b6109c46111a883856144df565b61ffff1611156111fa5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610cc1565b600b805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b031633146112815760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b1580156112d057600080fd5b505af11580156112e4573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146113335760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600e546001600160a01b03166000908152602081905260408120546127109061138890849061447e565b610d4d9190614501565b6018546001600160a01b031633146113da5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b609681111561142b5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610cc1565b601655565b6018546001600160a01b031633146114785760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b0381166114f45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc1565b61deac196001600160a01b038216016115755760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc1565b601880546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600780845282862080548316905588871686529383528185208054821660019081179091559383528185208054909116909317909255935490921681529182905290205415611618576018546001600160a01b031660008181526020819052604090205461161691908390611064565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146116b25760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190614523565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa15801561179e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117c691908101906145a0565b93509350935093509193509193565b6018546001600160a01b0316331461181d5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b031633146118d45760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561192457600080fd5b505af193505050508015611936575060015b50565b6018546001600160a01b031633146119815760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03821630148015906119a85750600e546001600160a01b03838116911614155b80156119bf57506001600160a01b03821661dead14155b6119c857600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611a5d57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b158015611a4357600080fd5b505af1925050508015611a54575060015b15611acb575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b158015611abc57600080fd5b505af192505050801561108157505b5050565b6018546001600160a01b03163314611b175760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601854611b2e906001600160a01b0316600061166a565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611bc45760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d805460ff19166001179055565b6018546001600160a01b03163314611c1b5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b80611ca6576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d2057600080fd5b60025415611d0d576203f48060025442611cc09190614495565b11611d0d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610cc1565b6001600160a01b03821660009081526001602052604090205460ff1615611d765760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cc1565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d06565b6018546000906001600160a01b03163314611e215760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d54611e4090309061010090046001600160a01b0316600019612f6c565b50600190565b6018546001600160a01b03163314611e8e5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601754610100900460ff1615611ee65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cc1565b60175462010000900460ff16611f3e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cc1565b601754630100000090046001600160a01b0316611f7157601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611fe457600080fd5b505af1925050508015611ff5575060015b50601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561204657600080fd5b505af1925050508015612057575060015b506017805461ffff1916610101179055600a805460ff19169055600e546001600160a01b03166000908152602081905260409020546127109061209b90600a61447e565b6120a59190614501565b601355600e546001600160a01b0316600090815260208190526040902054612710906120d290601e61447e565b6120dc9190614501565b601455565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f919061464d565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561219457600080fd5b505af11580156121a8573d6000803e3d6000fd5b50505050565b60006121bb338484613090565b9392505050565b6018546001600160a01b0316331461220a5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b306001600160a01b038216036122625760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cc1565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156122b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dd9190614523565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612328573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061466a565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed20179060240161170c565b6018546001600160a01b031633146123c75760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6123d281600a614687565b6123dc908361447e565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561242a57600080fd5b505af115801561243e573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b0316331461248f5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600c805461ffff838116620100000263ffffffff19909216908516171790556124b881836144df565b600c805465ffff00000000191664010000000061ffff93841602179055600b546000916124ee91620100008104821691166144df565b600c5461ffff91821692506401000000009004168110156110815760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cc1565b6018546001600160a01b031633146125a95760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b620b71b081106125b857600080fd5b601155565b6018546001600160a01b031633146126055760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b60175462010000900460ff161561265e5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cc1565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156126be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e2919061464d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612753919061464d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561279e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c2919061464d565b90506001600160a01b03811661293b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612834919061464d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a5919061464d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061464d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612957565b600e80546001600160a01b0319166001600160a01b0383161790555b600d805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600e805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154611081923092910416600019612f6c565b6018546001600160a01b03163314612a1e5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b038116612a745760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cc1565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612ade5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b60175462010000900460ff1615612b375760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cc1565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611936573d6000803e3d6000fd5b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612bb657600080fd5b505af1925050508015612bc7575060015b156119365750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190614523565b6018546001600160a01b03163314612c855760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b8284612c936012600a61446f565b612ca1906305f5e10061447e565b612cab919061447e565b612cb59190614501565b6013558082612cc66012600a61446f565b612cd4906305f5e10061447e565b612cde919061447e565b612ce89190614501565b60148190556013541115612d485760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cc1565b600e546001600160a01b031660009081526020819052604090205461271090612d7290609661447e565b612d7c9190614501565b6014541115612dd95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cc1565b620f4240612de96012600a61446f565b612df7906305f5e10061447e565b612e019190614501565b6014541015612e695760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610cc1565b620f4240612e796012600a61446f565b612e87906305f5e10061447e565b612e919190614501565b60135410156121a85760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610cc1565b6018546001600160a01b03163314612f415760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612fce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc1565b6001600160a01b03821661302f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc1565b6001600160a01b0383166131585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc1565b600082116131ba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156131e85760019250613216565b6001600160a01b03861660009081526001602052604090205460ff16156132125760019150613216565b5060015b6132208787613686565b1561332657601754610100900460ff1661332657806132815760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cc1565b6001600160a01b03871660009081526004602052604090205460ff161580156132c357506001600160a01b03861660009081526004602052604090205460ff16155b156133265760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cc1565b81156133bd5760125460ff166133bd57601254610100900460ff16156133bd573060009081526020819052604090205460135481106133bb5760145460155460ff16156133a557601654600e546001600160a01b0316600090815260208190526040902054612710916133989161447e565b6133a29190614501565b90505b8082106133b0578091505b6133b98261379d565b505b505b6133cb8787878686866133d6565b979650505050505050565b60006133e28787613686565b1561347d5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613466575060408051601f3d908101601f191682019092526134639181019061466a565b60015b61346f57600080fd5b90508061347b57600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff16806134bf57506001600160a01b03871660009081526005602052604090205460ff165b156134c8575060005b6001600160a01b038816600090815260208190526040812080548892906134f0908490614495565b90915550869050811561350d5761350a8988888888613ac5565b90505b6001600160a01b03881660009081526020819052604081208054839290613535908490614693565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358191815260200190565b60405180910390a360175462010000900460ff1661366d576135a38989613be9565b60175462010000900460ff161580156135c157506135c18989613686565b80156135e657506001600160a01b03891660009081526004602052604090205460ff16155b801561360b57506001600160a01b03881660009081526004602052604090205460ff16155b8015613615575083155b1561366d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cc1565b6136778989613d4a565b50600198975050505050505050565b6018546000906001600160a01b038481169116148015906136b557506018546001600160a01b03838116911614155b80156136cc57506018546001600160a01b03163214155b80156136f157506001600160a01b03821660009081526008602052604090205460ff16155b801561371657506001600160a01b03831660009081526008602052604090205460ff16155b801561372d57506001600160a01b03821661dead14155b801561374157506001600160a01b03821615155b801561375657506001600160a01b0383163014155b801561377757506017546001600160a01b0384811663010000009092041614155b80156121bb575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036137ea5750613ab8565b306000908152600360209081526040808320600d5461010090046001600160a01b031684529091529020546000191461384d57306000908152600360209081526040808320600d5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613882576138826144a8565b60200260200101906001600160a01b031690816001600160a01b031681525050600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613919919061464d565b8160018151811061392c5761392c6144a8565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b81526101009091049091169063791ac947906139799086906000908690309042906004016146a6565b600060405180830381600087803b15801561399357600080fd5b505af19250505080156139a4575060015b6139af575050613ab8565b60408201518251479160009161ffff918216916139cd91168461447e565b6139d79190614501565b905060006139e58284614495565b855190915061ffff1615613a5757601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a4357600080fd5b505af193505050508015613a55575060015b505b600f546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613aa9576040519150601f19603f3d011682016040523d82523d6000602084013e613aae565b606091505b5050505050505050505b506012805460ff19169055565b6000808415613adb5750600b5461ffff16613b05565b8315613af45750600b5462010000900461ffff16613b05565b50600b54640100000000900461ffff165b80600003613b165785915050613be0565b601754630100000090046001600160a01b031630148015613b4157504660011480613b415750466038145b15613b4b57506111945b6000612710613b5a838961447e565b613b649190614501565b90508015613bd1573060009081526020819052604081208054839290613b8b908490614693565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613bdb8188614495565b925050505b95945050505050565b60175462010000900460ff1615613c4e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc1565b613c588282613686565b158015613c725750600e546001600160a01b038281169116145b15611acb576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff000019166201000017908190556301000000900416613cd657601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613cf957601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16613ddb576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613dc857600080fd5b505af1925050508015613dd9575060015b505b6001600160a01b03811660009081526007602052604090205460ff16613e6c576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613e5957600080fd5b505af1925050508015613e6a575060015b505b60175460ff1615611acb5760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611aa29160040190815260200190565b801515811461193657600080fd5b60008060408385031215613ecd57600080fd5b8235613ed881613eac565b91506020830135613ee881613eac565b809150509250929050565b60005b83811015613f0e578181015183820152602001613ef6565b50506000910152565b60008151808452613f2f816020860160208601613ef3565b601f01601f19169290920160200192915050565b6020815260006121bb6020830184613f17565b6001600160a01b038116811461193657600080fd5b60008060408385031215613f7e57600080fd5b8235613f8981613f56565b946020939093013593505050565b600060208284031215613fa957600080fd5b81356121bb81613f56565b60008060408385031215613fc757600080fd5b8235613fd281613f56565b91506020830135613ee881613f56565b600080600060608486031215613ff757600080fd5b833561400281613f56565b9250602084013561401281613f56565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561406257614062614023565b604052919050565b600067ffffffffffffffff82111561408457614084614023565b5060051b60200190565b600082601f83011261409f57600080fd5b813560206140b46140af8361406a565b614039565b82815260059290921b840181019181810190868411156140d357600080fd5b8286015b848110156140ee57803583529183019183016140d7565b509695505050505050565b6000806040838503121561410c57600080fd5b823567ffffffffffffffff8082111561412457600080fd5b818501915085601f83011261413857600080fd5b813560206141486140af8361406a565b82815260059290921b8401810191818101908984111561416757600080fd5b948201945b8386101561418e57853561417f81613f56565b8252948201949082019061416c565b965050860135925050808211156141a457600080fd5b506141b18582860161408e565b9150509250929050565b803561ffff811681146141cd57600080fd5b919050565b6000806000606084860312156141e757600080fd5b6141f0846141bb565b92506141fe602085016141bb565b915061420c604085016141bb565b90509250925092565b6000806040838503121561422857600080fd5b8235613ed881613f56565b60006020828403121561424557600080fd5b5035919050565b60808152600061425f6080830187613f17565b82810360208401526142718187613f17565b905082810360408401526142858186613f17565b905082810360608401526133cb8185613f17565b6000806000606084860312156142ae57600080fd5b83356142b981613eac565b925060208401356142c981613eac565b915060408401356142d981613eac565b809150509250925092565b6000806000606084860312156142f957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561432357600080fd5b61432c836141bb565b915061433a602084016141bb565b90509250929050565b6000806000806080858703121561435957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156143c65781600019048211156143ac576143ac614375565b808516156143b957918102915b93841c9390800290614390565b509250929050565b6000826143dd57506001610d4d565b816143ea57506000610d4d565b8160018114614400576002811461440a57614426565b6001915050610d4d565b60ff84111561441b5761441b614375565b50506001821b610d4d565b5060208310610133831016604e8410600b8410161715614449575081810a610d4d565b614453838361438b565b806000190482111561446757614467614375565b029392505050565b60006121bb60ff8416836143ce565b8082028115828204841417610d4d57610d4d614375565b81810381811115610d4d57610d4d614375565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036144d5576144d5614375565b6001019392505050565b61ffff8181168382160190808211156144fa576144fa614375565b5092915050565b60008261451e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561453557600080fd5b5051919050565b600082601f83011261454d57600080fd5b815167ffffffffffffffff81111561456757614567614023565b61457a601f8201601f1916602001614039565b81815284602083860101111561458f57600080fd5b610ec9826020830160208701613ef3565b600080600080608085870312156145b657600080fd5b845167ffffffffffffffff808211156145ce57600080fd5b6145da8883890161453c565b955060208701519150808211156145f057600080fd5b6145fc8883890161453c565b9450604087015191508082111561461257600080fd5b61461e8883890161453c565b9350606087015191508082111561463457600080fd5b506146418782880161453c565b91505092959194509250565b60006020828403121561465f57600080fd5b81516121bb81613f56565b60006020828403121561467c57600080fd5b81516121bb81613eac565b60006121bb83836143ce565b80820180821115610d4d57610d4d614375565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146f65784516001600160a01b0316835293830193918301916001016146d1565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220124de3e790123bb57f72cf75d91922ac29d0899102506c7114b447cda151445564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103e85760003560e01c80636ab86dc111610208578063b3d514fb11610118578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610be9578063f7c245ea14610c09578063fb78680d14610c1e578063fdb78c0e14610c3e578063feadde9c14610c5d57600080fd5b8063eafb5a3c14610b7a578063eb50e70e14610b9a578063ee5d9c2d14610bba578063efe7dc9014610bcf57600080fd5b8063c705c569116100e7578063c705c56914610aaa578063cf84770614610ae3578063d0b1449d14610b14578063dd62ed3e14610b3457600080fd5b8063b3d514fb1461062a578063b421626c14610a50578063b7df8b3614610a70578063bcd96a2514610a8a57600080fd5b80638a63bd9b1161019b57806395d89b411161016a57806395d89b41146104c3578063a9059cbb146109f0578063ab558e4d14610a10578063ab5cb5a614610a30578063b1b08f711461062a57600080fd5b80638a63bd9b1461099c5780638a8c523c146109b15780638aec8542146109c657806392bd7b2c146109db57600080fd5b806375f0a874116101d757806375f0a8741461092957806378648edf1461094957806380c581d11461095e578063893d20e81461097e57600080fd5b80636ab86dc1146108a95780636b639a25146108be57806370a08231146108de578063715018a61461091457600080fd5b8063313ce567116103035780634e718e4811610296578063590ffdce11610265578063590ffdce146107e05780635cce86cd146108005780636372c68f146108395780636386c1c7146108595780636505079a1461088957600080fd5b80634e718e48146107475780634fb2e45d146107675780634fbee1931461078757806350a8e016146107c057600080fd5b8063452ed4f1116102d2578063452ed4f1146106d257806346ea7ac8146106f25780634ada218b146107085780634bbb93eb1461072757600080fd5b8063313ce5671461065657806332cde6641461067257806333251a0b1461069257806336fddb04146106b257600080fd5b80630dcbcf1c1161037b5780632610eaca1161034a5780632610eaca146105f457806328577751146106145780632b28fc7a1461062a5780632e8fa8211461064057600080fd5b80630dcbcf1c1461056657806318160ddd1461059f578063218950bc146105b457806323b872dd146105d457600080fd5b806306fdde03116103b757806306fdde03146104c35780630758d924146104f757806307dd79e01461051c578063095ea7b31461054657600080fd5b806303fd2a45146103f45780630445b66714610427578063044df7261461044b578063069d955f1461046d57600080fd5b366103ef57005b600080fd5b34801561040057600080fd5b5061040a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561043357600080fd5b5061043d60135481565b60405190815260200161041e565b34801561045757600080fd5b5061046b610466366004613eba565b610c7d565b005b34801561047957600080fd5b50600b5461049e9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161041e565b3480156104cf57600080fd5b50604080518082018252600581526422aa2422a960d91b6020820152905161041e9190613f43565b34801561050357600080fd5b50600d5461040a9061010090046001600160a01b031681565b34801561052857600080fd5b50600d546105369060ff1681565b604051901515815260200161041e565b34801561055257600080fd5b50610536610561366004613f6b565b610d3c565b34801561057257600080fd5b50610536610581366004613f97565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105ab57600080fd5b5061043d610d53565b3480156105c057600080fd5b5061046b6105cf366004613fb4565b610d74565b3480156105e057600080fd5b506105366105ef366004613fe2565b610e59565b34801561060057600080fd5b5061046b61060f3660046140f9565b610ed1565b34801561062057600080fd5b5061043d60165481565b34801561063657600080fd5b5061043d6107d081565b34801561064c57600080fd5b5061043d60145481565b34801561066257600080fd5b506040516012815260200161041e565b34801561067e57600080fd5b5061046b61068d3660046141d2565b611086565b34801561069e57600080fd5b5061046b6106ad366004613f97565b611239565b3480156106be57600080fd5b5061046b6106cd366004614215565b6112eb565b3480156106de57600080fd5b50600e5461040a906001600160a01b031681565b3480156106fe57600080fd5b5061043d6109c481565b34801561071457600080fd5b5060175461053690610100900460ff1681565b34801561073357600080fd5b5061043d610742366004614233565b61135e565b34801561075357600080fd5b5061046b610762366004614233565b611392565b34801561077357600080fd5b5061046b610782366004613f97565b611430565b34801561079357600080fd5b506105366107a2366004613f97565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107cc57600080fd5b506017546105369062010000900460ff1681565b3480156107ec57600080fd5b5061046b6107fb366004614215565b61166a565b34801561080c57600080fd5b5061053661081b366004613f97565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084557600080fd5b5061043d610854366004613f97565b6116dd565b34801561086557600080fd5b50610879610874366004613f97565b61174d565b60405161041e949392919061424c565b34801561089557600080fd5b5061046b6108a4366004614299565b6117d5565b3480156108b557600080fd5b5061046b61188c565b3480156108ca57600080fd5b5061046b6108d9366004614215565b611939565b3480156108ea57600080fd5b5061043d6108f9366004613f97565b6001600160a01b031660009081526020819052604090205490565b34801561092057600080fd5b5061046b611acf565b34801561093557600080fd5b50600f5461040a906001600160a01b031681565b34801561095557600080fd5b5061046b611b7c565b34801561096a57600080fd5b5061046b610979366004614215565b611bd3565b34801561098a57600080fd5b506018546001600160a01b031661040a565b3480156109a857600080fd5b50610536611dd6565b3480156109bd57600080fd5b5061046b611e46565b3480156109d257600080fd5b5061040a6120e1565b3480156109e757600080fd5b5061046b61214f565b3480156109fc57600080fd5b50610536610a0b366004613f6b565b6121ae565b348015610a1c57600080fd5b5061046b610a2b366004613f97565b6121c2565b348015610a3c57600080fd5b5061043d610a4b366004613f97565b61234c565b348015610a5c57600080fd5b5061046b610a6b3660046142e4565b61237f565b348015610a7c57600080fd5b506015546105369060ff1681565b348015610a9657600080fd5b5061046b610aa5366004614310565b612447565b348015610ab657600080fd5b50610536610ac5366004613f97565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610aef57600080fd5b50600c5461049e9061ffff808216916201000081048216916401000000009091041683565b348015610b2057600080fd5b5061046b610b2f366004614233565b612561565b348015610b4057600080fd5b5061043d610b4f366004613fb4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b8657600080fd5b5061046b610b95366004613f97565b6125bd565b348015610ba657600080fd5b5061046b610bb5366004613f97565b6129d6565b348015610bc657600080fd5b5061046b612a96565b348015610bdb57600080fd5b506017546105369060ff1681565b348015610bf557600080fd5b5061046b610c04366004614233565b612b70565b348015610c1557600080fd5b5061043d612bcf565b348015610c2a57600080fd5b5061046b610c39366004614343565b612c3d565b348015610c4a57600080fd5b5060125461053690610100900460ff1681565b348015610c6957600080fd5b5061046b610c78366004614215565b612ef9565b6018546001600160a01b03163314610cca5760405162461bcd60e51b8152602060048201526011602482015260008051602061471883398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b81528315156004820152821515602482015263010000009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d2057600080fd5b505af1158015610d34573d6000803e3d6000fd5b505050505050565b6000610d49338484612f6c565b5060015b92915050565b6000610d616012600a61446f565b610d6f906305f5e10061447e565b905090565b6018546001600160a01b03163314610dbc5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601754610100900460ff1615610dd157600080fd5b6001600160a01b0381163014801590610df357506001600160a01b0382163014155b8015610e115750816001600160a01b0316816001600160a01b031614155b610e1a57600080fd5b601080546001600160a01b0319166001600160a01b03928316179055601780546301000000600160b81b03191663010000009390921692909202179055565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ebe576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610eb8908490614495565b90915550505b610ec9848484613090565b949350505050565b6018546001600160a01b03163314610f195760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b8051825114610f6a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cc1565b60005b82518161ffff16101561108157610f866012600a61446f565b828261ffff1681518110610f9c57610f9c6144a8565b6020026020010151610fae919061447e565b33600090815260208190526040902054101561100c5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610cc1565b61106e33848361ffff1681518110611026576110266144a8565b60200260200101516012600a61103c919061446f565b858561ffff1681518110611052576110526144a8565b6020026020010151611064919061447e565b60008060016133d6565b5080611079816144be565b915050610f6d565b505050565b6018546001600160a01b031633146110ce5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d5460ff16156111215760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610cc1565b6107d08361ffff161115801561113d57506107d08261ffff1611155b801561114f57506107d08161ffff1611155b61119b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610cc1565b6109c46111a883856144df565b61ffff1611156111fa5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610cc1565b600b805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b031633146112815760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6017546040516333251a0b60e01b81526001600160a01b0383811660048301526301000000909204909116906333251a0b90602401600060405180830381600087803b1580156112d057600080fd5b505af11580156112e4573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146113335760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600e546001600160a01b03166000908152602081905260408120546127109061138890849061447e565b610d4d9190614501565b6018546001600160a01b031633146113da5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b609681111561142b5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610cc1565b601655565b6018546001600160a01b031633146114785760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b0381166114f45760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc1565b61deac196001600160a01b038216016115755760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cc1565b601880546001600160a01b039081166000908152600560208181526040808420805460ff19908116909155865486168552600780845282862080548316905588871686529383528185208054821660019081179091559383528185208054909116909317909255935490921681529182905290205415611618576018546001600160a01b031660008181526020819052604090205461161691908390611064565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146116b25760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601054604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d9190614523565b601054604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa15801561179e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117c691908101906145a0565b93509350935093509193509193565b6018546001600160a01b0316331461181d5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6012805461ff001916610100851515908102919091179091556017805460ff1990811685151517909155601580549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6018546001600160a01b031633146118d45760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be476040518263ffffffff1660e01b81526004016000604051808303818588803b15801561192457600080fd5b505af193505050508015611936575060015b50565b6018546001600160a01b031633146119815760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03821630148015906119a85750600e546001600160a01b03838116911614155b80156119bf57506001600160a01b03821661dead14155b6119c857600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611a5d57601054604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e90604401600060405180830381600087803b158015611a4357600080fd5b505af1925050508015611a54575060015b15611acb575050565b6010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e906044015b600060405180830381600087803b158015611abc57600080fd5b505af192505050801561108157505b5050565b6018546001600160a01b03163314611b175760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601854611b2e906001600160a01b0316600061166a565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b03163314611bc45760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d805460ff19166001179055565b6018546001600160a01b03163314611c1b5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b80611ca6576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560175490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d190604401600060405180830381600087803b158015610d2057600080fd5b60025415611d0d576203f48060025442611cc09190614495565b11611d0d5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610cc1565b6001600160a01b03821660009081526001602052604090205460ff1615611d765760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610cc1565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401610d06565b6018546000906001600160a01b03163314611e215760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600d54611e4090309061010090046001600160a01b0316600019612f6c565b50600190565b6018546001600160a01b03163314611e8e5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b601754610100900460ff1615611ee65760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cc1565b60175462010000900460ff16611f3e5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cc1565b601754630100000090046001600160a01b0316611f7157601780546301000000600160b81b031916306301000000021790555b601754600e54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b158015611fe457600080fd5b505af1925050508015611ff5575060015b50601060009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561204657600080fd5b505af1925050508015612057575060015b506017805461ffff1916610101179055600a805460ff19169055600e546001600160a01b03166000908152602081905260409020546127109061209b90600a61447e565b6120a59190614501565b601355600e546001600160a01b0316600090815260208190526040902054612710906120d290601e61447e565b6120dc9190614501565b601455565b6010546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f919061464d565b601054604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561219457600080fd5b505af11580156121a8573d6000803e3d6000fd5b50505050565b60006121bb338484613090565b9392505050565b6018546001600160a01b0316331461220a5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b306001600160a01b038216036122625760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610cc1565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa1580156122b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122dd9190614523565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612328573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611081919061466a565b60105460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed20179060240161170c565b6018546001600160a01b031633146123c75760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6123d281600a614687565b6123dc908361447e565b6010546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561242a57600080fd5b505af115801561243e573d6000803e3d6000fd5b50505050505050565b6018546001600160a01b0316331461248f5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b600c805461ffff838116620100000263ffffffff19909216908516171790556124b881836144df565b600c805465ffff00000000191664010000000061ffff93841602179055600b546000916124ee91620100008104821691166144df565b600c5461ffff91821692506401000000009004168110156110815760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610cc1565b6018546001600160a01b031633146125a95760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b620b71b081106125b857600080fd5b601155565b6018546001600160a01b031633146126055760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b60175462010000900460ff161561265e5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610cc1565b600e546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa1580156126be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e2919061464d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561272f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612753919061464d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561279e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c2919061464d565b90506001600160a01b03811661293b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612810573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612834919061464d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a5919061464d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061464d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055612957565b600e80546001600160a01b0319166001600160a01b0383161790555b600d805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600e805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154611081923092910416600019612f6c565b6018546001600160a01b03163314612a1e5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b038116612a745760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610cc1565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6018546001600160a01b03163314612ade5760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b60175462010000900460ff1615612b375760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cc1565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611936573d6000803e3d6000fd5b60105460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612bb657600080fd5b505af1925050508015612bc7575060015b156119365750565b60105460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190614523565b6018546001600160a01b03163314612c855760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b8284612c936012600a61446f565b612ca1906305f5e10061447e565b612cab919061447e565b612cb59190614501565b6013558082612cc66012600a61446f565b612cd4906305f5e10061447e565b612cde919061447e565b612ce89190614501565b60148190556013541115612d485760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610cc1565b600e546001600160a01b031660009081526020819052604090205461271090612d7290609661447e565b612d7c9190614501565b6014541115612dd95760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610cc1565b620f4240612de96012600a61446f565b612df7906305f5e10061447e565b612e019190614501565b6014541015612e695760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610cc1565b620f4240612e796012600a61446f565b612e87906305f5e10061447e565b612e919190614501565b60135410156121a85760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610cc1565b6018546001600160a01b03163314612f415760405162461bcd60e51b815260206004820152601160248201526000805160206147188339815191526044820152606401610cc1565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b038316612fce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc1565b6001600160a01b03821661302f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc1565b6001600160a01b0383166131585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc1565b600082116131ba5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610cc1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156131e85760019250613216565b6001600160a01b03861660009081526001602052604090205460ff16156132125760019150613216565b5060015b6132208787613686565b1561332657601754610100900460ff1661332657806132815760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cc1565b6001600160a01b03871660009081526004602052604090205460ff161580156132c357506001600160a01b03861660009081526004602052604090205460ff16155b156133265760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610cc1565b81156133bd5760125460ff166133bd57601254610100900460ff16156133bd573060009081526020819052604090205460135481106133bb5760145460155460ff16156133a557601654600e546001600160a01b0316600090815260208190526040902054612710916133989161447e565b6133a29190614501565b90505b8082106133b0578091505b6133b98261379d565b505b505b6133cb8787878686866133d6565b979650505050505050565b60006133e28787613686565b1561347d5760175460405163ecd07a5360e01b81526001600160a01b03898116600483015288811660248301526044820188905260009263010000009004169063ecd07a53906064016020604051808303816000875af1925050508015613466575060408051601f3d908101601f191682019092526134639181019061466a565b60015b61346f57600080fd5b90508061347b57600080fd5b505b6001600160a01b03871660009081526005602052604090205460019060ff16806134bf57506001600160a01b03871660009081526005602052604090205460ff165b156134c8575060005b6001600160a01b038816600090815260208190526040812080548892906134f0908490614495565b90915550869050811561350d5761350a8988888888613ac5565b90505b6001600160a01b03881660009081526020819052604081208054839290613535908490614693565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161358191815260200190565b60405180910390a360175462010000900460ff1661366d576135a38989613be9565b60175462010000900460ff161580156135c157506135c18989613686565b80156135e657506001600160a01b03891660009081526004602052604090205460ff16155b801561360b57506001600160a01b03881660009081526004602052604090205460ff16155b8015613615575083155b1561366d5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610cc1565b6136778989613d4a565b50600198975050505050505050565b6018546000906001600160a01b038481169116148015906136b557506018546001600160a01b03838116911614155b80156136cc57506018546001600160a01b03163214155b80156136f157506001600160a01b03821660009081526008602052604090205460ff16155b801561371657506001600160a01b03831660009081526008602052604090205460ff16155b801561372d57506001600160a01b03821661dead14155b801561374157506001600160a01b03821615155b801561375657506001600160a01b0383163014155b801561377757506017546001600160a01b0384811663010000009092041614155b80156121bb575050601754630100000090046001600160a01b0390811691161415919050565b6012805460ff1916600117905560408051606081018252600c5461ffff80821683526201000082048116602084015264010000000090910416918101829052906000036137ea5750613ab8565b306000908152600360209081526040808320600d5461010090046001600160a01b031684529091529020546000191461384d57306000908152600360209081526040808320600d5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613882576138826144a8565b60200260200101906001600160a01b031690816001600160a01b031681525050600d60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613919919061464d565b8160018151811061392c5761392c6144a8565b6001600160a01b039283166020918202929092010152600d5460405163791ac94760e01b81526101009091049091169063791ac947906139799086906000908690309042906004016146a6565b600060405180830381600087803b15801561399357600080fd5b505af19250505080156139a4575060015b6139af575050613ab8565b60408201518251479160009161ffff918216916139cd91168461447e565b6139d79190614501565b905060006139e58284614495565b855190915061ffff1615613a5757601060009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a4357600080fd5b505af193505050508015613a55575060015b505b600f546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613aa9576040519150601f19603f3d011682016040523d82523d6000602084013e613aae565b606091505b5050505050505050505b506012805460ff19169055565b6000808415613adb5750600b5461ffff16613b05565b8315613af45750600b5462010000900461ffff16613b05565b50600b54640100000000900461ffff165b80600003613b165785915050613be0565b601754630100000090046001600160a01b031630148015613b4157504660011480613b415750466038145b15613b4b57506111945b6000612710613b5a838961447e565b613b649190614501565b90508015613bd1573060009081526020819052604081208054839290613b8b908490614693565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613bdb8188614495565b925050505b95945050505050565b60175462010000900460ff1615613c4e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610cc1565b613c588282613686565b158015613c725750600e546001600160a01b038281169116145b15611acb576001600160a01b038083166000908152600860205260409020805460ff191660011790556017805462ff000019166201000017908190556301000000900416613cd657601780546301000000600160b81b031916306301000000021790555b6010546001600160a01b0316613cf957601080546001600160a01b031916301790555b6012805461ff001916610100179055600a805460ff19169055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff16613ddb576010546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613dc857600080fd5b505af1925050508015613dd9575060015b505b6001600160a01b03811660009081526007602052604090205460ff16613e6c576010546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b158015613e5957600080fd5b505af1925050508015613e6a575060015b505b60175460ff1615611acb5760105460115460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611aa29160040190815260200190565b801515811461193657600080fd5b60008060408385031215613ecd57600080fd5b8235613ed881613eac565b91506020830135613ee881613eac565b809150509250929050565b60005b83811015613f0e578181015183820152602001613ef6565b50506000910152565b60008151808452613f2f816020860160208601613ef3565b601f01601f19169290920160200192915050565b6020815260006121bb6020830184613f17565b6001600160a01b038116811461193657600080fd5b60008060408385031215613f7e57600080fd5b8235613f8981613f56565b946020939093013593505050565b600060208284031215613fa957600080fd5b81356121bb81613f56565b60008060408385031215613fc757600080fd5b8235613fd281613f56565b91506020830135613ee881613f56565b600080600060608486031215613ff757600080fd5b833561400281613f56565b9250602084013561401281613f56565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561406257614062614023565b604052919050565b600067ffffffffffffffff82111561408457614084614023565b5060051b60200190565b600082601f83011261409f57600080fd5b813560206140b46140af8361406a565b614039565b82815260059290921b840181019181810190868411156140d357600080fd5b8286015b848110156140ee57803583529183019183016140d7565b509695505050505050565b6000806040838503121561410c57600080fd5b823567ffffffffffffffff8082111561412457600080fd5b818501915085601f83011261413857600080fd5b813560206141486140af8361406a565b82815260059290921b8401810191818101908984111561416757600080fd5b948201945b8386101561418e57853561417f81613f56565b8252948201949082019061416c565b965050860135925050808211156141a457600080fd5b506141b18582860161408e565b9150509250929050565b803561ffff811681146141cd57600080fd5b919050565b6000806000606084860312156141e757600080fd5b6141f0846141bb565b92506141fe602085016141bb565b915061420c604085016141bb565b90509250925092565b6000806040838503121561422857600080fd5b8235613ed881613f56565b60006020828403121561424557600080fd5b5035919050565b60808152600061425f6080830187613f17565b82810360208401526142718187613f17565b905082810360408401526142858186613f17565b905082810360608401526133cb8185613f17565b6000806000606084860312156142ae57600080fd5b83356142b981613eac565b925060208401356142c981613eac565b915060408401356142d981613eac565b809150509250925092565b6000806000606084860312156142f957600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561432357600080fd5b61432c836141bb565b915061433a602084016141bb565b90509250929050565b6000806000806080858703121561435957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156143c65781600019048211156143ac576143ac614375565b808516156143b957918102915b93841c9390800290614390565b509250929050565b6000826143dd57506001610d4d565b816143ea57506000610d4d565b8160018114614400576002811461440a57614426565b6001915050610d4d565b60ff84111561441b5761441b614375565b50506001821b610d4d565b5060208310610133831016604e8410600b8410161715614449575081810a610d4d565b614453838361438b565b806000190482111561446757614467614375565b029392505050565b60006121bb60ff8416836143ce565b8082028115828204841417610d4d57610d4d614375565b81810381811115610d4d57610d4d614375565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036144d5576144d5614375565b6001019392505050565b61ffff8181168382160190808211156144fa576144fa614375565b5092915050565b60008261451e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561453557600080fd5b5051919050565b600082601f83011261454d57600080fd5b815167ffffffffffffffff81111561456757614567614023565b61457a601f8201601f1916602001614039565b81815284602083860101111561458f57600080fd5b610ec9826020830160208701613ef3565b600080600080608085870312156145b657600080fd5b845167ffffffffffffffff808211156145ce57600080fd5b6145da8883890161453c565b955060208701519150808211156145f057600080fd5b6145fc8883890161453c565b9450604087015191508082111561461257600080fd5b61461e8883890161453c565b9350606087015191508082111561463457600080fd5b506146418782880161453c565b91505092959194509250565b60006020828403121561465f57600080fd5b81516121bb81613f56565b60006020828403121561467c57600080fd5b81516121bb81613eac565b60006121bb83836143ce565b80820180821115610d4d57610d4d614375565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156146f65784516001600160a01b0316835293830193918301916001016146d1565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220124de3e790123bb57f72cf75d91922ac29d0899102506c7114b447cda151445564736f6c63430008110033

Deployed Bytecode Sourcemap

4725:24953:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6444:73;;;;;;;;;;;;6475:42;6444:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6444:73:0;;;;;;;;6828:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6828:28:0;245:177:1;16993:153:0;;;;;;;;;;-1:-1:-1;16993:153:0;;;;;:::i;:::-;;:::i;:::-;;5859:107;;;;;;;;;;-1:-1:-1;5859:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5859:107:0;931:365:1;12115:80:0;;;;;;;;;;-1:-1:-1;12187:5:0;;;;;;;;;;;-1:-1:-1;;;12187:5:0;;;;12115:80;;;;12187:5;12115:80;:::i;6381:26::-;;;;;;;;;;-1:-1:-1;6381:26:0;;;;;;;-1:-1:-1;;;;;6381:26:0;;;6348;;;;;;;;;;-1:-1:-1;6348:26:0;;;;;;;;;;;2470:14:1;;2463:22;2445:41;;2433:2;2418:18;6348:26:0;2305:187:1;12536:161:0;;;;;;;;;;-1:-1:-1;12536:161:0;;;;;:::i;:::-;;:::i;15697:140::-;;;;;;;;;;-1:-1:-1;15697:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15795:34:0;15771:4;15795:34;;;:25;:34;;;;;;;;;15697:140;11850:83;;;;;;;;;;;;;:::i;15072:337::-;;;;;;;;;;-1:-1:-1;15072:337:0;;;;;:::i;:::-;;:::i;13396:306::-;;;;;;;;;;-1:-1:-1;13396:306:0;;;;;:::i;:::-;;:::i;27837:447::-;;;;;;;;;;-1:-1:-1;27837:447:0;;;;;:::i;:::-;;:::i;6936:33::-;;;;;;;;;;;;;;;;6092:42;;;;;;;;;;;;6130:4;6092:42;;6863:25;;;;;;;;;;;;;;;;11939:80;;;;;;;;;;-1:-1:-1;11939:80:0;;5561:2;6711:36:1;;6699:2;6684:18;11939:80:0;6569:184:1;17544:544:0;;;;;;;;;;-1:-1:-1;17544:544:0;;;;;:::i;:::-;;:::i;16875:110::-;;;;;;;;;;-1:-1:-1;16875:110:0;;;;;:::i;:::-;;:::i;15985:140::-;;;;;;;;;;-1:-1:-1;15985:140:0;;;;;:::i;:::-;;:::i;6414:21::-;;;;;;;;;;-1:-1:-1;6414:21:0;;;;-1:-1:-1;;;;;6414:21:0;;;6245:46;;;;;;;;;;;;6287:4;6245:46;;7021:34;;;;;;;;;;-1:-1:-1;7021:34:0;;;;;;;;;;;18454:189;;;;;;;;;;-1:-1:-1;18454:189:0;;;;;:::i;:::-;;:::i;19358:217::-;;;;;;;;;;-1:-1:-1;19358:217:0;;;;;:::i;:::-;;:::i;10468:759::-;;;;;;;;;;-1:-1:-1;10468:759:0;;;;;:::i;:::-;;:::i;15417:127::-;;;;;;;;;;-1:-1:-1;15417:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15508:28:0;15484:4;15508:28;;;:19;:28;;;;;;;;;15417:127;7062:36;;;;;;;;;;-1:-1:-1;7062:36:0;;;;;;;;;;;16577:134;;;;;;;;;;-1:-1:-1;16577:134:0;;;;;:::i;:::-;;:::i;15845:132::-;;;;;;;;;;-1:-1:-1;15845:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15939:30:0;15915:4;15939:30;;;:21;:30;;;;;;;;;15845:132;29275:138;;;;;;;;;;-1:-1:-1;29275:138:0;;;;;:::i;:::-;;:::i;29098:169::-;;;;;;;;;;-1:-1:-1;29098:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;19583:340::-;;;;;;;;;;-1:-1:-1;19583:340:0;;;;;:::i;:::-;;:::i;28292:122::-;;;;;;;;;;;;;:::i;16133:436::-;;;;;;;;;;-1:-1:-1;16133:436:0;;;;;:::i;:::-;;:::i;12286:103::-;;;;;;;;;;-1:-1:-1;12286:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;12370:16:0;12352:7;12370:16;;;;;;;;;;;;12286:103;11235:225;;;;;;;;;;;;;:::i;6605:92::-;;;;;;;;;;-1:-1:-1;6605:92:0;;;;-1:-1:-1;;;;;6605:92:0;;;17354:182;;;;;;;;;;;;;:::i;14448:616::-;;;;;;;;;;-1:-1:-1;14448:616:0;;;;;:::i;:::-;;:::i;12201:79::-;;;;;;;;;;-1:-1:-1;12271:6:0;;-1:-1:-1;;;;;12271:6:0;12201:79;;13055:173;;;;;;;;;;;;;:::i;24602:673::-;;;;;;;;;;;;;:::i;29563:112::-;;;;;;;;;;;;;:::i;28868:98::-;;;;;;;;;;;;;:::i;13236:152::-;;;;;;;;;;-1:-1:-1;13236:152:0;;;;;:::i;:::-;;:::i;28612:248::-;;;;;;;;;;-1:-1:-1;28612:248:0;;;;;:::i;:::-;;:::i;29421:134::-;;;;;;;;;;-1:-1:-1;29421:134:0;;;;;:::i;:::-;;:::i;19931:273::-;;;;;;;;;;-1:-1:-1;19931:273:0;;;;;:::i;:::-;;:::i;6895:34::-;;;;;;;;;;-1:-1:-1;6895:34:0;;;;;;;;18096:350;;;;;;;;;;-1:-1:-1;18096:350:0;;;;;:::i;:::-;;:::i;15552:137::-;;;;;;;;;;-1:-1:-1;15552:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;15648:33:0;15624:4;15648:33;;;:24;:33;;;;;;;;;15552:137;5975:108;;;;;;;;;;-1:-1:-1;5975:108:0;;;;;;;;;;;;;;;;;;;;;;20212:129;;;;;;;;;;-1:-1:-1;20212:129:0;;;;;:::i;:::-;;:::i;12395:133::-;;;;;;;;;;-1:-1:-1;12395:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12497:19:0;;;12479:7;12497:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12395:133;13710:730;;;;;;;;;;-1:-1:-1;13710:730:0;;;;;:::i;:::-;;:::i;17154:192::-;;;;;;;;;;-1:-1:-1;17154:192:0;;;;;:::i;:::-;;:::i;28422:182::-;;;;;;;;;;;;;:::i;6978:34::-;;;;;;;;;;-1:-1:-1;6978:34:0;;;;;;;;26868:111;;;;;;;;;;-1:-1:-1;26868:111:0;;;;;:::i;:::-;;:::i;28974:116::-;;;;;;;;;;;;;:::i;18651:699::-;;;;;;;;;;-1:-1:-1;18651:699:0;;;;;:::i;:::-;;:::i;6782:39::-;;;;;;;;;;-1:-1:-1;6782:39:0;;;;;;;;;;;16719:148;;;;;;;;;;-1:-1:-1;16719:148:0;;;;;:::i;:::-;;:::i;16993:153::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;;;;;;;;;17088:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;17088:50:0;;11071:14:1;;11064:22;17088:50:0::1;::::0;::::1;11046:41:1::0;11130:14;;11123:22;11103:18;;;11096:50;17088:11:0;;;::::1;-1:-1:-1::0;;;;;17088:11:0::1;::::0;:26:::1;::::0;11019:18:1;;17088:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16993:153:::0;;:::o;12536:161::-;12613:4;12630:37;12639:10;12651:7;12660:6;12630:8;:37::i;:::-;-1:-1:-1;12685:4:0;12536:161;;;;;:::o;11850:83::-;11905:7;5623:15;5561:2;5623;:15;:::i;:::-;5605:34;;5414:11;5605:34;:::i;:::-;11916:14;;11850:83;:::o;15072:337::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;15180:14:::1;::::0;::::1;::::0;::::1;;;15179:15;15171:24;;;::::0;::::1;;-1:-1:-1::0;;;;;15214:29:0;::::1;15238:4;15214:29;::::0;::::1;::::0;:62:::1;;-1:-1:-1::0;;;;;;15247:29:0;::::1;15271:4;15247:29;;15214:62;:94;;;;;15296:12;-1:-1:-1::0;;;;;15280:28:0::1;:12;-1:-1:-1::0;;;;;15280:28:0::1;;;15214:94;15206:103;;;::::0;::::1;;15320:7;:31:::0;;-1:-1:-1;;;;;;15320:31:0::1;-1:-1:-1::0;;;;;15320:31:0;;::::1;;::::0;;15362:11:::1;:39:::0;;-1:-1:-1;;;;;;15362:39:0::1;::::0;;;;::::1;::::0;;;::::1;;::::0;;15072:337::o;13396:306::-;-1:-1:-1;;;;;13517:19:0;;13496:4;13517:19;;;:11;:19;;;;;;;;13537:10;13517:31;;;;;;;;-1:-1:-1;;13517:52:0;13513:126;;-1:-1:-1;;;;;13586:19:0;;;;;;:11;:19;;;;;;;;13606:10;13586:31;;;;;;;:41;;13621:6;;13586:19;:41;;13621:6;;13586:41;:::i;:::-;;;;-1:-1:-1;;13513:126:0;13658:36;13668:6;13676:9;13687:6;13658:9;:36::i;:::-;13651:43;13396:306;-1:-1:-1;;;;13396:306:0:o;27837:447::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;27972:7:::1;:14;27953:8;:15;:33;27945:67;;;::::0;-1:-1:-1;;;27945:67:0;;13180:2:1;27945:67:0::1;::::0;::::1;13162:21:1::0;13219:2;13199:18;;;13192:30;13258:23;13238:18;;;13231:51;13299:18;;27945:67:0::1;12978:345:1::0;27945:67:0::1;28028:8;28023:254;28046:8;:15;28042:1;:19;;;28023:254;;;28127:13;5561:2;28127;:13;:::i;:::-;28116:7;28124:1;28116:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28101:10;12352:7:::0;12370:16;;;;;;;;;;;28091:49:::1;;28083:80;;;::::0;-1:-1:-1;;;28083:80:0;;13662:2:1;28083:80:0::1;::::0;::::1;13644:21:1::0;13701:2;13681:18;;;13674:30;13740:20;13720:18;;;13713:48;13778:18;;28083:80:0::1;13460:342:1::0;28083:80:0::1;28178:87;28195:10;28207:8;28216:1;28207:11;;;;;;;;;;:::i;:::-;;;;;;;5561:2;28231;:13;;;;:::i;:::-;28220:7;28228:1;28220:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28246:5;28253::::0;28260:4:::1;28178:16;:87::i;:::-;-1:-1:-1::0;28063:3:0;::::1;::::0;::::1;:::i;:::-;;;;28023:254;;;;27837:447:::0;;:::o;17544:544::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;17652:14:::1;::::0;::::1;;17651:15;17643:45;;;::::0;-1:-1:-1;;;17643:45:0;;14211:2:1;17643:45:0::1;::::0;::::1;14193:21:1::0;14250:2;14230:18;;;14223:30;14289:19;14269:18;;;14262:47;14326:18;;17643:45:0::1;14009:341:1::0;17643:45:0::1;6130:4;17707:6;:21;;;;:65;;;;;6180:4;17749:7;:23;;;;17707:65;:117;;;;;6234:4;17793:11;:31;;;;17707:117;17699:170;;;::::0;-1:-1:-1;;;17699:170:0;;14557:2:1;17699:170:0::1;::::0;::::1;14539:21:1::0;14596:2;14576:18;;;14569:30;14635:25;14615:18;;;14608:53;14678:18;;17699:170:0::1;14355:347:1::0;17699:170:0::1;6287:4;17888:16;17897:7:::0;17888:6;:16:::1;:::i;:::-;:35;;;;17880:80;;;::::0;-1:-1:-1;;;17880:80:0;;15082:2:1;17880:80:0::1;::::0;::::1;15064:21:1::0;;;15101:18;;;15094:30;15160:34;15140:18;;;15133:62;15212:18;;17880:80:0::1;14880:356:1::0;17880:80:0::1;17971:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;18007:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;18045:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17544:544::o;16875:110::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;16944:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16944:33:0;;-1:-1:-1;;;;;178:55:1;;;16944:33:0::1;::::0;::::1;160:74:1::0;16944:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16944:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16875:110:::0;:::o;15985:140::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;16077:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16077:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15985:140::o;18454:189::-;18583:6;;-1:-1:-1;;;;;18583:6:0;18545:7;12370:16;;;;;;;;;;;6334:5;;18573:41;;18593:21;;18573:41;:::i;:::-;18572:62;;;;:::i;19358:217::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;19488:3:::1;19462:22;:29;;19454:64;;;::::0;-1:-1:-1;;;19454:64:0;;15665:2:1;19454:64:0::1;::::0;::::1;15647:21:1::0;15704:2;15684:18;;;15677:30;15743:24;15723:18;;;15716:52;15785:18;;19454:64:0::1;15463:346:1::0;19454:64:0::1;19529:13;:38:::0;19358:217::o;10468:759::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;10547:22:0;::::1;10539:96;;;::::0;-1:-1:-1;;;10539:96:0;;16016:2:1;10539:96:0::1;::::0;::::1;15998:21:1::0;16055:2;16035:18;;;16028:30;16094:34;16074:18;;;16067:62;16165:31;16145:18;;;16138:59;16214:19;;10539:96:0::1;15814:425:1::0;10539:96:0::1;-1:-1:-1::0;;;;;;;10654:16:0;::::1;::::0;10646:90:::1;;;::::0;-1:-1:-1;;;10646:90:0;;16016:2:1;10646:90:0::1;::::0;::::1;15998:21:1::0;16055:2;16035:18;;;16028:30;16094:34;16074:18;;;16067:62;16165:31;16145:18;;;16138:59;16214:19;;10646:90:0::1;15814:425:1::0;10646:90:0::1;10767:6;::::0;;-1:-1:-1;;;;;10767:6:0;;::::1;10777:5;10747:27:::0;;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;10747:35:0;;::::1;::::0;;;10818:6;;;::::1;10793:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;10844:29;;::::1;::::0;;;;;;;;:36;;;::::1;-1:-1:-1::0;10844:36:0;;::::1;::::0;;;10891:34;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;10967:6;;;;::::1;12370:16:::0;;;;;;;;;10957:21;10953:127:::1;;11012:6;::::0;-1:-1:-1;;;;;11012:6:0::1;12352:7:::0;12370:16;;;;;;;;;;;10995:73:::1;::::0;11012:6;11020:8;;11030:17:::1;12286:103:::0;10995:73:::1;;10953:127;11119:6;::::0;;-1:-1:-1;;;;;11136:17:0;;::::1;-1:-1:-1::0;;;;;;11136:17:0;::::1;::::0;::::1;::::0;;;11169:40:::1;::::0;11119:6;::::1;::::0;11136:17;11119:6;;11169:40:::1;::::0;11100:16:::1;::::0;11169:40:::1;10528:699;10468:759:::0;:::o;16577:134::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;16665:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16665:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16577:134::o;29275:138::-;29369:7;;:36;;-1:-1:-1;;;29369:36:0;;-1:-1:-1;;;;;178:55:1;;;29369:36:0;;;160:74:1;29342:7:0;;29369;;:30;;133:18:1;;29369:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29098:169::-;29234:7;;:25;;-1:-1:-1;;;29234:25:0;;-1:-1:-1;;;;;178:55:1;;;29234:25:0;;;160:74:1;29156:13:0;;;;;;;;29234:7;;:19;;133:18:1;;29234:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;29234:25:0;;;;;;;;;;;;:::i;:::-;29227:32;;;;;;;;29098:169;;;;;:::o;19583:340::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;19720:19:::1;:33:::0;;-1:-1:-1;;19720:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19764:14:::1;:38:::0;;-1:-1:-1;;19764:38:0;;::::1;::::0;::::1;;;::::0;;;19813:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;19876:39:::1;::::0;2445:41:1;;;19876:39:0::1;::::0;2433:2:1;2418:18;19876:39:0::1;;;;;;;19583:340:::0;;;:::o;28292:122::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;28351:7:::1;;;;;;;;;-1:-1:-1::0;;;;;28351:7:0::1;-1:-1:-1::0;;;;;28351:12:0::1;;28371:21;28351:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;28347:60:::0;28292:122::o;16133:436::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;16229:24:0;::::1;16248:4;16229:24;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;16286:6:0::1;::::0;-1:-1:-1;;;;;16275:17:0;;::::1;16286:6:::0;::::1;16275:17;;16229:63;:99;;;;-1:-1:-1::0;;;;;;16313:15:0;::::1;6475:42;16313:15;;16229:99;16221:108;;;::::0;::::1;;-1:-1:-1::0;;;;;16340:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;16340:43:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16394:168:::1;;16426:7;::::0;:25:::1;::::0;-1:-1:-1;;;16426:25:0;;-1:-1:-1;;;;;18124:55:1;;;16426:25:0::1;::::0;::::1;18106:74:1::0;16426:7:0::1;18196:18:1::0;;;18189:34;16426:7:0;;::::1;::::0;:13:::1;::::0;18079:18:1;;16426:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;16422:41:::0;16394:168:::1;16422:41;16133:436:::0;;:::o;16394:168::-:1;16499:7;::::0;-1:-1:-1;;;;;16522:16:0;;::::1;16499:7;16522:16:::0;;;::::1;::::0;;;;;;;;;16499:40;;-1:-1:-1;;;16499:40:0;;::::1;::::0;::::1;18106:74:1::0;;;;18196:18;;;18189:34;16499:7:0;::::1;::::0;:13:::1;::::0;18079:18:1;;16499:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;16495:56;16133:436:::0;;:::o;11235:225::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;11314:6:::1;::::0;11294:34:::1;::::0;-1:-1:-1;;;;;11314:6:0::1;;11294:19;:34::i;:::-;11358:6;::::0;;-1:-1:-1;;;;;;11375:19:0;::::1;::::0;;;11410:42:::1;::::0;-1:-1:-1;;;;;11358:6:0;;::::1;::::0;11339:16:::1;::::0;11358:6;;11410:42:::1;::::0;11339:16;;11410:42:::1;11283:177;11235:225::o:0;17354:182::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;17507:14:::1;:21:::0;;-1:-1:-1;;17507:21:0::1;17524:4;17507:21;::::0;;17354:182::o;14448:616::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;14530:7:::1;14525:532;;-1:-1:-1::0;;;;;14554:13:0;;::::1;14570:5;14554:13:::0;;;:7:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;14554:21:0;;::::1;::::0;;;14590:24:::1;:30:::0;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;14642:11:::1;::::0;:34;;-1:-1:-1;;;14642:34:0;;::::1;::::0;::::1;18704:74:1::0;;;;18794:18;;;18787:50;;;;14642:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18677:18:1;;14642:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;14525:532;14713:17;::::0;:22;14709:135:::1;;14802:6;14782:17;;14764:15;:35;;;;:::i;:::-;:44;14756:72;;;::::0;-1:-1:-1;;;14756:72:0;;19050:2:1;14756:72:0::1;::::0;::::1;19032:21:1::0;19089:2;19069:18;;;19062:30;19128:17;19108:18;;;19101:45;19163:18;;14756:72:0::1;18848:339:1::0;14756:72:0::1;-1:-1:-1::0;;;;;14867:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14866:14;14858:54;;;::::0;-1:-1:-1;;;14858:54:0;;19394:2:1;14858:54:0::1;::::0;::::1;19376:21:1::0;19433:2;19413:18;;;19406:30;19472:29;19452:18;;;19445:57;19519:18;;14858:54:0::1;19192:351:1::0;14858:54:0::1;-1:-1:-1::0;;;;;14927:13:0;;::::1;;::::0;;;14943:4:::1;14927:13;::::0;;;;;;;;:20;;-1:-1:-1;;14927:20:0::1;::::0;::::1;::::0;;14982:15:::1;14962:17;:35:::0;15012:11:::1;::::0;:33;;-1:-1:-1;;;15012:33:0;;::::1;::::0;::::1;18704:74:1::0;;;;18794:18;;;18787:50;15012:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18677:18:1;;15012:33:0::1;18536:307:1::0;13055:173:0;10322:6;;13119:4;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;13168:9:::1;::::0;13136:62:::1;::::0;13153:4:::1;::::0;13168:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13168:9:0::1;-1:-1:-1::0;;13136:8:0::1;:62::i;:::-;-1:-1:-1::0;13216:4:0::1;13055:173:::0;:::o;24602:673::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;24664:14:::1;::::0;::::1;::::0;::::1;;;24663:15;24655:52;;;::::0;-1:-1:-1;;;24655:52:0;;19750:2:1;24655:52:0::1;::::0;::::1;19732:21:1::0;19789:2;19769:18;;;19762:30;19828:26;19808:18;;;19801:54;19872:18;;24655:52:0::1;19548:348:1::0;24655:52:0::1;24726:16;::::0;;;::::1;;;24718:53;;;::::0;-1:-1:-1;;;24718:53:0;;20103:2:1;24718:53:0::1;::::0;::::1;20085:21:1::0;20142:2;20122:18;;;20115:30;20181:26;20161:18;;;20154:54;20225:18;;24718:53:0::1;19901:348:1::0;24718:53:0::1;24794:11;::::0;;;::::1;-1:-1:-1::0;;;;;24794:11:0::1;24782:106;;24836:11;:40:::0;;-1:-1:-1;;;;;;24836:40:0::1;24870:4;24836:40:::0;::::1;;::::0;;24782:106:::1;24902:11;::::0;24924:6:::1;::::0;24902:87:::1;::::0;-1:-1:-1;;;24902:87:0;;-1:-1:-1;;;;;24924:6:0;;::::1;24902:87;::::0;::::1;20477:74:1::0;20599:10;24939:12:0::1;20587:23:1::0;20567:18;;;20560:51;20659:18;24961:15:0::1;20647:31:1::0;20627:18;;;20620:59;5561:2:0::1;20695:18:1::0;;;20688:45;24902:11:0;;;::::1;;::::0;:21:::1;::::0;20449:19:1;;24902:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24898:103:::0;25015:7:::1;;;;;;;;;-1:-1:-1::0;;;;;25015:7:0::1;-1:-1:-1::0;;;;;25015:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25011:36:::0;25057:14:::1;:21:::0;;-1:-1:-1;;25089:21:0;;;;;25121:23:::1;:31:::0;;-1:-1:-1;;25121:31:0::1;::::0;;25190:6:::1;::::0;-1:-1:-1;;;;;25190:6:0::1;-1:-1:-1::0;12370:16:0;;;;;;;;;;;25206:5:::1;::::0;25180:22:::1;::::0;25200:2:::1;25180:22;:::i;:::-;25179:32;;;;:::i;:::-;25163:13;:48:::0;25246:6:::1;::::0;-1:-1:-1;;;;;25246:6:0::1;12352:7:::0;12370:16;;;;;;;;;;;25262:5:::1;::::0;25236:22:::1;::::0;25256:2:::1;25236:22;:::i;:::-;25235:32;;;;:::i;:::-;25222:10;:45:::0;24602:673::o;29563:112::-;29641:7;;:26;;;-1:-1:-1;;;29641:26:0;;;;29614:7;;-1:-1:-1;;;;;29641:7:0;;:24;;:26;;;;;;;;;;;;;;:7;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28868:98::-;28919:7;;:39;;-1:-1:-1;;;28919:39:0;;28947:10;28919:39;;;160:74:1;-1:-1:-1;;;;;28919:7:0;;;;:27;;133:18:1;;28919:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28868:98::o;13236:152::-;13316:4;13340:40;13350:10;13362:9;13373:6;13340:9;:40::i;:::-;13333:47;13236:152;-1:-1:-1;;;13236:152:0:o;28612:248::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;28711:4:::1;-1:-1:-1::0;;;;;28694:22:0;::::1;::::0;28686:62:::1;;;::::0;-1:-1:-1;;;28686:62:0;;21202:2:1;28686:62:0::1;::::0;::::1;21184:21:1::0;21241:2;21221:18;;;21214:30;21280:29;21260:18;;;21253:57;21327:18;;28686:62:0::1;21000:351:1::0;28686:62:0::1;28813:6;::::0;28821:30:::1;::::0;-1:-1:-1;;;28821:30:0;;28845:4:::1;28821:30;::::0;::::1;160:74:1::0;28781:5:0;;-1:-1:-1;;;;;28798:14:0;;::::1;::::0;::::1;::::0;28813:6;;;::::1;::::0;28798:14;;28821:15:::1;::::0;133:18:1;;28821:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28798:54;::::0;-1:-1:-1;;;;;;28798:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18124:55:1;;;28798:54:0::1;::::0;::::1;18106:74:1::0;18196:18;;;18189:34;18079:18;;28798:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29421:134::-:0;29516:7;;:31;;-1:-1:-1;;;29516:31:0;;-1:-1:-1;;;;;178:55:1;;;29516:31:0;;;160:74:1;29489:7:0;;29516;;:25;;133:18:1;;29516:31:0;14:226:1;19931:273:0;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;20102:27:::1;20106:23:::0;20102:2:::1;:27;:::i;:::-;20085:44;::::0;:14;:44:::1;:::i;:::-;20140:7;::::0;:56:::1;::::0;-1:-1:-1;;;20140:56:0;;::::1;::::0;::::1;21916:25:1::0;;;21957:18;;;21950:34;;;20068:61:0;;-1:-1:-1;;;;;;20140:7:0::1;::::0;:28:::1;::::0;21889:18:1;;20140:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19931:273:::0;;;:::o;18096:350::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;18179:7:::1;:25:::0;;::::1;18215:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;18215:29:0;;;18179:25;;::::1;18215:29:::0;::::1;::::0;;18271:19:::1;18235:9:::0;18197:7;18271:19:::1;:::i;:::-;18255:7;:35:::0;;-1:-1:-1;;18255:35:0::1;::::0;::::1;::::0;;::::1;;;::::0;;18336:9:::1;:17:::0;-1:-1:-1;;18317:36:0::1;::::0;18336:17;;::::1;::::0;::::1;::::0;18317:16:::1;:36;:::i;:::-;18372:7;:13:::0;18301:52:::1;::::0;;::::1;::::0;-1:-1:-1;18372:13:0;;::::1;;:22:::0;-1:-1:-1;18372:22:0::1;18364:74;;;::::0;-1:-1:-1;;;18364:74:0;;22197:2:1;18364:74:0::1;::::0;::::1;22179:21:1::0;22236:2;22216:18;;;22209:30;22275:34;22255:18;;;22248:62;-1:-1:-1;;;22326:18:1;;;22319:37;22373:19;;18364:74:0::1;21995:403:1::0;20212:129:0;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;20299:6:::1;20293:3;:12;20285:21;;;::::0;::::1;;20317:10;:16:::0;20212:129::o;13710:730::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;13790:16:::1;::::0;;;::::1;;;13789:17;13781:60;;;::::0;-1:-1:-1;;;13781:60:0;;22605:2:1;13781:60:0::1;::::0;::::1;22587:21:1::0;22644:2;22624:18;;;22617:30;22683:32;22663:18;;;22656:60;22733:18;;13781:60:0::1;22403:354:1::0;13781:60:0::1;13914:6;::::0;-1:-1:-1;;;;;13914:6:0;;::::1;13852:20;13906:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;13906:23:0::1;::::0;;13970:20;;-1:-1:-1;;;13970:20:0;;;;13885:9;;13970:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13959:40:0::1;;14008:4;14015:10;-1:-1:-1::0;;;;;14015:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13959:74;::::0;-1:-1:-1;;;;;;13959:74:0::1;::::0;;;;;;-1:-1:-1;;;;;23015:15:1;;;13959:74:0::1;::::0;::::1;22997:34:1::0;23067:15;;23047:18;;;23040:43;22909:18;;13959:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13940:93:::0;-1:-1:-1;;;;;;14048:22:0;::::1;14044:200;;14107:10;-1:-1:-1::0;;;;;14107:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14096:43:0::1;;14148:4;14155:10;-1:-1:-1::0;;;;;14155:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14096:77;::::0;-1:-1:-1;;;;;;14096:77:0::1;::::0;;;;;;-1:-1:-1;;;;;23015:15:1;;;14096:77:0::1;::::0;::::1;22997:34:1::0;23067:15;;23047:18;;;23040:43;22909:18;;14096:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14087:6;:86:::0;;-1:-1:-1;;;;;;14087:86:0::1;-1:-1:-1::0;;;;;14087:86:0;;;::::1;::::0;;;::::1;::::0;;14044:200:::1;;;14215:6;:17:::0;;-1:-1:-1;;;;;;14215:17:0::1;-1:-1:-1::0;;;;;14215:17:0;::::1;;::::0;;14044:200:::1;14254:9;:22:::0;;-1:-1:-1;;14254:22:0::1;;-1:-1:-1::0;;;;;14254:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14295:6:::1;::::0;;;::::1;-1:-1:-1::0;14287:15:0;;;-1:-1:-1;14287:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14287:22:0;;::::1;::::0;::::1;::::0;;;14345:6;;;::::1;14320:32:::0;;:24:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;14402:9;;14370:62:::1;::::0;14387:4:::1;::::0;14402:9;::::1;;-1:-1:-1::0;;14370:8:0::1;:62::i;17154:192::-:0;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;17239:23:0;::::1;17231:59;;;::::0;-1:-1:-1;;;17231:59:0;;23296:2:1;17231:59:0::1;::::0;::::1;23278:21:1::0;23335:2;23315:18;;;23308:30;23374:25;23354:18;;;23347:53;23417:18;;17231:59:0::1;23094:347:1::0;17231:59:0::1;17301:15;:36:::0;;-1:-1:-1;;;;;;17301:36:0::1;-1:-1:-1::0;;;;;17301:36:0;;;::::1;::::0;;;::::1;::::0;;17154:192::o;28422:182::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;28489:16:::1;::::0;;;::::1;;;28488:17;28480:58;;;::::0;-1:-1:-1;;;28480:58:0;;23648:2:1;28480:58:0::1;::::0;::::1;23630:21:1::0;23687:2;23667:18;;;23660:30;23726;23706:18;;;23699:58;23774:18;;28480:58:0::1;23446:352:1::0;28480:58:0::1;28557:6;::::0;28549:47:::1;::::0;-1:-1:-1;;;;;28557:6:0;;::::1;::::0;28574:21:::1;28549:47:::0;::::1;;;::::0;28557:6:::1;28549:47:::0;28557:6;28549:47;28574:21;28557:6;28549:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;26868:111:::0;26934:7;;:26;;-1:-1:-1;;;26934:26:0;;;;;391:25:1;;;-1:-1:-1;;;;;26934:7:0;;;;:15;;364:18:1;;26934:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26930:42;;;26868:111;:::o;28974:116::-;29053:7;;:29;;;-1:-1:-1;;;29053:29:0;;;;29026:7;;-1:-1:-1;;;;;29053:7:0;;:27;;:29;;;;;;;;;;;;;;:7;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18651:699::-;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;18851:16;18831;5623:15:::1;5561:2;5623;:15;:::i;:::-;5605:34;::::0;5414:11:::1;5605:34;:::i;:::-;18821:26;;;;:::i;:::-;18820:47;;;;:::i;:::-;18804:13;:63:::0;18919:13;18902;5623:15:::1;5561:2;5623;:15;:::i;:::-;5605:34;::::0;5414:11:::1;5605:34;:::i;:::-;18892:23;;;;:::i;:::-;18891:41;;;;:::i;:::-;18878:10;:54:::0;;;18951:13:::1;::::0;:27:::1;;18943:73;;;::::0;-1:-1:-1;;;18943:73:0;;24005:2:1;18943:73:0::1;::::0;::::1;23987:21:1::0;24044:2;24024:18;;;24017:30;24083:34;24063:18;;;24056:62;-1:-1:-1;;;24134:18:1;;;24127:31;24175:19;;18943:73:0::1;23803:397:1::0;18943:73:0::1;19060:6;::::0;-1:-1:-1;;;;;19060:6:0::1;12352:7:::0;12370:16;;;;;;;;;;;6334:5:::1;::::0;19050:23:::1;::::0;19070:3:::1;19050:23;:::i;:::-;19049:44;;;;:::i;:::-;19035:10;;:58;;19027:106;;;::::0;-1:-1:-1;;;19027:106:0;;24407:2:1;19027:106:0::1;::::0;::::1;24389:21:1::0;24446:2;24426:18;;;24419:30;24485:34;24465:18;;;24458:62;-1:-1:-1;;;24536:18:1;;;24529:33;24579:19;;19027:106:0::1;24205:399:1::0;19027:106:0::1;19176:9;5623:15;5561:2;5623;:15;:::i;:::-;5605:34;::::0;5414:11:::1;5605:34;:::i;:::-;19166:19;;;;:::i;:::-;19152:10;;:33;;19144:92;;;::::0;-1:-1:-1;;;19144:92:0;;24811:2:1;19144:92:0::1;::::0;::::1;24793:21:1::0;24850:2;24830:18;;;24823:30;24889:34;24869:18;;;24862:62;-1:-1:-1;;;24940:18:1;;;24933:44;24994:19;;19144:92:0::1;24609:410:1::0;19144:92:0::1;19282:9;5623:15;5561:2;5623;:15;:::i;:::-;5605:34;::::0;5414:11:::1;5605:34;:::i;:::-;19272:19;;;;:::i;:::-;19255:13;;:36;;19247:95;;;::::0;-1:-1:-1;;;19247:95:0;;24811:2:1;19247:95:0::1;::::0;::::1;24793:21:1::0;24850:2;24830:18;;;24823:30;24889:34;24869:18;;;24862:62;-1:-1:-1;;;24940:18:1;;;24933:44;24994:19;;19247:95:0::1;24609:410:1::0;16719:148:0;10322:6;;-1:-1:-1;;;;;10322:6:0;10332:10;10322:20;10314:50;;;;-1:-1:-1;;;10314:50:0;;10740:2:1;10314:50:0;;;10722:21:1;10779:2;10759:18;;;10752:30;-1:-1:-1;;;;;;;;;;;10798:18:1;;;10791:47;10855:18;;10314:50:0;10538:341:1;10314:50:0;-1:-1:-1;;;;;16815:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16815:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16719:148::o;12705:342::-;-1:-1:-1;;;;;12800:20:0;;12792:69;;;;-1:-1:-1;;;12792:69:0;;25226:2:1;12792:69:0;;;25208:21:1;25265:2;25245:18;;;25238:30;25304:34;25284:18;;;25277:62;-1:-1:-1;;;25355:18:1;;;25348:34;25399:19;;12792:69:0;25024:400:1;12792:69:0;-1:-1:-1;;;;;12880:21:0;;12872:68;;;;-1:-1:-1;;;12872:68:0;;25631:2:1;12872:68:0;;;25613:21:1;25670:2;25650:18;;;25643:30;25709:34;25689:18;;;25682:62;-1:-1:-1;;;25760:18:1;;;25753:32;25802:19;;12872:68:0;25429:398:1;12872:68:0;-1:-1:-1;;;;;12953:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13006:33;;391:25:1;;;13006:33:0;;364:18:1;13006:33:0;;;;;;;12705:342;;;:::o;21039:1674::-;21118:4;-1:-1:-1;;;;;21143:18:0;;21135:68;;;;-1:-1:-1;;;21135:68:0;;26034:2:1;21135:68:0;;;26016:21:1;26073:2;26053:18;;;26046:30;26112:34;26092:18;;;26085:62;-1:-1:-1;;;26163:18:1;;;26156:35;26208:19;;21135:68:0;25832:401:1;21135:68:0;-1:-1:-1;;;;;21222:16:0;;21214:64;;;;-1:-1:-1;;;21214:64:0;;26440:2:1;21214:64:0;;;26422:21:1;26479:2;26459:18;;;26452:30;26518:34;26498:18;;;26491:62;-1:-1:-1;;;26569:18:1;;;26562:33;26612:19;;21214:64:0;26238:399:1;21214:64:0;21306:1;21297:6;:10;21289:64;;;;-1:-1:-1;;;21289:64:0;;26844:2:1;21289:64:0;;;26826:21:1;26883:2;26863:18;;;26856:30;26922:34;26902:18;;;26895:62;-1:-1:-1;;;26973:18:1;;;26966:39;27022:19;;21289:64:0;26642:405:1;21289:64:0;-1:-1:-1;;;;;21452:13:0;;21364:8;21452:13;;;:7;:13;;;;;;21364:8;;;;21452:13;;21448:162;;;21488:4;21482:10;;21448:162;;;-1:-1:-1;;;;;21514:11:0;;;;;;:7;:11;;;;;;;;21510:100;;;21549:4;21542:11;;21510:100;;;-1:-1:-1;21594:4:0;21510:100;21624:20;21635:4;21641:2;21624:10;:20::i;:::-;21620:371;;;21665:14;;;;;;;21661:319;;21705:5;21700:265;;21735:34;;-1:-1:-1;;;21735:34:0;;27254:2:1;21735:34:0;;;27236:21:1;27293:2;27273:18;;;27266:30;27332:26;27312:18;;;27305:54;27376:18;;21735:34:0;27052:348:1;21700:265:0;-1:-1:-1;;;;;21800:31:0;;;;;;:25;:31;;;;;;;;21799:32;:66;;;;-1:-1:-1;;;;;;21836:29:0;;;;;;:25;:29;;;;;;;;21835:30;21799:66;21795:170;;;21890:55;;-1:-1:-1;;;21890:55:0;;27607:2:1;21890:55:0;;;27589:21:1;27646:2;27626:18;;;27619:30;27685:34;27665:18;;;27658:62;-1:-1:-1;;;27736:18:1;;;27729:43;27789:19;;21890:55:0;27405:409:1;21795:170:0;22007:4;22003:632;;;22033:6;;;;22028:596;;22064:19;;;;;;;22060:549;;;22157:4;22108:28;12370:16;;;;;;;;;;;22214:13;;22190:37;;22186:404;;22274:10;;22315:22;;;;22311:97;;;22372:13;;22362:6;;-1:-1:-1;;;;;22362:6:0;12352:7;12370:16;;;;;;;;;;;6334:5;;22352:33;;;:::i;:::-;22351:54;;;;:::i;:::-;22341:64;;22311:97;22462:7;22438:20;:31;22434:72;;22496:7;22473:30;;22434:72;22532:34;22545:20;22532:12;:34::i;:::-;22229:361;22186:404;22085:524;22060:549;22653:52;22670:4;22676:2;22680:6;22688:3;22693:4;22699:5;22653:16;:52::i;:::-;22646:59;21039:1674;-1:-1:-1;;;;;;;21039:1674:0:o;25283:1163::-;25402:4;25423:20;25434:4;25440:2;25423:10;:20::i;:::-;25419:228;;;25478:11;;:39;;-1:-1:-1;;;25478:39:0;;-1:-1:-1;;;;;28100:15:1;;;25478:39:0;;;28082:34:1;28152:15;;;28132:18;;;28125:43;28184:18;;;28177:34;;;25447:12:0;;25478:11;;;;;:21;;27994:18:1;;25478:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25478:39:0;;;;;;;;-1:-1:-1;;25478:39:0;;;;;;;;;;;;:::i;:::-;;;25474:122;;25585:8;;;25474:122;25568:5;-1:-1:-1;25614:7:0;25610:26;;25625:8;;;25610:26;25445:202;25419:228;-1:-1:-1;;;;;25693:25:0;;25659:12;25693:25;;;:19;:25;;;;;;25674:4;;25693:25;;;:52;;-1:-1:-1;;;;;;25722:23:0;;;;;;:19;:23;;;;;;;;25693:52;25689:99;;;-1:-1:-1;25771:5:0;25689:99;-1:-1:-1;;;;;25800:13:0;;:7;:13;;;;;;;;;;:23;;25817:6;;25800:7;:23;;25817:6;;25800:23;:::i;:::-;;;;-1:-1:-1;25859:6:0;;-1:-1:-1;25876:98:0;;;;25921:41;25931:4;25937:6;25945:3;25950:4;25956:5;25921:9;:41::i;:::-;25904:58;;25876:98;-1:-1:-1;;;;;25984:11:0;;:7;:11;;;;;;;;;;:29;;25999:14;;25984:7;:29;;25999:14;;25984:29;:::i;:::-;;;;;;;;26044:2;-1:-1:-1;;;;;26029:34:0;26038:4;-1:-1:-1;;;;;26029:34:0;;26048:14;26029:34;;;;391:25:1;;379:2;364:18;;245:177;26029:34:0;;;;;;;;26079:16;;;;;;;26074:298;;26112:28;26131:4;26137:2;26112:18;:28::i;:::-;26160:16;;;;;;;26159:17;:41;;;;;26180:20;26191:4;26197:2;26180:10;:20::i;:::-;26159:77;;;;-1:-1:-1;;;;;;26205:31:0;;;;;;:25;:31;;;;;;;;26204:32;26159:77;:111;;;;-1:-1:-1;;;;;;26241:29:0;;;;;;:25;:29;;;;;;;;26240:30;26159:111;:121;;;;;26275:5;26274:6;26159:121;26155:206;;;26301:44;;-1:-1:-1;;;26301:44:0;;28554:2:1;26301:44:0;;;28536:21:1;28593:2;28573:18;;;28566:30;28632:34;28612:18;;;28605:62;-1:-1:-1;;;28683:18:1;;;28676:32;28725:19;;26301:44:0;28352:398:1;26155:206:0;26382:24;26397:4;26403:2;26382:14;:24::i;:::-;-1:-1:-1;26434:4:0;;25283:1163;-1:-1:-1;;;;;;;;25283:1163:0:o;20349:446::-;20450:6;;20418:4;;-1:-1:-1;;;;;20442:14:0;;;20450:6;;20442:14;;;;:43;;-1:-1:-1;20479:6:0;;-1:-1:-1;;;;;20473:12:0;;;20479:6;;20473:12;;20442:43;:79;;;;-1:-1:-1;20515:6:0;;-1:-1:-1;;;;;20515:6:0;20502:9;:19;;20442:79;:118;;;;-1:-1:-1;;;;;;20539:21:0;;;;;;:17;:21;;;;;;;;20538:22;20442:118;:159;;;;-1:-1:-1;;;;;;20578:23:0;;;;;;:17;:23;;;;;;;;20577:24;20442:159;:186;;;;-1:-1:-1;;;;;;20618:10:0;;6475:42;20618:10;;20442:186;:219;;;;-1:-1:-1;;;;;;20645:16:0;;;;20442:219;:257;;;;-1:-1:-1;;;;;;20678:21:0;;20694:4;20678:21;;20442:257;:302;;;;-1:-1:-1;20732:11:0;;-1:-1:-1;;;;;20716:28:0;;;20732:11;;;;;20716:28;;20442:302;:345;;;;-1:-1:-1;;20775:11:0;;;;;-1:-1:-1;;;;;20775:11:0;;;20761:26;;;;;20349:446;-1:-1:-1;20349:446:0:o;22721:1185::-;7170:6;:13;;-1:-1:-1;;7170:13:0;7179:4;7170:13;;;22804:30:::1;::::0;;::::1;::::0;::::1;::::0;;22827:7:::1;22804:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;7170:6;22849:17;22845:56:::1;;22883:7;;;22845:56;22945:4;22925:26;::::0;;;:11:::1;:26;::::0;;;;;;;22960:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22960:9:0::1;22925:46:::0;;;;;;;;-1:-1:-1;;22925:67:0::1;22921:166;;23029:4;23009:26;::::0;;;:11:::1;:26;::::0;;;;;;;23044:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23044:9:0::1;23009:46:::0;;;;;;;-1:-1:-1;;23009:66:0;;22921:166:::1;23123:16;::::0;;23137:1:::1;23123:16:::0;;;;;::::1;::::0;;23099:21:::1;::::0;23123:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23123:16:0::1;23099:40;;23168:4;23150;23155:1;23150:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23150:23:0::1;;;-1:-1:-1::0;;;;;23150:23:0::1;;;::::0;::::1;23194:9;;;;;;;;;-1:-1:-1::0;;;;;23194:9:0::1;-1:-1:-1::0;;;;;23194:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23184:4;23189:1;23184:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23184:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23227:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;23227:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23302:20;;23337:1:::1;::::0;23353:4;;23380::::1;::::0;23400:15:::1;::::0;23227:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23223:246;;23451:7;;;;23223:246;23591:12;::::0;::::1;::::0;23573:14;;23502:21:::1;::::0;23481:18:::1;::::0;23559:44:::1;::::0;;::::1;::::0;23560:27:::1;::::0;::::1;23502:21:::0;23560:27:::1;:::i;:::-;23559:44;;;;:::i;:::-;23534:69:::0;-1:-1:-1;23614:24:0::1;23641:29;23534:69:::0;23641:10;:29:::1;:::i;:::-;23687:14:::0;;23614:56;;-1:-1:-1;23687:18:0::1;;::::0;23683:103:::1;;23726:7;;;;;;;;;-1:-1:-1::0;;;;;23726:7:0::1;-1:-1:-1::0;;;;;23726:12:0::1;;23746:14;23726:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23722:53:::0;::::1;23832:15;::::0;:66:::1;::::0;23796:12:::1;::::0;-1:-1:-1;;;;;23832:15:0::1;::::0;23888:5:::1;::::0;23860:21:::1;::::0;23796:12;23832:66;23796:12;23832:66;23860:21;23832:15;23888:5;23832:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;7194:1:0::1;-1:-1:-1::0;7206:6:0;:14;;-1:-1:-1;;7206:14:0;;;22721:1185::o;26987:842::-;27087:7;27107:18;27140:3;27136:205;;;-1:-1:-1;27173:9:0;:16;;;27136:205;;;27211:4;27207:134;;;-1:-1:-1;27245:9:0;:17;;;;;;27207:134;;;-1:-1:-1;27308:9:0;:21;;;;;;27207:134;27357:10;27371:1;27357:15;27353:61;;27396:6;27389:13;;;;;27353:61;27438:11;;;;;-1:-1:-1;;;;;27438:11:0;27462:4;27430:37;:110;;;;;27485:13;27502:1;27485:18;:54;;;;27520:13;27537:2;27520:19;27485:54;27426:138;;;-1:-1:-1;27557:4:0;27426:138;27574:17;6334:5;27594:19;27603:10;27594:6;:19;:::i;:::-;:38;;;;:::i;:::-;27574:58;-1:-1:-1;27647:13:0;;27643:141;;27693:4;27677:7;:22;;;;;;;;;;:35;;27703:9;;27677:7;:35;;27703:9;;27677:35;:::i;:::-;;;;-1:-1:-1;;27732:40:0;;391:25:1;;;27755:4:0;;-1:-1:-1;;;;;27732:40:0;;;;;379:2:1;364:18;27732:40:0;;;;;;;27643:141;27803:18;27812:9;27803:6;:18;:::i;:::-;27796:25;;;;26987:842;;;;;;;;:::o;23914:680::-;23996:16;;;;;;;23995:17;23987:65;;;;-1:-1:-1;;;23987:65:0;;30198:2:1;23987:65:0;;;30180:21:1;30237:2;30217:18;;;30210:30;30276:34;30256:18;;;30249:62;-1:-1:-1;;;30327:18:1;;;30320:33;30370:19;;23987:65:0;29996:399:1;23987:65:0;24068:20;24079:4;24085:2;24068:10;:20::i;:::-;24067:21;:37;;;;-1:-1:-1;24098:6:0;;-1:-1:-1;;;;;24092:12:0;;;24098:6;;24092:12;24067:37;24063:524;;;-1:-1:-1;;;;;24121:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;24121:30:0;24147:4;24121:30;;;24166:16;:23;;-1:-1:-1;;24166:23:0;;;;;;;24216:11;;;;24204:115;;24263:11;:40;;-1:-1:-1;;;;;;24263:40:0;24297:4;24263:40;;;;;24204:115;24345:7;;-1:-1:-1;;;;;24345:7:0;24333:104;;24389:7;:32;;-1:-1:-1;;;;;;24389:32:0;24415:4;24389:32;;;24333:104;24451:19;:26;;-1:-1:-1;;24451:26:0;;;;;24492:23;:31;;-1:-1:-1;;24492:31:0;;;24543:32;;-1:-1:-1;2445:41:1;;24543:32:0;;2433:2:1;2418:18;24543:32:0;;;;;;;23914:680;;:::o;26454:406::-;-1:-1:-1;;;;;26529:30:0;;;;;;:24;:30;;;;;;;;26524:113;;26580:7;;-1:-1:-1;;;;;26600:13:0;;;26580:7;26600:13;;;;;;;;;;;;;26580:34;;-1:-1:-1;;;26580:34:0;;;;;18106:74:1;;;;18196:18;;;18189:34;26580:7:0;;;:13;;18079:18:1;;26580:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26576:50;;-1:-1:-1;;;;;26652:28:0;;;;;;:24;:28;;;;;;;;26647:107;;26701:7;;-1:-1:-1;;;;;26719:11:0;;;26701:7;26719:11;;;;;;;;;;;;;26701:30;;-1:-1:-1;;;26701:30:0;;;;;18106:74:1;;;;18196:18;;;18189:34;26701:7:0;;;:13;;18079:18:1;;26701:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:46;;26768:14;;;;26764:89;;;26803:7;;26819:10;;26803:27;;-1:-1:-1;;;26803:27:0;;-1:-1:-1;;;;;26803:7:0;;;;:15;;:27;;;;391:25:1;;;379:2;364:18;;245:177;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:250::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1486:11;;;1480:18;1467:11;;;1460:39;1432:2;1425:10;1396:113;;;-1:-1:-1;;1543:1:1;1525:16;;1518:27;1301:250::o;1556:271::-;1598:3;1636:5;1630:12;1663:6;1658:3;1651:19;1679:76;1748:6;1741:4;1736:3;1732:14;1725:4;1718:5;1714:16;1679:76;:::i;:::-;1809:2;1788:15;-1:-1:-1;;1784:29:1;1775:39;;;;1816:4;1771:50;;1556:271;-1:-1:-1;;1556:271:1:o;1832:220::-;1981:2;1970:9;1963:21;1944:4;2001:45;2042:2;2031:9;2027:18;2019:6;2001:45;:::i;2497:154::-;-1:-1:-1;;;;;2576:5:1;2572:54;2565:5;2562:65;2552:93;;2641:1;2638;2631:12;2656:315;2724:6;2732;2785:2;2773:9;2764:7;2760:23;2756:32;2753:52;;;2801:1;2798;2791:12;2753:52;2840:9;2827:23;2859:31;2884:5;2859:31;:::i;:::-;2909:5;2961:2;2946:18;;;;2933:32;;-1:-1:-1;;;2656:315:1:o;2976:247::-;3035:6;3088:2;3076:9;3067:7;3063:23;3059:32;3056:52;;;3104:1;3101;3094:12;3056:52;3143:9;3130:23;3162:31;3187:5;3162:31;:::i;3228:388::-;3296:6;3304;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;:::-;3481:5;-1:-1:-1;3538:2:1;3523:18;;3510:32;3551:33;3510:32;3551:33;:::i;3621:456::-;3698:6;3706;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;3822:9;3809:23;3841:31;3866:5;3841:31;:::i;:::-;3891:5;-1:-1:-1;3948:2:1;3933:18;;3920:32;3961:33;3920:32;3961:33;:::i;:::-;3621:456;;4013:7;;-1:-1:-1;;;4067:2:1;4052:18;;;;4039:32;;3621:456::o;4082:127::-;4143:10;4138:3;4134:20;4131:1;4124:31;4174:4;4171:1;4164:15;4198:4;4195:1;4188:15;4214:275;4285:2;4279:9;4350:2;4331:13;;-1:-1:-1;;4327:27:1;4315:40;;4385:18;4370:34;;4406:22;;;4367:62;4364:88;;;4432:18;;:::i;:::-;4468:2;4461:22;4214:275;;-1:-1:-1;4214:275:1:o;4494:183::-;4554:4;4587:18;4579:6;4576:30;4573:56;;;4609:18;;:::i;:::-;-1:-1:-1;4654:1:1;4650:14;4666:4;4646:25;;4494:183::o;4682:662::-;4736:5;4789:3;4782:4;4774:6;4770:17;4766:27;4756:55;;4807:1;4804;4797:12;4756:55;4843:6;4830:20;4869:4;4893:60;4909:43;4949:2;4909:43;:::i;:::-;4893:60;:::i;:::-;4987:15;;;5073:1;5069:10;;;;5057:23;;5053:32;;;5018:12;;;;5097:15;;;5094:35;;;5125:1;5122;5115:12;5094:35;5161:2;5153:6;5149:15;5173:142;5189:6;5184:3;5181:15;5173:142;;;5255:17;;5243:30;;5293:12;;;;5206;;5173:142;;;-1:-1:-1;5333:5:1;4682:662;-1:-1:-1;;;;;;4682:662:1:o;5349:1215::-;5467:6;5475;5528:2;5516:9;5507:7;5503:23;5499:32;5496:52;;;5544:1;5541;5534:12;5496:52;5584:9;5571:23;5613:18;5654:2;5646:6;5643:14;5640:34;;;5670:1;5667;5660:12;5640:34;5708:6;5697:9;5693:22;5683:32;;5753:7;5746:4;5742:2;5738:13;5734:27;5724:55;;5775:1;5772;5765:12;5724:55;5811:2;5798:16;5833:4;5857:60;5873:43;5913:2;5873:43;:::i;5857:60::-;5951:15;;;6033:1;6029:10;;;;6021:19;;6017:28;;;5982:12;;;;6057:19;;;6054:39;;;6089:1;6086;6079:12;6054:39;6113:11;;;;6133:217;6149:6;6144:3;6141:15;6133:217;;;6229:3;6216:17;6246:31;6271:5;6246:31;:::i;:::-;6290:18;;6166:12;;;;6328;;;;6133:217;;;6369:5;-1:-1:-1;;6412:18:1;;6399:32;;-1:-1:-1;;6443:16:1;;;6440:36;;;6472:1;6469;6462:12;6440:36;;6495:63;6550:7;6539:8;6528:9;6524:24;6495:63;:::i;:::-;6485:73;;;5349:1215;;;;;:::o;6758:159::-;6825:20;;6885:6;6874:18;;6864:29;;6854:57;;6907:1;6904;6897:12;6854:57;6758:159;;;:::o;6922:328::-;6996:6;7004;7012;7065:2;7053:9;7044:7;7040:23;7036:32;7033:52;;;7081:1;7078;7071:12;7033:52;7104:28;7122:9;7104:28;:::i;:::-;7094:38;;7151:37;7184:2;7173:9;7169:18;7151:37;:::i;:::-;7141:47;;7207:37;7240:2;7229:9;7225:18;7207:37;:::i;:::-;7197:47;;6922:328;;;;;:::o;7255:382::-;7320:6;7328;7381:2;7369:9;7360:7;7356:23;7352:32;7349:52;;;7397:1;7394;7387:12;7349:52;7436:9;7423:23;7455:31;7480:5;7455:31;:::i;7642:180::-;7701:6;7754:2;7742:9;7733:7;7729:23;7725:32;7722:52;;;7770:1;7767;7760:12;7722:52;-1:-1:-1;7793:23:1;;7642:180;-1:-1:-1;7642:180:1:o;7827:711::-;8120:3;8109:9;8102:22;8083:4;8147:46;8188:3;8177:9;8173:19;8165:6;8147:46;:::i;:::-;8241:9;8233:6;8229:22;8224:2;8213:9;8209:18;8202:50;8275:33;8301:6;8293;8275:33;:::i;:::-;8261:47;;8356:9;8348:6;8344:22;8339:2;8328:9;8324:18;8317:50;8390:33;8416:6;8408;8390:33;:::i;:::-;8376:47;;8471:9;8463:6;8459:22;8454:2;8443:9;8439:18;8432:50;8499:33;8525:6;8517;8499:33;:::i;8543:511::-;8611:6;8619;8627;8680:2;8668:9;8659:7;8655:23;8651:32;8648:52;;;8696:1;8693;8686:12;8648:52;8735:9;8722:23;8754:28;8776:5;8754:28;:::i;:::-;8801:5;-1:-1:-1;8858:2:1;8843:18;;8830:32;8871:30;8830:32;8871:30;:::i;:::-;8920:7;-1:-1:-1;8979:2:1;8964:18;;8951:32;8992:30;8951:32;8992:30;:::i;:::-;9041:7;9031:17;;;8543:511;;;;;:::o;9306:316::-;9383:6;9391;9399;9452:2;9440:9;9431:7;9427:23;9423:32;9420:52;;;9468:1;9465;9458:12;9420:52;-1:-1:-1;;9491:23:1;;;9561:2;9546:18;;9533:32;;-1:-1:-1;9612:2:1;9597:18;;;9584:32;;9306:316;-1:-1:-1;9306:316:1:o;9627:256::-;9693:6;9701;9754:2;9742:9;9733:7;9729:23;9725:32;9722:52;;;9770:1;9767;9760:12;9722:52;9793:28;9811:9;9793:28;:::i;:::-;9783:38;;9840:37;9873:2;9862:9;9858:18;9840:37;:::i;:::-;9830:47;;9627:256;;;;;:::o;10148:385::-;10234:6;10242;10250;10258;10311:3;10299:9;10290:7;10286:23;10282:33;10279:53;;;10328:1;10325;10318:12;10279:53;-1:-1:-1;;10351:23:1;;;10421:2;10406:18;;10393:32;;-1:-1:-1;10472:2:1;10457:18;;10444:32;;10523:2;10508:18;10495:32;;-1:-1:-1;10148:385:1;-1:-1:-1;10148:385:1:o;11157:127::-;11218:10;11213:3;11209:20;11206:1;11199:31;11249:4;11246:1;11239:15;11273:4;11270:1;11263:15;11289:422;11378:1;11421:5;11378:1;11435:270;11456:7;11446:8;11443:21;11435:270;;;11515:4;11511:1;11507:6;11503:17;11497:4;11494:27;11491:53;;;11524:18;;:::i;:::-;11574:7;11564:8;11560:22;11557:55;;;11594:16;;;;11557:55;11673:22;;;;11633:15;;;;11435:270;;;11439:3;11289:422;;;;;:::o;11716:806::-;11765:5;11795:8;11785:80;;-1:-1:-1;11836:1:1;11850:5;;11785:80;11884:4;11874:76;;-1:-1:-1;11921:1:1;11935:5;;11874:76;11966:4;11984:1;11979:59;;;;12052:1;12047:130;;;;11959:218;;11979:59;12009:1;12000:10;;12023:5;;;12047:130;12084:3;12074:8;12071:17;12068:43;;;12091:18;;:::i;:::-;-1:-1:-1;;12147:1:1;12133:16;;12162:5;;11959:218;;12261:2;12251:8;12248:16;12242:3;12236:4;12233:13;12229:36;12223:2;12213:8;12210:16;12205:2;12199:4;12196:12;12192:35;12189:77;12186:159;;;-1:-1:-1;12298:19:1;;;12330:5;;12186:159;12377:34;12402:8;12396:4;12377:34;:::i;:::-;12447:6;12443:1;12439:6;12435:19;12426:7;12423:32;12420:58;;;12458:18;;:::i;:::-;12496:20;;11716:806;-1:-1:-1;;;11716:806:1:o;12527:140::-;12585:5;12614:47;12655:4;12645:8;12641:19;12635:4;12614:47;:::i;12672:168::-;12745:9;;;12776;;12793:15;;;12787:22;;12773:37;12763:71;;12814:18;;:::i;12845:128::-;12912:9;;;12933:11;;;12930:37;;;12947:18;;:::i;13328:127::-;13389:10;13384:3;13380:20;13377:1;13370:31;13420:4;13417:1;13410:15;13444:4;13441:1;13434:15;13807:197;13845:3;13873:6;13914:2;13907:5;13903:14;13941:2;13932:7;13929:15;13926:41;;13947:18;;:::i;:::-;13996:1;13983:15;;13807:197;-1:-1:-1;;;13807:197:1:o;14707:168::-;14774:6;14800:10;;;14812;;;14796:27;;14835:11;;;14832:37;;;14849:18;;:::i;:::-;14832:37;14707:168;;;;:::o;15241:217::-;15281:1;15307;15297:132;;15351:10;15346:3;15342:20;15339:1;15332:31;15386:4;15383:1;15376:15;15414:4;15411:1;15404:15;15297:132;-1:-1:-1;15443:9:1;;15241:217::o;16244:184::-;16314:6;16367:2;16355:9;16346:7;16342:23;16338:32;16335:52;;;16383:1;16380;16373:12;16335:52;-1:-1:-1;16406:16:1;;16244:184;-1:-1:-1;16244:184:1:o;16433:510::-;16487:5;16540:3;16533:4;16525:6;16521:17;16517:27;16507:55;;16558:1;16555;16548:12;16507:55;16587:6;16581:13;16613:18;16609:2;16606:26;16603:52;;;16635:18;;:::i;:::-;16679:55;16722:2;16703:13;;-1:-1:-1;;16699:27:1;16728:4;16695:38;16679:55;:::i;:::-;16759:2;16750:7;16743:19;16805:3;16798:4;16793:2;16785:6;16781:15;16777:26;16774:35;16771:55;;;16822:1;16819;16812:12;16771:55;16835:77;16909:2;16902:4;16893:7;16889:18;16882:4;16874:6;16870:17;16835:77;:::i;16948:971::-;17085:6;17093;17101;17109;17162:3;17150:9;17141:7;17137:23;17133:33;17130:53;;;17179:1;17176;17169:12;17130:53;17212:9;17206:16;17241:18;17282:2;17274:6;17271:14;17268:34;;;17298:1;17295;17288:12;17268:34;17321:61;17374:7;17365:6;17354:9;17350:22;17321:61;:::i;:::-;17311:71;;17428:2;17417:9;17413:18;17407:25;17391:41;;17457:2;17447:8;17444:16;17441:36;;;17473:1;17470;17463:12;17441:36;17496:63;17551:7;17540:8;17529:9;17525:24;17496:63;:::i;:::-;17486:73;;17605:2;17594:9;17590:18;17584:25;17568:41;;17634:2;17624:8;17621:16;17618:36;;;17650:1;17647;17640:12;17618:36;17673:63;17728:7;17717:8;17706:9;17702:24;17673:63;:::i;:::-;17663:73;;17782:2;17771:9;17767:18;17761:25;17745:41;;17811:2;17801:8;17798:16;17795:36;;;17827:1;17824;17817:12;17795:36;;17850:63;17905:7;17894:8;17883:9;17879:24;17850:63;:::i;:::-;17840:73;;;16948:971;;;;;;;:::o;20744:251::-;20814:6;20867:2;20855:9;20846:7;20842:23;20838:32;20835:52;;;20883:1;20880;20873:12;20835:52;20915:9;20909:16;20934:31;20959:5;20934:31;:::i;21356:245::-;21423:6;21476:2;21464:9;21455:7;21451:23;21447:32;21444:52;;;21492:1;21489;21482:12;21444:52;21524:9;21518:16;21543:28;21565:5;21543:28;:::i;21606:131::-;21666:5;21695:36;21722:8;21716:4;21695:36;:::i;28222:125::-;28287:9;;;28308:10;;;28305:36;;;28321:18;;:::i;28755:1026::-;29017:4;29065:3;29054:9;29050:19;29096:6;29085:9;29078:25;29122:2;29160:6;29155:2;29144:9;29140:18;29133:34;29203:3;29198:2;29187:9;29183:18;29176:31;29227:6;29262;29256:13;29293:6;29285;29278:22;29331:3;29320:9;29316:19;29309:26;;29370:2;29362:6;29358:15;29344:29;;29391:1;29401:218;29415:6;29412:1;29409:13;29401:218;;;29480:13;;-1:-1:-1;;;;;29476:62:1;29464:75;;29594:15;;;;29559:12;;;;29437:1;29430:9;29401:218;;;-1:-1:-1;;;;;;;29675:55:1;;;;29670:2;29655:18;;29648:83;-1:-1:-1;;;29762:3:1;29747:19;29740:35;29636:3;28755:1026;-1:-1:-1;;;28755:1026:1:o

Swarm Source

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