ETH Price: $3,844.19 (-3.61%)

Contract

0x40C2e089FaD99e123f412bFcF33796CaF255fe06
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve159910702022-11-17 16:55:11761 days ago1668704111IN
0x40C2e089...aF255fe06
0 ETH0.0005086320.97979287
Approve158074912022-10-23 1:21:47787 days ago1666488107IN
0x40C2e089...aF255fe06
0 ETH0.0006985515.01375203
Approve157798582022-10-19 4:46:47790 days ago1666154807IN
0x40C2e089...aF255fe06
0 ETH0.0007797816.75941475
Approve157796512022-10-19 4:05:11790 days ago1666152311IN
0x40C2e089...aF255fe06
0 ETH0.0007996617.1867452
Approve157796082022-10-19 3:56:35790 days ago1666151795IN
0x40C2e089...aF255fe06
0 ETH0.0007491116.10026269
Approve157795942022-10-19 3:53:47790 days ago1666151627IN
0x40C2e089...aF255fe06
0 ETH0.0009575320.57981369
Approve157795912022-10-19 3:53:11790 days ago1666151591IN
0x40C2e089...aF255fe06
0 ETH0.0010583122.7458203
Approve157795902022-10-19 3:52:59790 days ago1666151579IN
0x40C2e089...aF255fe06
0 ETH0.0009713220.87614136
Approve157795882022-10-19 3:52:35790 days ago1666151555IN
0x40C2e089...aF255fe06
0 ETH0.0011043723.73571772
Approve157795872022-10-19 3:52:23790 days ago1666151543IN
0x40C2e089...aF255fe06
0 ETH0.0012110426.02827614
Approve157795842022-10-19 3:51:47790 days ago1666151507IN
0x40C2e089...aF255fe06
0 ETH0.0011879525.53204235
Approve157795822022-10-19 3:51:23790 days ago1666151483IN
0x40C2e089...aF255fe06
0 ETH0.0012112126.03204235
Approve157795812022-10-19 3:51:11790 days ago1666151471IN
0x40C2e089...aF255fe06
0 ETH0.0012437426.73113162
Approve157795752022-10-19 3:49:59790 days ago1666151399IN
0x40C2e089...aF255fe06
0 ETH0.0012658627.20649233
Approve157795732022-10-19 3:49:35790 days ago1666151375IN
0x40C2e089...aF255fe06
0 ETH0.0014487431.13716158
Approve157795732022-10-19 3:49:35790 days ago1666151375IN
0x40C2e089...aF255fe06
0 ETH0.0015690433.72270373
Approve157795662022-10-19 3:48:11790 days ago1666151291IN
0x40C2e089...aF255fe06
0 ETH0.0016304635.04276215
Approve157795632022-10-19 3:47:35790 days ago1666151255IN
0x40C2e089...aF255fe06
0 ETH0.0012047925.89389818
Approve157795602022-10-19 3:46:59790 days ago1666151219IN
0x40C2e089...aF255fe06
0 ETH0.0009898221.27364855
Approve157795582022-10-19 3:46:35790 days ago1666151195IN
0x40C2e089...aF255fe06
0 ETH0.0009085519.52698443
Approve157795582022-10-19 3:46:35790 days ago1666151195IN
0x40C2e089...aF255fe06
0 ETH0.0009085519.52698443
Approve157795552022-10-19 3:45:59790 days ago1666151159IN
0x40C2e089...aF255fe06
0 ETH0.000787216.9188548
Approve157795432022-10-19 3:43:35790 days ago1666151015IN
0x40C2e089...aF255fe06
0 ETH0.0008110817.43222986
Approve157795332022-10-19 3:41:35790 days ago1666150895IN
0x40C2e089...aF255fe06
0 ETH0.0008409418.07400461
Approve157795222022-10-19 3:39:23790 days ago1666150763IN
0x40C2e089...aF255fe06
0 ETH0.0009473420.36077777
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
159170632022-11-07 8:50:35771 days ago1667811035
0x40C2e089...aF255fe06
0.00072864 ETH
159170632022-11-07 8:50:35771 days ago1667811035
0x40C2e089...aF255fe06
0.00036432 ETH
159170632022-11-07 8:50:35771 days ago1667811035
0x40C2e089...aF255fe06
0.00109297 ETH
157823232022-10-19 13:02:47790 days ago1666184567
0x40C2e089...aF255fe06
0.00154625 ETH
157823232022-10-19 13:02:47790 days ago1666184567
0x40C2e089...aF255fe06
0.00077312 ETH
157823232022-10-19 13:02:47790 days ago1666184567
0x40C2e089...aF255fe06
0.00231938 ETH
157796612022-10-19 4:07:11790 days ago1666152431
0x40C2e089...aF255fe06
0.00090356 ETH
157796612022-10-19 4:07:11790 days ago1666152431
0x40C2e089...aF255fe06
0.00045178 ETH
157796612022-10-19 4:07:11790 days ago1666152431
0x40C2e089...aF255fe06
0.00135535 ETH
157796352022-10-19 4:01:59790 days ago1666152119
0x40C2e089...aF255fe06
0.00195481 ETH
157796352022-10-19 4:01:59790 days ago1666152119
0x40C2e089...aF255fe06
0.0009774 ETH
157796352022-10-19 4:01:59790 days ago1666152119
0x40C2e089...aF255fe06
0.00293221 ETH
157796112022-10-19 3:57:11790 days ago1666151831
0x40C2e089...aF255fe06
0.00112004 ETH
157796112022-10-19 3:57:11790 days ago1666151831
0x40C2e089...aF255fe06
0.00056002 ETH
157796112022-10-19 3:57:11790 days ago1666151831
0x40C2e089...aF255fe06
0.00168006 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00112004 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00056002 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00168006 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00235248 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00117624 ETH
157796102022-10-19 3:56:59790 days ago1666151819
0x40C2e089...aF255fe06
0.00352872 ETH
157796042022-10-19 3:55:47790 days ago1666151747
0x40C2e089...aF255fe06
0.00145792 ETH
157796042022-10-19 3:55:47790 days ago1666151747
0x40C2e089...aF255fe06
0.00072896 ETH
157796042022-10-19 3:55:47790 days ago1666151747
0x40C2e089...aF255fe06
0.00218688 ETH
157796032022-10-19 3:55:35790 days ago1666151735
0x40C2e089...aF255fe06
0.00329838 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HalloweenInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
Telegram: https://t.me/HalloweenInuERC

Website: www.halloweeninu.site

Enjoy the scariest night
of your life. 👻
*/

// SPDX-License-Identifier: none
pragma solidity ^0.8.17;

library SafeTransferLib {
    function safeTransferETH(address to, uint256 amount) internal {
        bool success;

        assembly {
            success := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(success, "ETH_TRANSFER_FAILED");
    }

    function safeTransfer(address token, address to, uint256 amount) internal {
        bool success;

        assembly {
            let freeMemoryPointer := mload(0x40)

            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), to)
            mstore(add(freeMemoryPointer, 36), amount)

            success := and(
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        require(success, "TRANSFER_FAILED");
    }
}

abstract contract Auth {
    event OwnershipTransferred(address owner);
    mapping (address => bool) internal authorizations;

    address public owner;
    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "!OWNER");
        
        _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); 
        
        _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }
}

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

