ETH Price: $3,607.18 (+4.67%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Poke137146492021-11-30 12:05:271130 days ago1638273927IN
0x29a199a4...32b025dE7
0 ETH0.03110749206.78222134
Poke137134382021-11-30 7:11:021130 days ago1638256262IN
0x29a199a4...32b025dE7
0 ETH0.01975561131.30142346
Poke137132582021-11-30 6:20:221130 days ago1638253222IN
0x29a199a4...32b025dE7
0 ETH0.01663505110.57895776
Poke137130372021-11-30 5:29:401130 days ago1638250180IN
0x29a199a4...32b025dE7
0 ETH0.01673895111.23410886
Poke137119722021-11-30 1:29:191130 days ago1638235759IN
0x29a199a4...32b025dE7
0 ETH0.01844559122.57514966
Poke137118872021-11-30 1:09:141130 days ago1638234554IN
0x29a199a4...32b025dE7
0 ETH0.01998949132.86644435
Poke137110742021-11-29 22:03:051131 days ago1638223385IN
0x29a199a4...32b025dE7
0 ETH0.02445227162.51676134
Poke137104852021-11-29 19:49:011131 days ago1638215341IN
0x29a199a4...32b025dE7
0 ETH0.01749829116.29863247
Poke137098752021-11-29 17:28:421131 days ago1638206922IN
0x29a199a4...32b025dE7
0 ETH0.0266861177.39177424
Poke137097982021-11-29 17:09:471131 days ago1638205787IN
0x29a199a4...32b025dE7
0 ETH0.02198053146.13550291
Poke137089392021-11-29 13:45:461131 days ago1638193546IN
0x29a199a4...32b025dE7
0 ETH0.01644391109.30839821
Poke137086292021-11-29 12:33:371131 days ago1638189217IN
0x29a199a4...32b025dE7
0 ETH0.0132260887.91832137
Poke137075622021-11-29 8:33:351131 days ago1638174815IN
0x29a199a4...32b025dE7
0 ETH0.01645211109.31925913
Poke137065412021-11-29 4:33:051131 days ago1638160385IN
0x29a199a4...32b025dE7
0 ETH0.01827431121.42723684
Poke137055242021-11-29 0:32:461131 days ago1638145966IN
0x29a199a4...32b025dE7
0 ETH0.02063577137.15123241
Poke137051762021-11-28 23:13:091132 days ago1638141189IN
0x29a199a4...32b025dE7
0 ETH0.02489913165.52636827
Poke137051342021-11-28 23:03:221132 days ago1638140602IN
0x29a199a4...32b025dE7
0 ETH0.02853057189.63747847
Poke137049062021-11-28 22:07:071132 days ago1638137227IN
0x29a199a4...32b025dE7
0 ETH0.01099195196.25686155
Poke137049062021-11-28 22:07:071132 days ago1638137227IN
0x29a199a4...32b025dE7
0 ETH0.02954058196.25686155
Poke137048472021-11-28 21:55:511132 days ago1638136551IN
0x29a199a4...32b025dE7
0 ETH0.02353518156.47148864
Poke137047292021-11-28 21:29:121132 days ago1638134952IN
0x29a199a4...32b025dE7
0 ETH0.03044864202.45108253
Poke137042762021-11-28 19:41:421132 days ago1638128502IN
0x29a199a4...32b025dE7
0 ETH0.01515017270.84829698
Poke137042732021-11-28 19:41:011132 days ago1638128461IN
0x29a199a4...32b025dE7
0 ETH0.03872733257.45448319
Poke137041052021-11-28 19:02:191132 days ago1638126139IN
0x29a199a4...32b025dE7
0 ETH0.01754093116.60067304
Poke137040302021-11-28 18:45:151132 days ago1638125115IN
0x29a199a4...32b025dE7
0 ETH0.01930665128.31755032
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
P1MirrorOracleETHUSD

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, Apache-2.0 license
/**
 *Submitted for verification at Etherscan.io on 2020-08-07
*/

/*

    Copyright 2020 dYdX Trading Inc.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

*/

pragma solidity 0.5.16;
pragma experimental ABIEncoderV2;

// File: @openzeppelin/contracts/GSN/Context.sol

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/ownership/Ownable.sol

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/external/maker/I_MakerOracle.sol

/**
 * @title I_MakerOracle
 * @author dYdX
 *
 * Interface for the MakerDAO Oracles V2 smart contrats.
 */
interface I_MakerOracle {

    // ============ Getter Functions ============

    /**
     * @notice Returns the current value as a bytes32.
     */
    function peek()
        external
        view
        returns (bytes32, bool);

    /**
     * @notice Requires a fresh price and then returns the current value.
     */
    function read()
        external
        view
        returns (bytes32);

    /**
     * @notice Returns the number of signers per poke.
     */
    function bar()
        external
        view
        returns (uint256);

    /**
     * @notice Returns the timetamp of the last update.
     */
    function age()
        external
        view
        returns (uint32);

    /**
     * @notice Returns 1 if the signer is authorized, and 0 otherwise.
     */
    function orcl(
        address signer
    )
        external
        view
        returns (uint256);

    /**
     * @notice Returns 1 if the address is authorized to read the oracle price, and 0 otherwise.
     */
    function bud(
        address reader
    )
        external
        view
        returns (uint256);

    /**
     * @notice A mapping from the first byte of an authorized signer's address to the signer.
     */
    function slot(
        uint8 signerId
    )
        external
        view
        returns (address);

    // ============ State-Changing Functions ============

    /**
     * @notice Updates the value of the oracle
     */
    function poke(
        uint256[] calldata val_,
        uint256[] calldata age_,
        uint8[] calldata v,
        bytes32[] calldata r,
        bytes32[] calldata s
    )
        external;

    /**
     * @notice Authorize an address to read the oracle price.
     */
    function kiss(
        address reader
    )
        external;

    /**
     * @notice Unauthorize an address so it can no longer read the oracle price.
     */
    function diss(
        address reader
    )
        external;

    /**
     * @notice Authorize addresses to read the oracle price.
     */
    function kiss(
        address[] calldata readers
    )
        external;

    /**
     * @notice Unauthorize addresses so they can no longer read the oracle price.
     */
    function diss(
        address[] calldata readers
    )
        external;
}

// File: contracts/protocol/v1/oracles/P1MirrorOracle.sol

/**
 * @title P1MirrorOracle
 * @author dYdX
 *
 * Oracle which mirrors an underlying oracle.
 */
contract P1MirrorOracle is
    Ownable,
    I_MakerOracle
{
    // ============ Events ============

    event LogMedianPrice(
        uint256 val,
        uint256 age
    );

    event LogSetSigner(
        address signer,
        bool authorized
    );

    event LogSetBar(
        uint256 bar
    );

    event LogSetReader(
        address reader,
        bool authorized
    );

    // ============ Mutable Storage ============

    // The oracle price.
    uint128 internal _VAL_;

    // The timestamp of the last oracle update.
    uint32 public _AGE_;

    // The number of signers required to update the oracle price.
    uint256 public _BAR_;

    // Authorized signers. Value is equal to 0 or 1.
    mapping (address => uint256) public _ORCL_;

    // Addresses with permission to get the oracle price. Value is equal to 0 or 1.
    mapping (address => uint256) _READERS_;

    // Mapping for at most 256 signers.
    // Each signer is identified by the first byte of their address.
    mapping (uint8 => address) public _SLOT_;

    // ============ Immutable Storage ============

    // The underlying oracle.
    address public _ORACLE_;

    // ============ Constructor ============

    constructor(
        address oracle
    )
        public
    {
        _ORACLE_ = oracle;
    }

    // ============ Getter Functions ============

    /**
     * @notice Returns the current price, and a boolean indicating whether the price is nonzero.
     */
    function peek()
        external
        view
        returns (bytes32, bool)
    {
        require(
            _READERS_[msg.sender] == 1,
            "P1MirrorOracle#peek: Sender not authorized to get price"
        );
        uint256 val = _VAL_;
        return (bytes32(val), val > 0);
    }

    /**
     * @notice Requires the price to be nonzero, and returns the current price.
     */
    function read()
        external
        view
        returns (bytes32)
    {
        require(
            _READERS_[msg.sender] == 1,
            "P1MirrorOracle#read: Sender not authorized to get price"
        );
        uint256 val = _VAL_;
        require(
            val > 0,
            "P1MirrorOracle#read: Price is zero"
        );
        return bytes32(val);
    }

    /**
     * @notice Returns the number of signers per poke.
     */
    function bar()
        external
        view
        returns (uint256)
    {
        return _BAR_;
    }

    /**
     * @notice Returns the timetamp of the last update.
     */
    function age()
        external
        view
        returns (uint32)
    {
        return _AGE_;
    }

    /**
     * @notice Returns 1 if the signer is authorized, and 0 otherwise.
     */
    function orcl(
        address signer
    )
        external
        view
        returns (uint256)
    {
        return _ORCL_[signer];
    }

    /**
     * @notice Returns 1 if the address is authorized to read the oracle price, and 0 otherwise.
     */
    function bud(
        address reader
    )
        external
        view
        returns (uint256)
    {
        return _READERS_[reader];
    }

    /**
     * @notice A mapping from the first byte of an authorized signer's address to the signer.
     */
    function slot(
        uint8 signerId
    )
        external
        view
        returns (address)
    {
        return _SLOT_[signerId];
    }

    /**
     * @notice Check whether the list of signers and required number of signers match the underlying
     *  oracle.
     *
     * @return A bitmap of the IDs of signers that need to be added to the mirror.
     * @return A bitmap of the IDs of signers that need to be removed from the mirror.
     * @return False if the required number of signers (“bar”) matches, and true otherwise.
     */
    function checkSynced()
        external
        view
        returns (uint256, uint256, bool)
    {
        uint256 signersToAdd = 0;
        uint256 signersToRemove = 0;
        bool barNeedsUpdate = _BAR_ != I_MakerOracle(_ORACLE_).bar();

        // Note that `i` cannot be a uint8 since it is incremented to 256 at the end of the loop.
        for (uint256 i = 0; i < 256; i++) {
            uint8 signerId = uint8(i);
            uint256 signerBit = uint256(1) << signerId;
            address ours = _SLOT_[signerId];
            address theirs = I_MakerOracle(_ORACLE_).slot(signerId);
            if (ours == address(0)) {
                if (theirs != address(0)) {
                    signersToAdd = signersToAdd | signerBit;
                }
            } else {
                if (theirs == address(0)) {
                    signersToRemove = signersToRemove | signerBit;
                } else if (ours != theirs) {
                    signersToAdd = signersToAdd | signerBit;
                    signersToRemove = signersToRemove | signerBit;
                }
            }
        }

        return (signersToAdd, signersToRemove, barNeedsUpdate);
    }

    // ============ State-Changing Functions ============

    /**
     * @notice Send an array of signed messages to update the oracle value.
     *  Must have exactly `_BAR_` number of messages.
     */
    function poke(
        uint256[] calldata val_,
        uint256[] calldata age_,
        uint8[] calldata v,
        bytes32[] calldata r,
        bytes32[] calldata s
    )
        external
    {
        require(val_.length == _BAR_, "P1MirrorOracle#poke: Wrong number of messages");

        // Bitmap of signers, used to ensure that each message has a different signer.
        uint256 bloom = 0;

        // Last message value, used to ensure messages are ordered by value.
        uint256 last = 0;

        // Require that all messages are newer than the last oracle update.
        uint256 zzz = _AGE_;

        for (uint256 i = 0; i < val_.length; i++) {
            uint256 val_i = val_[i];
            uint256 age_i = age_[i];

            // Verify that the message comes from an authorized signer.
            address signer = recover(
                val_i,
                age_i,
                v[i],
                r[i],
                s[i]
            );
            require(_ORCL_[signer] == 1, "P1MirrorOracle#poke: Invalid signer");

            // Verify that the message is newer than the last oracle update.
            require(age_i > zzz, "P1MirrorOracle#poke: Stale message");

            // Verify that the messages are ordered by value.
            require(val_i >= last, "P1MirrorOracle#poke: Message out of order");
            last = val_i;

            // Verify that each message has a different signer.
            // Each signer is identified by the first byte of their address.
            uint8 signerId = getSignerId(signer);
            uint256 signerBit = uint256(1) << signerId;
            require(bloom & signerBit == 0, "P1MirrorOracle#poke: Duplicate signer");
            bloom = bloom | signerBit;
        }

        // Set the oracle value to the median (note that val_.length is always odd).
        _VAL_ = uint128(val_[val_.length >> 1]);

        // Set the timestamp of the oracle update.
        _AGE_ = uint32(block.timestamp);

        emit LogMedianPrice(_VAL_, _AGE_);
    }

    /**
     * @notice Authorize new signers. The signers must be authorized on the underlying oracle.
     */
    function lift(
        address[] calldata signers
    )
        external
    {
        for (uint256 i = 0; i < signers.length; i++) {
            address signer = signers[i];
            require(
                I_MakerOracle(_ORACLE_).orcl(signer) == 1,
                "P1MirrorOracle#lift: Signer not authorized on underlying oracle"
            );

            // orcl and slot must both be empty.
            // orcl is filled implies slot is filled, therefore slot is empty implies orcl is empty.
            // Assume that the underlying oracle ensures that the signer cannot be the zero address.
            uint8 signerId = getSignerId(signer);
            require(
                _SLOT_[signerId] == address(0),
                "P1MirrorOracle#lift: Signer already authorized"
            );

            _ORCL_[signer] = 1;
            _SLOT_[signerId] = signer;

            emit LogSetSigner(signer, true);
        }
    }

    /**
     * @notice Unauthorize signers. The signers must NOT be authorized on the underlying oracle.
     */
    function drop(
        address[] calldata signers
    )
        external
    {
        for (uint256 i = 0; i < signers.length; i++) {
            address signer = signers[i];
            require(
                I_MakerOracle(_ORACLE_).orcl(signer) == 0,
                "P1MirrorOracle#drop: Signer is authorized on underlying oracle"
            );

            // orcl and slot must both be filled.
            // orcl is filled implies slot is filled.
            require(
                _ORCL_[signer] != 0,
                "P1MirrorOracle#drop: Signer is already not authorized"
            );

            uint8 signerId = getSignerId(signer);
            _ORCL_[signer] = 0;
            _SLOT_[signerId] = address(0);

            emit LogSetSigner(signer, false);
        }
    }

    /**
     * @notice Sync `_BAR_` (the number of required signers) with the underyling oracle contract.
     */
    function setBar()
        external
    {
        uint256 newBar = I_MakerOracle(_ORACLE_).bar();
        _BAR_ = newBar;
        emit LogSetBar(newBar);
    }

    /**
     * @notice Authorize an address to read the oracle price.
     */
    function kiss(
        address reader
    )
        external
        onlyOwner
    {
        _kiss(reader);
    }

    /**
     * @notice Unauthorize an address so it can no longer read the oracle price.
     */
    function diss(
        address reader
    )
        external
        onlyOwner
    {
        _diss(reader);
    }

    /**
     * @notice Authorize addresses to read the oracle price.
     */
    function kiss(
        address[] calldata readers
    )
        external
        onlyOwner
    {
        for (uint256 i = 0; i < readers.length; i++) {
            _kiss(readers[i]);
        }
    }

    /**
     * @notice Unauthorize addresses so they can no longer read the oracle price.
     */
    function diss(
        address[] calldata readers
    )
        external
        onlyOwner
    {
        for (uint256 i = 0; i < readers.length; i++) {
            _diss(readers[i]);
        }
    }

    // ============ Internal Functions ============

    function wat()
        internal
        pure
        returns (bytes32);

    function recover(
        uint256 val_,
        uint256 age_,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        internal
        pure
        returns (address)
    {
        return ecrecover(
            keccak256(
                abi.encodePacked("\x19Ethereum Signed Message:\n32",
                keccak256(abi.encodePacked(val_, age_, wat())))
            ),
            v,
            r,
            s
        );
    }

    function getSignerId(
        address signer
    )
        internal
        pure
        returns (uint8)
    {
        return uint8(uint256(signer) >> 152);
    }

    function _kiss(
        address reader
    )
        private
    {
        _READERS_[reader] = 1;
        emit LogSetReader(reader, true);
    }

    function _diss(
        address reader
    )
        private
    {
        _READERS_[reader] = 0;
        emit LogSetReader(reader, false);
    }
}

// File: contracts/protocol/v1/oracles/P1MirrorOracleETHUSD.sol

/**
 * @title P1MirrorOracleETHUSD
 * @author dYdX
 *
 * Oracle which mirrors the ETHUSD oracle.
 */
contract P1MirrorOracleETHUSD is
    P1MirrorOracle
{
    bytes32 public constant WAT = "ETHUSD";

    constructor(
        address oracle
    )
        P1MirrorOracle(oracle)
        public
    {
    }

    function wat()
        internal
        pure
        returns (bytes32)
    {
        return WAT;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"val","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"age","type":"uint256"}],"name":"LogMedianPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bar","type":"uint256"}],"name":"LogSetBar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"reader","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"LogSetReader","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"signer","type":"address"},{"indexed":false,"internalType":"bool","name":"authorized","type":"bool"}],"name":"LogSetSigner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":true,"inputs":[],"name":"WAT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_AGE_","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_BAR_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_ORACLE_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_ORCL_","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"_SLOT_","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"age","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"bud","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkSynced","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"readers","type":"address[]"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"diss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"}],"name":"drop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"readers","type":"address[]"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"reader","type":"address"}],"name":"kiss","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"signers","type":"address[]"}],"name":"lift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"signer","type":"address"}],"name":"orcl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peek","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"val_","type":"uint256[]"},{"internalType":"uint256[]","name":"age_","type":"uint256[]"},{"internalType":"uint8[]","name":"v","type":"uint8[]"},{"internalType":"bytes32[]","name":"r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"s","type":"bytes32[]"}],"name":"poke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"read","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setBar","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint8","name":"signerId","type":"uint8"}],"name":"slot","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001faa38038062001faa8339810160408190526200003491620000d2565b8060006200004a6001600160e01b03620000bb16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b03929092169190911790555062000127565b3390565b8051620000cc816200010d565b92915050565b600060208284031215620000e557600080fd5b6000620000f38484620000bf565b949350505050565b60006001600160a01b038216620000cc565b6200011881620000fb565b81146200012457600080fd5b50565b611e7380620001376000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806382bdfc35116100ee5780638f8d10bb11610097578063e2f1028e11610071578063e2f1028e14610338578063f29c29c414610340578063f2fde38b14610353578063febb0f7e14610366576101ae565b80638f8d10bb146102fb578063943181061461030e578063aff85a4b14610321576101ae565b80638da5cb5b116100c85780638da5cb5b146102cb5780638ef5eaf0146102d35780638f32d59b146102e6576101ae565b806382bdfc351461029d57806389bbb8b2146102a55780638d0e5a9a146102b8576101ae565b80634e7d34221161015b57806359e02dd71161013557806359e02dd71461026457806365c4ce7a1461027a578063715018a61461028d57806373a2ab7c14610295576101ae565b80634e7d3422146102415780634fce7a2a1461024957806357de26a41461025c576101ae565b806324a904b51161018c57806324a904b514610211578063262a9dff1461021957806346d4577d1461022e576101ae565b8063020b2e32146101b35780631006b5d7146101dc5780631b25b65f146101fc575b600080fd5b6101c66101c1366004611412565b61036e565b6040516101d39190611c06565b60405180910390f35b6101ef6101ea3660046115b8565b610396565b6040516101d39190611bc8565b61020f61020a366004611456565b6103be565b005b61020f61042c565b610221610512565b6040516101d39190611d7a565b61020f61023c366004611456565b610532565b6101c6610592565b6101c6610257366004611412565b6105b6565b6101c66105de565b61026c610644565b6040516101d3929190611c14565b61020f610288366004611412565b610693565b61020f6106c3565b6101ef610756565b6101c6610772565b61020f6102b3366004611498565b610778565b6101ef6102c63660046115b8565b610a0c565b6101ef610a37565b61020f6102e1366004611456565b610a53565b6102ee610c34565b6040516101d39190611bf8565b6101c6610309366004611412565b610c72565b61020f61031c366004611456565b610c84565b610329610e74565b6040516101d393929190611d52565b6102216110bd565b61020f61034e366004611412565b6110dd565b61020f610361366004611412565b61110a565b6101c6611137565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103c6610c34565b6103eb5760405162461bcd60e51b81526004016103e290611cd7565b60405180910390fd5b60005b818110156104275761041f83838381811061040557fe5b905060200201602061041a9190810190611412565b61113d565b6001016103ee565b505050565b600654604080517ffebb0f7e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163febb0f7e916004808301926020929190829003018186803b15801561049757600080fd5b505afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104cf919081019061159a565b9050806002819055507f48c6ae1362d7627f13b4207e5f5cd2724aaac090cb9602e9e8aefe15eb8f24a6816040516105079190611c06565b60405180910390a150565b600154700100000000000000000000000000000000900463ffffffff1690565b61053a610c34565b6105565760405162461bcd60e51b81526004016103e290611cd7565b60005b818110156104275761058a83838381811061057057fe5b90506020020160206105859190810190611412565b61119a565b600101610559565b7f455448555344000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b3360009081526004602052604081205460011461060d5760405162461bcd60e51b81526004016103e290611d27565b6001546fffffffffffffffffffffffffffffffff168061063f5760405162461bcd60e51b81526004016103e290611c77565b905090565b3360009081526004602052604081205481906001146106755760405162461bcd60e51b81526004016103e290611d17565b50506001546fffffffffffffffffffffffffffffffff168015159091565b61069b610c34565b6106b75760405162461bcd60e51b81526004016103e290611cd7565b6106c08161119a565b50565b6106cb610c34565b6106e75760405162461bcd60e51b81526004016103e290611cd7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60025489146107995760405162461bcd60e51b81526004016103e290611ca7565b6001546000908190700100000000000000000000000000000000900463ffffffff16815b8c8110156109195760008e8e838181106107d357fe5b90506020020135905060008d8d848181106107ea57fe5b905060200201359050600061084683838f8f8881811061080657fe5b905060200201602061081b91908101906115b8565b8e8e8981811061082757fe5b905060200201358d8d8a81811061083a57fe5b905060200201356111f2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915060011461088e5760405162461bcd60e51b81526004016103e290611cc7565b8482116108ad5760405162461bcd60e51b81526004016103e290611c97565b858310156108cd5760405162461bcd60e51b81526004016103e290611c57565b82955060006108db826112a6565b9050600160ff82161b888116156109045760405162461bcd60e51b81526004016103e290611d07565b97909717965050600190920191506107bd9050565b508c8c600181901c81811061092a57fe5b6001805463ffffffff4281167001000000000000000000000000000000009081027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff6020909702989098013586167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416939093179690961691909117918290556040517fb78ebc573f1f889ca9e1e0fb62c843c836f3d3a2e1f43ef62940e9b894f4ea4c956109f59550938316939092041690611d37565b60405180910390a150505050505050505050505050565b60ff1660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005b81811015610427576000838383818110610a6c57fe5b9050602002016020610a819190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610ad8908490600401611bc8565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b28919081019061159a565b15610b455760405162461bcd60e51b81526004016103e290611cf7565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902054610b875760405162461bcd60e51b81526004016103e290611ce7565b6000610b92826112a6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020908152604080832083905560ff84168352600590915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519192507f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610c22918591611bd6565b60405180910390a15050600101610a56565b6000805473ffffffffffffffffffffffffffffffffffffffff16610c566112af565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60036020526000908152604090205481565b60005b81811015610427576000838383818110610c9d57fe5b9050602002016020610cb29190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610d09908490600401611bc8565b60206040518083038186803b158015610d2157600080fd5b505afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d59919081019061159a565b600114610d785760405162461bcd60e51b81526004016103e290611cb7565b6000610d83826112a6565b60ff811660009081526005602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610dcc5760405162461bcd60e51b81526004016103e290611c67565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832060019081905560ff8616845260059092529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016909317909255517f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610e6291859190611bd6565b60405180910390a15050600101610c87565b6000806000806000905060008090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663febb0f7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f25919081019061159a565b6002541415905060005b6101008110156110b05760ff81166000818152600560205260408082205460065491517f8d0e5a9a00000000000000000000000000000000000000000000000000000000815285946001901b9373ffffffffffffffffffffffffffffffffffffffff9283169390921690638d0e5a9a90610fad908790600401611d88565b60206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ffd9190810190611438565b905073ffffffffffffffffffffffffffffffffffffffff82166110405773ffffffffffffffffffffffffffffffffffffffff81161561103b57968217965b6110a0565b73ffffffffffffffffffffffffffffffffffffffff811661106457958217956110a0565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a05796821796958217955b505060019092019150610f2f9050565b5091945092509050909192565b600154700100000000000000000000000000000000900463ffffffff1681565b6110e5610c34565b6111015760405162461bcd60e51b81526004016103e290611cd7565b6106c08161113d565b611112610c34565b61112e5760405162461bcd60e51b81526004016103e290611cd7565b6106c0816112b3565b60025490565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260409081902060019081905590517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040808220829055517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b600060018686611200611373565b60405160200161121293929190611b91565b604051602081830303815290604052805190602001206040516020016112389190611b71565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161126e9493929190611c22565b6020604051602081039080840390855afa158015611290573d6000803e3d6000fd5b5050506020604051035190505b95945050505050565b60981c60ff1690565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166112e65760405162461bcd60e51b81526004016103e290611c87565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f455448555344000000000000000000000000000000000000000000000000000090565b80356113a281611e0a565b92915050565b80516113a281611e0a565b60008083601f8401126113c557600080fd5b50813567ffffffffffffffff8111156113dd57600080fd5b6020830191508360208202830111156113f557600080fd5b9250929050565b80516113a281611e1e565b80356113a281611e27565b60006020828403121561142457600080fd5b60006114308484611397565b949350505050565b60006020828403121561144a57600080fd5b600061143084846113a8565b6000806020838503121561146957600080fd5b823567ffffffffffffffff81111561148057600080fd5b61148c858286016113b3565b92509250509250929050565b60008060008060008060008060008060a08b8d0312156114b757600080fd5b8a3567ffffffffffffffff8111156114ce57600080fd5b6114da8d828e016113b3565b9a509a505060208b013567ffffffffffffffff8111156114f957600080fd5b6115058d828e016113b3565b985098505060408b013567ffffffffffffffff81111561152457600080fd5b6115308d828e016113b3565b965096505060608b013567ffffffffffffffff81111561154f57600080fd5b61155b8d828e016113b3565b945094505060808b013567ffffffffffffffff81111561157a57600080fd5b6115868d828e016113b3565b92509250509295989b9194979a5092959850565b6000602082840312156115ac57600080fd5b600061143084846113fc565b6000602082840312156115ca57600080fd5b60006114308484611407565b6115df81611da4565b82525050565b6115df81611daf565b6115df81611db4565b6115df61160382611db4565b611db4565b6000611615602983611d96565b7f50314d6972726f724f7261636c6523706f6b653a204d657373616765206f757481527f206f66206f726465720000000000000000000000000000000000000000000000602082015260400192915050565b6000611674602e83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e657220616c726581527f61647920617574686f72697a6564000000000000000000000000000000000000602082015260400192915050565b60006116d3602283611d96565b7f50314d6972726f724f7261636c6523726561643a205072696365206973207a6581527f726f000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611732601c83611d9f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061176b602683611d96565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006117ca602283611d96565b7f50314d6972726f724f7261636c6523706f6b653a205374616c65206d6573736181527f6765000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611829602d83611d96565b7f50314d6972726f724f7261636c6523706f6b653a2057726f6e67206e756d626581527f72206f66206d6573736167657300000000000000000000000000000000000000602082015260400192915050565b6000611888603f83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e6572206e6f742081527f617574686f72697a6564206f6e20756e6465726c79696e67206f7261636c6500602082015260400192915050565b60006118e7602383611d96565b7f50314d6972726f724f7261636c6523706f6b653a20496e76616c69642073696781527f6e65720000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611946602083611d96565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061197f603583611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f6c7265616479206e6f7420617574686f72697a65640000000000000000000000602082015260400192915050565b60006119de603e83611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f7574686f72697a6564206f6e20756e6465726c79696e67206f7261636c650000602082015260400192915050565b6000611a3d602583611d96565b7f50314d6972726f724f7261636c6523706f6b653a204475706c6963617465207381527f69676e6572000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a9c603783611d96565b7f50314d6972726f724f7261636c65237065656b3a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6000611afb603783611d96565b7f50314d6972726f724f7261636c6523726561643a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6115df81611df4565b6115df81611dff565b6115df81611de5565b6115df81611dee565b6000611b7c82611725565b9150611b8882846115f7565b50602001919050565b6000611b9d82866115f7565b602082019150611bad82856115f7565b602082019150611bbd82846115f7565b506020019392505050565b602081016113a282846115d6565b60408101611be482856115d6565b611bf160208301846115e5565b9392505050565b602081016113a282846115e5565b602081016113a282846115ee565b60408101611be482856115ee565b60808101611c3082876115ee565b611c3d6020830186611b68565b611c4a60408301856115ee565b61129d60608301846115ee565b602080825281016113a281611608565b602080825281016113a281611667565b602080825281016113a2816116c6565b602080825281016113a28161175e565b602080825281016113a2816117bd565b602080825281016113a28161181c565b602080825281016113a28161187b565b602080825281016113a2816118da565b602080825281016113a281611939565b602080825281016113a281611972565b602080825281016113a2816119d1565b602080825281016113a281611a30565b602080825281016113a281611a8f565b602080825281016113a281611aee565b60408101611d458285611b4d565b611bf16020830184611b56565b60608101611d6082866115ee565b611d6d60208301856115ee565b61143060408301846115e5565b602081016113a28284611b5f565b602081016113a28284611b68565b90815260200190565b919050565b60006113a282611dcc565b151590565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b60006113a282611db7565b60006113a282611de5565b611e1381611da4565b81146106c057600080fd5b611e1381611db4565b611e1381611dee56fea365627a7a72315820ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc6c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c806382bdfc35116100ee5780638f8d10bb11610097578063e2f1028e11610071578063e2f1028e14610338578063f29c29c414610340578063f2fde38b14610353578063febb0f7e14610366576101ae565b80638f8d10bb146102fb578063943181061461030e578063aff85a4b14610321576101ae565b80638da5cb5b116100c85780638da5cb5b146102cb5780638ef5eaf0146102d35780638f32d59b146102e6576101ae565b806382bdfc351461029d57806389bbb8b2146102a55780638d0e5a9a146102b8576101ae565b80634e7d34221161015b57806359e02dd71161013557806359e02dd71461026457806365c4ce7a1461027a578063715018a61461028d57806373a2ab7c14610295576101ae565b80634e7d3422146102415780634fce7a2a1461024957806357de26a41461025c576101ae565b806324a904b51161018c57806324a904b514610211578063262a9dff1461021957806346d4577d1461022e576101ae565b8063020b2e32146101b35780631006b5d7146101dc5780631b25b65f146101fc575b600080fd5b6101c66101c1366004611412565b61036e565b6040516101d39190611c06565b60405180910390f35b6101ef6101ea3660046115b8565b610396565b6040516101d39190611bc8565b61020f61020a366004611456565b6103be565b005b61020f61042c565b610221610512565b6040516101d39190611d7a565b61020f61023c366004611456565b610532565b6101c6610592565b6101c6610257366004611412565b6105b6565b6101c66105de565b61026c610644565b6040516101d3929190611c14565b61020f610288366004611412565b610693565b61020f6106c3565b6101ef610756565b6101c6610772565b61020f6102b3366004611498565b610778565b6101ef6102c63660046115b8565b610a0c565b6101ef610a37565b61020f6102e1366004611456565b610a53565b6102ee610c34565b6040516101d39190611bf8565b6101c6610309366004611412565b610c72565b61020f61031c366004611456565b610c84565b610329610e74565b6040516101d393929190611d52565b6102216110bd565b61020f61034e366004611412565b6110dd565b61020f610361366004611412565b61110a565b6101c6611137565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6103c6610c34565b6103eb5760405162461bcd60e51b81526004016103e290611cd7565b60405180910390fd5b60005b818110156104275761041f83838381811061040557fe5b905060200201602061041a9190810190611412565b61113d565b6001016103ee565b505050565b600654604080517ffebb0f7e000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163febb0f7e916004808301926020929190829003018186803b15801561049757600080fd5b505afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104cf919081019061159a565b9050806002819055507f48c6ae1362d7627f13b4207e5f5cd2724aaac090cb9602e9e8aefe15eb8f24a6816040516105079190611c06565b60405180910390a150565b600154700100000000000000000000000000000000900463ffffffff1690565b61053a610c34565b6105565760405162461bcd60e51b81526004016103e290611cd7565b60005b818110156104275761058a83838381811061057057fe5b90506020020160206105859190810190611412565b61119a565b600101610559565b7f455448555344000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b3360009081526004602052604081205460011461060d5760405162461bcd60e51b81526004016103e290611d27565b6001546fffffffffffffffffffffffffffffffff168061063f5760405162461bcd60e51b81526004016103e290611c77565b905090565b3360009081526004602052604081205481906001146106755760405162461bcd60e51b81526004016103e290611d17565b50506001546fffffffffffffffffffffffffffffffff168015159091565b61069b610c34565b6106b75760405162461bcd60e51b81526004016103e290611cd7565b6106c08161119a565b50565b6106cb610c34565b6106e75760405162461bcd60e51b81526004016103e290611cd7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60025489146107995760405162461bcd60e51b81526004016103e290611ca7565b6001546000908190700100000000000000000000000000000000900463ffffffff16815b8c8110156109195760008e8e838181106107d357fe5b90506020020135905060008d8d848181106107ea57fe5b905060200201359050600061084683838f8f8881811061080657fe5b905060200201602061081b91908101906115b8565b8e8e8981811061082757fe5b905060200201358d8d8a81811061083a57fe5b905060200201356111f2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915060011461088e5760405162461bcd60e51b81526004016103e290611cc7565b8482116108ad5760405162461bcd60e51b81526004016103e290611c97565b858310156108cd5760405162461bcd60e51b81526004016103e290611c57565b82955060006108db826112a6565b9050600160ff82161b888116156109045760405162461bcd60e51b81526004016103e290611d07565b97909717965050600190920191506107bd9050565b508c8c600181901c81811061092a57fe5b6001805463ffffffff4281167001000000000000000000000000000000009081027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff6020909702989098013586167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416939093179690961691909117918290556040517fb78ebc573f1f889ca9e1e0fb62c843c836f3d3a2e1f43ef62940e9b894f4ea4c956109f59550938316939092041690611d37565b60405180910390a150505050505050505050505050565b60ff1660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005b81811015610427576000838383818110610a6c57fe5b9050602002016020610a819190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610ad8908490600401611bc8565b60206040518083038186803b158015610af057600080fd5b505afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b28919081019061159a565b15610b455760405162461bcd60e51b81526004016103e290611cf7565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902054610b875760405162461bcd60e51b81526004016103e290611ce7565b6000610b92826112a6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020908152604080832083905560ff84168352600590915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055519192507f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610c22918591611bd6565b60405180910390a15050600101610a56565b6000805473ffffffffffffffffffffffffffffffffffffffff16610c566112af565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60036020526000908152604090205481565b60005b81811015610427576000838383818110610c9d57fe5b9050602002016020610cb29190810190611412565b6006546040517f020b2e3200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063020b2e3290610d09908490600401611bc8565b60206040518083038186803b158015610d2157600080fd5b505afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d59919081019061159a565b600114610d785760405162461bcd60e51b81526004016103e290611cb7565b6000610d83826112a6565b60ff811660009081526005602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1615610dcc5760405162461bcd60e51b81526004016103e290611c67565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832060019081905560ff8616845260059092529182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016909317909255517f8700965646f22bb776d5e0cbb11e1559f8143228405160e62250b866e954d91291610e6291859190611bd6565b60405180910390a15050600101610c87565b6000806000806000905060008090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663febb0f7e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f25919081019061159a565b6002541415905060005b6101008110156110b05760ff81166000818152600560205260408082205460065491517f8d0e5a9a00000000000000000000000000000000000000000000000000000000815285946001901b9373ffffffffffffffffffffffffffffffffffffffff9283169390921690638d0e5a9a90610fad908790600401611d88565b60206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ffd9190810190611438565b905073ffffffffffffffffffffffffffffffffffffffff82166110405773ffffffffffffffffffffffffffffffffffffffff81161561103b57968217965b6110a0565b73ffffffffffffffffffffffffffffffffffffffff811661106457958217956110a0565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a05796821796958217955b505060019092019150610f2f9050565b5091945092509050909192565b600154700100000000000000000000000000000000900463ffffffff1681565b6110e5610c34565b6111015760405162461bcd60e51b81526004016103e290611cd7565b6106c08161113d565b611112610c34565b61112e5760405162461bcd60e51b81526004016103e290611cd7565b6106c0816112b3565b60025490565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460205260409081902060019081905590517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040808220829055517fadb3d91f6b7a78ea487b119a89fd644a0e6cf0909aa48faff97d153e0df682c09161050791849190611bd6565b600060018686611200611373565b60405160200161121293929190611b91565b604051602081830303815290604052805190602001206040516020016112389190611b71565b604051602081830303815290604052805190602001208585856040516000815260200160405260405161126e9493929190611c22565b6020604051602081039080840390855afa158015611290573d6000803e3d6000fd5b5050506020604051035190505b95945050505050565b60981c60ff1690565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166112e65760405162461bcd60e51b81526004016103e290611c87565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7f455448555344000000000000000000000000000000000000000000000000000090565b80356113a281611e0a565b92915050565b80516113a281611e0a565b60008083601f8401126113c557600080fd5b50813567ffffffffffffffff8111156113dd57600080fd5b6020830191508360208202830111156113f557600080fd5b9250929050565b80516113a281611e1e565b80356113a281611e27565b60006020828403121561142457600080fd5b60006114308484611397565b949350505050565b60006020828403121561144a57600080fd5b600061143084846113a8565b6000806020838503121561146957600080fd5b823567ffffffffffffffff81111561148057600080fd5b61148c858286016113b3565b92509250509250929050565b60008060008060008060008060008060a08b8d0312156114b757600080fd5b8a3567ffffffffffffffff8111156114ce57600080fd5b6114da8d828e016113b3565b9a509a505060208b013567ffffffffffffffff8111156114f957600080fd5b6115058d828e016113b3565b985098505060408b013567ffffffffffffffff81111561152457600080fd5b6115308d828e016113b3565b965096505060608b013567ffffffffffffffff81111561154f57600080fd5b61155b8d828e016113b3565b945094505060808b013567ffffffffffffffff81111561157a57600080fd5b6115868d828e016113b3565b92509250509295989b9194979a5092959850565b6000602082840312156115ac57600080fd5b600061143084846113fc565b6000602082840312156115ca57600080fd5b60006114308484611407565b6115df81611da4565b82525050565b6115df81611daf565b6115df81611db4565b6115df61160382611db4565b611db4565b6000611615602983611d96565b7f50314d6972726f724f7261636c6523706f6b653a204d657373616765206f757481527f206f66206f726465720000000000000000000000000000000000000000000000602082015260400192915050565b6000611674602e83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e657220616c726581527f61647920617574686f72697a6564000000000000000000000000000000000000602082015260400192915050565b60006116d3602283611d96565b7f50314d6972726f724f7261636c6523726561643a205072696365206973207a6581527f726f000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611732601c83611d9f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b600061176b602683611d96565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006117ca602283611d96565b7f50314d6972726f724f7261636c6523706f6b653a205374616c65206d6573736181527f6765000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611829602d83611d96565b7f50314d6972726f724f7261636c6523706f6b653a2057726f6e67206e756d626581527f72206f66206d6573736167657300000000000000000000000000000000000000602082015260400192915050565b6000611888603f83611d96565b7f50314d6972726f724f7261636c65236c6966743a205369676e6572206e6f742081527f617574686f72697a6564206f6e20756e6465726c79696e67206f7261636c6500602082015260400192915050565b60006118e7602383611d96565b7f50314d6972726f724f7261636c6523706f6b653a20496e76616c69642073696781527f6e65720000000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611946602083611d96565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b600061197f603583611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f6c7265616479206e6f7420617574686f72697a65640000000000000000000000602082015260400192915050565b60006119de603e83611d96565b7f50314d6972726f724f7261636c652364726f703a205369676e6572206973206181527f7574686f72697a6564206f6e20756e6465726c79696e67206f7261636c650000602082015260400192915050565b6000611a3d602583611d96565b7f50314d6972726f724f7261636c6523706f6b653a204475706c6963617465207381527f69676e6572000000000000000000000000000000000000000000000000000000602082015260400192915050565b6000611a9c603783611d96565b7f50314d6972726f724f7261636c65237065656b3a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6000611afb603783611d96565b7f50314d6972726f724f7261636c6523726561643a2053656e646572206e6f742081527f617574686f72697a656420746f20676574207072696365000000000000000000602082015260400192915050565b6115df81611df4565b6115df81611dff565b6115df81611de5565b6115df81611dee565b6000611b7c82611725565b9150611b8882846115f7565b50602001919050565b6000611b9d82866115f7565b602082019150611bad82856115f7565b602082019150611bbd82846115f7565b506020019392505050565b602081016113a282846115d6565b60408101611be482856115d6565b611bf160208301846115e5565b9392505050565b602081016113a282846115e5565b602081016113a282846115ee565b60408101611be482856115ee565b60808101611c3082876115ee565b611c3d6020830186611b68565b611c4a60408301856115ee565b61129d60608301846115ee565b602080825281016113a281611608565b602080825281016113a281611667565b602080825281016113a2816116c6565b602080825281016113a28161175e565b602080825281016113a2816117bd565b602080825281016113a28161181c565b602080825281016113a28161187b565b602080825281016113a2816118da565b602080825281016113a281611939565b602080825281016113a281611972565b602080825281016113a2816119d1565b602080825281016113a281611a30565b602080825281016113a281611a8f565b602080825281016113a281611aee565b60408101611d458285611b4d565b611bf16020830184611b56565b60608101611d6082866115ee565b611d6d60208301856115ee565b61143060408301846115e5565b602081016113a28284611b5f565b602081016113a28284611b68565b90815260200190565b919050565b60006113a282611dcc565b151590565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b60006113a282611db7565b60006113a282611de5565b611e1381611da4565b81146106c057600080fd5b611e1381611db4565b611e1381611dee56fea365627a7a72315820ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc6c6578706572696d656e74616cf564736f6c63430005100040

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85

-----Decoded View---------------
Arg [0] : oracle (address): 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000064de91f5a373cd4c28de3600cb34c7c6ce410c85


Deployed Bytecode Sourcemap

19171:332:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19171:332:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9896:150;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8116:40;;;;;;;;;:::i;:::-;;;;;;;;17364:207;;;;;;;;;:::i;:::-;;16675:164;;;:::i;9689:109::-;;;:::i;:::-;;;;;;;;17680:207;;;;;;;;;:::i;19232:38::-;;;:::i;10170:152::-;;;;;;;;;:::i;9022:392::-;;;:::i;8608:307::-;;;:::i;:::-;;;;;;;;;17156:120;;;;;;;;;:::i;3592:140::-;;;:::i;8250:23::-;;;:::i;7739:20::-;;;:::i;12437:2091::-;;;;;;;;;:::i;10443:152::-;;;;;;;;;:::i;2781:79::-;;;:::i;15736:814::-;;;;;;;;;:::i;3147:94::-;;;:::i;:::-;;;;;;;;7822:42;;;;;;;;;:::i;14650:962::-;;;;;;;;;:::i;11017:1201::-;;;:::i;:::-;;;;;;;;;;7644:19;;;:::i;16928:120::-;;;;;;;;;:::i;3887:109::-;;;;;;;;;:::i;9496:110::-;;;:::i;9896:150::-;10024:14;;9992:7;10024:14;;;:6;:14;;;;;;;9896:150::o;8116:40::-;;;;;;;;;;;;;;;:::o;17364:207::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;;;;;;;;;17480:9;17475:89;17495:18;;;17475:89;;;17535:17;17541:7;;17549:1;17541:10;;;;;;;;;;;;;;;;;;;;;;17535:5;:17::i;:::-;17515:3;;17475:89;;;;17364:207;;:::o;16675:164::-;16758:8;;16744:29;;;;;;;;16727:14;;16758:8;;;16744:27;;:29;;;;;;;;;;;;;;16758:8;16744:29;;;5:2:-1;;;;30:1;27;20:12;5:2;16744:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16744:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;16744:29:0;;;;;;;;;16727:46;;16792:6;16784:5;:14;;;;16814:17;16824:6;16814:17;;;;;;;;;;;;;;;16675:164;:::o;9689:109::-;9785:5;;;;;;;;9689:109::o;17680:207::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17796:9;17791:89;17811:18;;;17791:89;;;17851:17;17857:7;;17865:1;17857:10;;;;;;;;;;;;;;;;;;;;;;17851:5;:17::i;:::-;17831:3;;17791:89;;19232:38;;;:::o;10170:152::-;10297:17;;10265:7;10297:17;;;:9;:17;;;;;;;10170:152::o;9022:392::-;9145:10;9088:7;9135:21;;;:9;:21;;;;;;9160:1;9135:26;9113:131;;;;-1:-1:-1;;;9113:131:0;;;;;;;;;9269:5;;;;9307:7;9285:91;;;;-1:-1:-1;;;9285:91:0;;;;;;;;;9402:3;-1:-1:-1;9022:392:0;:::o;8608:307::-;8737:10;8674:7;8727:21;;;:9;:21;;;;;;8674:7;;8752:1;8727:26;8705:131;;;;-1:-1:-1;;;8705:131:0;;;;;;;;;-1:-1:-1;;8861:5:0;;;;8899:7;;;8608:307;;:::o;17156:120::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17255:13;17261:6;17255:5;:13::i;:::-;17156:120;:::o;3592:140::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;3691:1;3675:6;;3654:40;;;3675:6;;;;3654:40;;3691:1;;3654:40;3722:1;3705:19;;;;;;3592:140::o;8250:23::-;;;;;;:::o;7739:20::-;;;;:::o;12437:2091::-;12674:5;;12659:20;;12651:78;;;;-1:-1:-1;;;12651:78:0;;;;;;;;;13058:5;;12830:13;;;;13058:5;;;;;12830:13;13076:1165;13096:15;;;13076:1165;;;13133:13;13149:4;;13154:1;13149:7;;;;;;;;;;;;;13133:23;;13171:13;13187:4;;13192:1;13187:7;;;;;;;;;;;;;13171:23;;13284:14;13301:139;13327:5;13351;13375:1;;13377;13375:4;;;;;;;;;;;;;;;;;;;;;;13398:1;;13400;13398:4;;;;;;;;;;;;;13421:1;;13423;13421:4;;;;;;;;;;;;;13301:7;:139::i;:::-;13463:14;;;;;;;:6;:14;;;;;;13284:156;;-1:-1:-1;13481:1:0;13463:19;13455:67;;;;-1:-1:-1;;;13455:67:0;;;;;;;;;13633:3;13625:5;:11;13617:58;;;;-1:-1:-1;;;13617:58:0;;;;;;;;;13772:4;13763:5;:13;;13755:67;;;;-1:-1:-1;;;13755:67:0;;;;;;;;;13844:5;13837:12;;14009:14;14026:19;14038:6;14026:11;:19::i;:::-;14009:36;-1:-1:-1;14088:1:0;14080:22;;;;14125:17;;;:22;14117:72;;;;-1:-1:-1;;;14117:72:0;;;;;;;;;14212:17;;;;;-1:-1:-1;;13113:3:0;;;;;-1:-1:-1;13076:1165:0;;-1:-1:-1;13076:1165:0;;-1:-1:-1;14355:4:0;;14375:1;14360:16;;;14355:22;;;;;;;14339:5;:39;;14443:31;14458:15;14443:31;;;;;;;14339:39;14355:22;;;;;;;;;14339:39;;;;;;;;;;14443:31;;;;;;;;;;;;14492:28;;;;;;-1:-1:-1;14507:5:0;;;;14514;;;;;14492:28;;;;;;;;;;12437:2091;;;;;;;;;;;;;:::o;10443:152::-;10571:16;;10539:7;10571:16;;;:6;:16;;;;;;;;;10443:152::o;2781:79::-;2819:7;2846:6;;;2781:79;:::o;15736:814::-;15833:9;15828:715;15848:18;;;15828:715;;;15888:14;15905:7;;15913:1;15905:10;;;;;;;;;;;;;;;;;;;;;;15970:8;;15956:36;;;;;15888:27;;-1:-1:-1;15970:8:0;;;15956:28;;:36;;15888:27;;15956:36;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15956:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15956:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15956:36:0;;;;;;;;;:41;15930:165;;;;-1:-1:-1;;;15930:165:0;;;;;;;;;16244:14;;;;;;;:6;:14;;;;;;16218:134;;;;-1:-1:-1;;;16218:134:0;;;;;;;;;16369:14;16386:19;16398:6;16386:11;:19::i;:::-;16420:14;;;16437:1;16420:14;;;:6;:14;;;;;;;;:18;;;16453:16;;;;;:6;:16;;;;;;:29;;;;;;16504:27;16369:36;;-1:-1:-1;16504:27:0;;;;16427:6;;16504:27;;;;;;;;;;-1:-1:-1;;15868:3:0;;15828:715;;3147:94;3187:4;3227:6;;;;3211:12;:10;:12::i;:::-;:22;;;3204:29;;3147:94;:::o;7822:42::-;;;;;;;;;;;;;:::o;14650:962::-;14747:9;14742:863;14762:18;;;14742:863;;;14802:14;14819:7;;14827:1;14819:10;;;;;;;;;;;;;;;;;;;;;;14884:8;;14870:36;;;;;14802:27;;-1:-1:-1;14884:8:0;;;14870:28;;:36;;14802:27;;14870:36;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14870:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14870:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14870:36:0;;;;;;;;;14910:1;14870:41;14844:166;;;;-1:-1:-1;;;14844:166:0;;;;;;;;;15281:14;15298:19;15310:6;15298:11;:19::i;:::-;15358:16;;;15386:1;15358:16;;;:6;:16;;;;;;15281:36;;-1:-1:-1;15358:30:0;:16;:30;15332:138;;;;-1:-1:-1;;;15332:138:0;;;;;;;;;15487:14;;;;;;;:6;:14;;;;;;;;15504:1;15487:18;;;;15520:16;;;;;:6;:16;;;;;;;:25;;;;;;;;;;15567:26;;;;;15494:6;;15504:1;15567:26;;;;;;;;;;-1:-1:-1;;14782:3:0;;14742:863;;11017:1201;11090:7;11099;11108:4;11130:20;11153:1;11130:24;;11165:23;11191:1;11165:27;;11203:19;11248:8;;;;;;;;;;;11234:27;;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11234:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11234:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11234:29:0;;;;;;;;;11225:5;;:38;;;-1:-1:-1;11380:9:0;11375:769;11399:3;11395:1;:7;11375:769;;;11484:22;;;11424:14;11536:16;;;:6;:16;;;;;;;11598:8;;11584:38;;;;;11447:1;;11492;11484:22;;;11536:16;;;;;11424:14;;11598:8;;11584:28;;:38;;11447:1;;11584:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11584:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11584:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11584:38:0;;;;;;;;;11567:55;-1:-1:-1;11641:18:0;;;11637:496;;11684:20;;;;11680:108;;11744:24;;;;11680:108;11637:496;;;11832:20;;;11828:290;;11895:27;;;;11828:290;;;11960:6;11952:14;;:4;:14;;;11948:170;;12006:24;;;;12071:27;;;;11948:170;-1:-1:-1;;11404:3:0;;;;;-1:-1:-1;11375:769:0;;-1:-1:-1;11375:769:0;;-1:-1:-1;12164:12:0;;-1:-1:-1;12178:15:0;-1:-1:-1;12195:14:0;-1:-1:-1;11017:1201:0;;;:::o;7644:19::-;;;;;;;;;:::o;16928:120::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;17027:13;17033:6;17027:5;:13::i;3887:109::-;2993:9;:7;:9::i;:::-;2985:54;;;;-1:-1:-1;;;2985:54:0;;;;;;;;;3960:28;3979:8;3960:18;:28::i;9496:110::-;9593:5;;9496:110;:::o;18679:151::-;18759:17;;;;;;;:9;:17;;;;;;;18779:1;18759:21;;;;18796:26;;;;;;18769:6;;18779:1;18796:26;;18838:152;18918:17;;;18938:1;18918:17;;;:9;:17;;;;;;:21;;;18955:27;;;;;18928:6;;18938:1;18955:27;;18032:461;18210:7;18242:243;18391:4;18397;18403:5;:3;:5::i;:::-;18374:35;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18374:35:0;;;18364:46;;;;;;18294:117;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18294:117:0;;;18266:160;;;;;;18441:1;18457;18473;18242:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18242:243:0;;;;;;;;18235:250;;18032:461;;;;;;;;:::o;18501:170::-;18659:3;18640:22;;;;18501:170::o;1514:98::-;1594:10;1514:98;:::o;4102:229::-;4176:22;;;4168:73;;;;-1:-1:-1;;;4168:73:0;;;;;;;;;4278:6;;;4257:38;;;;;;;4278:6;;;4257:38;;;4306:6;:17;;;;;;;;;;;;;;;4102:229::o;19392:108::-;19489:3;19392:108;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;142:134;220:13;;238:33;220:13;238:33;;301:352;;;431:3;424:4;416:6;412:17;408:27;398:2;;449:1;446;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;541:1;538;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;618:4;610:6;606:17;596:8;592:32;589:41;586:2;;;643:1;640;633:12;586:2;391:262;;;;;;1791:134;1869:13;;1887:33;1869:13;1887:33;;1932:126;1997:20;;2022:31;1997:20;2022:31;;2065:241;;2169:2;2157:9;2148:7;2144:23;2140:32;2137:2;;;2185:1;2182;2175:12;2137:2;2220:1;2237:53;2282:7;2262:9;2237:53;;;2227:63;2131:175;-1:-1;;;;2131:175;2313:263;;2428:2;2416:9;2407:7;2403:23;2399:32;2396:2;;;2444:1;2441;2434:12;2396:2;2479:1;2496:64;2552:7;2532:9;2496:64;;2583:397;;;2722:2;2710:9;2701:7;2697:23;2693:32;2690:2;;;2738:1;2735;2728:12;2690:2;2773:31;;2824:18;2813:30;;2810:2;;;2856:1;2853;2846:12;2810:2;2884:80;2956:7;2947:6;2936:9;2932:22;2884:80;;;2874:90;;;;2752:218;2684:296;;;;;;2987:1519;;;;;;;;;;;3332:3;3320:9;3311:7;3307:23;3303:33;3300:2;;;3349:1;3346;3339:12;3300:2;3384:31;;3435:18;3424:30;;3421:2;;;3467:1;3464;3457:12;3421:2;3495:80;3567:7;3558:6;3547:9;3543:22;3495:80;;;3485:90;;;;3363:218;3640:2;3629:9;3625:18;3612:32;3664:18;3656:6;3653:30;3650:2;;;3696:1;3693;3686:12;3650:2;3724:80;3796:7;3787:6;3776:9;3772:22;3724:80;;;3714:90;;;;3591:219;3869:2;3858:9;3854:18;3841:32;3893:18;3885:6;3882:30;3879:2;;;3925:1;3922;3915:12;3879:2;3953:78;4023:7;4014:6;4003:9;3999:22;3953:78;;;3943:88;;;;3820:217;4096:2;4085:9;4081:18;4068:32;4120:18;4112:6;4109:30;4106:2;;;4152:1;4149;4142:12;4106:2;4180:80;4252:7;4243:6;4232:9;4228:22;4180:80;;;4170:90;;;;4047:219;4325:3;4314:9;4310:19;4297:33;4350:18;4342:6;4339:30;4336:2;;;4382:1;4379;4372:12;4336:2;4410:80;4482:7;4473:6;4462:9;4458:22;4410:80;;;4400:90;;;;4276:220;3294:1212;;;;;;;;;;;;;;4513:263;;4628:2;4616:9;4607:7;4603:23;4599:32;4596:2;;;4644:1;4641;4634:12;4596:2;4679:1;4696:64;4752:7;4732:9;4696:64;;4783:237;;4885:2;4873:9;4864:7;4860:23;4856:32;4853:2;;;4901:1;4898;4891:12;4853:2;4936:1;4953:51;4996:7;4976:9;4953:51;;5027:113;5110:24;5128:5;5110:24;;;5105:3;5098:37;5092:48;;;5147:104;5224:21;5239:5;5224:21;;5258:113;5341:24;5359:5;5341:24;;5378:152;5479:45;5499:24;5517:5;5499:24;;;5479:45;;5538:378;;5698:67;5762:2;5757:3;5698:67;;;5798:34;5778:55;;5867:11;5862:2;5853:12;;5846:33;5907:2;5898:12;;5684:232;-1:-1;;5684:232;5925:383;;6085:67;6149:2;6144:3;6085:67;;;6185:34;6165:55;;6254:16;6249:2;6240:12;;6233:38;6299:2;6290:12;;6071:237;-1:-1;;6071:237;6317:371;;6477:67;6541:2;6536:3;6477:67;;;6577:34;6557:55;;6646:4;6641:2;6632:12;;6625:26;6679:2;6670:12;;6463:225;-1:-1;;6463:225;6697:400;;6875:85;6957:2;6952:3;6875:85;;;6993:66;6973:87;;7088:2;7079:12;;6861:236;-1:-1;;6861:236;7106:375;;7266:67;7330:2;7325:3;7266:67;;;7366:34;7346:55;;7435:8;7430:2;7421:12;;7414:30;7472:2;7463:12;;7252:229;-1:-1;;7252:229;7490:371;;7650:67;7714:2;7709:3;7650:67;;;7750:34;7730:55;;7819:4;7814:2;7805:12;;7798:26;7852:2;7843:12;;7636:225;-1:-1;;7636:225;7870:382;;8030:67;8094:2;8089:3;8030:67;;;8130:34;8110:55;;8199:15;8194:2;8185:12;;8178:37;8243:2;8234:12;;8016:236;-1:-1;;8016:236;8261:400;;8421:67;8485:2;8480:3;8421:67;;;8521:34;8501:55;;8590:33;8585:2;8576:12;;8569:55;8652:2;8643:12;;8407:254;-1:-1;;8407:254;8670:372;;8830:67;8894:2;8889:3;8830:67;;;8930:34;8910:55;;8999:5;8994:2;8985:12;;8978:27;9033:2;9024:12;;8816:226;-1:-1;;8816:226;9051:332;;9211:67;9275:2;9270:3;9211:67;;;9311:34;9291:55;;9374:2;9365:12;;9197:186;-1:-1;;9197:186;9392:390;;9552:67;9616:2;9611:3;9552:67;;;9652:34;9632:55;;9721:23;9716:2;9707:12;;9700:45;9773:2;9764:12;;9538:244;-1:-1;;9538:244;9791:399;;9951:67;10015:2;10010:3;9951:67;;;10051:34;10031:55;;10120:32;10115:2;10106:12;;10099:54;10181:2;10172:12;;9937:253;-1:-1;;9937:253;10199:374;;10359:67;10423:2;10418:3;10359:67;;;10459:34;10439:55;;10528:7;10523:2;10514:12;;10507:29;10564:2;10555:12;;10345:228;-1:-1;;10345:228;10582:392;;10742:67;10806:2;10801:3;10742:67;;;10842:34;10822:55;;10911:25;10906:2;10897:12;;10890:47;10965:2;10956:12;;10728:246;-1:-1;;10728:246;10983:392;;11143:67;11207:2;11202:3;11143:67;;;11243:34;11223:55;;11312:25;11307:2;11298:12;;11291:47;11366:2;11357:12;;11129:246;-1:-1;;11129:246;11383:126;11466:37;11497:5;11466:37;;11795:124;11877:36;11907:5;11877:36;;11926:110;12007:23;12024:5;12007:23;;12043:107;12122:22;12138:5;12122:22;;12157:511;;12384:148;12528:3;12384:148;;;12377:155;;12543:75;12614:3;12605:6;12543:75;;;-1:-1;12640:2;12631:12;;12365:303;-1:-1;12365:303;12675:522;;12850:75;12921:3;12912:6;12850:75;;;12947:2;12942:3;12938:12;12931:19;;12961:75;13032:3;13023:6;12961:75;;;13058:2;13053:3;13049:12;13042:19;;13072:75;13143:3;13134:6;13072:75;;;-1:-1;13169:2;13160:12;;12838:359;-1:-1;;;12838:359;13204:213;13322:2;13307:18;;13336:71;13311:9;13380:6;13336:71;;13424:312;13564:2;13549:18;;13578:71;13553:9;13622:6;13578:71;;;13660:66;13722:2;13711:9;13707:18;13698:6;13660:66;;;13535:201;;;;;;13743;13855:2;13840:18;;13869:65;13844:9;13907:6;13869:65;;13951:213;14069:2;14054:18;;14083:71;14058:9;14127:6;14083:71;;14171:312;14311:2;14296:18;;14325:71;14300:9;14369:6;14325:71;;14490:539;14688:3;14673:19;;14703:71;14677:9;14747:6;14703:71;;;14785:68;14849:2;14838:9;14834:18;14825:6;14785:68;;;14864:72;14932:2;14921:9;14917:18;14908:6;14864:72;;;14947;15015:2;15004:9;15000:18;14991:6;14947:72;;15036:407;15227:2;15241:47;;;15212:18;;15302:131;15212:18;15302:131;;15450:407;15641:2;15655:47;;;15626:18;;15716:131;15626:18;15716:131;;15864:407;16055:2;16069:47;;;16040:18;;16130:131;16040:18;16130:131;;16278:407;16469:2;16483:47;;;16454:18;;16544:131;16454:18;16544:131;;16692:407;16883:2;16897:47;;;16868:18;;16958:131;16868:18;16958:131;;17106:407;17297:2;17311:47;;;17282:18;;17372:131;17282:18;17372:131;;17520:407;17711:2;17725:47;;;17696:18;;17786:131;17696:18;17786:131;;17934:407;18125:2;18139:47;;;18110:18;;18200:131;18110:18;18200:131;;18348:407;18539:2;18553:47;;;18524:18;;18614:131;18524:18;18614:131;;18762:407;18953:2;18967:47;;;18938:18;;19028:131;18938:18;19028:131;;19176:407;19367:2;19381:47;;;19352:18;;19442:131;19352:18;19442:131;;19590:407;19781:2;19795:47;;;19766:18;;19856:131;19766:18;19856:131;;20004:407;20195:2;20209:47;;;20180:18;;20270:131;20180:18;20270:131;;20418:407;20609:2;20623:47;;;20594:18;;20684:131;20594:18;20684:131;;20832:322;20977:2;20962:18;;20991:71;20966:9;21035:6;20991:71;;;21073;21140:2;21129:9;21125:18;21116:6;21073:71;;21381:423;21549:2;21534:18;;21563:71;21538:9;21607:6;21563:71;;;21645:72;21713:2;21702:9;21698:18;21689:6;21645:72;;;21728:66;21790:2;21779:9;21775:18;21766:6;21728:66;;21811:209;21927:2;21912:18;;21941:69;21916:9;21983:6;21941:69;;22027:205;22141:2;22126:18;;22155:67;22130:9;22195:6;22155:67;;22240:163;22343:19;;;22392:4;22383:14;;22336:67;22412:145;22548:3;22526:31;-1:-1;22526:31;22565:91;;22627:24;22645:5;22627:24;;22663:85;22729:13;22722:21;;22705:43;22755:72;22817:5;22800:27;22834:113;22907:34;22896:46;;22879:68;22954:121;23027:42;23016:54;;22999:76;23161:88;23233:10;23222:22;;23205:44;23256:81;23327:4;23316:16;;23299:38;23344:108;;23423:24;23441:5;23423:24;;23459:106;;23537:23;23554:5;23537:23;;23734:117;23803:24;23821:5;23803:24;;;23796:5;23793:35;23783:2;;23842:1;23839;23832:12;23858:117;23927:24;23945:5;23927:24;;23982:113;24049:22;24065:5;24049:22;

Swarm Source

bzzr://ea1167571b150225ffe0a5be02e81bc89ab286a298f3139ca086a3a5684b5bcc

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.