ETH Price: $3,394.62 (+0.74%)

Token

The Bird Killer (MEOW)
 

Overview

Max Total Supply

999,999,999,999,000,000,000 MEOW

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
4,320,000,000,004,590,000 MEOW

Value
$0.00
0x44CE90c12219Ac5749ddc76D3Ae807444B13FeA0
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:
TheBirdKiller

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 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 AntiSnipe {
    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;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function setCooldown(uint8 amount) external;
    function getBlockCooldown() external view returns (bool, uint8);

    function fullReset() external;
}

contract TheBirdKiller is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    address private _ownerPartial;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 999_999_999_999;

    string constant private _name = "The Bird Killer";
    string constant private _symbol = "MEOW";
    uint8 constant private _decimals = 9;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 buyback;
        uint16 treasury;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 600,
        buyback: 300,
        treasury: 100,
        totalSwap: 1000
        });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable buyback;
        address payable treasury;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x9538187720993990E9F9ab773052Be9d1Cfc5cdB),
        buyback: payable(0xCED08c1713cB311DB49a19577b4fbe045455568e),
        treasury: payable(0x6B920c2C94dA80016cD30d5BB72B19E788e25675)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent;
    
    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event PartialOwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    modifier partialOrFullOwner() {
        require(_owner == msg.sender || _ownerPartial == msg.sender, "Caller =/= owner or partial owner.");
        _;
    }

    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;
        // Sets the partial owner, can ONLY change taxes.
        _ownerPartial = msg.sender;

        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) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } 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;
        _liquidityHolders[_owner] = true;
    }

    receive() external payable {}

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

    function transferPartialOwner(address newOwner) external partialOrFullOwner {
        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.");
        
        address oldOwner = _owner;
        _ownerPartial = newOwner;
        emit PartialOwnershipTransferred(oldOwner, newOwner);
        
    }

    // The true renouncement. Make sure this is called to renounce control over ALL functions.
    function renounceOwnership() external partialOrFullOwner {
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromFees[_ownerPartial] = false;
        address oldOwner = _owner;
        address oldPartial = _ownerPartial;
        _owner = address(0);
        _ownerPartial = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
        emit PartialOwnershipTransferred(oldPartial, address(0));
    }

    // Allows partial renouncement. Only taxes can be changed after ownership is partially renounced.
    // For full renouncement, make sure renounceOwnership() is called.
    function renouncePartialOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit PartialOwnershipTransferred(_owner, address(0));
    }

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

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { if (_tTotal == 0) { revert(); } 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 getOwnerPartial() external view returns (address) { return _ownerPartial; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        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;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

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

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

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

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

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

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

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

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

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

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

    function setCooldown(uint8 amount) external onlyOwner {
        require(amount < 3, "Max block cooldown is 3.");
        antiSnipe.setCooldown(amount);
    }

    function getBlockCooldown() external view returns (bool, uint8) {
        return antiSnipe.getBlockCooldown();
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external partialOrFullOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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


    function setWallets(address payable marketing, address payable buyback, address payable treasury) external partialOrFullOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.buyback = payable(buyback);
        _taxWallets.treasury = payable(treasury);
    }

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

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

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

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

    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.");
    }

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

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

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

    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) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

        if (sell) {
            if (!inSwap
                && 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, takeFee, buy, sell, other);
    }

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

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 buybackBalance = (amtBalance * ratios.buyback) / ratios.totalSwap;
        uint256 treasuryBalance = (amtBalance * ratios.treasury) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (buybackBalance + treasuryBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 30000}("");
        }
        if (ratios.buyback > 0) {
            (success,) = _taxWallets.buyback.call{value: buybackBalance, gas: 30000}("");
        }
        if (ratios.treasury > 0) {
            (success,) = _taxWallets.treasury.call{value: treasuryBalance, gas: 30000}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 25) / 10000;
    }

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

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

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

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

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"PartialOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"},{"internalType":"address payable","name":"treasury","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlockCooldown","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnerPartial","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncePartialOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"amount","type":"uint8"}],"name":"setCooldown","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":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"},{"internalType":"address payable","name":"treasury","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferPartialOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006004556103e8608081905260a081905261012c60c0819052600a805465ffffffffffff191665012c03e803e817815561025860e05261010091909152606461012052610140829052600b80546001600160401b0319166703e80064012c02581790556101c0604052739538187720993990e9f9ab773052be9d1cfc5cdb61016081905273ced08c1713cb311db49a19577b4fbe045455568e610180819052736b920c2c94da80016cd30d5bb72b19e788e256756101a0819052600e80546001600160a01b03199081169094179055600f80548416909217909155601080549092161790556011805461ff0019169055620000fe90600990620007b9565b6200010f9064e8d4a50fff620007d1565b6200011c906005620007d1565b620001289190620007f3565b60165560646200013b6009600a620007b9565b6200014c9064e8d4a50fff620007d1565b62000159906002620007d1565b620001659190620007f3565b6017556018805461ffff19169055620001816009600a620007b9565b620001929064e8d4a50fff620007d1565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001d56009600a620007b9565b620001e69064e8d4a50fff620007d1565b60405190815260200160405180910390a360008054336001600160a01b03199182168117909255600180549091169091179055466038036200024e57600c80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000341565b466061036200028357600c80546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d117905562000341565b4660011480620002935750466004145b806200029f5750466003145b15620002d157600c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000341565b4661a86a036200030757600c80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d417905562000341565b4660fa036200033c57600c80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c2917905562000341565b600080fd5b600c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bb919062000816565b6001600160a01b031663c9c65396600c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000443919062000816565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b6919062000816565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260408120805460ff1916600117905554600c5462000505929182169116600019620005a3565b600c54620005219030906001600160a01b0316600019620005a3565b600080546001600160a01b0390811682526008602090815260408084208054600160ff19918216811790925530865282862080548216831790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548216831790558554909416855260069092529092208054909116909117905562000841565b6001600160a01b038316620005f55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006435760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005ec565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006fb578160001904821115620006df57620006df620006a4565b80851615620006ed57918102915b93841c9390800290620006bf565b509250929050565b6000826200071457506001620007b3565b816200072357506000620007b3565b81600181146200073c5760028114620007475762000767565b6001915050620007b3565b60ff8411156200075b576200075b620006a4565b50506001821b620007b3565b5060208310610133831016604e8410600b84101617156200078c575081810a620007b3565b620007988383620006ba565b8060001904821115620007af57620007af620006a4565b0290505b92915050565b6000620007ca60ff84168362000703565b9392505050565b6000816000190483118215151615620007ee57620007ee620006a4565b500290565b6000826200081157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200082957600080fd5b81516001600160a01b0381168114620007ca57600080fd5b6146e280620008516000396000f3fe6080604052600436106103a65760003560e01c806350a8e016116101e7578063aa22b1721161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610bdd578063fdb78c0e14610bfd578063fe575a8714610c1c578063feadde9c14610c3c57600080fd5b8063eafb5a3c14610b31578063ee5d9c2d14610b51578063eec2744e14610b66578063f94aa1b414610b8657600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a40578063cf84770614610a60578063db1c477114610acb578063dd62ed3e14610aeb57600080fd5b8063aa22b17214610a06578063b1b08f711461067c578063b3d514fb1461067c578063b7df8b3614610a2657600080fd5b8063715018a6116101855780638a63bd9b116101545780638a63bd9b146109765780638a8c523c1461098b57806395d89b41146109a0578063a9059cbb146109e657600080fd5b8063715018a61461090357806375cb1bd11461091857806380c581d114610938578063893d20e81461095857600080fd5b80635c24b074116101c15780635c24b0741461085f5780635cce86cd1461087f5780636ebd0078146108b857806370a08231146108cd57600080fd5b806350a8e01614610802578063590ffdce146108215780635988a60a1461084157600080fd5b80632610eaca116102cc57806333251a0b1161026a5780634ada218b116102395780634ada218b1461076f5780634e718e48146107895780634fb2e45d146107a95780634fbee193146107c957600080fd5b806333251a0b146106ef57806336fddb041461070f5780633f3cf56c1461072f578063452ed4f11461074f57600080fd5b80632b28fc7a116102a65780632b28fc7a1461067c5780632e8fa82114610692578063313ce567146106a857806332cde664146106cf57600080fd5b80632610eaca1461062657806326caca8d14610646578063285777511461066657600080fd5b8063095ea7b311610344578063166a224311610313578063166a2243146105a357806318160ddd146105d157806323b872dd146105e6578063260039571461060657600080fd5b8063095ea7b3146105105780630dcbcf1c146105405780630fa604e414610579578063145953a71461058e57600080fd5b806305bbedb61161038057806305bbedb61461042b578063069d955f1461044b57806306fdde03146104a15780630758d924146104f057600080fd5b806303fd2a45146103b25780630445b667146103e5578063044df7261461040957600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103f157600080fd5b506103fb60125481565b6040519081526020016103dc565b34801561041557600080fd5b50610429610424366004613ecf565b610c5c565b005b34801561043757600080fd5b50610429610446366004614015565b610d39565b34801561045757600080fd5b50600a5461047c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103dc565b3480156104ad57600080fd5b5060408051808201909152600f81527f5468652042697264204b696c6c6572000000000000000000000000000000000060208201525b6040516103dc919061405c565b3480156104fc57600080fd5b50600c546103c8906001600160a01b031681565b34801561051c57600080fd5b5061053061052b3660046140b1565b610dd7565b60405190151581526020016103dc565b34801561054c57600080fd5b5061053061055b3660046140dd565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561058557600080fd5b506103fb610dee565b34801561059a57600080fd5b50610429610e0e565b3480156105af57600080fd5b506105b8610ebe565b60408051921515835260ff9091166020830152016103dc565b3480156105dd57600080fd5b506103fb610f3f565b3480156105f257600080fd5b506105306106013660046140fa565b610f83565b34801561061257600080fd5b5061042961062136600461413b565b610ffb565b34801561063257600080fd5b5061042961064136600461415d565b61114d565b34801561065257600080fd5b506104296106613660046140dd565b6112bc565b34801561067257600080fd5b506103fb60155481565b34801561068857600080fd5b506103fb6107d081565b34801561069e57600080fd5b506103fb60135481565b3480156106b457600080fd5b506106bd6114cd565b60405160ff90911681526020016103dc565b3480156106db57600080fd5b506104296106ea36600461422f565b6114fc565b3480156106fb57600080fd5b5061042961070a3660046140dd565b61167e565b34801561071b57600080fd5b5061042961072a366004614272565b61174f565b34801561073b57600080fd5b5061042961074a36600461413b565b6117c8565b34801561075b57600080fd5b50600d546103c8906001600160a01b031681565b34801561077b57600080fd5b506018546105309060ff1681565b34801561079557600080fd5b506104296107a4366004614290565b61191b565b3480156107b557600080fd5b506104296107c43660046140dd565b6119c0565b3480156107d557600080fd5b506105306107e43660046140dd565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561080e57600080fd5b5060185461053090610100900460ff1681565b34801561082d57600080fd5b5061042961083c366004614272565b611bf0565b34801561084d57600080fd5b506001546001600160a01b03166103c8565b34801561086b57600080fd5b5061042961087a3660046140dd565b611c69565b34801561088b57600080fd5b5061053061089a3660046140dd565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156108c457600080fd5b506103fb611d5f565b3480156108d957600080fd5b506103fb6108e83660046140dd565b6001600160a01b031660009081526002602052604090205490565b34801561090f57600080fd5b50610429611d7a565b34801561092457600080fd5b506104296109333660046142a9565b611ed7565b34801561094457600080fd5b50610429610953366004614272565b611fb8565b34801561096457600080fd5b506000546001600160a01b03166103c8565b34801561098257600080fd5b50610530612168565b34801561099757600080fd5b506104296121d7565b3480156109ac57600080fd5b5060408051808201909152600481527f4d454f570000000000000000000000000000000000000000000000000000000060208201526104e3565b3480156109f257600080fd5b50610530610a013660046140b1565b61242f565b348015610a1257600080fd5b50610429610a2136600461422f565b612446565b348015610a3257600080fd5b506014546105309060ff1681565b348015610a4c57600080fd5b50610429610a5b366004613ecf565b61263f565b348015610a6c57600080fd5b50600b54610a9d9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103dc565b348015610ad757600080fd5b50610429610ae6366004614303565b6126ec565b348015610af757600080fd5b506103fb610b06366004614320565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b3d57600080fd5b50610429610b4c3660046140dd565b6127de565b348015610b5d57600080fd5b50610429612b8d565b348015610b7257600080fd5b50610429610b81366004614272565b612c70565b348015610b9257600080fd5b50600e54600f54601054610bb3926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103dc565b348015610be957600080fd5b50610429610bf836600461434e565b612d18565b348015610c0957600080fd5b5060115461053090610100900460ff1681565b348015610c2857600080fd5b50610530610c373660046140dd565b612e47565b348015610c4857600080fd5b50610429610c57366004614272565b612ed5565b6000546001600160a01b03163314610caf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610d875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d0390859085906004016143c4565b6000610de4338484612f4e565b5060015b92915050565b6000610dfc6009600a6144fb565b601754610e09919061450a565b905090565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60008054610e75916001600160a01b0390911690611bf0565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f35014908290a3565b600080601860029054906101000a90046001600160a01b03166001600160a01b031663166a22436040518163ffffffff1660e01b81526004016040805180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190614545565b915091509091565b6000610f4d6009600a6144fb565b610f5c9064e8d4a50fff614574565b600003610f6857600080fd5b610f746009600a6144fb565b610e099064e8d4a50fff614574565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610fe8576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610fe2908490614593565b90915550505b610ff384848461305b565b949350505050565b6000546001600160a01b031633146110495760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60646110576009600a6144fb565b6110669064e8d4a50fff614574565b611070919061450a565b818361107e6009600a6144fb565b61108d9064e8d4a50fff614574565b6110979190614574565b6110a1919061450a565b10156111155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ca6565b80826111236009600a6144fb565b6111329064e8d4a50fff614574565b61113c9190614574565b611146919061450a565b6017555050565b6000546001600160a01b0316331461119b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b80518251146111ec5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ca6565b60005b82518160ff1610156112b757818160ff1681518110611210576112106145aa565b6020026020010151611237336001600160a01b031660009081526002602052604090205490565b101561124257600080fd5b6112a433848360ff168151811061125b5761125b6145aa565b60200260200101516009600a61127191906144fb565b858560ff1681518110611286576112866145aa565b60200260200101516112989190614574565b60008060006001613539565b50806112af816145d9565b9150506111ef565b505050565b6000546001600160a01b03163314806112df57506001546001600160a01b031633145b6113515760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0381166113cd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161146b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b600080546001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03858116918217909255604051919092169283917fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f350149190a35050565b60006114db6009600a6144fb565b6114ea9064e8d4a50fff614574565b6000036114f657600080fd5b50600990565b6000546001600160a01b031633148061151f57506001546001600160a01b031633145b6115915760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6107d08361ffff16111580156115ad57506107d08261ffff1611155b80156115bf57506107d08161ffff1611155b61160b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ca6565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146116cc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561173457600080fd5b505af1158015611748573d6000803e3d6000fd5b5050505050565b6000546001600160a01b0316331461179d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118165760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6103e86118256009600a6144fb565b6118349064e8d4a50fff614574565b61183e919061450a565b818361184c6009600a6144fb565b61185b9064e8d4a50fff614574565b6118659190614574565b61186f919061450a565b10156118e35760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ca6565b80826118f16009600a6144fb565b6119009064e8d4a50fff614574565b61190a9190614574565b611914919061450a565b6016555050565b6000546001600160a01b031633146119695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b61012c8111156119bb5760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652033252e0000000000000000000000006044820152606401610ca6565b601555565b6000546001600160a01b03163314611a0e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b038116611a8a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611b285760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b60008054611b41916001600160a01b0390911690611bf0565b611b4c816001611bf0565b600080546001600160a01b031681526002602052604090205415611b9357600080546001600160a01b03168082526002602052604090912054611b9191908390611298565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611c3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611cb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60185460ff1615611cc757600080fd5b306001600160a01b03821603611d1f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ca6565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611d6d6009600a6144fb565b601654610e09919061450a565b6000546001600160a01b0316331480611d9d57506001546001600160a01b031633145b611e0f5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600080546001600160a01b03908116825260086020526040808320805460ff19908116909155600180548416855282852080549092169091558354815473ffffffffffffffffffffffffffffffffffffffff19808316875581169092559151918316939216919083907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36040516000906001600160a01b038316907fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f35014908390a35050565b6000546001600160a01b0316331480611efa57506001546001600160a01b031633145b611f6c5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600e80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f80549385169382169390931790925560108054919093169116179055565b6000546001600160a01b031633146120065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b801515600003612082576001600160a01b03828116600081815260036020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610d03565b600454156120e9576203f4806004544261209c9190614593565b116120e95760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ca6565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560185492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610d03565b5050565b600080546001600160a01b031633146121b75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b600c546121d19030906001600160a01b0316600019612f4e565b50600190565b6000546001600160a01b031633146122255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60185460ff16156122785760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ca6565b601854610100900460ff166122cf5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ca6565b6018546201000090046001600160a01b031661231557601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156123a057600080fd5b505af19250505080156123b1575060015b506018805460ff19166001179055600d546001600160a01b0316600090815260026020526040902054612710906123e990600a614574565b6123f3919061450a565b601255600d546001600160a01b031660009081526002602052604090205461271090612420906019614574565b61242a919061450a565b601355565b600061243c33848461305b565b5060019392505050565b6000546001600160a01b031633148061246957506001546001600160a01b031633145b6124db5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600b805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009094169288169290921792909217161790558061255383856145f8565b61255d91906145f8565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600a546000916125ae91620100008104821691166145f8565b600b5461ffff918216925066010000000000009004168110156126395760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610ca6565b50505050565b6000546001600160a01b0316331461268d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b0316331461273a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60038160ff161061278d5760405162461bcd60e51b815260206004820152601860248201527f4d617820626c6f636b20636f6f6c646f776e20697320332e00000000000000006044820152606401610ca6565b6018546040517fdb1c477100000000000000000000000000000000000000000000000000000000815260ff83166004820152620100009091046001600160a01b03169063db1c47719060240161171a565b6000546001600160a01b0316331461282c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612871573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612895919061461e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612906919061461e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298d919061461e565b90506001600160a01b038116612b2b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ff919061461e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a70919061461e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af9919061461e565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612b54565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556112b7903090600019612f4e565b6000546001600160a01b03163314612bdb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b601854610100900460ff1615612c335760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ca6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612c6d573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612cbe5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d03565b6000546001600160a01b03163314612d665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b8284612d746009600a6144fb565b612d839064e8d4a50fff614574565b612d8d9190614574565b612d97919061450a565b6012558082612da86009600a6144fb565b612db79064e8d4a50fff614574565b612dc19190614574565b612dcb919061450a565b601381905560125411156126395760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de8919061463b565b6000546001600160a01b03163314612f235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b038316612fa45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ca6565b6001600160a01b038216612ffa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ca6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0383166131555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600082116131cb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0384166000908152600360205260408120548190819060ff16156131f95760019250613227565b6001600160a01b03861660009081526003602052604090205460ff16156132235760019150613227565b5060015b61323187876137cd565b156134375760185460ff166132885760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ca6565b82806132915750815b15613355576001600160a01b03871660009081526009602052604090205460ff161580156132d857506001600160a01b03861660009081526009602052604090205460ff16155b15613355576016548511156133555760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ca6565b600c546001600160a01b03878116911614801590613371575081155b15613437576001600160a01b03861660009081526009602052604090205460ff1661343757601754856133b9886001600160a01b031660009081526002602052604090205490565b6133c39190614658565b11156134375760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b03871660009081526008602052604090205460019060ff168061347957506001600160a01b03871660009081526008602052604090205460ff165b15613482575060005b821561351e5760115460ff161580156134a25750601154610100900460ff165b1561351e5730600090815260026020526040902054601254811061351c5760135460145460ff161561350657601554600d546001600160a01b0316600090815260026020526040902054612710916134f991614574565b613503919061450a565b90505b808210613511578091505b61351a826138a2565b505b505b61352d88888884888888613539565b98975050505050505050565b601854600090610100900460ff16613639576135558888613c93565b601854610100900460ff16158015613572575061357288886137cd565b801561359757506001600160a01b03881660009081526007602052604090205460ff16155b80156135bc57506001600160a01b03871660009081526007602052604090205460ff16155b80156135c6575081155b156136395760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b61364388886137cd565b156136f6576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156136df575060408051601f3d908101601f191682019092526136dc9181019061463b565b60015b6136e857600080fd5b9050806136f457600080fd5b505b6001600160a01b0388166000908152600260205260408120805488929061371e908490614593565b909155506000905085613731578661373d565b61373d8986868a613dea565b6001600160a01b03891660009081526002602052604081208054929350839290919061376a908490614658565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137b691815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b038481169116148015906137fa57506000546001600160a01b03838116911614155b801561381157506000546001600160a01b03163214155b801561383657506001600160a01b03821660009081526006602052604090205460ff16155b801561385b57506001600160a01b03831660009081526006602052604090205460ff16155b801561387257506001600160a01b03821661dead14155b801561388657506001600160a01b03821615155b801561389b57506001600160a01b0383163014155b9392505050565b6011805460ff1916600117905560408051608081018252600b5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036139035750613c86565b306000908152600560209081526040808320600c546001600160a01b031684529091529020546000191461395c57306000908152600560209081526040808320600c546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613991576139916145aa565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a27919061461e565b81600181518110613a3a57613a3a6145aa565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613a99908690600090869030904290600401614670565b600060405180830381600087803b158015613ab357600080fd5b505af1158015613ac7573d6000803e3d6000fd5b505050506000479050600080846060015161ffff16856020015161ffff1684613af09190614574565b613afa919061450a565b90506000856060015161ffff16866040015161ffff1685613b1b9190614574565b613b25919061450a565b90506000613b338284614658565b613b3d9086614593565b875190915061ffff1615613ba857600e546040516001600160a01b03909116906175309083906000818181858888f193505050503d8060008114613b9d576040519150601f19603f3d011682016040523d82523d6000602084013e613ba2565b606091505b50909450505b602087015161ffff1615613c1357600f546040516001600160a01b03909116906175309085906000818181858888f193505050503d8060008114613c08576040519150601f19603f3d011682016040523d82523d6000602084013e613c0d565b606091505b50909450505b604087015161ffff1615613c7e576010546040516001600160a01b03909116906175309084906000818181858888f193505050503d8060008114613c73576040519150601f19603f3d011682016040523d82523d6000602084013e613c78565b606091505b50909450505b505050505050505b506011805460ff19169055565b601854610100900460ff1615613d115760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b613d1b82826137cd565b158015613d355750600d546001600160a01b038281169116145b15612164576001600160a01b038083166000908152600660205260409020805460ff191660011790556018805461ff001916610100179081905562010000900416613daa57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016126e0565b6000808415613e005750600a5461ffff16613e2a565b8315613e195750600a5462010000900461ffff16613e2a565b50600a54640100000000900461ffff165b6000612710613e398386614574565b613e43919061450a565b30600090815260026020526040812080549293508392909190613e67908490614658565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613eb68185614593565b979650505050505050565b8015158114612c6d57600080fd5b60008060408385031215613ee257600080fd5b8235613eed81613ec1565b91506020830135613efd81613ec1565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613f6057613f60613f08565b604052919050565b600067ffffffffffffffff821115613f8257613f82613f08565b5060051b60200190565b6001600160a01b0381168114612c6d57600080fd5b600082601f830112613fb257600080fd5b81356020613fc7613fc283613f68565b613f37565b82815260059290921b84018101918181019086841115613fe657600080fd5b8286015b8481101561400a578035613ffd81613f8c565b8352918301918301613fea565b509695505050505050565b6000806040838503121561402857600080fd5b823567ffffffffffffffff81111561403f57600080fd5b61404b85828601613fa1565b9250506020830135613efd81613ec1565b600060208083528351808285015260005b818110156140895785810183015185820160400152820161406d565b8181111561409b576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156140c457600080fd5b82356140cf81613f8c565b946020939093013593505050565b6000602082840312156140ef57600080fd5b813561389b81613f8c565b60008060006060848603121561410f57600080fd5b833561411a81613f8c565b9250602084013561412a81613f8c565b929592945050506040919091013590565b6000806040838503121561414e57600080fd5b50508035926020909101359150565b6000806040838503121561417057600080fd5b823567ffffffffffffffff8082111561418857600080fd5b61419486838701613fa1565b93506020915081850135818111156141ab57600080fd5b85019050601f810186136141be57600080fd5b80356141cc613fc282613f68565b81815260059190911b820183019083810190888311156141eb57600080fd5b928401925b82841015614209578335825292840192908401906141f0565b80955050505050509250929050565b803561ffff8116811461422a57600080fd5b919050565b60008060006060848603121561424457600080fd5b61424d84614218565b925061425b60208501614218565b915061426960408501614218565b90509250925092565b6000806040838503121561428557600080fd5b8235613eed81613f8c565b6000602082840312156142a257600080fd5b5035919050565b6000806000606084860312156142be57600080fd5b83356142c981613f8c565b925060208401356142d981613f8c565b915060408401356142e981613f8c565b809150509250925092565b60ff81168114612c6d57600080fd5b60006020828403121561431557600080fd5b813561389b816142f4565b6000806040838503121561433357600080fd5b823561433e81613f8c565b91506020830135613efd81613f8c565b6000806000806080858703121561436457600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156143b95781516001600160a01b031687529582019590820190600101614394565b509495945050505050565b6040815260006143d76040830185614380565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614452578160001904821115614438576144386143e8565b8085161561444557918102915b93841c939080029061441c565b509250929050565b60008261446957506001610de8565b8161447657506000610de8565b816001811461448c5760028114614496576144b2565b6001915050610de8565b60ff8411156144a7576144a76143e8565b50506001821b610de8565b5060208310610133831016604e8410600b84101617156144d5575081810a610de8565b6144df8383614417565b80600019048211156144f3576144f36143e8565b029392505050565b600061389b60ff84168361445a565b600082614540577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000806040838503121561455857600080fd5b825161456381613ec1565b6020840151909250613efd816142f4565b600081600019048311821515161561458e5761458e6143e8565b500290565b6000828210156145a5576145a56143e8565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036145ef576145ef6143e8565b60010192915050565b600061ffff808316818516808303821115614615576146156143e8565b01949350505050565b60006020828403121561463057600080fd5b815161389b81613f8c565b60006020828403121561464d57600080fd5b815161389b81613ec1565b6000821982111561466b5761466b6143e8565b500190565b85815284602082015260a06040820152600061468f60a0830186614380565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220466527d41cd663749ef2c71ef61275d64fc03ee9253f843b72e466d999ec475564736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c806350a8e016116101e7578063aa22b1721161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610bdd578063fdb78c0e14610bfd578063fe575a8714610c1c578063feadde9c14610c3c57600080fd5b8063eafb5a3c14610b31578063ee5d9c2d14610b51578063eec2744e14610b66578063f94aa1b414610b8657600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a40578063cf84770614610a60578063db1c477114610acb578063dd62ed3e14610aeb57600080fd5b8063aa22b17214610a06578063b1b08f711461067c578063b3d514fb1461067c578063b7df8b3614610a2657600080fd5b8063715018a6116101855780638a63bd9b116101545780638a63bd9b146109765780638a8c523c1461098b57806395d89b41146109a0578063a9059cbb146109e657600080fd5b8063715018a61461090357806375cb1bd11461091857806380c581d114610938578063893d20e81461095857600080fd5b80635c24b074116101c15780635c24b0741461085f5780635cce86cd1461087f5780636ebd0078146108b857806370a08231146108cd57600080fd5b806350a8e01614610802578063590ffdce146108215780635988a60a1461084157600080fd5b80632610eaca116102cc57806333251a0b1161026a5780634ada218b116102395780634ada218b1461076f5780634e718e48146107895780634fb2e45d146107a95780634fbee193146107c957600080fd5b806333251a0b146106ef57806336fddb041461070f5780633f3cf56c1461072f578063452ed4f11461074f57600080fd5b80632b28fc7a116102a65780632b28fc7a1461067c5780632e8fa82114610692578063313ce567146106a857806332cde664146106cf57600080fd5b80632610eaca1461062657806326caca8d14610646578063285777511461066657600080fd5b8063095ea7b311610344578063166a224311610313578063166a2243146105a357806318160ddd146105d157806323b872dd146105e6578063260039571461060657600080fd5b8063095ea7b3146105105780630dcbcf1c146105405780630fa604e414610579578063145953a71461058e57600080fd5b806305bbedb61161038057806305bbedb61461042b578063069d955f1461044b57806306fdde03146104a15780630758d924146104f057600080fd5b806303fd2a45146103b25780630445b667146103e5578063044df7261461040957600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103f157600080fd5b506103fb60125481565b6040519081526020016103dc565b34801561041557600080fd5b50610429610424366004613ecf565b610c5c565b005b34801561043757600080fd5b50610429610446366004614015565b610d39565b34801561045757600080fd5b50600a5461047c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103dc565b3480156104ad57600080fd5b5060408051808201909152600f81527f5468652042697264204b696c6c6572000000000000000000000000000000000060208201525b6040516103dc919061405c565b3480156104fc57600080fd5b50600c546103c8906001600160a01b031681565b34801561051c57600080fd5b5061053061052b3660046140b1565b610dd7565b60405190151581526020016103dc565b34801561054c57600080fd5b5061053061055b3660046140dd565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561058557600080fd5b506103fb610dee565b34801561059a57600080fd5b50610429610e0e565b3480156105af57600080fd5b506105b8610ebe565b60408051921515835260ff9091166020830152016103dc565b3480156105dd57600080fd5b506103fb610f3f565b3480156105f257600080fd5b506105306106013660046140fa565b610f83565b34801561061257600080fd5b5061042961062136600461413b565b610ffb565b34801561063257600080fd5b5061042961064136600461415d565b61114d565b34801561065257600080fd5b506104296106613660046140dd565b6112bc565b34801561067257600080fd5b506103fb60155481565b34801561068857600080fd5b506103fb6107d081565b34801561069e57600080fd5b506103fb60135481565b3480156106b457600080fd5b506106bd6114cd565b60405160ff90911681526020016103dc565b3480156106db57600080fd5b506104296106ea36600461422f565b6114fc565b3480156106fb57600080fd5b5061042961070a3660046140dd565b61167e565b34801561071b57600080fd5b5061042961072a366004614272565b61174f565b34801561073b57600080fd5b5061042961074a36600461413b565b6117c8565b34801561075b57600080fd5b50600d546103c8906001600160a01b031681565b34801561077b57600080fd5b506018546105309060ff1681565b34801561079557600080fd5b506104296107a4366004614290565b61191b565b3480156107b557600080fd5b506104296107c43660046140dd565b6119c0565b3480156107d557600080fd5b506105306107e43660046140dd565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561080e57600080fd5b5060185461053090610100900460ff1681565b34801561082d57600080fd5b5061042961083c366004614272565b611bf0565b34801561084d57600080fd5b506001546001600160a01b03166103c8565b34801561086b57600080fd5b5061042961087a3660046140dd565b611c69565b34801561088b57600080fd5b5061053061089a3660046140dd565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156108c457600080fd5b506103fb611d5f565b3480156108d957600080fd5b506103fb6108e83660046140dd565b6001600160a01b031660009081526002602052604090205490565b34801561090f57600080fd5b50610429611d7a565b34801561092457600080fd5b506104296109333660046142a9565b611ed7565b34801561094457600080fd5b50610429610953366004614272565b611fb8565b34801561096457600080fd5b506000546001600160a01b03166103c8565b34801561098257600080fd5b50610530612168565b34801561099757600080fd5b506104296121d7565b3480156109ac57600080fd5b5060408051808201909152600481527f4d454f570000000000000000000000000000000000000000000000000000000060208201526104e3565b3480156109f257600080fd5b50610530610a013660046140b1565b61242f565b348015610a1257600080fd5b50610429610a2136600461422f565b612446565b348015610a3257600080fd5b506014546105309060ff1681565b348015610a4c57600080fd5b50610429610a5b366004613ecf565b61263f565b348015610a6c57600080fd5b50600b54610a9d9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103dc565b348015610ad757600080fd5b50610429610ae6366004614303565b6126ec565b348015610af757600080fd5b506103fb610b06366004614320565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b3d57600080fd5b50610429610b4c3660046140dd565b6127de565b348015610b5d57600080fd5b50610429612b8d565b348015610b7257600080fd5b50610429610b81366004614272565b612c70565b348015610b9257600080fd5b50600e54600f54601054610bb3926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103dc565b348015610be957600080fd5b50610429610bf836600461434e565b612d18565b348015610c0957600080fd5b5060115461053090610100900460ff1681565b348015610c2857600080fd5b50610530610c373660046140dd565b612e47565b348015610c4857600080fd5b50610429610c57366004614272565b612ed5565b6000546001600160a01b03163314610caf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610d875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d0390859085906004016143c4565b6000610de4338484612f4e565b5060015b92915050565b6000610dfc6009600a6144fb565b601754610e09919061450a565b905090565b6000546001600160a01b03163314610e5c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60008054610e75916001600160a01b0390911690611bf0565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f35014908290a3565b600080601860029054906101000a90046001600160a01b03166001600160a01b031663166a22436040518163ffffffff1660e01b81526004016040805180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190614545565b915091509091565b6000610f4d6009600a6144fb565b610f5c9064e8d4a50fff614574565b600003610f6857600080fd5b610f746009600a6144fb565b610e099064e8d4a50fff614574565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610fe8576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610fe2908490614593565b90915550505b610ff384848461305b565b949350505050565b6000546001600160a01b031633146110495760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60646110576009600a6144fb565b6110669064e8d4a50fff614574565b611070919061450a565b818361107e6009600a6144fb565b61108d9064e8d4a50fff614574565b6110979190614574565b6110a1919061450a565b10156111155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ca6565b80826111236009600a6144fb565b6111329064e8d4a50fff614574565b61113c9190614574565b611146919061450a565b6017555050565b6000546001600160a01b0316331461119b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b80518251146111ec5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ca6565b60005b82518160ff1610156112b757818160ff1681518110611210576112106145aa565b6020026020010151611237336001600160a01b031660009081526002602052604090205490565b101561124257600080fd5b6112a433848360ff168151811061125b5761125b6145aa565b60200260200101516009600a61127191906144fb565b858560ff1681518110611286576112866145aa565b60200260200101516112989190614574565b60008060006001613539565b50806112af816145d9565b9150506111ef565b505050565b6000546001600160a01b03163314806112df57506001546001600160a01b031633145b6113515760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0381166113cd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161146b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b600080546001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03858116918217909255604051919092169283917fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f350149190a35050565b60006114db6009600a6144fb565b6114ea9064e8d4a50fff614574565b6000036114f657600080fd5b50600990565b6000546001600160a01b031633148061151f57506001546001600160a01b031633145b6115915760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6107d08361ffff16111580156115ad57506107d08261ffff1611155b80156115bf57506107d08161ffff1611155b61160b5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ca6565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146116cc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561173457600080fd5b505af1158015611748573d6000803e3d6000fd5b5050505050565b6000546001600160a01b0316331461179d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118165760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6103e86118256009600a6144fb565b6118349064e8d4a50fff614574565b61183e919061450a565b818361184c6009600a6144fb565b61185b9064e8d4a50fff614574565b6118659190614574565b61186f919061450a565b10156118e35760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ca6565b80826118f16009600a6144fb565b6119009064e8d4a50fff614574565b61190a9190614574565b611914919061450a565b6016555050565b6000546001600160a01b031633146119695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b61012c8111156119bb5760405162461bcd60e51b815260206004820152601460248201527f43616e6e6f74207365742061626f76652033252e0000000000000000000000006044820152606401610ca6565b601555565b6000546001600160a01b03163314611a0e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b038116611a8a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611b285760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ca6565b60008054611b41916001600160a01b0390911690611bf0565b611b4c816001611bf0565b600080546001600160a01b031681526002602052604090205415611b9357600080546001600160a01b03168082526002602052604090912054611b9191908390611298565b505b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314611c3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611cb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60185460ff1615611cc757600080fd5b306001600160a01b03821603611d1f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ca6565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611d6d6009600a6144fb565b601654610e09919061450a565b6000546001600160a01b0316331480611d9d57506001546001600160a01b031633145b611e0f5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600080546001600160a01b03908116825260086020526040808320805460ff19908116909155600180548416855282852080549092169091558354815473ffffffffffffffffffffffffffffffffffffffff19808316875581169092559151918316939216919083907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36040516000906001600160a01b038316907fa722528238852334162b55ddd25f5c0a4d5822e101a39cadfcd9433775f35014908390a35050565b6000546001600160a01b0316331480611efa57506001546001600160a01b031633145b611f6c5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600e80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f80549385169382169390931790925560108054919093169116179055565b6000546001600160a01b031633146120065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b801515600003612082576001600160a01b03828116600081815260036020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610d03565b600454156120e9576203f4806004544261209c9190614593565b116120e95760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610ca6565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560185492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610d03565b5050565b600080546001600160a01b031633146121b75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b600c546121d19030906001600160a01b0316600019612f4e565b50600190565b6000546001600160a01b031633146122255760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60185460ff16156122785760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ca6565b601854610100900460ff166122cf5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ca6565b6018546201000090046001600160a01b031661231557601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156123a057600080fd5b505af19250505080156123b1575060015b506018805460ff19166001179055600d546001600160a01b0316600090815260026020526040902054612710906123e990600a614574565b6123f3919061450a565b601255600d546001600160a01b031660009081526002602052604090205461271090612420906019614574565b61242a919061450a565b601355565b600061243c33848461305b565b5060019392505050565b6000546001600160a01b031633148061246957506001546001600160a01b031633145b6124db5760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572203d2f3d206f776e6572206f72207061727469616c206f776e6560448201527f722e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600b805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009094169288169290921792909217161790558061255383856145f8565b61255d91906145f8565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600a546000916125ae91620100008104821691166145f8565b600b5461ffff918216925066010000000000009004168110156126395760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610ca6565b50505050565b6000546001600160a01b0316331461268d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b0316331461273a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60038160ff161061278d5760405162461bcd60e51b815260206004820152601860248201527f4d617820626c6f636b20636f6f6c646f776e20697320332e00000000000000006044820152606401610ca6565b6018546040517fdb1c477100000000000000000000000000000000000000000000000000000000815260ff83166004820152620100009091046001600160a01b03169063db1c47719060240161171a565b6000546001600160a01b0316331461282c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612871573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612895919061461e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612906919061461e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298d919061461e565b90506001600160a01b038116612b2b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ff919061461e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a70919061461e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af9919061461e565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612b54565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556112b7903090600019612f4e565b6000546001600160a01b03163314612bdb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b601854610100900460ff1615612c335760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ca6565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612c6d573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612cbe5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d03565b6000546001600160a01b03163314612d665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b8284612d746009600a6144fb565b612d839064e8d4a50fff614574565b612d8d9190614574565b612d97919061450a565b6012558082612da86009600a6144fb565b612db79064e8d4a50fff614574565b612dc19190614574565b612dcb919061450a565b601381905560125411156126395760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de8919061463b565b6000546001600160a01b03163314612f235760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610ca6565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b038316612fa45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ca6565b6001600160a01b038216612ffa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610ca6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166130d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0383166131555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b600082116131cb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b0384166000908152600360205260408120548190819060ff16156131f95760019250613227565b6001600160a01b03861660009081526003602052604090205460ff16156132235760019150613227565b5060015b61323187876137cd565b156134375760185460ff166132885760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ca6565b82806132915750815b15613355576001600160a01b03871660009081526009602052604090205460ff161580156132d857506001600160a01b03861660009081526009602052604090205460ff16155b15613355576016548511156133555760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610ca6565b600c546001600160a01b03878116911614801590613371575081155b15613437576001600160a01b03861660009081526009602052604090205460ff1661343757601754856133b9886001600160a01b031660009081526002602052604090205490565b6133c39190614658565b11156134375760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610ca6565b6001600160a01b03871660009081526008602052604090205460019060ff168061347957506001600160a01b03871660009081526008602052604090205460ff165b15613482575060005b821561351e5760115460ff161580156134a25750601154610100900460ff165b1561351e5730600090815260026020526040902054601254811061351c5760135460145460ff161561350657601554600d546001600160a01b0316600090815260026020526040902054612710916134f991614574565b613503919061450a565b90505b808210613511578091505b61351a826138a2565b505b505b61352d88888884888888613539565b98975050505050505050565b601854600090610100900460ff16613639576135558888613c93565b601854610100900460ff16158015613572575061357288886137cd565b801561359757506001600160a01b03881660009081526007602052604090205460ff16155b80156135bc57506001600160a01b03871660009081526007602052604090205460ff16155b80156135c6575081155b156136395760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b61364388886137cd565b156136f6576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156136df575060408051601f3d908101601f191682019092526136dc9181019061463b565b60015b6136e857600080fd5b9050806136f457600080fd5b505b6001600160a01b0388166000908152600260205260408120805488929061371e908490614593565b909155506000905085613731578661373d565b61373d8986868a613dea565b6001600160a01b03891660009081526002602052604081208054929350839290919061376a908490614658565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137b691815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b038481169116148015906137fa57506000546001600160a01b03838116911614155b801561381157506000546001600160a01b03163214155b801561383657506001600160a01b03821660009081526006602052604090205460ff16155b801561385b57506001600160a01b03831660009081526006602052604090205460ff16155b801561387257506001600160a01b03821661dead14155b801561388657506001600160a01b03821615155b801561389b57506001600160a01b0383163014155b9392505050565b6011805460ff1916600117905560408051608081018252600b5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526000036139035750613c86565b306000908152600560209081526040808320600c546001600160a01b031684529091529020546000191461395c57306000908152600560209081526040808320600c546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613991576139916145aa565b6001600160a01b03928316602091820292909201810191909152600c54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a27919061461e565b81600181518110613a3a57613a3a6145aa565b6001600160a01b039283166020918202929092010152600c546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613a99908690600090869030904290600401614670565b600060405180830381600087803b158015613ab357600080fd5b505af1158015613ac7573d6000803e3d6000fd5b505050506000479050600080846060015161ffff16856020015161ffff1684613af09190614574565b613afa919061450a565b90506000856060015161ffff16866040015161ffff1685613b1b9190614574565b613b25919061450a565b90506000613b338284614658565b613b3d9086614593565b875190915061ffff1615613ba857600e546040516001600160a01b03909116906175309083906000818181858888f193505050503d8060008114613b9d576040519150601f19603f3d011682016040523d82523d6000602084013e613ba2565b606091505b50909450505b602087015161ffff1615613c1357600f546040516001600160a01b03909116906175309085906000818181858888f193505050503d8060008114613c08576040519150601f19603f3d011682016040523d82523d6000602084013e613c0d565b606091505b50909450505b604087015161ffff1615613c7e576010546040516001600160a01b03909116906175309084906000818181858888f193505050503d8060008114613c73576040519150601f19603f3d011682016040523d82523d6000602084013e613c78565b606091505b50909450505b505050505050505b506011805460ff19169055565b601854610100900460ff1615613d115760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610ca6565b613d1b82826137cd565b158015613d355750600d546001600160a01b038281169116145b15612164576001600160a01b038083166000908152600660205260409020805460ff191660011790556018805461ff001916610100179081905562010000900416613daa57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016126e0565b6000808415613e005750600a5461ffff16613e2a565b8315613e195750600a5462010000900461ffff16613e2a565b50600a54640100000000900461ffff165b6000612710613e398386614574565b613e43919061450a565b30600090815260026020526040812080549293508392909190613e67908490614658565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613eb68185614593565b979650505050505050565b8015158114612c6d57600080fd5b60008060408385031215613ee257600080fd5b8235613eed81613ec1565b91506020830135613efd81613ec1565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613f6057613f60613f08565b604052919050565b600067ffffffffffffffff821115613f8257613f82613f08565b5060051b60200190565b6001600160a01b0381168114612c6d57600080fd5b600082601f830112613fb257600080fd5b81356020613fc7613fc283613f68565b613f37565b82815260059290921b84018101918181019086841115613fe657600080fd5b8286015b8481101561400a578035613ffd81613f8c565b8352918301918301613fea565b509695505050505050565b6000806040838503121561402857600080fd5b823567ffffffffffffffff81111561403f57600080fd5b61404b85828601613fa1565b9250506020830135613efd81613ec1565b600060208083528351808285015260005b818110156140895785810183015185820160400152820161406d565b8181111561409b576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156140c457600080fd5b82356140cf81613f8c565b946020939093013593505050565b6000602082840312156140ef57600080fd5b813561389b81613f8c565b60008060006060848603121561410f57600080fd5b833561411a81613f8c565b9250602084013561412a81613f8c565b929592945050506040919091013590565b6000806040838503121561414e57600080fd5b50508035926020909101359150565b6000806040838503121561417057600080fd5b823567ffffffffffffffff8082111561418857600080fd5b61419486838701613fa1565b93506020915081850135818111156141ab57600080fd5b85019050601f810186136141be57600080fd5b80356141cc613fc282613f68565b81815260059190911b820183019083810190888311156141eb57600080fd5b928401925b82841015614209578335825292840192908401906141f0565b80955050505050509250929050565b803561ffff8116811461422a57600080fd5b919050565b60008060006060848603121561424457600080fd5b61424d84614218565b925061425b60208501614218565b915061426960408501614218565b90509250925092565b6000806040838503121561428557600080fd5b8235613eed81613f8c565b6000602082840312156142a257600080fd5b5035919050565b6000806000606084860312156142be57600080fd5b83356142c981613f8c565b925060208401356142d981613f8c565b915060408401356142e981613f8c565b809150509250925092565b60ff81168114612c6d57600080fd5b60006020828403121561431557600080fd5b813561389b816142f4565b6000806040838503121561433357600080fd5b823561433e81613f8c565b91506020830135613efd81613f8c565b6000806000806080858703121561436457600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b838110156143b95781516001600160a01b031687529582019590820190600101614394565b509495945050505050565b6040815260006143d76040830185614380565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614452578160001904821115614438576144386143e8565b8085161561444557918102915b93841c939080029061441c565b509250929050565b60008261446957506001610de8565b8161447657506000610de8565b816001811461448c5760028114614496576144b2565b6001915050610de8565b60ff8411156144a7576144a76143e8565b50506001821b610de8565b5060208310610133831016604e8410600b84101617156144d5575081810a610de8565b6144df8383614417565b80600019048211156144f3576144f36143e8565b029392505050565b600061389b60ff84168361445a565b600082614540577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000806040838503121561455857600080fd5b825161456381613ec1565b6020840151909250613efd816142f4565b600081600019048311821515161561458e5761458e6143e8565b500290565b6000828210156145a5576145a56143e8565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036145ef576145ef6143e8565b60010192915050565b600061ffff808316818516808303821115614615576146156143e8565b01949350505050565b60006020828403121561463057600080fd5b815161389b81613f8c565b60006020828403121561464d57600080fd5b815161389b81613ec1565b6000821982111561466b5761466b6143e8565b500190565b85815284602082015260a06040820152600061468f60a0830186614380565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220466527d41cd663749ef2c71ef61275d64fc03ee9253f843b72e466d999ec475564736f6c634300080d0033

Deployed Bytecode Sourcemap

4385:23013:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6083:73;;;;;;;;;;;;6114:42;6083:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6083:73:0;;;;;;;;6652:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6652:28:0;245:177:1;16951:151:0;;;;;;;;;;-1:-1:-1;16951:151:0;;;;;:::i;:::-;;:::i;:::-;;16522:172;;;;;;;;;;-1:-1:-1;16522:172:0;;;;;:::i;:::-;;:::i;5545:115::-;;;;;;;;;;-1:-1:-1;5545:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5545:115:0;3030:365:1;12474:80:0;;;;;;;;;;-1:-1:-1;12546:5:0;;;;;;;;;;;;;;;;;12474:80;;;;;;;:::i;6022:26::-;;;;;;;;;;-1:-1:-1;6022:26:0;;;;-1:-1:-1;;;;;6022:26:0;;;13174:159;;;;;;;;;;-1:-1:-1;13174:159:0;;;;;:::i;:::-;;:::i;:::-;;;4794:14:1;;4787:22;4769:41;;4757:2;4742:18;13174:159:0;4629:187:1;15711:140:0;;;;;;;;;;-1:-1:-1;15711:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15809:34:0;15785:4;15809:34;;;:25;:34;;;;;;;;;15711:140;19219:112;;;;;;;;;;;;;:::i;11589:201::-;;;;;;;;;;;;;:::i;17278:118::-;;;;;;;;;;;;;:::i;:::-;;;;5262:14:1;;5255:22;5237:41;;5326:4;5314:17;;;5309:2;5294:18;;5287:45;5210:18;17278:118:0;5073:265:1;12145:115:0;;;;;;;;;;;;;:::i;13840:306::-;;;;;;;;;;-1:-1:-1;13840:306:0;;;;;:::i;:::-;;:::i;18833:264::-;;;;;;;;;;-1:-1:-1;18833:264:0;;;;;:::i;:::-;;:::i;25376:418::-;;;;;;;;;;-1:-1:-1;25376:418:0;;;;;:::i;:::-;;:::i;10419:446::-;;;;;;;;;;-1:-1:-1;10419:446:0;;;;;:::i;:::-;;:::i;6760:28::-;;;;;;;;;;;;;;;;5819:42;;;;;;;;;;;;5857:4;5819:42;;6687:25;;;;;;;;;;;;;;;;12266:112;;;;;;;;;;;;;:::i;:::-;;;7372:4:1;7360:17;;;7342:36;;7330:2;7315:18;12266:112:0;7200:184:1;17404:406:0;;;;;;;;;;-1:-1:-1;17404:406:0;;;;;:::i;:::-;;:::i;16835:108::-;;;;;;;;;;-1:-1:-1;16835:108:0;;;;;:::i;:::-;;:::i;15859:140::-;;;;;;;;;;-1:-1:-1;15859:140:0;;;;;:::i;:::-;;:::i;18556:269::-;;;;;;;;;;-1:-1:-1;18556:269:0;;;;;:::i;:::-;;:::i;6055:21::-;;;;;;;;;;-1:-1:-1;6055:21:0;;;;-1:-1:-1;;;;;6055:21:0;;;6920:34;;;;;;;;;;-1:-1:-1;6920:34:0;;;;;;;;19720:215;;;;;;;;;;-1:-1:-1;19720:215:0;;;;;:::i;:::-;;:::i;9760:651::-;;;;;;;;;;-1:-1:-1;9760:651:0;;;;;:::i;:::-;;:::i;15576:127::-;;;;;;;;;;-1:-1:-1;15576:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15667:28:0;15643:4;15667:28;;;:19;:28;;;;;;;;;15576:127;6961:36;;;;;;;;;;-1:-1:-1;6961:36:0;;;;;;;;;;;16007:134;;;;;;;;;;-1:-1:-1;16007:134:0;;;;;:::i;:::-;;:::i;12645:84::-;;;;;;;;;;-1:-1:-1;12713:13:0;;-1:-1:-1;;;;;12713:13:0;12645:84;;15210:218;;;;;;;;;;-1:-1:-1;15210:218:0;;;;;:::i;:::-;;:::i;15436:132::-;;;;;;;;;;-1:-1:-1;15436:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15530:30:0;15506:4;15530:30;;;:21;:30;;;;;;;;;15436:132;19105:106;;;;;;;;;;;;;:::i;12876:117::-;;;;;;;;;;-1:-1:-1;12876:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12969:16:0;12942:7;12969:16;;;:7;:16;;;;;;;12876:117;10969:437;;;;;;;;;;;;;:::i;18261:287::-;;;;;;;;;;-1:-1:-1;18261:287:0;;;;;:::i;:::-;;:::i;14702:500::-;;;;;;;;;;-1:-1:-1;14702:500:0;;;;;:::i;:::-;;:::i;12560:79::-;;;;;;;;;;-1:-1:-1;12612:7:0;12630:6;-1:-1:-1;;;;;12630:6:0;12560:79;;13659:173;;;;;;;;;;;;;:::i;24634:544::-;;;;;;;;;;;;;:::i;12384:84::-;;;;;;;;;;-1:-1:-1;12458:7:0;;;;;;;;;;;;;;;;;12384:84;;13001:165;;;;;;;;;;-1:-1:-1;13001:165:0;;;;;:::i;:::-;;:::i;17818:433::-;;;;;;;;;;-1:-1:-1;17818:433:0;;;;;:::i;:::-;;:::i;6719:34::-;;;;;;;;;;-1:-1:-1;6719:34:0;;;;;;;;19943:263;;;;;;;;;;-1:-1:-1;19943:263:0;;;;;:::i;:::-;;:::i;5669:141::-;;;;;;;;;;-1:-1:-1;5669:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9249:6:1;9282:15;;;9264:34;;9334:15;;;9329:2;9314:18;;9307:43;9386:15;;;9366:18;;;9359:43;;;;9438:15;;;9433:2;9418:18;;9411:43;9226:3;9211:19;5669:141:0;9016:444:1;17110:160:0;;;;;;;;;;-1:-1:-1;17110:160:0;;;;;:::i;:::-;;:::i;12735:133::-;;;;;;;;;;-1:-1:-1;12735:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12837:19:0;;;12819:7;12837:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12735:133;14154:540;;;;;;;;;;-1:-1:-1;14154:540:0;;;;;:::i;:::-;;:::i;25186:182::-;;;;;;;;;;;;;:::i;16369:145::-;;;;;;;;;;-1:-1:-1;16369:145:0;;;;;:::i;:::-;;:::i;6304:271::-;;;;;;;;;;-1:-1:-1;6304:271:0;;;;;;;;-1:-1:-1;;;;;6304:271:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10554:15:1;;;10536:34;;10606:15;;;10601:2;10586:18;;10579:43;10658:15;;10638:18;;;10631:43;;;;10463:2;10448:18;6304:271:0;10225:455:1;19339:373:0;;;;;;;;;;-1:-1:-1;19339:373:0;;;;;:::i;:::-;;:::i;6606:39::-;;;;;;;;;;-1:-1:-1;6606:39:0;;;;;;;;;;;16702:125;;;;;;;;;;-1:-1:-1;16702:125:0;;;;;:::i;:::-;;:::i;16149:148::-;;;;;;;;;;-1:-1:-1;16149:148:0;;;;;:::i;:::-;;:::i;16951:151::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;;;;;;;;;17046:9:::1;::::0;:48:::1;::::0;;;;11608:14:1;;11601:22;17046:48:0::1;::::0;::::1;11583:41:1::0;11667:14;;11660:22;11640:18;;;11633:50;17046:9:0;;;::::1;-1:-1:-1::0;;;;;17046:9:0::1;::::0;:24:::1;::::0;11556:18:1;;17046:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16951:151:::0;;:::o;16522:172::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;16630:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;16630:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;16668:8;;16678:7;;16630:56:::1;;;:::i;13174:159::-:0;13249:4;13266:37;13275:10;13287:7;13296:6;13266:8;:37::i;:::-;-1:-1:-1;13321:4:0;13174:159;;;;;:::o;19219:112::-;19264:7;19309:13;5220:1;19309:2;:13;:::i;:::-;19291:14;;:32;;;;:::i;:::-;19284:39;;19219:112;:::o;11589:201::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;11675:6:::1;::::0;;11655:34:::1;::::0;-1:-1:-1;;;;;11675:6:0;;::::1;::::0;11655:19:::1;:34::i;:::-;11717:1;11700:19:::0;;-1:-1:-1;;11700:19:0::1;::::0;;11735:47:::1;::::0;11717:1;;11735:47:::1;::::0;11717:1;;11735:47:::1;11589:201::o:0;17278:118::-;17329:4;17335:5;17360:9;;;;;;;;;-1:-1:-1;;;;;17360:9:0;-1:-1:-1;;;;;17360:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17353:35;;;;17278:118;;:::o;12145:115::-;12200:7;5282:13;5220:1;5282:2;:13;:::i;:::-;5265:30;;5058:15;5265:30;:::i;:::-;12226:1;12215:12;12211:31;;12231:8;;;12211:31;5282:13;5220:1;5282:2;:13;:::i;:::-;5265:30;;5058:15;5265:30;:::i;13840:306::-;-1:-1:-1;;;;;13961:19:0;;13940:4;13961:19;;;:11;:19;;;;;;;;13981:10;13961:31;;;;;;;;-1:-1:-1;;13961:52:0;13957:126;;-1:-1:-1;;;;;14030:19:0;;;;;;:11;:19;;;;;;;;14050:10;14030:31;;;;;;;:41;;14065:6;;14030:19;:41;;14065:6;;14030:41;:::i;:::-;;;;-1:-1:-1;;13957:126:0;14102:36;14112:6;14120:9;14131:6;14102:9;:36::i;:::-;14095:43;13840:306;-1:-1:-1;;;;13840:306:0:o;18833:264::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;18975:3:::1;5282:13;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;18965:13;;;;:::i;:::-;18953:7:::0;18942;5282:13:::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;18932:17;;;;:::i;:::-;18931:29;;;;:::i;:::-;:48;;18923:109;;;::::0;-1:-1:-1;;;18923:109:0;;15446:2:1;18923:109:0::1;::::0;::::1;15428:21:1::0;15485:2;15465:18;;;15458:30;15524:34;15504:18;;;15497:62;15595:18;15575;;;15568:46;15631:19;;18923:109:0::1;15244:412:1::0;18923:109:0::1;19082:7:::0;19071;5282:13:::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;19061:17;;;;:::i;:::-;19060:29;;;;:::i;:::-;19043:14;:46:::0;-1:-1:-1;;18833:264:0:o;25376:418::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;25511:7:::1;:14;25492:8;:15;:33;25484:67;;;::::0;-1:-1:-1;;;25484:67:0;;15863:2:1;25484:67:0::1;::::0;::::1;15845:21:1::0;15902:2;15882:18;;;15875:30;15941:23;15921:18;;;15914:51;15982:18;;25484:67:0::1;15661:345:1::0;25484:67:0::1;25567:7;25562:225;25584:8;:15;25580:1;:19;;;25562:225;;;25654:7;25662:1;25654:10;;;;;;;;;;:::i;:::-;;;;;;;25629:21;25639:10;-1:-1:-1::0;;;;;12969:16:0;12942:7;12969:16;;;:7;:16;;;;;;;12876:117;25629:21:::1;:35;;25621:44;;;::::0;::::1;;25680:95;25698:10;25710:8;25719:1;25710:11;;;;;;;;;;:::i;:::-;;;;;;;5220:1;25734:2;:13;;;;:::i;:::-;25723:7;25731:1;25723:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25749:5;25756::::0;25763::::1;25770:4;25680:17;:95::i;:::-;-1:-1:-1::0;25601:3:0;::::1;::::0;::::1;:::i;:::-;;;;25562:225;;;;25376:418:::0;;:::o;10419:446::-;7605:6;;-1:-1:-1;;;;;7605:6:0;7615:10;7605:20;;:51;;-1:-1:-1;7629:13:0;;-1:-1:-1;;;;;7629:13:0;7646:10;7629:27;7605:51;7597:98;;;;-1:-1:-1;;;7597:98:0;;16582:2:1;7597:98:0;;;16564:21:1;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;16731:4;16711:18;;;16704:32;16753:19;;7597:98:0;16380:398:1;7597:98:0;-1:-1:-1;;;;;10514:22:0;::::1;10506:96;;;::::0;-1:-1:-1;;;10506:96:0;;16985:2:1;10506:96:0::1;::::0;::::1;16967:21:1::0;17024:2;17004:18;;;16997:30;17063:34;17043:18;;;17036:62;17134:31;17114:18;;;17107:59;17183:19;;10506:96:0::1;16783:425:1::0;10506:96:0::1;10621:16:::0;-1:-1:-1;;;;;10621:16:0;::::1;::::0;10613:90:::1;;;::::0;-1:-1:-1;;;10613:90:0;;16985:2:1;10613:90:0::1;::::0;::::1;16967:21:1::0;17024:2;17004:18;;;16997:30;17063:34;17043:18;;;17036:62;17134:31;17114:18;;;17107:59;17183:19;;10613:90:0::1;16783:425:1::0;10613:90:0::1;10724:16;10743:6:::0;;;10760:24;;-1:-1:-1;;10760:24:0::1;-1:-1:-1::0;;;;;10760:24:0;;::::1;::::0;;::::1;::::0;;;10800:47:::1;::::0;10743:6;;;::::1;::::0;;;10800:47:::1;::::0;10724:16;10800:47:::1;10495:370;10419:446:::0;:::o;12266:112::-;12318:5;5282:13;5220:1;5282:2;:13;:::i;:::-;5265:30;;5058:15;5265:30;:::i;:::-;12342:1;12331:12;12327:31;;12347:8;;;12327:31;-1:-1:-1;5220:1:0;;12266:112::o;17404:406::-;7605:6;;-1:-1:-1;;;;;7605:6:0;7615:10;7605:20;;:51;;-1:-1:-1;7629:13:0;;-1:-1:-1;;;;;7629:13:0;7646:10;7629:27;7605:51;7597:98;;;;-1:-1:-1;;;7597:98:0;;16582:2:1;7597:98:0;;;16564:21:1;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;16731:4;16711:18;;;16704:32;16753:19;;7597:98:0;16380:398:1;7597:98:0;5857:4:::1;17520:6;:21;;;;:65;;;;;5907:4;17562:7;:23;;;;17520:65;:117;;;;;5961:4;17606:11;:31;;;;17520:117;17512:170;;;::::0;-1:-1:-1;;;17512:170:0;;17415:2:1;17512:170:0::1;::::0;::::1;17397:21:1::0;17454:2;17434:18;;;17427:30;17493:25;17473:18;;;17466:53;17536:18;;17512:170:0::1;17213:347:1::0;17512:170:0::1;17693:9;:25:::0;;::::1;::::0;;::::1;17729:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17767:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17404:406::o;16835:108::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;16904:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16904:31:0::1;::::0;::::1;160:74:1::0;16904:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;16904:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16835:108:::0;:::o;15859:140::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;-1:-1:-1;;;;;15951:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15951:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15859:140::o;18556:269::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;18697:4:::1;5282:13;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;18687:14;;;;:::i;:::-;18675:7:::0;18664;5282:13:::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;18654:17;;;;:::i;:::-;18653:29;;;;:::i;:::-;:49;;18645:117;;;::::0;-1:-1:-1;;;18645:117:0;;17767:2:1;18645:117:0::1;::::0;::::1;17749:21:1::0;17806:2;17786:18;;;17779:30;17845:34;17825:18;;;17818:62;17916:25;17896:18;;;17889:53;17959:19;;18645:117:0::1;17565:419:1::0;18645:117:0::1;18810:7:::0;18799;5282:13:::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;18789:17;;;;:::i;:::-;18788:29;;;;:::i;:::-;18773:12;:44:::0;-1:-1:-1;;18556:269:0:o;19720:215::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;19850:3:::1;19824:22;:29;;19816:62;;;::::0;-1:-1:-1;;;19816:62:0;;18191:2:1;19816:62:0::1;::::0;::::1;18173:21:1::0;18230:2;18210:18;;;18203:30;18269:22;18249:18;;;18242:50;18309:18;;19816:62:0::1;17989:344:1::0;19816:62:0::1;19889:13;:38:::0;19720:215::o;9760:651::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;-1:-1:-1;;;;;9839:22:0;::::1;9831:96;;;::::0;-1:-1:-1;;;9831:96:0;;16985:2:1;9831:96:0::1;::::0;::::1;16967:21:1::0;17024:2;17004:18;;;16997:30;17063:34;17043:18;;;17036:62;17134:31;17114:18;;;17107:59;17183:19;;9831:96:0::1;16783:425:1::0;9831:96:0::1;9946:16:::0;-1:-1:-1;;;;;9946:16:0;::::1;::::0;9938:90:::1;;;::::0;-1:-1:-1;;;9938:90:0;;16985:2:1;9938:90:0::1;::::0;::::1;16967:21:1::0;17024:2;17004:18;;;16997:30;17063:34;17043:18;;;17036:62;17134:31;17114:18;;;17107:59;17183:19;;9938:90:0::1;16783:425:1::0;9938:90:0::1;10059:6;::::0;;10039:34:::1;::::0;-1:-1:-1;;;;;10059:6:0;;::::1;::::0;10039:19:::1;:34::i;:::-;10084:35;10104:8;10114:4;10084:19;:35::i;:::-;10163:1;10153:6:::0;;-1:-1:-1;;;;;10153:6:0::1;12969:16:::0;;:7;:16;;;;;;10143:21;10140:134:::1;;10199:6;::::0;;-1:-1:-1;;;;;10199:6:0::1;12969:16:::0;;;:7;:16;;;;;;;10181:81:::1;::::0;10199:6;10207:8;;10217:17:::1;12876:117:::0;10181:81:::1;;10140:134;10294:16;10313:6:::0;;-1:-1:-1;;;;;10330:17:0;;::::1;-1:-1:-1::0;;10330:17:0;::::1;::::0;::::1;::::0;;10363:40:::1;::::0;10313:6;;;::::1;::::0;;;10363:40:::1;::::0;10294:16;10363:40:::1;9820:591;9760:651:::0;:::o;16007:134::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;-1:-1:-1;;;;;16095:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16095:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16007:134::o;15210:218::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;15294:14:::1;::::0;::::1;;15293:15;15285:24;;;::::0;::::1;;15351:4;-1:-1:-1::0;;;;;15328:28:0;::::1;::::0;15320:55:::1;;;::::0;-1:-1:-1;;;15320:55:0;;18540:2:1;15320:55:0::1;::::0;::::1;18522:21:1::0;18579:2;18559:18;;;18552:30;18618:16;18598:18;;;18591:44;18652:18;;15320:55:0::1;18338:338:1::0;15320:55:0::1;15386:9;:34:::0;;-1:-1:-1;;;;;15386:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15210:218::o;19105:106::-;19146:7;19189:13;5220:1;19189:2;:13;:::i;:::-;19173:12;;:30;;;;:::i;10969:437::-;7605:6;;-1:-1:-1;;;;;7605:6:0;7615:10;7605:20;;:51;;-1:-1:-1;7629:13:0;;-1:-1:-1;;;;;7629:13:0;7646:10;7629:27;7605:51;7597:98;;;;-1:-1:-1;;;7597:98:0;;16582:2:1;7597:98:0;;;16564:21:1;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;16731:4;16711:18;;;16704:32;16753:19;;7597:98:0;16380:398:1;7597:98:0;11067:5:::1;11057:6:::0;;-1:-1:-1;;;;;11057:6:0;;::::1;11037:27:::0;;:19:::1;:27;::::0;;;;;:35;;-1:-1:-1;;11037:35:0;;::::1;::::0;;;11057:6;11103:13;;;::::1;11083:34:::0;;;;;:42;;;;::::1;::::0;;;11155:6;;11193:13;;-1:-1:-1;;11217:19:0;;::::1;::::0;;11247:26;::::1;::::0;;;11289:42;;11155:6;;::::1;::::0;11193:13;::::1;::::0;11067:5;11155:6;;11289:42:::1;::::0;11067:5;;11289:42:::1;11347:51;::::0;11395:1:::1;::::0;-1:-1:-1;;;;;11347:51:0;::::1;::::0;::::1;::::0;11395:1;;11347:51:::1;11026:380;;10969:437::o:0;18261:287::-;7605:6;;-1:-1:-1;;;;;7605:6:0;7615:10;7605:20;;:51;;-1:-1:-1;7629:13:0;;-1:-1:-1;;;;;7629:13:0;7646:10;7629:27;7605:51;7597:98;;;;-1:-1:-1;;;7597:98:0;;16582:2:1;7597:98:0;;;16564:21:1;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;16731:4;16711:18;;;16704:32;16753:19;;7597:98:0;16380:398:1;7597:98:0;18398:11:::1;:42:::0;;-1:-1:-1;;;;;18398:42:0;;::::1;-1:-1:-1::0;;18398:42:0;;::::1;;::::0;;;18451:19;:38;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18500:20;:40;;;;;::::1;::::0;::::1;;::::0;;18261:287::o;14702:500::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;14783:16;::::1;;14794:5;14783:16:::0;14779:416:::1;;-1:-1:-1::0;;;;;14816:13:0;;::::1;14832:5;14816:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14816:21:0::1;::::0;;14852:9:::1;::::0;:32;;;;;::::1;::::0;::::1;18849:74:1::0;;;;18939:18;;;18932:50;;;;14852:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18822:18:1;;14852:32:0::1;18681:307:1::0;14779:416:0::1;14921:17;::::0;:22;14917:136:::1;;15010:6;14990:17;;14972:15;:35;;;;:::i;:::-;:44;14964:73;;;::::0;-1:-1:-1;;;14964:73:0;;19195:2:1;14964:73:0::1;::::0;::::1;19177:21:1::0;19234:2;19214:18;;;19207:30;19273:18;19253;;;19246:46;19309:18;;14964:73:0::1;18993:340:1::0;14964:73:0::1;-1:-1:-1::0;;;;;15067:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15067:20:0::1;15083:4;15067:20:::0;;::::1;::::0;;;15122:15:::1;15102:17;:35:::0;;;15152:9:::1;::::0;:31;;;;;;;::::1;18849:74:1::0;;;;18939:18;;;18932:50;15152:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18822:18:1;;15152:31:0::1;18681:307:1::0;14779:416:0::1;14702:500:::0;;:::o;13659:173::-;13723:4;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;13772:9:::1;::::0;13740:62:::1;::::0;13757:4:::1;::::0;-1:-1:-1;;;;;13772:9:0::1;-1:-1:-1::0;;13740:8:0::1;:62::i;:::-;-1:-1:-1::0;13820:4:0::1;13659:173:::0;:::o;24634:544::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;24696:14:::1;::::0;::::1;;24695:15;24687:52;;;::::0;-1:-1:-1;;;24687:52:0;;19540:2:1;24687:52:0::1;::::0;::::1;19522:21:1::0;19579:2;19559:18;;;19552:30;19618:26;19598:18;;;19591:54;19662:18;;24687:52:0::1;19338:348:1::0;24687:52:0::1;24758:16;::::0;::::1;::::0;::::1;;;24750:53;;;::::0;-1:-1:-1;;;24750:53:0;;19893:2:1;24750:53:0::1;::::0;::::1;19875:21:1::0;19932:2;19912:18;;;19905:30;19971:26;19951:18;;;19944:54;20015:18;;24750:53:0::1;19691:348:1::0;24750:53:0::1;24825:9;::::0;;;::::1;-1:-1:-1::0;;;;;24825:9:0::1;24814:99;;24865:9;:36:::0;;;::::1;24895:4;24865:36:::0;::::1;;::::0;;24814:99:::1;24927:9;::::0;24947:6:::1;::::0;24927:85:::1;::::0;;;;-1:-1:-1;;;;;24947:6:0;;::::1;24927:85;::::0;::::1;20267:74:1::0;20389:10;24962:12:0::1;20377:23:1::0;20357:18;;;20350:51;20449:18;24984:15:0::1;20437:31:1::0;20417:18;;;20410:59;5220:1:0::1;20485:18:1::0;;;20478:45;24927:9:0;;;::::1;;::::0;:19:::1;::::0;20239::1;;24927:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;25034:14:0::1;:21:::0;;-1:-1:-1;;25034:21:0::1;25051:4;25034:21;::::0;;25093:6:::1;::::0;-1:-1:-1;;;;;25093:6:0::1;-1:-1:-1::0;12969:16:0;;;:7;:16;;;;;;25109:5:::1;::::0;25083:22:::1;::::0;25103:2:::1;25083:22;:::i;:::-;25082:32;;;;:::i;:::-;25066:13;:48:::0;25149:6:::1;::::0;-1:-1:-1;;;;;25149:6:0::1;12942:7:::0;12969:16;;;:7;:16;;;;;;25165:5:::1;::::0;25139:22:::1;::::0;25159:2:::1;25139:22;:::i;:::-;25138:32;;;;:::i;:::-;25125:10;:45:::0;24634:544::o;13001:165::-;13079:4;13096:40;13106:10;13118:9;13129:6;13096:9;:40::i;:::-;-1:-1:-1;13154:4:0;;13001:165;-1:-1:-1;;;13001:165:0:o;17818:433::-;7605:6;;-1:-1:-1;;;;;7605:6:0;7615:10;7605:20;;:51;;-1:-1:-1;7629:13:0;;-1:-1:-1;;;;;7629:13:0;7646:10;7629:27;7605:51;7597:98;;;;-1:-1:-1;;;7597:98:0;;16582:2:1;7597:98:0;;;16564:21:1;16621:2;16601:18;;;16594:30;16660:34;16640:18;;;16633:62;16731:4;16711:18;;;16704:32;16753:19;;7597:98:0;16380:398:1;7597:98:0;17927:7:::1;:29:::0;;::::1;18003:27:::0;;::::1;::::0;::::1;::::0;17967:25;;::::1;::::0;::::1;::::0;;;;17927:29;;::::1;17967:25:::0;;;;;;;::::1;18003:27;;::::0;;18022:8;18061:19:::1;17985:7:::0;17947:9;18061:19:::1;:::i;:::-;:30;;;;:::i;:::-;18041:7;:50:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;18137:9:::1;:17:::0;-1:-1:-1;;18118:36:0::1;::::0;18137:17;;::::1;::::0;::::1;::::0;18118:16:::1;:36;:::i;:::-;18173:7;:17:::0;18102:52:::1;::::0;;::::1;::::0;-1:-1:-1;18173:17:0;;::::1;;:26:::0;-1:-1:-1;18173:26:0::1;18165:78;;;::::0;-1:-1:-1;;;18165:78:0;;20965:2:1;18165:78:0::1;::::0;::::1;20947:21:1::0;21004:2;20984:18;;;20977:30;21043:34;21023:18;;;21016:62;21114:9;21094:18;;;21087:37;21141:19;;18165:78:0::1;20763:403:1::0;18165:78:0::1;17916:335;17818:433:::0;;;:::o;19943:263::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;20052:19:::1;:33:::0;;-1:-1:-1;;20052:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20096:22:::1;:47:::0;;-1:-1:-1;;20096:47:0::1;::::0;::::1;;;::::0;;20159:39:::1;::::0;4769:41:1;;;20159:39:0::1;::::0;4757:2:1;4742:18;20159:39:0::1;;;;;;;;19943:263:::0;;:::o;17110:160::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;17192:1:::1;17183:6;:10;;;17175:47;;;::::0;-1:-1:-1;;;17175:47:0;;21373:2:1;17175:47:0::1;::::0;::::1;21355:21:1::0;21412:2;21392:18;;;21385:30;21451:26;21431:18;;;21424:54;21495:18;;17175:47:0::1;21171:348:1::0;17175:47:0::1;17233:9;::::0;:29:::1;::::0;;;;7372:4:1;7360:17;;17233:29:0::1;::::0;::::1;7342:36:1::0;17233:9:0;;;::::1;-1:-1:-1::0;;;;;17233:9:0::1;::::0;:21:::1;::::0;7315:18:1;;17233:29:0::1;7200:184:1::0;14154:540:0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;14223:20:::1;14256:9;14223:43;;14277:16;14307:10;-1:-1:-1::0;;;;;14307:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14296:40:0::1;;14345:4;14352:10;-1:-1:-1::0;;;;;14352:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14296:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22033:15:1;;;14296:74:0::1;::::0;::::1;22015:34:1::0;22085:15;;22065:18;;;22058:43;21927:18;;14296:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14277:93:::0;-1:-1:-1;;;;;;14385:22:0;::::1;14381:200;;14444:10;-1:-1:-1::0;;;;;14444:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14433:43:0::1;;14485:4;14492:10;-1:-1:-1::0;;;;;14492:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14433:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22033:15:1;;;14433:77:0::1;::::0;::::1;22015:34:1::0;22085:15;;22065:18;;;22058:43;21927:18;;14433:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14424:6;:86:::0;;-1:-1:-1;;14424:86:0::1;-1:-1:-1::0;;;;;14424:86:0;;;::::1;::::0;;;::::1;::::0;;14381:200:::1;;;14552:6;:17:::0;;-1:-1:-1;;14552:17:0::1;-1:-1:-1::0;;;;;14552:17:0;::::1;;::::0;;14381:200:::1;14591:9;:22:::0;;-1:-1:-1;;14591:22:0::1;-1:-1:-1::0;;;;;14591:22:0;::::1;::::0;;::::1;::::0;;;14624:62:::1;::::0;14641:4:::1;::::0;-1:-1:-1;;14624:8:0::1;:62::i;25186:182::-:0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;25253:16:::1;::::0;::::1;::::0;::::1;;;25252:17;25244:58;;;::::0;-1:-1:-1;;;25244:58:0;;22314:2:1;25244:58:0::1;::::0;::::1;22296:21:1::0;22353:2;22333:18;;;22326:30;22392;22372:18;;;22365:58;22440:18;;25244:58:0::1;22112:352:1::0;25244:58:0::1;25321:6;::::0;;25313:47:::1;::::0;-1:-1:-1;;;;;25321:6:0;;::::1;::::0;25338:21:::1;25313:47:::0;::::1;;;::::0;25338:21;;25313:47;25321:6;25313:47;25338:21;25321:6;25313:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25186:182::o:0;16369:145::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;16459:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;18867:55:1;;;16459:47:0::1;::::0;::::1;18849:74:1::0;18966:14;;18959:22;18939:18;;;18932:50;16459:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;18822:18:1;;16459:47:0::1;18681:307:1::0;19339:373:0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;19539:16;19519;5282:13:::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;19509:26;;;;:::i;:::-;19508:47;;;;:::i;:::-;19492:13;:63:::0;19607:13;19590;5282::::1;5220:1;5282:2;:13;:::i;:::-;5265:30;::::0;5058:15:::1;5265:30;:::i;:::-;19580:23;;;;:::i;:::-;19579:41;;;;:::i;:::-;19566:10;:54:::0;;;19639:13:::1;::::0;:27:::1;;19631:73;;;::::0;-1:-1:-1;;;19631:73:0;;22671:2:1;19631:73:0::1;::::0;::::1;22653:21:1::0;22710:2;22690:18;;;22683:30;22749:34;22729:18;;;22722:62;22820:3;22800:18;;;22793:31;22841:19;;19631:73:0::1;22469:397:1::0;16702:125:0;16787:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;16787:32:0;;;160:74:1;16763:4:0;;16787:9;;;;;:23;;133:18:1;;16787:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16149:148::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;11277:2:1;7478:50:0;;;11259:21:1;11316:2;11296:18;;;11289:30;-1:-1:-1;;;11335:18:1;;;11328:47;11392:18;;7478:50:0;11075:341:1;7478:50:0;-1:-1:-1;;;;;16245:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16245:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16149:148::o;13341:310::-;-1:-1:-1;;;;;13436:20:0;;13428:52;;;;-1:-1:-1;;;13428:52:0;;23323:2:1;13428:52:0;;;23305:21:1;23362:2;23342:18;;;23335:30;23401:21;23381:18;;;23374:49;23440:18;;13428:52:0;23121:343:1;13428:52:0;-1:-1:-1;;;;;13499:21:0;;13491:53;;;;-1:-1:-1;;;13491:53:0;;23323:2:1;13491:53:0;;;23305:21:1;23362:2;23342:18;;;23335:30;23401:21;23381:18;;;23374:49;23440:18;;13491:53:0;23121:343:1;13491:53:0;-1:-1:-1;;;;;13557:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13610:33;;391:25:1;;;13610:33:0;;364:18:1;13610:33:0;;;;;;;13341:310;;;:::o;20580:2055::-;20659:4;-1:-1:-1;;;;;20684:18:0;;20676:68;;;;-1:-1:-1;;;20676:68:0;;23671:2:1;20676:68:0;;;23653:21:1;23710:2;23690:18;;;23683:30;23749:34;23729:18;;;23722:62;23820:7;23800:18;;;23793:35;23845:19;;20676:68:0;23469:401:1;20676:68:0;-1:-1:-1;;;;;20763:16:0;;20755:64;;;;-1:-1:-1;;;20755:64:0;;24077:2:1;20755:64:0;;;24059:21:1;24116:2;24096:18;;;24089:30;24155:34;24135:18;;;24128:62;24226:5;24206:18;;;24199:33;24249:19;;20755:64:0;23875:399:1;20755:64:0;20847:1;20838:6;:10;20830:64;;;;-1:-1:-1;;;20830:64:0;;24481:2:1;20830:64:0;;;24463:21:1;24520:2;24500:18;;;24493:30;24559:34;24539:18;;;24532:62;24630:11;24610:18;;;24603:39;24659:19;;20830:64:0;24279:405:1;20830:64:0;-1:-1:-1;;;;;20993:13:0;;20905:8;20993:13;;;:7;:13;;;;;;20905:8;;;;20993:13;;20989:162;;;21029:4;21023:10;;20989:162;;;-1:-1:-1;;;;;21055:11:0;;;;;;:7;:11;;;;;;;;21051:100;;;21090:4;21083:11;;21051:100;;;-1:-1:-1;21135:4:0;21051:100;21164:20;21175:4;21181:2;21164:10;:20::i;:::-;21161:641;;;21205:14;;;;21201:89;;21240:34;;-1:-1:-1;;;21240:34:0;;24891:2:1;21240:34:0;;;24873:21:1;24930:2;24910:18;;;24903:30;24969:26;24949:18;;;24942:54;25013:18;;21240:34:0;24689:348:1;21201:89:0;21307:3;:11;;;;21314:4;21307:11;21304:231;;;-1:-1:-1;;;;;21343:27:0;;;;;;:21;:27;;;;;;;;21342:28;:58;;;;-1:-1:-1;;;;;;21375:25:0;;;;;;:21;:25;;;;;;;;21374:26;21342:58;21338:182;;;21443:12;;21433:6;:22;;21425:75;;;;-1:-1:-1;;;21425:75:0;;25244:2:1;21425:75:0;;;25226:21:1;25283:2;25263:18;;;25256:30;25322:34;25302:18;;;25295:62;25393:10;25373:18;;;25366:38;25421:19;;21425:75:0;25042:404:1;21425:75:0;21566:9;;-1:-1:-1;;;;;21552:24:0;;;21566:9;;21552:24;;;;:33;;;21581:4;21580:5;21552:33;21549:242;;;-1:-1:-1;;;;;21611:25:0;;;;;;:21;:25;;;;;;;;21606:170;;21695:14;;21685:6;21669:13;21679:2;-1:-1:-1;;;;;12969:16:0;12942:7;12969:16;;;:7;:16;;;;;;;12876:117;21669:13;:22;;;;:::i;:::-;:40;;21661:95;;;;-1:-1:-1;;;21661:95:0;;25786:2:1;21661:95:0;;;25768:21:1;25825:2;25805:18;;;25798:30;25864:34;25844:18;;;25837:62;25935:12;25915:18;;;25908:40;25965:19;;21661:95:0;25584:406:1;21661:95:0;-1:-1:-1;;;;;21847:25:0;;21814:12;21847:25;;;:19;:25;;;;;;21829:4;;21847:25;;;:52;;-1:-1:-1;;;;;;21876:23:0;;;;;;:19;:23;;;;;;;;21847:52;21844:98;;;-1:-1:-1;21925:5:0;21844:98;21958:4;21954:593;;;21984:6;;;;21983:7;:47;;;;-1:-1:-1;22011:19:0;;;;;;;21983:47;21979:557;;;22114:4;22065:28;12969:16;;;:7;:16;;;;;;22167:13;;22143:37;;22139:382;;22223:10;;22259:22;;;;22256:96;;;22316:13;;22306:6;;-1:-1:-1;;;;;22306:6:0;12942:7;12969:16;;;:7;:16;;;;;;6008:5;;22296:33;;;:::i;:::-;22295:54;;;;:::i;:::-;22285:64;;22256:96;22401:7;22377:20;:31;22374:71;;22435:7;22412:30;;22374:71;22467:34;22480:20;22467:12;:34::i;:::-;22182:339;22139:382;22046:490;21979:557;22565:62;22583:4;22589:2;22593:6;22601:7;22610:3;22615:4;22621:5;22565:17;:62::i;:::-;22558:69;20580:2055;-1:-1:-1;;;;;;;;20580:2055:0:o;25802:1023::-;25958:16;;25936:4;;25958:16;;;;;25953:298;;25991:28;26010:4;26016:2;25991:18;:28::i;:::-;26039:16;;;;;;;26038:17;:41;;;;;26059:20;26070:4;26076:2;26059:10;:20::i;:::-;26038:77;;;;-1:-1:-1;;;;;;26084:31:0;;;;;;:25;:31;;;;;;;;26083:32;26038:77;:111;;;;-1:-1:-1;;;;;;26120:29:0;;;;;;:25;:29;;;;;;;;26119:30;26038:111;:121;;;;;26154:5;26153:6;26038:121;26034:206;;;26180:44;;-1:-1:-1;;;26180:44:0;;26197:2:1;26180:44:0;;;26179:21:1;26236:2;26216:18;;;26209:30;26275:34;26255:18;;;26248:62;26346:4;26326:18;;;26319:32;26368:19;;26180:44:0;25995:398:1;26034:206:0;26267:20;26278:4;26284:2;26267:10;:20::i;:::-;26263:314;;;26335:9;;:37;;;;;-1:-1:-1;;;;;26679:15:1;;;26335:37:0;;;26661:34:1;26731:15;;;26711:18;;;26704:43;26763:18;;;26756:34;;;26304:12:0;;26335:9;;;;;:19;;26573:18:1;;26335:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;26335:37:0;;;;;;;;-1:-1:-1;;26335:37:0;;;;;;;;;;;;:::i;:::-;;;26331:163;;26470:8;;;26331:163;26423:5;-1:-1:-1;26514:7:0;26510:56;;26542:8;;;26510:56;26289:288;26263:314;-1:-1:-1;;;;;26589:13:0;;;;;;:7;:13;;;;;:23;;26606:6;;26589:13;:23;;26606:6;;26589:23;:::i;:::-;;;;-1:-1:-1;26623:22:0;;-1:-1:-1;26649:7:0;26648:55;;26697:6;26648:55;;;26660:34;26670:4;26676:3;26681:4;26687:6;26660:9;:34::i;:::-;-1:-1:-1;;;;;26714:11:0;;;;;;:7;:11;;;;;:29;;26623:80;;-1:-1:-1;26623:80:0;;26714:11;;;:29;;26623:80;;26714:29;:::i;:::-;;;;;;;;26776:2;-1:-1:-1;;;;;26761:34:0;26770:4;-1:-1:-1;;;;;26761:34:0;;26780:14;26761:34;;;;391:25:1;;379:2;364:18;;245:177;26761:34:0;;;;;;;;-1:-1:-1;26813:4:0;;25802:1023;-1:-1:-1;;;;;;;;25802:1023:0:o;20214:358::-;20283:4;20315:6;;-1:-1:-1;;;;;20307:14:0;;;20315:6;;20307:14;;;;:43;;-1:-1:-1;20344:6:0;;-1:-1:-1;;;;;20338:12:0;;;20344:6;;20338:12;;20307:43;:79;;;;-1:-1:-1;20380:6:0;;-1:-1:-1;;;;;20380:6:0;20367:9;:19;;20307:79;:118;;;;-1:-1:-1;;;;;;20404:21:0;;;;;;:17;:21;;;;;;;;20403:22;20307:118;:159;;;;-1:-1:-1;;;;;;20443:23:0;;;;;;:17;:23;;;;;;;;20442:24;20307:159;:186;;;;-1:-1:-1;;;;;;20483:10:0;;6114:42;20483:10;;20307:186;:219;;;;-1:-1:-1;;;;;;20510:16:0;;;;20307:219;:257;;;;-1:-1:-1;;;;;;20543:21:0;;20559:4;20543:21;;20307:257;20300:264;20214:358;-1:-1:-1;;;20214:358:0:o;22643:1466::-;7380:6;:13;;-1:-1:-1;;7380:13:0;7389:4;7380:13;;;22727:30:::1;::::0;;::::1;::::0;::::1;::::0;;22750:7:::1;22727:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;7380:6;22772:21;22768:60:::1;;22810:7;;;22768:60;22863:4;22843:26;::::0;;;:11:::1;:26;::::0;;;;;;;22878:9:::1;::::0;-1:-1:-1;;;;;22878:9:0::1;22843:46:::0;;;;;;;;-1:-1:-1;;22843:67:0::1;22840:165;;22947:4;22927:26;::::0;;;:11:::1;:26;::::0;;;;;;;22962:9:::1;::::0;-1:-1:-1;;;;;22962:9:0::1;22927:46:::0;;;;;;;-1:-1:-1;;22927:66:0;;22840:165:::1;23049:16;::::0;;23063:1:::1;23049:16:::0;;;;;::::1;::::0;;23025:21:::1;::::0;23049:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23049:16:0::1;23025:40;;23094:4;23076;23081:1;23076:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23076:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23120:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23076:7;;23120:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23110:4;23115:1;23110:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23110:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23149:9:::1;::::0;:199:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23224:20;;23149:9:::1;::::0;23275:4;;23302::::1;::::0;23322:15:::1;::::0;23149:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23361:18;23382:21;23361:42;;23414:12;23437:22:::0;23494:6:::1;:16;;;23462:48;;23476:6;:14;;;23463:27;;:10;:27;;;;:::i;:::-;23462:48;;;;:::i;:::-;23437:73;;23521:23;23580:6;:16;;;23547:49;;23561:6;:15;;;23548:28;;:10;:28;;;;:::i;:::-;23547:49;;;;:::i;:::-;23521:75:::0;-1:-1:-1;23607:24:0::1;23648:32;23521:75:::0;23648:14;:32:::1;:::i;:::-;23634:47;::::0;:10;:47:::1;:::i;:::-;23696:16:::0;;23607:74;;-1:-1:-1;23696:20:0::1;;::::0;23692:133:::1;;23746:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;23746:21:0;;::::1;::::0;23803:5:::1;::::0;23780:16;;23746:67:::1;::::0;;;23780:16;23746:21;23803:5;23746:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23733:80:0;;-1:-1:-1;;23692:133:0::1;23839:14;::::0;::::1;::::0;:18:::1;;::::0;23835:127:::1;;23887:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;23887:19:0;;::::1;::::0;23940:5:::1;::::0;23919:14;;23887:63:::1;::::0;;;23919:14;23887:19;23940:5;23887:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23874:76:0;;-1:-1:-1;;23835:127:0::1;23976:15;::::0;::::1;::::0;:19:::1;;::::0;23972:130:::1;;24025:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;24025:20:0;;::::1;::::0;24080:5:::1;::::0;24058:15;;24025:65:::1;::::0;;;24058:15;24025:20;24080:5;24025:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24012:78:0;;-1:-1:-1;;23972:130:0::1;22716:1393;;;;;;;7404:1;-1:-1:-1::0;7416:6:0;:14;;-1:-1:-1;;7416:14:0;;;22643:1466::o;24117:509::-;24200:16;;;;;;;24199:17;24191:65;;;;-1:-1:-1;;;24191:65:0;;27823:2:1;24191:65:0;;;27805:21:1;27862:2;27842:18;;;27835:30;27901:34;27881:18;;;27874:62;27972:5;27952:18;;;27945:33;27995:19;;24191:65:0;27621:399:1;24191:65:0;24272:20;24283:4;24289:2;24272:10;:20::i;:::-;24271:21;:37;;;;-1:-1:-1;24302:6:0;;-1:-1:-1;;;;;24296:12:0;;;24302:6;;24296:12;24271:37;24267:352;;;-1:-1:-1;;;;;24325:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;24325:30:0;24351:4;24325:30;;;24370:16;:23;;-1:-1:-1;;24370:23:0;24325:30;24370:23;;;;;24419:9;;;;24408:107;;24463:9;:36;;;;24493:4;24463:36;;;;;24408:107;24529:19;:26;;-1:-1:-1;;24529:26:0;;;;;24575:32;;-1:-1:-1;4769:41:1;;24575:32:0;;4757:2:1;4742:18;24575:32:0;4629:187:1;26833:562:0;26921:7;26941:18;26974:3;26970:205;;;-1:-1:-1;27007:9:0;:16;;;26970:205;;;27045:4;27041:134;;;-1:-1:-1;27079:9:0;:17;;;;;;27041:134;;;-1:-1:-1;27142:9:0;:21;;;;;;27041:134;27187:17;6008:5;27207:19;27216:10;27207:6;:19;:::i;:::-;:38;;;;:::i;:::-;27274:4;27258:22;;;;:7;:22;;;;;:35;;27187:58;;-1:-1:-1;27187:58:0;;27258:22;;;:35;;27187:58;;27258:35;:::i;:::-;;;;-1:-1:-1;;27309:40:0;;391:25:1;;;27332:4:0;;-1:-1:-1;;;;;27309:40:0;;;;;379:2:1;364:18;27309:40:0;;;;;;;27369:18;27378:9;27369:6;:18;:::i;:::-;27362:25;26833:562;-1:-1:-1;;;;;;;26833:562:0:o;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:656::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3838:6;3835:1;3832:13;3829:91;;;3908:1;3903:2;3894:6;3883:9;3879:22;3875:31;3868:42;3829:91;-1:-1:-1;3972:2:1;3960:15;-1:-1:-1;;3956:88:1;3941:104;;;;4047:2;3937:113;;3400:656;-1:-1:-1;;;3400:656:1:o;4309:315::-;4377:6;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;4614:2;4599:18;;;;4586:32;;-1:-1:-1;;;4309:315:1:o;4821:247::-;4880:6;4933:2;4921:9;4912:7;4908:23;4904:32;4901:52;;;4949:1;4946;4939:12;4901:52;4988:9;4975:23;5007:31;5032:5;5007:31;:::i;5343:456::-;5420:6;5428;5436;5489:2;5477:9;5468:7;5464:23;5460:32;5457:52;;;5505:1;5502;5495:12;5457:52;5544:9;5531:23;5563:31;5588:5;5563:31;:::i;:::-;5613:5;-1:-1:-1;5670:2:1;5655:18;;5642:32;5683:33;5642:32;5683:33;:::i;:::-;5343:456;;5735:7;;-1:-1:-1;;;5789:2:1;5774:18;;;;5761:32;;5343:456::o;5804:248::-;5872:6;5880;5933:2;5921:9;5912:7;5908:23;5904:32;5901:52;;;5949:1;5946;5939:12;5901:52;-1:-1:-1;;5972:23:1;;;6042:2;6027:18;;;6014:32;;-1:-1:-1;5804:248:1:o;6057:1138::-;6175:6;6183;6236:2;6224:9;6215:7;6211:23;6207:32;6204:52;;;6252:1;6249;6242:12;6204:52;6292:9;6279:23;6321:18;6362:2;6354:6;6351:14;6348:34;;;6378:1;6375;6368:12;6348:34;6401:61;6454:7;6445:6;6434:9;6430:22;6401:61;:::i;:::-;6391:71;;6481:2;6471:12;;6536:2;6525:9;6521:18;6508:32;6565:2;6555:8;6552:16;6549:36;;;6581:1;6578;6571:12;6549:36;6604:24;;;-1:-1:-1;6659:4:1;6651:13;;6647:27;-1:-1:-1;6637:55:1;;6688:1;6685;6678:12;6637:55;6724:2;6711:16;6747:60;6763:43;6803:2;6763:43;:::i;6747:60::-;6841:15;;;6923:1;6919:10;;;;6911:19;;6907:28;;;6872:12;;;;6947:19;;;6944:39;;;6979:1;6976;6969:12;6944:39;7003:11;;;;7023:142;7039:6;7034:3;7031:15;7023:142;;;7105:17;;7093:30;;7056:12;;;;7143;;;;7023:142;;;7184:5;7174:15;;;;;;;6057:1138;;;;;:::o;7389:159::-;7456:20;;7516:6;7505:18;;7495:29;;7485:57;;7538:1;7535;7528:12;7485:57;7389:159;;;:::o;7553:328::-;7627:6;7635;7643;7696:2;7684:9;7675:7;7671:23;7667:32;7664:52;;;7712:1;7709;7702:12;7664:52;7735:28;7753:9;7735:28;:::i;:::-;7725:38;;7782:37;7815:2;7804:9;7800:18;7782:37;:::i;:::-;7772:47;;7838:37;7871:2;7860:9;7856:18;7838:37;:::i;:::-;7828:47;;7553:328;;;;;:::o;7886:382::-;7951:6;7959;8012:2;8000:9;7991:7;7987:23;7983:32;7980:52;;;8028:1;8025;8018:12;7980:52;8067:9;8054:23;8086:31;8111:5;8086:31;:::i;8273:180::-;8332:6;8385:2;8373:9;8364:7;8360:23;8356:32;8353:52;;;8401:1;8398;8391:12;8353:52;-1:-1:-1;8424:23:1;;8273:180;-1:-1:-1;8273:180:1:o;8458:553::-;8559:6;8567;8575;8628:2;8616:9;8607:7;8603:23;8599:32;8596:52;;;8644:1;8641;8634:12;8596:52;8683:9;8670:23;8702:31;8727:5;8702:31;:::i;:::-;8752:5;-1:-1:-1;8809:2:1;8794:18;;8781:32;8822:33;8781:32;8822:33;:::i;:::-;8874:7;-1:-1:-1;8933:2:1;8918:18;;8905:32;8946:33;8905:32;8946:33;:::i;:::-;8998:7;8988:17;;;8458:553;;;;;:::o;9465:114::-;9549:4;9542:5;9538:16;9531:5;9528:27;9518:55;;9569:1;9566;9559:12;9584:243;9641:6;9694:2;9682:9;9673:7;9669:23;9665:32;9662:52;;;9710:1;9707;9700:12;9662:52;9749:9;9736:23;9768:29;9791:5;9768:29;:::i;9832:388::-;9900:6;9908;9961:2;9949:9;9940:7;9936:23;9932:32;9929:52;;;9977:1;9974;9967:12;9929:52;10016:9;10003:23;10035:31;10060:5;10035:31;:::i;:::-;10085:5;-1:-1:-1;10142:2:1;10127:18;;10114:32;10155:33;10114:32;10155:33;:::i;10685:385::-;10771:6;10779;10787;10795;10848:3;10836:9;10827:7;10823:23;10819:33;10816:53;;;10865:1;10862;10855:12;10816:53;-1:-1:-1;;10888:23:1;;;10958:2;10943:18;;10930:32;;-1:-1:-1;11009:2:1;10994:18;;10981:32;;11060:2;11045:18;11032:32;;-1:-1:-1;10685:385:1;-1:-1:-1;10685:385:1:o;11694:484::-;11747:3;11785:5;11779:12;11812:6;11807:3;11800:19;11838:4;11867:2;11862:3;11858:12;11851:19;;11904:2;11897:5;11893:14;11925:1;11935:218;11949:6;11946:1;11943:13;11935:218;;;12014:13;;-1:-1:-1;;;;;12010:62:1;11998:75;;12093:12;;;;12128:15;;;;11971:1;11964:9;11935:218;;;-1:-1:-1;12169:3:1;;11694:484;-1:-1:-1;;;;;11694:484:1:o;12183:342::-;12384:2;12373:9;12366:21;12347:4;12404:56;12456:2;12445:9;12441:18;12433:6;12404:56;:::i;:::-;12396:64;;12510:6;12503:14;12496:22;12491:2;12480:9;12476:18;12469:50;12183:342;;;;;:::o;12530:184::-;12582:77;12579:1;12572:88;12679:4;12676:1;12669:15;12703:4;12700:1;12693:15;12719:482;12808:1;12851:5;12808:1;12865:330;12886:7;12876:8;12873:21;12865:330;;;13005:4;-1:-1:-1;;12933:77:1;12927:4;12924:87;12921:113;;;13014:18;;:::i;:::-;13064:7;13054:8;13050:22;13047:55;;;13084:16;;;;13047:55;13163:22;;;;13123:15;;;;12865:330;;;12869:3;12719:482;;;;;:::o;13206:866::-;13255:5;13285:8;13275:80;;-1:-1:-1;13326:1:1;13340:5;;13275:80;13374:4;13364:76;;-1:-1:-1;13411:1:1;13425:5;;13364:76;13456:4;13474:1;13469:59;;;;13542:1;13537:130;;;;13449:218;;13469:59;13499:1;13490:10;;13513:5;;;13537:130;13574:3;13564:8;13561:17;13558:43;;;13581:18;;:::i;:::-;-1:-1:-1;;13637:1:1;13623:16;;13652:5;;13449:218;;13751:2;13741:8;13738:16;13732:3;13726:4;13723:13;13719:36;13713:2;13703:8;13700:16;13695:2;13689:4;13686:12;13682:35;13679:77;13676:159;;;-1:-1:-1;13788:19:1;;;13820:5;;13676:159;13867:34;13892:8;13886:4;13867:34;:::i;:::-;13997:6;-1:-1:-1;;13925:79:1;13916:7;13913:92;13910:118;;;14008:18;;:::i;:::-;14046:20;;13206:866;-1:-1:-1;;;13206:866:1:o;14077:140::-;14135:5;14164:47;14205:4;14195:8;14191:19;14185:4;14164:47;:::i;14222:274::-;14262:1;14288;14278:189;;14323:77;14320:1;14313:88;14424:4;14421:1;14414:15;14452:4;14449:1;14442:15;14278:189;-1:-1:-1;14481:9:1;;14222:274::o;14501:375::-;14575:6;14583;14636:2;14624:9;14615:7;14611:23;14607:32;14604:52;;;14652:1;14649;14642:12;14604:52;14684:9;14678:16;14703:28;14725:5;14703:28;:::i;:::-;14800:2;14785:18;;14779:25;14750:5;;-1:-1:-1;14813:31:1;14779:25;14813:31;:::i;14881:228::-;14921:7;15047:1;-1:-1:-1;;14975:74:1;14972:1;14969:81;14964:1;14957:9;14950:17;14946:105;14943:131;;;15054:18;;:::i;:::-;-1:-1:-1;15094:9:1;;14881:228::o;15114:125::-;15154:4;15182:1;15179;15176:8;15173:34;;;15187:18;;:::i;:::-;-1:-1:-1;15224:9:1;;15114:125::o;16011:184::-;16063:77;16060:1;16053:88;16160:4;16157:1;16150:15;16184:4;16181:1;16174:15;16200:175;16237:3;16281:4;16274:5;16270:16;16310:4;16301:7;16298:17;16295:43;;16318:18;;:::i;:::-;16367:1;16354:15;;16200:175;-1:-1:-1;;16200:175:1:o;20534:224::-;20573:3;20601:6;20634:2;20631:1;20627:10;20664:2;20661:1;20657:10;20695:3;20691:2;20687:12;20682:3;20679:21;20676:47;;;20703:18;;:::i;:::-;20739:13;;20534:224;-1:-1:-1;;;;20534:224:1:o;21524:251::-;21594:6;21647:2;21635:9;21626:7;21622:23;21618:32;21615:52;;;21663:1;21660;21653:12;21615:52;21695:9;21689:16;21714:31;21739:5;21714:31;:::i;22871:245::-;22938:6;22991:2;22979:9;22970:7;22966:23;22962:32;22959:52;;;23007:1;23004;22997:12;22959:52;23039:9;23033:16;23058:28;23080:5;23058:28;:::i;25451:128::-;25491:3;25522:1;25518:6;25515:1;25512:13;25509:39;;;25528:18;;:::i;:::-;-1:-1:-1;25564:9:1;;25451:128::o;26801:605::-;27100:6;27089:9;27082:25;27143:6;27138:2;27127:9;27123:18;27116:34;27186:3;27181:2;27170:9;27166:18;27159:31;27063:4;27207:57;27259:3;27248:9;27244:19;27236:6;27207:57;:::i;:::-;-1:-1:-1;;;;;27300:55:1;;;;27295:2;27280:18;;27273:83;-1:-1:-1;27387:3:1;27372:19;27365:35;27199:65;26801:605;-1:-1:-1;;;26801:605:1:o

Swarm Source

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