Contract 0x7ec28b56b321717058cc2179f4b3393c92922628

Contract Overview

Balance:
0.004 MATIC
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xfb9969d8f438e9fe9fa2cbab31929f73286876a731364018c9e9ee068ae2ef9fExecute329782992023-03-11 11:16:2621 days 2 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000015
0x754a33f55510ebedf0901b8a529b472df6785f9955951c279215d92b0440aa90Execute329782922023-03-11 11:16:1221 days 2 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000015
0xe4c73fc8dc79d7361e433b46a02a13d8e34a412d68b9f34f9c56f6175ff0891dExecute271452622022-07-12 20:15:12262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0xc556631b86edd6c0e6e00341a8338cecc5fe0383ce59403fee0ace896ea0505cExecute271452612022-07-12 20:15:07262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0xd27c0711986240f46268498db061817188f12232c8df89a80639767b9d573697Execute271450912022-07-12 20:00:55262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0x9bb75757a994b94f65ea549739fc8911ed4bde29bf54af337cf3bbef16c42c18Execute271450892022-07-12 20:00:45262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0xe3fce04c7181bda1bab985087d45e37cccffb76608462d8a5eb4240dc85d525eExecute271449032022-07-12 19:45:12262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0xc07767c315e6ab10cc74d2d3e7af276bbf7abba3e7d030f127fdcf33c1528a09Execute271449022022-07-12 19:45:07262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0x8a4cc73ed06d032774eac150902194cf9c043305e128595f0006610a8f323b54Execute271447892022-07-12 19:30:20262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0x6a777821aa26fec1b07224b8f7326a4fb7fadeb553b871f10fffd7024a22e9f9Execute271447872022-07-12 19:30:10262 days 17 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0x9aa9eb5671a759325d39f6c057494b08a4a0e2712fa0e6e18ab7dcca773c7619Execute271446442022-07-12 19:18:13262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.00000001
0xf2ccfbc55759ed70ac516eba94ac2578b9fedca4bd54978ecbcd7cef0b0f8b8eExecute271446422022-07-12 19:18:03262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.00000001
0x437b2fc5e899276b3c98b3608a24029ae087ff87b0894de3ee2dd4a9dd1e94f0Execute271444322022-07-12 19:00:29262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0xbc642da9f9e932387f7105cc6a8ded711db0716eb0b60e43002efb2e9af9c35cExecute271444302022-07-12 19:00:19262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0xed7a9813a0f37c37e657666c42a3ab9f5c879c212b7f30c854f44e6ed0d0cfd8Execute271442512022-07-12 18:45:21262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0x65798ce456f6d504f308d3ae7e7a08662f60b10e6c6017d9cf35a96bae21dd75Execute271442492022-07-12 18:45:11262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0x4de2de2d55a33dccc1a86bf0cbb7da053d8088dd684cf772c45b6aaaef2b7538Execute271441972022-07-12 18:40:51262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000009
0x95aba872ce119311a8752ae39077afd845f50262a981704afe28af4683fedc94Execute271441952022-07-12 18:40:41262 days 18 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.00000001
0x4c8bceee98306516dcdabce9a05514793caeed2d854d8693cab3c096e10799c4Execute271439572022-07-12 18:15:27262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.00000001
0xf5209ba244430f1993ce31325b2ae2a5e21bc0c0ff28c2a8799a22a1eb9e1341Execute271439542022-07-12 18:15:12262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.00000001
0x849ab943a5c9300c587ea1d26ef22f7c972fce7b5ebcaadb4b3a4096960f3801Execute271437772022-07-12 18:00:24262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000009
0x24e65131a434408b468552e121d1353a4679db320d8f7f8815d9e1fcf962639bExecute271437752022-07-12 18:00:14262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000009
0xa9b1a9f9ac819e95eb51b7db13ba1ecbc57b41048f9183d802fdb053ccf5788aExecute271435972022-07-12 17:45:21262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.000000008
0x9b538ec84d2616dda3d83f88038d9ab80ecc2d5ca59d3bcf5c4d33b52cc18d42Execute271435952022-07-12 17:45:11262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035917 1.000000008
0x00824d288d7a5b47cc8f80ce06f3bc7d1670a44d84859359ffc20c3a72ae2bdeExecute271434932022-07-12 17:36:40262 days 19 hrs ago0x024d3242650d6c7b0ee6de408e33e803dbfb00ea IN  0x7ec28b56b321717058cc2179f4b3393c929226280 MATIC0.000035929 1.00000001
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0x8b7eef1a6fb17cb3782d8710207fbe593bcb67ac93b9655df6f3b395cf072cfe237829332022-01-11 16:57:16444 days 20 hrs ago 0x7ec28b56b321717058cc2179f4b3393c92922628  Contract Creation0 MATIC
0x8b7eef1a6fb17cb3782d8710207fbe593bcb67ac93b9655df6f3b395cf072cfe237829332022-01-11 16:57:16444 days 20 hrs ago 0x7ec28b56b321717058cc2179f4b3393c92922628  Contract Creation0 MATIC
0x6f7534df0d8ad29d6ad68120593cb342de77259abaa0e1af9d151c19b4101be7237829132022-01-11 16:56:36444 days 20 hrs ago 0x7ec28b56b321717058cc2179f4b3393c92922628  Contract Creation0 MATIC
0x6f7534df0d8ad29d6ad68120593cb342de77259abaa0e1af9d151c19b4101be7237829132022-01-11 16:56:36444 days 20 hrs ago 0x7ec28b56b321717058cc2179f4b3393c92922628  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PredictionMarketNoCommission

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-01-10
*/

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

/**
 * @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 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File @openzeppelin/contracts/access/[email protected]

/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * 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.
 */
