Contract 0x7B8AC044ebce66aCdF14197E8De38C1Cc802dB4A 7

Contract Overview

Balance:
0 ETH
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe62731d8994e73a73e942688696739ac7480585caad755d9bc66bd8ce7df04c30x60806040127191872022-06-09 19:25:2371 days 4 hrs ago0x162547888e56daa49637b4d8e1e336258678cdd4 IN  Create: TellorPlayground0 ETH0.‍000258599082 ETH
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TellorPlayground

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Arbiscan on 2022-06-09
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract TellorPlayground {
    // Events
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event NewReport(
        bytes32 _queryId,
        uint256 _time,
        bytes _value,
        uint256 _nonce,
        bytes _queryData,
        address _reporter
    );
    event NewStaker(address _staker, uint256 _amount);
    event TipAdded(
        address indexed _user,
        bytes32 indexed _queryId,
        uint256 _tip,
        uint256 _totalTip,
        bytes _queryData
    );
    event StakeWithdrawRequested(address _staker, uint256 _amount);
    event StakeWithdrawn(address _staker);
    event Transfer(address indexed from, address indexed to, uint256 value);

    // Storage
    mapping(bytes32 => address) public addresses;
    mapping(bytes32 => mapping(uint256 => bool)) public isDisputed; //queryId -> timestamp -> value
    mapping(bytes32 => mapping(uint256 => address)) public reporterByTimestamp;
    mapping(address => StakeInfo) stakerDetails; //mapping from a persons address to their staking info
    mapping(bytes32 => uint256[]) public timestamps;
    mapping(bytes32 => uint256) public tips; // mapping of data IDs to the amount of TRB they are tipped
    mapping(bytes32 => mapping(uint256 => bytes)) public values; //queryId -> timestamp -> value
    mapping(bytes32 => uint256[]) public voteRounds; // mapping of vote identifier hashes to an array of dispute IDs
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _balances;

    uint256 public constant timeBasedReward = 5e17; // time based reward for a reporter for successfully submitting a value
    uint256 public tipsInContract; // number of tips within the contract
    uint256 public voteCount;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    // Structs
    struct StakeInfo {
        uint256 startDate; //stake start date
        uint256 stakedBalance; // staked balance
        uint256 lockedBalance; // amount locked for withdrawal
        uint256 reporterLastTimestamp; // timestamp of reporter's last reported value
        uint256 reportsSubmitted; // total number of reports submitted by reporter
    }

    // Functions
    /**
     * @dev Initializes playground parameters
     */
    constructor() {
        _name = "TellorPlayground";
        _symbol = "TRBP";
        _decimals = 18;
        addresses[
            keccak256(abi.encodePacked("_GOVERNANCE_CONTRACT"))
        ] = address(this);
    }

    /**
     * @dev Mock function for adding staking rewards
     * @param _amount quantity of tokens to transfer to this contract
     */
    function addStakingRewards(uint256 _amount) external {
        require(_transferFrom(msg.sender, address(this), _amount));
    }

    /**
     * @dev Approves amount that an address is alowed to spend of behalf of another
     * @param _spender The address which is allowed to spend the tokens
     * @param _amount The amount that msg.sender is allowing spender to use
     * @return bool Whether the transaction succeeded
     *
     */
    function approve(address _spender, uint256 _amount)
        public
        virtual
        returns (bool)
    {
        _approve(msg.sender, _spender, _amount);
        return true;
    }

    /**
     * @dev A mock function to create a dispute
     * @param _queryId The tellorId to be disputed
     * @param _timestamp the timestamp of the value to be disputed
     */
    function beginDispute(bytes32 _queryId, uint256 _timestamp) external {
        values[_queryId][_timestamp] = bytes("");
        isDisputed[_queryId][_timestamp] = true;
        voteCount++;
        voteRounds[keccak256(abi.encodePacked(_queryId, _timestamp))].push(
            voteCount
        );
    }

    /**
     * @dev Public function to mint tokens to the given address
     * @param _user The address which will receive the tokens
     */
    function faucet(address _user) external {
        _mint(_user, 1000 ether);
    }

    /**
     * @dev A mock function to submit a value to be read without reporter staking needed
     * @param _queryId the ID to associate the value to
     * @param _value the value for the queryId
     * @param _nonce the current value count for the query id
     * @param _queryData the data used by reporters to fulfill the data query
     */
    // slither-disable-next-line timestamp
    function submitValue(
        bytes32 _queryId,
        bytes calldata _value,
        uint256 _nonce,
        bytes memory _queryData
    ) external {
        require(
            _nonce == timestamps[_queryId].length || _nonce == 0,
            "nonce must match timestamp index"
        );
        require(
            _queryId == keccak256(_queryData) || uint256(_queryId) <= 100,
            "id must be hash of bytes data"
        );
        values[_queryId][block.timestamp] = _value;
        timestamps[_queryId].push(block.timestamp);
        reporterByTimestamp[_queryId][block.timestamp] = msg.sender;
        stakerDetails[msg.sender].reporterLastTimestamp = block.timestamp;
        stakerDetails[msg.sender].reportsSubmitted++;
        emit NewReport(
            _queryId,
            block.timestamp,
            _value,
            _nonce,
            _queryData,
            msg.sender
        );
    }

    /**
     * @dev Adds a tip to a given query ID.
     * @param _queryId is the queryId to look up
     * @param _amount is the amount of tips
     * @param _queryData is the extra bytes data needed to fulfill the request
     */
    function tipQuery(
        bytes32 _queryId,
        uint256 _amount,
        bytes memory _queryData
    ) external {
        require(
            _queryId == keccak256(_queryData) || uint256(_queryId) <= 100,
            "id must be hash of bytes data"
        );
        _transfer(msg.sender, address(this), _amount);
        _amount = _amount / 2;
        _burn(address(this), _amount);
        tipsInContract += _amount;
        tips[_queryId] += _amount;
        emit TipAdded(
            msg.sender,
            _queryId,
            _amount,
            tips[_queryId],
            _queryData
        );
    }

    /**
     * @dev Transfer tokens from one user to another
     * @param _recipient The destination address
     * @param _amount The amount of tokens, including decimals, to transfer
     * @return bool If the transfer succeeded
     */
    function transfer(address _recipient, uint256 _amount)
        public
        virtual
        returns (bool)
    {
        _transfer(msg.sender, _recipient, _amount);
        return true;
    }

    /**
     * @dev Transfer tokens from user to another
     * @param _sender The address which owns the tokens
     * @param _recipient The destination address
     * @param _amount The quantity of tokens to transfer
     * @return bool Whether the transfer succeeded
     */
    function transferFrom(
        address _sender,
        address _recipient,
        uint256 _amount
    ) public virtual returns (bool) {
        _transfer(_sender, _recipient, _amount);
        _approve(
            _sender,
            msg.sender,
            _allowances[_sender][msg.sender] - _amount
        );
        return true;
    }

    // Tellor Flex
    /**
     * @dev Allows a reporter to submit stake
     * @param _amount amount of tokens to stake
     */
    function depositStake(uint256 _amount) external {
        StakeInfo storage _staker = stakerDetails[msg.sender];
        if (_staker.lockedBalance > 0) {
            if (_staker.lockedBalance >= _amount) {
                _staker.lockedBalance -= _amount;
            } else {
                require(
                    _transferFrom(
                        msg.sender,
                        address(this),
                        _amount - _staker.lockedBalance
                    )
                );
                _staker.lockedBalance = 0;
            }
        } else {
            require(_transferFrom(msg.sender, address(this), _amount));
        }
        _staker.startDate = block.timestamp; // This resets their stake start date to now
        _staker.stakedBalance += _amount;
        emit NewStaker(msg.sender, _amount);
    }

    /**
     * @dev Allows a reporter to request to withdraw their stake
     * @param _amount amount of staked tokens requesting to withdraw
     */
    function requestStakingWithdraw(uint256 _amount) external {
        StakeInfo storage _staker = stakerDetails[msg.sender];
        require(
            _staker.stakedBalance >= _amount,
            "insufficient staked balance"
        );
        _staker.startDate = block.timestamp;
        _staker.lockedBalance += _amount;
        _staker.stakedBalance -= _amount;
        emit StakeWithdrawRequested(msg.sender, _amount);
    }

    /**
     * @dev Withdraws a reporter's stake
     */
    function withdrawStake() external {
        StakeInfo storage _s = stakerDetails[msg.sender];
        // Ensure reporter is locked and that enough time has passed
        require(block.timestamp - _s.startDate >= 7 days, "7 days didn't pass");
        require(_s.lockedBalance > 0, "reporter not locked for withdrawal");
        _transfer(address(this), msg.sender, _s.lockedBalance);
        _s.lockedBalance = 0;
        emit StakeWithdrawn(msg.sender);
    }

    /**
     * @dev Returns the reporter for a given timestamp and queryId
     * @param _queryId bytes32 version of the queryId
     * @param _timestamp uint256 timestamp of report
     * @return address of data reporter
     */
    function getReporterByTimestamp(bytes32 _queryId, uint256 _timestamp)
        external
        view
        returns (address)
    {
        return reporterByTimestamp[_queryId][_timestamp];
    }

    /**
     * @dev Allows users to retrieve all information about a staker
     * @param _staker address of staker inquiring about
     * @return uint startDate of staking
     * @return uint current amount staked
     * @return uint current amount locked for withdrawal
     * @return uint reporter's last reported timestamp
     * @return uint total number of reports submitted by reporter
     */
    function getStakerInfo(address _staker)
        external
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        return (
            stakerDetails[_staker].startDate,
            stakerDetails[_staker].stakedBalance,
            stakerDetails[_staker].lockedBalance,
            stakerDetails[_staker].reporterLastTimestamp,
            stakerDetails[_staker].reportsSubmitted
        );
    }

    // Getters
    /**
     * @dev Returns the amount that an address is alowed to spend of behalf of another
     * @param _owner The address which owns the tokens
     * @param _spender The address that will use the tokens
     * @return uint256 The amount of allowed tokens
     */
    function allowance(address _owner, address _spender)
        public
        view
        virtual
        returns (uint256)
    {
        return _allowances[_owner][_spender];
    }

    /**
     * @dev Returns the balance of a given user.
     * @param _account user address
     * @return uint256 user's token balance
     */
    function balanceOf(address _account) public view returns (uint256) {
        return _balances[_account];
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * @return uint8 the number of decimals; used only for display purposes
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev Counts the number of values that have been submitted for a given ID
     * @param _queryId the ID to look up
     * @return uint256 count of the number of values received for the queryId
     */
    function getNewValueCountbyQueryId(bytes32 _queryId)
        public
        view
        returns (uint256)
    {
        return timestamps[_queryId].length;
    }

    /**
     * @dev Gets the timestamp for the value based on their index
     * @param _queryId is the queryId to look up
     * @param _index is the value index to look up
     * @return uint256 timestamp
     */
    function getTimestampbyQueryIdandIndex(bytes32 _queryId, uint256 _index)
        public
        view
        returns (uint256)
    {
        uint256 len = timestamps[_queryId].length;
        if (len == 0 || len <= _index) return 0;
        return timestamps[_queryId][_index];
    }

    /**
     * @dev Returns an array of voting rounds for a given vote
     * @param _hash is the identifier hash for a vote
     * @return uint256[] memory dispute IDs of the vote rounds
     */
    function getVoteRounds(bytes32 _hash)
        public
        view
        returns (uint256[] memory)
    {
        return voteRounds[_hash];
    }

    /**
     * @dev Returns the governance address of the contract
     * @return address (this address)
     */
    function governance() external view returns(address){
        return address(this);
    }
    
    /**
     * @dev Returns the name of the token.
     * @return string name of the token
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Retrieves value from oracle based on queryId/timestamp
     * @param _queryId being requested
     * @param _timestamp to retrieve data/value from
     * @return bytes value for queryId/timestamp submitted
     */
    function retrieveData(bytes32 _queryId, uint256 _timestamp)
        public
        view
        returns (bytes memory)
    {
        return values[_queryId][_timestamp];
    }

    /**
     * @dev Returns the symbol of the token.
     * @return string symbol of the token
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the total supply of the token.
     * @return uint256 total supply of token
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    // Internal functions
    /**
     * @dev Internal function to approve tokens for the user
     * @param _owner The owner of the tokens
     * @param _spender The address which is allowed to spend the tokens
     * @param _amount The amount that msg.sender is allowing spender to use
     */
    function _approve(
        address _owner,
        address _spender,
        uint256 _amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Internal function to burn tokens for the user
     * @param _account The address whose tokens to burn
     * @param _amount The quantity of tokens to burn
     */
    function _burn(address _account, uint256 _amount) internal virtual {
        require(_account != address(0), "ERC20: burn from the zero address");
        _balances[_account] -= _amount;
        _totalSupply -= _amount;
        emit Transfer(_account, address(0), _amount);
    }

    /**
     * @dev Internal function to create new tokens for the user
     * @param _account The address which receives minted tokens
     * @param _amount The quantity of tokens to min
     */
    function _mint(address _account, uint256 _amount) internal virtual {
        require(_account != address(0), "ERC20: mint to the zero address");
        _totalSupply += _amount;
        _balances[_account] += _amount;
        emit Transfer(address(0), _account, _amount);
    }

    /**
     * @dev Internal function to perform token transfer
     * @param _sender The address which owns the tokens
     * @param _recipient The destination address
     * @param _amount The quantity of tokens to transfer
     */
    function _transfer(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal virtual {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(
            _recipient != address(0),
            "ERC20: transfer to the zero address"
        );
        _balances[_sender] -= _amount;
        _balances[_recipient] += _amount;
        emit Transfer(_sender, _recipient, _amount);
    }

    /**
     * @dev Allows this contract to transfer tokens from one user to another
     * @param _sender The address which owns the tokens
     * @param _recipient The destination address
     * @param _amount The quantity of tokens to transfer
     * @return bool Whether the transfer succeeded
     */
    function _transferFrom(
        address _sender,
        address _recipient,
        uint256 _amount
    ) internal virtual returns (bool) {
        _transfer(_sender, _recipient, _amount);
        _approve(
            _sender,
            msg.sender,
            _allowances[_sender][address(this)] - _amount
        );
        return true;
    }
}

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":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_time","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_value","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"_nonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"},{"indexed":false,"internalType":"address","name":"_reporter","type":"address"}],"name":"NewReport","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"NewStaker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"StakeWithdrawRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_staker","type":"address"}],"name":"StakeWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"_tip","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalTip","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"TipAdded","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":"uint256","name":"_amount","type":"uint256"}],"name":"addStakingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"addresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"beginDispute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"faucet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"}],"name":"getNewValueCountbyQueryId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"getReporterByTimestamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"getStakerInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getTimestampbyQueryIdandIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"name":"getVoteRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"isDisputed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"reporterByTimestamp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"requestStakingWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"retrieveData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"bytes","name":"_value","type":"bytes"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"submitValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeBasedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"timestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_queryId","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_queryData","type":"bytes"}],"name":"tipQuery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"tips","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tipsInContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"values","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voteCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"voteRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040805180820190915260108082526f15195b1b1bdc941b185e59dc9bdd5b9960821b60209092019182526200004b91600d9162000110565b50604080518082019091526004808252630545242560e41b60209092019182526200007991600e9162000110565b50600f805460ff1916601217905560405130906000908190620000c2906020017f5f474f5645524e414e43455f434f4e5452414354000000000000000000000000815260140190565b60405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550620001f3565b8280546200011e90620001b6565b90600052602060002090601f0160209004810192826200014257600085556200018d565b82601f106200015d57805160ff19168380011785556200018d565b828001600101855582156200018d579182015b828111156200018d57825182559160200191906001019062000170565b506200019b9291506200019f565b5090565b5b808211156200019b5760008155600101620001a0565b600181811c90821680620001cb57607f821691505b60208210811415620001ed57634e487b7160e01b600052602260045260246000fd5b50919050565b611a1780620002036000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806377b03e0d1161011a578063c6384071116100ad578063d9c51cd41161007c578063d9c51cd414610518578063dd62ed3e1461052b578063e07c548614610564578063ef0234ad14610598578063f25133f3146105ab57610206565b8063c6384071146104d6578063c979fe9f146104df578063cb82cc8f146104f2578063ce5e11bf1461050557610206565b8063a9059cbb116100e9578063a9059cbb14610495578063b86d1d63146104a8578063bed9d861146104bb578063c5958af9146104c357610206565b806377b03e0d1461044b5780638929f4c61461046b57806395d89b411461047e57806396426d971461048657610206565b8063313ce5671161019d57806364473df21161016c57806364473df214610353578063699f200f1461038157806369d43bd3146103aa57806370a08231146103b3578063733bdef0146103dc57610206565b8063313ce567146103055780635aa6e6751461031a5780635eaa9ced14610320578063602bf2271461033357610206565b80631f379acc116101d95780631f379acc14610271578063217053c01461028657806323b872dd146102d2578063248638e5146102e557610206565b806306fdde031461020b578063091b50ff14610229578063095ea7b31461023c57806318160ddd1461025f575b600080fd5b6102136105be565b60405161022091906118d5565b60405180910390f35b61021361023736600461176a565b610650565b61024f61024a366004611684565b6106f5565b6040519015158152602001610220565b600c545b604051908152602001610220565b61028461027f36600461176a565b61070c565b005b6102ba61029436600461176a565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b039091168152602001610220565b61024f6102e0366004611649565b6107d4565b6102f86102f33660046116ad565b610826565b6040516102209190611824565b600f5460405160ff9091168152602001610220565b306102ba565b61028461032e3660046116c5565b610889565b6102636103413660046116ad565b60056020526000908152604090205481565b61024f61036136600461176a565b600160209081526000928352604080842090915290825290205460ff1681565b6102ba61038f3660046116ad565b6000602081905290815260409020546001600160a01b031681565b610263600a5481565b6102636103c13660046115f6565b6001600160a01b031660009081526009602052604090205490565b6104236103ea3660046115f6565b6001600160a01b031660009081526003602081905260409091208054600182015460028301549383015460049093015491949093929190565b604080519586526020860194909452928401919091526060830152608082015260a001610220565b6102636104593660046116ad565b60009081526004602052604090205490565b6102846104793660046116ad565b610a3c565b610213610b17565b6102636706f05b59d3b2000081565b61024f6104a3366004611684565b610b26565b6102846104b63660046115f6565b610b33565b610284610b49565b6102136104d136600461176a565b610c57565b610263600b5481565b6102636104ed36600461176a565b610d05565b6102846105003660046116ad565b610d36565b61026361051336600461176a565b610e12565b6102846105263660046116ad565b610e7f565b610263610539366004611617565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6102ba61057236600461176a565b60009182526002602090815260408084209284529190529020546001600160a01b031690565b6102846105a636600461178b565b610e93565b6102636105b936600461176a565b610fa4565b6060600d80546105cd9061195f565b80601f01602080910402602001604051908101604052809291908181526020018280546105f99061195f565b80156106465780601f1061061b57610100808354040283529160200191610646565b820191906000526020600020905b81548152906001019060200180831161062957829003601f168201915b5050505050905090565b6006602090815260009283526040808420909152908252902080546106749061195f565b80601f01602080910402602001604051908101604052809291908181526020018280546106a09061195f565b80156106ed5780601f106106c2576101008083540402835291602001916106ed565b820191906000526020600020905b8154815290600101906020018083116106d057829003601f168201915b505050505081565b6000610702338484610fc0565b5060015b92915050565b604080516020808201808452600080845286815260068352848120868252909252929020905161073c929061144b565b5060008281526001602081815260408084208585529091528220805460ff19169091179055600b80549161076f8361199a565b9190505550600760008383604051602001610794929190918252602082015260400190565b60408051601f19818403018152918152815160209283012083528282019390935291016000908120600b5481546001810183559183529290912001555050565b60006107e18484846110dc565b6001600160a01b03841660009081526008602090815260408083203380855292529091205461081c918691610817908690611948565b610fc0565b5060019392505050565b60008181526007602090815260409182902080548351818402810184019094528084526060939283018282801561087c57602002820191906000526020600020905b815481526020019060010190808311610868575b505050505090505b919050565b6000858152600460205260409020548214806108a3575081155b6108f45760405162461bcd60e51b815260206004820181905260248201527f6e6f6e6365206d757374206d617463682074696d657374616d7020696e64657860448201526064015b60405180910390fd5b80516020820120851480610909575060648511155b6109555760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016108eb565b600085815260066020908152604080832042845290915290206109799085856114cf565b5060008581526004602081815260408084208054600181018255908552828520429101819055898552600283528185208186528352818520805473ffffffffffffffffffffffffffffffffffffffff191633908117909155855260039283905290842091820155018054916109ed8361199a565b91905055507f48e9e2c732ba278de6ac88a3a57a5c5ba13d3d8370e709b3b98333a57876ca9585428686868633604051610a2d9796959493929190611868565b60405180910390a15050505050565b3360009081526003602052604090206001810154821115610a9f5760405162461bcd60e51b815260206004820152601b60248201527f696e73756666696369656e74207374616b65642062616c616e6365000000000060448201526064016108eb565b428155600281018054839190600090610ab9908490611910565b9250508190555081816001016000828254610ad49190611948565b909155505060408051338152602081018490527f3d8d9df4bd0172df32e557fa48e96435cd7f2cac06aaffacfaee608e6f7898ef91015b60405180910390a15050565b6060600e80546105cd9061195f565b60006107023384846110dc565b610b4681683635c9adc5dea00000611243565b50565b336000908152600360205260409020805462093a8090610b699042611948565b1015610bac5760405162461bcd60e51b8152602060048201526012602482015271372064617973206469646e2774207061737360701b60448201526064016108eb565b6000816002015411610c0b5760405162461bcd60e51b815260206004820152602260248201527f7265706f72746572206e6f74206c6f636b656420666f72207769746864726177604482015261185b60f21b60648201526084016108eb565b610c1a303383600201546110dc565b600060028201556040513381527f4a7934670bd8304e7da22378be1368f7c4fef17c5aee81804beda8638fe428ec9060200160405180910390a150565b60008281526006602090815260408083208484529091529020805460609190610c7f9061195f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cab9061195f565b8015610cf85780601f10610ccd57610100808354040283529160200191610cf8565b820191906000526020600020905b815481529060010190602001808311610cdb57829003601f168201915b5050505050905092915050565b60076020528160005260406000208181548110610d2157600080fd5b90600052602060002001600091509150505481565b336000908152600360205260409020600281015415610da95781816002015410610d795781816002016000828254610d6e9190611948565b90915550610da49050565b610d933330836002015485610d8e9190611948565b611323565b610d9c57600080fd5b600060028201555b610dbd565b610db4333084611323565b610dbd57600080fd5b428155600181018054839190600090610dd7908490611910565b909155505060408051338152602081018490527fa96c2cce65119a2170d1711a6e82f18f2006448828483ba7545e5954765436479101610b0b565b600082815260046020526040812054801580610e2e5750828111155b15610e3d576000915050610706565b6000848152600460205260409020805484908110610e6b57634e487b7160e01b600052603260045260246000fd5b906000526020600020015491505092915050565b610e8a333083611323565b610b4657600080fd5b80516020820120831480610ea8575060648311155b610ef45760405162461bcd60e51b815260206004820152601d60248201527f6964206d7573742062652068617368206f66206279746573206461746100000060448201526064016108eb565b610eff3330846110dc565b610f0a600283611928565b9150610f163083611367565b81600a6000828254610f289190611910565b909155505060008381526005602052604081208054849290610f4b908490611910565b909155505060008381526005602052604090819020549051849133917fd951d408a0f5057da5c25b826fb5ce403d56542962b6ac6994dbc6d5432fbff591610f979187919087906118e8565b60405180910390a3505050565b60046020528160005260406000208181548110610d2157600080fd5b6001600160a01b0383166110225760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108eb565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108eb565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610f97565b6001600160a01b0383166111405760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108eb565b6001600160a01b0382166111a25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108eb565b6001600160a01b038316600090815260096020526040812080548392906111ca908490611948565b90915550506001600160a01b038216600090815260096020526040812080548392906111f7908490611910565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f9791815260200190565b6001600160a01b0382166112995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108eb565b80600c60008282546112ab9190611910565b90915550506001600160a01b038216600090815260096020526040812080548392906112d8908490611910565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60006113308484846110dc565b6001600160a01b038416600090815260086020908152604080832030845290915290205461081c9085903390610817908690611948565b6001600160a01b0382166113c75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108eb565b6001600160a01b038216600090815260096020526040812080548392906113ef908490611948565b9250508190555080600c60008282546114089190611948565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611317565b8280546114579061195f565b90600052602060002090601f01602090048101928261147957600085556114bf565b82601f1061149257805160ff19168380011785556114bf565b828001600101855582156114bf579182015b828111156114bf5782518255916020019190600101906114a4565b506114cb929150611543565b5090565b8280546114db9061195f565b90600052602060002090601f0160209004810192826114fd57600085556114bf565b82601f106115165782800160ff198235161785556114bf565b828001600101855582156114bf579182015b828111156114bf578235825591602001919060010190611528565b5b808211156114cb5760008155600101611544565b80356001600160a01b038116811461088457600080fd5b600082601f83011261157f578081fd5b813567ffffffffffffffff8082111561159a5761159a6119cb565b604051601f8301601f19908116603f011681019082821181831017156115c2576115c26119cb565b816040528381528660208588010111156115da578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611607578081fd5b61161082611558565b9392505050565b60008060408385031215611629578081fd5b61163283611558565b915061164060208401611558565b90509250929050565b60008060006060848603121561165d578081fd5b61166684611558565b925061167460208501611558565b9150604084013590509250925092565b60008060408385031215611696578182fd5b61169f83611558565b946020939093013593505050565b6000602082840312156116be578081fd5b5035919050565b6000806000806000608086880312156116dc578081fd5b85359450602086013567ffffffffffffffff808211156116fa578283fd5b818801915088601f83011261170d578283fd5b81358181111561171b578384fd5b89602082850101111561172c578384fd5b60208301965080955050604088013593506060880135915080821115611750578283fd5b5061175d8882890161156f565b9150509295509295909350565b6000806040838503121561177c578182fd5b50508035926020909101359150565b60008060006060848603121561179f578283fd5b8335925060208401359150604084013567ffffffffffffffff8111156117c3578182fd5b6117cf8682870161156f565b9150509250925092565b60008151808452815b818110156117fe576020818501810151868301820152016117e2565b8181111561180f5782602083870101525b50601f01601f19169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b8181101561185c57835183529284019291840191600101611840565b50909695505050505050565b600088825287602083015260c060408301528560c0830152858760e08401378060e08784010152601f19601f870116820185606084015260e08382030160808401526118b760e08201866117d9565b9150506001600160a01b03831660a083015298975050505050505050565b60006020825261161060208301846117d9565b60008482528360208301526060604083015261190760608301846117d9565b95945050505050565b60008219821115611923576119236119b5565b500190565b60008261194357634e487b7160e01b81526012600452602481fd5b500490565b60008282101561195a5761195a6119b5565b500390565b600181811c9082168061197357607f821691505b6020821081141561199457634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156119ae576119ae6119b5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220ed7f2a170812f55c591e26f5739cb1e6103de4d9a1ae464557abf465811a2a6364736f6c63430008030033

Deployed ByteCode Sourcemap

60:17716:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13773:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1345:59;;;;;;:::i;:::-;;:::i;3335:194::-;;;;;;:::i;:::-;;:::i;:::-;;;6241:14:1;;6234:22;6216:41;;6204:2;6189:18;3335:194:0;6171:92:1;14611:91:0;14682:12;;14611:91;;;11959:25:1;;;11947:2;11932:18;14611:91:0;11914:76:1;3724:312:0;;;;;;:::i;:::-;;:::i;:::-;;999:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;999:74:0;;;;;;-1:-1:-1;;;;;5067:55:1;;;5049:74;;5037:2;5022:18;999:74:0;5004:125:1;7259:354:0;;;;;;:::i;:::-;;:::i;13290:152::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12082:83::-;12148:9;;12082:83;;12148:9;;;;12969:36:1;;12957:2;12942:18;12082:83:0;12924:87:1;13567:91:0;13645:4;13567:91;;4680:947;;;;;;:::i;:::-;;:::i;1239:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;898:62;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;847:44;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;847:44:0;;;1814:29;;;;;;11786:112;;;;;;:::i;:::-;-1:-1:-1;;;;;11871:19:0;11844:7;11871:19;;;:9;:19;;;;;;;11786:112;10626:515;;;;;;:::i;:::-;-1:-1:-1;;;;;10875:22:0;10730:7;10875:22;;;:13;:22;;;;;;;;:32;;10922:36;;;;10973;;;;11024:44;;;;11083:39;;;;;10875:32;;10922:36;;10973;11024:44;11083:39;10626:515;;;;;12618:25:1;;;12674:2;12659:18;;12652:34;;;;12702:18;;;12695:34;;;;12760:2;12745:18;;12738:34;12803:3;12788:19;;12781:35;12605:3;12590:19;10626:515:0;12572:250:1;12393:168:0;;;;;;:::i;:::-;12494:7;12526:20;;;:10;:20;;;;;:27;;12393:168;8785:441;;;;;;:::i;:::-;;:::i;14400:87::-;;;:::i;1689:46::-;;1731:4;1689:46;;6766:200;;;;;;:::i;:::-;;:::i;4190:83::-;;;;;;:::i;:::-;;:::i;9294:469::-;;;:::i;14104:181::-;;;;;;:::i;:::-;;:::i;1888:24::-;;;;;;1443:47;;;;;;:::i;:::-;;:::i;7755:868::-;;;;;;:::i;:::-;;:::i;12790:291::-;;;;;;:::i;:::-;;:::i;2881:130::-;;;;;;:::i;:::-;;:::i;11441:187::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11591:19:0;;;11559:7;11591:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;11441:187;10007:201;;;;;;:::i;:::-;10127:7;10159:29;;;:19;:29;;;;;;;;:41;;;;;;;;;-1:-1:-1;;;;;10159:41:0;;10007:201;5873:639;;;;;;:::i;:::-;;:::i;1185:47::-;;;;;;:::i;:::-;;:::i;13773:83::-;13810:13;13843:5;13836:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13773:83;:::o;1345:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3335:194::-;3438:4;3460:39;3469:10;3481:8;3491:7;3460:8;:39::i;:::-;-1:-1:-1;3517:4:0;3335:194;;;;;:::o;3724:312::-;3835:9;;;;;;;;;;-1:-1:-1;3835:9:0;;;3804:16;;;:6;:16;;;;;:28;;;;;;;;;:40;;;;3835:9;3804:40;:::i;:::-;-1:-1:-1;3855:20:0;;;;3890:4;3855:20;;;;;;;;:32;;;;;;;;:39;;-1:-1:-1;;3855:39:0;;;;;;3905:9;:11;;;;;;:::i;:::-;;;;;;3927:10;:61;3965:8;3975:10;3948:38;;;;;;;;4808:19:1;;;4852:2;4843:12;;4836:28;4889:2;4880:12;;4798:100;3948:38:0;;;;-1:-1:-1;;3948:38:0;;;;;;;;;3938:49;;3948:38;3938:49;;;;3927:61;;;;;;;;;;;-1:-1:-1;3927:61:0;;;4008:9;;3927:101;;;;;;;;;;;;;;;;-1:-1:-1;;3724:312:0:o;7259:354::-;7393:4;7410:39;7420:7;7429:10;7441:7;7410:9;:39::i;:::-;-1:-1:-1;;;;;7530:20:0;;;;;;:11;:20;;;;;;;;7505:10;7530:32;;;;;;;;;7460:123;;7483:7;;7530:42;;7565:7;;7530:42;:::i;:::-;7460:8;:123::i;:::-;-1:-1:-1;7601:4:0;7259:354;;;;;:::o;13290:152::-;13417:17;;;;:10;:17;;;;;;;;;13410:24;;;;;;;;;;;;;;;;;13376:16;;13410:24;;;13417:17;13410:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13290:152;;;;:::o;4680:947::-;4878:20;;;;:10;:20;;;;;:27;4868:37;;;:52;;-1:-1:-1;4909:11:0;;4868:52;4846:134;;;;-1:-1:-1;;;4846:134:0;;9322:2:1;4846:134:0;;;9304:21:1;;;9341:18;;;9334:30;9400:34;9380:18;;;9373:62;9452:18;;4846:134:0;;;;;;;;;5025:21;;;;;;5013:33;;;:61;;-1:-1:-1;5071:3:0;5050:24;;;5013:61;4991:140;;;;-1:-1:-1;;;4991:140:0;;8617:2:1;4991:140:0;;;8599:21:1;8656:2;8636:18;;;8629:30;8695:31;8675:18;;;8668:59;8744:18;;4991:140:0;8589:179:1;4991:140:0;5142:16;;;;:6;:16;;;;;;;;5159:15;5142:33;;;;;;;:42;;5178:6;;5142:42;:::i;:::-;-1:-1:-1;5195:20:0;;;;:10;:20;;;;;;;;:42;;;;;;;;;;;;;5221:15;5195:42;;;;;5248:29;;;:19;:29;;;;;:46;;;;;;;;:59;;-1:-1:-1;;5248:59:0;5297:10;5248:59;;;;;;5318:25;;:13;:25;;;;;;;:47;;;:65;5394:42;:44;;;;;;:::i;:::-;;;;;;5454:165;5478:8;5501:15;5531:6;;5552;5573:10;5598;5454:165;;;;;;;;;;;;:::i;:::-;;;;;;;;4680:947;;;;;:::o;8785:441::-;8896:10;8854:25;8882;;;:13;:25;;;;;8940:21;;;;:32;-1:-1:-1;8940:32:0;8918:109;;;;-1:-1:-1;;;8918:109:0;;11299:2:1;8918:109:0;;;11281:21:1;11338:2;11318:18;;;11311:30;11377:29;11357:18;;;11350:57;11424:18;;8918:109:0;11271:177:1;8918:109:0;9058:15;9038:35;;9084:21;;;:32;;9109:7;;9084:21;9038:17;;9084:32;;9109:7;;9084:32;:::i;:::-;;;;;;;;9152:7;9127;:21;;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;9175:43:0;;;9198:10;5308:74:1;;5413:2;5398:18;;5391:34;;;9175:43:0;;5281:18:1;9175:43:0;;;;;;;;8785:441;;:::o;14400:87::-;14439:13;14472:7;14465:14;;;;;:::i;6766:200::-;6872:4;6894:42;6904:10;6916;6928:7;6894:9;:42::i;4190:83::-;4241:24;4247:5;4254:10;4241:5;:24::i;:::-;4190:83;:::o;9294:469::-;9376:10;9339:20;9362:25;;;:13;:25;;;;;9494:12;;9510:6;;9476:30;;:15;:30;:::i;:::-;:40;;9468:71;;;;-1:-1:-1;;;9468:71:0;;8975:2:1;9468:71:0;;;8957:21:1;9014:2;8994:18;;;8987:30;-1:-1:-1;;;9033:18:1;;;9026:48;9091:18;;9468:71:0;8947:168:1;9468:71:0;9577:1;9558:2;:16;;;:20;9550:67;;;;-1:-1:-1;;;9550:67:0;;10491:2:1;9550:67:0;;;10473:21:1;10530:2;10510:18;;;10503:30;10569:34;10549:18;;;10542:62;-1:-1:-1;;;10620:18:1;;;10613:32;10662:19;;9550:67:0;10463:224:1;9550:67:0;9628:54;9646:4;9653:10;9665:2;:16;;;9628:9;:54::i;:::-;9712:1;9693:16;;;:20;9729:26;;9744:10;5049:74:1;;9729:26:0;;5037:2:1;5022:18;9729:26:0;;;;;;;9294:469;:::o;14104:181::-;14249:16;;;;:6;:16;;;;;;;;:28;;;;;;;;14242:35;;14212:12;;14249:28;14242:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14104:181;;;;:::o;1443:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7755:868::-;7856:10;7814:25;7842;;;:13;:25;;;;;7882:21;;;;:25;7878:558;;7953:7;7928;:21;;;:32;7924:410;;8006:7;7981;:21;;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;7924:410:0;;-1:-1:-1;7924:410:0;;8084:171;8124:10;8169:4;8211:7;:21;;;8201:7;:31;;;;:::i;:::-;8084:13;:171::i;:::-;8054:220;;;;;;8317:1;8293:21;;;:25;7924:410;7878:558;;;8374:49;8388:10;8408:4;8415:7;8374:13;:49::i;:::-;8366:58;;;;;;8466:15;8446:35;;8537:21;;;:32;;8562:7;;8537:21;8446:17;;8537:32;;8562:7;;8537:32;:::i;:::-;;;;-1:-1:-1;;8585:30:0;;;8595:10;5308:74:1;;5413:2;5398:18;;5391:34;;;8585:30:0;;5281:18:1;8585:30:0;5263:168:1;12790:291:0;12911:7;12950:20;;;:10;:20;;;;;:27;12992:8;;;:25;;;13011:6;13004:3;:13;;12992:25;12988:39;;;13026:1;13019:8;;;;;12988:39;13045:20;;;;:10;:20;;;;;:28;;13066:6;;13045:28;;;;-1:-1:-1;;;13045:28:0;;;;;;;;;;;;;;;;;13038:35;;;12790:291;;;;:::o;2881:130::-;2953:49;2967:10;2987:4;2994:7;2953:13;:49::i;:::-;2945:58;;;;;5873:639;6039:21;;;;;;6027:33;;;:61;;-1:-1:-1;6085:3:0;6064:24;;;6027:61;6005:140;;;;-1:-1:-1;;;6005:140:0;;8617:2:1;6005:140:0;;;8599:21:1;8656:2;8636:18;;;8629:30;8695:31;8675:18;;;8668:59;8744:18;;6005:140:0;8589:179:1;6005:140:0;6156:45;6166:10;6186:4;6193:7;6156:9;:45::i;:::-;6222:11;6232:1;6222:7;:11;:::i;:::-;6212:21;;6244:29;6258:4;6265:7;6244:5;:29::i;:::-;6302:7;6284:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;6320:14:0;;;;:4;:14;;;;;:25;;6338:7;;6320:14;:25;;6338:7;;6320:25;:::i;:::-;;;;-1:-1:-1;;6454:14:0;;;;:4;:14;;;;;;;;6361:143;;6409:8;;6384:10;;6361:143;;;;6432:7;;6454:14;6483:10;;6361:143;:::i;:::-;;;;;;;;5873:639;;;:::o;1185:47::-;;;;;;;;;;;;;;;;;;;;15013:389;-1:-1:-1;;;;;15152:20:0;;15144:69;;;;-1:-1:-1;;;15144:69:0;;10894:2:1;15144:69:0;;;10876:21:1;10933:2;10913:18;;;10906:30;10972:34;10952:18;;;10945:62;-1:-1:-1;;;11023:18:1;;;11016:34;11067:19;;15144:69:0;10866:226:1;15144:69:0;-1:-1:-1;;;;;15232:22:0;;15224:69;;;;-1:-1:-1;;;15224:69:0;;8214:2:1;15224:69:0;;;8196:21:1;8253:2;8233:18;;;8226:30;8292:34;8272:18;;;8265:62;-1:-1:-1;;;8343:18:1;;;8336:32;8385:19;;15224:69:0;8186:224:1;15224:69:0;-1:-1:-1;;;;;15304:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;15359:35;;11959:25:1;;;15359:35:0;;11932:18:1;15359:35:0;11914:76:1;16621:471:0;-1:-1:-1;;;;;16764:21:0;;16756:71;;;;-1:-1:-1;;;16756:71:0;;10085:2:1;16756:71:0;;;10067:21:1;10124:2;10104:18;;;10097:30;10163:34;10143:18;;;10136:62;-1:-1:-1;;;10214:18:1;;;10207:35;10259:19;;16756:71:0;10057:227:1;16756:71:0;-1:-1:-1;;;;;16860:24:0;;16838:109;;;;-1:-1:-1;;;16838:109:0;;7810:2:1;16838:109:0;;;7792:21:1;7849:2;7829:18;;;7822:30;7888:34;7868:18;;;7861:62;-1:-1:-1;;;7939:18:1;;;7932:33;7982:19;;16838:109:0;7782:225:1;16838:109:0;-1:-1:-1;;;;;16958:18:0;;;;;;:9;:18;;;;;:29;;16980:7;;16958:18;:29;;16980:7;;16958:29;:::i;:::-;;;;-1:-1:-1;;;;;;;16998:21:0;;;;;;:9;:21;;;;;:32;;17023:7;;16998:21;:32;;17023:7;;16998:32;:::i;:::-;;;;;;;;17064:10;-1:-1:-1;;;;;17046:38:0;17055:7;-1:-1:-1;;;;;17046:38:0;;17076:7;17046:38;;;;11959:25:1;;11947:2;11932:18;;11914:76;16091:282:0;-1:-1:-1;;;;;16177:22:0;;16169:66;;;;-1:-1:-1;;;16169:66:0;;11655:2:1;16169:66:0;;;11637:21:1;11694:2;11674:18;;;11667:30;11733:33;11713:18;;;11706:61;11784:18;;16169:66:0;11627:181:1;16169:66:0;16262:7;16246:12;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16280:19:0;;;;;;:9;:19;;;;;:30;;16303:7;;16280:19;:30;;16303:7;;16280:30;:::i;:::-;;;;-1:-1:-1;;16326:39:0;;11959:25:1;;;-1:-1:-1;;;;;16326:39:0;;;16343:1;;16326:39;;11947:2:1;11932:18;16326:39:0;;;;;;;;16091:282;;:::o;17413:360::-;17550:4;17567:39;17577:7;17586:10;17598:7;17567:9;:39::i;:::-;-1:-1:-1;;;;;17687:20:0;;;;;;:11;:20;;;;;;;;17716:4;17687:35;;;;;;;;17617:126;;17640:7;;17662:10;;17687:45;;17725:7;;17687:45;:::i;15598:284::-;-1:-1:-1;;;;;15684:22:0;;15676:68;;;;-1:-1:-1;;;15676:68:0;;9683:2:1;15676:68:0;;;9665:21:1;9722:2;9702:18;;;9695:30;9761:34;9741:18;;;9734:62;-1:-1:-1;;;9812:18:1;;;9805:31;9853:19;;15676:68:0;9655:223:1;15676:68:0;-1:-1:-1;;;;;15755:19:0;;;;;;:9;:19;;;;;:30;;15778:7;;15755:19;:30;;15778:7;;15755:30;:::i;:::-;;;;;;;;15812:7;15796:12;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15835:39:0;;11959:25:1;;;15862:1:0;;-1:-1:-1;;;;;15835:39:0;;;;;11947:2:1;11932:18;15835:39:0;11914:76:1;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:196:1;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:2;;200:1;197;190:12;215:738;;310:3;303:4;295:6;291:17;287:27;277:2;;332:5;325;318:20;277:2;372:6;359:20;398:18;435:2;431;428:10;425:2;;;441:18;;:::i;:::-;516:2;510:9;484:2;570:13;;-1:-1:-1;;566:22:1;;;590:2;562:31;558:40;546:53;;;614:18;;;634:22;;;611:46;608:2;;;660:18;;:::i;:::-;700:10;696:2;689:22;735:2;727:6;720:18;781:3;774:4;769:2;761:6;757:15;753:26;750:35;747:2;;;802:5;795;788:20;747:2;870;863:4;855:6;851:17;844:4;836:6;832:17;819:54;893:15;;;910:4;889:26;882:41;;;;-1:-1:-1;897:6:1;267:686;-1:-1:-1;;;267:686:1:o;958:196::-;;1070:2;1058:9;1049:7;1045:23;1041:32;1038:2;;;1091:6;1083;1076:22;1038:2;1119:29;1138:9;1119:29;:::i;:::-;1109:39;1028:126;-1:-1:-1;;;1028:126:1:o;1159:270::-;;;1288:2;1276:9;1267:7;1263:23;1259:32;1256:2;;;1309:6;1301;1294:22;1256:2;1337:29;1356:9;1337:29;:::i;:::-;1327:39;;1385:38;1419:2;1408:9;1404:18;1385:38;:::i;:::-;1375:48;;1246:183;;;;;:::o;1434:338::-;;;;1580:2;1568:9;1559:7;1555:23;1551:32;1548:2;;;1601:6;1593;1586:22;1548:2;1629:29;1648:9;1629:29;:::i;:::-;1619:39;;1677:38;1711:2;1700:9;1696:18;1677:38;:::i;:::-;1667:48;;1762:2;1751:9;1747:18;1734:32;1724:42;;1538:234;;;;;:::o;1777:264::-;;;1906:2;1894:9;1885:7;1881:23;1877:32;1874:2;;;1927:6;1919;1912:22;1874:2;1955:29;1974:9;1955:29;:::i;:::-;1945:39;2031:2;2016:18;;;;2003:32;;-1:-1:-1;;;1864:177:1:o;2046:190::-;;2158:2;2146:9;2137:7;2133:23;2129:32;2126:2;;;2179:6;2171;2164:22;2126:2;-1:-1:-1;2207:23:1;;2116:120;-1:-1:-1;2116:120:1:o;2241:986::-;;;;;;2432:3;2420:9;2411:7;2407:23;2403:33;2400:2;;;2454:6;2446;2439:22;2400:2;2495:9;2482:23;2472:33;;2556:2;2545:9;2541:18;2528:32;2579:18;2620:2;2612:6;2609:14;2606:2;;;2641:6;2633;2626:22;2606:2;2684:6;2673:9;2669:22;2659:32;;2729:7;2722:4;2718:2;2714:13;2710:27;2700:2;;2756:6;2748;2741:22;2700:2;2801;2788:16;2827:2;2819:6;2816:14;2813:2;;;2848:6;2840;2833:22;2813:2;2898:7;2893:2;2884:6;2880:2;2876:15;2872:24;2869:37;2866:2;;;2924:6;2916;2909:22;2866:2;2960;2956;2952:11;2942:21;;2982:6;2972:16;;;3035:2;3024:9;3020:18;3007:32;2997:42;;3092:2;3081:9;3077:18;3064:32;3048:48;;3121:2;3111:8;3108:16;3105:2;;;3142:6;3134;3127:22;3105:2;;3170:51;3213:7;3202:8;3191:9;3187:24;3170:51;:::i;:::-;3160:61;;;2390:837;;;;;;;;:::o;3232:258::-;;;3361:2;3349:9;3340:7;3336:23;3332:32;3329:2;;;3382:6;3374;3367:22;3329:2;-1:-1:-1;;3410:23:1;;;3480:2;3465:18;;;3452:32;;-1:-1:-1;3319:171:1:o;3495:476::-;;;;3650:2;3638:9;3629:7;3625:23;3621:32;3618:2;;;3671:6;3663;3656:22;3618:2;3712:9;3699:23;3689:33;;3769:2;3758:9;3754:18;3741:32;3731:42;;3824:2;3813:9;3809:18;3796:32;3851:18;3843:6;3840:30;3837:2;;;3888:6;3880;3873:22;3837:2;3916:49;3957:7;3948:6;3937:9;3933:22;3916:49;:::i;:::-;3906:59;;;3608:363;;;;;:::o;4171:475::-;;4250:5;4244:12;4277:6;4272:3;4265:19;4302:3;4314:162;4328:6;4325:1;4322:13;4314:162;;;4390:4;4446:13;;;4442:22;;4436:29;4418:11;;;4414:20;;4407:59;4343:12;4314:162;;;4494:6;4491:1;4488:13;4485:2;;;4560:3;4553:4;4544:6;4539:3;4535:16;4531:27;4524:40;4485:2;-1:-1:-1;4628:2:1;4607:15;-1:-1:-1;;4603:29:1;4594:39;;;;4635:4;4590:50;;4220:426;-1:-1:-1;;4220:426:1:o;5436:635::-;5607:2;5659:21;;;5729:13;;5632:18;;;5751:22;;;5436:635;;5607:2;5830:15;;;;5804:2;5789:18;;;5436:635;5876:169;5890:6;5887:1;5884:13;5876:169;;;5951:13;;5939:26;;6020:15;;;;5985:12;;;;5912:1;5905:9;5876:169;;;-1:-1:-1;6062:3:1;;5587:484;-1:-1:-1;;;;;;5587:484:1:o;6268:889::-;;6583:6;6572:9;6565:25;6626:6;6621:2;6610:9;6606:18;6599:34;6669:3;6664:2;6653:9;6649:18;6642:31;6710:6;6704:3;6693:9;6689:19;6682:35;6768:6;6760;6754:3;6743:9;6739:19;6726:49;6825:4;6819:3;6810:6;6799:9;6795:22;6791:32;6784:46;6889:2;6885:7;6880:2;6872:6;6868:15;6864:29;6853:9;6849:45;6930:6;6925:2;6914:9;6910:18;6903:34;6998:3;6986:9;6982:2;6978:18;6974:28;6968:3;6957:9;6953:19;6946:57;7020:38;7053:3;7049:2;7045:12;7037:6;7020:38;:::i;:::-;7012:46;;;-1:-1:-1;;;;;7099:6:1;7095:55;7089:3;7078:9;7074:19;7067:84;6555:602;;;;;;;;;;:::o;7162:217::-;;7309:2;7298:9;7291:21;7329:44;7369:2;7358:9;7354:18;7346:6;7329:44;:::i;11995:359::-;;12198:6;12187:9;12180:25;12241:6;12236:2;12225:9;12221:18;12214:34;12284:2;12279;12268:9;12264:18;12257:30;12304:44;12344:2;12333:9;12329:18;12321:6;12304:44;:::i;:::-;12296:52;12170:184;-1:-1:-1;;;;;12170:184:1:o;13016:128::-;;13087:1;13083:6;13080:1;13077:13;13074:2;;;13093:18;;:::i;:::-;-1:-1:-1;13129:9:1;;13064:80::o;13149:217::-;;13215:1;13205:2;;-1:-1:-1;;;13240:31:1;;13294:4;13291:1;13284:15;13322:4;13247:1;13312:15;13205:2;-1:-1:-1;13351:9:1;;13195:171::o;13371:125::-;;13439:1;13436;13433:8;13430:2;;;13444:18;;:::i;:::-;-1:-1:-1;13481:9:1;;13420:76::o;13501:380::-;13580:1;13576:12;;;;13623;;;13644:2;;13698:4;13690:6;13686:17;13676:27;;13644:2;13751;13743:6;13740:14;13720:18;13717:38;13714:2;;;13797:10;13792:3;13788:20;13785:1;13778:31;13832:4;13829:1;13822:15;13860:4;13857:1;13850:15;13714:2;;13556:325;;;:::o;13886:135::-;;-1:-1:-1;;13946:17:1;;13943:2;;;13966:18;;:::i;:::-;-1:-1:-1;14013:1:1;14002:13;;13933:88::o;14026:127::-;14087:10;14082:3;14078:20;14075:1;14068:31;14118:4;14115:1;14108:15;14142:4;14139:1;14132:15;14158:127;14219:10;14214:3;14210:20;14207:1;14200:31;14250:4;14247:1;14240:15;14274:4;14271:1;14264:15

Metadata Hash

ed7f2a170812f55c591e26f5739cb1e6103de4d9a1ae464557abf465811a2a63
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading