ETH Price: $2,499.49 (+3.42%)

Contract

0xDD44847C3da96f16C5E9D92f1b0864a330A789E1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve168883392023-03-23 6:02:23563 days ago1679551343IN
0xDD44847C...330A789E1
0 ETH0.0004885710.54182214
Approve168883322023-03-23 6:00:59563 days ago1679551259IN
0xDD44847C...330A789E1
0 ETH0.0005898612.72742555
Approve168883222023-03-23 5:58:47563 days ago1679551127IN
0xDD44847C...330A789E1
0 ETH0.0005286411.40649946
Approve168882972023-03-23 5:53:47563 days ago1679550827IN
0xDD44847C...330A789E1
0 ETH0.0005389311.63157848
Approve168882902023-03-23 5:52:23563 days ago1679550743IN
0xDD44847C...330A789E1
0 ETH0.000547111.80474018
Approve168882722023-03-23 5:48:35563 days ago1679550515IN
0xDD44847C...330A789E1
0 ETH0.0005520311.91127463
Approve168882682023-03-23 5:47:47563 days ago1679550467IN
0xDD44847C...330A789E1
0 ETH0.0005618512.12315378
Approve168882542023-03-23 5:44:59563 days ago1679550299IN
0xDD44847C...330A789E1
0 ETH0.000529411.42282234
Approve168881812023-03-23 5:30:23563 days ago1679549423IN
0xDD44847C...330A789E1
0 ETH0.0005090910.98188321
Transfer Owner168881352023-03-23 5:21:11563 days ago1679548871IN
0xDD44847C...330A789E1
0 ETH0.0006530312.10665727
Transfer168881292023-03-23 5:19:59563 days ago1679548799IN
0xDD44847C...330A789E1
0 ETH0.000711511.56143251
Transfer168880972023-03-23 5:13:35563 days ago1679548415IN
0xDD44847C...330A789E1
0 ETH0.0006992211.2587415
Set Max Tx Perce...168879942023-03-23 4:52:35563 days ago1679547155IN
0xDD44847C...330A789E1
0 ETH0.0003768211.92270666
Set Max Wallet S...168879922023-03-23 4:52:11563 days ago1679547131IN
0xDD44847C...330A789E1
0 ETH0.000394812.47017662
Approve168877812023-03-23 4:09:35563 days ago1679544575IN
0xDD44847C...330A789E1
0 ETH0.0006184813.34156265
Set Excluded Fro...168847482023-03-22 17:55:35564 days ago1679507735IN
0xDD44847C...330A789E1
0 ETH0.0011195724.10687616
Set Excluded Fro...168847452023-03-22 17:54:59564 days ago1679507699IN
0xDD44847C...330A789E1
0 ETH0.001120124.12917914
Approve Max168847422023-03-22 17:54:23564 days ago1679507663IN
0xDD44847C...330A789E1
0 ETH0.0011312824.53084705
Transfer168847382023-03-22 17:53:35564 days ago1679507615IN
0xDD44847C...330A789E1
0 ETH0.0015842425.74285517
0x60006004168847192023-03-22 17:49:35564 days ago1679507375IN
 Create: AGRITECH
0 ETH0.1515363623.11938309

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AGRITECH

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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


abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract AGRITECH is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    mapping (address => bool) private _isExcludedFromLimits;    
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;    
    mapping (address => bool) private _isSniper;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _liquidityHolders;

    uint256 private startingSupply = 1_000_000_000;

    string private _name = "AGRITECH";
    string private _symbol = "AGT";
    uint8 constant private _decimals = 9;
    uint256 private _tTotal = startingSupply * 10**_decimals;    

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

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

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

    Ratios public _ratios = Ratios({
        liquidity: 100,
        marketing: 200,
        development: 200,
        totalSwap: 300
    });

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

    bool public taxesAreLocked;
    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x91d25a420d74eBA15c09B5022d4dCDa34eeaCd66);
    address payable private developmentWallet = payable(0x91d25a420d74eBA15c09B5022d4dCDa34eeaCd66);

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;    
    
    
    uint256 private _maxTxAmount = (_tTotal * 1) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool private sniperProtection = true;
    uint256 private snipeBlockAmt;
    uint256 public snipersCaught = 0;    
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    uint256 public launchStamp;


    event SniperCaught(address sniperAddress);    
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor (uint256 _snipeBlockAmt) payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        // Set the amount of blocks to count a sniper.
        snipeBlockAmt = _snipeBlockAmt;        

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(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;

        // Approve the owner for PancakeSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);


        // Ever-growing sniper/tool blacklist

        _isSniper[0xE4882975f933A199C92b5A925C9A8fE65d599Aa8] = true;
        _isSniper[0x86C70C4a3BC775FB4030448c9fdb73Dc09dd8444] = true;        


        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

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

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

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

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

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

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

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

    function SniperExit(address account) external onlyOwner() {
        require(_isSniper[account], "Account is not a recorded sniper.");
        _isSniper[account] = false;
    }

    function setSniperProtectionEnabled(bool enabled) external onlyOwner() {
        require(enabled != sniperProtection, "Already set.");
        sniperProtection = enabled;
    }

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function setWallets(address payable marketing, address payable development) external onlyOwner {
        marketingWallet = payable(marketing);
        developmentWallet = payable(development);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != 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) {
                if (!other) {
                    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.");
                }
            }
        }

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        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;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading is already enabled!");
        require(_hasLiqBeenAdded, "Liquidity should be added.");
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;        
    }

    function sendContractBalance(address payable to) public onlyOwner {
        require(address(this).balance > 0,"07");
        to.transfer(address(this).balance);
    }

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_snipeBlockAmt","type":"uint256"}],"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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"ContractSwapSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"SniperExit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"piSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"}],"name":"sendContractBalance","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":"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":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSniperProtectionEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006004556007805460ff19166001179055633b9aca00600b5560c060405260086080819052670828ea492a88a86960c31b60a09081526200004591600c9190620006ba565b50604080518082019091526003808252621051d560ea1b60209092019182526200007291600d91620006ba565b50620000816009600a62000875565b600b546200009091906200088d565b600e819055604080516060808201835261012c8083526020808401829052600093850193909352600f805463012c012c65ffffffffffff199091161790558351608081018552606480825260c894820185905294810193909352910152601080546001600160401b03191667012c00c800c8006417905560138054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821617909155601480547391d25a420d74eba15c09b5022d4dcda34eeacd6692168217905560158054600161ff0160a01b0319169091179055600a60195590620001769060016200088d565b620001829190620008af565b601a556064600e5460026200019891906200088d565b620001a49190620008af565b601b55601c805460ff191660011790556000601e55601f805461ffff19169055604051620045ef38819003908190833981016040819052620001e691620008d2565b600e543360008181526001602090815260408083209490945581546001600160a01b0319169092179055601d83905560135460118054610100600160a81b0319166101006001600160a01b0393841681029190911791829055845163c45a015560e01b8152945191049091169263c45a0155926004808301939192829003018186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b19190620008ec565b6001600160a01b031663c9c65396601160019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003499190620008ec565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200039157600080fd5b505af1158015620003a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cc9190620008ec565b601280546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff191660011790555460115462000421929182169161010090910416600019620005b9565b6011546200044290309061010090046001600160a01b0316600019620005b9565b600080546001600160a01b0390811682526009602090815260408084208054600160ff19918216811790925530865282862080548216831790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805482168317905585549094168552600a90925290922080549091169091179055620004e2620004ca3390565b601354600e546001600160a01b0390911690620005b9565b60086020527fa4a318a4ba833d535a213782db534d83019119799cafae11f04d1dba93ee7b408054600160ff1991821681179092557386c70c4a3bc775fb4030448c9fdb73dc09dd84446000527f2baaa8ba932e4195b3c3afd7682e52ef9560eb2fbf378948591149dea582df9280549091169091179055620005623390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620005aa91815260200190565b60405180910390a35062000954565b6001600160a01b0383166200060b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006595760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000602565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b828054620006c89062000917565b90600052602060002090601f016020900481019282620006ec576000855562000737565b82601f106200070757805160ff191683800117855562000737565b8280016001018555821562000737579182015b82811115620007375782518255916020019190600101906200071a565b506200074592915062000749565b5090565b5b808211156200074557600081556001016200074a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007b75781600019048211156200079b576200079b62000760565b80851615620007a957918102915b93841c93908002906200077b565b509250929050565b600082620007d0575060016200086f565b81620007df575060006200086f565b8160018114620007f85760028114620008035762000823565b60019150506200086f565b60ff84111562000817576200081762000760565b50506001821b6200086f565b5060208310610133831016604e8410600b841016171562000848575081810a6200086f565b62000854838362000776565b80600019048211156200086b576200086b62000760565b0290505b92915050565b60006200088660ff841683620007bf565b9392505050565b6000816000190483118215151615620008aa57620008aa62000760565b500290565b600082620008cd57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620008e557600080fd5b5051919050565b600060208284031215620008ff57600080fd5b81516001600160a01b03811681146200088657600080fd5b600181811c908216806200092c57607f821691505b602082108114156200094e57634e487b7160e01b600052602260045260246000fd5b50919050565b613c8b80620009646000396000f3fe6080604052600436106103905760003560e01c8063571ac8b0116101dc578063a80029ff11610102578063cf847706116100a0578063e79d41601161006f578063e79d416014610ac6578063eafb5a3c14610adc578063fb78680d14610afc578063fdb78c0e14610b1c57600080fd5b8063cf847706146109d5578063d3f6a15714610a40578063d7124d9f14610a60578063dd62ed3e14610a8057600080fd5b8063b1b08f71116100dc578063b1b08f71146105d5578063b3d514fb146105d5578063b7df8b361461099b578063c140e050146109b557600080fd5b8063a80029ff1461093b578063a9059cbb1461095b578063aa22b1721461097b57600080fd5b8063715018a61161017a5780638a8c523c116101495780638a8c523c146108f15780638da5cb5b146108d357806395d89b4114610906578063a457c2d71461091b57600080fd5b8063715018a61461087e57806375f0a8741461089357806380c581d1146108b3578063893d20e8146108d357600080fd5b80635cce86cd116101b65780635cce86cd146107da5780636d3998c9146108135780636ebd00781461083357806370a082311461084857600080fd5b8063571ac8b014610784578063590ffdce146107a45780635a6f0918146107c457600080fd5b806328577751116102c15780633f3cf56c1161025f5780634fb2e45d1161022e5780634fb2e45d146106f75780634fbee1931461071757806350a8e01614610750578063520ed7061461076f57600080fd5b80633f3cf56c1461067d578063452ed4f11461069d5780634ada218b146106bd5780634bbb93eb146106d757600080fd5b8063313ce5671161029b578063313ce5671461060157806332cde6641461061d57806336fddb041461063d578063395093511461065d57600080fd5b806328577751146105bf5780632b28fc7a146105d55780632e8fa821146105eb57600080fd5b80630f3a325f1161032e57806313b4a7f41161030857806313b4a7f41461054a57806318160ddd1461056a57806323b872dd1461057f578063260039571461059f57600080fd5b80630f3a325f146104da5780630fa604e41461051357806312acc3931461052857600080fd5b806306fdde031161036a57806306fdde03146104495780630758d9241461046b57806307dd79e014610490578063095ea7b3146104ba57600080fd5b806303fd2a451461039c5780630445b667146103cf578063069d955f146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e560165481565b6040519081526020016103c6565b3480156103ff57600080fd5b50600f546104249061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561045557600080fd5b5061045e610b4f565b6040516103c691906136b4565b34801561047757600080fd5b506011546103b29061010090046001600160a01b031681565b34801561049c57600080fd5b506011546104aa9060ff1681565b60405190151581526020016103c6565b3480156104c657600080fd5b506104aa6104d536600461373f565b610be1565b3480156104e657600080fd5b506104aa6104f536600461376b565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561051f57600080fd5b506103e5610bf8565b34801561053457600080fd5b50610548610543366004613788565b610c18565b005b34801561055657600080fd5b506105486105653660046137a1565b610cc1565b34801561057657600080fd5b50600e546103e5565b34801561058b57600080fd5b506104aa61059a3660046137da565b610e98565b3480156105ab57600080fd5b506105486105ba36600461381b565b610f10565b3480156105cb57600080fd5b506103e560195481565b3480156105e157600080fd5b506103e56103e881565b3480156105f757600080fd5b506103e560175481565b34801561060d57600080fd5b50604051600981526020016103c6565b34801561062957600080fd5b50610548610638366004613854565b611026565b34801561064957600080fd5b506105486106583660046138a7565b6111b4565b34801561066957600080fd5b506104aa61067836600461373f565b61122d565b34801561068957600080fd5b5061054861069836600461381b565b611269565b3480156106a957600080fd5b506012546103b2906001600160a01b031681565b3480156106c957600080fd5b50601f546104aa9060ff1681565b3480156106e357600080fd5b506103e56106f2366004613788565b611380565b34801561070357600080fd5b5061054861071236600461376b565b6113b4565b34801561072357600080fd5b506104aa61073236600461376b565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561075c57600080fd5b50601f546104aa90610100900460ff1681565b34801561077b57600080fd5b506105486115d4565b34801561079057600080fd5b506104aa61079f36600461376b565b611631565b3480156107b057600080fd5b506105486107bf3660046138a7565b61163f565b3480156107d057600080fd5b506103e560205481565b3480156107e657600080fd5b506104aa6107f536600461376b565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561081f57600080fd5b5061054861082e36600461376b565b6116b8565b34801561083f57600080fd5b506103e56117b5565b34801561085457600080fd5b506103e561086336600461376b565b6001600160a01b031660009081526001602052604090205490565b34801561088a57600080fd5b506105486117d0565b34801561089f57600080fd5b506014546103b2906001600160a01b031681565b3480156108bf57600080fd5b506105486108ce3660046138a7565b61188b565b3480156108df57600080fd5b506000546001600160a01b03166103b2565b3480156108fd57600080fd5b50610548611992565b34801561091257600080fd5b5061045e611aa9565b34801561092757600080fd5b506104aa61093636600461373f565b611ab8565b34801561094757600080fd5b5061054861095636600461376b565b611aef565b34801561096757600080fd5b506104aa61097636600461373f565b611bc2565b34801561098757600080fd5b50610548610996366004613854565b611bd9565b3480156109a757600080fd5b506018546104aa9060ff1681565b3480156109c157600080fd5b506105486109d03660046138dc565b611d8b565b3480156109e157600080fd5b50601054610a129061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103c6565b348015610a4c57600080fd5b50610548610a5b3660046137a1565b611e69565b348015610a6c57600080fd5b50610548610a7b3660046138f8565b611efd565b348015610a8c57600080fd5b506103e5610a9b3660046137a1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ad257600080fd5b506103e5601e5481565b348015610ae857600080fd5b50610548610af736600461376b565b611fb7565b348015610b0857600080fd5b50610548610b17366004613913565b6123de565b348015610b2857600080fd5b506015546104aa907501000000000000000000000000000000000000000000900460ff1681565b6060600c8054610b5e90613945565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8a90613945565b8015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050505050905090565b6000610bee338484612699565b5060015b92915050565b6000610c066009600a613aac565b601b54610c139190613abb565b905090565b6000546001600160a01b03163314610c6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6096811115610cbc5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c62565b601955565b6000546001600160a01b03163314610d0f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60075460ff16610d1e57600080fd5b6001600160a01b0382163014801590610d4057506001600160a01b0381163014155b8015610d5a57506012546001600160a01b03838116911614155b8015610d7457506012546001600160a01b03828116911614155b610dc05760405162461bcd60e51b815260206004820152600660248201527f646f6e27742e00000000000000000000000000000000000000000000000000006044820152606401610c62565b806001600160a01b0316826001600160a01b03161415610e23576001600160a01b0381166000908152600a602090815260408083208054600160ff19918216811790925560069093529220805490911682179055610e1f90829061163f565b5050565b6001600160a01b038281166000818152600a602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526006909252808320805486168317905592825291902080549092168117909155610e8d90839061163f565b610e1f81600161163f565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610efd576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610ef7908490613af6565b90915550505b610f088484846127a6565b949350505050565b6000546001600160a01b03163314610f5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6064600e546002610f6f9190613b0d565b610f799190613abb565b8183600e54610f889190613b0d565b610f929190613abb565b10156110065760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c62565b8082600e546110159190613b0d565b61101f9190613abb565b601b555050565b6000546001600160a01b031633146110745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60115460ff16156110c75760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c62565b6103e88361ffff16111580156110e357506103e88261ffff1611155b80156110f557506103e88161ffff1611155b6111415760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c62565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bee918590611264908690613b2c565b612699565b6000546001600160a01b031633146112b75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6103e8600e5460056112c99190613b0d565b6112d39190613abb565b8183600e546112e29190613b0d565b6112ec9190613abb565b10156113605760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c62565b8082600e5461136f9190613b0d565b6113799190613abb565b601a555050565b6012546001600160a01b0316600090815260016020526040812054612710906113aa908490613b0d565b610bf29190613abb565b6000546001600160a01b031633146114025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03811661147e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c62565b6001600160a01b03811661dead14156114ff5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c62565b60008054611518916001600160a01b039091169061163f565b61152381600161163f565b600080546001600160a01b03168152600160205260409020541561156c57600080546001600160a01b031680825260016020819052604083205461156a9385928190612cb2565b505b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146116225760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6011805460ff19166001179055565b6000610bf282600019610be1565b6000546001600160a01b0316331461168d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03811660009081526008602052604090205460ff166117945760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e6970657260448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b03166000908152600860205260409020805460ff19169055565b60006117c36009600a613aac565b601a54610c139190613abb565b6000546001600160a01b0316331461181e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60008054611837916001600160a01b039091169061163f565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b8061190057506001600160a01b03166000908152600260205260409020805460ff19169055565b600454156119675762093a806004544261191a9190613af6565b116119675760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610c62565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146119e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601f5460ff1615611a335760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610c62565b601f54610100900460ff16611a8a5760405162461bcd60e51b815260206004820152601a60248201527f4c69717569646974792073686f756c642062652061646465642e0000000000006044820152606401610c62565b601f805460ff1990811660011790915560078054909116905542602055565b6060600d8054610b5e90613945565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bee918590611264908690613af6565b6000546001600160a01b03163314611b3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60004711611b8d5760405162461bcd60e51b815260206004820152600260248201527f30370000000000000000000000000000000000000000000000000000000000006044820152606401610c62565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610e1f573d6000803e3d6000fd5b6000611bcf3384846127a6565b5060019392505050565b6000546001600160a01b03163314611c275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611c9f8385613b44565b611ca99190613b44565b601080547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600f54600091611cfa9162010000810482169116613b44565b60105461ffff91821692506601000000000000900416811015611d855760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c62565b50505050565b6000546001600160a01b03163314611dd95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b03163314611eb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601480546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560158054929093169116179055565b6000546001600160a01b03163314611f4b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601c5460ff1615158115151415611fa45760405162461bcd60e51b815260206004820152600c60248201527f416c7265616479207365742e00000000000000000000000000000000000000006044820152606401610c62565b601c805460ff1916911515919091179055565b6000546001600160a01b031633146120055760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561204557600080fd5b505afa158015612059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207d9190613b6a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120c557600080fd5b505afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190613b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561215b57600080fd5b505afa15801561216f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121939190613b6a565b90506001600160a01b03811661236957816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156121dc57600080fd5b505afa1580156121f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122149190613b6a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561225c57600080fd5b505afa158015612270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122949190613b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156122f457600080fd5b505af1158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c9190613b6a565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561239d565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b50601180546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90921691909117905550565b6000546001600160a01b0316331461242c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b8284600e5461243b9190613b0d565b6124459190613abb565b601655600e548190612458908490613b0d565b6124629190613abb565b601781905560165411156124de5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6012546001600160a01b031660009081526001602052604090205461271090612508906096613b0d565b6125129190613abb565b60175411156125895760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c62565b620f4240600e5461259a9190613abb565b60175410156126115760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c62565b620f4240600e546126229190613abb565b6016541015611d855760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0383166126ef5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c62565b6001600160a01b0382166127455760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c62565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0383166128a05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c62565b600082116129165760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0384166000908152600260205260408120548190819060ff16156129445760019250612972565b6001600160a01b03861660009081526002602052604090205460ff161561296e5760019150612972565b5060015b61297c8787612e35565b15612b8c57601f5460ff166129d857806129d85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c62565b82806129e15750815b15612aa5576001600160a01b03871660009081526003602052604090205460ff16158015612a2857506001600160a01b03861660009081526003602052604090205460ff16155b15612aa557601a54851115612aa55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c62565b6011546001600160a01b038781166101009092041614801590612ac6575081155b15612b8c576001600160a01b03861660009081526003602052604090205460ff16612b8c57601b5485612b0e886001600160a01b031660009081526001602052604090205490565b612b189190613b2c565b1115612b8c5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c62565b8115612c995760155474010000000000000000000000000000000000000000900460ff16612c99576015547501000000000000000000000000000000000000000000900460ff168015612bf857506001600160a01b03861660009081526006602052604090205460ff16155b8015612c1d57506001600160a01b03871660009081526006602052604090205460ff16155b15612c9957306000908152600160205260409020546016548110612c975760175460185460ff1615612c81576019546012546001600160a01b031660009081526001602052604090205461271091612c7491613b0d565b612c7e9190613abb565b90505b808210612c8c578091505b612c9582612ef3565b505b505b612ca7878787868686612cb2565b979650505050505050565b6000612cbe8787612e35565b15612cc95760008080fd5b6001600160a01b03871660009081526009602052604090205460019060ff1680612d0b57506001600160a01b03871660009081526009602052604090205460ff165b15612d14575060005b6001600160a01b03881660009081526001602052604081208054889290612d3c908490613af6565b909155506000905081612d4f5786612d5b565b612d5b8987878a613441565b6001600160a01b038916600090815260016020526040812080549293508392909190612d88908490613b2c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd491815260200190565b60405180910390a3601f54610100900460ff16612e2657612df58989613538565b601f54610100900460ff16158015612e125750612e128989612e35565b8015612e1c575083155b15612e2657600080fd5b50600198975050505050505050565b600080546001600160a01b03848116911614801590612e6257506000546001600160a01b03838116911614155b8015612e8757506001600160a01b0382166000908152600a602052604090205460ff16155b8015612eac57506001600160a01b0383166000908152600a602052604090205460ff16155b8015612ec357506001600160a01b03821661dead14155b8015612ed757506001600160a01b03821615155b8015612eec57506001600160a01b0383163014155b9392505050565b601580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805160808101825260105461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052612f835750613416565b30600090815260056020908152604080832060115461010090046001600160a01b0316845290915290205460001914612fe65730600090815260056020908152604080832060115461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856130079190613b0d565b6130119190613abb565b61301b9190613abb565b905060006130298285613af6565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061306357613063613b87565b60200260200101906001600160a01b031690816001600160a01b031681525050601160019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130d157600080fd5b505afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131099190613b6a565b8160018151811061311c5761311c613b87565b6001600160a01b0392831660209182029290920101526011546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613182908590600090869030904290600401613bb6565b600060405180830381600087803b15801561319c57600080fd5b505af19250505080156131ad575060015b6131ba5750505050613416565b476000836131c88684613b0d565b6131d29190613abb565b905084156132fb576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c4016060604051808303818588803b15801561326057600080fd5b505af1935050505080156132af575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526132ac91810190613c27565b60015b6132be57505050505050613416565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600080876060015161ffff16886040015161ffff168561331b9190613b0d565b6133259190613abb565b905060006133338286613af6565b60208a015190915061ffff16156133a1576014546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613396576040519150601f19603f3d011682016040523d82523d6000602084013e61339b565b606091505b50909350505b604089015161ffff161561340c576015546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613401576040519150601f19603f3d011682016040523d82523d6000602084013e613406565b606091505b50909350505b5050505050505050505b50601580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60008084156134575750600f5461ffff16613481565b83156134705750600f5462010000900461ffff16613481565b50600f54640100000000900461ffff165b8061348f5782915050610f08565b466001148061349e5750466038145b156134a857506111945b60006127106134b78386613b0d565b6134c19190613abb565b9050801561352e5730600090815260016020526040812080548392906134e8908490613b2c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ca78185613af6565b601f54610100900460ff16156135b65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6135c08282612e35565b1580156135da57506012546001600160a01b038281169116145b15610e1f576001600160a01b0382166000908152600a60209081526040808320805460ff199081166001908117909255600984529382902080549094168117909355601f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611e5d565b600060208083528351808285015260005b818110156136e1578581018301518582016040015282016136c5565b818111156136f3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b038116811461373c57600080fd5b50565b6000806040838503121561375257600080fd5b823561375d81613727565b946020939093013593505050565b60006020828403121561377d57600080fd5b8135612eec81613727565b60006020828403121561379a57600080fd5b5035919050565b600080604083850312156137b457600080fd5b82356137bf81613727565b915060208301356137cf81613727565b809150509250929050565b6000806000606084860312156137ef57600080fd5b83356137fa81613727565b9250602084013561380a81613727565b929592945050506040919091013590565b6000806040838503121561382e57600080fd5b50508035926020909101359150565b803561ffff8116811461384f57600080fd5b919050565b60008060006060848603121561386957600080fd5b6138728461383d565b92506138806020850161383d565b915061388e6040850161383d565b90509250925092565b8035801515811461384f57600080fd5b600080604083850312156138ba57600080fd5b82356138c581613727565b91506138d360208401613897565b90509250929050565b600080604083850312156138ef57600080fd5b6138c583613897565b60006020828403121561390a57600080fd5b612eec82613897565b6000806000806080858703121561392957600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061395957607f821691505b60208210811415613993577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613a035781600019048211156139e9576139e9613999565b808516156139f657918102915b93841c93908002906139cd565b509250929050565b600082613a1a57506001610bf2565b81613a2757506000610bf2565b8160018114613a3d5760028114613a4757613a63565b6001915050610bf2565b60ff841115613a5857613a58613999565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715613a86575081810a610bf2565b613a9083836139c8565b8060001904821115613aa457613aa4613999565b029392505050565b6000612eec60ff841683613a0b565b600082613af1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613b0857613b08613999565b500390565b6000816000190483118215151615613b2757613b27613999565b500290565b60008219821115613b3f57613b3f613999565b500190565b600061ffff808316818516808303821115613b6157613b61613999565b01949350505050565b600060208284031215613b7c57600080fd5b8151612eec81613727565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c065784516001600160a01b031683529383019391830191600101613be1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613c3c57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122085e931c67bbd0292289e56ca9280b27b24533efb52806b2a71fbf87f58d3cab864736f6c634300080900330000000000000000000000000000000000000000000000000000000000000005

Deployed Bytecode

0x6080604052600436106103905760003560e01c8063571ac8b0116101dc578063a80029ff11610102578063cf847706116100a0578063e79d41601161006f578063e79d416014610ac6578063eafb5a3c14610adc578063fb78680d14610afc578063fdb78c0e14610b1c57600080fd5b8063cf847706146109d5578063d3f6a15714610a40578063d7124d9f14610a60578063dd62ed3e14610a8057600080fd5b8063b1b08f71116100dc578063b1b08f71146105d5578063b3d514fb146105d5578063b7df8b361461099b578063c140e050146109b557600080fd5b8063a80029ff1461093b578063a9059cbb1461095b578063aa22b1721461097b57600080fd5b8063715018a61161017a5780638a8c523c116101495780638a8c523c146108f15780638da5cb5b146108d357806395d89b4114610906578063a457c2d71461091b57600080fd5b8063715018a61461087e57806375f0a8741461089357806380c581d1146108b3578063893d20e8146108d357600080fd5b80635cce86cd116101b65780635cce86cd146107da5780636d3998c9146108135780636ebd00781461083357806370a082311461084857600080fd5b8063571ac8b014610784578063590ffdce146107a45780635a6f0918146107c457600080fd5b806328577751116102c15780633f3cf56c1161025f5780634fb2e45d1161022e5780634fb2e45d146106f75780634fbee1931461071757806350a8e01614610750578063520ed7061461076f57600080fd5b80633f3cf56c1461067d578063452ed4f11461069d5780634ada218b146106bd5780634bbb93eb146106d757600080fd5b8063313ce5671161029b578063313ce5671461060157806332cde6641461061d57806336fddb041461063d578063395093511461065d57600080fd5b806328577751146105bf5780632b28fc7a146105d55780632e8fa821146105eb57600080fd5b80630f3a325f1161032e57806313b4a7f41161030857806313b4a7f41461054a57806318160ddd1461056a57806323b872dd1461057f578063260039571461059f57600080fd5b80630f3a325f146104da5780630fa604e41461051357806312acc3931461052857600080fd5b806306fdde031161036a57806306fdde03146104495780630758d9241461046b57806307dd79e014610490578063095ea7b3146104ba57600080fd5b806303fd2a451461039c5780630445b667146103cf578063069d955f146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e560165481565b6040519081526020016103c6565b3480156103ff57600080fd5b50600f546104249061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561045557600080fd5b5061045e610b4f565b6040516103c691906136b4565b34801561047757600080fd5b506011546103b29061010090046001600160a01b031681565b34801561049c57600080fd5b506011546104aa9060ff1681565b60405190151581526020016103c6565b3480156104c657600080fd5b506104aa6104d536600461373f565b610be1565b3480156104e657600080fd5b506104aa6104f536600461376b565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561051f57600080fd5b506103e5610bf8565b34801561053457600080fd5b50610548610543366004613788565b610c18565b005b34801561055657600080fd5b506105486105653660046137a1565b610cc1565b34801561057657600080fd5b50600e546103e5565b34801561058b57600080fd5b506104aa61059a3660046137da565b610e98565b3480156105ab57600080fd5b506105486105ba36600461381b565b610f10565b3480156105cb57600080fd5b506103e560195481565b3480156105e157600080fd5b506103e56103e881565b3480156105f757600080fd5b506103e560175481565b34801561060d57600080fd5b50604051600981526020016103c6565b34801561062957600080fd5b50610548610638366004613854565b611026565b34801561064957600080fd5b506105486106583660046138a7565b6111b4565b34801561066957600080fd5b506104aa61067836600461373f565b61122d565b34801561068957600080fd5b5061054861069836600461381b565b611269565b3480156106a957600080fd5b506012546103b2906001600160a01b031681565b3480156106c957600080fd5b50601f546104aa9060ff1681565b3480156106e357600080fd5b506103e56106f2366004613788565b611380565b34801561070357600080fd5b5061054861071236600461376b565b6113b4565b34801561072357600080fd5b506104aa61073236600461376b565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561075c57600080fd5b50601f546104aa90610100900460ff1681565b34801561077b57600080fd5b506105486115d4565b34801561079057600080fd5b506104aa61079f36600461376b565b611631565b3480156107b057600080fd5b506105486107bf3660046138a7565b61163f565b3480156107d057600080fd5b506103e560205481565b3480156107e657600080fd5b506104aa6107f536600461376b565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561081f57600080fd5b5061054861082e36600461376b565b6116b8565b34801561083f57600080fd5b506103e56117b5565b34801561085457600080fd5b506103e561086336600461376b565b6001600160a01b031660009081526001602052604090205490565b34801561088a57600080fd5b506105486117d0565b34801561089f57600080fd5b506014546103b2906001600160a01b031681565b3480156108bf57600080fd5b506105486108ce3660046138a7565b61188b565b3480156108df57600080fd5b506000546001600160a01b03166103b2565b3480156108fd57600080fd5b50610548611992565b34801561091257600080fd5b5061045e611aa9565b34801561092757600080fd5b506104aa61093636600461373f565b611ab8565b34801561094757600080fd5b5061054861095636600461376b565b611aef565b34801561096757600080fd5b506104aa61097636600461373f565b611bc2565b34801561098757600080fd5b50610548610996366004613854565b611bd9565b3480156109a757600080fd5b506018546104aa9060ff1681565b3480156109c157600080fd5b506105486109d03660046138dc565b611d8b565b3480156109e157600080fd5b50601054610a129061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103c6565b348015610a4c57600080fd5b50610548610a5b3660046137a1565b611e69565b348015610a6c57600080fd5b50610548610a7b3660046138f8565b611efd565b348015610a8c57600080fd5b506103e5610a9b3660046137a1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610ad257600080fd5b506103e5601e5481565b348015610ae857600080fd5b50610548610af736600461376b565b611fb7565b348015610b0857600080fd5b50610548610b17366004613913565b6123de565b348015610b2857600080fd5b506015546104aa907501000000000000000000000000000000000000000000900460ff1681565b6060600c8054610b5e90613945565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8a90613945565b8015610bd75780601f10610bac57610100808354040283529160200191610bd7565b820191906000526020600020905b815481529060010190602001808311610bba57829003601f168201915b5050505050905090565b6000610bee338484612699565b5060015b92915050565b6000610c066009600a613aac565b601b54610c139190613abb565b905090565b6000546001600160a01b03163314610c6b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6096811115610cbc5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c62565b601955565b6000546001600160a01b03163314610d0f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60075460ff16610d1e57600080fd5b6001600160a01b0382163014801590610d4057506001600160a01b0381163014155b8015610d5a57506012546001600160a01b03838116911614155b8015610d7457506012546001600160a01b03828116911614155b610dc05760405162461bcd60e51b815260206004820152600660248201527f646f6e27742e00000000000000000000000000000000000000000000000000006044820152606401610c62565b806001600160a01b0316826001600160a01b03161415610e23576001600160a01b0381166000908152600a602090815260408083208054600160ff19918216811790925560069093529220805490911682179055610e1f90829061163f565b5050565b6001600160a01b038281166000818152600a602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526006909252808320805486168317905592825291902080549092168117909155610e8d90839061163f565b610e1f81600161163f565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610efd576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610ef7908490613af6565b90915550505b610f088484846127a6565b949350505050565b6000546001600160a01b03163314610f5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6064600e546002610f6f9190613b0d565b610f799190613abb565b8183600e54610f889190613b0d565b610f929190613abb565b10156110065760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c62565b8082600e546110159190613b0d565b61101f9190613abb565b601b555050565b6000546001600160a01b031633146110745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60115460ff16156110c75760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c62565b6103e88361ffff16111580156110e357506103e88261ffff1611155b80156110f557506103e88161ffff1611155b6111415760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c62565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146112025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bee918590611264908690613b2c565b612699565b6000546001600160a01b031633146112b75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6103e8600e5460056112c99190613b0d565b6112d39190613abb565b8183600e546112e29190613b0d565b6112ec9190613abb565b10156113605760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610c62565b8082600e5461136f9190613b0d565b6113799190613abb565b601a555050565b6012546001600160a01b0316600090815260016020526040812054612710906113aa908490613b0d565b610bf29190613abb565b6000546001600160a01b031633146114025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03811661147e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c62565b6001600160a01b03811661dead14156114ff5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c62565b60008054611518916001600160a01b039091169061163f565b61152381600161163f565b600080546001600160a01b03168152600160205260409020541561156c57600080546001600160a01b031680825260016020819052604083205461156a9385928190612cb2565b505b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146116225760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6011805460ff19166001179055565b6000610bf282600019610be1565b6000546001600160a01b0316331461168d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6001600160a01b03811660009081526008602052604090205460ff166117945760405162461bcd60e51b815260206004820152602160248201527f4163636f756e74206973206e6f742061207265636f7264656420736e6970657260448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b03166000908152600860205260409020805460ff19169055565b60006117c36009600a613aac565b601a54610c139190613abb565b6000546001600160a01b0316331461181e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60008054611837916001600160a01b039091169061163f565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118d95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b8061190057506001600160a01b03166000908152600260205260409020805460ff19169055565b600454156119675762093a806004544261191a9190613af6565b116119675760405162461bcd60e51b815260206004820152601260248201527f4f6e65207765656b20636f6f6c646f776e2e00000000000000000000000000006044820152606401610c62565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426004555050565b6000546001600160a01b031633146119e05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601f5460ff1615611a335760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610c62565b601f54610100900460ff16611a8a5760405162461bcd60e51b815260206004820152601a60248201527f4c69717569646974792073686f756c642062652061646465642e0000000000006044820152606401610c62565b601f805460ff1990811660011790915560078054909116905542602055565b6060600d8054610b5e90613945565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610bee918590611264908690613af6565b6000546001600160a01b03163314611b3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60004711611b8d5760405162461bcd60e51b815260206004820152600260248201527f30370000000000000000000000000000000000000000000000000000000000006044820152606401610c62565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610e1f573d6000803e3d6000fd5b6000611bcf3384846127a6565b5060019392505050565b6000546001600160a01b03163314611c275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611c9f8385613b44565b611ca99190613b44565b601080547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff93841602179055600f54600091611cfa9162010000810482169116613b44565b60105461ffff91821692506601000000000000900416811015611d855760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c62565b50505050565b6000546001600160a01b03163314611dd95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000841515908102919091179091556018805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6000546001600160a01b03163314611eb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601480546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560158054929093169116179055565b6000546001600160a01b03163314611f4b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b601c5460ff1615158115151415611fa45760405162461bcd60e51b815260206004820152600c60248201527f416c7265616479207365742e00000000000000000000000000000000000000006044820152606401610c62565b601c805460ff1916911515919091179055565b6000546001600160a01b031633146120055760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561204557600080fd5b505afa158015612059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207d9190613b6a565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120c557600080fd5b505afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190613b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561215b57600080fd5b505afa15801561216f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121939190613b6a565b90506001600160a01b03811661236957816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156121dc57600080fd5b505afa1580156121f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122149190613b6a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561225c57600080fd5b505afa158015612270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122949190613b6a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156122f457600080fd5b505af1158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c9190613b6a565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561239d565b601280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b50601180546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff90921691909117905550565b6000546001600160a01b0316331461242c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c62565b8284600e5461243b9190613b0d565b6124459190613abb565b601655600e548190612458908490613b0d565b6124629190613abb565b601781905560165411156124de5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6012546001600160a01b031660009081526001602052604090205461271090612508906096613b0d565b6125129190613abb565b60175411156125895760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c62565b620f4240600e5461259a9190613abb565b60175410156126115760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c62565b620f4240600e546126229190613abb565b6016541015611d855760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0383166126ef5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c62565b6001600160a01b0382166127455760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c62565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0383166128a05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c62565b600082116129165760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c62565b6001600160a01b0384166000908152600260205260408120548190819060ff16156129445760019250612972565b6001600160a01b03861660009081526002602052604090205460ff161561296e5760019150612972565b5060015b61297c8787612e35565b15612b8c57601f5460ff166129d857806129d85760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c62565b82806129e15750815b15612aa5576001600160a01b03871660009081526003602052604090205460ff16158015612a2857506001600160a01b03861660009081526003602052604090205460ff16155b15612aa557601a54851115612aa55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c62565b6011546001600160a01b038781166101009092041614801590612ac6575081155b15612b8c576001600160a01b03861660009081526003602052604090205460ff16612b8c57601b5485612b0e886001600160a01b031660009081526001602052604090205490565b612b189190613b2c565b1115612b8c5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c62565b8115612c995760155474010000000000000000000000000000000000000000900460ff16612c99576015547501000000000000000000000000000000000000000000900460ff168015612bf857506001600160a01b03861660009081526006602052604090205460ff16155b8015612c1d57506001600160a01b03871660009081526006602052604090205460ff16155b15612c9957306000908152600160205260409020546016548110612c975760175460185460ff1615612c81576019546012546001600160a01b031660009081526001602052604090205461271091612c7491613b0d565b612c7e9190613abb565b90505b808210612c8c578091505b612c9582612ef3565b505b505b612ca7878787868686612cb2565b979650505050505050565b6000612cbe8787612e35565b15612cc95760008080fd5b6001600160a01b03871660009081526009602052604090205460019060ff1680612d0b57506001600160a01b03871660009081526009602052604090205460ff165b15612d14575060005b6001600160a01b03881660009081526001602052604081208054889290612d3c908490613af6565b909155506000905081612d4f5786612d5b565b612d5b8987878a613441565b6001600160a01b038916600090815260016020526040812080549293508392909190612d88908490613b2c565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612dd491815260200190565b60405180910390a3601f54610100900460ff16612e2657612df58989613538565b601f54610100900460ff16158015612e125750612e128989612e35565b8015612e1c575083155b15612e2657600080fd5b50600198975050505050505050565b600080546001600160a01b03848116911614801590612e6257506000546001600160a01b03838116911614155b8015612e8757506001600160a01b0382166000908152600a602052604090205460ff16155b8015612eac57506001600160a01b0383166000908152600a602052604090205460ff16155b8015612ec357506001600160a01b03821661dead14155b8015612ed757506001600160a01b03821615155b8015612eec57506001600160a01b0383163014155b9392505050565b601580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805160808101825260105461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052612f835750613416565b30600090815260056020908152604080832060115461010090046001600160a01b0316845290915290205460001914612fe65730600090815260056020908152604080832060115461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836000015161ffff16856130079190613b0d565b6130119190613abb565b61301b9190613abb565b905060006130298285613af6565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061306357613063613b87565b60200260200101906001600160a01b031690816001600160a01b031681525050601160019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130d157600080fd5b505afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131099190613b6a565b8160018151811061311c5761311c613b87565b6001600160a01b0392831660209182029290920101526011546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613182908590600090869030904290600401613bb6565b600060405180830381600087803b15801561319c57600080fd5b505af19250505080156131ad575060015b6131ba5750505050613416565b476000836131c88684613b0d565b6131d29190613abb565b905084156132fb576011546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c4016060604051808303818588803b15801561326057600080fd5b505af1935050505080156132af575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526132ac91810190613c27565b60015b6132be57505050505050613416565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b600080876060015161ffff16886040015161ffff168561331b9190613b0d565b6133259190613abb565b905060006133338286613af6565b60208a015190915061ffff16156133a1576014546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613396576040519150601f19603f3d011682016040523d82523d6000602084013e61339b565b606091505b50909350505b604089015161ffff161561340c576015546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613401576040519150601f19603f3d011682016040523d82523d6000602084013e613406565b606091505b50909350505b5050505050505050505b50601580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60008084156134575750600f5461ffff16613481565b83156134705750600f5462010000900461ffff16613481565b50600f54640100000000900461ffff165b8061348f5782915050610f08565b466001148061349e5750466038145b156134a857506111945b60006127106134b78386613b0d565b6134c19190613abb565b9050801561352e5730600090815260016020526040812080548392906134e8908490613b2c565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ca78185613af6565b601f54610100900460ff16156135b65760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c62565b6135c08282612e35565b1580156135da57506012546001600160a01b038281169116145b15610e1f576001600160a01b0382166000908152600a60209081526040808320805460ff199081166001908117909255600984529382902080549094168117909355601f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055601580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579101611e5d565b600060208083528351808285015260005b818110156136e1578581018301518582016040015282016136c5565b818111156136f3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b038116811461373c57600080fd5b50565b6000806040838503121561375257600080fd5b823561375d81613727565b946020939093013593505050565b60006020828403121561377d57600080fd5b8135612eec81613727565b60006020828403121561379a57600080fd5b5035919050565b600080604083850312156137b457600080fd5b82356137bf81613727565b915060208301356137cf81613727565b809150509250929050565b6000806000606084860312156137ef57600080fd5b83356137fa81613727565b9250602084013561380a81613727565b929592945050506040919091013590565b6000806040838503121561382e57600080fd5b50508035926020909101359150565b803561ffff8116811461384f57600080fd5b919050565b60008060006060848603121561386957600080fd5b6138728461383d565b92506138806020850161383d565b915061388e6040850161383d565b90509250925092565b8035801515811461384f57600080fd5b600080604083850312156138ba57600080fd5b82356138c581613727565b91506138d360208401613897565b90509250929050565b600080604083850312156138ef57600080fd5b6138c583613897565b60006020828403121561390a57600080fd5b612eec82613897565b6000806000806080858703121561392957600080fd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061395957607f821691505b60208210811415613993577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613a035781600019048211156139e9576139e9613999565b808516156139f657918102915b93841c93908002906139cd565b509250929050565b600082613a1a57506001610bf2565b81613a2757506000610bf2565b8160018114613a3d5760028114613a4757613a63565b6001915050610bf2565b60ff841115613a5857613a58613999565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715613a86575081810a610bf2565b613a9083836139c8565b8060001904821115613aa457613aa4613999565b029392505050565b6000612eec60ff841683613a0b565b600082613af1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613b0857613b08613999565b500390565b6000816000190483118215151615613b2757613b27613999565b500290565b60008219821115613b3f57613b3f613999565b500190565b600061ffff808316818516808303821115613b6157613b61613999565b01949350505050565b600060208284031215613b7c57600080fd5b8151612eec81613727565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613c065784516001600160a01b031683529383019391830191600101613be1565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613c3c57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122085e931c67bbd0292289e56ca9280b27b24533efb52806b2a71fbf87f58d3cab864736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000005