abstract 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() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual onlyOwner {
        _setOwner(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 virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File @openzeppelin/contracts/token/ERC20/[email protected]

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File @openzeppelin/contracts/token/ERC20/[email protected]

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    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");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File contracts/BetToken.sol

/**
 * @title BetToken
 */
contract BetToken is ERC20 {
    uint256 public totalHolders;
    address public predictionMarket;

    event Mint(address indexed _to, uint256 _value);
    event Burn(address indexed _to, uint256 _value);

    /**
     * @dev The PositionToken constructor sets initial values.
     * @param _name string The name of the Position Token.
     * @param _symbol string The symbol of the Position Token.
     */
    constructor(string memory _name, string memory _symbol)
        ERC20(_name, _symbol)
    {
        predictionMarket = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than PredictionMarket.
     */
    modifier onlyPredictionMarket() {
        require(msg.sender == predictionMarket, "PREDICTION_MARKET_ONLY");
        _;
    }

    /**
     * @dev Mints position tokens for a user.
     * @param _to address The address of beneficiary.
     * @param _value uint256 The amount of tokens to be minted.
     */
    function mint(address _to, uint256 _value) public onlyPredictionMarket {
        _mint(_to, _value);
        if (balanceOf(_to) == _value) totalHolders++;
        emit Mint(_to, _value);
    }

    /**
     * @dev Burns position tokens of a user.
     * @param _from address The address of beneficent.
     * @param _value uint256 The amount of tokens to be burned.
     */
    function burn(address _from, uint256 _value) public onlyPredictionMarket {
        _burn(_from, _value);
        if (balanceOf(_from) == 0) totalHolders--;
        emit Burn(_from, _value);
    }

    function burnAll(address _from) public onlyPredictionMarket {
        uint256 _value = balanceOf(_from);
        if (_value == 0) return;
        totalHolders--;
        _burn(_from, _value);
        emit Burn(_from, _value);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool success)
    {
        if (balanceOf(recipient) == 0) totalHolders++;
        if (balanceOf(msg.sender) == amount) totalHolders--;
        success = super.transfer(recipient, amount);
        require(success, "ERR_TRANSFER_FAILED");
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool success) {
        if (balanceOf(recipient) == 0) totalHolders++;
        if (balanceOf(sender) == amount) totalHolders--;

        success = super.transferFrom(sender, recipient, amount);
        require(success, "ERR_TRANSFER_FROM_FAILED");
    }
}

// File contracts/AggregatorV3Interface.sol

interface IAggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    // getRoundData and latestRoundData should both raise "No data present"
    // if they do not have data to report, instead of returning unset values
    // which could be misinterpreted as actual reported values.
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

// File contracts/PredictionMarketNoCommission.sol

contract PredictionMarketNoCommission is Ownable {
    uint256 public latestConditionIndex;

    address public operatorAddress;
    uint256 private _status;

    mapping(uint256 => ConditionInfo) public conditions;

    //oracle address -> interval -> index
    mapping(address => mapping(uint256 => uint256)) public autoGeneratedMarkets;
    bool private _paused;

    struct ConditionInfo {
        string market;
        address oracle;
        int256 triggerPrice;
        uint256 settlementTime;
        bool isSettled;
        int256 settledPrice;
        address lowBetToken;
        address highBetToken;
        uint256 totalStakedAbove;
        uint256 totalStakedBelow;
        uint256 totalEthClaimable;
        address conditionOwner;
    }

    //conditionIndex
    mapping(uint256 => uint256) public betEndTime;

    event ConditionPrepared(
        address conditionOwner,
        uint256 indexed conditionIndex,
        address indexed oracle,
        uint256 indexed settlementTime,
        int256 triggerPrice,
        address lowBetTokenAddress,
        address highBetTokenAddress
    );
    event UserPrediction(
        uint256 indexed conditionIndex,
        address indexed userAddress,
        uint256 indexed etHStaked,
        uint8 prediction,
        uint256 timestamp
    );
    event UserClaimed(
        uint256 indexed conditionIndex,
        address indexed userAddress,
        uint256 indexed winningAmount
    );
    event ConditionSettled(
        uint256 indexed conditionIndex,
        int256 indexed settledPrice,
        uint256 timestamp
    );
    event NewMarketGenerated(
        uint256 indexed conditionIndex,
        address indexed oracle
    );
    event SetOperator(address operatorAddress);
    event Paused(address account);
    event Unpaused(address account);

    modifier onlyOperator() {
        require(msg.sender == operatorAddress, "ERR_INVALID_OPERATOR");
        _;
    }

    modifier whenNotPaused() {
        require(!paused(), "PAUSED");
        _;
    }

    modifier whenPaused() {
        require(paused(), "NOT_PAUSED");
        _;
    }

    modifier whenMarketActive(uint256 _conditionIndex) {
        require(
            block.timestamp <= betEndTime[_conditionIndex],
            "ERR_INVALID_SETTLEMENT_TIME"
        );

        _;
    }

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != 2, "REENTRANT_CALL");
        _status = 2;
        _;
        _status = 1;
    }

    /**
     * @notice Construct a new Prediction Market contract
     */
    // solhint-disable-next-line
    constructor(address _operator) {
        require(_operator != address(0), "ERR_ZERO_ADDRESS_FOR_OPERATOR");

        operatorAddress = _operator;
        _paused = false;
        _status = 1;
    }

    function setOperator(address _operatorAddress) external onlyOwner {
        require(_operatorAddress != address(0), "ERR_INVALID_OPERATOR_ADDRESS");
        operatorAddress = _operatorAddress;
        emit SetOperator(operatorAddress);
    }

    function execute(address oracle, uint256 interval) external onlyOperator {
        require(oracle != address(0), "ERR_INVALID_CONDITION_INDEX");

        uint256 index = autoGeneratedMarkets[oracle][interval];

        //settle and claim for previous index
        claimFor(payable(msg.sender), index);

        //prepare new condition
        int256 triggerPrice = getPrice(oracle);
        uint256 newIndex = _prepareCondition(
            oracle,
            interval,
            triggerPrice,
            false
        );

        autoGeneratedMarkets[oracle][interval] = newIndex;
        emit NewMarketGenerated(newIndex, oracle);
    }

    function paused() public view returns (bool) {
        return _paused;
    }

    function _pause() internal whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }

    function togglePause(bool pause) external {
        require(
            msg.sender == operatorAddress || msg.sender == owner(),
            "ERR_INVALID_ADDRESS_ACCESS"
        );
        if (pause) _pause();
        else _unpause();
    }

    function safeTransferETH(address to, uint256 value) internal {
        // solhint-disable-next-line
        (bool success, ) = payable(to).call{value: value}(new bytes(0));

        // solhint-disable-next-line
        require(success, "ETH_TRANSFER_FAILED");
    }

    function prepareCondition(
        address _oracle,
        uint256 _settlementTimePeriod,
        int256 _triggerPrice,
        bool _initialize
    ) public payable whenNotPaused returns (uint256) {
        return
            _prepareCondition(
                _oracle,
                _settlementTimePeriod,
                _triggerPrice,
                _initialize
            );
    }

    function _prepareCondition(
        address _oracle,
        uint256 _settlementTimePeriod,
        int256 _triggerPrice,
        bool _initialize
    ) internal nonReentrant returns (uint256) {
        require(_oracle != address(0), "ERR_INVALID_ORACLE_ADDRESS");
        require(_settlementTimePeriod >= 300, "ERR_INVALID_SETTLEMENT_TIME");

        latestConditionIndex = latestConditionIndex + 1;
        ConditionInfo storage conditionInfo = conditions[latestConditionIndex];

        conditionInfo.market = IAggregatorV3Interface(_oracle).description();
        conditionInfo.oracle = _oracle;
        conditionInfo.settlementTime = _settlementTimePeriod + block.timestamp;
        conditionInfo.triggerPrice = _triggerPrice;
        conditionInfo.isSettled = false;
        conditionInfo.lowBetToken = address(
            new BetToken(
                "Low Bet Token",
                string(abi.encodePacked("LBT-", conditionInfo.market))
            )
        );
        conditionInfo.highBetToken = address(
            new BetToken(
                "High Bet Token",
                string(abi.encodePacked("HBT-", conditionInfo.market))
            )
        );
        conditionInfo.conditionOwner = msg.sender;

        //to prevent double initialisation of auto generated markets
        if (
            _initialize &&
            autoGeneratedMarkets[_oracle][_settlementTimePeriod] == 0
        ) {
            autoGeneratedMarkets[_oracle][
                _settlementTimePeriod
            ] = latestConditionIndex;
        }

        betEndTime[latestConditionIndex] =
            ((_settlementTimePeriod * 90) / 100) +
            block.timestamp;

        emit ConditionPrepared(
            msg.sender,
            latestConditionIndex,
            _oracle,
            conditionInfo.settlementTime,
            _triggerPrice,
            conditionInfo.lowBetToken,
            conditionInfo.highBetToken
        );

        return latestConditionIndex;
    }

    function probabilityRatio(uint256 _conditionIndex)
        external
        view
        returns (uint256 aboveProbabilityRatio, uint256 belowProbabilityRatio)
    {
        ConditionInfo storage conditionInfo = conditions[_conditionIndex];
        if (conditionInfo.isSettled) {
            return (0, 0);
        }
        uint256 ethStakedForAbove = BetToken(conditionInfo.highBetToken)
            .totalSupply();
        uint256 ethStakedForBelow = BetToken(conditionInfo.lowBetToken)
            .totalSupply();

        uint256 totalEthStaked = ethStakedForAbove + ethStakedForBelow;

        aboveProbabilityRatio = totalEthStaked > 0
            ? (ethStakedForAbove * (1e18)) / (totalEthStaked)
            : 0;
        belowProbabilityRatio = totalEthStaked > 0
            ? (ethStakedForBelow * (1e18)) / (totalEthStaked)
            : 0;
    }

    function userTotalETHStaked(uint256 _conditionIndex, address userAddress)
        external
        view
        returns (uint256 totalEthStaked)
    {
        ConditionInfo storage conditionInfo = conditions[_conditionIndex];
        uint256 ethStakedForAbove = BetToken(conditionInfo.highBetToken)
            .balanceOf(userAddress);
        uint256 ethStakedForBelow = BetToken(conditionInfo.lowBetToken)
            .balanceOf(userAddress);

        totalEthStaked = ethStakedForAbove + ethStakedForBelow;
    }

    function betOnCondition(uint256 _conditionIndex, uint8 _prediction)
        external
        payable
    {
        //call betOncondition
        betOnConditionFor(msg.sender, _conditionIndex, _prediction, msg.value);
    }

    function betOnConditionFor(
        address _user,
        uint256 _conditionIndex,
        uint8 _prediction,
        uint256 _amount
    )
        public
        payable
        whenNotPaused
        nonReentrant
        whenMarketActive(_conditionIndex)
    {
        ConditionInfo storage conditionInfo = conditions[_conditionIndex];

        require(_user != address(0), "ERR_INVALID_ADDRESS");

        require(
            conditionInfo.oracle != address(0),
            "ERR_INVALID_ORACLE_ADDRESS"
        );

        require(msg.value >= _amount && _amount != 0, "ERR_INVALID_AMOUNT");
        require(
            (_prediction == 0) || (_prediction == 1),
            "ERR_INVALID_PREDICTION"
        ); //prediction = 0 (price will be below), if 1 (price will be above)

        uint256 userETHStaked = _amount;
        if (_prediction == 0) {
            BetToken(conditionInfo.lowBetToken).mint(_user, userETHStaked);
        } else {
            BetToken(conditionInfo.highBetToken).mint(_user, userETHStaked);
        }
        emit UserPrediction(
            _conditionIndex,
            _user,
            userETHStaked,
            _prediction,
            block.timestamp
        );
    }

    function getPrice(address oracle)
        internal
        view
        returns (int256 latestPrice)
    {
        (, latestPrice, , , ) = IAggregatorV3Interface(oracle)
            .latestRoundData();
    }

    function settleCondition(uint256 _conditionIndex) public whenNotPaused {
        ConditionInfo storage conditionInfo = conditions[_conditionIndex];
        require(
            conditionInfo.oracle != address(0),
            "ERR_INVALID_ORACLE_ADDRESS"
        );
        require(
            block.timestamp >= conditionInfo.settlementTime,
            "ERR_INVALID_SETTLEMENT_TIME"
        );
        require(!conditionInfo.isSettled, "ERR_CONDITION_ALREADY_SETTLED");

        conditionInfo.isSettled = true;
        conditionInfo.totalStakedAbove = BetToken(conditionInfo.highBetToken)
            .totalSupply();
        conditionInfo.totalStakedBelow = BetToken(conditionInfo.lowBetToken)
            .totalSupply();

        conditionInfo.totalEthClaimable =
            conditionInfo.totalStakedAbove +
            conditionInfo.totalStakedBelow;

        conditionInfo.settledPrice = getPrice(conditionInfo.oracle);

        emit ConditionSettled(
            _conditionIndex,
            conditionInfo.settledPrice,
            block.timestamp
        );
    }

    function claim(uint256 _conditionIndex) public {
        //call claim with msg.sender as _for
        claimFor(payable(msg.sender), _conditionIndex);
    }

    function claimFor(address payable _userAddress, uint256 _conditionIndex)
        public
        whenNotPaused
        nonReentrant
    {
        require(_userAddress != address(0), "ERR_INVALID_USER_ADDRESS");
        ConditionInfo storage conditionInfo = conditions[_conditionIndex];

        require(
            conditionInfo.totalEthClaimable != 0,
            "ERR_ALL_AMOUNT_ALREADY_CLAIMED"
        );

        BetToken lowBetToken = BetToken(conditionInfo.lowBetToken);
        BetToken highBetToken = BetToken(conditionInfo.highBetToken);
        if (!conditionInfo.isSettled) {
            settleCondition(_conditionIndex);
        }

        uint256 totalWinnerRedeemable;

        if (conditionInfo.totalStakedAbove == 0) {
            totalWinnerRedeemable = lowBetToken.balanceOf(_userAddress);
        } else if (conditionInfo.totalStakedBelow == 0) {
            totalWinnerRedeemable = highBetToken.balanceOf(_userAddress);
        } else if (conditionInfo.settledPrice > conditionInfo.triggerPrice) {
            //Users who predicted above price wins
            uint256 userStake = highBetToken.balanceOf(_userAddress);

            if (userStake == 0) {
                return;
            }
            totalWinnerRedeemable = getClaimAmount(
                conditionInfo.totalEthClaimable,
                conditionInfo.totalStakedAbove,
                userStake
            );
        } else if (conditionInfo.settledPrice < conditionInfo.triggerPrice) {
            //Users who predicted below price wins
            uint256 userStake = lowBetToken.balanceOf(_userAddress);

            if (userStake == 0) {
                return;
            }
            totalWinnerRedeemable = getClaimAmount(
                conditionInfo.totalEthClaimable,
                conditionInfo.totalStakedBelow,
                userStake
            );
        } else {
            safeTransferETH(owner(), conditionInfo.totalEthClaimable);
            totalWinnerRedeemable = 0;
            conditionInfo.totalEthClaimable = 0;
        }

        highBetToken.burnAll(_userAddress);
        lowBetToken.burnAll(_userAddress);

        if (totalWinnerRedeemable > 0) {
            _userAddress.transfer(totalWinnerRedeemable);
            conditionInfo.totalEthClaimable =
                conditionInfo.totalEthClaimable -
                (totalWinnerRedeemable);
        }

        emit UserClaimed(_conditionIndex, _userAddress, totalWinnerRedeemable);
    }

    function getClaimAmount(
        uint256 totalPayout,
        uint256 winnersTotalETHStaked,
        uint256 userStake
    ) internal pure returns (uint256 totalWinnerRedeemable) {
        totalWinnerRedeemable =
            (totalPayout * userStake) /
            winnersTotalETHStaked;
    }

    function getBalance(uint256 _conditionIndex, address _user)
        external
        view
        returns (uint256 lbtBalance, uint256 hbtBalance)
    {
        ConditionInfo storage condition = conditions[_conditionIndex];
        lbtBalance = BetToken(condition.lowBetToken).balanceOf(_user);
        hbtBalance = BetToken(condition.highBetToken).balanceOf(_user);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"conditionOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"conditionIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"},{"indexed":true,"internalType":"uint256","name":"settlementTime","type":"uint256"},{"indexed":false,"internalType":"int256","name":"triggerPrice","type":"int256"},{"indexed":false,"internalType":"address","name":"lowBetTokenAddress","type":"address"},{"indexed":false,"internalType":"address","name":"highBetTokenAddress","type":"address"}],"name":"ConditionPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"conditionIndex","type":"uint256"},{"indexed":true,"internalType":"int256","name":"settledPrice","type":"int256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ConditionSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"conditionIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"NewMarketGenerated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"operatorAddress","type":"address"}],"name":"SetOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"conditionIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"winningAmount","type":"uint256"}],"name":"UserClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"conditionIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"etHStaked","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"prediction","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UserPrediction","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"autoGeneratedMarkets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"betEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"},{"internalType":"uint8","name":"_prediction","type":"uint8"}],"name":"betOnCondition","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_conditionIndex","type":"uint256"},{"internalType":"uint8","name":"_prediction","type":"uint8"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"betOnConditionFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_conditionIndex","type":"uint256"}],"name":"claimFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"conditions","outputs":[{"internalType":"string","name":"market","type":"string"},{"internalType":"address","name":"oracle","type":"address"},{"internalType":"int256","name":"triggerPrice","type":"int256"},{"internalType":"uint256","name":"settlementTime","type":"uint256"},{"internalType":"bool","name":"isSettled","type":"bool"},{"internalType":"int256","name":"settledPrice","type":"int256"},{"internalType":"address","name":"lowBetToken","type":"address"},{"internalType":"address","name":"highBetToken","type":"address"},{"internalType":"uint256","name":"totalStakedAbove","type":"uint256"},{"internalType":"uint256","name":"totalStakedBelow","type":"uint256"},{"internalType":"uint256","name":"totalEthClaimable","type":"uint256"},{"internalType":"address","name":"conditionOwner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"lbtBalance","type":"uint256"},{"internalType":"uint256","name":"hbtBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestConditionIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"uint256","name":"_settlementTimePeriod","type":"uint256"},{"internalType":"int256","name":"_triggerPrice","type":"int256"},{"internalType":"bool","name":"_initialize","type":"bool"}],"name":"prepareCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"}],"name":"probabilityRatio","outputs":[{"internalType":"uint256","name":"aboveProbabilityRatio","type":"uint256"},{"internalType":"uint256","name":"belowProbabilityRatio","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operatorAddress","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"}],"name":"settleCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"pause","type":"bool"}],"name":"togglePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionIndex","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"userTotalETHStaked","outputs":[{"internalType":"uint256","name":"totalEthStaked","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620039a9380380620039a983398101604081905262000034916200011f565b6200003f33620000cf565b6001600160a01b0381166200009a5760405162461bcd60e51b815260206004820152601d60248201527f4552525f5a45524f5f414444524553535f464f525f4f50455241544f52000000604482015260640160405180910390fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556006805460ff19169055600160035562000151565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200013257600080fd5b81516001600160a01b03811681146200014a57600080fd5b9392505050565b61384880620001616000396000f3fe608060405260043610620001435760003560e01c80635c975abb11620000b95780638a7a90b611620000785780638a7a90b614620003a15780638da5cb5b14620003c6578063b0a7945914620003e6578063b3ab15fb146200040b578063e9275c5e1462000430578063f2fde38b146200046157600080fd5b80635c975abb14620002ec57806364a36b381462000311578063715018a6146200033657806377a7d257146200034e5780638020ae51146200038a57600080fd5b80632951659a11620001065780632951659a146200022a578063379607f514620002655780633b89bb86146200028a5780634bb09cb314620002af57806357d159c614620002c757600080fd5b80630de0565914620001485780630eb19ccd146200016f578063127effb21462000186578063176eb80114620001c557806326c5000714620001eb575b600080fd5b3480156200015557600080fd5b506200016d6200016736600462001f22565b62000486565b005b6200016d6200018036600462001f68565b6200099e565b3480156200019357600080fd5b50600254620001a8906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b620001dc620001d636600462001fa8565b620009b0565b604051908152602001620001bc565b348015620001f857600080fd5b50620002106200020a36600462001ff5565b620009f6565b604051620001bc9c9b9a9998979695949392919062002070565b3480156200023757600080fd5b506200024f6200024936600462001ff5565b62000af9565b60408051928352602083019190915201620001bc565b3480156200027257600080fd5b506200016d6200028436600462001ff5565b62000cbb565b3480156200029757600080fd5b506200016d620002a936600462001f22565b62000cca565b348015620002bc57600080fd5b50620001dc60015481565b348015620002d457600080fd5b506200016d620002e6366004620020ec565b62000e1e565b348015620002f957600080fd5b5060065460ff166040519015158152602001620001bc565b3480156200031e57600080fd5b506200016d6200033036600462001ff5565b62000eab565b3480156200034357600080fd5b506200016d62001117565b3480156200035b57600080fd5b50620001dc6200036d36600462001f22565b600560209081526000928352604080842090915290825290205481565b6200016d6200039b36600462002111565b62001152565b348015620003ae57600080fd5b50620001dc620003c03660046200215c565b6200144a565b348015620003d357600080fd5b506000546001600160a01b0316620001a8565b348015620003f357600080fd5b506200024f620004053660046200215c565b62001582565b3480156200041857600080fd5b506200016d6200042a3660046200218f565b620016b7565b3480156200043d57600080fd5b50620001dc6200044f36600462001ff5565b60076020526000908152604090205481565b3480156200046e57600080fd5b506200016d620004803660046200218f565b62001790565b60065460ff1615620004b55760405162461bcd60e51b8152600401620004ac90620021af565b60405180910390fd5b60035460021415620004db5760405162461bcd60e51b8152600401620004ac90620021cf565b60026003556001600160a01b038216620005385760405162461bcd60e51b815260206004820152601860248201527f4552525f494e56414c49445f555345525f4144445245535300000000000000006044820152606401620004ac565b6000818152600460205260409020600a810154620005995760405162461bcd60e51b815260206004820152601e60248201527f4552525f414c4c5f414d4f554e545f414c52454144595f434c41494d454400006044820152606401620004ac565b6006810154600782015460048301546001600160a01b03928316929091169060ff16620005cb57620005cb8462000eab565b600083600801546000141562000661576040516370a0823160e01b81526001600160a01b0387811660048301528416906370a08231906024015b60206040518083038186803b1580156200061e57600080fd5b505afa15801562000633573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006599190620021f7565b905062000844565b60098401546200069a576040516370a0823160e01b81526001600160a01b0387811660048301528316906370a082319060240162000605565b8360020154846005015413156200075d576040516370a0823160e01b81526001600160a01b038781166004830152600091908416906370a082319060240160206040518083038186803b158015620006f157600080fd5b505afa15801562000706573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072c9190620021f7565b9050806200073f57505050505062000995565b6200075485600a01548660080154836200182f565b91505062000844565b83600201548460050154121562000817576040516370a0823160e01b81526001600160a01b038781166004830152600091908516906370a082319060240160206040518083038186803b158015620007b457600080fd5b505afa158015620007c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ef9190620021f7565b9050806200080257505050505062000995565b6200075485600a01548660090154836200182f565b620008396200082e6000546001600160a01b031690565b85600a015462001852565b506000600a84018190555b604051637e9d2ac160e01b81526001600160a01b038781166004830152831690637e9d2ac190602401600060405180830381600087803b1580156200088857600080fd5b505af11580156200089d573d6000803e3d6000fd5b5050604051637e9d2ac160e01b81526001600160a01b03898116600483015286169250637e9d2ac19150602401600060405180830381600087803b158015620008e557600080fd5b505af1158015620008fa573d6000803e3d6000fd5b50505050600081111562000958576040516001600160a01b0387169082156108fc029083906000818181858888f193505050501580156200093f573d6000803e3d6000fd5b508084600a015462000952919062002227565b600a8501555b80866001600160a01b0316867fff29b281372993483c1ce6b621ae07832d519c2294e43340f051312701ad132a60405160405180910390a4505050505b50506001600355565b620009ac3383833462001152565b5050565b6000620009bf60065460ff1690565b15620009df5760405162461bcd60e51b8152600401620004ac90620021af565b620009ed8585858562001910565b95945050505050565b60046020526000908152604090208054819062000a139062002241565b80601f016020809104026020016040519081016040528092919081815260200182805462000a419062002241565b801562000a925780601f1062000a665761010080835404028352916020019162000a92565b820191906000526020600020905b81548152906001019060200180831162000a7457829003601f168201915b50505060018401546002850154600386015460048701546005880154600689015460078a015460088b015460098c0154600a8d0154600b909d01549b9c6001600160a01b03998a169c989b5096995060ff909516979396928416959184169490939092168c565b600081815260046020819052604082209081015482919060ff161562000b255750600093849350915050565b6007810154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801562000b6d57600080fd5b505afa15801562000b82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ba89190620021f7565b905060008260060160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000bfd57600080fd5b505afa15801562000c12573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c389190620021f7565b9050600062000c4882846200227e565b90506000811162000c5b57600062000c7c565b8062000c7084670de0b6b3a764000062002299565b62000c7c9190620022bb565b95506000811162000c8f57600062000cb0565b8062000ca483670de0b6b3a764000062002299565b62000cb09190620022bb565b945050505050915091565b62000cc7338262000486565b50565b6002546001600160a01b0316331462000d1d5760405162461bcd60e51b815260206004820152601460248201527322a9292fa4a72b20a624a22fa7a822a920aa27a960611b6044820152606401620004ac565b6001600160a01b03821662000d755760405162461bcd60e51b815260206004820152601b60248201527f4552525f494e56414c49445f434f4e444954494f4e5f494e44455800000000006044820152606401620004ac565b6001600160a01b038216600090815260056020908152604080832084845290915290205462000da5338262000486565b600062000db28462001c9a565b9050600062000dc5858584600062001910565b6001600160a01b038616600081815260056020908152604080832089845290915280822084905551929350909183917fefa444dfbf53d7bfc7930472fae8061dce810586be1a74ddca0075088069018f91a35050505050565b6002546001600160a01b031633148062000e4257506000546001600160a01b031633145b62000e905760405162461bcd60e51b815260206004820152601a60248201527f4552525f494e56414c49445f414444524553535f4143434553530000000000006044820152606401620004ac565b801562000ea15762000cc762001d1c565b62000cc762001d95565b60065460ff161562000ed15760405162461bcd60e51b8152600401620004ac90620021af565b600081815260046020526040902060018101546001600160a01b031662000f0c5760405162461bcd60e51b8152600401620004ac90620022de565b806003015442101562000f335760405162461bcd60e51b8152600401620004ac9062002315565b600481015460ff161562000f8a5760405162461bcd60e51b815260206004820152601d60248201527f4552525f434f4e444954494f4e5f414c52454144595f534554544c45440000006044820152606401620004ac565b6004808201805460ff191660011790556007820154604080516318160ddd60e01b815290516001600160a01b03909216926318160ddd928282019260209290829003018186803b15801562000fde57600080fd5b505afa15801562000ff3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010199190620021f7565b60088201556006810154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156200106657600080fd5b505afa1580156200107b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010a19190620021f7565b600982018190556008820154620010b991906200227e565b600a8201556001810154620010d7906001600160a01b031662001c9a565b6005820181905560405142815283907fabb10a4439f6479f93d699ea3016d843a2858e7e18a37e36aab806d711e361149060200160405180910390a35050565b6000546001600160a01b03163314620011445760405162461bcd60e51b8152600401620004ac906200234c565b62001150600062001e08565b565b60065460ff1615620011785760405162461bcd60e51b8152600401620004ac90620021af565b600354600214156200119e5760405162461bcd60e51b8152600401620004ac90620021cf565b60026003556000838152600760205260409020548390421115620011d65760405162461bcd60e51b8152600401620004ac9062002315565b60008481526004602052604090206001600160a01b038616620012325760405162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b6044820152606401620004ac565b60018101546001600160a01b03166200125f5760405162461bcd60e51b8152600401620004ac90620022de565b8234101580156200126f57508215155b620012b25760405162461bcd60e51b815260206004820152601260248201527111549497d253959053125117d05353d5539560721b6044820152606401620004ac565b60ff84161580620012c657508360ff166001145b6200130d5760405162461bcd60e51b815260206004820152601660248201527522a9292fa4a72b20a624a22fa82922a224a1aa24a7a760511b6044820152606401620004ac565b8260ff8516620013875760068201546040516340c10f1960e01b81526001600160a01b03898116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b1580156200136857600080fd5b505af11580156200137d573d6000803e3d6000fd5b50505050620013f2565b60078201546040516340c10f1960e01b81526001600160a01b03898116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b158015620013d857600080fd5b505af1158015620013ed573d6000803e3d6000fd5b505050505b6040805160ff8716815242602082015282916001600160a01b038a169189917fc3211542595466414b95eb161013f4239525373986e2e6037c6eb8404364ead9910160405180910390a4505060016003555050505050565b6000828152600460208190526040808320600781015491516370a0823160e01b81526001600160a01b03868116948201949094529092849216906370a082319060240160206040518083038186803b158015620014a657600080fd5b505afa158015620014bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014e19190620021f7565b60068301546040516370a0823160e01b81526001600160a01b038781166004830152929350600092909116906370a082319060240160206040518083038186803b1580156200152f57600080fd5b505afa15801562001544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156a9190620021f7565b90506200157881836200227e565b9695505050505050565b6000828152600460208190526040808320600681015491516370a0823160e01b8152849391926001600160a01b0316916370a0823191620015d4918891016001600160a01b0391909116815260200190565b60206040518083038186803b158015620015ed57600080fd5b505afa15801562001602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016289190620021f7565b60078201546040516370a0823160e01b81526001600160a01b0387811660048301529295509116906370a082319060240160206040518083038186803b1580156200167257600080fd5b505afa15801562001687573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620016ad9190620021f7565b9150509250929050565b6000546001600160a01b03163314620016e45760405162461bcd60e51b8152600401620004ac906200234c565b6001600160a01b0381166200173c5760405162461bcd60e51b815260206004820152601c60248201527f4552525f494e56414c49445f4f50455241544f525f41444452455353000000006044820152606401620004ac565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fdbebfba65bd6398fb722063efc10c99f624f9cd8ba657201056af918a676d5ee9060200160405180910390a150565b6000546001600160a01b03163314620017bd5760405162461bcd60e51b8152600401620004ac906200234c565b6001600160a01b038116620018245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004ac565b62000cc78162001e08565b6000826200183e838662002299565b6200184a9190620022bb565b949350505050565b604080516000808252602082019092526001600160a01b0384169083906040516200187e919062002397565b60006040518083038185875af1925050503d8060008114620018bd576040519150601f19603f3d011682016040523d82523d6000602084013e620018c2565b606091505b50509050806200190b5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401620004ac565b505050565b600060035460021415620019385760405162461bcd60e51b8152600401620004ac90620021cf565b60026003556001600160a01b038516620019665760405162461bcd60e51b8152600401620004ac90620022de565b61012c8410156200198b5760405162461bcd60e51b8152600401620004ac9062002315565b600180546200199a916200227e565b600181905560009081526004602081905260408083208151633942720b60e11b8152915190936001600160a01b038a1693637284e41693808201939190829003018186803b158015620019ec57600080fd5b505afa15801562001a01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a2b9190810190620023b5565b805162001a4091839160209091019062001e58565b506001810180546001600160a01b0319166001600160a01b03881617905562001a6a42866200227e565b60038201556002810184905560048101805460ff1916905560405162001a9590829060200162002510565b60405160208183030381529060405260405162001ab29062001ee7565b62001abe91906200252b565b604051809103906000f08015801562001adb573d6000803e3d6000fd5b506006820180546001600160a01b0319166001600160a01b039290921691909117905560405162001b1190829060200162002564565b60405160208183030381529060405260405162001b2e9062001ee7565b62001b3a91906200257f565b604051809103906000f08015801562001b57573d6000803e3d6000fd5b506007820180546001600160a01b03929092166001600160a01b0319928316179055600b820180549091163317905582801562001bb557506001600160a01b0386166000908152600560209081526040808320888452909152902054155b1562001be3576001546001600160a01b03871660009081526005602090815260408083208984529091529020555b42606462001bf387605a62002299565b62001bff9190620022bb565b62001c0b91906200227e565b60018054600090815260076020818152604092839020949094556003850154925460068601549186015483513381529586018a90526001600160a01b03928316868501528216606086015291519293908a16927feda3efc571f70f02d27b3b13fa91dfdd60d7c67d858dac5eef1be9985b1a00ad9181900360800190a450506001546001600355949350505050565b6000816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801562001cd657600080fd5b505afa15801562001ceb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d119190620025d4565b509195945050505050565b60065460ff161562001d425760405162461bcd60e51b8152600401620004ac90620021af565b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25862001d783390565b6040516001600160a01b03909116815260200160405180910390a1565b60065460ff1662001dd65760405162461bcd60e51b815260206004820152600a6024820152691393d517d4105554d15160b21b6044820152606401620004ac565b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3362001d78565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805462001e669062002241565b90600052602060002090601f01602090048101928262001e8a576000855562001ed5565b82601f1062001ea557805160ff191683800117855562001ed5565b8280016001018555821562001ed5579182015b8281111562001ed557825182559160200191906001019062001eb8565b5062001ee392915062001ef5565b5090565b6111e9806200262a83390190565b5b8082111562001ee3576000815560010162001ef6565b6001600160a01b038116811462000cc757600080fd5b6000806040838503121562001f3657600080fd5b823562001f438162001f0c565b946020939093013593505050565b803560ff8116811462001f6357600080fd5b919050565b6000806040838503121562001f7c57600080fd5b8235915062001f8e6020840162001f51565b90509250929050565b8035801515811462001f6357600080fd5b6000806000806080858703121562001fbf57600080fd5b843562001fcc8162001f0c565b9350602085013592506040850135915062001fea6060860162001f97565b905092959194509250565b6000602082840312156200200857600080fd5b5035919050565b60005b838110156200202c57818101518382015260200162002012565b838111156200203c576000848401525b50505050565b600081518084526200205c8160208601602086016200200f565b601f01601f19169290920160200192915050565b610180815260006200208761018083018f62002042565b6001600160a01b039d8e166020840152604083019c909c52506060810199909952961515608089015260a088019590955292881660c087015290871660e086015261010085015261012084015261014083015290921661016090920191909152919050565b600060208284031215620020ff57600080fd5b6200210a8262001f97565b9392505050565b600080600080608085870312156200212857600080fd5b8435620021358162001f0c565b9350602085013592506200214c6040860162001f51565b9396929550929360600135925050565b600080604083850312156200217057600080fd5b823591506020830135620021848162001f0c565b809150509250929050565b600060208284031215620021a257600080fd5b81356200210a8162001f0c565b60208082526006908201526514105554d15160d21b604082015260600190565b6020808252600e908201526d14915153951490539517d0d0531360921b604082015260600190565b6000602082840312156200220a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156200223c576200223c62002211565b500390565b600181811c908216806200225657607f821691505b602082108114156200227857634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111562002294576200229462002211565b500190565b6000816000190483118215151615620022b657620022b662002211565b500290565b600082620022d957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252601a908201527f4552525f494e56414c49445f4f5241434c455f41444452455353000000000000604082015260600190565b6020808252601b908201527f4552525f494e56414c49445f534554544c454d454e545f54494d450000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b60008251620023ab8184602087016200200f565b9190910192915050565b600060208284031215620023c857600080fd5b815167ffffffffffffffff80821115620023e157600080fd5b818401915084601f830112620023f657600080fd5b8151818111156200240b576200240b62002381565b604051601f8201601f19908116603f0116810190838211818310171562002436576200243662002381565b816040528281528760208487010111156200245057600080fd5b620024638360208301602088016200200f565b979650505050505050565b8054600090600181811c90808316806200248957607f831692505b6020808410821415620024ac57634e487b7160e01b600052602260045260246000fd5b818015620024c35760018114620024d55762002504565b60ff1986168952848901965062002504565b60008881526020902060005b86811015620024fc5781548b820152908501908301620024e1565b505084890196505b50505050505092915050565b634c42542d60e01b815260006200210a60048301846200246e565b60408152600d60408201526c2637bb902132ba102a37b5b2b760991b60608201526080602082015260006200210a608083018462002042565b634842542d60e01b815260006200210a60048301846200246e565b60408152600e60408201526d2434b3b4102132ba102a37b5b2b760911b60608201526080602082015260006200210a608083018462002042565b805169ffffffffffffffffffff8116811462001f6357600080fd5b600080600080600060a08688031215620025ed57600080fd5b620025f886620025b9565b94506020860151935060408601519250606086015191506200261d60808701620025b9565b9050929550929590935056fe60806040523480156200001157600080fd5b50604051620011e9380380620011e98339810160408190526200003491620001f4565b8151829082906200004d90600390602085019062000081565b5080516200006390600490602084019062000081565b5050600680546001600160a01b03191633179055506200029b915050565b8280546200008f906200025e565b90600052602060002090601f016020900481019282620000b35760008555620000fe565b82601f10620000ce57805160ff1916838001178555620000fe565b82800160010185558215620000fe579182015b82811115620000fe578251825591602001919060010190620000e1565b506200010c92915062000110565b5090565b5b808211156200010c576000815560010162000111565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014f57600080fd5b81516001600160401b03808211156200016c576200016c62000127565b604051601f8301601f19908116603f0116810190828211818310171562000197576200019762000127565b81604052838152602092508683858801011115620001b457600080fd5b600091505b83821015620001d85785820183015181830184015290820190620001b9565b83821115620001ea5760008385830101525b9695505050505050565b600080604083850312156200020857600080fd5b82516001600160401b03808211156200022057600080fd5b6200022e868387016200013d565b935060208501519150808211156200024557600080fd5b5062000254858286016200013d565b9150509250929050565b600181811c908216806200027357607f821691505b602082108114156200029557634e487b7160e01b600052602260045260246000fd5b50919050565b610f3e80620002ab6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101ec578063a9059cbb146101ff578063dd62ed3e14610212578063def114b61461024b57600080fd5b806370a08231146101ab5780637e9d2ac1146101be57806395d89b41146101d15780639dc29fac146101d957600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806340c10f191461018d57806353d74fdf146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610276565b60405161011a9190610d01565b60405180910390f35b610136610131366004610d72565b610308565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610d9c565b61031f565b6040516012815260200161011a565b610136610188366004610d72565b6103d0565b6101a061019b366004610d72565b61040c565b005b61014a60055481565b61014a6101b9366004610dd8565b6104ad565b6101a06101cc366004610dd8565b6104c8565b61010d610562565b6101a06101e7366004610d72565b610571565b6101366101fa366004610d72565b610602565b61013661020d366004610d72565b61069b565b61014a610220366004610df3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60065461025e906001600160a01b031681565b6040516001600160a01b03909116815260200161011a565b60606003805461028590610e26565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610e26565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b6000610315338484610735565b5060015b92915050565b600061032a836104ad565b610344576005805490600061033e83610e77565b91905055505b8161034e856104ad565b141561036a576005805490600061036483610e92565b91905055505b61037584848461085a565b9050806103c95760405162461bcd60e51b815260206004820152601860248201527f4552525f5452414e534645525f46524f4d5f4641494c4544000000000000000060448201526064015b60405180910390fd5b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610315918590610407908690610ea9565b610735565b6006546001600160a01b031633146104365760405162461bcd60e51b81526004016103c090610ec1565b6104408282610904565b8061044a836104ad565b1415610466576005805490600061046083610e77565b91905055505b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516104a191815260200190565b60405180910390a25050565b6001600160a01b031660009081526020819052604090205490565b6006546001600160a01b031633146104f25760405162461bcd60e51b81526004016103c090610ec1565b60006104fd826104ad565b905080610508575050565b6005805490600061051883610e92565b919050555061052782826109e3565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516104a191815260200190565b60606004805461028590610e26565b6006546001600160a01b0316331461059b5760405162461bcd60e51b81526004016103c090610ec1565b6105a582826109e3565b6105ae826104ad565b61052757600580549060006105c283610e92565b9190505550816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516104a191815260200190565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156106845760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103c0565b6106913385858403610735565b5060019392505050565b60006106a6836104ad565b6106c057600580549060006106ba83610e77565b91905055505b816106ca336104ad565b14156106e657600580549060006106e083610e92565b91905055505b6106f08383610b29565b9050806103195760405162461bcd60e51b815260206004820152601360248201527211549497d514905394d1915497d19052531151606a1b60448201526064016103c0565b6001600160a01b0383166107975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c0565b6001600160a01b0382166107f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610867848484610b32565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108ec5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016103c0565b6108f98533858403610735565b506001949350505050565b6001600160a01b03821661095a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103c0565b806002600082825461096c9190610ea9565b90915550506001600160a01b03821660009081526020819052604081208054839290610999908490610ea9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610a435760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103c0565b6001600160a01b03821660009081526020819052604090205481811015610ab75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103c0565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610ae6908490610ef1565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161084d565b60006103153384845b6001600160a01b038316610b965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c0565b6001600160a01b038216610bf85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c0565b6001600160a01b03831660009081526020819052604090205481811015610c705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610ca7908490610ea9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cf391815260200190565b60405180910390a350505050565b600060208083528351808285015260005b81811015610d2e57858101830151858201604001528201610d12565b81811115610d40576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610d6d57600080fd5b919050565b60008060408385031215610d8557600080fd5b610d8e83610d56565b946020939093013593505050565b600080600060608486031215610db157600080fd5b610dba84610d56565b9250610dc860208501610d56565b9150604084013590509250925092565b600060208284031215610dea57600080fd5b6103c982610d56565b60008060408385031215610e0657600080fd5b610e0f83610d56565b9150610e1d60208401610d56565b90509250929050565b600181811c90821680610e3a57607f821691505b60208210811415610e5b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415610e8b57610e8b610e61565b5060010190565b600081610ea157610ea1610e61565b506000190190565b60008219821115610ebc57610ebc610e61565b500190565b60208082526016908201527550524544494354494f4e5f4d41524b45545f4f4e4c5960501b604082015260600190565b600082821015610f0357610f03610e61565b50039056fea2646970667358221220b596d9608c75ca5f597948a8ff67a67bffae258d3690cdfa268e6662e4d314e364736f6c63430008090033a264697066735822122061f864af8d9a81f88e023e64756c5fe9b146525beec7c70ff55cc684695f089d64736f6c63430008090033000000000000000000000000024d3242650d6c7b0ee6de408e33e803dbfb00ea

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

