ETH Price: $2,744.34 (-0.28%)

Contract

0x9D24067F332462ce2b202E6278F12e119095d840
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve189192762024-01-02 11:02:47237 days ago1704193367IN
0x9D24067F...19095d840
0 ETH0.0004995420.57262982
Approve176710192023-07-11 14:38:59411 days ago1689086339IN
0x9D24067F...19095d840
0 ETH0.0014996632.20523135
Approve176086692023-07-02 20:22:11420 days ago1688329331IN
0x9D24067F...19095d840
0 ETH0.0005951212.78018666
Approve176056972023-07-02 10:21:23421 days ago1688293283IN
0x9D24067F...19095d840
0 ETH0.0006572714.11487122
Approve176013592023-07-01 19:44:47421 days ago1688240687IN
0x9D24067F...19095d840
0 ETH0.0003689815.19590881
Approve175907802023-06-30 8:02:35423 days ago1688112155IN
0x9D24067F...19095d840
0 ETH0.0010907723.57006448
Transfer175907772023-06-30 8:01:59423 days ago1688112119IN
0x9D24067F...19095d840
0 ETH0.0024960824.09973072
Transfer175907702023-06-30 8:00:35423 days ago1688112035IN
0x9D24067F...19095d840
0 ETH0.0024791823.93662602
Transfer175907672023-06-30 7:59:59423 days ago1688111999IN
0x9D24067F...19095d840
0 ETH0.0022236121.46908308
Transfer175907652023-06-30 7:59:35423 days ago1688111975IN
0x9D24067F...19095d840
0 ETH0.0022084621.32274164
Transfer175907602023-06-30 7:58:35423 days ago1688111915IN
0x9D24067F...19095d840
0 ETH0.0029400424.36373729
Approve175907002023-06-30 7:46:11423 days ago1688111171IN
0x9D24067F...19095d840
0 ETH0.0010218622.07521639
Transfer175906952023-06-30 7:45:11423 days ago1688111111IN
0x9D24067F...19095d840
0 ETH0.0023084522.28823574
Transfer175906932023-06-30 7:44:47423 days ago1688111087IN
0x9D24067F...19095d840
0 ETH0.0024042823.21345026
Transfer175906882023-06-30 7:43:47423 days ago1688111027IN
0x9D24067F...19095d840
0 ETH0.002350322.69221751
Transfer175906792023-06-30 7:41:59423 days ago1688110919IN
0x9D24067F...19095d840
0 ETH0.0024203823.36885359
Transfer175906762023-06-30 7:41:23423 days ago1688110883IN
0x9D24067F...19095d840
0 ETH0.0025308924.43580961
Transfer175906742023-06-30 7:40:59423 days ago1688110859IN
0x9D24067F...19095d840
0 ETH0.0025106724.24065552
Transfer175906682023-06-30 7:39:47423 days ago1688110787IN
0x9D24067F...19095d840
0 ETH0.0028007423.20933459
Transfer175906622023-06-30 7:38:35423 days ago1688110715IN
0x9D24067F...19095d840
0 ETH0.0025138924.27172151
Transfer175906592023-06-30 7:37:59423 days ago1688110679IN
0x9D24067F...19095d840
0 ETH0.0026288725.38181943
Transfer175906562023-06-30 7:37:23423 days ago1688110643IN
0x9D24067F...19095d840
0 ETH0.0025121524.25495078
Transfer175906532023-06-30 7:36:47423 days ago1688110607IN
0x9D24067F...19095d840
0 ETH0.0024244723.40841225
Transfer175906512023-06-30 7:36:23423 days ago1688110583IN
0x9D24067F...19095d840
0 ETH0.0023705822.88805869
Transfer175906482023-06-30 7:35:47423 days ago1688110547IN
0x9D24067F...19095d840
0 ETH0.0023871223.0477328
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
176086722023-07-02 20:22:47420 days ago1688329367
0x9D24067F...19095d840
0.00189042 ETH
176086722023-07-02 20:22:47420 days ago1688329367
0x9D24067F...19095d840
0.00189042 ETH
176065192023-07-02 13:08:11420 days ago1688303291
0x9D24067F...19095d840
0.00270639 ETH
176065192023-07-02 13:08:11420 days ago1688303291
0x9D24067F...19095d840
0.00270639 ETH
175907902023-06-30 8:04:35423 days ago1688112275
0x9D24067F...19095d840
0.00287349 ETH
175907902023-06-30 8:04:35423 days ago1688112275
0x9D24067F...19095d840
0.00287349 ETH
175907032023-06-30 7:46:47423 days ago1688111207
0x9D24067F...19095d840
0.00335168 ETH
175907032023-06-30 7:46:47423 days ago1688111207
0x9D24067F...19095d840
0.00335168 ETH
175906432023-06-30 7:34:47423 days ago1688110487
0x9D24067F...19095d840
0.00235489 ETH
175906432023-06-30 7:34:47423 days ago1688110487
0x9D24067F...19095d840
0.00235489 ETH
175850352023-06-29 12:43:59423 days ago1688042639
0x9D24067F...19095d840
0.00192212 ETH
175850352023-06-29 12:43:59423 days ago1688042639
0x9D24067F...19095d840
0.00192212 ETH
175814272023-06-29 0:35:11424 days ago1687998911
0x9D24067F...19095d840
0.00202363 ETH
175814272023-06-29 0:35:11424 days ago1687998911
0x9D24067F...19095d840
0.00202363 ETH
175813782023-06-29 0:25:23424 days ago1687998323
0x9D24067F...19095d840
0.00199678 ETH
175813782023-06-29 0:25:23424 days ago1687998323
0x9D24067F...19095d840
0.00199678 ETH
175812482023-06-28 23:58:59424 days ago1687996739
0x9D24067F...19095d840
0.00392083 ETH
175812482023-06-28 23:58:59424 days ago1687996739
0x9D24067F...19095d840
0.00392083 ETH
175807212023-06-28 22:13:23424 days ago1687990403
0x9D24067F...19095d840
0.002994 ETH
175807212023-06-28 22:13:23424 days ago1687990403
0x9D24067F...19095d840
0.002994 ETH
175807172023-06-28 22:12:35424 days ago1687990355
0x9D24067F...19095d840
0.00241181 ETH
175807172023-06-28 22:12:35424 days ago1687990355
0x9D24067F...19095d840
0.00241181 ETH
175806972023-06-28 22:08:35424 days ago1687990115
0x9D24067F...19095d840
0.0048819 ETH
175806972023-06-28 22:08:35424 days ago1687990115
0x9D24067F...19095d840
0.0048819 ETH
175806932023-06-28 22:07:47424 days ago1687990067
0x9D24067F...19095d840
0.00761129 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Dork

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

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

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract Dork is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 424_242_424_242;
    string constant private _name = "Dork";
    string constant private _symbol = "DORK";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xF25bc9229856B0F0D0cB2B411eA5f4De4aCDB712);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

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

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

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

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

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

    address private _owner;

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

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

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

    address public originalDeployer;
    address public operator;

    // Function to set an operator to allow someone other the deployer to create things such as launchpads.
    // Only callable by original deployer.
    function setOperator(address newOperator) public {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        address oldOperator = operator;
        if (oldOperator != address(0)) {
            _liquidityHolders[oldOperator] = false;
            setExcludedFromFees(oldOperator, false);
        }
        operator = newOperator;
        _liquidityHolders[newOperator] = true;
        setExcludedFromFees(newOperator, true);
    }

    function renounceOriginalDeployer() external {
        require(msg.sender == originalDeployer, "Can only be called by original deployer.");
        setOperator(address(0));
        originalDeployer = address(0);
    }

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

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

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

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originalDeployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOriginalDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556008805460ff1916600117905560e0604052608081905260c860a05260c0526009805465ffffffffffff191662c80000178155600c8054600161ff0160a01b03191673f25bc9229856b0f0d0cb2b411ea5f4de4acdb712179055600a60108190556011805461ffff19169055601380546001600160a01b031990811633908117909255601480549091169091179055620000a19190620002bf565b620000b2906462c6d1a9b2620002d7565b601380546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001066009600a620002bf565b62000117906462c6d1a9b2620002d7565b60405190815260200160405180910390a3601380546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055620002f1565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000201578160001904821115620001e557620001e5620001aa565b80851615620001f357918102915b93841c9390800290620001c5565b509250929050565b6000826200021a57506001620002b9565b816200022957506000620002b9565b81600181146200024257600281146200024d576200026d565b6001915050620002b9565b60ff841115620002615762000261620001aa565b50506001821b620002b9565b5060208310610133831016604e8410600b841016171562000292575081810a620002b9565b6200029e8383620001c0565b8060001904821115620002b557620002b5620001aa565b0290505b92915050565b6000620002d060ff84168362000209565b9392505050565b8082028115828204841417620002b957620002b9620001aa565b613a8080620003016000396000f3fe60806040526004361061032d5760003560e01c806350a8e016116101a55780638a8c523c116100ec578063bfc2fc3511610095578063ee5d9c2d1161006f578063ee5d9c2d14610975578063fb78680d1461098a578063fdb78c0e146109aa578063feadde9c146109cb57600080fd5b8063bfc2fc35146108ef578063dd62ed3e1461090f578063eafb5a3c1461095557600080fd5b8063ab558e4d116100c6578063ab558e4d14610895578063b3ab15fb146108b5578063b7df8b36146108d557600080fd5b80638a8c523c1461083357806395d89b4114610848578063a9059cbb1461087557600080fd5b8063715018a61161014e57806381cf58a91161012857806381cf58a9146107e0578063893d20e8146108005780638a63bd9b1461081e57600080fd5b8063715018a61461078b57806375f0a874146107a057806380c581d1146107c057600080fd5b80635a6f09181161017f5780635a6f09181461071f5780635c24b0741461073557806370a082311461075557600080fd5b806350a8e016146106c0578063570ca735146106df578063590ffdce146106ff57600080fd5b80632610eaca1161027457806339a059021161021d5780634bbb93eb116101f75780634bbb93eb146106275780634e718e48146106475780634fb2e45d146106675780634fbee1931461068757600080fd5b806339a05902146105d8578063452ed4f1146105ed5780634ada218b1461060d57600080fd5b80632e8fa8211161024e5780632e8fa82114610586578063313ce5671461059c57806333251a0b146105b857600080fd5b80632610eaca1461053b578063285777511461055b5780632b112e491461057157600080fd5b806307dd79e0116102d657806313b4a7f4116102b057806313b4a7f4146104e657806318160ddd1461050657806323b872dd1461051b57600080fd5b806307dd79e014610463578063095ea7b31461048d5780630dcbcf1c146104ad57600080fd5b8063069d955f11610307578063069d955f146103b257806306fdde03146104085780630758d9241461043e57600080fd5b806303fd2a45146103395780630445b6671461036c578063044df7261461039057600080fd5b3661033457005b600080fd5b34801561034557600080fd5b5061034f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037857600080fd5b50610382600d5481565b604051908152602001610363565b34801561039c57600080fd5b506103b06103ab36600461343f565b6109eb565b005b3480156103be57600080fd5b506009546103e39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610363565b34801561041457600080fd5b50604080518082019091526004815263446f726b60e01b60208201525b6040516103639190613478565b34801561044a57600080fd5b50600a5461034f9061010090046001600160a01b031681565b34801561046f57600080fd5b50600a5461047d9060ff1681565b6040519015158152602001610363565b34801561049957600080fd5b5061047d6104a83660046134db565b610aaf565b3480156104b957600080fd5b5061047d6104c8366004613507565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104f257600080fd5b506103b0610501366004613524565b610ac6565b34801561051257600080fd5b50610382610c8a565b34801561052757600080fd5b5061047d610536366004613552565b610cac565b34801561054757600080fd5b506103b0610556366004613669565b610d24565b34801561056757600080fd5b5061038260105481565b34801561057d57600080fd5b50610382610edf565b34801561059257600080fd5b50610382600e5481565b3480156105a857600080fd5b5060405160098152602001610363565b3480156105c457600080fd5b506103b06105d3366004613507565b610f5e565b3480156105e457600080fd5b506103b0611015565b3480156105f957600080fd5b50600b5461034f906001600160a01b031681565b34801561061957600080fd5b5060115461047d9060ff1681565b34801561063357600080fd5b5061038261064236600461372b565b61109c565b34801561065357600080fd5b506103b061066236600461372b565b6110d0565b34801561067357600080fd5b506103b0610682366004613507565b611174565b34801561069357600080fd5b5061047d6106a2366004613507565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106cc57600080fd5b5060115461047d90610100900460ff1681565b3480156106eb57600080fd5b5060155461034f906001600160a01b031681565b34801561070b57600080fd5b506103b061071a366004613744565b61137c565b34801561072b57600080fd5b5061038260125481565b34801561074157600080fd5b506103b0610750366004613507565b6113f5565b34801561076157600080fd5b50610382610770366004613507565b6001600160a01b031660009081526020819052604090205490565b34801561079757600080fd5b506103b06115d9565b3480156107ac57600080fd5b50600c5461034f906001600160a01b031681565b3480156107cc57600080fd5b506103b06107db366004613744565b611704565b3480156107ec57600080fd5b5060145461034f906001600160a01b031681565b34801561080c57600080fd5b506013546001600160a01b031661034f565b34801561082a57600080fd5b5061047d6118f4565b34801561083f57600080fd5b506103b061196a565b34801561085457600080fd5b50604080518082019091526004815263444f524b60e01b6020820152610431565b34801561088157600080fd5b5061047d6108903660046134db565b611bc6565b3480156108a157600080fd5b506103b06108b0366004613507565b611bdd565b3480156108c157600080fd5b506103b06108d0366004613507565b611d7d565b3480156108e157600080fd5b50600f5461047d9060ff1681565b3480156108fb57600080fd5b506103b061090a36600461343f565b611e6a565b34801561091b57600080fd5b5061038261092a366004613524565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561096157600080fd5b506103b0610970366004613507565b611f1b565b34801561098157600080fd5b506103b0612322565b34801561099657600080fd5b506103b06109a5366004613762565b612401565b3480156109b657600080fd5b50600c5461047d90600160a81b900460ff1681565b3480156109d757600080fd5b506103b06109e6366004613744565b6126cd565b6013546001600160a01b03163314610a3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b505050505050565b6000610abc338484612746565b5060015b92915050565b6013546001600160a01b03163314610b145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60085460ff16610b2357600080fd5b6001600160a01b0382163014801590610b4557506001600160a01b0381163014155b8015610b5f5750600b546001600160a01b03838116911614155b8015610b795750600b546001600160a01b03828116911614155b610bb35760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a35565b806001600160a01b0316826001600160a01b031603610c15576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c1190829061137c565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c7f90839061137c565b610c1181600161137c565b6000610c986009600a61388e565b610ca7906462c6d1a9b261389d565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d11576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d0b9084906138b4565b90915550505b610d1c84848461283f565b949350505050565b6013546001600160a01b03163314610d725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b8051825114610dc35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a35565b60005b82518161ffff161015610eda57610ddf6009600a61388e565b828261ffff1681518110610df557610df56138c7565b6020026020010151610e07919061389d565b336000908152602081905260409020541015610e655760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a35565b610ec733848361ffff1681518110610e7f57610e7f6138c7565b60200260200101516009600a610e95919061388e565b858561ffff1681518110610eab57610eab6138c7565b6020026020010151610ebd919061389d565b6000806001612bd3565b5080610ed2816138dd565b915050610dc6565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f3991906138fe565b610f456009600a61388e565b610f54906462c6d1a9b261389d565b610ca791906138b4565b6013546001600160a01b03163314610fac5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610ffa57600080fd5b505af115801561100e573d6000803e3d6000fd5b5050505050565b6014546001600160a01b031633146110805760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610a35565b61108a6000611d7d565b601480546001600160a01b0319169055565b600b546001600160a01b0316600090815260208190526040812054612710906110c690849061389d565b610ac09190613911565b6013546001600160a01b0316331461111e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b609681111561116f5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a35565b601055565b6013546001600160a01b031633146111c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03811661123e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a35565b61deac196001600160a01b038216016112bf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a35565b6013546112d6906001600160a01b0316600061137c565b6112e181600161137c565b6013546001600160a01b03166000908152602081905260409020541561132a576013546001600160a01b031660008181526020819052604090205461132891908390610ebd565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146113ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff161561145357600080fd5b306001600160a01b038216036114ab5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a35565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611531575060408051601f3d908101601f1916820190925261152e91810190613933565b60015b61153a57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546115b79383169291900416600019612746565b600a54610eda90309061010090046001600160a01b0316600019612746565b50565b6013546001600160a01b031633146116275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff1661169f5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a35565b6013546116b6906001600160a01b0316600061137c565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117525760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b806117c5576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a9357600080fd5b6002541561182c576203f480600254426117df91906138b4565b1161182c5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a35565b6001600160a01b03821660009081526001602052604090205460ff16156118955760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a35565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a79565b6013546000906001600160a01b031633146119455760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b600a5461196490309061010090046001600160a01b0316600019612746565b50600190565b6013546001600160a01b031633146119b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff1615611a0b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a35565b601154610100900460ff16611a625760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a35565b6011546201000090046001600160a01b0316611a92576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0457600080fd5b505af1925050508015611b15575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611b98575060408051601f3d908101601f19168201909252611b9591810190613962565b60015b15611ba757600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611bd333848461283f565b5060019392505050565b6013546001600160a01b03163314611c2b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff1615611c9357306001600160a01b03821603611c935760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a35565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613986565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda919061399f565b6014546001600160a01b03163314611de85760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610a35565b6015546001600160a01b03168015611e25576001600160a01b0381166000908152600460205260408120805460ff19169055611e2590829061137c565b601580546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610c1190839061137c565b6013546001600160a01b03163314611eb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff1615611fc15760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a35565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202a91906139bc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b91906139bc565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a91906139bc565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166122a057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219991906139bc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220a91906139bc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b91906139bc565b600b80546001600160a01b0319166001600160a01b03929092169190911790556122bc565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610eda923092910416600019612746565b6013546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff16156123c85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a35565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156115d6573d6000803e3d6000fd5b6013546001600160a01b0316331461244f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b828461245d6009600a61388e565b61246c906462c6d1a9b261389d565b612476919061389d565b6124809190613911565b600d5580826124916009600a61388e565b6124a0906462c6d1a9b261389d565b6124aa919061389d565b6124b49190613911565b600e819055600d5411156125145760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a35565b600b546001600160a01b03166000908152602081905260409020546127109061253e90609661389d565b6125489190613911565b600e5411156125a55760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a35565b620f42406125b56009600a61388e565b6125c4906462c6d1a9b261389d565b6125ce9190613911565b600e5410156126365760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a35565b620f42406126466009600a61388e565b612655906462c6d1a9b261389d565b61265f9190613911565b600d5410156126c75760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a35565b50505050565b6013546001600160a01b0316331461271b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166127925760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a35565b6001600160a01b0382166127de5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a35565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a35565b6001600160a01b0383166129075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a35565b600082116129695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a35565b6001600160a01b0384166000908152600160205260408120548190819060ff161561299757600192506129c5565b6001600160a01b03861660009081526001602052604090205460ff16156129c157600191506129c5565b5060015b6129cf8787612e86565b15612ad05760115460ff16612ad05780612a2b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a35565b6001600160a01b03871660009081526005602052604090205460ff16158015612a6d57506001600160a01b03861660009081526005602052604090205460ff16155b15612ad05760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a35565b8115612bba57600c54600160a01b900460ff16612bba57600c54600160a81b900460ff168015612b1957506001600160a01b03861660009081526007602052604090205460ff16155b8015612b3e57506001600160a01b03871660009081526007602052604090205460ff16155b15612bba5730600090815260208190526040902054600d548110612bb857600e54600f5460ff1615612ba257601054600b546001600160a01b031660009081526020819052604090205461271091612b959161389d565b612b9f9190613911565b90505b808210612bad578091505b612bb682612f9d565b505b505b612bc8878787868686612bd3565b979650505050505050565b6000612bdf8787612e86565b15612c795760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612c62575060408051601f3d908101601f19168201909252612c5f9181019061399f565b60015b612c6b57600080fd5b905080612c7757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612cbb57506001600160a01b03871660009081526006602052604090205460ff165b15612cc4575060005b6001600160a01b03881660009081526020819052604081208054889290612cec9084906138b4565b909155506000905081612cff5786612d0b565b612d0b898888886131e1565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612d4191906138fe565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d8d91815260200190565b60405180910390a3601154610100900460ff16612e7757612dae89896132ed565b601154610100900460ff16158015612dcb5750612dcb8989612e86565b8015612df057506001600160a01b03891660009081526005602052604090205460ff16155b8015612e1557506001600160a01b03881660009081526005602052604090205460ff16155b8015612e1f575083155b15612e775760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a35565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612eb557506013546001600160a01b03838116911614155b8015612ecc57506013546001600160a01b03163214155b8015612ef157506001600160a01b03821660009081526004602052604090205460ff16155b8015612f1657506001600160a01b03831660009081526004602052604090205460ff16155b8015612f2d57506001600160a01b03821661dead14155b8015612f4157506001600160a01b03821615155b8015612f5657506001600160a01b0383163014155b8015612f7657506011546001600160a01b03848116620100009092041614155b8015612f9657506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461301357306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613048576130486138c7565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130df91906139bc565b816001815181106130f2576130f26138c7565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061313f9085906000908690309042906004016139d9565b600060405180830381600087803b15801561315957600080fd5b505af192505050801561316a575060015b61317457506131d1565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156131f7575060095461ffff16613221565b8215613210575060095462010000900461ffff16613221565b50600954640100000000900461ffff165b806000036132325784915050610d1c565b6011546201000090046001600160a01b031630148015613253575046606114155b1561325d57506111945b600061271061326c838861389d565b6132769190613911565b905080156132e357306000908152602081905260408120805483929061329d9084906138fe565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612bc881876138b4565b601154610100900460ff16156133515760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a35565b61335b8282612e86565b1580156133755750600b546001600160a01b038281169116145b15610c11576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166133ed576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f0f565b80151581146115d657600080fd5b6000806040838503121561345257600080fd5b823561345d81613431565b9150602083013561346d81613431565b809150509250929050565b600060208083528351808285015260005b818110156134a557858101830151858201604001528201613489565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d657600080fd5b600080604083850312156134ee57600080fd5b82356134f9816134c6565b946020939093013593505050565b60006020828403121561351957600080fd5b8135612f96816134c6565b6000806040838503121561353757600080fd5b8235613542816134c6565b9150602083013561346d816134c6565b60008060006060848603121561356757600080fd5b8335613572816134c6565b92506020840135613582816134c6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156135d2576135d2613593565b604052919050565b600067ffffffffffffffff8211156135f4576135f4613593565b5060051b60200190565b600082601f83011261360f57600080fd5b8135602061362461361f836135da565b6135a9565b82815260059290921b8401810191818101908684111561364357600080fd5b8286015b8481101561365e5780358352918301918301613647565b509695505050505050565b6000806040838503121561367c57600080fd5b823567ffffffffffffffff8082111561369457600080fd5b818501915085601f8301126136a857600080fd5b813560206136b861361f836135da565b82815260059290921b840181019181810190898411156136d757600080fd5b948201945b838610156136fe5785356136ef816134c6565b825294820194908201906136dc565b9650508601359250508082111561371457600080fd5b50613721858286016135fe565b9150509250929050565b60006020828403121561373d57600080fd5b5035919050565b6000806040838503121561375757600080fd5b823561345d816134c6565b6000806000806080858703121561377857600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137e55781600019048211156137cb576137cb613794565b808516156137d857918102915b93841c93908002906137af565b509250929050565b6000826137fc57506001610ac0565b8161380957506000610ac0565b816001811461381f576002811461382957613845565b6001915050610ac0565b60ff84111561383a5761383a613794565b50506001821b610ac0565b5060208310610133831016604e8410600b8410161715613868575081810a610ac0565b61387283836137aa565b806000190482111561388657613886613794565b029392505050565b6000612f9660ff8416836137ed565b8082028115828204841417610ac057610ac0613794565b81810381811115610ac057610ac0613794565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036138f4576138f4613794565b6001019392505050565b80820180821115610ac057610ac0613794565b60008261392e57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561394657600080fd5b8251613951816134c6565b602084015190925061346d816134c6565b6000806040838503121561397557600080fd5b505080516020909101519092909150565b60006020828403121561399857600080fd5b5051919050565b6000602082840312156139b157600080fd5b8151612f9681613431565b6000602082840312156139ce57600080fd5b8151612f96816134c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a295784516001600160a01b031683529383019391830191600101613a04565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f26e7bb4fba1767cabdc56a2679e1861eaf04a6c6c0b4a10df0b5988b582a4c264736f6c63430008130033

Deployed Bytecode

0x60806040526004361061032d5760003560e01c806350a8e016116101a55780638a8c523c116100ec578063bfc2fc3511610095578063ee5d9c2d1161006f578063ee5d9c2d14610975578063fb78680d1461098a578063fdb78c0e146109aa578063feadde9c146109cb57600080fd5b8063bfc2fc35146108ef578063dd62ed3e1461090f578063eafb5a3c1461095557600080fd5b8063ab558e4d116100c6578063ab558e4d14610895578063b3ab15fb146108b5578063b7df8b36146108d557600080fd5b80638a8c523c1461083357806395d89b4114610848578063a9059cbb1461087557600080fd5b8063715018a61161014e57806381cf58a91161012857806381cf58a9146107e0578063893d20e8146108005780638a63bd9b1461081e57600080fd5b8063715018a61461078b57806375f0a874146107a057806380c581d1146107c057600080fd5b80635a6f09181161017f5780635a6f09181461071f5780635c24b0741461073557806370a082311461075557600080fd5b806350a8e016146106c0578063570ca735146106df578063590ffdce146106ff57600080fd5b80632610eaca1161027457806339a059021161021d5780634bbb93eb116101f75780634bbb93eb146106275780634e718e48146106475780634fb2e45d146106675780634fbee1931461068757600080fd5b806339a05902146105d8578063452ed4f1146105ed5780634ada218b1461060d57600080fd5b80632e8fa8211161024e5780632e8fa82114610586578063313ce5671461059c57806333251a0b146105b857600080fd5b80632610eaca1461053b578063285777511461055b5780632b112e491461057157600080fd5b806307dd79e0116102d657806313b4a7f4116102b057806313b4a7f4146104e657806318160ddd1461050657806323b872dd1461051b57600080fd5b806307dd79e014610463578063095ea7b31461048d5780630dcbcf1c146104ad57600080fd5b8063069d955f11610307578063069d955f146103b257806306fdde03146104085780630758d9241461043e57600080fd5b806303fd2a45146103395780630445b6671461036c578063044df7261461039057600080fd5b3661033457005b600080fd5b34801561034557600080fd5b5061034f61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037857600080fd5b50610382600d5481565b604051908152602001610363565b34801561039c57600080fd5b506103b06103ab36600461343f565b6109eb565b005b3480156103be57600080fd5b506009546103e39061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610363565b34801561041457600080fd5b50604080518082019091526004815263446f726b60e01b60208201525b6040516103639190613478565b34801561044a57600080fd5b50600a5461034f9061010090046001600160a01b031681565b34801561046f57600080fd5b50600a5461047d9060ff1681565b6040519015158152602001610363565b34801561049957600080fd5b5061047d6104a83660046134db565b610aaf565b3480156104b957600080fd5b5061047d6104c8366004613507565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104f257600080fd5b506103b0610501366004613524565b610ac6565b34801561051257600080fd5b50610382610c8a565b34801561052757600080fd5b5061047d610536366004613552565b610cac565b34801561054757600080fd5b506103b0610556366004613669565b610d24565b34801561056757600080fd5b5061038260105481565b34801561057d57600080fd5b50610382610edf565b34801561059257600080fd5b50610382600e5481565b3480156105a857600080fd5b5060405160098152602001610363565b3480156105c457600080fd5b506103b06105d3366004613507565b610f5e565b3480156105e457600080fd5b506103b0611015565b3480156105f957600080fd5b50600b5461034f906001600160a01b031681565b34801561061957600080fd5b5060115461047d9060ff1681565b34801561063357600080fd5b5061038261064236600461372b565b61109c565b34801561065357600080fd5b506103b061066236600461372b565b6110d0565b34801561067357600080fd5b506103b0610682366004613507565b611174565b34801561069357600080fd5b5061047d6106a2366004613507565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106cc57600080fd5b5060115461047d90610100900460ff1681565b3480156106eb57600080fd5b5060155461034f906001600160a01b031681565b34801561070b57600080fd5b506103b061071a366004613744565b61137c565b34801561072b57600080fd5b5061038260125481565b34801561074157600080fd5b506103b0610750366004613507565b6113f5565b34801561076157600080fd5b50610382610770366004613507565b6001600160a01b031660009081526020819052604090205490565b34801561079757600080fd5b506103b06115d9565b3480156107ac57600080fd5b50600c5461034f906001600160a01b031681565b3480156107cc57600080fd5b506103b06107db366004613744565b611704565b3480156107ec57600080fd5b5060145461034f906001600160a01b031681565b34801561080c57600080fd5b506013546001600160a01b031661034f565b34801561082a57600080fd5b5061047d6118f4565b34801561083f57600080fd5b506103b061196a565b34801561085457600080fd5b50604080518082019091526004815263444f524b60e01b6020820152610431565b34801561088157600080fd5b5061047d6108903660046134db565b611bc6565b3480156108a157600080fd5b506103b06108b0366004613507565b611bdd565b3480156108c157600080fd5b506103b06108d0366004613507565b611d7d565b3480156108e157600080fd5b50600f5461047d9060ff1681565b3480156108fb57600080fd5b506103b061090a36600461343f565b611e6a565b34801561091b57600080fd5b5061038261092a366004613524565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561096157600080fd5b506103b0610970366004613507565b611f1b565b34801561098157600080fd5b506103b0612322565b34801561099657600080fd5b506103b06109a5366004613762565b612401565b3480156109b657600080fd5b50600c5461047d90600160a81b900460ff1681565b3480156109d757600080fd5b506103b06109e6366004613744565b6126cd565b6013546001600160a01b03163314610a3e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b505050505050565b6000610abc338484612746565b5060015b92915050565b6013546001600160a01b03163314610b145760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60085460ff16610b2357600080fd5b6001600160a01b0382163014801590610b4557506001600160a01b0381163014155b8015610b5f5750600b546001600160a01b03838116911614155b8015610b795750600b546001600160a01b03828116911614155b610bb35760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a35565b806001600160a01b0316826001600160a01b031603610c15576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c1190829061137c565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c7f90839061137c565b610c1181600161137c565b6000610c986009600a61388e565b610ca7906462c6d1a9b261389d565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d11576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d0b9084906138b4565b90915550505b610d1c84848461283f565b949350505050565b6013546001600160a01b03163314610d725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b8051825114610dc35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a35565b60005b82518161ffff161015610eda57610ddf6009600a61388e565b828261ffff1681518110610df557610df56138c7565b6020026020010151610e07919061389d565b336000908152602081905260409020541015610e655760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a35565b610ec733848361ffff1681518110610e7f57610e7f6138c7565b60200260200101516009600a610e95919061388e565b858561ffff1681518110610eab57610eab6138c7565b6020026020010151610ebd919061389d565b6000806001612bd3565b5080610ed2816138dd565b915050610dc6565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f3991906138fe565b610f456009600a61388e565b610f54906462c6d1a9b261389d565b610ca791906138b4565b6013546001600160a01b03163314610fac5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b158015610ffa57600080fd5b505af115801561100e573d6000803e3d6000fd5b5050505050565b6014546001600160a01b031633146110805760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610a35565b61108a6000611d7d565b601480546001600160a01b0319169055565b600b546001600160a01b0316600090815260208190526040812054612710906110c690849061389d565b610ac09190613911565b6013546001600160a01b0316331461111e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b609681111561116f5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a35565b601055565b6013546001600160a01b031633146111c25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03811661123e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a35565b61deac196001600160a01b038216016112bf5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a35565b6013546112d6906001600160a01b0316600061137c565b6112e181600161137c565b6013546001600160a01b03166000908152602081905260409020541561132a576013546001600160a01b031660008181526020819052604090205461132891908390610ebd565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146113ca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114435760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff161561145357600080fd5b306001600160a01b038216036114ab5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a35565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611531575060408051601f3d908101601f1916820190925261152e91810190613933565b60015b61153a57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560135492546115b79383169291900416600019612746565b600a54610eda90309061010090046001600160a01b0316600019612746565b50565b6013546001600160a01b031633146116275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff1661169f5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a35565b6013546116b6906001600160a01b0316600061137c565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117525760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b806117c5576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a9357600080fd5b6002541561182c576203f480600254426117df91906138b4565b1161182c5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a35565b6001600160a01b03821660009081526001602052604090205460ff16156118955760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a35565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a79565b6013546000906001600160a01b031633146119455760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b600a5461196490309061010090046001600160a01b0316600019612746565b50600190565b6013546001600160a01b031633146119b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b60115460ff1615611a0b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a35565b601154610100900460ff16611a625760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a35565b6011546201000090046001600160a01b0316611a92576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0457600080fd5b505af1925050508015611b15575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611b98575060408051601f3d908101601f19168201909252611b9591810190613962565b60015b15611ba757600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611bd333848461283f565b5060019392505050565b6013546001600160a01b03163314611c2b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff1615611c9357306001600160a01b03821603611c935760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a35565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613986565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda919061399f565b6014546001600160a01b03163314611de85760405162461bcd60e51b815260206004820152602860248201527f43616e206f6e6c792062652063616c6c6564206279206f726967696e616c206460448201526732b83637bcb2b91760c11b6064820152608401610a35565b6015546001600160a01b03168015611e25576001600160a01b0381166000908152600460205260408120805460ff19169055611e2590829061137c565b601580546001600160a01b0319166001600160a01b0384169081179091556000908152600460205260409020805460ff19166001908117909155610c1190839061137c565b6013546001600160a01b03163314611eb85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f695760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff1615611fc15760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a35565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202a91906139bc565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209b91906139bc565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210a91906139bc565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166122a057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219991906139bc565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220a91906139bc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b91906139bc565b600b80546001600160a01b0319166001600160a01b03929092169190911790556122bc565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610eda923092910416600019612746565b6013546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b601154610100900460ff16156123c85760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a35565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156115d6573d6000803e3d6000fd5b6013546001600160a01b0316331461244f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b828461245d6009600a61388e565b61246c906462c6d1a9b261389d565b612476919061389d565b6124809190613911565b600d5580826124916009600a61388e565b6124a0906462c6d1a9b261389d565b6124aa919061389d565b6124b49190613911565b600e819055600d5411156125145760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a35565b600b546001600160a01b03166000908152602081905260409020546127109061253e90609661389d565b6125489190613911565b600e5411156125a55760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a35565b620f42406125b56009600a61388e565b6125c4906462c6d1a9b261389d565b6125ce9190613911565b600e5410156126365760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a35565b620f42406126466009600a61388e565b612655906462c6d1a9b261389d565b61265f9190613911565b600d5410156126c75760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a35565b50505050565b6013546001600160a01b0316331461271b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610a35565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166127925760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a35565b6001600160a01b0382166127de5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a35565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166128a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a35565b6001600160a01b0383166129075760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a35565b600082116129695760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a35565b6001600160a01b0384166000908152600160205260408120548190819060ff161561299757600192506129c5565b6001600160a01b03861660009081526001602052604090205460ff16156129c157600191506129c5565b5060015b6129cf8787612e86565b15612ad05760115460ff16612ad05780612a2b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a35565b6001600160a01b03871660009081526005602052604090205460ff16158015612a6d57506001600160a01b03861660009081526005602052604090205460ff16155b15612ad05760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a35565b8115612bba57600c54600160a01b900460ff16612bba57600c54600160a81b900460ff168015612b1957506001600160a01b03861660009081526007602052604090205460ff16155b8015612b3e57506001600160a01b03871660009081526007602052604090205460ff16155b15612bba5730600090815260208190526040902054600d548110612bb857600e54600f5460ff1615612ba257601054600b546001600160a01b031660009081526020819052604090205461271091612b959161389d565b612b9f9190613911565b90505b808210612bad578091505b612bb682612f9d565b505b505b612bc8878787868686612bd3565b979650505050505050565b6000612bdf8787612e86565b15612c795760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612c62575060408051601f3d908101601f19168201909252612c5f9181019061399f565b60015b612c6b57600080fd5b905080612c7757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612cbb57506001600160a01b03871660009081526006602052604090205460ff165b15612cc4575060005b6001600160a01b03881660009081526020819052604081208054889290612cec9084906138b4565b909155506000905081612cff5786612d0b565b612d0b898888886131e1565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612d4191906138fe565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d8d91815260200190565b60405180910390a3601154610100900460ff16612e7757612dae89896132ed565b601154610100900460ff16158015612dcb5750612dcb8989612e86565b8015612df057506001600160a01b03891660009081526005602052604090205460ff16155b8015612e1557506001600160a01b03881660009081526005602052604090205460ff16155b8015612e1f575083155b15612e775760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a35565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612eb557506013546001600160a01b03838116911614155b8015612ecc57506013546001600160a01b03163214155b8015612ef157506001600160a01b03821660009081526004602052604090205460ff16155b8015612f1657506001600160a01b03831660009081526004602052604090205460ff16155b8015612f2d57506001600160a01b03821661dead14155b8015612f4157506001600160a01b03821615155b8015612f5657506001600160a01b0383163014155b8015612f7657506011546001600160a01b03848116620100009092041614155b8015612f9657506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461301357306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613048576130486138c7565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130df91906139bc565b816001815181106130f2576130f26138c7565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac9479061313f9085906000908690309042906004016139d9565b600060405180830381600087803b15801561315957600080fd5b505af192505050801561316a575060015b61317457506131d1565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146131c6576040519150601f19603f3d011682016040523d82523d6000602084013e6131cb565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156131f7575060095461ffff16613221565b8215613210575060095462010000900461ffff16613221565b50600954640100000000900461ffff165b806000036132325784915050610d1c565b6011546201000090046001600160a01b031630148015613253575046606114155b1561325d57506111945b600061271061326c838861389d565b6132769190613911565b905080156132e357306000908152602081905260408120805483929061329d9084906138fe565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612bc881876138b4565b601154610100900460ff16156133515760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a35565b61335b8282612e86565b1580156133755750600b546001600160a01b038281169116145b15610c11576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff0019166101001790819055620100009004166133ed576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f0f565b80151581146115d657600080fd5b6000806040838503121561345257600080fd5b823561345d81613431565b9150602083013561346d81613431565b809150509250929050565b600060208083528351808285015260005b818110156134a557858101830151858201604001528201613489565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d657600080fd5b600080604083850312156134ee57600080fd5b82356134f9816134c6565b946020939093013593505050565b60006020828403121561351957600080fd5b8135612f96816134c6565b6000806040838503121561353757600080fd5b8235613542816134c6565b9150602083013561346d816134c6565b60008060006060848603121561356757600080fd5b8335613572816134c6565b92506020840135613582816134c6565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156135d2576135d2613593565b604052919050565b600067ffffffffffffffff8211156135f4576135f4613593565b5060051b60200190565b600082601f83011261360f57600080fd5b8135602061362461361f836135da565b6135a9565b82815260059290921b8401810191818101908684111561364357600080fd5b8286015b8481101561365e5780358352918301918301613647565b509695505050505050565b6000806040838503121561367c57600080fd5b823567ffffffffffffffff8082111561369457600080fd5b818501915085601f8301126136a857600080fd5b813560206136b861361f836135da565b82815260059290921b840181019181810190898411156136d757600080fd5b948201945b838610156136fe5785356136ef816134c6565b825294820194908201906136dc565b9650508601359250508082111561371457600080fd5b50613721858286016135fe565b9150509250929050565b60006020828403121561373d57600080fd5b5035919050565b6000806040838503121561375757600080fd5b823561345d816134c6565b6000806000806080858703121561377857600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137e55781600019048211156137cb576137cb613794565b808516156137d857918102915b93841c93908002906137af565b509250929050565b6000826137fc57506001610ac0565b8161380957506000610ac0565b816001811461381f576002811461382957613845565b6001915050610ac0565b60ff84111561383a5761383a613794565b50506001821b610ac0565b5060208310610133831016604e8410600b8410161715613868575081810a610ac0565b61387283836137aa565b806000190482111561388657613886613794565b029392505050565b6000612f9660ff8416836137ed565b8082028115828204841417610ac057610ac0613794565b81810381811115610ac057610ac0613794565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036138f4576138f4613794565b6001019392505050565b80820180821115610ac057610ac0613794565b60008261392e57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561394657600080fd5b8251613951816134c6565b602084015190925061346d816134c6565b6000806040838503121561397557600080fd5b505080516020909101519092909150565b60006020828403121561399857600080fd5b5051919050565b6000602082840312156139b157600080fd5b8151612f9681613431565b6000602082840312156139ce57600080fd5b8151612f96816134c6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a295784516001600160a01b031683529383019391830191600101613a04565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f26e7bb4fba1767cabdc56a2679e1861eaf04a6c6c0b4a10df0b5988b582a4c264736f6c63430008130033

Deployed Bytecode Sourcemap

4090:19439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5265:73;;;;;;;;;;;;5296:42;5265:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5265:73:0;;;;;;;;5514:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5514:28:0;245:177:1;14039:153:0;;;;;;;;;;-1:-1:-1;14039:153:0;;;;;:::i;:::-;;:::i;:::-;;5007:105;;;;;;;;;;-1:-1:-1;5007:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5007:105:0;931:365:1;9774:80:0;;;;;;;;;;-1:-1:-1;9846:5:0;;;;;;;;;;;;-1:-1:-1;;;9846:5:0;;;;9774:80;;;;;;;:::i;5204:26::-;;;;;;;;;;-1:-1:-1;5204:26:0;;;;;;;-1:-1:-1;;;;;5204:26:0;;;5171;;;;;;;;;;-1:-1:-1;5171:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5171:26:0;2102:187:1;10382:161:0;;;;;;;;;;-1:-1:-1;10382:161:0;;;;;:::i;:::-;;:::i;13468:140::-;;;;;;;;;;-1:-1:-1;13468:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13566:34:0;13542:4;13566:34;;;:25;:34;;;;;;;;;13468:140;15600:809;;;;;;;;;;-1:-1:-1;15600:809:0;;;;;:::i;:::-;;:::i;9509:83::-;;;;;;;;;;;;;:::i;11052:306::-;;;;;;;;;;-1:-1:-1;11052:306:0;;;;;:::i;:::-;;:::i;21241:447::-;;;;;;;;;;-1:-1:-1;21241:447:0;;;;;:::i;:::-;;:::i;5622:33::-;;;;;;;;;;;;;;;;13772:141;;;;;;;;;;;;;:::i;5549:25::-;;;;;;;;;;;;;;;;9598:80;;;;;;;;;;-1:-1:-1;9598:80:0;;4819:1;6508:36:1;;6496:2;6481:18;9598:80:0;6366:184:1;13921:110:0;;;;;;;;;;-1:-1:-1;13921:110:0;;;;;:::i;:::-;;:::i;8892:221::-;;;;;;;;;;;;;:::i;5237:21::-;;;;;;;;;;-1:-1:-1;5237:21:0;;;;-1:-1:-1;;;;;5237:21:0;;;5662:34;;;;;;;;;;-1:-1:-1;5662:34:0;;;;;;;;14200:189;;;;;;;;;;-1:-1:-1;14200:189:0;;;;;:::i;:::-;;:::i;15104:217::-;;;;;;;;;;-1:-1:-1;15104:217:0;;;;;:::i;:::-;;:::i;7199:654::-;;;;;;;;;;-1:-1:-1;7199:654:0;;;;;:::i;:::-;;:::i;13191:127::-;;;;;;;;;;-1:-1:-1;13191:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13282:28:0;13258:4;13282:28;;;:19;:28;;;;;;;;;13191:127;5703:36;;;;;;;;;;-1:-1:-1;5703:36:0;;;;;;;;;;;8217:23;;;;;;;;;;-1:-1:-1;8217:23:0;;;;-1:-1:-1;;;;;8217:23:0;;;13326:134;;;;;;;;;;-1:-1:-1;13326:134:0;;;;;:::i;:::-;;:::i;5776:26::-;;;;;;;;;;;;;;;;12626:557;;;;;;;;;;-1:-1:-1;12626:557:0;;;;;:::i;:::-;;:::i;10084:117::-;;;;;;;;;;-1:-1:-1;10084:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10177:16:0;10150:7;10177:16;;;;;;;;;;;;10084:117;7861:310;;;;;;;;;;;;;:::i;5345:92::-;;;;;;;;;;-1:-1:-1;5345:92:0;;;;-1:-1:-1;;;;;5345:92:0;;;12054:564;;;;;;;;;;-1:-1:-1;12054:564:0;;;;;:::i;:::-;;:::i;8179:31::-;;;;;;;;;;-1:-1:-1;8179:31:0;;;;-1:-1:-1;;;;;8179:31:0;;;9860:79;;;;;;;;;;-1:-1:-1;9930:6:0;;-1:-1:-1;;;;;9930:6:0;9860:79;;10869:175;;;;;;;;;;;;;:::i;20002:737::-;;;;;;;;;;;;;:::i;9684:84::-;;;;;;;;;;-1:-1:-1;9758:7:0;;;;;;;;;;;;-1:-1:-1;;;9758:7:0;;;;9684:84;;10209:165;;;;;;;;;;-1:-1:-1;10209:165:0;;;;;:::i;:::-;;:::i;20937:296::-;;;;;;;;;;-1:-1:-1;20937:296:0;;;;;:::i;:::-;;:::i;8402:482::-;;;;;;;;;;-1:-1:-1;8402:482:0;;;;;:::i;:::-;;:::i;5581:34::-;;;;;;;;;;-1:-1:-1;5581:34:0;;;;;;;;15329:263;;;;;;;;;;-1:-1:-1;15329:263:0;;;;;:::i;:::-;;:::i;9945:133::-;;;;;;;;;;-1:-1:-1;9945:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10047:19:0;;;10029:7;10047:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9945:133;11366:680;;;;;;;;;;-1:-1:-1;11366:680:0;;;;;:::i;:::-;;:::i;20747:182::-;;;;;;;;;;;;;:::i;14397:699::-;;;;;;;;;;-1:-1:-1;14397:699:0;;;;;:::i;:::-;;:::i;5468:39::-;;;;;;;;;;-1:-1:-1;5468:39:0;;;;-1:-1:-1;;;5468:39:0;;;;;;13616:148;;;;;;;;;;-1:-1:-1;13616:148:0;;;;;:::i;:::-;;:::i;14039:153::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;;;;;;;;;14134:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14134:50:0;;8297:14:1;;8290:22;14134:50:0::1;::::0;::::1;8272:41:1::0;8356:14;;8349:22;8329:18;;;8322:50;14134:11:0;;;::::1;-1:-1:-1::0;;;;;14134:11:0::1;::::0;:26:::1;::::0;8245:18:1;;14134:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14039:153:::0;;:::o;10382:161::-;10459:4;10476:37;10485:10;10497:7;10506:6;10476:8;:37::i;:::-;-1:-1:-1;10531:4:0;10382:161;;;;;:::o;15600:809::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;15704:23:::1;::::0;::::1;;15696:32;;;::::0;::::1;;-1:-1:-1::0;;;;;15747:23:0;::::1;15765:4;15747:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;15792:24:0;::::1;15811:4;15792:24;;15747:69;:107;;;;-1:-1:-1::0;15838:6:0::1;::::0;-1:-1:-1;;;;;15838:16:0;;::::1;:6:::0;::::1;:16;;15747:107;:146;;;;-1:-1:-1::0;15876:6:0::1;::::0;-1:-1:-1;;;;;15876:17:0;;::::1;:6:::0;::::1;:17;;15747:146;15739:170;;;::::0;-1:-1:-1;;;15739:170:0;;8585:2:1;15739:170:0::1;::::0;::::1;8567:21:1::0;8624:2;8604:18;;;8597:30;-1:-1:-1;;;8643:18:1;;;8636:41;8694:18;;15739:170:0::1;8383:335:1::0;15739:170:0::1;15934:7;-1:-1:-1::0;;;;;15924:17:0::1;:6;-1:-1:-1::0;;;;;15924:17:0::1;::::0;15920:482:::1;;-1:-1:-1::0;;;;;15958:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;15987:4:::1;-1:-1:-1::0;;15958:33:0;;::::1;::::0;::::1;::::0;;;16006:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;16053:34:::1;::::0;15958:26;;16053:19:::1;:34::i;:::-;15600:809:::0;;:::o;15920:482::-:1;-1:-1:-1::0;;;;;16120:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;16148:4:::1;-1:-1:-1::0;;16120:32:0;;::::1;::::0;::::1;::::0;;;16167:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16215:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;16261:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;16308:33:::1;::::0;16120:25;;16308:19:::1;:33::i;:::-;16356:34;16376:7;16385:4;16356:19;:34::i;9509:83::-:0;9564:7;4879:13;4819:1;4879:2;:13;:::i;:::-;4862:30;;4670:15;4862:30;:::i;:::-;9575:14;;9509:83;:::o;11052:306::-;-1:-1:-1;;;;;11173:19:0;;11152:4;11173:19;;;:11;:19;;;;;;;;11193:10;11173:31;;;;;;;;-1:-1:-1;;11173:52:0;11169:126;;-1:-1:-1;;;;;11242:19:0;;;;;;:11;:19;;;;;;;;11262:10;11242:31;;;;;;;:41;;11277:6;;11242:19;:41;;11277:6;;11242:41;:::i;:::-;;;;-1:-1:-1;;11169:126:0;11314:36;11324:6;11332:9;11343:6;11314:9;:36::i;:::-;11307:43;11052:306;-1:-1:-1;;;;11052:306:0:o;21241:447::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;21376:7:::1;:14;21357:8;:15;:33;21349:67;;;::::0;-1:-1:-1;;;21349:67:0;;10746:2:1;21349:67:0::1;::::0;::::1;10728:21:1::0;10785:2;10765:18;;;10758:30;10824:23;10804:18;;;10797:51;10865:18;;21349:67:0::1;10544:345:1::0;21349:67:0::1;21432:8;21427:254;21450:8;:15;21446:1;:19;;;21427:254;;;21531:13;4819:1;21531:2;:13;:::i;:::-;21520:7;21528:1;21520:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21505:10;10150:7:::0;10177:16;;;;;;;;;;;21495:49:::1;;21487:80;;;::::0;-1:-1:-1;;;21487:80:0;;11228:2:1;21487:80:0::1;::::0;::::1;11210:21:1::0;11267:2;11247:18;;;11240:30;11306:20;11286:18;;;11279:48;11344:18;;21487:80:0::1;11026:342:1::0;21487:80:0::1;21582:87;21599:10;21611:8;21620:1;21611:11;;;;;;;;;;:::i;:::-;;;;;;;4819:1;21635:2;:13;;;;:::i;:::-;21624:7;21632:1;21624:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21650:5;21657::::0;21664:4:::1;21582:16;:87::i;:::-;-1:-1:-1::0;21467:3:0;::::1;::::0;::::1;:::i;:::-;;;;21427:254;;;;21241:447:::0;;:::o;13772:141::-;13825:7;10177:16;;;;;;5296:42;10177:16;;;;13864:39;;10177:16;13864:39;:::i;:::-;4879:13;4819:1;4879:2;:13;:::i;:::-;4862:30;;4670:15;4862:30;:::i;:::-;13853:51;;;;:::i;13921:110::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;13990:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13990:33:0;;-1:-1:-1;;;;;178:55:1;;;13990:33:0::1;::::0;::::1;160:74:1::0;13990:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13990:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13921:110:::0;:::o;8892:221::-;8970:16;;-1:-1:-1;;;;;8970:16:0;8956:10;:30;8948:83;;;;-1:-1:-1;;;8948:83:0;;11907:2:1;8948:83:0;;;11889:21:1;11946:2;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;-1:-1:-1;;;12036:18:1;;;12029:38;12084:19;;8948:83:0;11705:404:1;8948:83:0;9042:23;9062:1;9042:11;:23::i;:::-;9076:16;:29;;-1:-1:-1;;;;;;9076:29:0;;;8892:221::o;14200:189::-;14329:6;;-1:-1:-1;;;;;14329:6:0;14291:7;10177:16;;;;;;;;;;;5157:5;;14319:41;;14339:21;;14319:41;:::i;:::-;14318:62;;;;:::i;15104:217::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;15234:3:::1;15208:22;:29;;15200:64;;;::::0;-1:-1:-1;;;15200:64:0;;12538:2:1;15200:64:0::1;::::0;::::1;12520:21:1::0;12577:2;12557:18;;;12550:30;12616:24;12596:18;;;12589:52;12658:18;;15200:64:0::1;12336:346:1::0;15200:64:0::1;15275:13;:38:::0;15104:217::o;7199:654::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;-1:-1:-1;;;;;7278:22:0;::::1;7270:96;;;::::0;-1:-1:-1;;;7270:96:0;;12889:2:1;7270:96:0::1;::::0;::::1;12871:21:1::0;12928:2;12908:18;;;12901:30;12967:34;12947:18;;;12940:62;13038:31;13018:18;;;13011:59;13087:19;;7270:96:0::1;12687:425:1::0;7270:96:0::1;-1:-1:-1::0;;;;;;;7385:16:0;::::1;::::0;7377:90:::1;;;::::0;-1:-1:-1;;;7377:90:0;;12889:2:1;7377:90:0::1;::::0;::::1;12871:21:1::0;12928:2;12908:18;;;12901:30;12967:34;12947:18;;;12940:62;13038:31;13018:18;;;13011:59;13087:19;;7377:90:0::1;12687:425:1::0;7377:90:0::1;7498:6;::::0;7478:34:::1;::::0;-1:-1:-1;;;;;7498:6:0::1;;7478:19;:34::i;:::-;7523:35;7543:8;7553:4;7523:19;:35::i;:::-;7593:6;::::0;-1:-1:-1;;;;;7593:6:0::1;7603:1;10177:16:::0;;;;;;;;;;;7583:21;7579:127:::1;;7638:6;::::0;-1:-1:-1;;;;;7638:6:0::1;10150:7:::0;10177:16;;;;;;;;;;;7621:73:::1;::::0;7638:6;7646:8;;7656:17:::1;10084:117:::0;7621:73:::1;;7579:127;7745:6;::::0;;-1:-1:-1;;;;;7762:17:0;;::::1;-1:-1:-1::0;;;;;;7762:17:0;::::1;::::0;::::1;::::0;;;7795:40:::1;::::0;7745:6;::::1;::::0;7762:17;7745:6;;7795:40:::1;::::0;7726:16:::1;::::0;7795:40:::1;7259:594;7199:654:::0;:::o;13326:134::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;-1:-1:-1;;;;;13414:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13414:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13326:134::o;12626:557::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;12701:14:::1;::::0;::::1;;12700:15;12692:24;;;::::0;::::1;;12751:4;-1:-1:-1::0;;;;;12735:21:0;::::1;::::0;12727:48:::1;;;::::0;-1:-1:-1;;;12727:48:0;;13319:2:1;12727:48:0::1;::::0;::::1;13301:21:1::0;13358:2;13338:18;;;13331:30;13397:16;13377:18;;;13370:44;13431:18;;12727:48:0::1;13117:338:1::0;12727:48:0::1;12786:11;:31:::0;;-1:-1:-1;;;;;;12786:31:0::1;::::0;-1:-1:-1;;;;;12786:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12832:23:::1;::::0;;-1:-1:-1;;;12832:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12832:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12832:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12832:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12828:348;;13165:8;::::0;::::1;12828:348;12919:9;:29:::0;;-1:-1:-1;;12919:29:0::1;;-1:-1:-1::0;;;;;12919:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12950:6:::1;:22:::0;;-1:-1:-1;;;;;;12950:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12974:15:0;;;-1:-1:-1;12974:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12974:22:0::1;::::0;;::::1;::::0;;13021:6:::1;::::0;13037:9;;13012:55:::1;::::0;13021:6;::::1;::::0;13037:9;;::::1;;-1:-1:-1::0;;13012:8:0::1;:55::i;:::-;13114:9;::::0;13082:62:::1;::::0;13099:4:::1;::::0;13114:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13114:9:0::1;-1:-1:-1::0;;13082:8:0::1;:62::i;12828:348::-;12626:557:::0;:::o;7861:310::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;7928:14:::1;::::0;::::1;;7920:74;;;::::0;-1:-1:-1;;;7920:74:0;;14052:2:1;7920:74:0::1;::::0;::::1;14034:21:1::0;14091:2;14071:18;;;14064:30;14130:34;14110:18;;;14103:62;14201:17;14181:18;;;14174:45;14236:19;;7920:74:0::1;13850:411:1::0;7920:74:0::1;8025:6;::::0;8005:34:::1;::::0;-1:-1:-1;;;;;8025:6:0::1;;8005:19;:34::i;:::-;8069:6;::::0;;-1:-1:-1;;;;;;8086:19:0;::::1;::::0;;;8121:42:::1;::::0;-1:-1:-1;;;;;8069:6:0;;::::1;::::0;8050:16:::1;::::0;8069:6;;8121:42:::1;::::0;8050:16;;8121:42:::1;7909:262;7861:310::o:0;12054:564::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;12136:7:::1;12131:480;;-1:-1:-1::0;;;;;12160:13:0;;::::1;12176:5;12160:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12160:21:0::1;::::0;;12196:11:::1;::::0;:34;;-1:-1:-1;;;12196:34:0;;::::1;::::0;::::1;14434:74:1::0;;;;14524:18;;;14517:50;;;;12196:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;14407:18:1;;12196:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;12131:480;12267:17;::::0;:22;12263:135:::1;;12356:6;12336:17;;12318:15;:35;;;;:::i;:::-;:44;12310:72;;;::::0;-1:-1:-1;;;12310:72:0;;14780:2:1;12310:72:0::1;::::0;::::1;14762:21:1::0;14819:2;14799:18;;;14792:30;14858:17;14838:18;;;14831:45;14893:18;;12310:72:0::1;14578:339:1::0;12310:72:0::1;-1:-1:-1::0;;;;;12421:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12420:14;12412:54;;;::::0;-1:-1:-1;;;12412:54:0;;15124:2:1;12412:54:0::1;::::0;::::1;15106:21:1::0;15163:2;15143:18;;;15136:30;15202:29;15182:18;;;15175:57;15249:18;;12412:54:0::1;14922:351:1::0;12412:54:0::1;-1:-1:-1::0;;;;;12481:13:0;;::::1;;::::0;;;12497:4:::1;12481:13;::::0;;;;;;;;:20;;-1:-1:-1;;12481:20:0::1;::::0;::::1;::::0;;12536:15:::1;12516:17;:35:::0;12566:11:::1;::::0;:33;;-1:-1:-1;;;12566:33:0;;::::1;::::0;::::1;14434:74:1::0;;;;14524:18;;;14517:50;12566:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;14407:18:1;;12566:33:0::1;14266:307:1::0;10869:175:0;7053:6;;10935:4;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;10984:9:::1;::::0;10952:62:::1;::::0;10969:4:::1;::::0;10984:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10984:9:0::1;-1:-1:-1::0;;10952:8:0::1;:62::i;:::-;-1:-1:-1::0;11032:4:0::1;10869:175:::0;:::o;20002:737::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;20064:14:::1;::::0;::::1;;20063:15;20055:52;;;::::0;-1:-1:-1;;;20055:52:0;;15480:2:1;20055:52:0::1;::::0;::::1;15462:21:1::0;15519:2;15499:18;;;15492:30;15558:26;15538:18;;;15531:54;15602:18;;20055:52:0::1;15278:348:1::0;20055:52:0::1;20126:16;::::0;::::1;::::0;::::1;;;20118:53;;;::::0;-1:-1:-1;;;20118:53:0;;15833:2:1;20118:53:0::1;::::0;::::1;15815:21:1::0;15872:2;15852:18;;;15845:30;15911:26;15891:18;;;15884:54;15955:18;;20118:53:0::1;15631:348:1::0;20118:53:0::1;20194:11;::::0;;;::::1;-1:-1:-1::0;;;;;20194:11:0::1;20182:106;;20236:11;:40:::0;;-1:-1:-1;;;;;;20236:40:0::1;20270:4;20236:40:::0;::::1;;::::0;;20182:106:::1;20302:11;::::0;20324:6:::1;::::0;20302:87:::1;::::0;-1:-1:-1;;;20302:87:0;;-1:-1:-1;;;;;20324:6:0;;::::1;20302:87;::::0;::::1;16207:74:1::0;16329:10;20339:12:0::1;16317:23:1::0;16297:18;;;16290:51;16389:18;20361:15:0::1;16377:31:1::0;16357:18;;;16350:59;4819:1:0::1;16425:18:1::0;;;16418:45;20302:11:0;;;::::1;;::::0;:21:::1;::::0;16179:19:1;;20302:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;20415:11:0::1;::::0;20446:6:::1;::::0;-1:-1:-1;;;;;20446:6:0;;::::1;10150:7:::0;10177:16;;;;;;;;;;;;;20415:39;;-1:-1:-1;;;20415:39:0;;::::1;::::0;::::1;391:25:1::0;;;;20415:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;20415:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20415:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20415:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20411:207:::0;::::1;;20526:13;:29:::0;;;;20570:10:::1;:27:::0;20411:207:::1;20628:14;:21:::0;;-1:-1:-1;;20628:21:0;;::::1;20645:4;20628:21;::::0;;;20660:23:::1;:31:::0;;;;::::1;::::0;;20716:15:::1;20702:11;:29:::0;20002:737::o;10209:165::-;10287:4;10304:40;10314:10;10326:9;10337:6;10304:9;:40::i;:::-;-1:-1:-1;10362:4:0;;10209:165;-1:-1:-1;;;10209:165:0:o;20937:296::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;21015:16:::1;::::0;::::1;::::0;::::1;;;21011:111;;;21073:4;-1:-1:-1::0;;;;;21056:22:0;::::1;::::0;21048:62:::1;;;::::0;-1:-1:-1;;;21048:62:0;;16926:2:1;21048:62:0::1;::::0;::::1;16908:21:1::0;16965:2;16945:18;;;16938:30;17004:29;16984:18;;;16977:57;17051:18;;21048:62:0::1;16724:351:1::0;21048:62:0::1;21186:6;::::0;21194:30:::1;::::0;-1:-1:-1;;;21194:30:0;;21218:4:::1;21194:30;::::0;::::1;160:74:1::0;21154:5:0;;-1:-1:-1;;;;;21171:14:0;;::::1;::::0;::::1;::::0;21186:6;;;::::1;::::0;21171:14;;21194:15:::1;::::0;133:18:1;;21194:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21171:54;::::0;-1:-1:-1;;;;;;21171:54:0::1;::::0;;;;;;-1:-1:-1;;;;;17461:55:1;;;21171:54:0::1;::::0;::::1;17443:74:1::0;17533:18;;;17526:34;17416:18;;21171:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8402:482::-:0;8484:16;;-1:-1:-1;;;;;8484:16:0;8470:10;:30;8462:83;;;;-1:-1:-1;;;8462:83:0;;11907:2:1;8462:83:0;;;11889:21:1;11946:2;11926:18;;;11919:30;11985:34;11965:18;;;11958:62;-1:-1:-1;;;12036:18:1;;;12029:38;12084:19;;8462:83:0;11705:404:1;8462:83:0;8578:8;;-1:-1:-1;;;;;8578:8:0;8601:25;;8597:150;;-1:-1:-1;;;;;8643:30:0;;8676:5;8643:30;;;:17;:30;;;;;:38;;-1:-1:-1;;8643:38:0;;;8696:39;;8661:11;;8696:19;:39::i;:::-;8757:8;:22;;-1:-1:-1;;;;;;8757:22:0;-1:-1:-1;;;;;8757:22:0;;;;;;;;-1:-1:-1;8790:30:0;;;:17;:30;;;;;:37;;-1:-1:-1;;8790:37:0;-1:-1:-1;8790:37:0;;;;;;8838:38;;8757:22;;8838:19;:38::i;15329:263::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;15438:19:::1;:33:::0;;-1:-1:-1;;;;15438:33:0::1;-1:-1:-1::0;;;15438:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15482:22:::1;:47:::0;;-1:-1:-1;;15482:47:0::1;::::0;::::1;;;::::0;;15545:39:::1;::::0;2242:41:1;;;15545:39:0::1;::::0;2230:2:1;2215:18;15545:39:0::1;;;;;;;;15329:263:::0;;:::o;11366:680::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;11446:16:::1;::::0;::::1;::::0;::::1;;;11445:17;11437:60;;;::::0;-1:-1:-1;;;11437:60:0;;18023:2:1;11437:60:0::1;::::0;::::1;18005:21:1::0;18062:2;18042:18;;;18035:30;18101:32;18081:18;;;18074:60;18151:18;;11437:60:0::1;17821:354:1::0;11437:60:0::1;11508:20;11541:9;11508:43;;11562:16;11592:10;-1:-1:-1::0;;;;;11592:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11581:40:0::1;;11630:4;11637:10;-1:-1:-1::0;;;;;11637:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11581:74;::::0;-1:-1:-1;;;;;;11581:74:0::1;::::0;;;;;;-1:-1:-1;;;;;18689:15:1;;;11581:74:0::1;::::0;::::1;18671:34:1::0;18741:15;;18721:18;;;18714:43;18583:18;;11581:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11674:6;::::0;-1:-1:-1;;;;;11674:6:0;;::::1;11684:5;11666:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11666:23:0::1;::::0;;11562:93;;-1:-1:-1;11704:22:0;::::1;11700:200;;11763:10;-1:-1:-1::0;;;;;11763:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11752:43:0::1;;11804:4;11811:10;-1:-1:-1::0;;;;;11811:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11752:77;::::0;-1:-1:-1;;;;;;11752:77:0::1;::::0;;;;;;-1:-1:-1;;;;;18689:15:1;;;11752:77:0::1;::::0;::::1;18671:34:1::0;18741:15;;18721:18;;;18714:43;18583:18;;11752:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11743:6;:86:::0;;-1:-1:-1;;;;;;11743:86:0::1;-1:-1:-1::0;;;;;11743:86:0;;;::::1;::::0;;;::::1;::::0;;11700:200:::1;;;11871:6;:17:::0;;-1:-1:-1;;;;;;11871:17:0::1;-1:-1:-1::0;;;;;11871:17:0;::::1;;::::0;;11700:200:::1;11910:9;:22:::0;;-1:-1:-1;;11910:22:0::1;;-1:-1:-1::0;;;;;11910:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11951:6:::1;::::0;;::::1;-1:-1:-1::0;11943:15:0;;;-1:-1:-1;11943:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11943:22:0::1;::::0;;::::1;::::0;;12008:9;;11976:62:::1;::::0;11993:4:::1;::::0;12008:9;::::1;;-1:-1:-1::0;;11976:8:0::1;:62::i;20747:182::-:0;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;20814:16:::1;::::0;::::1;::::0;::::1;;;20813:17;20805:58;;;::::0;-1:-1:-1;;;20805:58:0;;18970:2:1;20805:58:0::1;::::0;::::1;18952:21:1::0;19009:2;18989:18;;;18982:30;19048;19028:18;;;19021:58;19096:18;;20805:58:0::1;18768:352:1::0;20805:58:0::1;20882:6;::::0;20874:47:::1;::::0;-1:-1:-1;;;;;20882:6:0;;::::1;::::0;20899:21:::1;20874:47:::0;::::1;;;::::0;20882:6:::1;20874:47:::0;20882:6;20874:47;20899:21;20882:6;20874:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14397:699:::0;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;14597:16;14577;4879:13:::1;4819:1;4879:2;:13;:::i;:::-;4862:30;::::0;4670:15:::1;4862:30;:::i;:::-;14567:26;;;;:::i;:::-;14566:47;;;;:::i;:::-;14550:13;:63:::0;14665:13;14648;4879::::1;4819:1;4879:2;:13;:::i;:::-;4862:30;::::0;4670:15:::1;4862:30;:::i;:::-;14638:23;;;;:::i;:::-;14637:41;;;;:::i;:::-;14624:10;:54:::0;;;14697:13:::1;::::0;:27:::1;;14689:73;;;::::0;-1:-1:-1;;;14689:73:0;;19327:2:1;14689:73:0::1;::::0;::::1;19309:21:1::0;19366:2;19346:18;;;19339:30;19405:34;19385:18;;;19378:62;-1:-1:-1;;;19456:18:1;;;19449:31;19497:19;;14689:73:0::1;19125:397:1::0;14689:73:0::1;14806:6;::::0;-1:-1:-1;;;;;14806:6:0::1;10150:7:::0;10177:16;;;;;;;;;;;5157:5:::1;::::0;14796:23:::1;::::0;14816:3:::1;14796:23;:::i;:::-;14795:44;;;;:::i;:::-;14781:10;;:58;;14773:106;;;::::0;-1:-1:-1;;;14773:106:0;;19729:2:1;14773:106:0::1;::::0;::::1;19711:21:1::0;19768:2;19748:18;;;19741:30;19807:34;19787:18;;;19780:62;-1:-1:-1;;;19858:18:1;;;19851:33;19901:19;;14773:106:0::1;19527:399:1::0;14773:106:0::1;14922:9;4879:13;4819:1;4879:2;:13;:::i;:::-;4862:30;::::0;4670:15:::1;4862:30;:::i;:::-;14912:19;;;;:::i;:::-;14898:10;;:33;;14890:92;;;::::0;-1:-1:-1;;;14890:92:0;;20133:2:1;14890:92:0::1;::::0;::::1;20115:21:1::0;20172:2;20152:18;;;20145:30;20211:34;20191:18;;;20184:62;-1:-1:-1;;;20262:18:1;;;20255:44;20316:19;;14890:92:0::1;19931:410:1::0;14890:92:0::1;15028:9;4879:13;4819:1;4879:2;:13;:::i;:::-;4862:30;::::0;4670:15:::1;4862:30;:::i;:::-;15018:19;;;;:::i;:::-;15001:13;;:36;;14993:95;;;::::0;-1:-1:-1;;;14993:95:0;;20133:2:1;14993:95:0::1;::::0;::::1;20115:21:1::0;20172:2;20152:18;;;20145:30;20211:34;20191:18;;;20184:62;-1:-1:-1;;;20262:18:1;;;20255:44;20316:19;;14993:95:0::1;19931:410:1::0;14993:95:0::1;14397:699:::0;;;;:::o;13616:148::-;7053:6;;-1:-1:-1;;;;;7053:6:0;7063:10;7053:20;7045:50;;;;-1:-1:-1;;;7045:50:0;;7966:2:1;7045:50:0;;;7948:21:1;8005:2;7985:18;;;7978:30;-1:-1:-1;;;8024:18:1;;;8017:47;8081:18;;7045:50:0;7764:341:1;7045:50:0;-1:-1:-1;;;;;13712:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13712:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13616:148::o;10551:310::-;-1:-1:-1;;;;;10646:20:0;;10638:52;;;;-1:-1:-1;;;10638:52:0;;20548:2:1;10638:52:0;;;20530:21:1;20587:2;20567:18;;;20560:30;-1:-1:-1;;;20606:18:1;;;20599:49;20665:18;;10638:52:0;20346:343:1;10638:52:0;-1:-1:-1;;;;;10709:21:0;;10701:53;;;;-1:-1:-1;;;10701:53:0;;20548:2:1;10701:53:0;;;20530:21:1;20587:2;20567:18;;;20560:30;-1:-1:-1;;;20606:18:1;;;20599:49;20665:18;;10701:53:0;20346:343:1;10701:53:0;-1:-1:-1;;;;;10767:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10820:33;;391:25:1;;;10820:33:0;;364:18:1;10820:33:0;;;;;;;10551:310;;;:::o;16871:1783::-;16950:4;-1:-1:-1;;;;;16975:18:0;;16967:68;;;;-1:-1:-1;;;16967:68:0;;20896:2:1;16967:68:0;;;20878:21:1;20935:2;20915:18;;;20908:30;20974:34;20954:18;;;20947:62;-1:-1:-1;;;21025:18:1;;;21018:35;21070:19;;16967:68:0;20694:401:1;16967:68:0;-1:-1:-1;;;;;17054:16:0;;17046:64;;;;-1:-1:-1;;;17046:64:0;;21302:2:1;17046:64:0;;;21284:21:1;21341:2;21321:18;;;21314:30;21380:34;21360:18;;;21353:62;-1:-1:-1;;;21431:18:1;;;21424:33;21474:19;;17046:64:0;21100:399:1;17046:64:0;17138:1;17129:6;:10;17121:64;;;;-1:-1:-1;;;17121:64:0;;21706:2:1;17121:64:0;;;21688:21:1;21745:2;21725:18;;;21718:30;21784:34;21764:18;;;21757:62;-1:-1:-1;;;21835:18:1;;;21828:39;21884:19;;17121:64:0;21504:405:1;17121:64:0;-1:-1:-1;;;;;17284:13:0;;17196:8;17284:13;;;:7;:13;;;;;;17196:8;;;;17284:13;;17280:162;;;17320:4;17314:10;;17280:162;;;-1:-1:-1;;;;;17346:11:0;;;;;;:7;:11;;;;;;;;17342:100;;;17381:4;17374:11;;17342:100;;;-1:-1:-1;17426:4:0;17342:100;17456:20;17467:4;17473:2;17456:10;:20::i;:::-;17452:371;;;17497:14;;;;17493:319;;17537:5;17532:265;;17567:34;;-1:-1:-1;;;17567:34:0;;22116:2:1;17567:34:0;;;22098:21:1;22155:2;22135:18;;;22128:30;22194:26;22174:18;;;22167:54;22238:18;;17567:34:0;21914:348:1;17532:265:0;-1:-1:-1;;;;;17632:31:0;;;;;;:25;:31;;;;;;;;17631:32;:66;;;;-1:-1:-1;;;;;;17668:29:0;;;;;;:25;:29;;;;;;;;17667:30;17631:66;17627:170;;;17722:55;;-1:-1:-1;;;17722:55:0;;22469:2:1;17722:55:0;;;22451:21:1;22508:2;22488:18;;;22481:30;22547:34;22527:18;;;22520:62;-1:-1:-1;;;22598:18:1;;;22591:43;22651:19;;17722:55:0;22267:409:1;17627:170:0;17839:4;17835:742;;;17865:6;;-1:-1:-1;;;17865:6:0;;;;17860:706;;17896:19;;-1:-1:-1;;;17896:19:0;;;;:64;;;;-1:-1:-1;;;;;;17940:20:0;;;;;;:16;:20;;;;;;;;17939:21;17896:64;:111;;;;-1:-1:-1;;;;;;17985:22:0;;;;;;:16;:22;;;;;;;;17984:23;17896:111;17892:659;;;18099:4;18050:28;10177:16;;;;;;;;;;;18156:13;;18132:37;;18128:404;;18216:10;;18257:22;;;;18253:97;;;18314:13;;18304:6;;-1:-1:-1;;;;;18304:6:0;10150:7;10177:16;;;;;;;;;;;5157:5;;18294:33;;;:::i;:::-;18293:54;;;;:::i;:::-;18283:64;;18253:97;18404:7;18380:20;:31;18376:72;;18438:7;18415:30;;18376:72;18474:34;18487:20;18474:12;:34::i;:::-;18171:361;18128:404;18027:524;17892:659;18594:52;18611:4;18617:2;18621:6;18629:3;18634:4;18640:5;18594:16;:52::i;:::-;18587:59;16871:1783;-1:-1:-1;;;;;;;16871:1783:0:o;21696:1055::-;21815:4;21836:20;21847:4;21853:2;21836:10;:20::i;:::-;21832:228;;;21891:11;;:39;;-1:-1:-1;;;21891:39:0;;-1:-1:-1;;;;;22962:15:1;;;21891:39:0;;;22944:34:1;23014:15;;;22994:18;;;22987:43;23046:18;;;23039:34;;;21860:12:0;;21891:11;;;;;:21;;22856:18:1;;21891:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;21891:39:0;;;;;;;;-1:-1:-1;;21891:39:0;;;;;;;;;;;;:::i;:::-;;;21887:122;;21998:8;;;21887:122;21981:5;-1:-1:-1;22027:7:0;22023:26;;22038:8;;;22023:26;21858:202;21832:228;-1:-1:-1;;;;;22104:25:0;;22070:12;22104:25;;;:19;:25;;;;;;22085:4;;22104:25;;;:52;;-1:-1:-1;;;;;;22133:23:0;;;;;;:19;:23;;;;;;;;22104:52;22100:99;;;-1:-1:-1;22182:5:0;22100:99;-1:-1:-1;;;;;22209:13:0;;:7;:13;;;;;;;;;;:23;;22226:6;;22209:7;:23;;22226:6;;22209:23;:::i;:::-;;;;-1:-1:-1;22243:22:0;;-1:-1:-1;22269:7:0;22268:55;;22317:6;22268:55;;;22280:34;22290:4;22296:6;22304:3;22309:4;22280:9;:34::i;:::-;22243:80;;22349:14;22334:7;:11;22342:2;-1:-1:-1;;;;;22334:11:0;-1:-1:-1;;;;;22334:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22394:2;-1:-1:-1;;;;;22379:34:0;22388:4;-1:-1:-1;;;;;22379:34:0;;22398:14;22379:34;;;;391:25:1;;379:2;364:18;;245:177;22379:34:0;;;;;;;;22429:16;;;;;;;22424:298;;22462:28;22481:4;22487:2;22462:18;:28::i;:::-;22510:16;;;;;;;22509:17;:41;;;;;22530:20;22541:4;22547:2;22530:10;:20::i;:::-;22509:77;;;;-1:-1:-1;;;;;;22555:31:0;;;;;;:25;:31;;;;;;;;22554:32;22509:77;:111;;;;-1:-1:-1;;;;;;22591:29:0;;;;;;:25;:29;;;;;;;;22590:30;22509:111;:121;;;;;22625:5;22624:6;22509:121;22505:206;;;22651:44;;-1:-1:-1;;;22651:44:0;;23286:2:1;22651:44:0;;;23268:21:1;23325:2;23305:18;;;23298:30;23364:34;23344:18;;;23337:62;-1:-1:-1;;;23415:18:1;;;23408:32;23457:19;;22651:44:0;23084:398:1;22505:206:0;-1:-1:-1;22739:4:0;;21696:1055;-1:-1:-1;;;;;;;;21696:1055:0:o;16417:446::-;16518:6;;16486:4;;-1:-1:-1;;;;;16510:14:0;;;16518:6;;16510:14;;;;:43;;-1:-1:-1;16547:6:0;;-1:-1:-1;;;;;16541:12:0;;;16547:6;;16541:12;;16510:43;:79;;;;-1:-1:-1;16583:6:0;;-1:-1:-1;;;;;16583:6:0;16570:9;:19;;16510:79;:118;;;;-1:-1:-1;;;;;;16607:21:0;;;;;;:17;:21;;;;;;;;16606:22;16510:118;:159;;;;-1:-1:-1;;;;;;16646:23:0;;;;;;:17;:23;;;;;;;;16645:24;16510:159;:186;;;;-1:-1:-1;;;;;;16686:10:0;;5296:42;16686:10;;16510:186;:219;;;;-1:-1:-1;;;;;;16713:16:0;;;;16510:219;:257;;;;-1:-1:-1;;;;;;16746:21:0;;16762:4;16746:21;;16510:257;:302;;;;-1:-1:-1;16800:11:0;;-1:-1:-1;;;;;16784:28:0;;;16800:11;;;;;16784:28;;16510:302;:345;;;;-1:-1:-1;16843:11:0;;-1:-1:-1;;;;;16829:26:0;;;16843:11;;;;;16829:26;;16510:345;16503:352;16417:446;-1:-1:-1;;;16417:446:0:o;18662:761::-;5967:6;:13;;-1:-1:-1;;;;5967:13:0;-1:-1:-1;;;5967:13:0;;;18769:4:::1;5967:13:::0;18749:26;;;:11:::1;:26;::::0;;;;;;;18784:9:::1;::::0;5967:13;18784:9;::::1;-1:-1:-1::0;;;;;18784:9:0::1;18749:46:::0;;;;;;;;-1:-1:-1;;18749:67:0::1;18745:166;;18853:4;18833:26;::::0;;;:11:::1;:26;::::0;;;;;;;18868:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18868:9:0::1;18833:46:::0;;;;;;;-1:-1:-1;;18833:66:0;;18745:166:::1;18955:16;::::0;;18969:1:::1;18955:16:::0;;;;;::::1;::::0;;18931:21:::1;::::0;18955:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18955:16:0::1;18931:40;;19000:4;18982;18987:1;18982:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18982:23:0::1;;;-1:-1:-1::0;;;;;18982:23:0::1;;;::::0;::::1;19026:9;;;;;;;;;-1:-1:-1::0;;;;;19026:9:0::1;-1:-1:-1::0;;;;;19026:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19016:4;19021:1;19016:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19016:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19059:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19059:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19134:20;;19169:1:::1;::::0;19185:4;;19212::::1;::::0;19232:15:::1;::::0;19059:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19055:246;;19283:7;;;19055:246;19349:15;::::0;:66:::1;::::0;19313:12:::1;::::0;-1:-1:-1;;;;;19349:15:0::1;::::0;19405:5:::1;::::0;19377:21:::1;::::0;19313:12;19349:66;19313:12;19349:66;19377:21;19349:15;19405:5;19349:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5991:1:0::1;-1:-1:-1::0;6003:6:0;:14;;-1:-1:-1;;;;6003:14:0;;;18662:761::o;22759:767::-;22847:7;22867:18;22900:3;22896:205;;;-1:-1:-1;22933:9:0;:16;;;22896:205;;;22971:4;22967:134;;;-1:-1:-1;23005:9:0;:17;;;;;;22967:134;;;-1:-1:-1;23068:9:0;:21;;;;;;22967:134;23115:10;23129:1;23115:15;23111:39;;23141:6;23134:13;;;;;23111:39;23172:11;;;;;-1:-1:-1;;;;;23172:11:0;23196:4;23164:37;:73;;;;;23218:13;23235:2;23218:19;;23164:73;23160:101;;;-1:-1:-1;23254:4:0;23160:101;23271:17;5157:5;23291:19;23300:10;23291:6;:19;:::i;:::-;:38;;;;:::i;:::-;23271:58;-1:-1:-1;23344:13:0;;23340:141;;23390:4;23374:7;:22;;;;;;;;;;:35;;23400:9;;23374:7;:35;;23400:9;;23374:35;:::i;:::-;;;;-1:-1:-1;;23429:40:0;;391:25:1;;;23452:4:0;;-1:-1:-1;;;;;23429:40:0;;;;;379:2:1;364:18;23429:40:0;;;;;;;23340:141;23500:18;23509:9;23500:6;:18;:::i;19431:563::-;19514:16;;;;;;;19513:17;19505:65;;;;-1:-1:-1;;;19505:65:0;;24930:2:1;19505:65:0;;;24912:21:1;24969:2;24949:18;;;24942:30;25008:34;24988:18;;;24981:62;-1:-1:-1;;;25059:18:1;;;25052:33;25102:19;;19505:65:0;24728:399:1;19505:65:0;19586:20;19597:4;19603:2;19586:10;:20::i;:::-;19585:21;:37;;;;-1:-1:-1;19616:6:0;;-1:-1:-1;;;;;19610:12:0;;;19616:6;;19610:12;19585:37;19581:406;;;-1:-1:-1;;;;;19639:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;19639:30:0;;;19665:4;19639:30;;;;;;19684:19;:25;;;;;:32;;;;;;;;;;19731:16;:23;;-1:-1:-1;;19731:23:0;19639:30;19731:23;;;;;19781:11;;;;19769:114;;19827:11;:40;;-1:-1:-1;;;;;;19827:40:0;19861:4;19827:40;;;;;19769:114;19897:19;:26;;-1:-1:-1;;;;19897:26:0;-1:-1:-1;;;19897:26:0;;;19943:32;;-1:-1:-1;2242:41:1;;19943:32:0;;2230:2:1;2215:18;19943:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:180::-;6614:6;6667:2;6655:9;6646:7;6642:23;6638:32;6635:52;;;6683:1;6680;6673:12;6635:52;-1:-1:-1;6706:23:1;;6555:180;-1:-1:-1;6555:180:1:o;6740:382::-;6805:6;6813;6866:2;6854:9;6845:7;6841:23;6837:32;6834:52;;;6882:1;6879;6872:12;6834:52;6921:9;6908:23;6940:31;6965:5;6940:31;:::i;7374:385::-;7460:6;7468;7476;7484;7537:3;7525:9;7516:7;7512:23;7508:33;7505:53;;;7554:1;7551;7544:12;7505:53;-1:-1:-1;;7577:23:1;;;7647:2;7632:18;;7619:32;;-1:-1:-1;7698:2:1;7683:18;;7670:32;;7749:2;7734:18;7721:32;;-1:-1:-1;7374:385:1;-1:-1:-1;7374:385:1:o;8723:127::-;8784:10;8779:3;8775:20;8772:1;8765:31;8815:4;8812:1;8805:15;8839:4;8836:1;8829:15;8855:422;8944:1;8987:5;8944:1;9001:270;9022:7;9012:8;9009:21;9001:270;;;9081:4;9077:1;9073:6;9069:17;9063:4;9060:27;9057:53;;;9090:18;;:::i;:::-;9140:7;9130:8;9126:22;9123:55;;;9160:16;;;;9123:55;9239:22;;;;9199:15;;;;9001:270;;;9005:3;8855:422;;;;;:::o;9282:806::-;9331:5;9361:8;9351:80;;-1:-1:-1;9402:1:1;9416:5;;9351:80;9450:4;9440:76;;-1:-1:-1;9487:1:1;9501:5;;9440:76;9532:4;9550:1;9545:59;;;;9618:1;9613:130;;;;9525:218;;9545:59;9575:1;9566:10;;9589:5;;;9613:130;9650:3;9640:8;9637:17;9634:43;;;9657:18;;:::i;:::-;-1:-1:-1;;9713:1:1;9699:16;;9728:5;;9525:218;;9827:2;9817:8;9814:16;9808:3;9802:4;9799:13;9795:36;9789:2;9779:8;9776:16;9771:2;9765:4;9762:12;9758:35;9755:77;9752:159;;;-1:-1:-1;9864:19:1;;;9896:5;;9752:159;9943:34;9968:8;9962:4;9943:34;:::i;:::-;10013:6;10009:1;10005:6;10001:19;9992:7;9989:32;9986:58;;;10024:18;;:::i;:::-;10062:20;;9282:806;-1:-1:-1;;;9282:806:1:o;10093:140::-;10151:5;10180:47;10221:4;10211:8;10207:19;10201:4;10180:47;:::i;10238:168::-;10311:9;;;10342;;10359:15;;;10353:22;;10339:37;10329:71;;10380:18;;:::i;10411:128::-;10478:9;;;10499:11;;;10496:37;;;10513:18;;:::i;10894:127::-;10955:10;10950:3;10946:20;10943:1;10936:31;10986:4;10983:1;10976:15;11010:4;11007:1;11000:15;11373:197;11411:3;11439:6;11480:2;11473:5;11469:14;11507:2;11498:7;11495:15;11492:41;;11513:18;;:::i;:::-;11562:1;11549:15;;11373:197;-1:-1:-1;;;11373:197:1:o;11575:125::-;11640:9;;;11661:10;;;11658:36;;;11674:18;;:::i;12114:217::-;12154:1;12180;12170:132;;12224:10;12219:3;12215:20;12212:1;12205:31;12259:4;12256:1;12249:15;12287:4;12284:1;12277:15;12170:132;-1:-1:-1;12316:9:1;;12114:217::o;13460:385::-;13539:6;13547;13600:2;13588:9;13579:7;13575:23;13571:32;13568:52;;;13616:1;13613;13606:12;13568:52;13648:9;13642:16;13667:31;13692:5;13667:31;:::i;:::-;13767:2;13752:18;;13746:25;13717:5;;-1:-1:-1;13780:33:1;13746:25;13780:33;:::i;16474:245::-;16553:6;16561;16614:2;16602:9;16593:7;16589:23;16585:32;16582:52;;;16630:1;16627;16620:12;16582:52;-1:-1:-1;;16653:16:1;;16709:2;16694:18;;;16688:25;16653:16;;16688:25;;-1:-1:-1;16474:245:1:o;17080:184::-;17150:6;17203:2;17191:9;17182:7;17178:23;17174:32;17171:52;;;17219:1;17216;17209:12;17171:52;-1:-1:-1;17242:16:1;;17080:184;-1:-1:-1;17080:184:1:o;17571:245::-;17638:6;17691:2;17679:9;17670:7;17666:23;17662:32;17659:52;;;17707:1;17704;17697:12;17659:52;17739:9;17733:16;17758:28;17780:5;17758:28;:::i;18180:251::-;18250:6;18303:2;18291:9;18282:7;18278:23;18274:32;18271:52;;;18319:1;18316;18309:12;18271:52;18351:9;18345:16;18370:31;18395:5;18370:31;:::i;23487:1026::-;23749:4;23797:3;23786:9;23782:19;23828:6;23817:9;23810:25;23854:2;23892:6;23887:2;23876:9;23872:18;23865:34;23935:3;23930:2;23919:9;23915:18;23908:31;23959:6;23994;23988:13;24025:6;24017;24010:22;24063:3;24052:9;24048:19;24041:26;;24102:2;24094:6;24090:15;24076:29;;24123:1;24133:218;24147:6;24144:1;24141:13;24133:218;;;24212:13;;-1:-1:-1;;;;;24208:62:1;24196:75;;24326:15;;;;24291:12;;;;24169:1;24162:9;24133:218;;;-1:-1:-1;;;;;;;24407:55:1;;;;24402:2;24387:18;;24380:83;-1:-1:-1;;;24494:3:1;24479:19;24472:35;24368:3;23487:1026;-1:-1:-1;;;23487:1026:1:o

Swarm Source

ipfs://f26e7bb4fba1767cabdc56a2679e1861eaf04a6c6c0b4a10df0b5988b582a4c2

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  ]
[ 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.