-----Decoded View---------------
Arg [0] : _snipeBlockAmt (uint256): 5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000005


Deployed Bytecode Sourcemap

5710:22282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7570:73;;;;;;;;;;;;7601:42;7570:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;7570:73:0;;;;;;;;7917:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;7917:28:0;245:177:1;6893:107:0;;;;;;;;;;-1:-1:-1;6893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;6893:107:0;427:365:1;12501:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7395:35::-;;;;;;;;;;-1:-1:-1;7395:35:0;;;;;;;-1:-1:-1;;;;;7395:35:0;;;7362:26;;;;;;;;;;-1:-1:-1;7362:26:0;;;;;;;;;;;1880:14:1;;1873:22;1855:41;;1843:2;1828:18;7362:26:0;1715:187:1;13114:161:0;;;;;;;;;;-1:-1:-1;13114:161:0;;;;;:::i;:::-;;:::i;15425:106::-;;;;;;;;;;-1:-1:-1;15425:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;15505:18:0;15481:4;15505:18;;;:9;:18;;;;;;;;;15425:106;18256:114;;;;;;;;;;;;;:::i;19288:205::-;;;;;;;;;;-1:-1:-1;19288:205:0;;;;;:::i;:::-;;:::i;:::-;;19768:804;;;;;;;;;;-1:-1:-1;19768:804:0;;;;;:::i;:::-;;:::i;12236:83::-;;;;;;;;;;-1:-1:-1;12309:7:0;;12236:83;;13728:306;;;;;;;;;;-1:-1:-1;13728:306:0;;;;;:::i;:::-;;:::i;17865:267::-;;;;;;;;;;-1:-1:-1;17865:267:0;;;;;:::i;:::-;;:::i;8025:33::-;;;;;;;;;;;;;;;;7159:42;;;;;;;;;;;;7197:4;7159:42;;7952:25;;;;;;;;;;;;;;;;12325:80;;;;;;;;;;-1:-1:-1;12325:80:0;;6570:1;4072:36:1;;4060:2;4045:18;12325:80:0;3930:184:1;16483:453:0;;;;;;;;;;-1:-1:-1;16483:453:0;;;;;:::i;:::-;;:::i;16331:140::-;;;;;;;;;;-1:-1:-1;16331:140:0;;;;;:::i;:::-;;:::i;14042:215::-;;;;;;;;;;-1:-1:-1;14042:215:0;;;;;:::i;:::-;;:::i;17584:273::-;;;;;;;;;;-1:-1:-1;17584:273:0;;;;;:::i;:::-;;:::i;7437:21::-;;;;;;;;;;-1:-1:-1;7437:21:0;;;;-1:-1:-1;;;;;7437:21:0;;;8321:34;;;;;;;;;;-1:-1:-1;8321:34:0;;;;;;;;18378:189;;;;;;;;;;-1:-1:-1;18378:189:0;;;;;:::i;:::-;;:::i;11026:654::-;;;;;;;;;;-1:-1:-1;11026:654:0;;;;;:::i;:::-;;:::i;15912:125::-;;;;;;;;;;-1:-1:-1;15912:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;16001:28:0;15977:4;16001:28;;;:19;:28;;;;;;;;;15912:125;8362:36;;;;;;;;;;-1:-1:-1;8362:36:0;;;;;;;;;;;17396:180;;;;;;;;;;;;;:::i;13600:120::-;;;;;;;;;;-1:-1:-1;13600:120:0;;;;;:::i;:::-;;:::i;16045:134::-;;;;;;;;;;-1:-1:-1;16045:134:0;;;;;:::i;:::-;;:::i;8405:26::-;;;;;;;;;;;;;;;;16187:132;;;;;;;;;;-1:-1:-1;16187:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;16281:30:0;16257:4;16281:30;;;:21;:30;;;;;;;;;16187:132;15539:178;;;;;;;;;;-1:-1:-1;15539:178:0;;;;;:::i;:::-;;:::i;18140:108::-;;;;;;;;;;;;;:::i;12814:117::-;;;;;;;;;;-1:-1:-1;12814:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12907:16:0;12880:7;12907:16;;;:7;:16;;;;;;;12814:117;11688:195;;;;;;;;;;;;;:::i;7650:92::-;;;;;;;;;;-1:-1:-1;7650:92:0;;;;-1:-1:-1;;;;;7650:92:0;;;15007:410;;;;;;;;;;-1:-1:-1;15007:410:0;;;;;:::i;:::-;;:::i;12587:80::-;;;;;;;;;;-1:-1:-1;12639:7:0;11004:6;-1:-1:-1;;;;;11004:6:0;12587:80;18256:114;25940:304;;;;;;;;;;;;;:::i;12411:84::-;;;;;;;;;;;;;:::i;14265:225::-;;;;;;;;;;-1:-1:-1;14265:225:0;;;;;:::i;:::-;;:::i;26252:169::-;;;;;;;;;;-1:-1:-1;26252:169:0;;;;;:::i;:::-;;:::i;12939:167::-;;;;;;;;;;-1:-1:-1;12939:167:0;;;;;:::i;:::-;;:::i;16944:444::-;;;;;;;;;;-1:-1:-1;16944:444:0;;;;;:::i;:::-;;:::i;7984:34::-;;;;;;;;;;-1:-1:-1;7984:34:0;;;;;;;;19501:259;;;;;;;;;;-1:-1:-1;19501:259:0;;;;;:::i;:::-;;:::i;7009:141::-;;;;;;;;;;-1:-1:-1;7009:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6094:6:1;6127:15;;;6109:34;;6179:15;;;6174:2;6159:18;;6152:43;6231:15;;;6211:18;;;6204:43;;;;6283:15;;;6278:2;6263:18;;6256:43;6071:3;6056:19;7009:141:0;5861:444:1;20580:201:0;;;;;;;;;;-1:-1:-1;20580:201:0;;;;;:::i;:::-;;:::i;15725:179::-;;;;;;;;;;-1:-1:-1;15725:179:0;;;;;:::i;:::-;;:::i;12673:133::-;;;;;;;;;;-1:-1:-1;12673:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12775:19:0;;;12757:7;12775:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12673:133;8278:32;;;;;;;;;;;;;;;;14498:501;;;;;;;;;;-1:-1:-1;14498:501:0;;;;;:::i;:::-;;:::i;18581:699::-;;;;;;;;;;-1:-1:-1;18581:699:0;;;;;:::i;:::-;;:::i;7871:39::-;;;;;;;;;;-1:-1:-1;7871:39:0;;;;;;;;;;;12501:80;12549:13;12573:5;12566:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12501:80;:::o;13114:161::-;13189:4;13206:39;191:10;13229:7;13238:6;13206:8;:39::i;:::-;-1:-1:-1;13263:4:0;13114:161;;;;;:::o;18256:114::-;18303:7;18348:13;6570:1;18348:2;:13;:::i;:::-;18330:14;;:32;;;;:::i;:::-;18323:39;;18256:114;:::o;19288:205::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;;;;;;;;;19406:3:::1;19380:22;:29;;19372:64;;;::::0;-1:-1:-1;;;19372:64:0;;10255:2:1;19372:64:0::1;::::0;::::1;10237:21:1::0;10294:2;10274:18;;;10267:30;10333:24;10313:18;;;10306:52;10375:18;;19372:64:0::1;10053:346:1::0;19372:64:0::1;19447:13;:38:::0;19288:205::o;19768:804::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;19872:23:::1;::::0;::::1;;19864:32;;;::::0;::::1;;-1:-1:-1::0;;;;;19915:23:0;::::1;19933:4;19915:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;19960:24:0;::::1;19979:4;19960:24;;19915:69;:107;;;;-1:-1:-1::0;20006:6:0::1;::::0;-1:-1:-1;;;;;20006:16:0;;::::1;:6:::0;::::1;:16;;19915:107;:146;;;;-1:-1:-1::0;20044:6:0::1;::::0;-1:-1:-1;;;;;20044:17:0;;::::1;:6:::0;::::1;:17;;19915:146;19907:165;;;::::0;-1:-1:-1;;;19907:165:0;;10606:2:1;19907:165:0::1;::::0;::::1;10588:21:1::0;10645:1;10625:18;;;10618:29;10683:8;10663:18;;;10656:36;10709:18;;19907:165:0::1;10404:329:1::0;19907:165:0::1;20097:7;-1:-1:-1::0;;;;;20087:17:0::1;:6;-1:-1:-1::0;;;;;20087:17:0::1;;20083:482;;;-1:-1:-1::0;;;;;20121:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;20150:4:::1;-1:-1:-1::0;;20121:33:0;;::::1;::::0;::::1;::::0;;;20169:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;20216:34:::1;::::0;20121:26;;20216:19:::1;:34::i;:::-;19768:804:::0;;:::o;20083:482::-:1;-1:-1:-1::0;;;;;20283:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;20311:4:::1;-1:-1:-1::0;;20283:32:0;;::::1;::::0;::::1;::::0;;;20330:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;20378:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;20424:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;20471:33:::1;::::0;20283:25;;20471:19:::1;:33::i;:::-;20519:34;20539:7;20548:4;20519:19;:34::i;13728:306::-:0;-1:-1:-1;;;;;13849:19:0;;13828:4;13849:19;;;:11;:19;;;;;;;;13869:10;13849:31;;;;;;;;-1:-1:-1;;13849:52:0;13845:126;;-1:-1:-1;;;;;13918:19:0;;;;;;:11;:19;;;;;;;;13938:10;13918:31;;;;;;;:41;;13953:6;;13918:19;:41;;13953:6;;13918:41;:::i;:::-;;;;-1:-1:-1;;13845:126:0;13990:36;14000:6;14008:9;14019:6;13990:9;:36::i;:::-;13983:43;13728:306;-1:-1:-1;;;;13728:306:0:o;17865:267::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;18010:3:::1;17997:7;;18007:1;17997:11;;;;:::i;:::-;:16;;;;:::i;:::-;17985:7;17974;17964;;:17;;;;:::i;:::-;17963:29;;;;:::i;:::-;:51;;17955:112;;;::::0;-1:-1:-1;;;17955:112:0;;11303:2:1;17955:112:0::1;::::0;::::1;11285:21:1::0;11342:2;11322:18;;;11315:30;11381:34;11361:18;;;11354:62;11452:18;11432;;;11425:46;11488:19;;17955:112:0::1;11101:412:1::0;17955:112:0::1;18117:7;18106;18096;;:17;;;;:::i;:::-;18095:29;;;;:::i;:::-;18078:14;:46:::0;-1:-1:-1;;17865:267:0:o;16483:453::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;16591:14:::1;::::0;::::1;;16590:15;16582:45;;;::::0;-1:-1:-1;;;16582:45:0;;11720:2:1;16582:45:0::1;::::0;::::1;11702:21:1::0;11759:2;11739:18;;;11732:30;11798:19;11778:18;;;11771:47;11835:18;;16582:45:0::1;11518:341:1::0;16582:45:0::1;7197:4;16646:6;:21;;;;:65;;;;;7247:4;16688:7;:23;;;;16646:65;:117;;;;;7301:4;16732:11;:31;;;;16646:117;16638:170;;;::::0;-1:-1:-1;;;16638:170:0;;12066:2:1;16638:170:0::1;::::0;::::1;12048:21:1::0;12105:2;12085:18;;;12078:30;12144:25;12124:18;;;12117:53;12187:18;;16638:170:0::1;11864:347:1::0;16638:170:0::1;16819:9;:25:::0;;::::1;::::0;;::::1;16855:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16893:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16483:453::o;16331:140::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;-1:-1:-1;;;;;16423:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16423:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16331:140::o;14042:215::-;191:10;14130:4;14179:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14179:34:0;;;;;;;;;;14130:4;;14147:80;;14170:7;;14179:47;;14216:10;;14179:47;:::i;:::-;14147:8;:80::i;17584:273::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;17729:4:::1;17715:7;;17725:1;17715:11;;;;:::i;:::-;:18;;;;:::i;:::-;17703:7;17692;17682;;:17;;;;:::i;:::-;17681:29;;;;:::i;:::-;:53;;17673:121;;;::::0;-1:-1:-1;;;17673:121:0;;12551:2:1;17673:121:0::1;::::0;::::1;12533:21:1::0;12590:2;12570:18;;;12563:30;12629:34;12609:18;;;12602:62;12700:25;12680:18;;;12673:53;12743:19;;17673:121:0::1;12349:419:1::0;17673:121:0::1;17842:7;17831;17821;;:17;;;;:::i;:::-;17820:29;;;;:::i;:::-;17805:12;:44:::0;-1:-1:-1;;17584:273:0:o;18378:189::-;18507:6;;-1:-1:-1;;;;;18507:6:0;18469:7;12907:16;;;:7;:16;;;;;;7348:5;;18497:41;;18517:21;;18497:41;:::i;:::-;18496:62;;;;:::i;11026:654::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;-1:-1:-1;;;;;11105:22:0;::::1;11097:96;;;::::0;-1:-1:-1;;;11097:96:0;;12975:2:1;11097:96:0::1;::::0;::::1;12957:21:1::0;13014:2;12994:18;;;12987:30;13053:34;13033:18;;;13026:62;13124:31;13104:18;;;13097:59;13173:19;;11097:96:0::1;12773:425:1::0;11097:96:0::1;-1:-1:-1::0;;;;;11212:16:0;::::1;7601:42;11212:16;;11204:90;;;::::0;-1:-1:-1;;;11204:90:0;;12975:2:1;11204:90:0::1;::::0;::::1;12957:21:1::0;13014:2;12994:18;;;12987:30;13053:34;13033:18;;;13026:62;13124:31;13104:18;;;13097:59;13173:19;;11204:90:0::1;12773:425:1::0;11204:90:0::1;11325:6;::::0;;11305:34:::1;::::0;-1:-1:-1;;;;;11325:6:0;;::::1;::::0;11305:19:::1;:34::i;:::-;11350:35;11370:8;11380:4;11350:19;:35::i;:::-;11430:1;11420:6:::0;;-1:-1:-1;;;;;11420:6:0::1;12907:16:::0;;:7;:16;;;;;;11410:21;11406:127:::1;;11465:6;::::0;;-1:-1:-1;;;;;11465:6:0::1;12907:16:::0;;;:7;:16;;;;;;;;11448:73:::1;::::0;11473:8;;11465:6;;11448:16:::1;:73::i;:::-;;11406:127;11553:16;11572:6:::0;;-1:-1:-1;;;;;11589:17:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;11622:40:::1;::::0;11572:6;;;::::1;::::0;;;11622:40:::1;::::0;11553:16;11622:40:::1;11086:594;11026:654:::0;:::o;17396:180::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;17547:14:::1;:21:::0;;-1:-1:-1;;17547:21:0::1;17564:4;17547:21;::::0;;17396:180::o;13600:120::-;13653:4;13677:35;13685:7;-1:-1:-1;;13677:7:0;:35::i;16045:134::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;-1:-1:-1;;;;;16133:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16133:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16045:134::o;15539:178::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;-1:-1:-1;;;;;15616:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;15608:64;;;::::0;-1:-1:-1;;;15608:64:0;;13405:2:1;15608:64:0::1;::::0;::::1;13387:21:1::0;13444:2;13424:18;;;13417:30;13483:34;13463:18;;;13456:62;13554:3;13534:18;;;13527:31;13575:19;;15608:64:0::1;13203:397:1::0;15608:64:0::1;-1:-1:-1::0;;;;;15683:18:0::1;15704:5;15683:18:::0;;;:9:::1;:18;::::0;;;;:26;;-1:-1:-1;;15683:26:0::1;::::0;;15539:178::o;18140:108::-;18183:7;18226:13;6570:1;18226:2;:13;:::i;:::-;18210:12;;:30;;;;:::i;11688:195::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;11775:6:::1;::::0;;11755:34:::1;::::0;-1:-1:-1;;;;;11775:6:0;;::::1;::::0;11755:19:::1;:34::i;:::-;11817:1;11800:19:::0;;;::::1;::::0;;11835:40:::1;::::0;11817:1;;11835:40:::1;::::0;11817:1;;11835:40:::1;11688:195::o:0;15007:410::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;15088:16;15084:326:::1;;-1:-1:-1::0;;;;;;15121:13:0::1;15137:5;15121:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;15121:21:0::1;::::0;;19768:804::o;15084:326::-:1;15179:17;::::0;:22;15175:139:::1;;15268:7;15248:17;;15230:15;:35;;;;:::i;:::-;:45;15222:76;;;::::0;-1:-1:-1;;;15222:76:0;;13807:2:1;15222:76:0::1;::::0;::::1;13789:21:1::0;13846:2;13826:18;;;13819:30;13885:20;13865:18;;;13858:48;13923:18;;15222:76:0::1;13605:342:1::0;15222:76:0::1;-1:-1:-1::0;;;;;15328:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15328:20:0::1;15344:4;15328:20;::::0;;15383:15:::1;15363:17;:35:::0;15007:410;;:::o;25940:304::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;26002:14:::1;::::0;::::1;;26001:15;25993:55;;;::::0;-1:-1:-1;;;25993:55:0;;14154:2:1;25993:55:0::1;::::0;::::1;14136:21:1::0;14193:2;14173:18;;;14166:30;14232:29;14212:18;;;14205:57;14279:18;;25993:55:0::1;13952:351:1::0;25993:55:0::1;26067:16;::::0;::::1;::::0;::::1;;;26059:55;;;::::0;-1:-1:-1;;;26059:55:0;;14510:2:1;26059:55:0::1;::::0;::::1;14492:21:1::0;14549:2;14529:18;;;14522:30;14588:28;14568:18;;;14561:56;14634:18;;26059:55:0::1;14308:350:1::0;26059:55:0::1;26125:14;:21:::0;;-1:-1:-1;;26125:21:0;;::::1;26142:4;26125:21;::::0;;;26157:23:::1;:31:::0;;;;::::1;::::0;;26213:15:::1;26199:11;:29:::0;25940:304::o;12411:84::-;12461:13;12485:7;12478:14;;;;;:::i;14265:225::-;191:10;14358:4;14407:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14407:34:0;;;;;;;;;;14358:4;;14375:85;;14398:7;;14407:52;;14444:15;;14407:52;:::i;26252:169::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;26361:1:::1;26337:21;:25;26329:39;;;::::0;-1:-1:-1;;;26329:39:0;;14865:2:1;26329:39:0::1;::::0;::::1;14847:21:1::0;14904:1;14884:18;;;14877:29;14942:4;14922:18;;;14915:32;14964:18;;26329:39:0::1;14663:325:1::0;26329:39:0::1;26379:34;::::0;-1:-1:-1;;;;;26379:11:0;::::1;::::0;26391:21:::1;26379:34:::0;::::1;;;::::0;::::1;::::0;;;26391:21;26379:11;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;12939:167:::0;13017:4;13034:42;191:10;13058:9;13069:6;13034:9;:42::i;:::-;-1:-1:-1;13094:4:0;;12939:167;-1:-1:-1;;;12939:167:0:o;16944:444::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;17049:7:::1;:29:::0;;::::1;17129:33:::0;;::::1;::::0;::::1;::::0;17089:29;;::::1;::::0;::::1;::::0;;;;17049;;::::1;17089::::0;;;;;;;::::1;17129:33;;::::0;;17151:11;17193:21:::1;17109:9:::0;17069;17193:21:::1;:::i;:::-;:35;;;;:::i;:::-;17173:7;:55:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;17274:9:::1;:17:::0;-1:-1:-1;;17255:36:0::1;::::0;17274:17;;::::1;::::0;::::1;::::0;17255:16:::1;:36;:::i;:::-;17310:7;:17:::0;17239:52:::1;::::0;;::::1;::::0;-1:-1:-1;17310:17:0;;::::1;;:26:::0;-1:-1:-1;17310:26:0::1;17302:78;;;::::0;-1:-1:-1;;;17302:78:0;;15424:2:1;17302:78:0::1;::::0;::::1;15406:21:1::0;15463:2;15443:18;;;15436:30;15502:34;15482:18;;;15475:62;15573:9;15553:18;;;15546:37;15600:19;;17302:78:0::1;15222:403:1::0;17302:78:0::1;17038:350;16944:444:::0;;;:::o;19501:259::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;19606:19:::1;:33:::0;;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19650:22:::1;:47:::0;;-1:-1:-1;;19650:47:0::1;::::0;::::1;;;::::0;;19713:39:::1;::::0;1855:41:1;;;19713:39:0::1;::::0;1843:2:1;1828:18;19713:39:0::1;;;;;;;;19501:259:::0;;:::o;20580:201::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;20686:15:::1;:36:::0;;-1:-1:-1;;;;;20686:36:0;;::::1;::::0;;;::::1;;::::0;;;20733:17:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;20580:201::o;15725:179::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;15826:16:::1;::::0;::::1;;15815:27;;::::0;::::1;;;;15807:52;;;::::0;-1:-1:-1;;;15807:52:0;;15832:2:1;15807:52:0::1;::::0;::::1;15814:21:1::0;15871:2;15851:18;;;15844:30;15910:14;15890:18;;;15883:42;15942:18;;15807:52:0::1;15630:336:1::0;15807:52:0::1;15870:16;:26:::0;;-1:-1:-1;;15870:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15725:179::o;14498:501::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;14569:29:::1;14620:9;14569:61;;14641:16;14678:10;-1:-1:-1::0;;;;;14678:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14660:47:0::1;;14716:4;14723:10;-1:-1:-1::0;;;;;14723:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14660:81;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16480:15:1;;;14660:81:0::1;::::0;::::1;16462:34:1::0;16532:15;;16512:18;;;16505:43;16374:18;;14660:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14641:100:::0;-1:-1:-1;;;;;;14756:22:0;::::1;14752:207;;14822:10;-1:-1:-1::0;;;;;14822:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14804:50:0::1;;14863:4;14870:10;-1:-1:-1::0;;;;;14870:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14804:84;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;16480:15:1;;;14804:84:0::1;::::0;::::1;16462:34:1::0;16532:15;;16512:18;;;16505:43;16374:18;;14804:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14795:6;:93:::0;;;::::1;-1:-1:-1::0;;;;;14795:93:0;;;::::1;::::0;;;::::1;::::0;;14752:207:::1;;;14930:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;14930:17:0;::::1;;::::0;;14752:207:::1;-1:-1:-1::0;14969:9:0::1;:22:::0;;-1:-1:-1;;;;;14969:22:0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;14498:501:0:o;18581:699::-;9110:6;;-1:-1:-1;;;;;9110:6:0;191:10;9110:22;9102:52;;;;-1:-1:-1;;;9102:52:0;;9909:2:1;9102:52:0;;;9891:21:1;9948:2;9928:18;;;9921:30;-1:-1:-1;;;9967:18:1;;;9960:47;10024:18;;9102:52:0;9707:341:1;9102:52:0;18781:16:::1;18761;18751:7;;:26;;;;:::i;:::-;18750:47;;;;:::i;:::-;18734:13;:63:::0;18822:7:::1;::::0;18849:13;;18822:23:::1;::::0;18832:13;;18822:23:::1;:::i;:::-;18821:41;;;;:::i;:::-;18808:10;:54:::0;;;18881:13:::1;::::0;:27:::1;;18873:73;;;::::0;-1:-1:-1;;;18873:73:0;;16761:2:1;18873:73:0::1;::::0;::::1;16743:21:1::0;16800:2;16780:18;;;16773:30;16839:34;16819:18;;;16812:62;16910:3;16890:18;;;16883:31;16931:19;;18873:73:0::1;16559:397:1::0;18873:73:0::1;18990:6;::::0;-1:-1:-1;;;;;18990:6:0::1;12880:7:::0;12907:16;;;:7;:16;;;;;;7348:5:::1;::::0;18980:23:::1;::::0;19000:3:::1;18980:23;:::i;:::-;18979:44;;;;:::i;:::-;18965:10;;:58;;18957:106;;;::::0;-1:-1:-1;;;18957:106:0;;17163:2:1;18957:106:0::1;::::0;::::1;17145:21:1::0;17202:2;17182:18;;;17175:30;17241:34;17221:18;;;17214:62;17312:5;17292:18;;;17285:33;17335:19;;18957:106:0::1;16961:399:1::0;18957:106:0::1;19106:9;19096:7;;:19;;;;:::i;:::-;19082:10;;:33;;19074:92;;;::::0;-1:-1:-1;;;19074:92:0;;17567:2:1;19074:92:0::1;::::0;::::1;17549:21:1::0;17606:2;17586:18;;;17579:30;17645:34;17625:18;;;17618:62;17716:16;17696:18;;;17689:44;17750:19;;19074:92:0::1;17365:410:1::0;19074:92:0::1;19212:9;19202:7;;:19;;;;:::i;:::-;19185:13;;:36;;19177:95;;;::::0;-1:-1:-1;;;19177:95:0;;17567:2:1;19177:95:0::1;::::0;::::1;17549:21:1::0;17606:2;17586:18;;;17579:30;17645:34;17625:18;;;17618:62;17716:16;17696:18;;;17689:44;17750:19;;19177:95:0::1;17365:410:1::0;13283:309:0;-1:-1:-1;;;;;13377:20:0;;13369:52;;;;-1:-1:-1;;;13369:52:0;;17982:2:1;13369:52:0;;;17964:21:1;18021:2;18001:18;;;17994:30;18060:21;18040:18;;;18033:49;18099:18;;13369:52:0;17780:343:1;13369:52:0;-1:-1:-1;;;;;13440:21:0;;13432:53;;;;-1:-1:-1;;;13432:53:0;;17982:2:1;13432:53:0;;;17964:21:1;18021:2;18001:18;;;17994:30;18060:21;18040:18;;;18033:49;18099:18;;13432:53:0;17780:343:1;13432:53:0;-1:-1:-1;;;;;13498:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13551:33;;391:25:1;;;13551:33:0;;364:18:1;13551:33:0;;;;;;;13283:309;;;:::o;21120:2110::-;21199:4;-1:-1:-1;;;;;21224:18:0;;21216:68;;;;-1:-1:-1;;;21216:68:0;;18330:2:1;21216:68:0;;;18312:21:1;18369:2;18349:18;;;18342:30;18408:34;18388:18;;;18381:62;18479:7;18459:18;;;18452:35;18504:19;;21216:68:0;18128:401:1;21216:68:0;-1:-1:-1;;;;;21303:16:0;;21295:64;;;;-1:-1:-1;;;21295:64:0;;18736:2:1;21295:64:0;;;18718:21:1;18775:2;18755:18;;;18748:30;18814:34;18794:18;;;18787:62;18885:5;18865:18;;;18858:33;18908:19;;21295:64:0;18534:399:1;21295:64:0;21387:1;21378:6;:10;21370:64;;;;-1:-1:-1;;;21370:64:0;;19140:2:1;21370:64:0;;;19122:21:1;19179:2;19159:18;;;19152:30;19218:34;19198:18;;;19191:62;19289:11;19269:18;;;19262:39;19318:19;;21370:64:0;18938:405:1;21370:64:0;-1:-1:-1;;;;;21533:13:0;;21445:8;21533:13;;;:7;:13;;;;;;21445:8;;;;21533:13;;21529:162;;;21569:4;21563:10;;21529:162;;;-1:-1:-1;;;;;21595:11:0;;;;;;:7;:11;;;;;;;;21591:100;;;21630:4;21623:11;;21591:100;;;-1:-1:-1;21675:4:0;21591:100;21705:20;21716:4;21722:2;21705:10;:20::i;:::-;21701:698;;;21746:14;;;;21742:143;;21786:5;21781:89;;21816:34;;-1:-1:-1;;;21816:34:0;;19550:2:1;21816:34:0;;;19532:21:1;19589:2;19569:18;;;19562:30;19628:26;19608:18;;;19601:54;19672:18;;21816:34:0;19348:348:1;21781:89:0;21903:3;:11;;;;21910:4;21903:11;21899:232;;;-1:-1:-1;;;;;21939:27:0;;;;;;:21;:27;;;;;;;;21938:28;:58;;;;-1:-1:-1;;;;;;21971:25:0;;;;;;:21;:25;;;;;;;;21970:26;21938:58;21934:182;;;22039:12;;22029:6;:22;;22021:75;;;;-1:-1:-1;;;22021:75:0;;19903:2:1;22021:75:0;;;19885:21:1;19942:2;19922:18;;;19915:30;19981:34;19961:18;;;19954:62;20052:10;20032:18;;;20025:38;20080:19;;22021:75:0;19701:404:1;22021:75:0;22163:9;;-1:-1:-1;;;;;22149:24:0;;;22163:9;;;;;22149:24;;;;:33;;;22178:4;22177:5;22149:33;22145:243;;;-1:-1:-1;;;;;22208:25:0;;;;;;:21;:25;;;;;;;;22203:170;;22292:14;;22282:6;22266:13;22276:2;-1:-1:-1;;;;;12907:16:0;12880:7;12907:16;;;:7;:16;;;;;;;12814:117;22266:13;:22;;;;:::i;:::-;:40;;22258:95;;;;-1:-1:-1;;;22258:95:0;;20312:2:1;22258:95:0;;;20294:21:1;20351:2;20331:18;;;20324:30;20390:34;20370:18;;;20363:62;20461:12;20441:18;;;20434:40;20491:19;;22258:95:0;20110:406:1;22258:95:0;22415:4;22411:742;;;22441:6;;;;;;;22436:706;;22472:19;;;;;;;:64;;;;-1:-1:-1;;;;;;22516:20:0;;;;;;:16;:20;;;;;;;;22515:21;22472:64;:111;;;;-1:-1:-1;;;;;;22561:22:0;;;;;;:16;:22;;;;;;;;22560:23;22472:111;22468:659;;;22675:4;22626:28;12907:16;;;:7;:16;;;;;;22732:13;;22708:37;;22704:404;;22792:10;;22833:22;;;;22829:97;;;22890:13;;22880:6;;-1:-1:-1;;;;;22880:6:0;12880:7;12907:16;;;:7;:16;;;;;;7348:5;;22870:33;;;:::i;:::-;22869:54;;;;:::i;:::-;22859:64;;22829:97;22980:7;22956:20;:31;22952:72;;23014:7;22991:30;;22952:72;23050:34;23063:20;23050:12;:34::i;:::-;22747:361;22704:404;22603:524;22468:659;23170:52;23187:4;23193:2;23197:6;23205:3;23210:4;23216:5;23170:16;:52::i;:::-;23163:59;21120:2110;-1:-1:-1;;;;;;;21120:2110:0:o;26429:813::-;26548:4;26569:20;26580:4;26586:2;26569:10;:20::i;:::-;26565:92;;;26593:12;26635:8;;;26565:92;-1:-1:-1;;;;;26701:25:0;;26667:12;26701:25;;;:19;:25;;;;;;26682:4;;26701:25;;;:52;;-1:-1:-1;;;;;;26730:23:0;;;;;;:19;:23;;;;;;;;26701:52;26697:99;;;-1:-1:-1;26779:5:0;26697:99;-1:-1:-1;;;;;26806:13:0;;;;;;:7;:13;;;;;:23;;26823:6;;26806:13;:23;;26823:6;;26806:23;:::i;:::-;;;;-1:-1:-1;26840:22:0;;-1:-1:-1;26866:7:0;26865:55;;26914:6;26865:55;;;26877:34;26887:4;26893:3;26898:4;26904:6;26877:9;:34::i;:::-;-1:-1:-1;;;;;26931:11:0;;;;;;:7;:11;;;;;:29;;26840:80;;-1:-1:-1;26840:80:0;;26931:11;;;:29;;26840:80;;26931:29;:::i;:::-;;;;;;;;26991:2;-1:-1:-1;;;;;26976:34:0;26985:4;-1:-1:-1;;;;;26976:34:0;;26995:14;26976:34;;;;391:25:1;;379:2;364:18;;245:177;26976:34:0;;;;;;;;27026:16;;;;;;;27021:192;;27059:28;27078:4;27084:2;27059:18;:28::i;:::-;27107:16;;;;;;;27106:17;:41;;;;;27127:20;27138:4;27144:2;27127:10;:20::i;:::-;27106:51;;;;;27152:5;27151:6;27106:51;27102:100;;;27178:8;;;27102:100;-1:-1:-1;27230:4:0;;26429:813;-1:-1:-1;;;;;;;;26429:813:0:o;20789:323::-;20857:4;11004:6;;-1:-1:-1;;;;;20881:15:0;;;11004:6;;20881:15;;;;:45;;-1:-1:-1;10977:7:0;11004:6;-1:-1:-1;;;;;20913:13:0;;;11004:6;;20913:13;;20881:45;:84;;;;-1:-1:-1;;;;;;20944:21:0;;;;;;:17;:21;;;;;;;;20943:22;20881:84;:125;;;;-1:-1:-1;;;;;;20983:23:0;;;;;;:17;:23;;;;;;;;20982:24;20881:125;:152;;;;-1:-1:-1;;;;;;21023:10:0;;7601:42;21023:10;;20881:152;:185;;;;-1:-1:-1;;;;;;21050:16:0;;;;20881:185;:223;;;;-1:-1:-1;;;;;;21083:21:0;;21099:4;21083:21;;20881:223;20874:230;20789:323;-1:-1:-1;;;20789:323:0:o;23238:1911::-;9004:6;:13;;;;;;;;23321:30:::1;::::0;;::::1;::::0;::::1;::::0;;23344:7:::1;23321:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;23362:60:::1;;23404:7;;;23362:60;23458:4;23438:26;::::0;;;:11:::1;:26;::::0;;;;;;;23473:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23473:9:0::1;23438:46:::0;;;;;;;;-1:-1:-1;;23438:67:0::1;23434:166;;23542:4;23522:26;::::0;;;:11:::1;:26;::::0;;;;;;;23557:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23557:9:0::1;23522:46:::0;;;;;;;-1:-1:-1;;23522:66:0;;23434:166:::1;23612:17;23697:1;23677:6;:16;;;23633:60;;23657:6;:16;;;23634:39;;:20;:39;;;;:::i;:::-;23633:60;;;;:::i;:::-;23632:66;;;;:::i;:::-;23612:86:::0;-1:-1:-1;23709:15:0::1;23727:32;23612:86:::0;23727:20;:32:::1;:::i;:::-;23804:16;::::0;;23818:1:::1;23804:16:::0;;;;;::::1;::::0;;23709:50;;-1:-1:-1;23780:21:0::1;::::0;23804:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23804:16:0::1;23780:40;;23849:4;23831;23836:1;23831:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23831:23:0::1;;;-1:-1:-1::0;;;;;23831:23:0::1;;;::::0;::::1;23875:9;;;;;;;;;-1:-1:-1::0;;;;;23875:9:0::1;-1:-1:-1::0;;;;;23875:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23865:4;23870:1;23865:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23865:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23908:9:::1;::::0;:186:::1;::::0;;;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;23983:7;;24005:1:::1;::::0;24021:4;;24048::::1;::::0;24068:15:::1;::::0;23908:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23904:233;;24119:7;;;;;;23904:233;24170:21;24149:18;24256:7:::0;24230:22:::1;24243:9:::0;24170:21;24230:22:::1;:::i;:::-;24229:34;;;;:::i;:::-;24202:61:::0;-1:-1:-1;24280:13:0;;24276:400:::1;;24314:9;::::0;:222:::1;::::0;;;;24391:4:::1;24314:222;::::0;::::1;22294:34:1::0;22344:18;;;22337:34;;;24443:1:0::1;22387:18:1::0;;;22380:34;;;22430:18;;;22423:34;7601:42:0::1;22473:19:1::0;;;22466:44;24506:15:0::1;22526:19:1::0;;;22519:35;24314:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;24314:9:0::1;::::0;:25:::1;::::0;24347:16;;22205:19:1;;24314:222:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;24314:222:0::1;::::0;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;24310:355;;24643:7;;;;;;;;24310:355;-1:-1:-1::0;;24561:40:0::1;::::0;;23050:25:1;;;23106:2;23091:18;;23084:34;;;24561:40:0::1;::::0;-1:-1:-1;23023:18:1;24561:40:0::1;;;;;;;24310:355;24688:12;24711:26:::0;24776:6:::1;:16;;;24740:52;;24754:6;:18;;;24741:31;;:10;:31;;;;:::i;:::-;24740:52;;;;:::i;:::-;24711:81:::0;-1:-1:-1;24803:24:0::1;24830:31;24711:81:::0;24830:10;:31:::1;:::i;:::-;24876:16;::::0;::::1;::::0;24803:58;;-1:-1:-1;24876:20:0::1;;::::0;24872:127:::1;;24926:15;::::0;:61:::1;::::0;-1:-1:-1;;;;;24926:15:0;;::::1;::::0;24977:5:::1;::::0;24954:16;;24926:61:::1;::::0;;;24954:16;24926:15;24977:5;24926:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24913:74:0;;-1:-1:-1;;24872:127:0::1;25013:18;::::0;::::1;::::0;:22:::1;;::::0;25009:133:::1;;25065:17;::::0;:65:::1;::::0;-1:-1:-1;;;;;25065:17:0;;::::1;::::0;25120:5:::1;::::0;25095:18;;25065:65:::1;::::0;;;25095:18;25065:17;25120:5;25065:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25052:78:0;;-1:-1:-1;;25009:133:0::1;23310:1839;;;;;;;;;9028:1;-1:-1:-1::0;9040:6:0;:14;;;;;;23238:1911::o;27254:735::-;27342:7;27362:18;27395:3;27391:205;;;-1:-1:-1;27428:9:0;:16;;;27391:205;;;27466:4;27462:134;;;-1:-1:-1;27500:9:0;:17;;;;;;27462:134;;;-1:-1:-1;27563:9:0;:21;;;;;;27462:134;27610:15;27606:39;;27636:6;27629:13;;;;;27606:39;27659:13;27676:1;27659:18;:41;;;;27681:13;27698:2;27681:19;27659:41;27655:69;;;-1:-1:-1;27717:4:0;27655:69;27734:17;7348:5;27754:19;27763:10;27754:6;:19;:::i;:::-;:38;;;;:::i;:::-;27734:58;-1:-1:-1;27807:13:0;;27803:141;;27853:4;27837:22;;;;:7;:22;;;;;:35;;27863:9;;27837:22;:35;;27863:9;;27837:35;:::i;:::-;;;;-1:-1:-1;;27892:40:0;;391:25:1;;;27915:4:0;;-1:-1:-1;;;;;27892:40:0;;;;;379:2:1;364:18;27892:40:0;;;;;;;27803:141;27963:18;27972:9;27963:6;:18;:::i;25497:435::-;25580:16;;;;;;;25579:17;25571:65;;;;-1:-1:-1;;;25571:65:0;;23541:2:1;25571:65:0;;;23523:21:1;23580:2;23560:18;;;23553:30;23619:34;23599:18;;;23592:62;23690:5;23670:18;;;23663:33;23713:19;;25571:65:0;23339:399:1;25571:65:0;25652:20;25663:4;25669:2;25652:10;:20::i;:::-;25651:21;:37;;;;-1:-1:-1;25682:6:0;;-1:-1:-1;;;;;25676:12:0;;;25682:6;;25676:12;25651:37;25647:278;;;-1:-1:-1;;;;;25705:23:0;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25705:30:0;;;25731:4;25705:30;;;;;;25750:19;:25;;;;;;:32;;;;;;;;;;25797:16;:23;;;;25705:30;25797:23;;;25835:19;:26;;;;;;;;25881:32;1855:41:1;;;25881:32:0;;1828:18:1;25881:32:0;1715:187:1;797:656;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1235:6;1232:1;1229:13;1226:91;;;1305:1;1300:2;1291:6;1280:9;1276:22;1272:31;1265:42;1226:91;-1:-1:-1;1369:2:1;1357:15;1374:66;1353:88;1338:104;;;;1444:2;1334:113;;797:656;-1:-1:-1;;;797:656:1:o;1907:154::-;-1:-1:-1;;;;;1986:5:1;1982:54;1975:5;1972:65;1962:93;;2051:1;2048;2041:12;1962:93;1907:154;:::o;2066:315::-;2134:6;2142;2195:2;2183:9;2174:7;2170:23;2166:32;2163:52;;;2211:1;2208;2201:12;2163:52;2250:9;2237:23;2269:31;2294:5;2269:31;:::i;:::-;2319:5;2371:2;2356:18;;;;2343:32;;-1:-1:-1;;;2066:315:1:o;2386:247::-;2445:6;2498:2;2486:9;2477:7;2473:23;2469:32;2466:52;;;2514:1;2511;2504:12;2466:52;2553:9;2540:23;2572:31;2597:5;2572:31;:::i;2638:180::-;2697:6;2750:2;2738:9;2729:7;2725:23;2721:32;2718:52;;;2766:1;2763;2756:12;2718:52;-1:-1:-1;2789:23:1;;2638:180;-1:-1:-1;2638:180:1:o;2823:388::-;2891:6;2899;2952:2;2940:9;2931:7;2927:23;2923:32;2920:52;;;2968:1;2965;2958:12;2920:52;3007:9;2994:23;3026:31;3051:5;3026:31;:::i;:::-;3076:5;-1:-1:-1;3133:2:1;3118:18;;3105:32;3146:33;3105:32;3146:33;:::i;:::-;3198:7;3188:17;;;2823:388;;;;;:::o;3216:456::-;3293:6;3301;3309;3362:2;3350:9;3341:7;3337:23;3333:32;3330:52;;;3378:1;3375;3368:12;3330:52;3417:9;3404:23;3436:31;3461:5;3436:31;:::i;:::-;3486:5;-1:-1:-1;3543:2:1;3528:18;;3515:32;3556:33;3515:32;3556:33;:::i;:::-;3216:456;;3608:7;;-1:-1:-1;;;3662:2:1;3647:18;;;;3634:32;;3216:456::o;3677:248::-;3745:6;3753;3806:2;3794:9;3785:7;3781:23;3777:32;3774:52;;;3822:1;3819;3812:12;3774:52;-1:-1:-1;;3845:23:1;;;3915:2;3900:18;;;3887:32;;-1:-1:-1;3677:248:1:o;4119:159::-;4186:20;;4246:6;4235:18;;4225:29;;4215:57;;4268:1;4265;4258:12;4215:57;4119:159;;;:::o;4283:328::-;4357:6;4365;4373;4426:2;4414:9;4405:7;4401:23;4397:32;4394:52;;;4442:1;4439;4432:12;4394:52;4465:28;4483:9;4465:28;:::i;:::-;4455:38;;4512:37;4545:2;4534:9;4530:18;4512:37;:::i;:::-;4502:47;;4568:37;4601:2;4590:9;4586:18;4568:37;:::i;:::-;4558:47;;4283:328;;;;;:::o;4616:160::-;4681:20;;4737:13;;4730:21;4720:32;;4710:60;;4766:1;4763;4756:12;4781:315;4846:6;4854;4907:2;4895:9;4886:7;4882:23;4878:32;4875:52;;;4923:1;4920;4913:12;4875:52;4962:9;4949:23;4981:31;5006:5;4981:31;:::i;:::-;5031:5;-1:-1:-1;5055:35:1;5086:2;5071:18;;5055:35;:::i;:::-;5045:45;;4781:315;;;;;:::o;5608:248::-;5670:6;5678;5731:2;5719:9;5710:7;5706:23;5702:32;5699:52;;;5747:1;5744;5737:12;5699:52;5770:26;5786:9;5770:26;:::i;6719:180::-;6775:6;6828:2;6816:9;6807:7;6803:23;6799:32;6796:52;;;6844:1;6841;6834:12;6796:52;6867:26;6883:9;6867:26;:::i;6904:385::-;6990:6;6998;7006;7014;7067:3;7055:9;7046:7;7042:23;7038:33;7035:53;;;7084:1;7081;7074:12;7035:53;-1:-1:-1;;7107:23:1;;;7177:2;7162:18;;7149:32;;-1:-1:-1;7228:2:1;7213:18;;7200:32;;7279:2;7264:18;7251:32;;-1:-1:-1;6904:385:1;-1:-1:-1;6904:385:1:o;7294:437::-;7373:1;7369:12;;;;7416;;;7437:61;;7491:4;7483:6;7479:17;7469:27;;7437:61;7544:2;7536:6;7533:14;7513:18;7510:38;7507:218;;;7581:77;7578:1;7571:88;7682:4;7679:1;7672:15;7710:4;7707:1;7700:15;7507:218;;7294:437;;;:::o;7736:184::-;7788:77;7785:1;7778:88;7885:4;7882:1;7875:15;7909:4;7906:1;7899:15;7925:482;8014:1;8057:5;8014:1;8071:330;8092:7;8082:8;8079:21;8071:330;;;8211:4;-1:-1:-1;;8139:77:1;8133:4;8130:87;8127:113;;;8220:18;;:::i;:::-;8270:7;8260:8;8256:22;8253:55;;;8290:16;;;;8253:55;8369:22;;;;8329:15;;;;8071:330;;;8075:3;7925:482;;;;;:::o;8412:866::-;8461:5;8491:8;8481:80;;-1:-1:-1;8532:1:1;8546:5;;8481:80;8580:4;8570:76;;-1:-1:-1;8617:1:1;8631:5;;8570:76;8662:4;8680:1;8675:59;;;;8748:1;8743:130;;;;8655:218;;8675:59;8705:1;8696:10;;8719:5;;;8743:130;8780:3;8770:8;8767:17;8764:43;;;8787:18;;:::i;:::-;-1:-1:-1;;8843:1:1;8829:16;;8858:5;;8655:218;;8957:2;8947:8;8944:16;8938:3;8932:4;8929:13;8925:36;8919:2;8909:8;8906:16;8901:2;8895:4;8892:12;8888:35;8885:77;8882:159;;;-1:-1:-1;8994:19:1;;;9026:5;;8882:159;9073:34;9098:8;9092:4;9073:34;:::i;:::-;9203:6;-1:-1:-1;;9131:79:1;9122:7;9119:92;9116:118;;;9214:18;;:::i;:::-;9252:20;;8412:866;-1:-1:-1;;;8412:866:1:o;9283:140::-;9341:5;9370:47;9411:4;9401:8;9397:19;9391:4;9370:47;:::i;9428:274::-;9468:1;9494;9484:189;;9529:77;9526:1;9519:88;9630:4;9627:1;9620:15;9658:4;9655:1;9648:15;9484:189;-1:-1:-1;9687:9:1;;9428:274::o;10738:125::-;10778:4;10806:1;10803;10800:8;10797:34;;;10811:18;;:::i;:::-;-1:-1:-1;10848:9:1;;10738:125::o;10868:228::-;10908:7;11034:1;-1:-1:-1;;10962:74:1;10959:1;10956:81;10951:1;10944:9;10937:17;10933:105;10930:131;;;11041:18;;:::i;:::-;-1:-1:-1;11081:9:1;;10868:228::o;12216:128::-;12256:3;12287:1;12283:6;12280:1;12277:13;12274:39;;;12293:18;;:::i;:::-;-1:-1:-1;12329:9:1;;12216:128::o;14993:224::-;15032:3;15060:6;15093:2;15090:1;15086:10;15123:2;15120:1;15116:10;15154:3;15150:2;15146:12;15141:3;15138:21;15135:47;;;15162:18;;:::i;:::-;15198:13;;14993:224;-1:-1:-1;;;;14993:224:1:o;15971:251::-;16041:6;16094:2;16082:9;16073:7;16069:23;16065:32;16062:52;;;16110:1;16107;16100:12;16062:52;16142:9;16136:16;16161:31;16186:5;16161:31;:::i;20710:184::-;20762:77;20759:1;20752:88;20859:4;20856:1;20849:15;20883:4;20880:1;20873:15;20899:1026;21161:4;21209:3;21198:9;21194:19;21240:6;21229:9;21222:25;21266:2;21304:6;21299:2;21288:9;21284:18;21277:34;21347:3;21342:2;21331:9;21327:18;21320:31;21371:6;21406;21400:13;21437:6;21429;21422:22;21475:3;21464:9;21460:19;21453:26;;21514:2;21506:6;21502:15;21488:29;;21535:1;21545:218;21559:6;21556:1;21553:13;21545:218;;;21624:13;;-1:-1:-1;;;;;21620:62:1;21608:75;;21738:15;;;;21703:12;;;;21581:1;21574:9;21545:218;;;-1:-1:-1;;;;;;;21819:55:1;;;;21814:2;21799:18;;21792:83;-1:-1:-1;;;21906:3:1;21891:19;21884:35;21780:3;20899:1026;-1:-1:-1;;;20899:1026:1:o;22565:306::-;22653:6;22661;22669;22722:2;22710:9;22701:7;22697:23;22693:32;22690:52;;;22738:1;22735;22728:12;22690:52;22767:9;22761:16;22751:26;;22817:2;22806:9;22802:18;22796:25;22786:35;;22861:2;22850:9;22846:18;22840:25;22830:35;;22565:306;;;;;:::o

Swarm Source

ipfs://85e931c67bbd0292289e56ca9280b27b24533efb52806b2a71fbf87f58d3cab8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.