ETH Price: $3,362.76 (+0.45%)

Contract

0xF1Eccd41cCE1f4BEb8c5Ca87dE7949816Ce05A45
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212498972024-11-23 10:39:111 hr ago1732358351IN
Mock Capital: MOCK Token
0 ETH0.0005410711.62454587
Approve212495562024-11-23 9:30:472 hrs ago1732354247IN
Mock Capital: MOCK Token
0 ETH0.0005339211.53939912
Approve212495442024-11-23 9:28:232 hrs ago1732354103IN
Mock Capital: MOCK Token
0 ETH0.000238039.81082226
Approve212492102024-11-23 8:21:353 hrs ago1732350095IN
Mock Capital: MOCK Token
0 ETH0.0005420711.71848364
Approve212492062024-11-23 8:20:473 hrs ago1732350047IN
Mock Capital: MOCK Token
0 ETH0.0004759210.22478297
Approve212488662024-11-23 7:12:234 hrs ago1732345943IN
Mock Capital: MOCK Token
0 ETH0.00045569.84915869
Approve212485772024-11-23 6:14:355 hrs ago1732342475IN
Mock Capital: MOCK Token
0 ETH0.0004777710.26455492
Approve212468812024-11-23 0:34:1111 hrs ago1732322051IN
Mock Capital: MOCK Token
0 ETH0.0006612214.27204492
Transfer212463392024-11-22 22:45:2312 hrs ago1732315523IN
Mock Capital: MOCK Token
0 ETH0.0007529514.98932042
Transfer212462352024-11-22 22:24:2313 hrs ago1732314263IN
Mock Capital: MOCK Token
0 ETH0.0009266218.44660075
Approve212459542024-11-22 21:27:5914 hrs ago1732310879IN
Mock Capital: MOCK Token
0 ETH0.0008695618.68190114
Approve212457272024-11-22 20:42:3514 hrs ago1732308155IN
Mock Capital: MOCK Token
0 ETH0.0006039212.97487307
Transfer212452142024-11-22 18:59:4716 hrs ago1732301987IN
Mock Capital: MOCK Token
0 ETH0.0008375618.43034979
Transfer212449212024-11-22 18:01:1117 hrs ago1732298471IN
Mock Capital: MOCK Token
0 ETH0.0008745512.98622509
Approve212445312024-11-22 16:41:4718 hrs ago1732293707IN
Mock Capital: MOCK Token
0 ETH0.0007364615.82222334
Transfer212444562024-11-22 16:26:3519 hrs ago1732292795IN
Mock Capital: MOCK Token
0 ETH0.0007378814.68928466
Transfer212443342024-11-22 16:01:5919 hrs ago1732291319IN
Mock Capital: MOCK Token
0 ETH0.0007838115.60361006
Approve212438222024-11-22 14:19:1121 hrs ago1732285151IN
Mock Capital: MOCK Token
0 ETH0.0008321417.98450013
Approve212408322024-11-22 4:17:4731 hrs ago1732249067IN
Mock Capital: MOCK Token
0 ETH0.0005496811.88002768
Approve212403092024-11-22 2:32:4733 hrs ago1732242767IN
Mock Capital: MOCK Token
0 ETH0.0006356413.74484794
Approve212396182024-11-22 0:14:1135 hrs ago1732234451IN
Mock Capital: MOCK Token
0 ETH0.0006403313.75701514
Approve212373812024-11-21 16:45:1142 hrs ago1732207511IN
Mock Capital: MOCK Token
0 ETH0.000935120.06405417
Approve212371572024-11-21 15:59:5943 hrs ago1732204799IN
Mock Capital: MOCK Token
0 ETH0.0010628122.83374892
Approve212367342024-11-21 14:34:4745 hrs ago1732199687IN
Mock Capital: MOCK Token
0 ETH0.0007397630.41564582
Approve212366842024-11-21 14:24:4745 hrs ago1732199087IN
Mock Capital: MOCK Token
0 ETH0.0015822434.15165268
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212494342024-11-23 9:06:232 hrs ago1732352783
Mock Capital: MOCK Token
0.04869127 ETH
212494342024-11-23 9:06:232 hrs ago1732352783
Mock Capital: MOCK Token
0.19476508 ETH
212494342024-11-23 9:06:232 hrs ago1732352783
Mock Capital: MOCK Token
0.24345635 ETH
212364962024-11-21 13:46:4745 hrs ago1732196807
Mock Capital: MOCK Token
0.05882374 ETH
212364962024-11-21 13:46:4745 hrs ago1732196807
Mock Capital: MOCK Token
0.23529497 ETH
212364962024-11-21 13:46:4745 hrs ago1732196807
Mock Capital: MOCK Token
0.29411871 ETH
212293552024-11-20 13:49:352 days ago1732110575
Mock Capital: MOCK Token
0.0554884 ETH
212293552024-11-20 13:49:352 days ago1732110575
Mock Capital: MOCK Token
0.2219536 ETH
212293552024-11-20 13:49:352 days ago1732110575
Mock Capital: MOCK Token
0.277442 ETH
212245712024-11-19 21:48:473 days ago1732052927
Mock Capital: MOCK Token
0.06133292 ETH
212245712024-11-19 21:48:473 days ago1732052927
Mock Capital: MOCK Token
0.2453317 ETH
212245712024-11-19 21:48:473 days ago1732052927
Mock Capital: MOCK Token
0.30666463 ETH
212223792024-11-19 14:28:473 days ago1732026527
Mock Capital: MOCK Token
0.04205806 ETH
212223792024-11-19 14:28:473 days ago1732026527
Mock Capital: MOCK Token
0.16823226 ETH
212223792024-11-19 14:28:473 days ago1732026527
Mock Capital: MOCK Token
0.21029032 ETH
212197302024-11-19 5:37:114 days ago1731994631
Mock Capital: MOCK Token
0.04392118 ETH
212197302024-11-19 5:37:114 days ago1731994631
Mock Capital: MOCK Token
0.17568475 ETH
212197302024-11-19 5:37:114 days ago1731994631
Mock Capital: MOCK Token
0.21960594 ETH
212143152024-11-18 11:30:355 days ago1731929435
Mock Capital: MOCK Token
0.047484 ETH
212143152024-11-18 11:30:355 days ago1731929435
Mock Capital: MOCK Token
0.18993601 ETH
212143152024-11-18 11:30:355 days ago1731929435
Mock Capital: MOCK Token
0.23742001 ETH
212105082024-11-17 22:46:475 days ago1731883607
Mock Capital: MOCK Token
0.047218 ETH
212105082024-11-17 22:46:475 days ago1731883607
Mock Capital: MOCK Token
0.18887201 ETH
212105082024-11-17 22:46:475 days ago1731883607
Mock Capital: MOCK Token
0.23609001 ETH
212089332024-11-17 17:30:595 days ago1731864659
Mock Capital: MOCK Token
0.03656211 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Mock

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-16
*/

/**
 Mock Capital
https://mock.capital
https://t.me/mockcapital
https://discord.gg/mockcapital
https://twitter.com/mockcapital
https://t.me/mockcapital
https://discord.gg/mockcapital
https://docs.mock.capital
https://stats.mock.capital
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.21;
pragma experimental ABIEncoderV2;

abstract contract Ownable {
    address private _owner;

    constructor() {
        _owner = msg.sender;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _owner = address(0);
    }
}

library SafeERC20 {
    function safeTransfer(address token, address to, uint256 value) internal {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(IERC20.transfer.selector, to, value)
        );
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            "TransferHelper: INTERNAL TRANSFER_FAILED"
        );
    }
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external;
}

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract Mock is Ownable {
    string private constant _name = unicode"Mock Capital";
    string private constant _symbol = unicode"MOCK";
    uint256 private constant _totalSupply = 1_000_000 * 1e18;

    uint256 public maxTransactionAmount = 10_000 * 1e18;
    uint256 public maxWallet = 10_000 * 1e18;
    uint256 public swapTokensAtAmount = (_totalSupply * 5) / 10000;

    address private teamWallet = 0xEA68F5A05a46f4471859Bc996C57Ba3c4e1Cdbe8;
    address private ecosystemWallet =
        0x15D89B47a64268D3E30ef3F87B59054bDcA8bD37;
    address private revWallet = 0x3979AbFE1963bfbb12E454487e169056a46FD0c7;
    address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    uint8 public buyTotalFees = 150;
    uint8 public sellTotalFees = 150;

    uint8 public revFee = 20;
    uint8 public teamFee = 80;

    bool private swapping;
    bool public limitsInEffect = true;
    bool private launched;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 teamETH,
        uint256 revETH
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    IUniswapV2Router02 public constant uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    constructor() {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            WETH
        );
        automatedMarketMakerPairs[uniswapV2Pair] = true;

        setExcludedFromFees(owner(), true);
        setExcludedFromFees(address(this), true);
        setExcludedFromFees(address(0xdead), true);
        setExcludedFromFees(teamWallet, true);
        setExcludedFromFees(ecosystemWallet, true);
        setExcludedFromFees(revWallet, true);
        setExcludedFromFees(0xE2fE530C047f2d85298b07D9333C05737f1435fB, true); // Team Finance Locker Contract

        setExcludedFromMaxTransaction(owner(), true);
        setExcludedFromMaxTransaction(address(uniswapV2Router), true);
        setExcludedFromMaxTransaction(address(this), true);
        setExcludedFromMaxTransaction(address(0xdead), true);
        setExcludedFromMaxTransaction(address(uniswapV2Pair), true);
        setExcludedFromMaxTransaction(teamWallet, true);
        setExcludedFromMaxTransaction(revWallet, true);
        setExcludedFromMaxTransaction(ecosystemWallet, true);
        setExcludedFromMaxTransaction(
            0xE2fE530C047f2d85298b07D9333C05737f1435fB,
            true
        ); // Team Finance Locker Contract

        _balances[address(this)] = 850_000 * 1e18;
        emit Transfer(address(0), address(this), _balances[address(this)]); // Transfer to the contract for initial liquidity
        _balances[msg.sender] = 100_000 * 1e18;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]); // Transfer to the deployer/team wallet
        _balances[ecosystemWallet] = 50_000 * 1e18;
        emit Transfer(address(0), ecosystemWallet, _balances[ecosystemWallet]); // Transfer to the ecosystem wallet

        _approve(address(this), address(uniswapV2Router), type(uint256).max);
    }

    receive() external payable {}

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return 18;
    }

    function totalSupply() public pure returns (uint256) {
        return _totalSupply;
    }

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

    function allowance(
        address owner,
        address spender
    ) public view returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool) {
        uint256 currentAllowance = _allowances[sender][msg.sender];
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, msg.sender, currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (
            !launched &&
            (from != owner() && from != address(this) && to != owner())
        ) {
            revert("Trading not enabled");
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTx"
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTx"
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;

        if (
            canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 senderBalance = _balances[from];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 1000;
            } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = (amount * buyTotalFees) / 1000;
            }

            if (fees > 0) {
                unchecked {
                    amount = amount - fees;
                    _balances[from] -= fees;
                    _balances[address(this)] += fees;
                }
                emit Transfer(from, address(this), fees);
            }
        }
        unchecked {
            _balances[from] -= amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
    }

    /**
     * @notice Removes all transaction and wallet limits
     * @dev Only callable by the contract owner
     * @custom:security This is irreversible, use with caution
     */
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    /**
     * @notice Sets the distribution percentages for rev and team fees
     * @dev Only callable by the contract owner
     * @param _RevFee Percentage for rev wallet (out of 100)
     * @param _teamFee Percentage for team wallet (out of 100)
     * @custom:security Requires total to be exactly 100%
     */
    function setDistributionFees(
        uint8 _RevFee,
        uint8 _teamFee
    ) external onlyOwner {
        revFee = _RevFee;
        teamFee = _teamFee;
        require(
            (revFee + teamFee) == 100,
            "Distribution have to be equal to 100%"
        );
    }

    /**
     * @notice Sets the buy and sell fees for the token
     * @dev Only callable by the contract owner
     * @param _buyTotalFees New buy fee (in basis points, e.g., 10 = 1%)
     * @param _sellTotalFees New sell fee (in basis points, e.g., 10 = 1%)
     * @custom:security Fees are capped at 3% (300 basis points) for both buy and sell
     */
    function setFees(
        uint8 _buyTotalFees,
        uint8 _sellTotalFees
    ) external onlyOwner {
        require(
            _buyTotalFees <= 30,
            "Buy fees must be less than or equal to 3%"
        );
        require(
            _sellTotalFees <= 30,
            "Sell fees must be less than or equal to 3%"
        );
        buyTotalFees = _buyTotalFees;
        sellTotalFees = _sellTotalFees;
    }

    /**
     * @notice Excludes or includes an address from paying fees
     * @dev Only callable by the contract owner
     * @param account Address to be excluded or included
     * @param excluded True to exclude, false to include
     */
    function setExcludedFromFees(
        address account,
        bool excluded
    ) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @notice Excludes or includes an address from max transaction limit
     * @dev Only callable by the contract owner
     * @param account Address to be excluded or included
     * @param excluded True to exclude, false to include
     */
    function setExcludedFromMaxTransaction(
        address account,
        bool excluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[account] = excluded;
    }

    /**
     * @notice Enables trading for the token
     * @dev Only callable by the contract owner, can only be called once
     */
    function openTrade() external onlyOwner {
        require(!launched, "Already launched");
        launched = true;
    }

    /**
     * @notice Adds initial liquidity to the Uniswap pair
     * @dev Only callable by the contract owner, can only be called once
     * @custom:security Sends liquidity tokens to the teamWallet
     */
    function unleashMock() external payable onlyOwner {
        require(!launched, "Already launched");
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            _balances[address(this)],
            0,
            0,
            teamWallet,
            block.timestamp
        );
    }

    /**
     * @notice Sets or unsets an address as an automated market maker pair
     * @dev Only callable by the contract owner
     * @param pair Address of the pair to be set or unset
     * @param value True to set as AMM pair, false to unset
     * @custom:security Cannot unset the main Uniswap pair
     */
    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed");
        automatedMarketMakerPairs[pair] = value;
    }

    /**
     * @notice Sets the amount of tokens to swap and liquify
     * @dev Only callable by the contract owner
     * @param newSwapAmount New swap amount (in tokens)
     * @custom:security Limited between 0.001% and 0.5% of total supply
     */
    function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner {
        require(
            newSwapAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% of the supply"
        );
        require(
            newSwapAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% of the supply"
        );
        swapTokensAtAmount = newSwapAmount;
    }

    /**
     * @notice Sets the maximum transaction amount
     * @dev Only callable by the contract owner
     * @param newMaxTx New maximum transaction amount (in tokens)
     * @custom:security Cannot be set lower than 0.1% of total supply
     */
    function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner {
        require(
            newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set max transaction lower than 0.1%"
        );
        maxTransactionAmount = newMaxTx * (10 ** 18);
    }

    /**
     * @notice Sets the maximum wallet amount
     * @dev Only callable by the contract owner
     * @param newMaxWallet New maximum wallet amount (in tokens)
     * @custom:security Cannot be set lower than 1% of total supply
     */
    function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner {
        require(
            newMaxWallet >= ((totalSupply() * 1) / 100) / 1e18,
            "Cannot set max wallet lower than 1%"
        );
        maxWallet = newMaxWallet * (10 ** 18);
    }

    /**
     * @notice Updates the rev wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New rev wallet address
     */
    function updateRevWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        revWallet = newAddress;
    }

    /**
     * @notice Updates the team wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New team wallet address
     */
    function updateTeamWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        teamWallet = newAddress;
    }

    /**
     * @notice Updates the ecosystem wallet address
     * @dev Only callable by the contract owner
     * @param newAddress New ecosystem wallet address
     */
    function updateEcosystemWallet(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Address cannot be zero");
        ecosystemWallet = newAddress;
    }

    /**
     * @notice Checks if an address is excluded from fees
     * @dev Public view function
     * @param account Address to check
     * @return True if excluded, false otherwise
     */
    function excludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    /**
     * @notice Withdraws stuck tokens from the contract
     * @dev Only callable by the contract owner
     * @param token Address of the token to withdraw
     * @param to Address to send the withdrawn tokens
     * @custom:security Use with caution to avoid withdrawing essential contract tokens
     */
    function withdrawStuckToken(address token, address to) external onlyOwner {
        uint256 _contractBalance = IERC20(token).balanceOf(address(this));
        SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer
    }

    /**
     * @notice Withdraws stuck ETH from the contract
     * @dev Only callable by the contract owner
     * @param addr Address to send the withdrawn ETH
     * @custom:security Use with caution to avoid withdrawing essential contract ETH
     */
    function withdrawStuckETH(address addr) external onlyOwner {
        require(addr != address(0), "Invalid address");

        (bool success, ) = addr.call{value: address(this).balance}("");
        require(success, "Withdrawal failed");
    }

    /**
     * @notice Swaps accumulated tokens for ETH and distributes to wallets
     * @dev Internal function, called automatically during transfers when threshold is met
     * @custom:security Ensures no reentrancy by using a 'swapping' flag
     */
    function swapBack() private {
        uint256 swapThreshold = swapTokensAtAmount;
        bool success;

        if (balanceOf(address(this)) > swapTokensAtAmount * 20) {
            swapThreshold = swapTokensAtAmount * 20;
        }

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            uint256 ethForRev = (ethBalance * revFee) / 100;
            uint256 ethForTeam = ethBalance - ethForRev;

            (success, ) = address(teamWallet).call{value: ethForTeam}("");
            (success, ) = address(revWallet).call{value: ethForRev}("");

            emit SwapAndLiquify(swapThreshold, ethForTeam, ethForRev);
        }
    }
}

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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"teamETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"revETH","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_RevFee","type":"uint8"},{"internalType":"uint8","name":"_teamFee","type":"uint8"}],"name":"setDistributionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludedFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"_sellTotalFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTx","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapAmount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unleashMock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateEcosystemWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405269021e19e0c9bab240000060018190556002556127106200003169d3c21bcecceda10000006005620006a7565b6200003d9190620006d1565b600355600480546001600160a01b031990811673ea68f5a05a46f4471859bc996c57ba3c4e1cdbe817909155600580549091167315d89b47a64268d3e30ef3f87b59054bdca8bd3717905560068054790100501496963979abfe1963bfbb12e454487e169056a46fd0c7600161ff0160c01b0319909116179055348015620000c3575f80fd5b505f80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9163c45a01559160048083019260209291908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a9190620006f1565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af1158015620001aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d09190620006f1565b6001600160a01b031660808190525f908152600b60205260409020805460ff19166001179055620002146200020c5f546001600160a01b031690565b600162000476565b6200022130600162000476565b6200023061dead600162000476565b60045462000249906001600160a01b0316600162000476565b60055462000262906001600160a01b0316600162000476565b6006546200027b906001600160a01b0316600162000476565b6200029c73e2fe530c047f2d85298b07d9333c05737f1435fb600162000476565b620002ba620002b25f546001600160a01b031690565b6001620004fd565b620002db737a250d5630b4cf539739df2c5dacb4c659f2488d6001620004fd565b620002e8306001620004fd565b620002f761dead6001620004fd565b60805162000307906001620004fd565b60045462000320906001600160a01b03166001620004fd565b60065462000339906001600160a01b03166001620004fd565b60055462000352906001600160a01b03166001620004fd565b6200037373e2fe530c047f2d85298b07d9333c05737f1435fb6001620004fd565b305f81815260076020908152604080832069b3fe97a2fafd2f4000009081905590519081525f8051602062002c41833981519152910160405180910390a3335f81815260076020908152604080832069152d02c7e14af68000009081905590519081525f8051602062002c41833981519152910160405180910390a3600580546001600160a01b039081165f90815260076020526040808220690a968163f0a57b4000009055925490911680825282822054925190925f8051602062002c41833981519152916200044691815260200190565b60405180910390a36200047030737a250d5630b4cf539739df2c5dacb4c659f2488d5f1962000580565b62000720565b33620004895f546001600160a01b031690565b6001600160a01b031614620004d35760405162461bcd60e51b815260206004820181905260248201525f8051602062002c2183398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33620005105f546001600160a01b031690565b6001600160a01b031614620005565760405162461bcd60e51b815260206004820181905260248201525f8051602062002c218339815191526044820152606401620004ca565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b038316620005e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004ca565b6001600160a01b038216620006475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004ca565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8082028115828204841417620006cb57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f82620006ec57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000702575f80fd5b81516001600160a01b038116811462000719575f80fd5b9392505050565b6080516124e1620007405f395f818161039b0152610e7c01526124e15ff3fe608060405260043610610220575f3560e01c80637cb332bb1161011e578063d201b01e116100a8578063e819532f1161006d578063e819532f146106db578063f186a68c146106e3578063f5ec723414610702578063f8b45b0514610721578063fb201b1d14610736575f80fd5b8063d201b01e14610623578063d7c94efd14610642578063d85ba06314610662578063dd62ed3e14610682578063e2f45605146106c6575f80fd5b80639a7a23d6116100ee5780639a7a23d614610592578063a9059cbb146105b1578063adfa29e5146105d0578063bc205ad3146105ef578063c8c8ebe41461060e575f80fd5b80637cb332bb146104f457806385ecafd7146105135780638da5cb5b1461054a57806395d89b4114610566575f80fd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045957806370a0823114610479578063715018a6146104ad57806374010ece146104c1578063751039fc146104e0575f80fd5b80634a62bb65146103bd5780634fcd2446146103dd578063590ffdce146103fc5780636402511e1461041b57806366650dae1461043a575f80fd5b806321d37e39116101f057806321d37e391461030557806323b872dd1461033757806327a14fc214610356578063313ce5671461037757806349bd5a5e1461038a575f80fd5b806306fdde031461022b578063095ea7b3146102715780631694505e146102a057806318160ddd146102df575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b135bd8dac810d85c1a5d185b60a21b60208201525b604051610268919061212f565b60405180910390f35b34801561027c575f80fd5b5061029061028b36600461217c565b61074a565b6040519015158152602001610268565b3480156102ab575f80fd5b506102c7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610268565b3480156102ea575f80fd5b5069d3c21bcecceda10000005b604051908152602001610268565b348015610310575f80fd5b5060065461032590600160b01b900460ff1681565b60405160ff9091168152602001610268565b348015610342575f80fd5b506102906103513660046121a4565b610760565b348015610361575f80fd5b506103756103703660046121dd565b610814565b005b348015610382575f80fd5b506012610325565b348015610395575f80fd5b506102c77f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c8575f80fd5b5060065461029090600160c81b900460ff1681565b3480156103e8575f80fd5b506103756103f7366004612204565b6108f3565b348015610407575f80fd5b50610375610416366004612245565b610a2c565b348015610426575f80fd5b506103756104353660046121dd565b610a8e565b348015610445575f80fd5b50610375610454366004612245565b610be9565b348015610464575f80fd5b5060065461032590600160a81b900460ff1681565b348015610484575f80fd5b506102f761049336600461227a565b6001600160a01b03165f9081526007602052604090205490565b3480156104b8575f80fd5b50610375610c4b565b3480156104cc575f80fd5b506103756104db3660046121dd565b610c94565b3480156104eb575f80fd5b50610375610d7b565b3480156104ff575f80fd5b5061037561050e36600461227a565b610dc2565b34801561051e575f80fd5b5061029061052d36600461227a565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610555575f80fd5b505f546001600160a01b03166102c7565b348015610571575f80fd5b506040805180820190915260048152634d4f434b60e01b602082015261025b565b34801561059d575f80fd5b506103756105ac366004612245565b610e42565b3480156105bc575f80fd5b506102906105cb36600461217c565b610f25565b3480156105db575f80fd5b506103756105ea36600461227a565b610f31565b3480156105fa575f80fd5b5061037561060936600461229a565b610fb1565b348015610619575f80fd5b506102f760015481565b34801561062e575f80fd5b5061037561063d36600461227a565b611063565b34801561064d575f80fd5b5060065461032590600160b81b900460ff1681565b34801561066d575f80fd5b5060065461032590600160a01b900460ff1681565b34801561068d575f80fd5b506102f761069c36600461229a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106d1575f80fd5b506102f760035481565b61037561117a565b3480156106ee575f80fd5b506103756106fd36600461227a565b6112b0565b34801561070d575f80fd5b5061037561071c366004612204565b611330565b34801561072c575f80fd5b506102f760025481565b348015610741575f80fd5b50610375611410565b5f6107563384846114aa565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fe57828110156107f15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85338584036114aa565b6108098585856115cd565b506001949350505050565b336108265f546001600160a01b031690565b6001600160a01b03161461084c5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a7640000606461086c69d3c21bcecceda1000000600161230b565b6108769190612322565b6108809190612322565b8110156108db5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e8565b6108ed81670de0b6b3a764000061230b565b60025550565b336109055f546001600160a01b031690565b6001600160a01b03161461092b5760405162461bcd60e51b81526004016107e8906122c2565b601e8260ff1611156109915760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e8565b601e8160ff1611156109f85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e8565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3e5f546001600160a01b031690565b6001600160a01b031614610a645760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610aa05f546001600160a01b031690565b6001600160a01b031614610ac65760405162461bcd60e51b81526004016107e8906122c2565b620186a0610adf69d3c21bcecceda1000000600161230b565b610ae99190612322565b811015610b565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e8565b6103e8610b6e69d3c21bcecceda1000000600561230b565b610b789190612322565b811115610be45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e8565b600355565b33610bfb5f546001600160a01b031690565b6001600160a01b031614610c215760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5d5f546001600160a01b031690565b6001600160a01b031614610c835760405162461bcd60e51b81526004016107e8906122c2565b5f80546001600160a01b0319169055565b33610ca65f546001600160a01b031690565b6001600160a01b031614610ccc5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a76400006103e8610ced69d3c21bcecceda1000000600161230b565b610cf79190612322565b610d019190612322565b811015610d635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e8565b610d7581670de0b6b3a764000061230b565b60015550565b33610d8d5f546001600160a01b031690565b6001600160a01b031614610db35760405162461bcd60e51b81526004016107e8906122c2565b6006805460ff60c81b19169055565b33610dd45f546001600160a01b031690565b6001600160a01b031614610dfa5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610e205760405162461bcd60e51b81526004016107e890612341565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e545f546001600160a01b031690565b6001600160a01b031614610e7a5760405162461bcd60e51b81526004016107e8906122c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610efb5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107563384846115cd565b33610f435f546001600160a01b031690565b6001600160a01b031614610f695760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610f8f5760405162461bcd60e51b81526004016107e890612341565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fc35f546001600160a01b031690565b6001600160a01b031614610fe95760405162461bcd60e51b81526004016107e8906122c2565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190612371565b905061105e838383611d85565b505050565b336110755f546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b0381166110e35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e8565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461112c576040519150601f19603f3d011682016040523d82523d5f602084013e611131565b606091505b50509050806111765760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e8565b5050565b3361118c5f546001600160a01b031690565b6001600160a01b0316146111b25760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156111ff5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561128b573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190612388565b336112c25f546001600160a01b031690565b6001600160a01b0316146112e85760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03811661130e5760405162461bcd60e51b81526004016107e890612341565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336113425f546001600160a01b031690565b6001600160a01b0316146113685760405162461bcd60e51b81526004016107e8906122c2565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113b093908104831692919004166123b3565b60ff166064146111765760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e8565b336114225f546001600160a01b031690565b6001600160a01b0316146114485760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156114955760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b03831661150c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e8565b6001600160a01b03821661156d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e8565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e8565b6001600160a01b0382166116935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e8565b5f81116116f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e8565b600654600160d01b900460ff1615801561174857505f546001600160a01b0384811691161480159061172f57506001600160a01b0383163014155b801561174857505f546001600160a01b03838116911614155b1561178b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e8565b600654600160c81b900460ff1615611a4c575f546001600160a01b038481169116148015906117c757505f546001600160a01b03838116911614155b80156117db57506001600160a01b03821615155b80156117f257506001600160a01b03821661dead14155b80156118085750600654600160c01b900460ff16155b15611a4c576001600160a01b0383165f908152600b602052604090205460ff16801561184c57506001600160a01b0382165f908152600a602052604090205460ff16155b1561191f576001548111156118b15760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e8565b6002546001600160a01b0383165f908152600760205260409020546118d690836123cc565b111561191a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b611a4c565b6001600160a01b0382165f908152600b602052604090205460ff16801561195e57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c45760015481111561191a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e8565b6001600160a01b0382165f908152600a602052604090205460ff16611a4c576002546001600160a01b0383165f90815260076020526040902054611a0890836123cc565b1115611a4c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b600354305f90815260076020526040902054108015908190611a785750600654600160c01b900460ff16155b8015611a9c57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611ac057506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae457506001600160a01b0383165f9081526009602052604090205460ff16155b15611b12576006805460ff60c01b1916600160c01b179055611b04611eac565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5e57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6657505f5b6001600160a01b0385165f9081526007602052604090205483811015611bdd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e8565b5f8215611d13576001600160a01b0386165f908152600b602052604090205460ff168015611c165750600654600160a81b900460ff1615155b15611c47576006546103e890611c3690600160a81b900460ff168761230b565b611c409190612322565b9050611ca6565b6001600160a01b0387165f908152600b602052604090205460ff168015611c795750600654600160a01b900460ff1615155b15611ca6576006546103e890611c9990600160a01b900460ff168761230b565b611ca39190612322565b90505b8015611d13576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d749089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611de091906123df565b5f604051808303815f865af19150503d805f8114611e19576040519150601f19603f3d011682016040523d82523d5f602084013e611e1e565b606091505b5091509150818015611e48575080511580611e48575080806020019051810190611e4891906123fa565b611ea55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e8565b5050505050565b6003545f611ebb82601461230b565b305f908152600760205260409020541115611ee157600354611ede90601461230b565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1457611f14612415565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5c57611f5c612415565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb39086905f90869030904290600401612429565b5f604051808303815f87803b158015611fca575f80fd5b505af1158015611fdc573d5f803e3d5ffd5b504792505081159050612107576006545f9060649061200590600160b01b900460ff168461230b565b61200f9190612322565b90505f61201c8284612498565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612067576040519150601f19603f3d011682016040523d82523d5f602084013e61206c565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b9576040519150601f19603f3d011682016040523d82523d5f602084013e6120be565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b5f5b8381101561212757818101518382015260200161210f565b50505f910152565b602081525f825180602084015261214d81604085016020870161210d565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612177575f80fd5b919050565b5f806040838503121561218d575f80fd5b61219683612161565b946020939093013593505050565b5f805f606084860312156121b6575f80fd5b6121bf84612161565b92506121cd60208501612161565b9150604084013590509250925092565b5f602082840312156121ed575f80fd5b5035919050565b803560ff81168114612177575f80fd5b5f8060408385031215612215575f80fd5b61221e836121f4565b915061222c602084016121f4565b90509250929050565b8015158114612242575f80fd5b50565b5f8060408385031215612256575f80fd5b61225f83612161565b9150602083013561226f81612235565b809150509250929050565b5f6020828403121561228a575f80fd5b61229382612161565b9392505050565b5f80604083850312156122ab575f80fd5b6122b483612161565b915061222c60208401612161565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761075a5761075a6122f7565b5f8261233c57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612381575f80fd5b5051919050565b5f805f6060848603121561239a575f80fd5b8351925060208401519150604084015190509250925092565b60ff818116838216019081111561075a5761075a6122f7565b8082018082111561075a5761075a6122f7565b5f82516123f081846020870161210d565b9190910192915050565b5f6020828403121561240a575f80fd5b815161229381612235565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124775784516001600160a01b031683529383019391830191600101612452565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561075a5761075a6122f756fea26469706673582212209f9b8803f219d38dc90f6e2d551d610570c328ed1bcb5dd2222ffc13663342e864736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x608060405260043610610220575f3560e01c80637cb332bb1161011e578063d201b01e116100a8578063e819532f1161006d578063e819532f146106db578063f186a68c146106e3578063f5ec723414610702578063f8b45b0514610721578063fb201b1d14610736575f80fd5b8063d201b01e14610623578063d7c94efd14610642578063d85ba06314610662578063dd62ed3e14610682578063e2f45605146106c6575f80fd5b80639a7a23d6116100ee5780639a7a23d614610592578063a9059cbb146105b1578063adfa29e5146105d0578063bc205ad3146105ef578063c8c8ebe41461060e575f80fd5b80637cb332bb146104f457806385ecafd7146105135780638da5cb5b1461054a57806395d89b4114610566575f80fd5b80634a62bb65116101aa5780636a486a8e1161016f5780636a486a8e1461045957806370a0823114610479578063715018a6146104ad57806374010ece146104c1578063751039fc146104e0575f80fd5b80634a62bb65146103bd5780634fcd2446146103dd578063590ffdce146103fc5780636402511e1461041b57806366650dae1461043a575f80fd5b806321d37e39116101f057806321d37e391461030557806323b872dd1461033757806327a14fc214610356578063313ce5671461037757806349bd5a5e1461038a575f80fd5b806306fdde031461022b578063095ea7b3146102715780631694505e146102a057806318160ddd146102df575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b5060408051808201909152600c81526b135bd8dac810d85c1a5d185b60a21b60208201525b604051610268919061212f565b60405180910390f35b34801561027c575f80fd5b5061029061028b36600461217c565b61074a565b6040519015158152602001610268565b3480156102ab575f80fd5b506102c7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610268565b3480156102ea575f80fd5b5069d3c21bcecceda10000005b604051908152602001610268565b348015610310575f80fd5b5060065461032590600160b01b900460ff1681565b60405160ff9091168152602001610268565b348015610342575f80fd5b506102906103513660046121a4565b610760565b348015610361575f80fd5b506103756103703660046121dd565b610814565b005b348015610382575f80fd5b506012610325565b348015610395575f80fd5b506102c77f000000000000000000000000e002e4e1f083795e9cbc3f1c74182286e85472d281565b3480156103c8575f80fd5b5060065461029090600160c81b900460ff1681565b3480156103e8575f80fd5b506103756103f7366004612204565b6108f3565b348015610407575f80fd5b50610375610416366004612245565b610a2c565b348015610426575f80fd5b506103756104353660046121dd565b610a8e565b348015610445575f80fd5b50610375610454366004612245565b610be9565b348015610464575f80fd5b5060065461032590600160a81b900460ff1681565b348015610484575f80fd5b506102f761049336600461227a565b6001600160a01b03165f9081526007602052604090205490565b3480156104b8575f80fd5b50610375610c4b565b3480156104cc575f80fd5b506103756104db3660046121dd565b610c94565b3480156104eb575f80fd5b50610375610d7b565b3480156104ff575f80fd5b5061037561050e36600461227a565b610dc2565b34801561051e575f80fd5b5061029061052d36600461227a565b6001600160a01b03165f9081526009602052604090205460ff1690565b348015610555575f80fd5b505f546001600160a01b03166102c7565b348015610571575f80fd5b506040805180820190915260048152634d4f434b60e01b602082015261025b565b34801561059d575f80fd5b506103756105ac366004612245565b610e42565b3480156105bc575f80fd5b506102906105cb36600461217c565b610f25565b3480156105db575f80fd5b506103756105ea36600461227a565b610f31565b3480156105fa575f80fd5b5061037561060936600461229a565b610fb1565b348015610619575f80fd5b506102f760015481565b34801561062e575f80fd5b5061037561063d36600461227a565b611063565b34801561064d575f80fd5b5060065461032590600160b81b900460ff1681565b34801561066d575f80fd5b5060065461032590600160a01b900460ff1681565b34801561068d575f80fd5b506102f761069c36600461229a565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106d1575f80fd5b506102f760035481565b61037561117a565b3480156106ee575f80fd5b506103756106fd36600461227a565b6112b0565b34801561070d575f80fd5b5061037561071c366004612204565b611330565b34801561072c575f80fd5b506102f760025481565b348015610741575f80fd5b50610375611410565b5f6107563384846114aa565b5060015b92915050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1981146107fe57828110156107f15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85338584036114aa565b6108098585856115cd565b506001949350505050565b336108265f546001600160a01b031690565b6001600160a01b03161461084c5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a7640000606461086c69d3c21bcecceda1000000600161230b565b6108769190612322565b6108809190612322565b8110156108db5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f7420736574206d61782077616c6c6574206c6f776572207468616e60448201526220312560e81b60648201526084016107e8565b6108ed81670de0b6b3a764000061230b565b60025550565b336109055f546001600160a01b031690565b6001600160a01b03161461092b5760405162461bcd60e51b81526004016107e8906122c2565b601e8260ff1611156109915760405162461bcd60e51b815260206004820152602960248201527f4275792066656573206d757374206265206c657373207468616e206f7220657160448201526875616c20746f20332560b81b60648201526084016107e8565b601e8160ff1611156109f85760405162461bcd60e51b815260206004820152602a60248201527f53656c6c2066656573206d757374206265206c657373207468616e206f7220656044820152697175616c20746f20332560b01b60648201526084016107e8565b6006805461ffff60a01b1916600160a01b60ff9485160260ff60a81b191617600160a81b9290931691909102919091179055565b33610a3e5f546001600160a01b031690565b6001600160a01b031614610a645760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b33610aa05f546001600160a01b031690565b6001600160a01b031614610ac65760405162461bcd60e51b81526004016107e8906122c2565b620186a0610adf69d3c21bcecceda1000000600161230b565b610ae99190612322565b811015610b565760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527420302e30303125206f662074686520737570706c7960581b60648201526084016107e8565b6103e8610b6e69d3c21bcecceda1000000600561230b565b610b789190612322565b811115610be45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152736e20302e3525206f662074686520737570706c7960601b60648201526084016107e8565b600355565b33610bfb5f546001600160a01b031690565b6001600160a01b031614610c215760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b33610c5d5f546001600160a01b031690565b6001600160a01b031614610c835760405162461bcd60e51b81526004016107e8906122c2565b5f80546001600160a01b0319169055565b33610ca65f546001600160a01b031690565b6001600160a01b031614610ccc5760405162461bcd60e51b81526004016107e8906122c2565b670de0b6b3a76400006103e8610ced69d3c21bcecceda1000000600161230b565b610cf79190612322565b610d019190612322565b811015610d635760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6f776572604482015269207468616e20302e312560b01b60648201526084016107e8565b610d7581670de0b6b3a764000061230b565b60015550565b33610d8d5f546001600160a01b031690565b6001600160a01b031614610db35760405162461bcd60e51b81526004016107e8906122c2565b6006805460ff60c81b19169055565b33610dd45f546001600160a01b031690565b6001600160a01b031614610dfa5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610e205760405162461bcd60e51b81526004016107e890612341565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b33610e545f546001600160a01b031690565b6001600160a01b031614610e7a5760405162461bcd60e51b81526004016107e8906122c2565b7f000000000000000000000000e002e4e1f083795e9cbc3f1c74182286e85472d26001600160a01b0316826001600160a01b031603610efb5760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f76656400000000000060448201526064016107e8565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f6107563384846115cd565b33610f435f546001600160a01b031690565b6001600160a01b031614610f695760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b038116610f8f5760405162461bcd60e51b81526004016107e890612341565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610fc35f546001600160a01b031690565b6001600160a01b031614610fe95760405162461bcd60e51b81526004016107e8906122c2565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190612371565b905061105e838383611d85565b505050565b336110755f546001600160a01b031690565b6001600160a01b03161461109b5760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b0381166110e35760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016107e8565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f811461112c576040519150601f19603f3d011682016040523d82523d5f602084013e611131565b606091505b50509050806111765760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016107e8565b5050565b3361118c5f546001600160a01b031690565b6001600160a01b0316146111b25760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156111ff5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b305f818152600760205260408082205460048054925163f305d71960e01b81529081019490945260248401526044830182905260648301919091526001600160a01b031660848201524260a4820152737a250d5630b4cf539739df2c5dacb4c659f2488d9063f305d71990349060c40160606040518083038185885af115801561128b573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061105e9190612388565b336112c25f546001600160a01b031690565b6001600160a01b0316146112e85760405162461bcd60e51b81526004016107e8906122c2565b6001600160a01b03811661130e5760405162461bcd60e51b81526004016107e890612341565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b336113425f546001600160a01b031690565b6001600160a01b0316146113685760405162461bcd60e51b81526004016107e8906122c2565b6006805461ffff60b01b1916600160b01b60ff858116820260ff60b81b191692909217600160b81b858416810291909117938490556113b093908104831692919004166123b3565b60ff166064146111765760405162461bcd60e51b815260206004820152602560248201527f446973747269627574696f6e206861766520746f20626520657175616c20746f604482015264203130302560d81b60648201526084016107e8565b336114225f546001600160a01b031690565b6001600160a01b0316146114485760405162461bcd60e51b81526004016107e8906122c2565b600654600160d01b900460ff16156114955760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b60448201526064016107e8565b6006805460ff60d01b1916600160d01b179055565b6001600160a01b03831661150c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e8565b6001600160a01b03821661156d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e8565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116315760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e8565b6001600160a01b0382166116935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e8565b5f81116116f45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e8565b600654600160d01b900460ff1615801561174857505f546001600160a01b0384811691161480159061172f57506001600160a01b0383163014155b801561174857505f546001600160a01b03838116911614155b1561178b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107e8565b600654600160c81b900460ff1615611a4c575f546001600160a01b038481169116148015906117c757505f546001600160a01b03838116911614155b80156117db57506001600160a01b03821615155b80156117f257506001600160a01b03821661dead14155b80156118085750600654600160c01b900460ff16155b15611a4c576001600160a01b0383165f908152600b602052604090205460ff16801561184c57506001600160a01b0382165f908152600a602052604090205460ff16155b1561191f576001548111156118b15760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152640dac2f0a8f60db1b60648201526084016107e8565b6002546001600160a01b0383165f908152600760205260409020546118d690836123cc565b111561191a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b611a4c565b6001600160a01b0382165f908152600b602052604090205460ff16801561195e57506001600160a01b0383165f908152600a602052604090205460ff16155b156119c45760015481111561191a5760405162461bcd60e51b815260206004820152602660248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015265040dac2f0a8f60d31b60648201526084016107e8565b6001600160a01b0382165f908152600a602052604090205460ff16611a4c576002546001600160a01b0383165f90815260076020526040902054611a0890836123cc565b1115611a4c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107e8565b600354305f90815260076020526040902054108015908190611a785750600654600160c01b900460ff16155b8015611a9c57506001600160a01b0384165f908152600b602052604090205460ff16155b8015611ac057506001600160a01b0384165f9081526009602052604090205460ff16155b8015611ae457506001600160a01b0383165f9081526009602052604090205460ff16155b15611b12576006805460ff60c01b1916600160c01b179055611b04611eac565b6006805460ff60c01b191690555b6006546001600160a01b0385165f9081526009602052604090205460ff600160c01b909204821615911680611b5e57506001600160a01b0384165f9081526009602052604090205460ff165b15611b6657505f5b6001600160a01b0385165f9081526007602052604090205483811015611bdd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e8565b5f8215611d13576001600160a01b0386165f908152600b602052604090205460ff168015611c165750600654600160a81b900460ff1615155b15611c47576006546103e890611c3690600160a81b900460ff168761230b565b611c409190612322565b9050611ca6565b6001600160a01b0387165f908152600b602052604090205460ff168015611c795750600654600160a01b900460ff1615155b15611ca6576006546103e890611c9990600160a01b900460ff168761230b565b611ca39190612322565b90505b8015611d13576001600160a01b0387165f8181526007602090815260408083208054869003905530808452928190208054860190555184815297849003979192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b038088165f8181526007602052604080822080548a900390559289168082529083902080548901905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d749089815260200190565b60405180910390a350505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f92839290871691611de091906123df565b5f604051808303815f865af19150503d805f8114611e19576040519150601f19603f3d011682016040523d82523d5f602084013e611e1e565b606091505b5091509150818015611e48575080511580611e48575080806020019051810190611e4891906123fa565b611ea55760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657248656c7065723a20494e5445524e414c205452414e5346456044820152671497d1905253115160c21b60648201526084016107e8565b5050505050565b6003545f611ebb82601461230b565b305f908152600760205260409020541115611ee157600354611ede90601461230b565b91505b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f1457611f14612415565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611f5c57611f5c612415565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611fb39086905f90869030904290600401612429565b5f604051808303815f87803b158015611fca575f80fd5b505af1158015611fdc573d5f803e3d5ffd5b504792505081159050612107576006545f9060649061200590600160b01b900460ff168461230b565b61200f9190612322565b90505f61201c8284612498565b6004546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114612067576040519150601f19603f3d011682016040523d82523d5f602084013e61206c565b606091505b50506006546040519196506001600160a01b03169083905f81818185875af1925050503d805f81146120b9576040519150601f19603f3d011682016040523d82523d5f602084013e6120be565b606091505b505060408051888152602081018490529081018490529095507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505b50505050565b5f5b8381101561212757818101518382015260200161210f565b50505f910152565b602081525f825180602084015261214d81604085016020870161210d565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612177575f80fd5b919050565b5f806040838503121561218d575f80fd5b61219683612161565b946020939093013593505050565b5f805f606084860312156121b6575f80fd5b6121bf84612161565b92506121cd60208501612161565b9150604084013590509250925092565b5f602082840312156121ed575f80fd5b5035919050565b803560ff81168114612177575f80fd5b5f8060408385031215612215575f80fd5b61221e836121f4565b915061222c602084016121f4565b90509250929050565b8015158114612242575f80fd5b50565b5f8060408385031215612256575f80fd5b61225f83612161565b9150602083013561226f81612235565b809150509250929050565b5f6020828403121561228a575f80fd5b61229382612161565b9392505050565b5f80604083850312156122ab575f80fd5b6122b483612161565b915061222c60208401612161565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761075a5761075a6122f7565b5f8261233c57634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260169082015275416464726573732063616e6e6f74206265207a65726f60501b604082015260600190565b5f60208284031215612381575f80fd5b5051919050565b5f805f6060848603121561239a575f80fd5b8351925060208401519150604084015190509250925092565b60ff818116838216019081111561075a5761075a6122f7565b8082018082111561075a5761075a6122f7565b5f82516123f081846020870161210d565b9190910192915050565b5f6020828403121561240a575f80fd5b815161229381612235565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156124775784516001600160a01b031683529383019391830191600101612452565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561075a5761075a6122f756fea26469706673582212209f9b8803f219d38dc90f6e2d551d610570c328ed1bcb5dd2222ffc13663342e864736f6c63430008150033

Deployed Bytecode Sourcemap

2224:18512:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5927:83;;;;;;;;;;-1:-1:-1;5997:5:0;;;;;;;;;;;;-1:-1:-1;;;5997:5:0;;;;5927:83;;;;;;;:::i;:::-;;;;;;;;6581:152;;;;;;;;;;-1:-1:-1;6581:152:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;6581:152:0;1107:187:1;3821:124:0;;;;;;;;;;;;3902:42;3821:124;;;;;-1:-1:-1;;;;;1489:32:1;;;1471:51;;1459:2;1444:18;3821:124:0;1299:229:1;6197:91:0;;;;;;;;;;-1:-1:-1;2410:16:0;6197:91;;;1679:25:1;;;1667:2;1652:18;6197:91:0;1533:177:1;3020:24:0;;;;;;;;;;-1:-1:-1;3020:24:0;;;;-1:-1:-1;;;3020:24:0;;;;;;;;;1887:4:1;1875:17;;;1857:36;;1845:2;1830:18;3020:24:0;1715:184:1;7277:603:0;;;;;;;;;;-1:-1:-1;7277:603:0;;;;;:::i;:::-;;:::i;16698:271::-;;;;;;;;;;-1:-1:-1;16698:271:0;;;;;:::i;:::-;;:::i;:::-;;6113:76;;;;;;;;;;-1:-1:-1;6179:2:0;6113:76;;3952:38;;;;;;;;;;;;;;;3113:33;;;;;;;;;;-1:-1:-1;3113:33:0;;;;-1:-1:-1;;;3113:33:0;;;;;;12504:436;;;;;;;;;;-1:-1:-1;12504:436:0;;;;;:::i;:::-;;:::i;13196:161::-;;;;;;;;;;-1:-1:-1;13196:161:0;;;;;:::i;:::-;;:::i;15466:435::-;;;;;;;;;;-1:-1:-1;15466:435:0;;;;;:::i;:::-;;:::i;13623:183::-;;;;;;;;;;-1:-1:-1;13623:183:0;;;;;:::i;:::-;;:::i;2979:32::-;;;;;;;;;;-1:-1:-1;2979:32:0;;;;-1:-1:-1;;;2979:32:0;;;;;;6296:110;;;;;;;;;;-1:-1:-1;6296:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6380:18:0;6353:7;6380:18;;;:9;:18;;;;;;;6296:110;695:92;;;;;;;;;;;;;:::i;16166:275::-;;;;;;;;;;-1:-1:-1;16166:275:0;;;;;:::i;:::-;;:::i;11427:84::-;;;;;;;;;;;;;:::i;17488:177::-;;;;;;;;;;-1:-1:-1;17488:177:0;;;;;:::i;:::-;;:::i;18244:123::-;;;;;;;;;;-1:-1:-1;18244:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18331:28:0;18307:4;18331:28;;;:19;:28;;;;;;;;;18244:123;474:87;;;;;;;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;547:6:0;474:87;;6018;;;;;;;;;;-1:-1:-1;6090:7:0;;;;;;;;;;;;-1:-1:-1;;;6090:7:0;;;;6018:87;;14963:236;;;;;;;;;;-1:-1:-1;14963:236:0;;;;;:::i;:::-;;:::i;7086:183::-;;;;;;;;;;-1:-1:-1;7086:183:0;;;;;:::i;:::-;;:::i;17140:175::-;;;;;;;;;;-1:-1:-1;17140:175:0;;;;;:::i;:::-;;:::i;18697:240::-;;;;;;;;;;-1:-1:-1;18697:240:0;;;;;:::i;:::-;;:::i;2435:51::-;;;;;;;;;;;;;;;;19206:247;;;;;;;;;;-1:-1:-1;19206:247:0;;;;;:::i;:::-;;:::i;3051:25::-;;;;;;;;;;-1:-1:-1;3051:25:0;;;;-1:-1:-1;;;3051:25:0;;;;;;2941:31;;;;;;;;;;-1:-1:-1;2941:31:0;;;;-1:-1:-1;;;2941:31:0;;;;;;6414:159;;;;;;;;;;-1:-1:-1;6414:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;6538:18:0;;;6511:7;6538:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6414:159;2540:62;;;;;;;;;;;;;;;;14300:332;;;:::i;17848:187::-;;;;;;;;;;-1:-1:-1;17848:187:0;;;;;:::i;:::-;;:::i;11843:291::-;;;;;;;;;;-1:-1:-1;11843:291:0;;;;;:::i;:::-;;:::i;2493:40::-;;;;;;;;;;;;;;;;13952:123;;;;;;;;;;;;;:::i;6581:152::-;6649:4;6666:37;6675:10;6687:7;6696:6;6666:8;:37::i;:::-;-1:-1:-1;6721:4:0;6581:152;;;;;:::o;7277:603::-;-1:-1:-1;;;;;7446:19:0;;7402:4;7446:19;;;:11;:19;;;;;;;;7466:10;7446:31;;;;;;;;-1:-1:-1;;7492:37:0;;7488:312;;7592:6;7572:16;:26;;7546:128;;;;-1:-1:-1;;;7546:128:0;;4149:2:1;7546:128:0;;;4131:21:1;4188:2;4168:18;;;4161:30;4227:34;4207:18;;;4200:62;-1:-1:-1;;;4278:18:1;;;4271:38;4326:19;;7546:128:0;;;;;;;;;7718:55;7727:6;7735:10;7766:6;7747:16;:25;7718:8;:55::i;:::-;7812:36;7822:6;7830:9;7841:6;7812:9;:36::i;:::-;-1:-1:-1;7868:4:0;;7277:603;-1:-1:-1;;;;7277:603:0:o;16698:271::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;16846:4:::1;16839:3;16818:17;2410:16:::0;16834:1:::1;16818:17;:::i;:::-;16817:25;;;;:::i;:::-;16816:34;;;;:::i;:::-;16800:12;:50;;16778:135;;;::::0;-1:-1:-1;;;16778:135:0;;5446:2:1;16778:135:0::1;::::0;::::1;5428:21:1::0;5485:2;5465:18;;;5458:30;5524:34;5504:18;;;5497:62;-1:-1:-1;;;5575:18:1;;;5568:33;5618:19;;16778:135:0::1;5244:399:1::0;16778:135:0::1;16936:25;:12:::0;16952:8:::1;16936:25;:::i;:::-;16924:9;:37:::0;-1:-1:-1;16698:271:0:o;12504:436::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;12658:2:::1;12641:13;:19;;;;12619:110;;;::::0;-1:-1:-1;;;12619:110:0;;5850:2:1;12619:110:0::1;::::0;::::1;5832:21:1::0;5889:2;5869:18;;;5862:30;5928:34;5908:18;;;5901:62;-1:-1:-1;;;5979:18:1;;;5972:39;6028:19;;12619:110:0::1;5648:405:1::0;12619:110:0::1;12780:2;12762:14;:20;;;;12740:112;;;::::0;-1:-1:-1;;;12740:112:0;;6260:2:1;12740:112:0::1;::::0;::::1;6242:21:1::0;6299:2;6279:18;;;6272:30;6338:34;6318:18;;;6311:62;-1:-1:-1;;;6389:18:1;;;6382:40;6439:19;;12740:112:0::1;6058:406:1::0;12740:112:0::1;12863:12;:28:::0;;-1:-1:-1;;;;12902:30:0;-1:-1:-1;;;12863:28:0::1;::::0;;::::1;;-1:-1:-1::0;;;;12902:30:0;;-1:-1:-1;;;12902:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;12504:436::o;13196:161::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13310:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;13310:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13196:161::o;15466:435::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;15605:6:::1;15584:17;2410:16:::0;15600:1:::1;15584:17;:::i;:::-;15583:28;;;;:::i;:::-;15566:13;:45;;15544:148;;;::::0;-1:-1:-1;;;15544:148:0;;6671:2:1;15544:148:0::1;::::0;::::1;6653:21:1::0;6710:2;6690:18;;;6683:30;6749:34;6729:18;;;6722:62;-1:-1:-1;;;6800:18:1;;;6793:51;6861:19;;15544:148:0::1;6469:417:1::0;15544:148:0::1;15764:4;15743:17;2410:16:::0;15759:1:::1;15743:17;:::i;:::-;15742:26;;;;:::i;:::-;15725:13;:43;;15703:145;;;::::0;-1:-1:-1;;;15703:145:0;;7093:2:1;15703:145:0::1;::::0;::::1;7075:21:1::0;7132:2;7112:18;;;7105:30;7171:34;7151:18;;;7144:62;-1:-1:-1;;;7222:18:1;;;7215:50;7282:19;;15703:145:0::1;6891:416:1::0;15703:145:0::1;15859:18;:34:::0;15466:435::o;13623:183::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13747:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;13747:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13623:183::o;695:92::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;777:1:::1;760:19:::0;;-1:-1:-1;;;;;;760:19:0::1;::::0;;695:92::o;16166:275::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;16304:4:::1;16296;16275:17;2410:16:::0;16291:1:::1;16275:17;:::i;:::-;16274:26;;;;:::i;:::-;16273:35;;;;:::i;:::-;16261:8;:47;;16239:139;;;::::0;-1:-1:-1;;;16239:139:0;;7514:2:1;16239:139:0::1;::::0;::::1;7496:21:1::0;7553:2;7533:18;;;7526:30;7592:34;7572:18;;;7565:62;-1:-1:-1;;;7643:18:1;;;7636:40;7693:19;;16239:139:0::1;7312:406:1::0;16239:139:0::1;16412:21;:8:::0;16424::::1;16412:21;:::i;:::-;16389:20;:44:::0;-1:-1:-1;16166:275:0:o;11427:84::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;11481:14:::1;:22:::0;;-1:-1:-1;;;;11481:22:0::1;::::0;;11427:84::o;17488:177::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17572:24:0;::::1;17564:59;;;;-1:-1:-1::0;;;17564:59:0::1;;;;;;;:::i;:::-;17634:10;:23:::0;;-1:-1:-1;;;;;;17634:23:0::1;-1:-1:-1::0;;;;;17634:23:0;;;::::1;::::0;;;::::1;::::0;;17488:177::o;14963:236::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;15097:13:::1;-1:-1:-1::0;;;;;15089:21:0::1;:4;-1:-1:-1::0;;;;;15089:21:0::1;::::0;15081:60:::1;;;::::0;-1:-1:-1;;;15081:60:0;;8276:2:1;15081:60:0::1;::::0;::::1;8258:21:1::0;8315:2;8295:18;;;8288:30;8354:28;8334:18;;;8327:56;8400:18;;15081:60:0::1;8074:350:1::0;15081:60:0::1;-1:-1:-1::0;;;;;15152:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;15152:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14963:236::o;7086:183::-;7182:4;7199:40;7209:10;7221:9;7232:6;7199:9;:40::i;17140:175::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17223:24:0;::::1;17215:59;;;;-1:-1:-1::0;;;17215:59:0::1;;;;;;;:::i;:::-;17285:9;:22:::0;;-1:-1:-1;;;;;;17285:22:0::1;-1:-1:-1::0;;;;;17285:22:0;;;::::1;::::0;;;::::1;::::0;;17140:175::o;18697:240::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;18809:38:::1;::::0;-1:-1:-1;;;18809:38:0;;18841:4:::1;18809:38;::::0;::::1;1471:51:1::0;18782:24:0::1;::::0;-1:-1:-1;;;;;18809:23:0;::::1;::::0;::::1;::::0;1444:18:1;;18809:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18782:65;;18858:51;18881:5;18888:2;18892:16;18858:22;:51::i;:::-;18771:166;18697:240:::0;;:::o;19206:247::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19284:18:0;::::1;19276:46;;;::::0;-1:-1:-1;;;19276:46:0;;8820:2:1;19276:46:0::1;::::0;::::1;8802:21:1::0;8859:2;8839:18;;;8832:30;-1:-1:-1;;;8878:18:1;;;8871:45;8933:18;;19276:46:0::1;8618:339:1::0;19276:46:0::1;19336:12;19354:4;-1:-1:-1::0;;;;;19354:9:0::1;19371:21;19354:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19335:62;;;19416:7;19408:37;;;::::0;-1:-1:-1;;;19408:37:0;;9374:2:1;19408:37:0::1;::::0;::::1;9356:21:1::0;9413:2;9393:18;;;9386:30;-1:-1:-1;;;9432:18:1;;;9425:47;9489:18;;19408:37:0::1;9172:341:1::0;19408:37:0::1;19265:188;19206:247:::0;:::o;14300:332::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;14370:8:::1;::::0;-1:-1:-1;;;14370:8:0;::::1;;;14369:9;14361:38;;;::::0;-1:-1:-1;;;14361:38:0;;9720:2:1;14361:38:0::1;::::0;::::1;9702:21:1::0;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:46;9834:18;;14361:38:0::1;9518:340:1::0;14361:38:0::1;14482:4;14502:24;::::0;;;:9:::1;:24;::::0;;;;;;14573:10:::1;::::0;;14410:214;;-1:-1:-1;;;14410:214:0;;;;::::1;10204:34:1::0;;;;10254:18;;;10247:34;10297:18;;;10290:34;;;10340:18;;;10333:34;;;;-1:-1:-1;;;;;14573:10:0::1;10383:19:1::0;;;10376:44;14598:15:0::1;10436:19:1::0;;;10429:35;3902:42:0::1;::::0;14410:31:::1;::::0;14449:9:::1;::::0;10138:19:1;;14410:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17848:187::-:0;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17937:24:0;::::1;17929:59;;;;-1:-1:-1::0;;;17929:59:0::1;;;;;;;:::i;:::-;17999:15;:28:::0;;-1:-1:-1;;;;;;17999:28:0::1;-1:-1:-1::0;;;;;17999:28:0;;;::::1;::::0;;;::::1;::::0;;17848:187::o;11843:291::-;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;11958:6:::1;:16:::0;;-1:-1:-1;;;;11985:18:0;-1:-1:-1;;;11958:16:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;;11985:18:0;;;;;-1:-1:-1;;;11985:18:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12037:16:::1;::::0;12046:7;;::::1;::::0;::::1;::::0;12037:6;;::::1;;:16;:::i;:::-;12036:25;;12058:3;12036:25;12014:112;;;::::0;-1:-1:-1;;;12014:112:0;;11141:2:1;12014:112:0::1;::::0;::::1;11123:21:1::0;11180:2;11160:18;;;11153:30;11219:34;11199:18;;;11192:62;-1:-1:-1;;;11270:18:1;;;11263:35;11315:19;;12014:112:0::1;10939:401:1::0;13952:123:0;620:10;609:7;520;547:6;-1:-1:-1;;;;;547:6:0;;474:87;609:7;-1:-1:-1;;;;;609:21:0;;601:66;;;;-1:-1:-1;;;601:66:0;;;;;;;:::i;:::-;14012:8:::1;::::0;-1:-1:-1;;;14012:8:0;::::1;;;14011:9;14003:38;;;::::0;-1:-1:-1;;;14003:38:0;;9720:2:1;14003:38:0::1;::::0;::::1;9702:21:1::0;9759:2;9739:18;;;9732:30;-1:-1:-1;;;9778:18:1;;;9771:46;9834:18;;14003:38:0::1;9518:340:1::0;14003:38:0::1;14052:8;:15:::0;;-1:-1:-1;;;;14052:15:0::1;-1:-1:-1::0;;;14052:15:0::1;::::0;;13952:123::o;6741:337::-;-1:-1:-1;;;;;6834:19:0;;6826:68;;;;-1:-1:-1;;;6826:68:0;;11547:2:1;6826:68:0;;;11529:21:1;11586:2;11566:18;;;11559:30;11625:34;11605:18;;;11598:62;-1:-1:-1;;;11676:18:1;;;11669:34;11720:19;;6826:68:0;11345:400:1;6826:68:0;-1:-1:-1;;;;;6913:21:0;;6905:68;;;;-1:-1:-1;;;6905:68:0;;11952:2:1;6905:68:0;;;11934:21:1;11991:2;11971:18;;;11964:30;12030:34;12010:18;;;12003:62;-1:-1:-1;;;12081:18:1;;;12074:32;12123:19;;6905:68:0;11750:398:1;6905:68:0;-1:-1:-1;;;;;6986:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7038:32;;1679:25:1;;;7038:32:0;;1652:18:1;7038:32:0;;;;;;;6741:337;;;:::o;7888:3342::-;-1:-1:-1;;;;;7976:18:0;;7968:68;;;;-1:-1:-1;;;7968:68:0;;12355:2:1;7968:68:0;;;12337:21:1;12394:2;12374:18;;;12367:30;12433:34;12413:18;;;12406:62;-1:-1:-1;;;12484:18:1;;;12477:35;12529:19;;7968:68:0;12153:401:1;7968:68:0;-1:-1:-1;;;;;8055:16:0;;8047:64;;;;-1:-1:-1;;;8047:64:0;;12761:2:1;8047:64:0;;;12743:21:1;12800:2;12780:18;;;12773:30;12839:34;12819:18;;;12812:62;-1:-1:-1;;;12890:18:1;;;12883:33;12933:19;;8047:64:0;12559:399:1;8047:64:0;8139:1;8130:6;:10;8122:64;;;;-1:-1:-1;;;8122:64:0;;13165:2:1;8122:64:0;;;13147:21:1;13204:2;13184:18;;;13177:30;13243:34;13223:18;;;13216:62;-1:-1:-1;;;13294:18:1;;;13287:39;13343:19;;8122:64:0;12963:405:1;8122:64:0;8218:8;;-1:-1:-1;;;8218:8:0;;;;8217:9;:85;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8244:15:0;;;547:6;;8244:15;;;;:40;;-1:-1:-1;;;;;;8263:21:0;;8279:4;8263:21;;8244:40;:57;;;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8288:13:0;;;547:6;;8288:13;;8244:57;8199:171;;;8329:29;;-1:-1:-1;;;8329:29:0;;13575:2:1;8329:29:0;;;13557:21:1;13614:2;13594:18;;;13587:30;-1:-1:-1;;;13633:18:1;;;13626:49;13692:18;;8329:29:0;13373:343:1;8199:171:0;8386:14;;-1:-1:-1;;;8386:14:0;;;;8382:1345;;;520:7;547:6;-1:-1:-1;;;;;8439:15:0;;;547:6;;8439:15;;;;:49;;-1:-1:-1;520:7:0;547:6;-1:-1:-1;;;;;8475:13:0;;;547:6;;8475:13;;8439:49;:86;;;;-1:-1:-1;;;;;;8509:16:0;;;;8439:86;:128;;;;-1:-1:-1;;;;;;8546:21:0;;8560:6;8546:21;;8439:128;:158;;;;-1:-1:-1;8589:8:0;;-1:-1:-1;;;8589:8:0;;;;8588:9;8439:158;8417:1299;;;-1:-1:-1;;;;;8658:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;8715:35:0;;;;;;:31;:35;;;;;;;;8714:36;8658:92;8632:1069;;;8837:20;;8827:6;:30;;8793:153;;;;-1:-1:-1;;;8793:153:0;;13923:2:1;8793:153:0;;;13905:21:1;13962:2;13942:18;;;13935:30;14001:34;13981:18;;;13974:62;-1:-1:-1;;;14052:18:1;;;14045:35;14097:19;;8793:153:0;13721:401:1;8793:153:0;9029:9;;-1:-1:-1;;;;;6380:18:0;;6353:7;6380:18;;;:9;:18;;;;;;9003:22;;:6;:22;:::i;:::-;:35;;8969:140;;;;-1:-1:-1;;;8969:140:0;;14459:2:1;8969:140:0;;;14441:21:1;14498:2;14478:18;;;14471:30;-1:-1:-1;;;14517:18:1;;;14510:49;14576:18;;8969:140:0;14257:343:1;8969:140:0;8632:1069;;;-1:-1:-1;;;;;9161:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;9216:37:0;;;;;;:31;:37;;;;;;;;9215:38;9161:92;9135:566;;;9340:20;;9330:6;:30;;9296:154;;;;-1:-1:-1;;;9296:154:0;;14807:2:1;9296:154:0;;;14789:21:1;14846:2;14826:18;;;14819:30;14885:34;14865:18;;;14858:62;-1:-1:-1;;;14936:18:1;;;14929:36;14982:19;;9296:154:0;14605:402:1;9135:566:0;-1:-1:-1;;;;;9481:35:0;;;;;;:31;:35;;;;;;;;9476:225;;9601:9;;-1:-1:-1;;;;;6380:18:0;;6353:7;6380:18;;;:9;:18;;;;;;9575:22;;:6;:22;:::i;:::-;:35;;9541:140;;;;-1:-1:-1;;;9541:140:0;;14459:2:1;9541:140:0;;;14441:21:1;14498:2;14478:18;;;14471:30;-1:-1:-1;;;14517:18:1;;;14510:49;14576:18;;9541:140:0;14257:343:1;9541:140:0;9782:18;;9772:4;9739:12;6380:18;;;:9;:18;;;;;;-1:-1:-1;9754:46:0;;;;;9831:33;;-1:-1:-1;9856:8:0;;-1:-1:-1;;;9856:8:0;;;;9855:9;9831:33;:82;;;;-1:-1:-1;;;;;;9882:31:0;;;;;;:25;:31;;;;;;;;9881:32;9831:82;:125;;;;-1:-1:-1;;;;;;9931:25:0;;;;;;:19;:25;;;;;;;;9930:26;9831:125;:166;;;;-1:-1:-1;;;;;;9974:23:0;;;;;;:19;:23;;;;;;;;9973:24;9831:166;9813:294;;;10024:8;:15;;-1:-1:-1;;;;10024:15:0;-1:-1:-1;;;10024:15:0;;;10054:10;:8;:10::i;:::-;10079:8;:16;;-1:-1:-1;;;;10079:16:0;;;9813:294;10135:8;;-1:-1:-1;;;;;10160:25:0;;10119:12;10160:25;;;:19;:25;;;;;;10135:8;-1:-1:-1;;;10135:8:0;;;;;10134:9;;10160:25;;:52;;-1:-1:-1;;;;;;10189:23:0;;;;;;:19;:23;;;;;;;;10160:52;10156:100;;;-1:-1:-1;10239:5:0;10156:100;-1:-1:-1;;;;;10292:15:0;;10268:21;10292:15;;;:9;:15;;;;;;10340:23;;;;10318:111;;;;-1:-1:-1;;;10318:111:0;;15214:2:1;10318:111:0;;;15196:21:1;15253:2;15233:18;;;15226:30;15292:34;15272:18;;;15265:62;-1:-1:-1;;;15343:18:1;;;15336:36;15389:19;;10318:111:0;15012:402:1;10318:111:0;10442:12;10473:7;10469:602;;;-1:-1:-1;;;;;10501:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;10534:13:0;;-1:-1:-1;;;10534:13:0;;;;:17;;10501:50;10497:264;;;10589:13;;10606:4;;10580:22;;-1:-1:-1;;;10589:13:0;;;;10580:6;:22;:::i;:::-;10579:31;;;;:::i;:::-;10572:38;;10497:264;;;-1:-1:-1;;;;;10636:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;10671:12:0;;-1:-1:-1;;;10671:12:0;;;;:16;;10636:51;10632:129;;;10725:12;;10741:4;;10716:21;;-1:-1:-1;;;10725:12:0;;;;10716:6;:21;:::i;:::-;10715:30;;;;:::i;:::-;10708:37;;10632:129;10781:8;;10777:283;;-1:-1:-1;;;;;10888:15:0;;;;;;:9;:15;;;;;;;;:23;;;;;;;10952:4;10934:24;;;;;;;:32;;;;;;11009:35;1679:25:1;;;10852:13:0;;;;;10952:4;;10888:15;11009:35;;1652:18:1;11009:35:0;;;;;;;10777:283;-1:-1:-1;;;;;11106:15:0;;;;;;;:9;:15;;;;;;:25;;;;;;;11146:13;;;;;;;;;;:23;;;;;;11196:26;;;;;;11125:6;1679:25:1;;1667:2;1652:18;;1533:177;11196:26:0;;;;;;;;7957:3273;;;;7888:3342;;;:::o;819:381::-;964:59;;;-1:-1:-1;;;;;15611:32:1;;;964:59:0;;;15593:51:1;15660:18;;;;15653:34;;;964:59:0;;;;;;;;;;15566:18:1;;;;964:59:0;;;;;;;-1:-1:-1;;;;;964:59:0;-1:-1:-1;;;964:59:0;;;939:95;;-1:-1:-1;;;;939:10:0;;;;:95;;964:59;939:95;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:131;;;;1067:7;:57;;;;-1:-1:-1;1079:11:0;;:16;;:44;;;1110:4;1099:24;;;;;;;;;;;;:::i;:::-;1045:147;;;;-1:-1:-1;;;1045:147:0;;16442:2:1;1045:147:0;;;16424:21:1;16481:2;16461:18;;;16454:30;16520:34;16500:18;;;16493:62;-1:-1:-1;;;16571:18:1;;;16564:38;16619:19;;1045:147:0;16240:404:1;1045:147:0;892:308;;819:381;;;:::o;19721:1012::-;19784:18;;19760:21;19869:23;19784:18;19890:2;19869:23;:::i;:::-;19860:4;6353:7;6380:18;;;:9;:18;;;;;;19842:50;19838:122;;;19925:18;;:23;;19946:2;19925:23;:::i;:::-;19909:39;;19838:122;19996:16;;;20010:1;19996:16;;;;;;;;19972:21;;19996:16;;;;;;;;;;-1:-1:-1;19996:16:0;19972:40;;20041:4;20023;20028:1;20023:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20023:23:0;;;-1:-1:-1;;;;;20023:23:0;;;;;2890:42;20057:4;20062:1;20057:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20057:14:0;;;:7;;;;;;;;;;;:14;20084:198;;-1:-1:-1;;;20084:198:0;;3902:42;;20084:66;;:198;;20165:13;;20193:1;;20209:4;;20236;;20256:15;;20084:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20316:21:0;;-1:-1:-1;;20352:14:0;;;-1:-1:-1;20348:378:0;;20417:6;;20383:17;;20427:3;;20404:19;;-1:-1:-1;;;20417:6:0;;;;20404:10;:19;:::i;:::-;20403:27;;;;:::i;:::-;20383:47;-1:-1:-1;20445:18:0;20466:22;20383:47;20466:10;:22;:::i;:::-;20527:10;;20519:47;;20445:43;;-1:-1:-1;;;;;;20527:10:0;;20445:43;;20519:47;;;;20445:43;20527:10;20519:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20603:9:0;;20595:45;;20505:61;;-1:-1:-1;;;;;;20603:9:0;;20626;;20595:45;;;;20626:9;20603;20595:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20662:52:0;;;18233:25:1;;;18289:2;18274:18;;18267:34;;;18317:18;;;18310:34;;;20581:59:0;;-1:-1:-1;20662:52:0;;18221:2:1;18206:18;20662:52:0;;;;;;;20368:358;;20348:378;19749:984;;;;19721:1012::o;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1904:328::-;1981:6;1989;1997;2050:2;2038:9;2029:7;2025:23;2021:32;2018:52;;;2066:1;2063;2056:12;2018:52;2089:29;2108:9;2089:29;:::i;:::-;2079:39;;2137:38;2171:2;2160:9;2156:18;2137:38;:::i;:::-;2127:48;;2222:2;2211:9;2207:18;2194:32;2184:42;;1904:328;;;;;:::o;2237:180::-;2296:6;2349:2;2337:9;2328:7;2324:23;2320:32;2317:52;;;2365:1;2362;2355:12;2317:52;-1:-1:-1;2388:23:1;;2237:180;-1:-1:-1;2237:180:1:o;2630:156::-;2696:20;;2756:4;2745:16;;2735:27;;2725:55;;2776:1;2773;2766:12;2791:252;2855:6;2863;2916:2;2904:9;2895:7;2891:23;2887:32;2884:52;;;2932:1;2929;2922:12;2884:52;2955:27;2972:9;2955:27;:::i;:::-;2945:37;;3001:36;3033:2;3022:9;3018:18;3001:36;:::i;:::-;2991:46;;2791:252;;;;;:::o;3048:118::-;3134:5;3127:13;3120:21;3113:5;3110:32;3100:60;;3156:1;3153;3146:12;3100:60;3048:118;:::o;3171:315::-;3236:6;3244;3297:2;3285:9;3276:7;3272:23;3268:32;3265:52;;;3313:1;3310;3303:12;3265:52;3336:29;3355:9;3336:29;:::i;:::-;3326:39;;3415:2;3404:9;3400:18;3387:32;3428:28;3450:5;3428:28;:::i;:::-;3475:5;3465:15;;;3171:315;;;;;:::o;3491:186::-;3550:6;3603:2;3591:9;3582:7;3578:23;3574:32;3571:52;;;3619:1;3616;3609:12;3571:52;3642:29;3661:9;3642:29;:::i;:::-;3632:39;3491:186;-1:-1:-1;;;3491:186:1:o;3682:260::-;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3850:29;3869:9;3850:29;:::i;:::-;3840:39;;3898:38;3932:2;3921:9;3917:18;3898:38;:::i;4356:356::-;4558:2;4540:21;;;4577:18;;;4570:30;4636:34;4631:2;4616:18;;4609:62;4703:2;4688:18;;4356:356::o;4717:127::-;4778:10;4773:3;4769:20;4766:1;4759:31;4809:4;4806:1;4799:15;4833:4;4830:1;4823:15;4849:168;4922:9;;;4953;;4970:15;;;4964:22;;4950:37;4940:71;;4991:18;;:::i;5022:217::-;5062:1;5088;5078:132;;5132:10;5127:3;5123:20;5120:1;5113:31;5167:4;5164:1;5157:15;5195:4;5192:1;5185:15;5078:132;-1:-1:-1;5224:9:1;;5022:217::o;7723:346::-;7925:2;7907:21;;;7964:2;7944:18;;;7937:30;-1:-1:-1;;;7998:2:1;7983:18;;7976:52;8060:2;8045:18;;7723:346::o;8429:184::-;8499:6;8552:2;8540:9;8531:7;8527:23;8523:32;8520:52;;;8568:1;8565;8558:12;8520:52;-1:-1:-1;8591:16:1;;8429:184;-1:-1:-1;8429:184:1:o;10475:306::-;10563:6;10571;10579;10632:2;10620:9;10611:7;10607:23;10603:32;10600:52;;;10648:1;10645;10638:12;10600:52;10677:9;10671:16;10661:26;;10727:2;10716:9;10712:18;10706:25;10696:35;;10771:2;10760:9;10756:18;10750:25;10740:35;;10475:306;;;;;:::o;10786:148::-;10874:4;10853:12;;;10867;;;10849:31;;10892:13;;10889:39;;;10908:18;;:::i;14127:125::-;14192:9;;;14213:10;;;14210:36;;;14226:18;;:::i;15698:287::-;15827:3;15865:6;15859:13;15881:66;15940:6;15935:3;15928:4;15920:6;15916:17;15881:66;:::i;:::-;15963:16;;;;;15698:287;-1:-1:-1;;15698:287:1:o;15990:245::-;16057:6;16110:2;16098:9;16089:7;16085:23;16081:32;16078:52;;;16126:1;16123;16116:12;16078:52;16158:9;16152:16;16177:28;16199:5;16177:28;:::i;16781:127::-;16842:10;16837:3;16833:20;16830:1;16823:31;16873:4;16870:1;16863:15;16897:4;16894:1;16887:15;16913:980;17175:4;17223:3;17212:9;17208:19;17254:6;17243:9;17236:25;17280:2;17318:6;17313:2;17302:9;17298:18;17291:34;17361:3;17356:2;17345:9;17341:18;17334:31;17385:6;17420;17414:13;17451:6;17443;17436:22;17489:3;17478:9;17474:19;17467:26;;17528:2;17520:6;17516:15;17502:29;;17549:1;17559:195;17573:6;17570:1;17567:13;17559:195;;;17638:13;;-1:-1:-1;;;;;17634:39:1;17622:52;;17729:15;;;;17694:12;;;;17670:1;17588:9;17559:195;;;-1:-1:-1;;;;;;;17810:32:1;;;;17805:2;17790:18;;17783:60;-1:-1:-1;;;17874:3:1;17859:19;17852:35;17771:3;16913:980;-1:-1:-1;;;16913:980:1:o;17898:128::-;17965:9;;;17986:11;;;17983:37;;;18000:18;;:::i

Swarm Source

ipfs://9f9b8803f219d38dc90f6e2d551d610570c328ed1bcb5dd2222ffc13663342e8

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.