000000000000000000000000024d3242650d6c7b0ee6de408e33e803dbfb00ea

-----Decoded View---------------
Arg [0] : _operator (address): 0x024d3242650d6c7b0ee6de408e33e803dbfb00ea

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000024d3242650d6c7b0ee6de408e33e803dbfb00ea


Deployed ByteCode Sourcemap

22773:14839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34375:2537;;;;;;;;;;-1:-1:-1;34375:2537:0;;;;;:::i;:::-;;:::i;:::-;;31386:228;;;;;;:::i;:::-;;:::i;22873:30::-;;;;;;;;;;-1:-1:-1;22873:30:0;;;;-1:-1:-1;;;;;22873:30:0;;;;;;-1:-1:-1;;;;;1074:32:1;;;1056:51;;1044:2;1029:18;22873:30:0;;;;;;;;27505:403;;;;;;:::i;:::-;;:::i;:::-;;;1893:25:1;;;1881:2;1866:18;27505:403:0;1747:177:1;22942:51:0;;;;;;;;;;-1:-1:-1;22942:51:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;29964:879::-;;;;;;;;;;-1:-1:-1;29964:879:0;;;;;:::i;:::-;;:::i;:::-;;;;3914:25:1;;;3970:2;3955:18;;3948:34;;;;3887:18;29964:879:0;3740:248:1;34209:158:0;;;;;;;;;;-1:-1:-1;34209:158:0;;;;;:::i;:::-;;:::i;25977:662::-;;;;;;;;;;-1:-1:-1;25977:662:0;;;;;:::i;:::-;;:::i;22829:35::-;;;;;;;;;;;;;;;;26971:247;;;;;;;;;;-1:-1:-1;26971:247:0;;;;;:::i;:::-;;:::i;26647:78::-;;;;;;;;;;-1:-1:-1;26710:7:0;;;;26647:78;;4671:14:1;;4664:22;4646:41;;4634:2;4619:18;26647:78:0;4506:187:1;33101:1100:0;;;;;;;;;;-1:-1:-1;33101:1100:0;;;;;:::i;:::-;;:::i;2460:94::-;;;;;;;;;;;;;:::i;23045:75::-;;;;;;;;;;-1:-1:-1;23045:75:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;31622:1249;;;;;;:::i;:::-;;:::i;30851:527::-;;;;;;;;;;-1:-1:-1;30851:527:0;;;;;:::i;:::-;;:::i;1809:87::-;;;;;;;;;;-1:-1:-1;1855:7:0;1882:6;-1:-1:-1;;;;;1882:6:0;1809:87;;37229:380;;;;;;;;;;-1:-1:-1;37229:380:0;;;;;:::i;:::-;;:::i;25724:245::-;;;;;;;;;;-1:-1:-1;25724:245:0;;;;;:::i;:::-;;:::i;23582:45::-;;;;;;;;;;-1:-1:-1;23582:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;2709:229;;;;;;;;;;-1:-1:-1;2709:229:0;;;;;:::i;:::-;;:::i;34375:2537::-;26710:7;;;;24829:9;24821:28;;;;-1:-1:-1;;;24821:28:0;;;;;;;:::i;:::-;;;;;;;;;25299:7:::1;;25310:1;25299:12;;25291:39;;;;-1:-1:-1::0;;;25291:39:0::1;;;;;;;:::i;:::-;25351:1;25341:7;:11:::0;-1:-1:-1;;;;;34533:26:0;::::2;34525:63;;;::::0;-1:-1:-1;;;34525:63:0;;6632:2:1;34525:63:0::2;::::0;::::2;6614:21:1::0;6671:2;6651:18;;;6644:30;6710:26;6690:18;;;6683:54;6754:18;;34525:63:0::2;6430:348:1::0;34525:63:0::2;34599:35;34637:27:::0;;;:10:::2;:27;::::0;;;;34699:31:::2;::::0;::::2;::::0;34677:116:::2;;;::::0;-1:-1:-1;;;34677:116:0;;6985:2:1;34677:116:0::2;::::0;::::2;6967:21:1::0;7024:2;7004:18;;;6997:30;7063:32;7043:18;;;7036:60;7113:18;;34677:116:0::2;6783:354:1::0;34677:116:0::2;34838:25;::::0;::::2;::::0;34908:26:::2;::::0;::::2;::::0;34951:23:::2;::::0;::::2;::::0;-1:-1:-1;;;;;34838:25:0;;::::2;::::0;34908:26;;::::2;::::0;34951:23:::2;;34946:89;;34991:32;35007:15;34991;:32::i;:::-;35047:29;35093:13;:30;;;35127:1;35093:35;35089:1388;;;35169:35;::::0;-1:-1:-1;;;35169:35:0;;-1:-1:-1;;;;;1074:32:1;;;35169:35:0::2;::::0;::::2;1056:51:1::0;35169:21:0;::::2;::::0;::::2;::::0;1029:18:1;;35169:35:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35145:59;;35089:1388;;;35226:30;::::0;::::2;::::0;35222:1255:::2;;35302:36;::::0;-1:-1:-1;;;35302:36:0;;-1:-1:-1;;;;;1074:32:1;;;35302:36:0::2;::::0;::::2;1056:51:1::0;35302:22:0;::::2;::::0;::::2;::::0;1029:18:1;;35302:36:0::2;910:203:1::0;35222:1255:0::2;35389:13;:26;;;35360:13;:26;;;:55;35356:1121;;;35504:36;::::0;-1:-1:-1;;;35504:36:0;;-1:-1:-1;;;;;1074:32:1;;;35504:36:0::2;::::0;::::2;1056:51:1::0;35484:17:0::2;::::0;35504:22;;::::2;::::0;::::2;::::0;1029:18:1;;35504:36:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35484:56:::0;-1:-1:-1;35561:14:0;35557:61:::2;;35596:7;;;;;;;35557:61;35656:156;35689:13;:31;;;35739:13;:30;;;35788:9;35656:14;:156::i;:::-;35632:180;;35417:407;35356:1121;;;35863:13;:26;;;35834:13;:26;;;:55;35830:647;;;35978:35;::::0;-1:-1:-1;;;35978:35:0;;-1:-1:-1;;;;;1074:32:1;;;35978:35:0::2;::::0;::::2;1056:51:1::0;35958:17:0::2;::::0;35978:21;;::::2;::::0;::::2;::::0;1029:18:1;;35978:35:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35958:55:::0;-1:-1:-1;36034:14:0;36030:61:::2;;36069:7;;;;;;;36030:61;36129:156;36162:13;:31;;;36212:13;:30;;;36261:9;36129:14;:156::i;35830:647::-;36318:57;36334:7;1855::::0;1882:6;-1:-1:-1;;;;;1882:6:0;;1809:87;36334:7:::2;36343:13;:31;;;36318:15;:57::i;:::-;-1:-1:-1::0;36414:1:0::2;36430:31;::::0;::::2;:35:::0;;;35830:647:::2;36489:34;::::0;-1:-1:-1;;;36489:34:0;;-1:-1:-1;;;;;1074:32:1;;;36489:34:0::2;::::0;::::2;1056:51:1::0;36489:20:0;::::2;::::0;::::2;::::0;1029:18:1;;36489:34:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;36534:33:0::2;::::0;-1:-1:-1;;;36534:33:0;;-1:-1:-1;;;;;1074:32:1;;;36534:33:0::2;::::0;::::2;1056:51:1::0;36534:19:0;::::2;::::0;-1:-1:-1;36534:19:0::2;::::0;-1:-1:-1;1029:18:1;;36534:33:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;36608:1;36584:21;:25;36580:242;;;36626:44;::::0;-1:-1:-1;;;;;36626:21:0;::::2;::::0;:44;::::2;;;::::0;36648:21;;36626:44:::2;::::0;;;36648:21;36626;:44;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;36788:21;36736:13;:31;;;:74;;;;:::i;:::-;36685:31;::::0;::::2;:125:::0;36580:242:::2;36882:21;36868:12;-1:-1:-1::0;;;;;36839:65:0::2;36851:15;36839:65;;;;;;;;;;34514:2398;;;;25363:1;-1:-1:-1::0;;25385:1:0::1;25375:7;:11:::0;34375:2537::o;31386:228::-;31536:70;31554:10;31566:15;31583:11;31596:9;31536:17;:70::i;:::-;31386:228;;:::o;27505:403::-;27700:7;24830:8;26710:7;;;;;26647:78;24830:8;24829:9;24821:28;;;;-1:-1:-1;;;24821:28:0;;;;;;;:::i;:::-;27740:160:::1;27776:7;27802:21;27842:13;27874:11;27740:17;:160::i;:::-;27720:180:::0;27505:403;-1:-1:-1;;;;;27505:403:0:o;22942:51::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22942:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22942:51:0;;;;;;-1:-1:-1;22942:51:0;;-1:-1:-1;22942:51:0;;;;;;;;;;;;;;;;;;;;;:::o;29964:879::-;30065:29;30181:27;;;:10;:27;;;;;;;30223:23;;;;30065:29;;30181:27;30223:23;;30219:69;;;-1:-1:-1;30271:1:0;;;;-1:-1:-1;29964:879:0;-1:-1:-1;;29964:879:0:o;30219:69::-;30335:26;;;;30326:64;;;-1:-1:-1;;;30326:64:0;;;;30298:25;;-1:-1:-1;;;;;30335:26:0;;30326:62;;:64;;;;;;;;;;;;;;30335:26;30326:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30298:92;;30401:25;30438:13;:25;;;;;;;;;;-1:-1:-1;;;;;30438:25:0;-1:-1:-1;;;;;30429:61:0;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30401:91;-1:-1:-1;30505:22:0;30530:37;30401:91;30530:17;:37;:::i;:::-;30505:62;;30621:1;30604:14;:18;:98;;30701:1;30604:98;;;30670:14;30639:26;:17;30660:4;30639:26;:::i;:::-;30638:47;;;;:::i;:::-;30580:122;;30754:1;30737:14;:18;:98;;30834:1;30737:98;;;30803:14;30772:26;:17;30793:4;30772:26;:::i;:::-;30771:47;;;;:::i;:::-;30713:122;;30132:711;;;;29964:879;;;:::o;34209:158::-;34313:46;34330:10;34343:15;34313:8;:46::i;:::-;34209:158;:::o;25977:662::-;24717:15;;-1:-1:-1;;;;;24717:15:0;24703:10;:29;24695:62;;;;-1:-1:-1;;;24695:62:0;;8924:2:1;24695:62:0;;;8906:21:1;8963:2;8943:18;;;8936:30;-1:-1:-1;;;8982:18:1;;;8975:50;9042:18;;24695:62:0;8722:344:1;24695:62:0;-1:-1:-1;;;;;26069:20:0;::::1;26061:60;;;::::0;-1:-1:-1;;;26061:60:0;;9273:2:1;26061:60:0::1;::::0;::::1;9255:21:1::0;9312:2;9292:18;;;9285:30;9351:29;9331:18;;;9324:57;9398:18;;26061:60:0::1;9071:351:1::0;26061:60:0::1;-1:-1:-1::0;;;;;26150:28:0;::::1;26134:13;26150:28:::0;;;:20:::1;:28;::::0;;;;;;;:38;;;;;;;;;26248:36:::1;26265:10;26150:38:::0;26248:8:::1;:36::i;:::-;26330:19;26352:16;26361:6;26352:8;:16::i;:::-;26330:38;;26379:16;26398:119;26430:6;26451:8;26474:12;26501:5;26398:17;:119::i;:::-;-1:-1:-1::0;;;;;26530:28:0;::::1;;::::0;;;:20:::1;:28;::::0;;;;;;;:38;;;;;;;;;:49;;;26595:36;26379:138;;-1:-1:-1;26530:28:0;;26379:138;;26595:36:::1;::::0;::::1;26050:589;;;25977:662:::0;;:::o;26971:247::-;27060:15;;-1:-1:-1;;;;;27060:15:0;27046:10;:29;;:54;;-1:-1:-1;1855:7:0;1882:6;-1:-1:-1;;;;;1882:6:0;27079:10;:21;27046:54;27024:130;;;;-1:-1:-1;;;27024:130:0;;9629:2:1;27024:130:0;;;9611:21:1;9668:2;9648:18;;;9641:30;9707:28;9687:18;;;9680:56;9753:18;;27024:130:0;9427:350:1;27024:130:0;27169:5;27165:45;;;27176:8;:6;:8::i;27165:45::-;27200:10;:8;:10::i;33101:1100::-;26710:7;;;;24829:9;24821:28;;;;-1:-1:-1;;;24821:28:0;;;;;;;:::i;:::-;33183:35:::1;33221:27:::0;;;:10:::1;:27;::::0;;;;33281:20:::1;::::0;::::1;::::0;-1:-1:-1;;;;;33281:20:0::1;33259:110;;;;-1:-1:-1::0;;;33259:110:0::1;;;;;;;:::i;:::-;33421:13;:28;;;33402:15;:47;;33380:124;;;;-1:-1:-1::0;;;33380:124:0::1;;;;;;;:::i;:::-;33524:23;::::0;::::1;::::0;::::1;;33523:24;33515:66;;;::::0;-1:-1:-1;;;33515:66:0;;10695:2:1;33515:66:0::1;::::0;::::1;10677:21:1::0;10734:2;10714:18;;;10707:30;10773:31;10753:18;;;10746:59;10822:18;;33515:66:0::1;10493:353:1::0;33515:66:0::1;33594:23;::::0;;::::1;:30:::0;;-1:-1:-1;;33594:30:0::1;33620:4;33594:30;::::0;;33677:26:::1;::::0;::::1;::::0;33668:64:::1;::::0;;-1:-1:-1;;;33668:64:0;;;;-1:-1:-1;;;;;33677:26:0;;::::1;::::0;33668:62:::1;::::0;:64;;::::1;::::0;::::1;::::0;;;;;;;33677:26;33668:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33635:30;::::0;::::1;:97:::0;33785:25:::1;::::0;::::1;::::0;33776:63:::1;::::0;;-1:-1:-1;;;33776:63:0;;;;-1:-1:-1;;;;;33785:25:0;;::::1;::::0;33776:61:::1;::::0;:63:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;33785:25;33776:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33743:30;::::0;::::1;:96:::0;;;33899:30:::1;::::0;::::1;::::0;:76:::1;::::0;33743:96;33899:76:::1;:::i;:::-;33852:31;::::0;::::1;:123:::0;34026:20:::1;::::0;::::1;::::0;34017:30:::1;::::0;-1:-1:-1;;;;;34026:20:0::1;34017:8;:30::i;:::-;33988:26;::::0;::::1;:59:::0;;;34065:128:::1;::::0;34167:15:::1;1893:25:1::0;;34096:15:0;;34065:128:::1;::::0;1881:2:1;1866:18;34065:128:0::1;;;;;;;33172:1029;33101:1100:::0;:::o;2460:94::-;1855:7;1882:6;-1:-1:-1;;;;;1882:6:0;679:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;2525:21:::1;2543:1;2525:9;:21::i;:::-;2460:94::o:0;31622:1249::-;26710:7;;;;24829:9;24821:28;;;;-1:-1:-1;;;24821:28:0;;;;;;;:::i;:::-;25299:7:::1;;25310:1;25299:12;;25291:39;;;;-1:-1:-1::0;;;25291:39:0::1;;;;;;;:::i;:::-;25351:1;25341:7;:11:::0;25072:27:::2;::::0;;;:10:::2;:27;::::0;;;;;31872:15;;25053::::2;:46;;25031:123;;;;-1:-1:-1::0;;;25031:123:0::2;;;;;;;:::i;:::-;31905:35:::3;31943:27:::0;;;:10:::3;:27;::::0;;;;-1:-1:-1;;;;;31991:19:0;::::3;31983:51;;;::::0;-1:-1:-1;;;31983:51:0;;11414:2:1;31983:51:0::3;::::0;::::3;11396:21:1::0;11453:2;11433:18;;;11426:30;-1:-1:-1;;;11472:18:1;;;11465:49;11531:18;;31983:51:0::3;11212:343:1::0;31983:51:0::3;32069:20;::::0;::::3;::::0;-1:-1:-1;;;;;32069:20:0::3;32047:110;;;;-1:-1:-1::0;;;32047:110:0::3;;;;;;;:::i;:::-;32191:7;32178:9;:20;;:36;;;;-1:-1:-1::0;32202:12:0;;::::3;32178:36;32170:67;;;::::0;-1:-1:-1;;;32170:67:0;;11762:2:1;32170:67:0::3;::::0;::::3;11744:21:1::0;11801:2;11781:18;;;11774:30;-1:-1:-1;;;11820:18:1;;;11813:48;11878:18;;32170:67:0::3;11560:342:1::0;32170:67:0::3;32271:16;::::0;::::3;::::0;;32270:40:::3;;;32293:11;:16;;32308:1;32293:16;32270:40;32248:112;;;::::0;-1:-1:-1;;;32248:112:0;;12109:2:1;32248:112:0::3;::::0;::::3;12091:21:1::0;12148:2;12128:18;;;12121:30;-1:-1:-1;;;12167:18:1;;;12160:52;12229:18;;32248:112:0::3;11907:346:1::0;32248:112:0::3;32464:7:::0;32486:16:::3;::::0;::::3;32482:207;;32528:25;::::0;::::3;::::0;32519:62:::3;::::0;-1:-1:-1;;;32519:62:0;;-1:-1:-1;;;;;12450:32:1;;;32519:62:0::3;::::0;::::3;12432:51:1::0;12499:18;;;12492:34;;;32528:25:0;;::::3;::::0;32519:40:::3;::::0;12405:18:1;;32519:62:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;32482:207;;;32623:26;::::0;::::3;::::0;32614:63:::3;::::0;-1:-1:-1;;;32614:63:0;;-1:-1:-1;;;;;12450:32:1;;;32614:63:0::3;::::0;::::3;12432:51:1::0;12499:18;;;12492:34;;;32623:26:0;;::::3;::::0;32614:41:::3;::::0;12405:18:1;;32614:63:0::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;32482:207;32704:159;::::0;;12737:4:1;12725:17;;12707:36;;32837:15:0::3;12774:2:1::0;12759:18;;12752:34;32783:13:0;;-1:-1:-1;;;;;32704:159:0;::::3;::::0;32733:15;;32704:159:::3;::::0;12680:18:1;32704:159:0::3;;;;;;;-1:-1:-1::0;;25385:1:0::1;25375:7;:11:::0;-1:-1:-1;;;;;31622:1249:0:o;30851:527::-;30975:22;31053:27;;;:10;:27;;;;;;;;31128:26;;;;31119:73;;-1:-1:-1;;;31119:73:0;;-1:-1:-1;;;;;1074:32:1;;;31119:73:0;;;1056:51:1;;;;31053:27:0;;30975:22;;31128:26;;31119:60;;1029:18:1;;31119:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31240:25;;;;31231:72;;-1:-1:-1;;;31231:72:0;;-1:-1:-1;;;;;1074:32:1;;;31231:72:0;;;1056:51:1;31091:101:0;;-1:-1:-1;31203:25:0;;31240;;;;31231:59;;1029:18:1;;31231:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31203:100;-1:-1:-1;31333:37:0;31203:100;31333:17;:37;:::i;:::-;31316:54;30851:527;-1:-1:-1;;;;;;30851:527:0:o;37229:380::-;37339:18;37429:27;;;:10;:27;;;;;;;;37489:21;;;;37480:48;;-1:-1:-1;;;37480:48:0;;37339:18;;37429:27;;-1:-1:-1;;;;;37489:21:0;;37480:41;;:48;;37522:5;;37480:48;-1:-1:-1;;;;;1074:32:1;;;;1056:51;;1044:2;1029:18;;910:203;37480:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37561:22;;;;37552:49;;-1:-1:-1;;;37552:49:0;;-1:-1:-1;;;;;1074:32:1;;;37552:49:0;;;1056:51:1;37467:61:0;;-1:-1:-1;37561:22:0;;;37552:42;;1029:18:1;;37552:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37539:62;;37384:225;37229:380;;;;;:::o;25724:245::-;1855:7;1882:6;-1:-1:-1;;;;;1882:6:0;679:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25809:30:0;::::1;25801:71;;;::::0;-1:-1:-1;;;25801:71:0;;12999:2:1;25801:71:0::1;::::0;::::1;12981:21:1::0;13038:2;13018:18;;;13011:30;13077;13057:18;;;13050:58;13125:18;;25801:71:0::1;12797:352:1::0;25801:71:0::1;25883:15;:34:::0;;-1:-1:-1;;;;;;25883:34:0::1;-1:-1:-1::0;;;;;25883:34:0;::::1;::::0;;::::1;::::0;;;25933:28:::1;::::0;1056:51:1;;;25933:28:0::1;::::0;1044:2:1;1029:18;25933:28:0::1;;;;;;;25724:245:::0;:::o;2709:229::-;1855:7;1882:6;-1:-1:-1;;;;;1882:6:0;679:10;2029:23;2021:68;;;;-1:-1:-1;;;2021:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2812:22:0;::::1;2790:110;;;::::0;-1:-1:-1;;;2790:110:0;;13356:2:1;2790:110:0::1;::::0;::::1;13338:21:1::0;13395:2;13375:18;;;13368:30;13434:34;13414:18;;;13407:62;-1:-1:-1;;;13485:18:1;;;13478:36;13531:19;;2790:110:0::1;13154:402:1::0;2790:110:0::1;2911:19;2921:8;2911:9;:19::i;36920:301::-:0;37072:29;37192:21;37152:23;37166:9;37152:11;:23;:::i;:::-;37151:62;;;;:::i;:::-;37114:99;36920:301;-1:-1:-1;;;;36920:301:0:o;27226:271::-;27386:12;;;27337;27386;;;;;;;;;-1:-1:-1;;;;;27355:16:0;;;27379:5;;27355:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27336:63;;;27458:7;27450:39;;;;-1:-1:-1;;;27450:39:0;;14174:2:1;27450:39:0;;;14156:21:1;14213:2;14193:18;;;14186:30;-1:-1:-1;;;14232:18:1;;;14225:49;14291:18;;27450:39:0;13972:343:1;27450:39:0;27287:210;27226:271;;:::o;27916:2040::-;28105:7;25299;;25310:1;25299:12;;25291:39;;;;-1:-1:-1;;;25291:39:0;;;;;;;:::i;:::-;25351:1;25341:7;:11;-1:-1:-1;;;;;28133:21:0;::::1;28125:60;;;;-1:-1:-1::0;;;28125:60:0::1;;;;;;;:::i;:::-;28229:3;28204:21;:28;;28196:68;;;;-1:-1:-1::0;;;28196:68:0::1;;;;;;;:::i;:::-;28300:20;::::0;;:24:::1;::::0;::::1;:::i;:::-;28277:20;:47:::0;;;28335:35:::1;28373:32:::0;;;:10:::1;:32;::::0;;;;;;;28441:45;;-1:-1:-1;;;28441:45:0;;;;28373:32;;-1:-1:-1;;;;;28441:43:0;::::1;::::0;::::1;::::0;:45;;::::1;::::0;;;;;;;;:43;:45;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;28441:45:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;28418:68:::0;;::::1;::::0;:13;;:68:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;28497:20:0::1;::::0;::::1;:30:::0;;-1:-1:-1;;;;;;28497:30:0::1;-1:-1:-1::0;;;;;28497:30:0;::::1;;::::0;;28569:39:::1;28593:15;28569:21:::0;:39:::1;:::i;:::-;28538:28;::::0;::::1;:70:::0;28619:26:::1;::::0;::::1;:42:::0;;;28672:23:::1;::::0;::::1;:31:::0;;-1:-1:-1;;28672:31:0::1;::::0;;28836:46:::1;::::0;::::1;::::0;28538:13;;28836:46:::1;;;:::i;:::-;;;;;;;;;;;;;28764:134;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;28714:25:0::1;::::0;::::1;:195:::0;;-1:-1:-1;;;;;;28714:195:0::1;-1:-1:-1::0;;;;;28714:195:0;;;::::1;::::0;;;::::1;::::0;;29044:46:::1;::::0;::::1;::::0;28714:25;;29044:46:::1;;;:::i;:::-;;;;;;;;;;;;;28971:135;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;28920:26:0::1;::::0;::::1;:197:::0;;-1:-1:-1;;;;;28920:197:0;;;::::1;-1:-1:-1::0;;;;;;28920:197:0;;::::1;;::::0;;29128:28:::1;::::0;::::1;:41:::0;;;;::::1;29159:10;29128:41;::::0;;29270:11;:85;::::1;;;-1:-1:-1::0;;;;;;29298:29:0;::::1;;::::0;;;:20:::1;:29;::::0;;;;;;;:52;;;;;;;;;:57;29270:85:::1;29252:249;;;29469:20;::::0;-1:-1:-1;;;;;29382:29:0;::::1;;::::0;;;:20:::1;:29;::::0;;;;;;;:84;;;;;;;;:107;29252:249:::1;29613:15;29593:3;29563:26;:21:::0;29587:2:::1;29563:26;:::i;:::-;29562:34;;;;:::i;:::-;29561:67;;;;:::i;:::-;29524:20;::::0;;29513:32:::1;::::0;;;:10:::1;:32;::::0;;;;;;;;:115;;;;29760:28:::1;::::0;::::1;::::0;29703:20;;29831:25:::1;::::0;::::1;::::0;29871:26;;::::1;::::0;29646:262;;29678:10:::1;18179:34:1::0;;18229:18;;;18222:34;;;-1:-1:-1;;;;;29831:25:0;;::::1;18272:18:1::0;;;18265:43;29871:26:0;::::1;18339:2:1::0;18324:18;;18317:43;29646:262:0;;29760:28;;29646:262;;::::1;::::0;::::1;::::0;;;;18128:3:1;29646:262:0;;::::1;-1:-1:-1::0;;29928:20:0::1;::::0;25385:1;25375:7;:11;27916:2040;;-1:-1:-1;;;;27916:2040:0:o;32879:214::-;32963:18;33046:6;-1:-1:-1;;;;;33023:60:0;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;32999:86:0;;32879:214;-1:-1:-1;;;;;32879:214:0:o;26733:110::-;26710:7;;;;24829:9;24821:28;;;;-1:-1:-1;;;24821:28:0;;;;;;;:::i;:::-;26785:7:::1;:14:::0;;-1:-1:-1;;26785:14:0::1;26795:4;26785:14;::::0;;26815:20:::1;26822:12;679:10:::0;;599:98;26822:12:::1;26815:20;::::0;-1:-1:-1;;;;;1074:32:1;;;1056:51;;1044:2;1029:18;26815:20:0::1;;;;;;;26733:110::o:0;26851:112::-;26710:7;;;;24910:31;;;;-1:-1:-1;;;24910:31:0;;19235:2:1;24910:31:0;;;19217:21:1;19274:2;19254:18;;;19247:30;-1:-1:-1;;;19293:18:1;;;19286:40;19343:18;;24910:31:0;19033:334:1;24910:31:0;26902:7:::1;:15:::0;;-1:-1:-1;;26902:15:0::1;::::0;;26933:22:::1;679:10:::0;26942:12:::1;599:98:::0;2946:173;3002:16;3021:6;;-1:-1:-1;;;;;3038:17:0;;;-1:-1:-1;;;;;;3038:17:0;;;;;;3071:40;;3021:6;;;;;;;3071:40;;3002:16;3071:40;2991:128;2946:173;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:139:1;-1:-1:-1;;;;;97:31:1;;87:42;;77:70;;143:1;140;133:12;158:331;234:6;242;295:2;283:9;274:7;270:23;266:32;263:52;;;311:1;308;301:12;263:52;350:9;337:23;369:39;402:5;369:39;:::i;:::-;427:5;479:2;464:18;;;;451:32;;-1:-1:-1;;;158:331:1:o;494:156::-;560:20;;620:4;609:16;;599:27;;589:55;;640:1;637;630:12;589:55;494:156;;;:::o;655:250::-;721:6;729;782:2;770:9;761:7;757:23;753:32;750:52;;;798:1;795;788:12;750:52;834:9;821:23;811:33;;863:36;895:2;884:9;880:18;863:36;:::i;:::-;853:46;;655:250;;;;;:::o;1118:160::-;1183:20;;1239:13;;1232:21;1222:32;;1212:60;;1268:1;1265;1258:12;1283:459;1365:6;1373;1381;1389;1442:3;1430:9;1421:7;1417:23;1413:33;1410:53;;;1459:1;1456;1449:12;1410:53;1498:9;1485:23;1517:39;1550:5;1517:39;:::i;:::-;1575:5;-1:-1:-1;1627:2:1;1612:18;;1599:32;;-1:-1:-1;1678:2:1;1663:18;;1650:32;;-1:-1:-1;1701:35:1;1732:2;1717:18;;1701:35;:::i;:::-;1691:45;;1283:459;;;;;;;:::o;1929:180::-;1988:6;2041:2;2029:9;2020:7;2016:23;2012:32;2009:52;;;2057:1;2054;2047:12;2009:52;-1:-1:-1;2080:23:1;;1929:180;-1:-1:-1;1929:180:1:o;2114:258::-;2186:1;2196:113;2210:6;2207:1;2204:13;2196:113;;;2286:11;;;2280:18;2267:11;;;2260:39;2232:2;2225:10;2196:113;;;2327:6;2324:1;2321:13;2318:48;;;2362:1;2353:6;2348:3;2344:16;2337:27;2318:48;;2114:258;;;:::o;2377:::-;2419:3;2457:5;2451:12;2484:6;2479:3;2472:19;2500:63;2556:6;2549:4;2544:3;2540:14;2533:4;2526:5;2522:16;2500:63;:::i;:::-;2617:2;2596:15;-1:-1:-1;;2592:29:1;2583:39;;;;2624:4;2579:50;;2377:258;-1:-1:-1;;2377:258:1:o;2640:1095::-;3089:3;3078:9;3071:22;3052:4;3110:46;3151:3;3140:9;3136:19;3128:6;3110:46;:::i;:::-;-1:-1:-1;;;;;3230:15:1;;;3225:2;3210:18;;3203:43;3277:2;3262:18;;3255:34;;;;-1:-1:-1;3320:2:1;3305:18;;3298:34;;;;3376:14;;3369:22;3363:3;3348:19;;3341:51;3183:3;3408:19;;3401:35;;;;3473:15;;;3467:3;3452:19;;3445:44;3526:15;;;3520:3;3505:19;;3498:44;3573:3;3558:19;;3551:35;3617:3;3602:19;;3595:35;3661:3;3646:19;;3639:36;3712:16;;;3706:3;3691:19;;;3684:45;;;;3102:54;2640:1095;-1:-1:-1;2640:1095:1:o;4321:180::-;4377:6;4430:2;4418:9;4409:7;4405:23;4401:32;4398:52;;;4446:1;4443;4436:12;4398:52;4469:26;4485:9;4469:26;:::i;:::-;4459:36;4321:180;-1:-1:-1;;;4321:180:1:o;4698:462::-;4782:6;4790;4798;4806;4859:3;4847:9;4838:7;4834:23;4830:33;4827:53;;;4876:1;4873;4866:12;4827:53;4915:9;4902:23;4934:39;4967:5;4934:39;:::i;:::-;4992:5;-1:-1:-1;5044:2:1;5029:18;;5016:32;;-1:-1:-1;5067:36:1;5099:2;5084:18;;5067:36;:::i;:::-;4698:462;;;;-1:-1:-1;5057:46:1;;5150:2;5135:18;5122:32;;-1:-1:-1;;4698:462:1:o;5165:323::-;5233:6;5241;5294:2;5282:9;5273:7;5269:23;5265:32;5262:52;;;5310:1;5307;5300:12;5262:52;5346:9;5333:23;5323:33;;5406:2;5395:9;5391:18;5378:32;5419:39;5452:5;5419:39;:::i;:::-;5477:5;5467:15;;;5165:323;;;;;:::o;5493:255::-;5552:6;5605:2;5593:9;5584:7;5580:23;5576:32;5573:52;;;5621:1;5618;5611:12;5573:52;5660:9;5647:23;5679:39;5712:5;5679:39;:::i;5753:329::-;5955:2;5937:21;;;5994:1;5974:18;;;5967:29;-1:-1:-1;;;6027:2:1;6012:18;;6005:36;6073:2;6058:18;;5753:329::o;6087:338::-;6289:2;6271:21;;;6328:2;6308:18;;;6301:30;-1:-1:-1;;;6362:2:1;6347:18;;6340:44;6416:2;6401:18;;6087:338::o;7358:184::-;7428:6;7481:2;7469:9;7460:7;7456:23;7452:32;7449:52;;;7497:1;7494;7487:12;7449:52;-1:-1:-1;7520:16:1;;7358:184;-1:-1:-1;7358:184:1:o;7547:127::-;7608:10;7603:3;7599:20;7596:1;7589:31;7639:4;7636:1;7629:15;7663:4;7660:1;7653:15;7679:125;7719:4;7747:1;7744;7741:8;7738:34;;;7752:18;;:::i;:::-;-1:-1:-1;7789:9:1;;7679:125::o;7809:380::-;7888:1;7884:12;;;;7931;;;7952:61;;8006:4;7998:6;7994:17;7984:27;;7952:61;8059:2;8051:6;8048:14;8028:18;8025:38;8022:161;;;8105:10;8100:3;8096:20;8093:1;8086:31;8140:4;8137:1;8130:15;8168:4;8165:1;8158:15;8022:161;;7809:380;;;:::o;8194:128::-;8234:3;8265:1;8261:6;8258:1;8255:13;8252:39;;;8271:18;;:::i;:::-;-1:-1:-1;8307:9:1;;8194:128::o;8327:168::-;8367:7;8433:1;8429;8425:6;8421:14;8418:1;8415:21;8410:1;8403:9;8396:17;8392:45;8389:71;;;8440:18;;:::i;:::-;-1:-1:-1;8480:9:1;;8327:168::o;8500:217::-;8540:1;8566;8556:132;;8610:10;8605:3;8601:20;8598:1;8591:31;8645:4;8642:1;8635:15;8673:4;8670:1;8663:15;8556:132;-1:-1:-1;8702:9:1;;8500:217::o;9782:350::-;9984:2;9966:21;;;10023:2;10003:18;;;9996:30;10062:28;10057:2;10042:18;;10035:56;10123:2;10108:18;;9782:350::o;10137:351::-;10339:2;10321:21;;;10378:2;10358:18;;;10351:30;10417:29;10412:2;10397:18;;10390:57;10479:2;10464:18;;10137:351::o;10851:356::-;11053:2;11035:21;;;11072:18;;;11065:30;11131:34;11126:2;11111:18;;11104:62;11198:2;11183:18;;10851:356::o;13561:127::-;13622:10;13617:3;13613:20;13610:1;13603:31;13653:4;13650:1;13643:15;13677:4;13674:1;13667:15;13693:274;13822:3;13860:6;13854:13;13876:53;13922:6;13917:3;13910:4;13902:6;13898:17;13876:53;:::i;:::-;13945:16;;;;;13693:274;-1:-1:-1;;13693:274:1:o;14320:884::-;14400:6;14453:2;14441:9;14432:7;14428:23;14424:32;14421:52;;;14469:1;14466;14459:12;14421:52;14502:9;14496:16;14531:18;14572:2;14564:6;14561:14;14558:34;;;14588:1;14585;14578:12;14558:34;14626:6;14615:9;14611:22;14601:32;;14671:7;14664:4;14660:2;14656:13;14652:27;14642:55;;14693:1;14690;14683:12;14642:55;14722:2;14716:9;14744:2;14740;14737:10;14734:36;;;14750:18;;:::i;:::-;14825:2;14819:9;14793:2;14879:13;;-1:-1:-1;;14875:22:1;;;14899:2;14871:31;14867:40;14855:53;;;14923:18;;;14943:22;;;14920:46;14917:72;;;14969:18;;:::i;:::-;15009:10;15005:2;14998:22;15044:2;15036:6;15029:18;15084:7;15079:2;15074;15070;15066:11;15062:20;15059:33;15056:53;;;15105:1;15102;15095:12;15056:53;15118:55;15170:2;15165;15157:6;15153:15;15148:2;15144;15140:11;15118:55;:::i;:::-;15192:6;14320:884;-1:-1:-1;;;;;;;14320:884:1:o;15335:973::-;15420:12;;15385:3;;15475:1;15495:18;;;;15548;;;;15575:61;;15629:4;15621:6;15617:17;15607:27;;15575:61;15655:2;15703;15695:6;15692:14;15672:18;15669:38;15666:161;;;15749:10;15744:3;15740:20;15737:1;15730:31;15784:4;15781:1;15774:15;15812:4;15809:1;15802:15;15666:161;15843:18;15870:104;;;;15988:1;15983:319;;;;15836:466;;15870:104;-1:-1:-1;;15903:24:1;;15891:37;;15948:16;;;;-1:-1:-1;15870:104:1;;15983:319;15282:1;15275:14;;;15319:4;15306:18;;16077:1;16091:165;16105:6;16102:1;16099:13;16091:165;;;16183:14;;16170:11;;;16163:35;16226:16;;;;16120:10;;16091:165;;;16095:3;;16285:6;16280:3;16276:16;16269:23;;15836:466;;;;;;;15335:973;;;;:::o;16313:334::-;-1:-1:-1;;;16567:3:1;16560:19;16542:3;16595:46;16638:1;16633:3;16629:11;16621:6;16595:46;:::i;16652:455::-;16902:2;16891:9;16884:21;16941:2;16936;16925:9;16921:18;16914:30;-1:-1:-1;;;16975:2:1;16964:9;16960:18;16953:43;17034:3;17027:4;17016:9;17012:20;17005:33;16865:4;17055:46;17096:3;17085:9;17081:19;17073:6;17055:46;:::i;17112:334::-;-1:-1:-1;;;17366:3:1;17359:19;17341:3;17394:46;17437:1;17432:3;17428:11;17420:6;17394:46;:::i;17451:456::-;17701:2;17690:9;17683:21;17740:2;17735;17724:9;17720:18;17713:30;-1:-1:-1;;;17774:2:1;17763:9;17759:18;17752:44;17834:3;17827:4;17816:9;17812:20;17805:33;17664:4;17855:46;17896:3;17885:9;17881:19;17873:6;17855:46;:::i;18371:179::-;18449:13;;18502:22;18491:34;;18481:45;;18471:73;;18540:1;18537;18530:12;18555:473;18658:6;18666;18674;18682;18690;18743:3;18731:9;18722:7;18718:23;18714:33;18711:53;;;18760:1;18757;18750:12;18711:53;18783:39;18812:9;18783:39;:::i;:::-;18773:49;;18862:2;18851:9;18847:18;18841:25;18831:35;;18906:2;18895:9;18891:18;18885:25;18875:35;;18950:2;18939:9;18935:18;18929:25;18919:35;;18973:49;19017:3;19006:9;19002:19;18973:49;:::i;:::-;18963:59;;18555:473;;;;;;;;:::o

Swarm Source

ipfs://61f864af8d9a81f88e023e64756c5fe9b146525beec7c70ff55cc684695f089d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading