ETH Price: $3,327.56 (-4.04%)

Contract

0x0A731bEA0Be704B999C9F20208C787A25B6d2f5D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Can Trigger213901152024-12-13 0:49:5913 days ago1734050999IN
0x0A731bEA...25B6d2f5D
0 ETH0.0007060914.19733507

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeReceiver

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    
    function symbol() external view returns(string memory);
    
    function name() external view returns(string memory);

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

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

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

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

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

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

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

interface IOwnedContract {
    function getOwner() external view returns (address);
}

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}

interface IStaking {
    function depositRewards(uint256 amount) external;
}

/**

    40% To Marketing
    20% To Team
    40% To Staking
 */
contract FeeReceiver {

    address public constant token = 0x96b1599F6D6b542A85deDAb026F1D0B9b5d86110;
    address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    // destination addresses
    address public team = 0x8e72b0145972B7609685e50fa08130cA355608e6;
    address public staking1 = 0x9aE90248Ef7ebb4622df195C70c4E7BC54c91A0f;
    address public staking2 = 0x11271331192a1c52A710Eaecab1C609f07f7cE47;
    address public staking3 = 0x6f40dFA02C1fe60fAa8ef9E0eae1BDE58375C791;
    address public marketing = 0x95a7E967705152a2679dC23d2B6f97F31cc143EB;

    // destination shares
    uint256 public teamShare = 20;
    uint256 public stakingShare = 40;

    // mapping for who can call trigger
    mapping ( address => bool ) public canTrigger;

    modifier onlyOwner(){
        require(
            msg.sender == IOwnedContract(token).getOwner(),
            'Only Token Owner'
        );
        _;
    }

    constructor() {
        canTrigger[msg.sender] = true;
    }

    function setShares(uint256 _teamShare, uint256 _stakingShare) external onlyOwner {
        teamShare = _teamShare;
        stakingShare = _stakingShare;
    }

    function setTeam(address _team) external onlyOwner {
        team = _team;
    }

    function setStaking1(address _staking1) external onlyOwner {
        staking1 = _staking1;
    }

    function setStaking2(address _staking2) external onlyOwner {
        staking2 = _staking2;
    }

    function setStaking3(address _staking3) external onlyOwner {
        staking3 = _staking3;
    }

    function setMarketing(address _marketing) external onlyOwner {
        marketing = _marketing;
    }

    function setRouter(address _router) external onlyOwner {
        router = _router;
    }

    function setCanTrigger(address _address, bool _canTrigger) external onlyOwner {
        canTrigger[_address] = _canTrigger;
    }

    function trigger(uint256 minOut) external {
        require(
            canTrigger[msg.sender] || canTrigger[address(0)],
            'Not Allowed'
        );

        // get balance
        uint256 bal = IERC20(token).balanceOf(address(this));
        if (bal == 0) {
            return;
        }

        // split the balance 
        uint256 stakingAmount = ( bal * stakingShare ) / 100;
        if (stakingAmount > 0) {

            // determine amounts for each pool based on balance
            // IF all balances are the same: staking3 gets 2x staking2, and staking2 gets 2x staking1
            (uint256 amount3, uint256 amount2, uint256 amount1) = splitRewards(stakingAmount);

            // deposit rewards for staking3
            if (amount3 > 0) {
                IERC20(token).approve(staking3, amount3);
                IStaking(staking3).depositRewards(amount3);
            }

            // deposit rewards for staking2
            if (amount2 > 0) {
                IERC20(token).approve(staking2, amount2);
                IStaking(staking2).depositRewards(amount2);
            }

            // deposit rewards for staking1
            if (amount1 > 0) {
                IERC20(token).approve(staking1, amount1);
                IStaking(staking1).depositRewards(amount1);
            }
        }

        // get the new balance
        uint256 newBal = IERC20(token).balanceOf(address(this));

        // exit function if no tokens exist for the rest
        if (newBal == 0) {
            return;
        }

        // swap the remaining amount to ETH
        _swap(newBal, minOut);

        // divvy up the eth
        uint256 teamAmount = ( address(this).balance * teamShare ) / 100;
        uint256 marketingAmount = address(this).balance - teamAmount;

        // send eth
        if (teamAmount > 0) {
            TransferHelper.safeTransferETH(team, teamAmount);
        }
        if (marketingAmount > 0) {
            TransferHelper.safeTransferETH(marketing, marketingAmount);
        }
    }

    function splitRewards(uint256 numRewards) public view returns (uint256 amountForPool3, uint256 amountForPool2, uint256 amountForPool1) {
        
        // determine TVL
        uint256 tvlPool1 = IERC20(token).balanceOf(staking1);
        uint256 tvlPool2 = IERC20(token).balanceOf(staking2);
        uint256 tvlPool3 = IERC20(token).balanceOf(staking3);

        // Base multipliers to maintain the ratio (4:2:1) if all have the same TVL
        uint256 weightedPool1 = tvlPool1 * 1;
        uint256 weightedPool2 = tvlPool2 * 2;
        uint256 weightedPool3 = tvlPool3 * 4;

        uint256 totalWeight = weightedPool1 + weightedPool2 + weightedPool3;
        if (totalWeight == 0) {
            // If no TVL at all, just return 0 to avoid division by zero
            return (0, 0, 0);
        }

        amountForPool1 = (numRewards * weightedPool1) / totalWeight;
        amountForPool2 = (numRewards * weightedPool2) / totalWeight;
        amountForPool3 = (numRewards * weightedPool3) / totalWeight;

        return (amountForPool3, amountForPool2, amountForPool1);
    }

    function _swap(uint256 amount, uint256 minOut) internal {

        // approve the router
        IERC20(token).approve(router, amount);

        // get the path
        address[] memory path = new address[](2);
        path[0] = token;
        path[1] = IUniswapV2Router02(router).WETH();
        
        // swap
        IUniswapV2Router02(router).swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            minOut,
            path,
            address(this),
            block.timestamp + 1000
        );

        // delete path to clear memory
        delete path;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"canTrigger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_canTrigger","type":"bool"}],"name":"setCanTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"setMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamShare","type":"uint256"},{"internalType":"uint256","name":"_stakingShare","type":"uint256"}],"name":"setShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking1","type":"address"}],"name":"setStaking1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking2","type":"address"}],"name":"setStaking2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking3","type":"address"}],"name":"setStaking3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numRewards","type":"uint256"}],"name":"splitRewards","outputs":[{"internalType":"uint256","name":"amountForPool3","type":"uint256"},{"internalType":"uint256","name":"amountForPool2","type":"uint256"},{"internalType":"uint256","name":"amountForPool1","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minOut","type":"uint256"}],"name":"trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600080546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d17909155600180548216738e72b0145972b7609685e50fa08130ca355608e6179055600280548216739ae90248ef7ebb4622df195c70c4e7bc54c91a0f1790556003805482167311271331192a1c52a710eaecab1c609f07f7ce47179055600480548216736f40dfa02c1fe60faa8ef9e0eae1bde58375c791179055600580549091167395a7e967705152a2679dc23d2b6f97f31cc143eb179055601460065560286007553480156100da57600080fd5b50336000908152600860205260409020805460ff191660011790556116d6806101046000396000f3fe6080604052600436106101235760003560e01c80638b0414d5116100a0578063ea6ef2fe11610064578063ea6ef2fe1461036d578063ece8853814610383578063ed684cc6146103a3578063f887ea40146103c3578063fc0c546a146103e357600080fd5b80638b0414d5146102ae578063a50f13d8146102ce578063c0d78655146102f2578063e201beaf14610312578063e75882be1461033257600080fd5b80635dfa736e116100e75780635dfa736e146101ee5780637766f5ea1461020e5780637bab6d141461024e5780637c3de90e1461026e57806385f2aef21461028e57600080fd5b8063095cf5c61461012f5780632aca3e7d146101515780632d3e474a1461017157806331bed609146101ae5780635856cdd6146101ce57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a36600461142c565b610405565b005b34801561015d57600080fd5b5061014f61016c366004611450565b6104d0565b34801561017d57600080fd5b50600554610191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ba57600080fd5b50600354610191906001600160a01b031681565b3480156101da57600080fd5b50600254610191906001600160a01b031681565b3480156101fa57600080fd5b5061014f61020936600461142c565b61057b565b34801561021a57600080fd5b5061023e61022936600461142c565b60086020526000908152604090205460ff1681565b60405190151581526020016101a5565b34801561025a57600080fd5b5061014f61026936600461142c565b61063d565b34801561027a57600080fd5b50600454610191906001600160a01b031681565b34801561029a57600080fd5b50600154610191906001600160a01b031681565b3480156102ba57600080fd5b5061014f6102c936600461142c565b6106ff565b3480156102da57600080fd5b506102e460075481565b6040519081526020016101a5565b3480156102fe57600080fd5b5061014f61030d36600461142c565b6107c1565b34801561031e57600080fd5b5061014f61032d366004611480565b610883565b34801561033e57600080fd5b5061035261034d3660046114b9565b61094e565b604080519384526020840192909252908201526060016101a5565b34801561037957600080fd5b506102e460065481565b34801561038f57600080fd5b5061014f61039e36600461142c565b610b8f565b3480156103af57600080fd5b5061014f6103be3660046114b9565b610c51565b3480156103cf57600080fd5b50600054610191906001600160a01b031681565b3480156103ef57600080fd5b5061019160008051602061168183398151915281565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906114d2565b6001600160a01b0316336001600160a01b0316146104ae5760405162461bcd60e51b81526004016104a5906114ef565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054091906114d2565b6001600160a01b0316336001600160a01b0316146105705760405162461bcd60e51b81526004016104a5906114ef565b600691909155600755565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb91906114d2565b6001600160a01b0316336001600160a01b03161461061b5760405162461bcd60e51b81526004016104a5906114ef565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad91906114d2565b6001600160a01b0316336001600160a01b0316146106dd5760405162461bcd60e51b81526004016104a5906114ef565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f91906114d2565b6001600160a01b0316336001600160a01b03161461079f5760405162461bcd60e51b81526004016104a5906114ef565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083191906114d2565b6001600160a01b0316336001600160a01b0316146108615760405162461bcd60e51b81526004016104a5906114ef565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f391906114d2565b6001600160a01b0316336001600160a01b0316146109235760405162461bcd60e51b81526004016104a5906114ef565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6002546040516370a0823160e01b81526001600160a01b039091166004820152600090819081908190600080516020611681833981519152906370a0823190602401602060405180830381865afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d19190611519565b6003546040516370a0823160e01b81526001600160a01b039091166004820152909150600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190611519565b600480546040516370a0823160e01b81526001600160a01b0390911691810191909152909150600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad49190611519565b90506000610ae3846001611548565b90506000610af2846002611548565b90506000610b01846004611548565b9050600081610b108486611565565b610b1a9190611565565b905080600003610b3b57600080600099509950995050505050505050610b88565b80610b46858d611548565b610b509190611578565b975080610b5d848d611548565b610b679190611578565b985080610b74838d611548565b610b7e9190611578565b9950505050505050505b9193909250565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff91906114d2565b6001600160a01b0316336001600160a01b031614610c2f5760405162461bcd60e51b81526004016104a5906114ef565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff1680610c9957506000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75460ff165b610cd35760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b60448201526064016104a5565b6040516370a0823160e01b8152306004820152600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611519565b905080600003610d51575050565b6000606460075483610d639190611548565b610d6d9190611578565b9050801561104a576000806000610d838461094e565b919450925090508215610e74576004805460405163095ea7b360e01b81526001600160a01b0390911691810191909152602481018490526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e16919061159a565b50600480546040516345efb3f960e11b81529182018590526001600160a01b031690638bdf67f290602401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b8115610f5d5760035460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd919061159a565b506003546040516345efb3f960e11b8152600481018490526001600160a01b0390911690638bdf67f290602401600060405180830381600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050505b80156110465760025460405163095ea7b360e01b81526001600160a01b039091166004820152602481018290526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe6919061159a565b506002546040516345efb3f960e11b8152600481018390526001600160a01b0390911690638bdf67f290602401600060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050505b5050505b6040516370a0823160e01b8152306004820152600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba9190611519565b9050806000036110ca5750505050565b6110d48185611140565b60006064600654476110e69190611548565b6110f09190611578565b905060006110fe82476115b7565b9050811561111c5760015461111c906001600160a01b031683611335565b801561113857600554611138906001600160a01b031682611335565b505050505050565b60005460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af115801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c3919061159a565b5060408051600280825260608201835260009260208301908036833701905050905060008051602061168183398151915281600081518110611207576112076115ca565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906114d2565b816001815181106112af576112af6115ca565b6001600160a01b0392831660209182029290920101526000541663791ac947848484306112de426103e8611565565b6040518663ffffffff1660e01b81526004016112fe9594939291906115e0565b600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50505050505050565b604080516000808252602082019092526001600160a01b03841690839060405161135f9190611651565b60006040518083038185875af1925050503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b505090508061140f5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b60648201526084016104a5565b505050565b6001600160a01b038116811461142957600080fd5b50565b60006020828403121561143e57600080fd5b813561144981611414565b9392505050565b6000806040838503121561146357600080fd5b50508035926020909101359150565b801515811461142957600080fd5b6000806040838503121561149357600080fd5b823561149e81611414565b915060208301356114ae81611472565b809150509250929050565b6000602082840312156114cb57600080fd5b5035919050565b6000602082840312156114e457600080fd5b815161144981611414565b60208082526010908201526f27b7363c902a37b5b2b71027bbb732b960811b604082015260600190565b60006020828403121561152b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761155f5761155f611532565b92915050565b8082018082111561155f5761155f611532565b60008261159557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156115ac57600080fd5b815161144981611472565b8181038181111561155f5761155f611532565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116305784516001600160a01b03168352938301939183019160010161160b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000825160005b818110156116725760208186018101518583015201611658565b50600092019182525091905056fe00000000000000000000000096b1599f6d6b542a85dedab026f1d0b9b5d86110a26469706673582212207e7834abe4e65de58b666883cb169773eb5270dba9e263521573003fa695dc4e64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101235760003560e01c80638b0414d5116100a0578063ea6ef2fe11610064578063ea6ef2fe1461036d578063ece8853814610383578063ed684cc6146103a3578063f887ea40146103c3578063fc0c546a146103e357600080fd5b80638b0414d5146102ae578063a50f13d8146102ce578063c0d78655146102f2578063e201beaf14610312578063e75882be1461033257600080fd5b80635dfa736e116100e75780635dfa736e146101ee5780637766f5ea1461020e5780637bab6d141461024e5780637c3de90e1461026e57806385f2aef21461028e57600080fd5b8063095cf5c61461012f5780632aca3e7d146101515780632d3e474a1461017157806331bed609146101ae5780635856cdd6146101ce57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a36600461142c565b610405565b005b34801561015d57600080fd5b5061014f61016c366004611450565b6104d0565b34801561017d57600080fd5b50600554610191906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ba57600080fd5b50600354610191906001600160a01b031681565b3480156101da57600080fd5b50600254610191906001600160a01b031681565b3480156101fa57600080fd5b5061014f61020936600461142c565b61057b565b34801561021a57600080fd5b5061023e61022936600461142c565b60086020526000908152604090205460ff1681565b60405190151581526020016101a5565b34801561025a57600080fd5b5061014f61026936600461142c565b61063d565b34801561027a57600080fd5b50600454610191906001600160a01b031681565b34801561029a57600080fd5b50600154610191906001600160a01b031681565b3480156102ba57600080fd5b5061014f6102c936600461142c565b6106ff565b3480156102da57600080fd5b506102e460075481565b6040519081526020016101a5565b3480156102fe57600080fd5b5061014f61030d36600461142c565b6107c1565b34801561031e57600080fd5b5061014f61032d366004611480565b610883565b34801561033e57600080fd5b5061035261034d3660046114b9565b61094e565b604080519384526020840192909252908201526060016101a5565b34801561037957600080fd5b506102e460065481565b34801561038f57600080fd5b5061014f61039e36600461142c565b610b8f565b3480156103af57600080fd5b5061014f6103be3660046114b9565b610c51565b3480156103cf57600080fd5b50600054610191906001600160a01b031681565b3480156103ef57600080fd5b5061019160008051602061168183398151915281565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047591906114d2565b6001600160a01b0316336001600160a01b0316146104ae5760405162461bcd60e51b81526004016104a5906114ef565b60405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054091906114d2565b6001600160a01b0316336001600160a01b0316146105705760405162461bcd60e51b81526004016104a5906114ef565b600691909155600755565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb91906114d2565b6001600160a01b0316336001600160a01b03161461061b5760405162461bcd60e51b81526004016104a5906114ef565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad91906114d2565b6001600160a01b0316336001600160a01b0316146106dd5760405162461bcd60e51b81526004016104a5906114ef565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f91906114d2565b6001600160a01b0316336001600160a01b03161461079f5760405162461bcd60e51b81526004016104a5906114ef565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083191906114d2565b6001600160a01b0316336001600160a01b0316146108615760405162461bcd60e51b81526004016104a5906114ef565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f391906114d2565b6001600160a01b0316336001600160a01b0316146109235760405162461bcd60e51b81526004016104a5906114ef565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6002546040516370a0823160e01b81526001600160a01b039091166004820152600090819081908190600080516020611681833981519152906370a0823190602401602060405180830381865afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d19190611519565b6003546040516370a0823160e01b81526001600160a01b039091166004820152909150600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a519190611519565b600480546040516370a0823160e01b81526001600160a01b0390911691810191909152909150600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610ab0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad49190611519565b90506000610ae3846001611548565b90506000610af2846002611548565b90506000610b01846004611548565b9050600081610b108486611565565b610b1a9190611565565b905080600003610b3b57600080600099509950995050505050505050610b88565b80610b46858d611548565b610b509190611578565b975080610b5d848d611548565b610b679190611578565b985080610b74838d611548565b610b7e9190611578565b9950505050505050505b9193909250565b6000805160206116818339815191526001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff91906114d2565b6001600160a01b0316336001600160a01b031614610c2f5760405162461bcd60e51b81526004016104a5906114ef565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526008602052604090205460ff1680610c9957506000805260086020527f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c75460ff165b610cd35760405162461bcd60e51b815260206004820152600b60248201526a139bdd08105b1b1bddd95960aa1b60448201526064016104a5565b6040516370a0823160e01b8152306004820152600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611519565b905080600003610d51575050565b6000606460075483610d639190611548565b610d6d9190611578565b9050801561104a576000806000610d838461094e565b919450925090508215610e74576004805460405163095ea7b360e01b81526001600160a01b0390911691810191909152602481018490526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610df2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e16919061159a565b50600480546040516345efb3f960e11b81529182018590526001600160a01b031690638bdf67f290602401600060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050505b8115610f5d5760035460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd919061159a565b506003546040516345efb3f960e11b8152600481018490526001600160a01b0390911690638bdf67f290602401600060405180830381600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050505b80156110465760025460405163095ea7b360e01b81526001600160a01b039091166004820152602481018290526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af1158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe6919061159a565b506002546040516345efb3f960e11b8152600481018390526001600160a01b0390911690638bdf67f290602401600060405180830381600087803b15801561102d57600080fd5b505af1158015611041573d6000803e3d6000fd5b505050505b5050505b6040516370a0823160e01b8152306004820152600090600080516020611681833981519152906370a0823190602401602060405180830381865afa158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba9190611519565b9050806000036110ca5750505050565b6110d48185611140565b60006064600654476110e69190611548565b6110f09190611578565b905060006110fe82476115b7565b9050811561111c5760015461111c906001600160a01b031683611335565b801561113857600554611138906001600160a01b031682611335565b505050505050565b60005460405163095ea7b360e01b81526001600160a01b039091166004820152602481018390526000805160206116818339815191529063095ea7b3906044016020604051808303816000875af115801561119f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c3919061159a565b5060408051600280825260608201835260009260208301908036833701905050905060008051602061168183398151915281600081518110611207576112076115ca565b60200260200101906001600160a01b031690816001600160a01b03168152505060008054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129c91906114d2565b816001815181106112af576112af6115ca565b6001600160a01b0392831660209182029290920101526000541663791ac947848484306112de426103e8611565565b6040518663ffffffff1660e01b81526004016112fe9594939291906115e0565b600060405180830381600087803b15801561131857600080fd5b505af115801561132c573d6000803e3d6000fd5b50505050505050565b604080516000808252602082019092526001600160a01b03841690839060405161135f9190611651565b60006040518083038185875af1925050503d806000811461139c576040519150601f19603f3d011682016040523d82523d6000602084013e6113a1565b606091505b505090508061140f5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527308115512081d1c985b9cd9995c8819985a5b195960621b60648201526084016104a5565b505050565b6001600160a01b038116811461142957600080fd5b50565b60006020828403121561143e57600080fd5b813561144981611414565b9392505050565b6000806040838503121561146357600080fd5b50508035926020909101359150565b801515811461142957600080fd5b6000806040838503121561149357600080fd5b823561149e81611414565b915060208301356114ae81611472565b809150509250929050565b6000602082840312156114cb57600080fd5b5035919050565b6000602082840312156114e457600080fd5b815161144981611414565b60208082526010908201526f27b7363c902a37b5b2b71027bbb732b960811b604082015260600190565b60006020828403121561152b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761155f5761155f611532565b92915050565b8082018082111561155f5761155f611532565b60008261159557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156115ac57600080fd5b815161144981611472565b8181038181111561155f5761155f611532565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116305784516001600160a01b03168352938301939183019160010161160b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000825160005b818110156116725760208186018101518583015201611658565b50600092019182525091905056fe00000000000000000000000096b1599f6d6b542a85dedab026f1d0b9b5d86110a26469706673582212207e7834abe4e65de58b666883cb169773eb5270dba9e263521573003fa695dc4e64736f6c63430008140033

Deployed Bytecode Sourcemap

10387:5822:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11586:82;;;;;;;;;;-1:-1:-1;11586:82:0;;;;;:::i;:::-;;:::i;:::-;;11417:161;;;;;;;;;;-1:-1:-1;11417:161:0;;;;;:::i;:::-;;:::i;10899:69::-;;;;;;;;;;-1:-1:-1;10899:69:0;;;;-1:-1:-1;;;;;10899:69:0;;;;;;-1:-1:-1;;;;;819:32:1;;;801:51;;789:2;774:18;10899:69:0;;;;;;;;10749:68;;;;;;;;;;-1:-1:-1;10749:68:0;;;;-1:-1:-1;;;;;10749:68:0;;;10674;;;;;;;;;;-1:-1:-1;10674:68:0;;;;-1:-1:-1;;;;;10674:68:0;;;11782:98;;;;;;;;;;-1:-1:-1;11782:98:0;;;;;:::i;:::-;;:::i;11122:45::-;;;;;;;;;;-1:-1:-1;11122:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1028:14:1;;1021:22;1003:41;;991:2;976:18;11122:45:0;863:187:1;11888:98:0;;;;;;;;;;-1:-1:-1;11888:98:0;;;;;:::i;:::-;;:::i;10824:68::-;;;;;;;;;;-1:-1:-1;10824:68:0;;;;-1:-1:-1;;;;;10824:68:0;;;10603:64;;;;;;;;;;-1:-1:-1;10603:64:0;;;;-1:-1:-1;;;;;10603:64:0;;;11994:102;;;;;;;;;;-1:-1:-1;11994:102:0;;;;;:::i;:::-;;:::i;11040:32::-;;;;;;;;;;;;;;;;;;;1201:25:1;;;1189:2;1174:18;11040:32:0;1055:177:1;12104:90:0;;;;;;;;;;-1:-1:-1;12104:90:0;;;;;:::i;:::-;;:::i;12202:131::-;;;;;;;;;;-1:-1:-1;12202:131:0;;;;;:::i;:::-;;:::i;14438:1104::-;;;;;;;;;;-1:-1:-1;14438:1104:0;;;;;:::i;:::-;;:::i;:::-;;;;2134:25:1;;;2190:2;2175:18;;2168:34;;;;2218:18;;;2211:34;2122:2;2107:18;14438:1104:0;1932:319:1;11004:29:0;;;;;;;;;;;;;;;;11676:98;;;;;;;;;;-1:-1:-1;11676:98:0;;;;;:::i;:::-;;:::i;12341:2089::-;;;;;;;;;;-1:-1:-1;12341:2089:0;;;;;:::i;:::-;;:::i;10498:66::-;;;;;;;;;;-1:-1:-1;10498:66:0;;;;-1:-1:-1;;;;;10498:66:0;;;10417:74;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;10417:74:0;;11586:82;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;;;;;;;;;11648:4:::1;:12:::0;;-1:-1:-1;;;;;;11648:12:0::1;-1:-1:-1::0;;;;;11648:12:0;;;::::1;::::0;;;::::1;::::0;;11586:82::o;11417:161::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;11509:9:::1;:22:::0;;;;11542:12:::1;:28:::0;11417:161::o;11782:98::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;11852:8:::1;:20:::0;;-1:-1:-1;;;;;;11852:20:0::1;-1:-1:-1::0;;;;;11852:20:0;;;::::1;::::0;;;::::1;::::0;;11782:98::o;11888:::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;11958:8:::1;:20:::0;;-1:-1:-1;;;;;;11958:20:0::1;-1:-1:-1::0;;;;;11958:20:0;;;::::1;::::0;;;::::1;::::0;;11888:98::o;11994:102::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;12066:9:::1;:22:::0;;-1:-1:-1;;;;;;12066:22:0::1;-1:-1:-1::0;;;;;12066:22:0;;;::::1;::::0;;;::::1;::::0;;11994:102::o;12104:90::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;12170:6:::1;:16:::0;;-1:-1:-1;;;;;;12170:16:0::1;-1:-1:-1::0;;;;;12170:16:0;;;::::1;::::0;;;::::1;::::0;;12104:90::o;12202:131::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12291:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:34;;-1:-1:-1;;12291:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12202:131::o;14438:1104::-;14663:8;;14639:33;;-1:-1:-1;;;14639:33:0;;-1:-1:-1;;;;;14663:8:0;;;14639:33;;;801:51:1;14501:22:0;;;;;;;;-1:-1:-1;;;;;;;;;;;10449:42:0;14639:23;;774:18:1;;14639:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14726:8;;14702:33;;-1:-1:-1;;;14702:33:0;;-1:-1:-1;;;;;14726:8:0;;;14702:33;;;801:51:1;14620:52:0;;-1:-1:-1;14683:16:0;;-1:-1:-1;;;;;;;;;;;10449:42:0;14702:23;;774:18:1;;14702:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14789:8;;;14765:33;;-1:-1:-1;;;14765:33:0;;-1:-1:-1;;;;;14789:8:0;;;14765:33;;;801:51:1;;;;14683:52:0;;-1:-1:-1;14746:16:0;;-1:-1:-1;;;;;;;;;;;10449:42:0;14765:23;;774:18:1;;14765:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14746:52;-1:-1:-1;14895:21:0;14919:12;:8;14930:1;14919:12;:::i;:::-;14895:36;-1:-1:-1;14942:21:0;14966:12;:8;14977:1;14966:12;:::i;:::-;14942:36;-1:-1:-1;14989:21:0;15013:12;:8;15024:1;15013:12;:::i;:::-;14989:36;-1:-1:-1;15038:19:0;14989:36;15060:29;15076:13;15060;:29;:::i;:::-;:45;;;;:::i;:::-;15038:67;;15120:11;15135:1;15120:16;15116:139;;15235:1;15238;15241;15227:16;;;;;;;;;;;;;;;15116:139;15315:11;15285:26;15298:13;15285:10;:26;:::i;:::-;15284:42;;;;:::i;:::-;15267:59;-1:-1:-1;15385:11:0;15355:26;15368:13;15355:10;:26;:::i;:::-;15354:42;;;;:::i;:::-;15337:59;-1:-1:-1;15455:11:0;15425:26;15438:13;15425:10;:26;:::i;:::-;15424:42;;;;:::i;:::-;15407:59;;15479:55;;;;;;;14438:1104;;;;;;:::o;11676:98::-;-1:-1:-1;;;;;;;;;;;;;;;;11243:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11229:46:0;:10;-1:-1:-1;;;;;11229:46:0;;11207:112;;;;-1:-1:-1;;;11207:112:0;;;;;;;:::i;:::-;11746:8:::1;:20:::0;;-1:-1:-1;;;;;;11746:20:0::1;-1:-1:-1::0;;;;;11746:20:0;;;::::1;::::0;;;::::1;::::0;;11676:98::o;12341:2089::-;12427:10;12416:22;;;;:10;:22;;;;;;;;;:48;;-1:-1:-1;12442:22:0;;;:10;:22;;;;;;12416:48;12394:109;;;;-1:-1:-1;;;12394:109:0;;3905:2:1;12394:109:0;;;3887:21:1;3944:2;3924:18;;;3917:30;-1:-1:-1;;;3963:18:1;;;3956:41;4014:18;;12394:109:0;3703:335:1;12394:109:0;12554:38;;-1:-1:-1;;;12554:38:0;;12586:4;12554:38;;;801:51:1;12540:11:0;;-1:-1:-1;;;;;;;;;;;10449:42:0;12554:23;;774:18:1;;12554:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12540:52;;12607:3;12614:1;12607:8;12603:47;;12632:7;12341:2089;:::o;12603:47::-;12693:21;12742:3;12725:12;;12719:3;:18;;;;:::i;:::-;12717:28;;;;:::i;:::-;12693:52;-1:-1:-1;12760:17:0;;12756:943;;12965:15;12982;12999;13018:27;13031:13;13018:12;:27::i;:::-;12964:81;;-1:-1:-1;12964:81:0;-1:-1:-1;12964:81:0;-1:-1:-1;13111:11:0;;13107:153;;13165:8;;;13143:40;;-1:-1:-1;;;13143:40:0;;-1:-1:-1;;;;;13165:8:0;;;13143:40;;;4217:51:1;;;;4284:18;;;4277:34;;;-1:-1:-1;;;;;;;;;;;10449:42:0;13143:21;;4190:18:1;;13143:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13211:8:0;;;13202:42;;-1:-1:-1;;;13202:42:0;;;;;1201:25:1;;;-1:-1:-1;;;;;13211:8:0;;13202:33;;1174:18:1;;13202:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13107:153;13325:11;;13321:153;;13379:8;;13357:40;;-1:-1:-1;;;13357:40:0;;-1:-1:-1;;;;;13379:8:0;;;13357:40;;;4217:51:1;4284:18;;;4277:34;;;-1:-1:-1;;;;;;;;;;;10449:42:0;13357:21;;4190:18:1;;13357:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13425:8:0;;13416:42;;-1:-1:-1;;;13416:42:0;;;;;1201:25:1;;;-1:-1:-1;;;;;13425:8:0;;;;13416:33;;1174:18:1;;13416:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13321:153;13539:11;;13535:153;;13593:8;;13571:40;;-1:-1:-1;;;13571:40:0;;-1:-1:-1;;;;;13593:8:0;;;13571:40;;;4217:51:1;4284:18;;;4277:34;;;-1:-1:-1;;;;;;;;;;;10449:42:0;13571:21;;4190:18:1;;13571:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13639:8:0;;13630:42;;-1:-1:-1;;;13630:42:0;;;;;1201:25:1;;;-1:-1:-1;;;;;13639:8:0;;;;13630:33;;1174:18:1;;13630:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13535:153;12779:920;;;12756:943;13760:38;;-1:-1:-1;;;13760:38:0;;13792:4;13760:38;;;801:51:1;13743:14:0;;-1:-1:-1;;;;;;;;;;;10449:42:0;13760:23;;774:18:1;;13760:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13743:55;;13873:6;13883:1;13873:11;13869:50;;13901:7;;;12341:2089;:::o;13869:50::-;13976:21;13982:6;13990;13976:5;:21::i;:::-;14039:18;14100:3;14086:9;;14062:21;:33;;;;:::i;:::-;14060:43;;;;:::i;:::-;14039:64;-1:-1:-1;14114:23:0;14140:34;14039:64;14140:21;:34;:::i;:::-;14114:60;-1:-1:-1;14212:14:0;;14208:95;;14274:4;;14243:48;;-1:-1:-1;;;;;14274:4:0;14280:10;14243:30;:48::i;:::-;14317:19;;14313:110;;14384:9;;14353:58;;-1:-1:-1;;;;;14384:9:0;14395:15;14353:30;:58::i;:::-;12383:2047;;;;;12341:2089;:::o;15550:619::-;15672:6;;15650:37;;-1:-1:-1;;;15650:37:0;;-1:-1:-1;;;;;15672:6:0;;;15650:37;;;4217:51:1;4284:18;;;4277:34;;;-1:-1:-1;;;;;;;;;;;10449:42:0;15650:21;;4190:18:1;;15650:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15749:16:0;;;15763:1;15749:16;;;;;;;;15725:21;;15749:16;;;;;;;;;;-1:-1:-1;15749:16:0;15725:40;;-1:-1:-1;;;;;;;;;;;15776:4:0;15781:1;15776:7;;;;;;;;:::i;:::-;;;;;;:15;-1:-1:-1;;;;;15776:15:0;;;-1:-1:-1;;;;;15776:15:0;;;;;15831:6;;;;;;;;-1:-1:-1;;;;;15831:6:0;-1:-1:-1;;;;;15812:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15802:4;15807:1;15802:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15802:43:0;;;:7;;;;;;;;;:43;15902:6;;;15883:77;15975:6;15996;16017:4;16044;16064:22;:15;16082:4;16064:22;:::i;:::-;15883:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15550:619:0:o;10010:217::-;10123:12;;;10083;10123;;;;;;;;;-1:-1:-1;;;;;10101:7:0;;;10116:5;;10101:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10082:54;;;10155:7;10147:72;;;;-1:-1:-1;;;10147:72:0;;6565:2:1;10147:72:0;;;6547:21:1;6604:2;6584:18;;;6577:30;6643:34;6623:18;;;6616:62;-1:-1:-1;;;6694:18:1;;;6687:50;6754:19;;10147:72:0;6363:416:1;10147:72:0;10071:156;10010:217;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:1:o;402:248::-;470:6;478;531:2;519:9;510:7;506:23;502:32;499:52;;;547:1;544;537:12;499:52;-1:-1:-1;;570:23:1;;;640:2;625:18;;;612:32;;-1:-1:-1;402:248:1:o;1237:118::-;1323:5;1316:13;1309:21;1302:5;1299:32;1289:60;;1345:1;1342;1335:12;1360:382;1425:6;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:52;;;1502:1;1499;1492:12;1454:52;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:30;1639:32;1680:30;:::i;:::-;1729:7;1719:17;;;1360:382;;;;;:::o;1747:180::-;1806:6;1859:2;1847:9;1838:7;1834:23;1830:32;1827:52;;;1875:1;1872;1865:12;1827:52;-1:-1:-1;1898:23:1;;1747:180;-1:-1:-1;1747:180:1:o;2256:251::-;2326:6;2379:2;2367:9;2358:7;2354:23;2350:32;2347:52;;;2395:1;2392;2385:12;2347:52;2427:9;2421:16;2446:31;2471:5;2446:31;:::i;2512:340::-;2714:2;2696:21;;;2753:2;2733:18;;;2726:30;-1:-1:-1;;;2787:2:1;2772:18;;2765:46;2843:2;2828:18;;2512:340::o;2857:184::-;2927:6;2980:2;2968:9;2959:7;2955:23;2951:32;2948:52;;;2996:1;2993;2986:12;2948:52;-1:-1:-1;3019:16:1;;2857:184;-1:-1:-1;2857:184:1:o;3046:127::-;3107:10;3102:3;3098:20;3095:1;3088:31;3138:4;3135:1;3128:15;3162:4;3159:1;3152:15;3178:168;3251:9;;;3282;;3299:15;;;3293:22;;3279:37;3269:71;;3320:18;;:::i;:::-;3178:168;;;;:::o;3351:125::-;3416:9;;;3437:10;;;3434:36;;;3450:18;;:::i;3481:217::-;3521:1;3547;3537:132;;3591:10;3586:3;3582:20;3579:1;3572:31;3626:4;3623:1;3616:15;3654:4;3651:1;3644:15;3537:132;-1:-1:-1;3683:9:1;;3481:217::o;4322:245::-;4389:6;4442:2;4430:9;4421:7;4417:23;4413:32;4410:52;;;4458:1;4455;4448:12;4410:52;4490:9;4484:16;4509:28;4531:5;4509:28;:::i;4572:128::-;4639:9;;;4660:11;;;4657:37;;;4674:18;;:::i;4837:127::-;4898:10;4893:3;4889:20;4886:1;4879:31;4929:4;4926:1;4919:15;4953:4;4950:1;4943:15;4969:972;5223:4;5271:3;5260:9;5256:19;5302:6;5291:9;5284:25;5328:2;5366:6;5361:2;5350:9;5346:18;5339:34;5409:3;5404:2;5393:9;5389:18;5382:31;5433:6;5468;5462:13;5499:6;5491;5484:22;5537:3;5526:9;5522:19;5515:26;;5576:2;5568:6;5564:15;5550:29;;5597:1;5607:195;5621:6;5618:1;5615:13;5607:195;;;5686:13;;-1:-1:-1;;;;;5682:39:1;5670:52;;5777:15;;;;5742:12;;;;5718:1;5636:9;5607:195;;;-1:-1:-1;;;;;;;5858:32:1;;;;5853:2;5838:18;;5831:60;-1:-1:-1;;;5922:3:1;5907:19;5900:35;5819:3;4969:972;-1:-1:-1;;;4969:972:1:o;5946:412::-;6075:3;6113:6;6107:13;6138:1;6148:129;6162:6;6159:1;6156:13;6148:129;;;6260:4;6244:14;;;6240:25;;6234:32;6221:11;;;6214:53;6177:12;6148:129;;;-1:-1:-1;6332:1:1;6296:16;;6321:13;;;-1:-1:-1;6296:16:1;5946:412;-1:-1:-1;5946:412:1:o

Swarm Source

ipfs://7e7834abe4e65de58b666883cb169773eb5270dba9e263521573003fa695dc4e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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