contract HalloweenInu is Auth {
    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    address WRAP;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public name = "Halloween Inu";
    string public symbol = "HINU";
    uint8 constant public decimals = 4;

    uint256 public totalSupply = 100_000_000 * (10 ** decimals);
    uint256 public max_tx = totalSupply * 30 / 1000;     // 3% of Total Supply initially
    uint256 public max_wallet = totalSupply * 30 / 1000; // 3% of Total Supply initially

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    mapping (address => bool) public isPair;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isLimitExempt;
    
    uint256 public buybackFee = 0;         // 0%
    uint256 public marketingFee = 40;      // 4%
    uint256 public liquidityFee = 30;      // 3%
    uint256 public totalFee;
    uint256 public feeDenominator = 1000;  // 100%
    
    address public liquidityReceiver;
    address public marketingReceiver;

    uint256 launchedAt = 0;

    address public router;
    address public factory;
    address public main_pair;
    address[] public pairs;

    uint256 public smallSwapThreshold = totalSupply / 1000; //0,1%
    uint256 public largeSwapThreshold = totalSupply / 500;  //0,2%
    uint256 public swapThreshold = smallSwapThreshold;
    bool public swapEnabled = true;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        if (block.chainid == 56) { //BSC
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; //pancake
            factory = 0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73; //pancake
            WRAP = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; //WBNB
        } else if (block.chainid == 97) { //BSC TESTNET
            router = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3; //pancake testnet
            factory = 0xB7926C0430Afb07AA7DEfDE6DA862aE0Bde767bc; //pancake testnet
            WRAP = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd; //WBNB testnet
        } else if (block.chainid == 1) { //ETHEREUM
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Uniswap
            factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; //Uniswap
            WRAP = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; //ETH
        } else revert();
        allowance[address(this)][address(router)] = type(uint256).max;
        
        main_pair = IDexFactory(factory).createPair(WRAP, address(this));
        pairs.push(main_pair);
        isPair[main_pair] = true;
        
        address deployer = msg.sender;
        marketingReceiver = deployer;
        liquidityReceiver = deployer;
        totalFee = buybackFee + liquidityFee + marketingFee;

        isFeeExempt[deployer] = true;
        isFeeExempt[address(this)] = true;
        isLimitExempt[deployer] = true;
        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[ZERO] = true;
        
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[deployer] += totalSupply;
        }
        emit Transfer(address(0), deployer, totalSupply);
    }

    receive() external payable {}

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply - balanceOf[DEAD] - balanceOf[ZERO];
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////// TRANSFER //////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;
        
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) public virtual returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual returns (bool) {
        uint256 allowed = allowance[sender][msg.sender];

        if (allowed != type(uint256).max) allowance[sender][msg.sender] = allowed - amount;

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (!launched() && isPair[recipient]) {
            require(balanceOf[sender] > 0);
            require(sender == owner, "Only the owner can be the first to add liquidity.");
            launch();
        }
        if (inSwap) return _basicTransfer(sender, recipient, amount);

        checkTxLimit(sender, recipient, amount);
        if (shouldSwapBack()) swapBack(recipient);

        balanceOf[sender] -= amount;
        uint256 amountReceived = amount;
        
        if (isPair[sender] || isPair[recipient]) {
            amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        }
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amountReceived;
        }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[recipient] += amount;
        }

        emit Transfer(msg.sender, recipient, amount);
        return true;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////// LIMITS //////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        //verify sender max_tx
        require(amount <= max_tx || isPair[sender] && isLimitExempt[recipient] || isLimitExempt[sender], "TRANSACTION_LIMIT_EXCEEDED");

        //verify recipient max_wallet
        if (recipient != owner && !isLimitExempt[recipient] && !isPair[recipient]) {
            uint256 newBalance = balanceOf[recipient] + amount;
            require(newBalance <= max_wallet, "WALLET_LIMIT_EXCEEDED");
        }
    }

    function changeMaxTx(uint256 percent, uint256 denominator) external authorized { 
        require(percent >= 1 && denominator <= 1000, "Max tx must be greater than 0.1%");
        max_tx = totalSupply * percent / denominator;
    }
    
    function changeMaxWallet(uint256 percent, uint256 denominator) external authorized {
        require(percent >= 5 && denominator <= 1000, "Max wallet must be greater than 0.5%");
        max_wallet = totalSupply * percent / denominator;
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsLimitExempt(address holder, bool exempt) external authorized {
        isLimitExempt[holder] = exempt;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////// FEE ///////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient] && totalFee > 0;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        
        //normal fee
        feeAmount = amount * totalFee / feeDenominator;
        
        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[address(this)] += feeAmount;
        }

        emit Transfer(sender, address(this), feeAmount);
        return amount - feeAmount;
    }

    function resetFees() external authorized {
        buybackFee = 0;         //0%
        liquidityFee = 60;      //6%
        marketingFee = 40;      //4%
        totalFee = buybackFee + liquidityFee + marketingFee;
        feeDenominator = 1000;  //100%
    }

    function adjustFees(uint256 _buybackFee, uint256 _liquidityFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        buybackFee = _buybackFee;
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _buybackFee + _liquidityFee + _marketingFee;
        feeDenominator = _feeDenominator;
        //require(totalFee < feeDenominator / 5); // totalFee must be less than 20%
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        liquidityReceiver = _autoLiquidityReceiver;
        marketingReceiver = _marketingFeeReceiver;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////// CONTRCT SWAP ////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function shouldSwapBack() internal view returns (bool) {
        return !isPair[msg.sender] && !inSwap && swapEnabled && totalFee > 0 && balanceOf[address(this)] >= swapThreshold;
    }

    function swapBack(address pair_factory) internal swapping {
        if (pair_factory == main_pair) {
            uint256 amountToLiquify = swapThreshold * liquidityFee / totalFee / 2;
            uint256 amountToSwap = swapThreshold - amountToLiquify;

            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = WRAP;

            (bool success,) = router.call{gas : gasleft()}(
                //swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)
                abi.encodeWithSelector(
                    0x791ac947,
                    amountToSwap,
                    0,
                    path,
                    address(this),
                    block.timestamp
                )
            );

            uint256 amountBNB = address(this).balance;
            uint256 amountBNBLiquidity = amountBNB / 3;
            
            if (amountToLiquify > 0) {
                (success,) = router.call{gas : gasleft(), value: amountBNBLiquidity}(
                    //addLiquidityETH(address,uint256,uint256,uint256,address,uint256)
                    abi.encodeWithSelector(
                        0xf305d719,
                        address(this),
                        amountToLiquify,
                        0,
                        0,
                        liquidityReceiver,
                        block.timestamp
                    )
                );

                require(success, "SWAPBACK_FAILED");
            }

            SafeTransferLib.safeTransferETH(marketingReceiver, address(this).balance);
        }

        swapThreshold = swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapBackSettings(bool _enabled, uint256 _smallAmount, uint256 _largeAmount) external authorized {
        require(_smallAmount <= totalSupply * 25 / 10000, "Small swap threshold must be lower"); // smallSwapThreshold  <= 0,25% of Total Supply initially
        require(_largeAmount <= totalSupply * 5 / 1000, "Large swap threshold must be lower");   // largeSwapThreshold  <= 0,5% of Total Supply initially

        swapEnabled = _enabled;
        smallSwapThreshold = _smallAmount;
        largeSwapThreshold = _largeAmount;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////// OTHERS /////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    function updateTokenDetails(string memory newName, string memory newSymbol) external authorized {
        name = newName;
        symbol = newSymbol;
    }

	function rescue() external authorized {
        SafeTransferLib.safeTransferETH(marketingReceiver, address(this).balance);
    }

    function rescueToken(address _token) external authorized {
        require(_token != address(this), "STOP");

        (, bytes memory balance) = address(_token).call(abi.encodeWithSignature('balanceOf(address)', address(this)));
        uint256 amount = abi.decode(balance, (uint256));

        require(amount > 0, "No tokens");
        SafeTransferLib.safeTransfer(_token, marketingReceiver, amount);
    }

    function createPair(address token) external authorized {
        address new_pair = IDexFactory(factory).createPair(token, address(this));
        isPair[main_pair] = true;

        pairs.push(new_pair);
    }

    function showPairList() public view returns(address[] memory){
        return pairs;
    }

    function antiRaider(address sniperAddress) external authorized {
        require(!isPair[sniperAddress] , "STOP");
        require(sniperAddress != address(this) , "STOP");
        
        _basicTransfer(sniperAddress, DEAD, balanceOf[sniperAddress]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"adjustFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sniperAddress","type":"address"}],"name":"antiRaider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"largeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"main_pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_tx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_wallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_smallAmount","type":"uint256"},{"internalType":"uint256","name":"_largeAmount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showPairList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smallSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"updateTokenDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600d60809081526c48616c6c6f7765656e20496e7560981b60a0526003906200002e9082620005a9565b506040805180820190915260048082526348494e5560e01b602083015290620000589082620005a9565b50620000676004600a6200078a565b62000077906305f5e100620007a2565b6005556103e8600554601e6200008e9190620007a2565b6200009a9190620007bc565b6006556103e8600554601e620000b19190620007a2565b620000bd9190620007bc565b6007556000600d556028600e55601e600f556103e860115560006014556103e8600554620000ec9190620007bc565b6019556101f4600554620001019190620007bc565b601a55601954601b55601c805460ff191660011790553480156200012457600080fd5b50600180546001600160a01b0319163390811782556000908152602081905260409020805460ff1916909117905546603803620001c757601580546001600160a01b03199081167310ed43c718714eb63d5aa57b78b54704e256024e1790915560168054821673ca143ce32fe78f1f7019d7d551a6402fc5350c731790556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c179055620002b6565b466061036200023c57601580546001600160a01b0319908116739ac64cc6e4415144c455bd8e4837fea55603e5c31790915560168054821673b7926c0430afb07aa7defde6da862ae0bde767bc1790556002805490911673ae13d989dac2f0debff460ac112a837c89baa7cd179055620002b6565b46600103620002b157601580546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155601680548216735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f1790556002805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055620002b6565b600080fd5b3060008181526009602090815260408083206015546001600160a01b039081168552925291829020600019905560165460025492516364e329cb60e11b815292821660048401526024830193909352919091169063c9c65396906044016020604051808303816000875af115801562000333573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003599190620007df565b601780546001600160a01b039283166001600160a01b0319918216811783556018805460018181019092557fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e018054841690921790915591549092166000908152600a60205260409020805460ff1916909117905560138054821633908117909155601280549092168117909155600e54600f54600d54620003fc91906200080a565b6200040891906200080a565b6010556001600160a01b0381166000818152600b602090815260408083208054600160ff199182168117909255308086528386208054831684179055868652600c85528386208054831684179055855282852080548216831790557f45117a726ea4f344045dc210793664a28d2d320b7e03f6bffdae553d24c3586c80548216831790557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e8805490911690911790556005805485855260088452828520805490910190555490519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000820565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052f57607f821691505b6020821081036200055057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005a457600081815260208120601f850160051c810160208610156200057f5750805b601f850160051c820191505b81811015620005a0578281556001016200058b565b5050505b505050565b81516001600160401b03811115620005c557620005c562000504565b620005dd81620005d684546200051a565b8462000556565b602080601f831160018114620006155760008415620005fc5750858301515b600019600386901b1c1916600185901b178555620005a0565b600085815260208120601f198616915b82811015620006465788860151825594840194600190910190840162000625565b5085821015620006655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006cc578160001904821115620006b057620006b062000675565b80851615620006be57918102915b93841c939080029062000690565b509250929050565b600082620006e55750600162000784565b81620006f45750600062000784565b81600181146200070d5760028114620007185762000738565b600191505062000784565b60ff8411156200072c576200072c62000675565b50506001821b62000784565b5060208310610133831016604e8410600b84101617156200075d575081810a62000784565b6200076983836200068b565b806000190482111562000780576200078062000675565b0290505b92915050565b60006200079b60ff841683620006d4565b9392505050565b808202811582820484141762000784576200078462000675565b600082620007da57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007f257600080fd5b81516001600160a01b03811681146200079b57600080fd5b8082018082111562000784576200078462000675565b61325f80620008306000396000f3fe60806040526004361061032d5760003560e01c80638da5cb5b116101a5578063c45a0155116100ec578063e717fc3011610095578063f75282e11161006f578063f75282e114610960578063f887ea4014610980578063fbd141b8146109ad578063fe9fbb80146109cd57600080fd5b8063e717fc301461090a578063f0b37c0414610920578063f2fde38b1461094057600080fd5b8063d962cf58116100c6578063d962cf5814610882578063dd62ed3e146108a2578063e5e31b13146108da57600080fd5b8063c45a015514610815578063d0291d6614610842578063d08893581461086257600080fd5b8063a9059cbb1161014e578063b91ac78811610128578063b91ac788146107a8578063bae19235146107c8578063c150eda0146107e857600080fd5b8063a9059cbb14610738578063b0c150af14610758578063b6a5d7de1461078857600080fd5b80639ccb07441161017f5780639ccb0744146106cb578063a4b45c00146106eb578063a5949bcf1461070b57600080fd5b80638da5cb5b1461067357806395d89b41146106a057806398118cb4146106b557600080fd5b80632b112e49116102745780634460d3cf1161021d5780636ddd1713116101f75780636ddd17131461060057806370a082311461061a57806370fbc7121461064757806379426c061461065d57600080fd5b80634460d3cf146105aa578063658d4b7f146105ca5780636b67c4df146105ea57600080fd5b80633b2d081c1161024e5780633b2d081c1461054e5780633f4218e014610564578063414683a81461059457600080fd5b80632b112e49146104d65780632f54bf6e146104eb578063313ce5671461052757600080fd5b806318160ddd116102d65780631fbe1979116102b05780631fbe19791461044f57806323b872dd14610464578063264d26dd1461048457600080fd5b806318160ddd146104015780631ab33ba1146104175780631df4ccfc1461043957600080fd5b80630ec4c619116103075780630ec4c619146103b457806317e1df5b146103cb578063180b0d7e146103eb57600080fd5b80630445b6671461033957806306fdde0314610362578063095ea7b31461038457600080fd5b3661033457005b600080fd5b34801561034557600080fd5b5061034f601b5481565b6040519081526020015b60405180910390f35b34801561036e57600080fd5b50610377610a13565b6040516103599190612b35565b34801561039057600080fd5b506103a461039f366004612bab565b610aa1565b6040519015158152602001610359565b3480156103c057600080fd5b506103c9610b1b565b005b3480156103d757600080fd5b506103c96103e6366004612bd7565b610bce565b3480156103f757600080fd5b5061034f60115481565b34801561040d57600080fd5b5061034f60055481565b34801561042357600080fd5b5061042c610c76565b6040516103599190612c5a565b34801561044557600080fd5b5061034f60105481565b34801561045b57600080fd5b506103c9610ce5565b34801561047057600080fd5b506103a461047f366004612c6d565b610d83565b34801561049057600080fd5b506012546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b3480156104e257600080fd5b5061034f610e2d565b3480156104f757600080fd5b506103a4610506366004612cae565b60015473ffffffffffffffffffffffffffffffffffffffff91821691161490565b34801561053357600080fd5b5061053c600481565b60405160ff9091168152602001610359565b34801561055a57600080fd5b5061034f600d5481565b34801561057057600080fd5b506103a461057f366004612cae565b600b6020526000908152604090205460ff1681565b3480156105a057600080fd5b5061034f601a5481565b3480156105b657600080fd5b506103c96105c5366004612cae565b610e9d565b3480156105d657600080fd5b506103c96105e5366004612ce0565b611131565b3480156105f657600080fd5b5061034f600e5481565b34801561060c57600080fd5b50601c546103a49060ff1681565b34801561062657600080fd5b5061034f610635366004612cae565b60086020526000908152604090205481565b34801561065357600080fd5b5061034f60065481565b34801561066957600080fd5b5061034f60195481565b34801561067f57600080fd5b506001546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106ac57600080fd5b50610377611200565b3480156106c157600080fd5b5061034f600f5481565b3480156106d757600080fd5b506103c96106e6366004612cae565b61120d565b3480156106f757600080fd5b506103c9610706366004612d15565b6113d7565b34801561071757600080fd5b506013546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074457600080fd5b506103a4610753366004612bab565b6114a3565b34801561076457600080fd5b506103a4610773366004612cae565b600c6020526000908152604090205460ff1681565b34801561079457600080fd5b506103c96107a3366004612cae565b6114b0565b3480156107b457600080fd5b506104b16107c3366004612d4e565b611580565b3480156107d457600080fd5b506103c96107e3366004612d67565b6115b7565b3480156107f457600080fd5b506017546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082157600080fd5b506016546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561084e57600080fd5b506103c961085d366004612e63565b6116ee565b34801561086e57600080fd5b506103c961087d366004612ec7565b611780565b34801561088e57600080fd5b506103c961089d366004612ce0565b611987565b3480156108ae57600080fd5b5061034f6108bd366004612d15565b600960209081526000928352604080842090915290825290205481565b3480156108e657600080fd5b506103a46108f5366004612cae565b600a6020526000908152604090205460ff1681565b34801561091657600080fd5b5061034f60075481565b34801561092c57600080fd5b506103c961093b366004612cae565b611a56565b34801561094c57600080fd5b506103c961095b366004612cae565b611b23565b34801561096c57600080fd5b506103c961097b366004612d67565b611c52565b34801561098c57600080fd5b506015546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109b957600080fd5b506103c96109c8366004612cae565b611d64565b3480156109d957600080fd5b506103a46109e8366004612cae565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60038054610a2090612efa565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90612efa565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b505050505081565b33600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b099086815260200190565b60405180910390a35060015b92915050565b3360009081526020819052604090205460ff16610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000600d819055603c600f8190556028600e81905591610bb99190612f7c565b610bc39190612f7c565b6010556103e8601155565b3360009081526020819052604090205460ff16610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b600d849055600f839055600e82905581610c618486612f7c565b610c6b9190612f7c565b601055601155505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cb0575b5050505050905090565b3360009081526020819052604090205460ff16610d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b601354610d819073ffffffffffffffffffffffffffffffffffffffff1647611f29565b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e1757610de58382612f8f565b73ffffffffffffffffffffffffffffffffffffffff861660009081526009602090815260408083203384529091529020555b610e22858585611f9e565b9150505b9392505050565b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75461dead60009081527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429954600554919291610e8e9190612f8f565b610e989190612f8f565b905090565b3360009081526020819052604090205460ff16610f16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b3073ffffffffffffffffffffffffffffffffffffffff821603610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b60405130602482015260009073ffffffffffffffffffffffffffffffffffffffff831690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790525161103f9190612fa2565b6000604051808303816000865af19150503d806000811461107c576040519150601f19603f3d011682016040523d82523d6000602084013e611081565b606091505b5091505060008180602001905181019061109b9190612fbe565b905060008111611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20746f6b656e7300000000000000000000000000000000000000000000006044820152606401610b90565b60135461112c90849073ffffffffffffffffffffffffffffffffffffffff1683612239565b505050565b3360009081526020819052604090205460ff166111aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60048054610a2090612efa565b3360009081526020819052604090205460ff16611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6016546040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152600092169063c9c65396906044016020604051808303816000875af11580156112ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190612fd7565b60175473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556018805491820181559091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e018054919092167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b3360009081526020819052604090205460ff16611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6012805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560138054929093169116179055565b6000610e26338484611f9e565b60015473ffffffffffffffffffffffffffffffffffffffff163314611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6018818154811061159057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3360009081526020819052604090205460ff16611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6005821015801561164357506103e88111155b6116ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610b90565b80826005546116dd9190612ff4565b6116e7919061300b565b6007555050565b3360009081526020819052604090205460ff16611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b60036117738382613094565b50600461112c8282613094565b3360009081526020819052604090205460ff166117f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b612710600554601961180b9190612ff4565b611815919061300b565b8211156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f536d616c6c2073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610b90565b6103e860055460056118b69190612ff4565b6118c0919061300b565b81111561194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c617267652073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610b90565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001693151593909317909255601955601a55565b3360009081526020819052604090205460ff16611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526020819052604090205460ff16611ccb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b60018210158015611cde57506103e88111155b611d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d6178207478206d7573742062652067726561746572207468616e20302e31256044820152606401610b90565b8082600554611d539190612ff4565b611d5d919061300b565b6006555050565b3360009081526020819052604090205460ff16611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090205460ff1615611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b3073ffffffffffffffffffffffffffffffffffffffff821603611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902054611f2590829061dead906122f8565b5050565b600080600080600085875af190508061112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610b90565b6000611fab601454151590565b158015611fdd575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff165b156120c45773ffffffffffffffffffffffffffffffffffffffff841660009081526008602052604090205461201157600080fd5b60015473ffffffffffffffffffffffffffffffffffffffff8581169116146120bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e206265207468652066697273742060448201527f746f20616464206c69717569646974792e0000000000000000000000000000006064820152608401610b90565b6120c443601455565b601c54610100900460ff16156120e6576120df8484846122f8565b9050610e26565b6120f18484846123a5565b6120f96125c8565b15612107576121078361262c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600860205260408120805484929061213c908490612f8f565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054829060ff168061219c575073ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090205460ff165b156121c3576121ab8585612a0e565b6121b557826121c0565b6121c0858585612a7d565b90505b73ffffffffffffffffffffffffffffffffffffffff808516600081815260086020526040908190208054850190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122269085815260200190565b60405180910390a3506001949350505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806122f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610b90565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081208054839190839061232f908490612f8f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260086020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123939086815260200190565b60405180910390a35060019392505050565b6006548111158061240b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff16801561240b575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff165b8061243b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600c602052604090205460ff165b6124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4c494d49545f45584345454445440000000000006044820152606401610b90565b60015473ffffffffffffffffffffffffffffffffffffffff8381169116148015906124f2575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff16155b8015612524575073ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16155b1561112c5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205461255a908390612f7c565b90506007548111156122f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57414c4c45545f4c494d49545f455843454544454400000000000000000000006044820152606401610b90565b336000908152600a602052604081205460ff161580156125f05750601c54610100900460ff16155b80156125fe5750601c5460ff165b801561260c57506000601054115b8015610e98575050601b5430600090815260086020526040902054101590565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560175473ffffffffffffffffffffffffffffffffffffffff908116908216036129c95760006002601054600f54601b546126929190612ff4565b61269c919061300b565b6126a6919061300b565b9050600081601b546126b89190612f8f565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106126f2576126f26131ae565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600254825191169082906001908110612730576127306131ae565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601554600091165a63791ac94785600086304260405160240161277a9594939291906131dd565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127c89190612fa2565b60006040518083038160008787f1925050503d8060008114612806576040519150601f19603f3d011682016040523d82523d6000602084013e61280b565b606091505b50909150479050600061281f60038361300b565b9050851561299f5760155473ffffffffffffffffffffffffffffffffffffffff165a60125460408051306024820152604481018b9052600060648201819052608482015273ffffffffffffffffffffffffffffffffffffffff90921660a48301524260c4808401919091528151808403909101815260e490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff305d719000000000000000000000000000000000000000000000000000000001790525184916128ef91612fa2565b600060405180830381858888f193505050503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b5050809350508261299f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f535741504241434b5f4641494c454400000000000000000000000000000000006044820152606401610b90565b6013546129c29073ffffffffffffffffffffffffffffffffffffffff1647611f29565b5050505050505b601954601b54146129dc576019546129e0565b601a545b601b5550601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604081205460ff16158015612a6a575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff16155b8015610e26575050601054151592915050565b6011546010546000918291612a929085612ff4565b612a9c919061300b565b3060008181526008602052604090819020805484019055519192509073ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612aff9085815260200190565b60405180910390a3610e228184612f8f565b60005b83811015612b2c578181015183820152602001612b14565b50506000910152565b6020815260008251806020840152612b54816040850160208701612b11565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ba857600080fd5b50565b60008060408385031215612bbe57600080fd5b8235612bc981612b86565b946020939093013593505050565b60008060008060808587031215612bed57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612c4f57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612c1d565b509495945050505050565b602081526000610e266020830184612c09565b600080600060608486031215612c8257600080fd5b8335612c8d81612b86565b92506020840135612c9d81612b86565b929592945050506040919091013590565b600060208284031215612cc057600080fd5b8135610e2681612b86565b80358015158114612cdb57600080fd5b919050565b60008060408385031215612cf357600080fd5b8235612cfe81612b86565b9150612d0c60208401612ccb565b90509250929050565b60008060408385031215612d2857600080fd5b8235612d3381612b86565b91506020830135612d4381612b86565b809150509250929050565b600060208284031215612d6057600080fd5b5035919050565b60008060408385031215612d7a57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612dc957600080fd5b813567ffffffffffffffff80821115612de457612de4612d89565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612e2a57612e2a612d89565b81604052838152866020858801011115612e4357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612e7657600080fd5b823567ffffffffffffffff80821115612e8e57600080fd5b612e9a86838701612db8565b93506020850135915080821115612eb057600080fd5b50612ebd85828601612db8565b9150509250929050565b600080600060608486031215612edc57600080fd5b612ee584612ccb565b95602085013595506040909401359392505050565b600181811c90821680612f0e57607f821691505b602082108103612f47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b1557610b15612f4d565b81810381811115610b1557610b15612f4d565b60008251612fb4818460208701612b11565b9190910192915050565b600060208284031215612fd057600080fd5b5051919050565b600060208284031215612fe957600080fd5b8151610e2681612b86565b8082028115828204841417610b1557610b15612f4d565b600082613041577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f82111561112c57600081815260208120601f850160051c8101602086101561306d5750805b601f850160051c820191505b8181101561308c57828155600101613079565b505050505050565b815167ffffffffffffffff8111156130ae576130ae612d89565b6130c2816130bc8454612efa565b84613046565b602080601f83116001811461311557600084156130df5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561308c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561316257888601518255948401946001909101908401613143565b508582101561319e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815260ff8516602082015260a0604082015260006131ff60a0830186612c09565b73ffffffffffffffffffffffffffffffffffffffff9490941660608301525060800152939250505056fea264697066735822122039537d211b3db424899a609da296ea561990c9e8de36e1f69c0caa586ec554e364736f6c63430008110033

Deployed Bytecode

0x60806040526004361061032d5760003560e01c80638da5cb5b116101a5578063c45a0155116100ec578063e717fc3011610095578063f75282e11161006f578063f75282e114610960578063f887ea4014610980578063fbd141b8146109ad578063fe9fbb80146109cd57600080fd5b8063e717fc301461090a578063f0b37c0414610920578063f2fde38b1461094057600080fd5b8063d962cf58116100c6578063d962cf5814610882578063dd62ed3e146108a2578063e5e31b13146108da57600080fd5b8063c45a015514610815578063d0291d6614610842578063d08893581461086257600080fd5b8063a9059cbb1161014e578063b91ac78811610128578063b91ac788146107a8578063bae19235146107c8578063c150eda0146107e857600080fd5b8063a9059cbb14610738578063b0c150af14610758578063b6a5d7de1461078857600080fd5b80639ccb07441161017f5780639ccb0744146106cb578063a4b45c00146106eb578063a5949bcf1461070b57600080fd5b80638da5cb5b1461067357806395d89b41146106a057806398118cb4146106b557600080fd5b80632b112e49116102745780634460d3cf1161021d5780636ddd1713116101f75780636ddd17131461060057806370a082311461061a57806370fbc7121461064757806379426c061461065d57600080fd5b80634460d3cf146105aa578063658d4b7f146105ca5780636b67c4df146105ea57600080fd5b80633b2d081c1161024e5780633b2d081c1461054e5780633f4218e014610564578063414683a81461059457600080fd5b80632b112e49146104d65780632f54bf6e146104eb578063313ce5671461052757600080fd5b806318160ddd116102d65780631fbe1979116102b05780631fbe19791461044f57806323b872dd14610464578063264d26dd1461048457600080fd5b806318160ddd146104015780631ab33ba1146104175780631df4ccfc1461043957600080fd5b80630ec4c619116103075780630ec4c619146103b457806317e1df5b146103cb578063180b0d7e146103eb57600080fd5b80630445b6671461033957806306fdde0314610362578063095ea7b31461038457600080fd5b3661033457005b600080fd5b34801561034557600080fd5b5061034f601b5481565b6040519081526020015b60405180910390f35b34801561036e57600080fd5b50610377610a13565b6040516103599190612b35565b34801561039057600080fd5b506103a461039f366004612bab565b610aa1565b6040519015158152602001610359565b3480156103c057600080fd5b506103c9610b1b565b005b3480156103d757600080fd5b506103c96103e6366004612bd7565b610bce565b3480156103f757600080fd5b5061034f60115481565b34801561040d57600080fd5b5061034f60055481565b34801561042357600080fd5b5061042c610c76565b6040516103599190612c5a565b34801561044557600080fd5b5061034f60105481565b34801561045b57600080fd5b506103c9610ce5565b34801561047057600080fd5b506103a461047f366004612c6d565b610d83565b34801561049057600080fd5b506012546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b3480156104e257600080fd5b5061034f610e2d565b3480156104f757600080fd5b506103a4610506366004612cae565b60015473ffffffffffffffffffffffffffffffffffffffff91821691161490565b34801561053357600080fd5b5061053c600481565b60405160ff9091168152602001610359565b34801561055a57600080fd5b5061034f600d5481565b34801561057057600080fd5b506103a461057f366004612cae565b600b6020526000908152604090205460ff1681565b3480156105a057600080fd5b5061034f601a5481565b3480156105b657600080fd5b506103c96105c5366004612cae565b610e9d565b3480156105d657600080fd5b506103c96105e5366004612ce0565b611131565b3480156105f657600080fd5b5061034f600e5481565b34801561060c57600080fd5b50601c546103a49060ff1681565b34801561062657600080fd5b5061034f610635366004612cae565b60086020526000908152604090205481565b34801561065357600080fd5b5061034f60065481565b34801561066957600080fd5b5061034f60195481565b34801561067f57600080fd5b506001546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106ac57600080fd5b50610377611200565b3480156106c157600080fd5b5061034f600f5481565b3480156106d757600080fd5b506103c96106e6366004612cae565b61120d565b3480156106f757600080fd5b506103c9610706366004612d15565b6113d7565b34801561071757600080fd5b506013546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561074457600080fd5b506103a4610753366004612bab565b6114a3565b34801561076457600080fd5b506103a4610773366004612cae565b600c6020526000908152604090205460ff1681565b34801561079457600080fd5b506103c96107a3366004612cae565b6114b0565b3480156107b457600080fd5b506104b16107c3366004612d4e565b611580565b3480156107d457600080fd5b506103c96107e3366004612d67565b6115b7565b3480156107f457600080fd5b506017546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082157600080fd5b506016546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b34801561084e57600080fd5b506103c961085d366004612e63565b6116ee565b34801561086e57600080fd5b506103c961087d366004612ec7565b611780565b34801561088e57600080fd5b506103c961089d366004612ce0565b611987565b3480156108ae57600080fd5b5061034f6108bd366004612d15565b600960209081526000928352604080842090915290825290205481565b3480156108e657600080fd5b506103a46108f5366004612cae565b600a6020526000908152604090205460ff1681565b34801561091657600080fd5b5061034f60075481565b34801561092c57600080fd5b506103c961093b366004612cae565b611a56565b34801561094c57600080fd5b506103c961095b366004612cae565b611b23565b34801561096c57600080fd5b506103c961097b366004612d67565b611c52565b34801561098c57600080fd5b506015546104b19073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109b957600080fd5b506103c96109c8366004612cae565b611d64565b3480156109d957600080fd5b506103a46109e8366004612cae565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60038054610a2090612efa565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90612efa565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b505050505081565b33600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b099086815260200190565b60405180910390a35060015b92915050565b3360009081526020819052604090205460ff16610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a454400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000600d819055603c600f8190556028600e81905591610bb99190612f7c565b610bc39190612f7c565b6010556103e8601155565b3360009081526020819052604090205460ff16610c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b600d849055600f839055600e82905581610c618486612f7c565b610c6b9190612f7c565b601055601155505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610cdb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610cb0575b5050505050905090565b3360009081526020819052604090205460ff16610d5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b601354610d819073ffffffffffffffffffffffffffffffffffffffff1647611f29565b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e1757610de58382612f8f565b73ffffffffffffffffffffffffffffffffffffffff861660009081526009602090815260408083203384529091529020555b610e22858585611f9e565b9150505b9392505050565b60086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75461dead60009081527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429954600554919291610e8e9190612f8f565b610e989190612f8f565b905090565b3360009081526020819052604090205460ff16610f16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b3073ffffffffffffffffffffffffffffffffffffffff821603610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b60405130602482015260009073ffffffffffffffffffffffffffffffffffffffff831690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a08231000000000000000000000000000000000000000000000000000000001790525161103f9190612fa2565b6000604051808303816000865af19150503d806000811461107c576040519150601f19603f3d011682016040523d82523d6000602084013e611081565b606091505b5091505060008180602001905181019061109b9190612fbe565b905060008111611107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f20746f6b656e7300000000000000000000000000000000000000000000006044820152606401610b90565b60135461112c90849073ffffffffffffffffffffffffffffffffffffffff1683612239565b505050565b3360009081526020819052604090205460ff166111aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60048054610a2090612efa565b3360009081526020819052604090205460ff16611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6016546040517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152306024830152600092169063c9c65396906044016020604051808303816000875af11580156112ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190612fd7565b60175473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556018805491820181559091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e018054919092167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161790555050565b3360009081526020819052604090205460ff16611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6012805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560138054929093169116179055565b6000610e26338484611f9e565b60015473ffffffffffffffffffffffffffffffffffffffff163314611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6018818154811061159057600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b3360009081526020819052604090205460ff16611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b6005821015801561164357506103e88111155b6116ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d61782077616c6c6574206d7573742062652067726561746572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610b90565b80826005546116dd9190612ff4565b6116e7919061300b565b6007555050565b3360009081526020819052604090205460ff16611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b60036117738382613094565b50600461112c8282613094565b3360009081526020819052604090205460ff166117f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b612710600554601961180b9190612ff4565b611815919061300b565b8211156118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f536d616c6c2073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610b90565b6103e860055460056118b69190612ff4565b6118c0919061300b565b81111561194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4c617267652073776170207468726573686f6c64206d757374206265206c6f7760448201527f65720000000000000000000000000000000000000000000000000000000000006064820152608401610b90565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001693151593909317909255601955601a55565b3360009081526020819052604090205460ff16611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60015473ffffffffffffffffffffffffffffffffffffffff163314611ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f214f574e455200000000000000000000000000000000000000000000000000006044820152606401610b90565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556000818152602081815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909417909355519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b3360009081526020819052604090205460ff16611ccb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b60018210158015611cde57506103e88111155b611d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d6178207478206d7573742062652067726561746572207468616e20302e31256044820152606401610b90565b8082600554611d539190612ff4565b611d5d919061300b565b6006555050565b3360009081526020819052604090205460ff16611ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21415554484f52495a45440000000000000000000000000000000000000000006044820152606401610b90565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090205460ff1615611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b3073ffffffffffffffffffffffffffffffffffffffff821603611ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b909060208082526004908201527f53544f5000000000000000000000000000000000000000000000000000000000604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260086020526040902054611f2590829061dead906122f8565b5050565b600080600080600085875af190508061112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610b90565b6000611fab601454151590565b158015611fdd575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff165b156120c45773ffffffffffffffffffffffffffffffffffffffff841660009081526008602052604090205461201157600080fd5b60015473ffffffffffffffffffffffffffffffffffffffff8581169116146120bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f6e6c7920746865206f776e65722063616e206265207468652066697273742060448201527f746f20616464206c69717569646974792e0000000000000000000000000000006064820152608401610b90565b6120c443601455565b601c54610100900460ff16156120e6576120df8484846122f8565b9050610e26565b6120f18484846123a5565b6120f96125c8565b15612107576121078361262c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600860205260408120805484929061213c908490612f8f565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054829060ff168061219c575073ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090205460ff165b156121c3576121ab8585612a0e565b6121b557826121c0565b6121c0858585612a7d565b90505b73ffffffffffffffffffffffffffffffffffffffff808516600081815260086020526040908190208054850190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122269085815260200190565b60405180910390a3506001949350505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806122f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610b90565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081208054839190839061232f908490612f8f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260086020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123939086815260200190565b60405180910390a35060019392505050565b6006548111158061240b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff16801561240b575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff165b8061243b575073ffffffffffffffffffffffffffffffffffffffff83166000908152600c602052604090205460ff165b6124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5452414e53414354494f4e5f4c494d49545f45584345454445440000000000006044820152606401610b90565b60015473ffffffffffffffffffffffffffffffffffffffff8381169116148015906124f2575073ffffffffffffffffffffffffffffffffffffffff82166000908152600c602052604090205460ff16155b8015612524575073ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16155b1561112c5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205461255a908390612f7c565b90506007548111156122f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57414c4c45545f4c494d49545f455843454544454400000000000000000000006044820152606401610b90565b336000908152600a602052604081205460ff161580156125f05750601c54610100900460ff16155b80156125fe5750601c5460ff165b801561260c57506000601054115b8015610e98575050601b5430600090815260086020526040902054101590565b601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560175473ffffffffffffffffffffffffffffffffffffffff908116908216036129c95760006002601054600f54601b546126929190612ff4565b61269c919061300b565b6126a6919061300b565b9050600081601b546126b89190612f8f565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106126f2576126f26131ae565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600254825191169082906001908110612730576127306131ae565b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152601554600091165a63791ac94785600086304260405160240161277a9594939291906131dd565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127c89190612fa2565b60006040518083038160008787f1925050503d8060008114612806576040519150601f19603f3d011682016040523d82523d6000602084013e61280b565b606091505b50909150479050600061281f60038361300b565b9050851561299f5760155473ffffffffffffffffffffffffffffffffffffffff165a60125460408051306024820152604481018b9052600060648201819052608482015273ffffffffffffffffffffffffffffffffffffffff90921660a48301524260c4808401919091528151808403909101815260e490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff305d719000000000000000000000000000000000000000000000000000000001790525184916128ef91612fa2565b600060405180830381858888f193505050503d806000811461292d576040519150601f19603f3d011682016040523d82523d6000602084013e612932565b606091505b5050809350508261299f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f535741504241434b5f4641494c454400000000000000000000000000000000006044820152606401610b90565b6013546129c29073ffffffffffffffffffffffffffffffffffffffff1647611f29565b5050505050505b601954601b54146129dc576019546129e0565b601a545b601b5550601c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604081205460ff16158015612a6a575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff16155b8015610e26575050601054151592915050565b6011546010546000918291612a929085612ff4565b612a9c919061300b565b3060008181526008602052604090819020805484019055519192509073ffffffffffffffffffffffffffffffffffffffff8716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612aff9085815260200190565b60405180910390a3610e228184612f8f565b60005b83811015612b2c578181015183820152602001612b14565b50506000910152565b6020815260008251806020840152612b54816040850160208701612b11565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ba857600080fd5b50565b60008060408385031215612bbe57600080fd5b8235612bc981612b86565b946020939093013593505050565b60008060008060808587031215612bed57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612c4f57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612c1d565b509495945050505050565b602081526000610e266020830184612c09565b600080600060608486031215612c8257600080fd5b8335612c8d81612b86565b92506020840135612c9d81612b86565b929592945050506040919091013590565b600060208284031215612cc057600080fd5b8135610e2681612b86565b80358015158114612cdb57600080fd5b919050565b60008060408385031215612cf357600080fd5b8235612cfe81612b86565b9150612d0c60208401612ccb565b90509250929050565b60008060408385031215612d2857600080fd5b8235612d3381612b86565b91506020830135612d4381612b86565b809150509250929050565b600060208284031215612d6057600080fd5b5035919050565b60008060408385031215612d7a57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612dc957600080fd5b813567ffffffffffffffff80821115612de457612de4612d89565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612e2a57612e2a612d89565b81604052838152866020858801011115612e4357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215612e7657600080fd5b823567ffffffffffffffff80821115612e8e57600080fd5b612e9a86838701612db8565b93506020850135915080821115612eb057600080fd5b50612ebd85828601612db8565b9150509250929050565b600080600060608486031215612edc57600080fd5b612ee584612ccb565b95602085013595506040909401359392505050565b600181811c90821680612f0e57607f821691505b602082108103612f47577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b1557610b15612f4d565b81810381811115610b1557610b15612f4d565b60008251612fb4818460208701612b11565b9190910192915050565b600060208284031215612fd057600080fd5b5051919050565b600060208284031215612fe957600080fd5b8151610e2681612b86565b8082028115828204841417610b1557610b15612f4d565b600082613041577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b601f82111561112c57600081815260208120601f850160051c8101602086101561306d5750805b601f850160051c820191505b8181101561308c57828155600101613079565b505050505050565b815167ffffffffffffffff8111156130ae576130ae612d89565b6130c2816130bc8454612efa565b84613046565b602080601f83116001811461311557600084156130df5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561308c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561316257888601518255948401946001909101908401613143565b508582101561319e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815260ff8516602082015260a0604082015260006131ff60a0830186612c09565b73ffffffffffffffffffffffffffffffffffffffff9490941660608301525060800152939250505056fea264697066735822122039537d211b3db424899a609da296ea561990c9e8de36e1f69c0caa586ec554e364736f6c63430008110033

Deployed Bytecode Sourcemap

2557:14944:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4179:49;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4179:49:0;;;;;;;;2927:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6933:223::-;;;;;;;;;;-1:-1:-1;6933:223:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;6933:223:0;1390:187:1;11919:265:0;;;;;;;;;;;;;:::i;:::-;;12192:446;;;;;;;;;;-1:-1:-1;12192:446:0;;;;;:::i;:::-;;:::i;3755:36::-;;;;;;;;;;;;;;;;3049:59;;;;;;;;;;;;;;;;17135:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3725:23::-;;;;;;;;;;;;;;;;16352:130;;;;;;;;;;;;;:::i;7325:324::-;;;;;;;;;;-1:-1:-1;7325:324:0;;;;;:::i;:::-;;:::i;3813:32::-;;;;;;;;;;-1:-1:-1;3813:32:0;;;;;;;;;;;3364:42:1;3352:55;;;3334:74;;3322:2;3307:18;3813:32:0;3188:226:1;6236:135:0;;;;;;;;;;;;;:::i;1847:103::-;;;;;;;;;;-1:-1:-1;1847:103:0;;;;;:::i;:::-;1937:5;;;1926:16;;;1937:5;;1926:16;;1847:103;3006:34;;;;;;;;;;;;3039:1;3006:34;;;;;3843:4:1;3831:17;;;3813:36;;3801:2;3786:18;3006:34:0;3671:184:1;3575:29:0;;;;;;;;;;;;;;;;3465:44;;;;;;;;;;-1:-1:-1;3465:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4111:53;;;;;;;;;;;;;;;;16490:415;;;;;;;;;;-1:-1:-1;16490:415:0;;;;;:::i;:::-;;:::i;10560:120::-;;;;;;;;;;-1:-1:-1;10560:120:0;;;;;:::i;:::-;;:::i;3625:32::-;;;;;;;;;;;;;;;;4235:30;;;;;;;;;;-1:-1:-1;4235:30:0;;;;;;;;3297:44;;;;;;;;;;-1:-1:-1;3297:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;3115:47;;;;;;;;;;;;;;;;4043:54;;;;;;;;;;;;;;;;1276:20;;;;;;;;;;-1:-1:-1;1276:20:0;;;;;;;;2970:29;;;;;;;;;;;;;:::i;3675:32::-;;;;;;;;;;;;;;;;16913:214;;;;;;;;;;-1:-1:-1;16913:214:0;;;;;:::i;:::-;;:::i;12646:221::-;;;;;;;;;;-1:-1:-1;12646:221:0;;;;;:::i;:::-;;:::i;3852:32::-;;;;;;;;;;-1:-1:-1;3852:32:0;;;;;;;;7164:153;;;;;;;;;;-1:-1:-1;7164:153:0;;;;;:::i;:::-;;:::i;3516:46::-;;;;;;;;;;-1:-1:-1;3516:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;1640:94;;;;;;;;;;-1:-1:-1;1640:94:0;;;;;:::i;:::-;;:::i;4012:22::-;;;;;;;;;;-1:-1:-1;4012:22:0;;;;;:::i;:::-;;:::i;10307:245::-;;;;;;;;;;-1:-1:-1;10307:245:0;;;;;:::i;:::-;;:::i;3981:24::-;;;;;;;;;;-1:-1:-1;3981:24:0;;;;;;;;3952:22;;;;;;;;;;-1:-1:-1;3952:22:0;;;;;;;;16189:158;;;;;;;;;;-1:-1:-1;16189:158:0;;;;;:::i;:::-;;:::i;15254:550::-;;;;;;;;;;-1:-1:-1;15254:550:0;;;;;:::i;:::-;;:::i;10688:124::-;;;;;;;;;;-1:-1:-1;10688:124:0;;;;;:::i;:::-;;:::i;3348:64::-;;;;;;;;;;-1:-1:-1;3348:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3419:39;;;;;;;;;;-1:-1:-1;3419:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3205:51;;;;;;;;;;;;;;;;1742:97;;;;;;;;;;-1:-1:-1;1742:97:0;;;;;:::i;:::-;;:::i;2073:173::-;;;;;;;;;;-1:-1:-1;2073:173:0;;;;;:::i;:::-;;:::i;10061:234::-;;;;;;;;;;-1:-1:-1;10061:234:0;;;;;:::i;:::-;;:::i;3924:21::-;;;;;;;;;;-1:-1:-1;3924:21:0;;;;;;;;17235:263;;;;;;;;;;-1:-1:-1;17235:263:0;;;;;:::i;:::-;;:::i;1958:107::-;;;;;;;;;;-1:-1:-1;1958:107:0;;;;;:::i;:::-;2038:19;;2014:4;2038:19;;;;;;;;;;;;;;1958:107;2927:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6933:223::-;7034:10;7007:4;7024:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;7089:37;7007:4;;7024:30;;7089:37;;;;7057:6;160:25:1;;148:2;133:18;;14:177;7089:37:0;;;;;;;;-1:-1:-1;7144:4:0;6933:223;;;;;:::o;11919:265::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;;;;;;;;;11984:1:::1;11971:10;:14:::0;;;12024:2:::1;12009:12;:17:::0;;;12062:2:::1;12047:12;:17:::0;;;12062:2;12096:25:::1;::::0;12024:2;12096:25:::1;:::i;:::-;:40;;;;:::i;:::-;12085:8;:51:::0;12164:4:::1;12147:14;:21:::0;11919:265::o;12192:446::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;12335:10:::1;:24:::0;;;12370:12:::1;:28:::0;;;12409:12:::1;:28:::0;;;12424:13;12459:27:::1;12385:13:::0;12348:11;12459:27:::1;:::i;:::-;:43;;;;:::i;:::-;12448:8;:54:::0;12513:14:::1;:32:::0;-1:-1:-1;;;12192:446:0:o;17135:92::-;17179:16;17214:5;17207:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17135:92;:::o;16352:130::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;16433:17:::1;::::0;16401:73:::1;::::0;16433:17:::1;;16452:21;16401:31;:73::i;:::-;16352:130::o:0;7325:324::-;7457:17;;;7422:4;7457:17;;;:9;:17;;;;;;;;7475:10;7457:29;;;;;;;;7514:17;7503:28;;7499:82;;7565:16;7575:6;7565:7;:16;:::i;:::-;7533:17;;;;;;;:9;:17;;;;;;;;7551:10;7533:29;;;;;;;:48;7499:82;7601:40;7615:6;7623:9;7634:6;7601:13;:40::i;:::-;7594:47;;;7325:324;;;;;;:::o;6236:135::-;6348:9;:15;;;;2803:42;6289:7;6330:15;;;;;6316:11;;6289:7;;6348:15;6316:29;;6330:15;6316:29;:::i;:::-;:47;;;;:::i;:::-;6309:54;;6236:135;:::o;16490:415::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;16584:4:::1;16566:23;::::0;::::1;::::0;16558:40:::1;;;;;;;;;;;8713:2:1::0;8695:21;;;8752:1;8732:18;;;8725:29;8790:6;8785:2;8770:18;;8763:34;8829:2;8814:18;;8511:327;16558:40:0::1;16659:60;::::0;16713:4:::1;16659:60;::::0;::::1;3334:74:1::0;16614:20:0::1;::::0;16638::::1;::::0;::::1;::::0;3307:18:1;;16659:60:0::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;16638:82;::::1;::::0;16659:60;16638:82:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16611:109;;;16731:14;16759:7;16748:30;;;;;;;;;;;;:::i;:::-;16731:47;;16808:1;16799:6;:10;16791:32;;;::::0;::::1;::::0;;9526:2:1;16791:32:0::1;::::0;::::1;9508:21:1::0;9565:1;9545:18;;;9538:29;9603:11;9583:18;;;9576:39;9632:18;;16791:32:0::1;9324:332:1::0;16791:32:0::1;16871:17;::::0;16834:63:::1;::::0;16863:6;;16871:17:::1;;16890:6:::0;16834:28:::1;:63::i;:::-;16547:358;;16490:415:::0;:::o;10560:120::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;10644:19:::1;::::0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10560:120::o;2970:29::-;;;;;;;:::i;16913:214::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;17010:7:::1;::::0;16998:53:::1;::::0;;;;17010:7:::1;9914:15:1::0;;;16998:53:0::1;::::0;::::1;9896:34:1::0;17045:4:0::1;9946:18:1::0;;;9939:43;16979:16:0::1;::::0;17010:7:::1;::::0;16998:31:::1;::::0;9808:18:1;;16998:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17069:9;::::0;::::1;::::0;;::::1;17062:17;::::0;;;:6:::1;:17;::::0;;;;:24;;;::::1;17082:4;17062:24:::0;;::::1;::::0;;;17099:5:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;;16913:214:0:o;12646:221::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;12765:17:::1;:42:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;12818:17:::1;:41:::0;;;;;::::1;::::0;::::1;;::::0;;12646:221::o;7164:153::-;7241:4;7265:44;7279:10;7291:9;7302:6;7265:13;:44::i;1640:94::-;1466:5;;;;1452:10;:19;1444:38;;;;;;;10451:2:1;1444:38:0;;;10433:21:1;10490:1;10470:18;;;10463:29;10528:8;10508:18;;;10501:36;10554:18;;1444:38:0;10249:329:1;1444:38:0;1700:19:::1;;:14;:19:::0;;;::::1;::::0;;;;;;:26;;;::::1;1722:4;1700:26;::::0;;1640:94::o;4012:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4012:22:0;:::o;10307:245::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;10420:1:::1;10409:7;:12;;:35;;;;;10440:4;10425:11;:19;;10409:35;10401:84;;;::::0;::::1;::::0;;10785:2:1;10401:84:0::1;::::0;::::1;10767:21:1::0;10824:2;10804:18;;;10797:30;10863:34;10843:18;;;10836:62;10934:6;10914:18;;;10907:34;10958:19;;10401:84:0::1;10583:400:1::0;10401:84:0::1;10533:11;10523:7;10509:11;;:21;;;;:::i;:::-;:35;;;;:::i;:::-;10496:10;:48:::0;-1:-1:-1;;10307:245:0:o;16189:158::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;16296:4:::1;:14;16303:7:::0;16296:4;:14:::1;:::i;:::-;-1:-1:-1::0;16321:6:0::1;:18;16330:9:::0;16321:6;:18:::1;:::i;15254:550::-:0;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;15416:5:::1;15397:11;;15411:2;15397:16;;;;:::i;:::-;:24;;;;:::i;:::-;15381:12;:40;;15373:87;;;::::0;::::1;::::0;;14025:2:1;15373:87:0::1;::::0;::::1;14007:21:1::0;14064:2;14044:18;;;14037:30;14103:34;14083:18;;;14076:62;14174:4;14154:18;;;14147:32;14196:19;;15373:87:0::1;13823:398:1::0;15373:87:0::1;15571:4;15553:11;;15567:1;15553:15;;;;:::i;:::-;:22;;;;:::i;:::-;15537:12;:38;;15529:85;;;::::0;::::1;::::0;;14428:2:1;15529:85:0::1;::::0;::::1;14410:21:1::0;14467:2;14447:18;;;14440:30;14506:34;14486:18;;;14479:62;14577:4;14557:18;;;14550:32;14599:19;;15529:85:0::1;14226:398:1::0;15529:85:0::1;15686:11;:22:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;15719:18:::1;:33:::0;15763:18:::1;:33:::0;15254:550::o;10688:124::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;10774:21:::1;::::0;;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:30;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10688:124::o;1742:97::-;1466:5;;;;1452:10;:19;1444:38;;;;;;;10451:2:1;1444:38:0;;;10433:21:1;10490:1;10470:18;;;10463:29;10528:8;10508:18;;;10501:36;10554:18;;1444:38:0;10249:329:1;1444:38:0;1804:19:::1;;1826:5;1804:19:::0;;;::::1;::::0;;;;;;:27;;;::::1;::::0;;1742:97::o;2073:173::-;1466:5;;;;1452:10;:19;1444:38;;;;;;;10451:2:1;1444:38:0;;;10433:21:1;10490:1;10470:18;;;10463:29;10528:8;10508:18;;;10501:36;10554:18;;1444:38:0;10249:329:1;1444:38:0;2149:5:::1;:11:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;2171:19:0;;;::::1;::::0;;;;;;;;:26;;;::::1;::::0;;::::1;::::0;;;2213:25;3334:74:1;;;2213:25:0::1;::::0;3307:18:1;2213:25:0::1;;;;;;;2073:173:::0;:::o;10061:234::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;10171:1:::1;10160:7;:12;;:35;;;;;10191:4;10176:11;:19;;10160:35;10152:80;;;::::0;::::1;::::0;;15070:2:1;10152:80:0::1;::::0;::::1;15052:21:1::0;;;15089:18;;;15082:30;15148:34;15128:18;;;15121:62;15200:18;;10152:80:0::1;14868:356:1::0;10152:80:0::1;10276:11;10266:7;10252:11;;:21;;;;:::i;:::-;:35;;;;:::i;:::-;10243:6;:44:::0;-1:-1:-1;;10061:234:0:o;17235:263::-;1574:10;2014:4;2038:19;;;;;;;;;;;;;1553:48;;;;;;;7921:2:1;1553:48:0;;;7903:21:1;7960:2;7940:18;;;7933:30;7999:13;7979:18;;;7972:41;8030:18;;1553:48:0;7719:335:1;1553:48:0;17318:21:::1;::::0;::::1;;::::0;;;:6:::1;:21;::::0;;;;;::::1;;17317:22;17309:40;;;;;;;;;;;8713:2:1::0;8695:21;;;8752:1;8732:18;;;8725:29;8790:6;8785:2;8770:18;;8763:34;8829:2;8814:18;;8511:327;17309:40:0::1;17393:4;17368:30;::::0;::::1;::::0;17360:48:::1;;;;;;;;;;;8713:2:1::0;8695:21;;;8752:1;8732:18;;;8725:29;8790:6;8785:2;8770:18;;8763:34;8829:2;8814:18;;8511:327;17360:48:0::1;17465:24;::::0;::::1;;::::0;;;:9:::1;:24;::::0;;;;;17429:61:::1;::::0;17444:13;;2803:42:::1;::::0;17429:14:::1;:61::i;:::-;;17235:263:::0;:::o;225:238::-;298:12;391:1;388;385;382;374:6;370:2;363:5;358:35;347:46;;424:7;416:39;;;;;;;15431:2:1;416:39:0;;;15413:21:1;15470:2;15450:18;;;15443:30;15509:21;15489:18;;;15482:49;15548:18;;416:39:0;15229:343:1;7657:1047:0;7749:4;7771:10;6446;;:15;;;6379:90;7771:10;7770:11;:32;;;;-1:-1:-1;7785:17:0;;;;;;;:6;:17;;;;;;;;7770:32;7766:210;;;7827:17;;;7847:1;7827:17;;;:9;:17;;;;;;7819:30;;;;;;7882:5;;;7872:15;;;7882:5;;7872:15;7864:77;;;;;;;15779:2:1;7864:77:0;;;15761:21:1;15818:2;15798:18;;;15791:30;15857:34;15837:18;;;15830:62;15928:19;15908:18;;;15901:47;15965:19;;7864:77:0;15577:413:1;7864:77:0;7956:8;6528:12;6515:10;:25;6477:71;7956:8;7990:6;;;;;;;7986:60;;;8005:41;8020:6;8028:9;8039:6;8005:14;:41::i;:::-;7998:48;;;;7986:60;8059:39;8072:6;8080:9;8091:6;8059:12;:39::i;:::-;8113:16;:14;:16::i;:::-;8109:41;;;8131:19;8140:9;8131:8;:19::i;:::-;8163:17;;;;;;;:9;:17;;;;;:27;;8184:6;;8163:17;:27;;8184:6;;8163:27;:::i;:::-;;;;-1:-1:-1;;8257:14:0;;;8201:22;8257:14;;;:6;:14;;;;;;8226:6;;8257:14;;;:35;;-1:-1:-1;8275:17:0;;;;;;;:6;:17;;;;;;;;8257:35;8253:163;;;8326:32;8340:6;8348:9;8326:13;:32::i;:::-;:78;;8398:6;8326:78;;;8361:34;8369:6;8377:9;8388:6;8361:7;:34::i;:::-;8309:95;;8253:163;8564:20;;;;;;;;:9;:20;;;;;;;:38;;;;;;8631:43;8564:20;;8631:43;;;;;;;8588:14;160:25:1;;148:2;133:18;;14:177;8631:43:0;;;;;;;;-1:-1:-1;8692:4:0;;7657:1047;-1:-1:-1;;;;7657:1047:0:o;471:662::-;556:12;636:4;630:11;683:66;664:17;657:93;798:2;794:1;775:17;771:25;764:37;850:6;845:2;826:17;822:26;815:42;1049:2;1046:1;1042:2;1023:17;1020:1;1013:5;1006;1001:51;964:16;957:24;951:2;933:16;930:24;926:1;922;916:8;913:15;909:46;906:76;884:183;873:194;;;1098:7;1090:35;;;;;;;16197:2:1;1090:35:0;;;16179:21:1;16236:2;16216:18;;;16209:30;16275:17;16255:18;;;16248:45;16310:18;;1090:35:0;15995:339:1;1090:35:0;545:588;471:662;;;:::o;8712:416::-;8822:17;;;8805:4;8822:17;;;:9;:17;;;;;:27;;8843:6;;8822:17;8805:4;;8822:27;;8843:6;;8822:27;:::i;:::-;;;;-1:-1:-1;;9000:20:0;;;;;;;:9;:20;;;;;;;:30;;;;;;9059:39;9068:10;;9059:39;;;;9024:6;160:25:1;;148:2;133:18;;14:177;9059:39:0;;;;;;;;-1:-1:-1;9116:4:0;8712:416;;;;;:::o;9513:540::-;9661:6;;9651;:16;;:62;;;-1:-1:-1;9671:14:0;;;;;;;:6;:14;;;;;;;;:42;;;;-1:-1:-1;9689:24:0;;;;;;;:13;:24;;;;;;;;9671:42;9651:87;;;-1:-1:-1;9717:21:0;;;;;;;:13;:21;;;;;;;;9651:87;9643:126;;;;;;;16541:2:1;9643:126:0;;;16523:21:1;16580:2;16560:18;;;16553:30;16619:28;16599:18;;;16592:56;16665:18;;9643:126:0;16339:350:1;9643:126:0;9838:5;;;9825:18;;;9838:5;;9825:18;;;;:47;;-1:-1:-1;9848:24:0;;;;;;;:13;:24;;;;;;;;9847:25;9825:47;:69;;;;-1:-1:-1;9877:17:0;;;;;;;:6;:17;;;;;;;;9876:18;9825:69;9821:225;;;9932:20;;;9911:18;9932:20;;;:9;:20;;;;;;:29;;9955:6;;9932:29;:::i;:::-;9911:50;;9998:10;;9984;:24;;9976:58;;;;;;;16896:2:1;9976:58:0;;;16878:21:1;16935:2;16915:18;;;16908:30;16974:23;16954:18;;;16947:51;17015:18;;9976:58:0;16694:345:1;13252:187:0;13333:10;13301:4;13326:18;;;:6;:18;;;;;;;;13325:19;:30;;;;-1:-1:-1;13349:6:0;;;;;;;13348:7;13325:30;:45;;;;-1:-1:-1;13359:11:0;;;;13325:45;:61;;;;;13385:1;13374:8;;:12;13325:61;:106;;;;-1:-1:-1;;13418:13:0;;13408:4;13390:24;;;;:9;:24;;;;;;:41;;;13252:187::o;13447:1799::-;4312:6;:13;;;;;;;;13536:9:::1;::::0;::::1;::::0;;::::1;13520:25:::0;;::::1;::::0;13516:1617:::1;;13562:23;13630:1;13619:8;;13604:12;;13588:13;;:28;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13562:69;;13646:20;13685:15;13669:13;;:31;;;;:::i;:::-;13741:16;::::0;;13755:1:::1;13741:16:::0;;;;;::::1;::::0;;13646:54;;-1:-1:-1;13717:21:0::1;::::0;13741:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13741:16:0::1;13717:40;;13790:4;13772;13777:1;13772:7;;;;;;;;:::i;:::-;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13820:4:::1;::::0;13810:7;;13820:4;::::1;::::0;13810;;13820;;13810:7;::::1;;;;;:::i;:::-;:14;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;13859:6:::1;::::0;13842:12:::1;::::0;13859:6:::1;13877:9;14064:10;14097:12;14132:1;14156:4;14191;14219:15;14019:234;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13859:409;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;13841:427:0;;-1:-1:-1;14305:21:0::1;::::0;-1:-1:-1;14285:17:0::1;14370:13;14382:1;14305:21:::0;14370:13:::1;:::i;:::-;14341:42:::0;-1:-1:-1;14416:19:0;;14412:620:::1;;14469:6;::::0;::::1;;14487:9;14859:17;::::0;14635:306:::1;::::0;;14729:4:::1;14635:306;::::0;::::1;18212:34:1::0;18262:18;;;18255:34;;;-1:-1:-1;18305:18:1;;;18298:45;;;18359:18;;;18352:45;14859:17:0::1;::::0;;::::1;18413:19:1::0;;;18406:44;14903:15:0::1;18466:19:1::0;;;;18459:35;;;;14635:306:0;;;;;;;;;;18123:19:1;;;;14635:306:0;;::::1;::::0;::::1;::::0;;::::1;;::::0;::::1;::::0;;14469:491;14505:18;;14469:491:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14456:504;;;;;14989:7;14981:35;;;::::0;::::1;::::0;;18707:2:1;14981:35:0::1;::::0;::::1;18689:21:1::0;18746:2;18726:18;;;18719:30;18785:17;18765:18;;;18758:45;18820:18;;14981:35:0::1;18505:339:1::0;14981:35:0::1;15080:17;::::0;15048:73:::1;::::0;15080:17:::1;;15099:21;15048:31;:73::i;:::-;13547:1586;;;;;;13516:1617;15178:18;;15161:13;;:35;:77;;15220:18;;15161:77;;;15199:18;;15161:77;15145:13;:93:::0;-1:-1:-1;4330:6:0;:14;;;;;;13447:1799::o;11201:176::-;11307:19;;;11282:4;11307:19;;;:11;:19;;;;;;;;11306:20;:47;;;;-1:-1:-1;11331:22:0;;;;;;;:11;:22;;;;;;;;11330:23;11306:47;:63;;;;-1:-1:-1;;11357:8:0;;:12;;;11201:176;-1:-1:-1;;11201:176:0:o;11385:526::-;11586:14;;11575:8;;11470:7;;;;11566:17;;:6;:17;:::i;:::-;:34;;;;:::i;:::-;11777:4;11759:24;;;;:9;:24;;;;;;;:37;;;;;;11825:42;11554:46;;-1:-1:-1;11777:4:0;11759:24;11825:42;;;;;;;11554:46;160:25:1;;148:2;133:18;;14:177;11825:42:0;;;;;;;;11885:18;11894:9;11885:6;:18;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:455::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;822:2;810:15;827:66;806:88;791:104;;;;897:2;787:113;;451:455;-1:-1:-1;;451:455:1:o;911:154::-;997:42;990:5;986:54;979:5;976:65;966:93;;1055:1;1052;1045:12;966:93;911:154;:::o;1070:315::-;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:385::-;1668:6;1676;1684;1692;1745:3;1733:9;1724:7;1720:23;1716:33;1713:53;;;1762:1;1759;1752:12;1713:53;-1:-1:-1;;1785:23:1;;;1855:2;1840:18;;1827:32;;-1:-1:-1;1906:2:1;1891:18;;1878:32;;1957:2;1942:18;1929:32;;-1:-1:-1;1582:385:1;-1:-1:-1;1582:385:1:o;1972:484::-;2025:3;2063:5;2057:12;2090:6;2085:3;2078:19;2116:4;2145:2;2140:3;2136:12;2129:19;;2182:2;2175:5;2171:14;2203:1;2213:218;2227:6;2224:1;2221:13;2213:218;;;2292:13;;2307:42;2288:62;2276:75;;2371:12;;;;2406:15;;;;2249:1;2242:9;2213:218;;;-1:-1:-1;2447:3:1;;1972:484;-1:-1:-1;;;;;1972:484:1:o;2461:261::-;2640:2;2629:9;2622:21;2603:4;2660:56;2712:2;2701:9;2697:18;2689:6;2660:56;:::i;2727:456::-;2804:6;2812;2820;2873:2;2861:9;2852:7;2848:23;2844:32;2841:52;;;2889:1;2886;2879:12;2841:52;2928:9;2915:23;2947:31;2972:5;2947:31;:::i;:::-;2997:5;-1:-1:-1;3054:2:1;3039:18;;3026:32;3067:33;3026:32;3067:33;:::i;:::-;2727:456;;3119:7;;-1:-1:-1;;;3173:2:1;3158:18;;;;3145:32;;2727:456::o;3419:247::-;3478:6;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;3586:9;3573:23;3605:31;3630:5;3605:31;:::i;3860:160::-;3925:20;;3981:13;;3974:21;3964:32;;3954:60;;4010:1;4007;4000:12;3954:60;3860:160;;;:::o;4025:315::-;4090:6;4098;4151:2;4139:9;4130:7;4126:23;4122:32;4119:52;;;4167:1;4164;4157:12;4119:52;4206:9;4193:23;4225:31;4250:5;4225:31;:::i;:::-;4275:5;-1:-1:-1;4299:35:1;4330:2;4315:18;;4299:35;:::i;:::-;4289:45;;4025:315;;;;;:::o;4345:388::-;4413:6;4421;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;4529:9;4516:23;4548:31;4573:5;4548:31;:::i;:::-;4598:5;-1:-1:-1;4655:2:1;4640:18;;4627:32;4668:33;4627:32;4668:33;:::i;:::-;4720:7;4710:17;;;4345:388;;;;;:::o;4738:180::-;4797:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:52;;;4866:1;4863;4856:12;4818:52;-1:-1:-1;4889:23:1;;4738:180;-1:-1:-1;4738:180:1:o;4923:248::-;4991:6;4999;5052:2;5040:9;5031:7;5027:23;5023:32;5020:52;;;5068:1;5065;5058:12;5020:52;-1:-1:-1;;5091:23:1;;;5161:2;5146:18;;;5133:32;;-1:-1:-1;4923:248:1:o;5176:184::-;5228:77;5225:1;5218:88;5325:4;5322:1;5315:15;5349:4;5346:1;5339:15;5365:778;5408:5;5461:3;5454:4;5446:6;5442:17;5438:27;5428:55;;5479:1;5476;5469:12;5428:55;5515:6;5502:20;5541:18;5578:2;5574;5571:10;5568:36;;;5584:18;;:::i;:::-;5718:2;5712:9;5780:4;5772:13;;5623:66;5768:22;;;5792:2;5764:31;5760:40;5748:53;;;5816:18;;;5836:22;;;5813:46;5810:72;;;5862:18;;:::i;:::-;5902:10;5898:2;5891:22;5937:2;5929:6;5922:18;5983:3;5976:4;5971:2;5963:6;5959:15;5955:26;5952:35;5949:55;;;6000:1;5997;5990:12;5949:55;6064:2;6057:4;6049:6;6045:17;6038:4;6030:6;6026:17;6013:54;6111:1;6104:4;6099:2;6091:6;6087:15;6083:26;6076:37;6131:6;6122:15;;;;;;5365:778;;;;:::o;6148:543::-;6236:6;6244;6297:2;6285:9;6276:7;6272:23;6268:32;6265:52;;;6313:1;6310;6303:12;6265:52;6353:9;6340:23;6382:18;6423:2;6415:6;6412:14;6409:34;;;6439:1;6436;6429:12;6409:34;6462:50;6504:7;6495:6;6484:9;6480:22;6462:50;:::i;:::-;6452:60;;6565:2;6554:9;6550:18;6537:32;6521:48;;6594:2;6584:8;6581:16;6578:36;;;6610:1;6607;6600:12;6578:36;;6633:52;6677:7;6666:8;6655:9;6651:24;6633:52;:::i;:::-;6623:62;;;6148:543;;;;;:::o;6696:316::-;6770:6;6778;6786;6839:2;6827:9;6818:7;6814:23;6810:32;6807:52;;;6855:1;6852;6845:12;6807:52;6878:26;6894:9;6878:26;:::i;:::-;6868:36;6951:2;6936:18;;6923:32;;-1:-1:-1;7002:2:1;6987:18;;;6974:32;;6696:316;-1:-1:-1;;;6696:316:1:o;7277:437::-;7356:1;7352:12;;;;7399;;;7420:61;;7474:4;7466:6;7462:17;7452:27;;7420:61;7527:2;7519:6;7516:14;7496:18;7493:38;7490:218;;7564:77;7561:1;7554:88;7665:4;7662:1;7655:15;7693:4;7690:1;7683:15;7490:218;;7277:437;;;:::o;8059:184::-;8111:77;8108:1;8101:88;8208:4;8205:1;8198:15;8232:4;8229:1;8222:15;8248:125;8313:9;;;8334:10;;;8331:36;;;8347:18;;:::i;8378:128::-;8445:9;;;8466:11;;;8463:37;;;8480:18;;:::i;8843:287::-;8972:3;9010:6;9004:13;9026:66;9085:6;9080:3;9073:4;9065:6;9061:17;9026:66;:::i;:::-;9108:16;;;;;8843:287;-1:-1:-1;;8843:287:1:o;9135:184::-;9205:6;9258:2;9246:9;9237:7;9233:23;9229:32;9226:52;;;9274:1;9271;9264:12;9226:52;-1:-1:-1;9297:16:1;;9135:184;-1:-1:-1;9135:184:1:o;9993:251::-;10063:6;10116:2;10104:9;10095:7;10091:23;10087:32;10084:52;;;10132:1;10129;10122:12;10084:52;10164:9;10158:16;10183:31;10208:5;10183:31;:::i;10988:168::-;11061:9;;;11092;;11109:15;;;11103:22;;11089:37;11079:71;;11130:18;;:::i;11161:274::-;11201:1;11227;11217:189;;11262:77;11259:1;11252:88;11363:4;11360:1;11353:15;11391:4;11388:1;11381:15;11217:189;-1:-1:-1;11420:9:1;;11161:274::o;11566:545::-;11668:2;11663:3;11660:11;11657:448;;;11704:1;11729:5;11725:2;11718:17;11774:4;11770:2;11760:19;11844:2;11832:10;11828:19;11825:1;11821:27;11815:4;11811:38;11880:4;11868:10;11865:20;11862:47;;;-1:-1:-1;11903:4:1;11862:47;11958:2;11953:3;11949:12;11946:1;11942:20;11936:4;11932:31;11922:41;;12013:82;12031:2;12024:5;12021:13;12013:82;;;12076:17;;;12057:1;12046:13;12013:82;;;12017:3;;;11566:545;;;:::o;12347:1471::-;12473:3;12467:10;12500:18;12492:6;12489:30;12486:56;;;12522:18;;:::i;:::-;12551:97;12641:6;12601:38;12633:4;12627:11;12601:38;:::i;:::-;12595:4;12551:97;:::i;:::-;12703:4;;12767:2;12756:14;;12784:1;12779:782;;;;13605:1;13622:6;13619:89;;;-1:-1:-1;13674:19:1;;;13668:26;13619:89;12253:66;12244:1;12240:11;;;12236:84;12232:89;12222:100;12328:1;12324:11;;;12219:117;13721:81;;12749:1063;;12779:782;11513:1;11506:14;;;11550:4;11537:18;;12827:66;12815:79;;;12992:236;13006:7;13003:1;13000:14;12992:236;;;13095:19;;;13089:26;13074:42;;13187:27;;;;13155:1;13143:14;;;;13022:19;;12992:236;;;12996:3;13256:6;13247:7;13244:19;13241:261;;;13317:19;;;13311:26;13418:66;13400:1;13396:14;;;13412:3;13392:24;13388:97;13384:102;13369:118;13354:134;;13241:261;-1:-1:-1;;;;;13548:1:1;13532:14;;;13528:22;13515:36;;-1:-1:-1;12347:1471:1:o;17044:184::-;17096:77;17093:1;17086:88;17193:4;17190:1;17183:15;17217:4;17214:1;17207:15;17233:614;17530:6;17519:9;17512:25;17585:4;17577:6;17573:17;17568:2;17557:9;17553:18;17546:45;17627:3;17622:2;17611:9;17607:18;17600:31;17493:4;17648:57;17700:3;17689:9;17685:19;17677:6;17648:57;:::i;:::-;17753:42;17741:55;;;;17736:2;17721:18;;17714:83;-1:-1:-1;17828:3:1;17813:19;17806:35;17640:65;17233:614;-1:-1:-1;;;17233:614:1:o

Swarm Source

ipfs://39537d211b3db424899a609da296ea561990c9e8de36e1f69c0caa586ec554e3

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.