ETH Price: $3,251.94 (+3.81%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Open Betting177933992023-07-28 18:40:59552 days ago1690569659IN
0x4174c06a...71b983B46
0 ETH0.0012425541.33308973
Resolve Bet177933942023-07-28 18:39:59552 days ago1690569599IN
0x4174c06a...71b983B46
0 ETH0.0014356941.45942085
Close Betting177875882023-07-27 23:10:11552 days ago1690499411IN
0x4174c06a...71b983B46
0 ETH0.0015325832.99651105
Murder Wager177801932023-07-26 22:19:35554 days ago1690409975IN
0x4174c06a...71b983B46
0 ETH0.0059097631.4870162
Open Betting177779452023-07-26 14:47:59554 days ago1690382879IN
0x4174c06a...71b983B46
0 ETH0.0010806935.9488798
Blood Money177779362023-07-26 14:46:11554 days ago1690382771IN
0x4174c06a...71b983B46
0 ETH0.0036135634.42142201
Resolve Bet177778412023-07-26 14:26:47554 days ago1690381607IN
0x4174c06a...71b983B46
0 ETH0.0018739234.35816284
Close Betting177711962023-07-25 16:07:23555 days ago1690301243IN
0x4174c06a...71b983B46
0 ETH0.0022605148.66878077
Murder Wager177657522023-07-24 21:49:47556 days ago1690235387IN
0x4174c06a...71b983B46
0 ETH0.0039979423.70657392
Murder Wager177657482023-07-24 21:48:59556 days ago1690235339IN
0x4174c06a...71b983B46
0 ETH0.0040539924.03890882
Murder Wager177657452023-07-24 21:48:23556 days ago1690235303IN
0x4174c06a...71b983B46
0 ETH0.0041025124.32659904
Murder Wager177657442023-07-24 21:48:11556 days ago1690235291IN
0x4174c06a...71b983B46
0 ETH0.0040245523.86435151
Murder Wager177657442023-07-24 21:48:11556 days ago1690235291IN
0x4174c06a...71b983B46
0 ETH0.0048395223.86435151
Murder Wager177649432023-07-24 19:07:35556 days ago1690225655IN
0x4174c06a...71b983B46
0 ETH0.0078265941.70246595
Open Betting177649082023-07-24 19:00:23556 days ago1690225223IN
0x4174c06a...71b983B46
0 ETH0.0011924339.66601378
Resolve Bet177636922023-07-24 14:55:35556 days ago1690210535IN
0x4174c06a...71b983B46
0 ETH0.0030784256.44239556
Close Betting177595492023-07-24 1:00:35556 days ago1690160435IN
0x4174c06a...71b983B46
0 ETH0.0008692118.71421657
Murder Wager177595172023-07-24 0:53:59556 days ago1690160039IN
0x4174c06a...71b983B46
0 ETH0.0025669116.93853558
Murder Wager177595002023-07-24 0:50:35556 days ago1690159835IN
0x4174c06a...71b983B46
0 ETH0.0032111117.29262412
Murder Wager177585872023-07-23 21:46:59557 days ago1690148819IN
0x4174c06a...71b983B46
0 ETH0.004056120
Murder Wager177574142023-07-23 17:50:47557 days ago1690134647IN
0x4174c06a...71b983B46
0 ETH0.0065633235.34274534
Murder Wager177574062023-07-23 17:49:11557 days ago1690134551IN
0x4174c06a...71b983B46
0 ETH0.0073441536.21290335
Murder Wager177573662023-07-23 17:41:11557 days ago1690134071IN
0x4174c06a...71b983B46
0 ETH0.0031395630.7116753
Murder Wager177573292023-07-23 17:33:47557 days ago1690133627IN
0x4174c06a...71b983B46
0 ETH0.0061331427.64060629
Open Betting177573142023-07-23 17:30:47557 days ago1690133447IN
0x4174c06a...71b983B46
0 ETH0.0014439230.61625536
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RedactedWagers

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 300 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-23
*/

/*
Website: https://chiraq.bet/game
Telegram: https://t.me/chiraqcoin
Buy: https://app.uniswap.org/#/swap?outputCurrency=0xb8747b1a92c0db35bef62737bd3e91cf7cedf8ee&chain=ethereum


░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒█▒░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓▓▒░░░░░░░░░░░░░░░░░░░░░░▒█████▓░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░▒▓██▓░░░░░▓█████▓░░░░░░░░░░░░░░░░░░▒████▓▒▓██▓░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░█████░░░░░███████░░░░░░░░░░░░░░░░▒████▓▒░░░░▒███░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░▒█████░░░░░███████▒░░░░░░░░░░░░░▓████▓▒░░░░░░▓████▒░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░▓███▒░░░░▒███████▓░░░░░░░░░░░▓████▓▒░░░░░░▓████▓░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░▒████████░░░░░░░░░▒████▓▒░░░░░░▓████▓░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░▒▓▓▓▓▒▒░░░░░░░░░░▒█████████▓░░░░░░░░░░███▒░░░░░▒████▓░░░░░▒▓██████▓▒░░░░░░░░░░░░░░
░░░░░░▓███████████▓▓▓▓▓▓████████████░░░░░░░░░░░███▒░░░░░███▒░░░░▓████▓▒▒▒▓███▒░░░░░░░░░░░░
░░░░▒████████████████████████████████▒░░░░░░░░░░███▒░░░░░▓██▓░▒███▓░░░░░░░░███░░░░░░░░░░░░
░░░▒███████████████████████████████████▓░░░░░░░░░▓██▓░░░░░▓██████░░░░░░░░░░▓██▒░░░░░░░░░░░
░░░██████████████████████████▓▓▓▓▓█████▒░░░░░░░░░░▓██▓░░░░░▒███▓░░░░░░░░░░░▓██▒░░░░░░░░░░░
░░░████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░▒███░░░░░░██░░░░░░░░░░░▓██▓░░░░░░░░░░░░
░░░▒█████████████████████▓░░░▓████▓▓░░░░▓███▒░░░░░░▒███▓░░░░░░░░░░░░░░░░░▓███░░░░░░░░░░░░░
░░░░░███████████████████▓░░░░███████▓░░░░░▒░░░░░░▒████░░░░░░░░░░░░░░░░░▓███▒░░░░░░░░░░░░░░
░░░░░░▒████████████████▓░░░░░░▒▓▓▓▓▒░░░░░░░░░░░░▓███▒░░░░░░░░░░░░░▓██████▒░░░░░░░░░░░░░░░░
░░░░░░░░░▒▓███████████▓░░░░░░░░░░░░░░███░░░░░░▓███▒░░░░░░░░░░░░░░░▒███▒░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░▒▒▒▓▓▓▒▒░░░░░░░░░░░░░░░░▒▒░░░░░▓███▒░░░░░░░░░░░░▓▒░░░░▓██▓░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓███▒░░░░░░░░░░░░▒███▒░░░░███░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓███▓░░░░░░░░░░░░░██████░░░░░███░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓▓██████▓░░░░░░░░░░░░░▓███▒▒███░░░░▒██▓░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓▓██████▓▒▒░░░░░░░░░░░░░░░▒███▒░░░▒███░░░░███▒░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░█████▓▒▒░░░░░░░░░░░░░░░░░░░▒███▓░░░░░░███▓░░░░███░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░▓██▓░░░░░░░░░░░░░▒▒▓▓░░░░░░▓███░░░░░░▓███▒░░░░░████░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░███░░░░░░▒▒▓▓████████▓░░░░▒███░░░░░▓███▓░░░░▒████▒░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░▒██▓░░░░██████▓▓▒▒░░███░░░░░███░░░▓███▓░░░░▒███▓▒░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░▓██▒░░░▒██▓░░░░░░░░░▒██▓░░░░▒██▓░░▒███▓░░▓███▓░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░███░░░░███░░░░░░░░░░░███▒░░░░███░░░░▓██████▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░▒██▒░░░▒███░░░░░░░░░░░░███░░░░▒███▒░░░░██▓▒░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░███░░░░▓██▒░░░░░░░░░░░░▓██▒░░░░▒████▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░▒▒▓▓▓▓██▓░░░░███░░░░░░░░░░░░░░███▓░░░░░░▒▓███▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▒████████▒░░░▓██▒░░░░░░░░░░░░░░░▓████▓▒░░░░░▒▓████▒░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▒██▓░░░░░░░░░███░░░░░░░░░░░░░░░░░░░▒████▓▒░░░░░▒▓████▒░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▒██▓░▒▒▒▒▒▒▒▓██▒░░░░░░░░░░░░░░░░░░░░░░▒▓████░░░░░▓██▓░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▒██████████████░░░░░░░░░░░░░░░░░░░░░░░░▒███░░░░░███▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓███░░░░▒███░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒████▓▒░▓██▓░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓█████▒░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

*/
// File: contracts/BetCOins/Ownable.sol


pragma solidity ^0.8.4;

/// @notice Simple single owner authorization mixin.
/// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)
/// @dev While the ownable portion follows [EIP-173](https://eips.ethereum.org/EIPS/eip-173)
/// for compatibility, the nomenclature for the 2-step ownership handover
/// may be unique to this codebase.
abstract contract Ownable {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                       CUSTOM ERRORS                        */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The caller is not authorized to call the function.
    error Unauthorized();

    /// @dev The `newOwner` cannot be the zero address.
    error NewOwnerIsZeroAddress();

    /// @dev The `pendingOwner` does not have a valid handover request.
    error NoHandoverRequest();

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                           EVENTS                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The ownership is transferred from `oldOwner` to `newOwner`.
    /// This event is intentionally kept the same as OpenZeppelin's Ownable to be
    /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173),
    /// despite it not being as lightweight as a single argument event.
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);

    /// @dev An ownership handover to `pendingOwner` has been requested.
    event OwnershipHandoverRequested(address indexed pendingOwner);

    /// @dev The ownership handover to `pendingOwner` has been canceled.
    event OwnershipHandoverCanceled(address indexed pendingOwner);

    /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`.
    uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE =
        0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0;

    /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE =
        0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d;

    /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE =
        0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                          STORAGE                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The owner slot is given by: `not(_OWNER_SLOT_NOT)`.
    /// It is intentionally choosen to be a high value
    /// to avoid collision with lower slots.
    /// The choice of manual storage layout is to enable compatibility
    /// with both regular and upgradeable contracts.
    uint256 private constant _OWNER_SLOT_NOT = 0x8b78c6d8;

    /// The ownership handover slot of `newOwner` is given by:
    /// ```
    ///     mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED))
    ///     let handoverSlot := keccak256(0x00, 0x20)
    /// ```
    /// It stores the expiry timestamp of the two-step ownership handover.
    uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                     INTERNAL FUNCTIONS                     */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Initializes the owner directly without authorization guard.
    /// This function must be called upon initialization,
    /// regardless of whether the contract is upgradeable or not.
    /// This is to enable generalization to both regular and upgradeable contracts,
    /// and to save gas in case the initial owner is not the caller.
    /// For performance reasons, this function will not check if there
    /// is an existing owner.
    function _initializeOwner(address newOwner) internal virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // Clean the upper 96 bits.
            newOwner := shr(96, shl(96, newOwner))
            // Store the new value.
            sstore(not(_OWNER_SLOT_NOT), newOwner)
            // Emit the {OwnershipTransferred} event.
            log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)
        }
    }

    /// @dev Sets the owner directly without authorization guard.
    function _setOwner(address newOwner) internal virtual {
        /// @solidity memory-safe-assembly
        assembly {
            let ownerSlot := not(_OWNER_SLOT_NOT)
            // Clean the upper 96 bits.
            newOwner := shr(96, shl(96, newOwner))
            // Emit the {OwnershipTransferred} event.
            log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)
            // Store the new value.
            sstore(ownerSlot, newOwner)
        }
    }

    /// @dev Throws if the sender is not the owner.
    function _checkOwner() internal view virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // If the caller is not the stored owner, revert.
            if iszero(eq(caller(), sload(not(_OWNER_SLOT_NOT)))) {
                mstore(0x00, 0x82b42900) // `Unauthorized()`.
                revert(0x1c, 0x04)
            }
        }
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  PUBLIC UPDATE FUNCTIONS                   */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Allows the owner to transfer the ownership to `newOwner`.
    function transferOwnership(address newOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            if iszero(shl(96, newOwner)) {
                mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`.
                revert(0x1c, 0x04)
            }
        }
        _setOwner(newOwner);
    }

    /// @dev Allows the owner to renounce their ownership.
    function renounceOwnership() public payable virtual onlyOwner {
        _setOwner(address(0));
    }

    /// @dev Request a two-step ownership handover to the caller.
    /// The request will be automatically expire in 48 hours (172800 seconds) by default.
    function requestOwnershipHandover() public payable virtual {
        unchecked {
            uint256 expires = block.timestamp + ownershipHandoverValidFor();
            /// @solidity memory-safe-assembly
            assembly {
                // Compute and set the handover slot to `expires`.
                mstore(0x0c, _HANDOVER_SLOT_SEED)
                mstore(0x00, caller())
                sstore(keccak256(0x0c, 0x20), expires)
                // Emit the {OwnershipHandoverRequested} event.
                log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller())
            }
        }
    }

    /// @dev Cancels the two-step ownership handover to the caller, if any.
    function cancelOwnershipHandover() public payable virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, caller())
            sstore(keccak256(0x0c, 0x20), 0)
            // Emit the {OwnershipHandoverCanceled} event.
            log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller())
        }
    }

    /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.
    /// Reverts if there is no existing ownership handover requested by `pendingOwner`.
    function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            let handoverSlot := keccak256(0x0c, 0x20)
            // If the handover does not exist, or has expired.
            if gt(timestamp(), sload(handoverSlot)) {
                mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`.
                revert(0x1c, 0x04)
            }
            // Set the handover slot to 0.
            sstore(handoverSlot, 0)
        }
        _setOwner(pendingOwner);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                   PUBLIC READ FUNCTIONS                    */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the owner of the contract.
    function owner() public view virtual returns (address result) {
        /// @solidity memory-safe-assembly
        assembly {
            result := sload(not(_OWNER_SLOT_NOT))
        }
    }

    /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.
    function ownershipHandoverExpiresAt(address pendingOwner)
        public
        view
        virtual
        returns (uint256 result)
    {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the handover slot.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            // Load the handover slot.
            result := sload(keccak256(0x0c, 0x20))
        }
    }

    /// @dev Returns how long a two-step ownership handover is valid for in seconds.
    function ownershipHandoverValidFor() public view virtual returns (uint64) {
        return 48 * 3600;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                         MODIFIERS                          */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Marks a function as only callable by the owner.
    modifier onlyOwner() virtual {
        _checkOwner();
        _;
    }
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol


// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: contracts/BetCOins/RedactedWagersVersion.sol


pragma solidity ^0.8.21;




contract RedactedWagers is ReentrancyGuard, Ownable {
    IERC20 public chiraqToken;

    uint256 constant CONTRACT_FEE_PERCENT = 5;
    
    uint256 private contractBalance;

    uint256 public version;

    enum States {
        Open,
        Closed,
        Resolved
    }
    States public state = States.Resolved;

    mapping(uint256 => mapping(address => mapping(uint256 => uint256)))
        public betAmounts;
    mapping(uint256 => mapping(uint256 => uint256)) public totalPerOutcome;

    mapping(uint256 => mapping(address => uint16[])) public userPredictions;

    mapping(uint256 => uint256) public winningOutcome;
    mapping(uint256 => uint256) public total;

    event BetPlaced(
        address indexed user,
        uint256 prediction,
        uint256 amount,
        uint256 version
    );
    event BetResolved(uint256 winningOutcome, uint256 version);
    event Claimed(address indexed user, uint256 amount, uint256 version);
    event BettingOpened(uint256 version);
    event BettingClosed();

    constructor(IERC20 _chiraqToken) {
        _initializeOwner(msg.sender);
        chiraqToken = _chiraqToken;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*               PUBLIC NON-PAYABLE FUNCTIONS                 */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /**
     * @notice Function to place a bet
     * @param _prediction The prediction made by the bettor
     * @param _amount The bet amount
     */
    function murderWager(uint256 _prediction, uint256 _amount)
        public
        nonReentrant
    {
        require(state == States.Open);
        require(_prediction > 0, "Prediction cannot be zero");
        require(_amount >= 1000 * 1e18, "Bet amount must be greater than 0");

        uint256 betAmount = (_amount * (100 - CONTRACT_FEE_PERCENT)) / 100;

        chiraqToken.transferFrom(msg.sender, address(this), _amount);

        contractBalance += (_amount - betAmount);
        betAmounts[version][msg.sender][_prediction] += betAmount;
        totalPerOutcome[version][_prediction] += betAmount;
        total[version] += betAmount;

        userPredictions[version][msg.sender].push(uint16(_prediction));

        emit BetPlaced(msg.sender, _prediction, betAmount, version);
    }

    /**
     * @notice Function to claim winnings
     */
    function bloodMoney() public nonReentrant {
        require(state == States.Resolved, "Bet has not been resolved yet");
        uint256 currentOutcome = winningOutcome[version];
        require(
            betAmounts[version][msg.sender][currentOutcome] > 0,
            "No winnings to claim"
        );

        uint256 amount = (betAmounts[version][msg.sender][currentOutcome] *
            total[version]) / totalPerOutcome[version][currentOutcome];
        require(
            chiraqToken.balanceOf(address(this)) >= amount,
            "Not enough tokens to pay out"
        );

        betAmounts[version][msg.sender][currentOutcome] = 0;
        chiraqToken.transfer(msg.sender, amount);

        emit Claimed(msg.sender, amount, version);
    }

    /**
     * @notice Function to claim winnings from a previous version
     * @param _version The version from which to claim
     */
    function claimOldWinnings(uint256 _version) public nonReentrant {
        require(_version > 0);
        require(
            _version < version,
            "This function is only for claiming old winnings"
        );
        uint256 currentOutcome = winningOutcome[version];
        require(
            betAmounts[_version][msg.sender][currentOutcome] > 0,
            "No winnings to claim"
        );

        uint256 amount = (betAmounts[_version][msg.sender][currentOutcome] *
            total[version]) / totalPerOutcome[_version][currentOutcome];
        require(
            chiraqToken.balanceOf(address(this)) >= amount,
            "Not enough tokens to pay out"
        );

        betAmounts[_version][msg.sender][currentOutcome] = 0;
        chiraqToken.transfer(msg.sender, amount);

        emit Claimed(msg.sender, amount, version);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  PUBLIC VIEW FUNCTIONS                     */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /**
     * @notice Function to get the total bet amount for a particular outcome
     * @param _outcome The outcome to check
     * @return The total bet amount for the outcome
     */
    function getTotalBetsForOutcome(uint256 _outcome)
        public
        view
        returns (uint256)
    {
        return totalPerOutcome[version][_outcome];
    }

    /**
     * @notice Function to get the total bet amount of a user
     * @param _user The user to check
     * @return The total bet amount of the user
     */
    function getUserTotalBets(address _user) public view returns (uint256) {
        uint256 totalBets = 0;
        unchecked {
            for (
                uint256 i = 0;
                i < userPredictions[version][_user].length;
                i++
            ) {
                totalBets += betAmounts[version][_user][
                    userPredictions[version][_user][i]
                ];
            }
        }
        return totalBets;
    }

    /**
     * @notice Function to get the total bet amount a user has placed for a particular outcome
     * @param _user The user to check
     * @param _outcome The outcome to check
     * @return The total bet amount the user has placed for the outcome
     */
    function getUserPredictionForOutcome(address _user, uint256 _outcome)
        public
        view
        returns (uint256)
    {
        return betAmounts[version][_user][_outcome];
    }

    /**
     * @notice Function to get the total bet amount a user has placed for a particular outcome
     * @param _user The user to check
     * @param _outcomes The outcomes to check
     * @return amounts The total bet amounts the user has placed for the outcomes
     */
    function getUserPredictionForOutcomes(
        address _user,
        uint256[] memory _outcomes
    ) public view returns (uint256[] memory amounts) {
        amounts = new uint256[](_outcomes.length);
        unchecked {
            for (uint256 i = 0; i < _outcomes.length; i++) {
                amounts[i] = betAmounts[version][_user][_outcomes[i]];
            }
        }
        return amounts;
    }

    /**
     * @notice Function to get the total balance currently held in the contract
     * @return The total balance currently held in the contract
     */
    function getContractBalance() public view returns (uint256) {
        return contractBalance;
    }

    /**
     * @notice Function to get all outcomes a user has bet on
     * @param _user The address of the user
     * @return An array of outcomes the user has bet on
     */
    function getUserOutcomes(address _user)
        public
        view
        returns (uint16[] memory)
    {
        return userPredictions[version][_user];
    }

    /**
     * @notice Function to get amount to claim for current version     
     * @return amount The amount to claim
     */
    function getAmountToClaimCurrent() public view returns (uint256) {        
        if (betAmounts[version][msg.sender][winningOutcome[version]] == 0) {
            return 0;
        }

        uint256 amount = (betAmounts[version][msg.sender][
            winningOutcome[version]
        ] * total[version]) / totalPerOutcome[version][winningOutcome[version]];

        return amount;
    }

    /**
     * @notice Function to get amount to claim
     * @param _version The version from which to claim
     * @return amount The amount to claim
     */
    function getAmountToClaim(uint256 _version) public view returns (uint256) {
        require(_version > 0);
        require(_version <= version, "Version does not exist");

        if (betAmounts[_version][msg.sender][winningOutcome[_version]] == 0) {
            return 0;
        }

        uint256 amount = (betAmounts[_version][msg.sender][
            winningOutcome[_version]
        ] * total[version]) / totalPerOutcome[_version][winningOutcome[_version]];

        return amount;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*               EXTERNAL ONLY-OWNER FUNCTIONS                */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
    /**
     * @notice Function to close betting
     */
    function openBetting() external onlyOwner {
        require(state == States.Resolved);
        version++;
        state = States.Open;        

        emit BettingOpened(version);
    }

    /**
     * @notice Function to close betting
     */
    function closeBetting() external onlyOwner {
        require(state == States.Open);
        state = States.Closed;

        emit BettingClosed();
    }

    /**
     * @notice Function to resolve a bet
     * @param _winningOutcome The winning outcome
     */
    function resolveBet(uint256 _winningOutcome) external onlyOwner {
        require(state == States.Closed);
        winningOutcome[version] = _winningOutcome;
        state = States.Resolved;

        emit BetResolved(_winningOutcome, version);
    }

    /**
     * @notice Function to withdraw contract fees
     * @param recipient Address to receive the withdrawn fees
     */
    function withdrawContractFees(address recipient) external onlyOwner {
        uint256 balance = contractBalance;
        contractBalance = 0;
        // Transfer fees to the owner
        chiraqToken.transfer(recipient, balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_chiraqToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"prediction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"BetPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"winningOutcome","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"BetResolved","type":"event"},{"anonymous":false,"inputs":[],"name":"BettingClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"BettingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"betAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bloodMoney","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"chiraqToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"claimOldWinnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeBetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"getAmountToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmountToClaimCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_outcome","type":"uint256"}],"name":"getTotalBetsForOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserOutcomes","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_outcome","type":"uint256"}],"name":"getUserPredictionForOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256[]","name":"_outcomes","type":"uint256[]"}],"name":"getUserPredictionForOutcomes","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserTotalBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_prediction","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"murderWager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openBetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipHandoverValidFor","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_winningOutcome","type":"uint256"}],"name":"resolveBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"enum RedactedWagers.States","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalPerOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userPredictions","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"winningOutcome","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawContractFees","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526004805460ff1916600217905534801561001c575f80fd5b50604051611a72380380611a7283398101604081905261003b916100a8565b60015f556100483361006d565b600180546001600160a01b0319166001600160a01b03929092169190911790556100d5565b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f602082840312156100b8575f80fd5b81516001600160a01b03811681146100ce575f80fd5b9392505050565b611990806100e25f395ff3fe6080604052600436106101cf575f3560e01c806379eb26d3116100fd578063d40f41f411610092578063f2fde38b11610062578063f2fde38b14610554578063fee81cf414610567578063ff8f27aa14610598578063ff98ccf0146105c3575f80fd5b8063d40f41f4146104f1578063d7533f0214610510578063e10b020c1461052d578063f04e283e14610541575f80fd5b8063b119ebfe116100cd578063b119ebfe14610438578063b894a41c14610463578063b9d5e56c1461048f578063c19d93fb146104cb575f80fd5b806379eb26d31461039c57806385023e8e146103bb5780638da5cb5b146103ed578063ad79d88414610419575f80fd5b806347b28b8e116101735780635fba5f6e116101435780635fba5f6e1461034d5780636f9fb98a1461036c578063715018a61461038057806376a6819b14610388575f80fd5b806347b28b8e146102c45780634c36c36e1461031157806354d1f13d1461033057806354fd4d5014610338575f80fd5b806315ac534d116101ae57806315ac534d1461027557806325692962146102895780633a053288146102915780634775f3b8146102b0575f80fd5b8062b0c4f8146101d357806308a207e7146101f4578063155f586f1461023f575b5f80fd5b3480156101de575f80fd5b506101f26101ed36600461162b565b6105ef565b005b3480156101ff575f80fd5b5061022c61020e36600461164b565b6003545f908152600660209081526040808320938352929052205490565b6040519081526020015b60405180910390f35b34801561024a575f80fd5b5061022c61025936600461162b565b600660209081525f928352604080842090915290825290205481565b348015610280575f80fd5b506101f26108bc565b6101f261091c565b34801561029c575f80fd5b506101f26102ab36600461167d565b610969565b3480156102bb575f80fd5b5061022c6109f2565b3480156102cf575f80fd5b5061022c6102de366004611696565b6003545f9081526005602090815260408083206001600160a01b0386168452825280832084845290915290205492915050565b34801561031c575f80fd5b506101f261032b36600461164b565b610a90565b6101f2610b18565b348015610343575f80fd5b5061022c60035481565b348015610358575f80fd5b506101f261036736600461164b565b610b51565b348015610377575f80fd5b5060025461022c565b6101f2610e41565b348015610393575f80fd5b506101f2610e54565b3480156103a7575f80fd5b5061022c6103b636600461164b565b611132565b3480156103c6575f80fd5b506103da6103d53660046116be565b61122f565b60405161ffff9091168152602001610236565b3480156103f8575f80fd5b50638b78c6d819545b6040516001600160a01b039091168152602001610236565b348015610424575f80fd5b5061022c61043336600461167d565b61127c565b348015610443575f80fd5b5061022c61045236600461164b565b60096020525f908152604090205481565b34801561046e575f80fd5b5061048261047d366004611704565b61133a565b60405161023691906117d0565b34801561049a575f80fd5b5061022c6104a93660046116be565b600560209081525f938452604080852082529284528284209052825290205481565b3480156104d6575f80fd5b506004546104e49060ff1681565b6040516102369190611827565b3480156104fc575f80fd5b50600154610401906001600160a01b031681565b34801561051b575f80fd5b506040516202a3008152602001610236565b348015610538575f80fd5b506101f2611403565b6101f261054f36600461167d565b611483565b6101f261056236600461167d565b6114bd565b348015610572575f80fd5b5061022c61058136600461167d565b63389a75e1600c9081525f91909152602090205490565b3480156105a3575f80fd5b5061022c6105b236600461164b565b60086020525f908152604090205481565b3480156105ce575f80fd5b506105e26105dd36600461167d565b6114e3565b604051610236919061184d565b6105f761157d565b5f60045460ff16600281111561060f5761060f611813565b14610618575f80fd5b5f821161066c5760405162461bcd60e51b815260206004820152601960248201527f50726564696374696f6e2063616e6e6f74206265207a65726f0000000000000060448201526064015b60405180910390fd5b683635c9adc5dea000008110156106cf5760405162461bcd60e51b815260206004820152602160248201527f42657420616d6f756e74206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608401610663565b5f60646106dd60058261189c565b6106e790846118af565b6106f191906118c6565b6001546040516323b872dd60e01b8152336004820152306024820152604481018590529192506001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a91906118e5565b50610775818361189c565b60025f8282546107859190611904565b90915550506003545f9081526005602090815260408083203384528252808320868452909152812080548392906107bd908490611904565b90915550506003545f908152600660209081526040808320868452909152812080548392906107ed908490611904565b90915550506003545f9081526009602052604081208054839290610812908490611904565b9091555050600380545f9081526007602090815260408083203380855290835281842080546001810182559085529383902060108504018054600f9095166002026101000a61ffff81810219909616958a1602949094179093559254835187815291820185905292810192909252907f7363e6581df4db69463222156be4a09656528b9f1302890fa4c0b60819b69fc69060600160405180910390a2506108b860015f55565b5050565b6108c46115d4565b5f60045460ff1660028111156108dc576108dc611813565b146108e5575f80fd5b6004805460ff191660011790556040517f61c54c4a156e474ec61fa0166fb08e91674c7e603abf6ff54b7e6dcbb326371d905f90a1565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6109716115d4565b600280545f90915560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156109c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ed91906118e5565b505050565b6003545f818152600560209081526040808320338452825280832093835260088252808320548352929052908120548103610a2c57505f90565b6003545f81815260066020908152604080832060088352818420548085529083528184205494845260098352818420546005845282852033865284528285209185529252822054919291610a8091906118af565b610a8a91906118c6565b92915050565b610a986115d4565b600160045460ff166002811115610ab157610ab1611813565b14610aba575f80fd5b600380545f908152600860209081526040918290208490556004805460ff1916600217905591548151848152928301527f6f014aa1fc0c12b56c099fa8727bbf780907046b16c01199f4092f5c721187ab910160405180910390a150565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b5961157d565b5f8111610b64575f80fd5b6003548110610bcd5760405162461bcd60e51b815260206004820152602f60248201527f546869732066756e6374696f6e206973206f6e6c7920666f7220636c61696d6960448201526e6e67206f6c642077696e6e696e677360881b6064820152608401610663565b6003545f9081526008602090815260408083205484845260058352818420338552835281842081855290925290912054610c405760405162461bcd60e51b81526020600482015260146024820152734e6f2077696e6e696e677320746f20636c61696d60601b6044820152606401610663565b5f82815260066020908152604080832084845282528083205460035484526009835281842054868552600584528285203386528452828520868652909352908320549091610c8d916118af565b610c9791906118c6565b6001546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190611917565b1015610d545760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20706179206f7574000000006044820152606401610663565b5f8381526005602090815260408083203380855290835281842086855290925280832092909255600154915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610dca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dee91906118e5565b5060035460405133917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a91610e2b91858252602082015260400190565b60405180910390a25050610e3e60015f55565b50565b610e496115d4565b610e525f6115ee565b565b610e5c61157d565b600260045460ff166002811115610e7557610e75611813565b14610ec25760405162461bcd60e51b815260206004820152601d60248201527f42657420686173206e6f74206265656e207265736f6c766564207965740000006044820152606401610663565b6003545f9081526008602090815260408083205460058352818420338552835281842081855290925290912054610f325760405162461bcd60e51b81526020600482015260146024820152734e6f2077696e6e696e677320746f20636c61696d60601b6044820152606401610663565b6003545f8181526006602090815260408083208584528252808320549383526009825280832054600583528184203385528352818420868552909252822054919291610f7e91906118af565b610f8891906118c6565b6001546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fd3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff79190611917565b10156110455760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20706179206f7574000000006044820152606401610663565b6003545f9081526005602090815260408083203380855290835281842086855290925280832092909255600154915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156110be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e291906118e5565b5060035460405133917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a9161111f91858252602082015260400190565b60405180910390a25050610e5260015f55565b5f80821161113e575f80fd5b6003548211156111905760405162461bcd60e51b815260206004820152601660248201527f56657273696f6e20646f6573206e6f74206578697374000000000000000000006044820152606401610663565b5f82815260056020908152604080832033845282528083208584526008835281842054845290915281205490036111c857505f919050565b5f82815260066020908152604080832060088352818420548085529083528184205460035485526009845282852054878652600585528386203387528552838620928652919093529083205461121e91906118af565b61122891906118c6565b9392505050565b6007602052825f5260405f20602052815f5260405f208181548110611252575f80fd5b905f5260205f20906010918282040191900660020292509250509054906101000a900461ffff1681565b5f80805b6003545f9081526007602090815260408083206001600160a01b0388168452909152902054811015611333576003545f8181526005602090815260408083206001600160a01b0389168085529083528184209484526007835281842090845290915281208054849081106112f6576112f661192e565b5f9182526020808320601083040154600f9092166002026101000a90910461ffff1683528201929092526040019020549190910190600101611280565b5092915050565b6060815167ffffffffffffffff811115611356576113566116f0565b60405190808252806020026020018201604052801561137f578160200160208202803683370190505b5090505f5b8251811015611333576003545f9081526005602090815260408083206001600160a01b0388168452909152812084519091908590849081106113c8576113c861192e565b602002602001015181526020019081526020015f20548282815181106113f0576113f061192e565b6020908102919091010152600101611384565b61140b6115d4565b600260045460ff16600281111561142457611424611813565b1461142d575f80fd5b60038054905f61143c83611942565b90915550506004805460ff191690556003546040519081527f9b4839cd96beecd8707537f988e2253e5b89e2cbf896be7557c7d30f6430b71c9060200160405180910390a1565b61148b6115d4565b63389a75e1600c52805f526020600c2080544211156114b157636f5e88185f526004601cfd5b5f9055610e3e816115ee565b6114c56115d4565b8060601b6114da57637448fbae5f526004601cfd5b610e3e816115ee565b6003545f9081526007602090815260408083206001600160a01b038516845282529182902080548351818402810184019094528084526060939283018282801561157157602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115385790505b50505050509050919050565b60025f54036115ce5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610663565b60025f55565b638b78c6d819543314610e52576382b429005f526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806040838503121561163c575f80fd5b50508035926020909101359150565b5f6020828403121561165b575f80fd5b5035919050565b80356001600160a01b0381168114611678575f80fd5b919050565b5f6020828403121561168d575f80fd5b61122882611662565b5f80604083850312156116a7575f80fd5b6116b083611662565b946020939093013593505050565b5f805f606084860312156116d0575f80fd5b833592506116e060208501611662565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611715575f80fd5b61171e83611662565b915060208084013567ffffffffffffffff8082111561173b575f80fd5b818601915086601f83011261174e575f80fd5b813581811115611760576117606116f0565b8060051b604051601f19603f83011681018181108582111715611785576117856116f0565b6040529182528482019250838101850191898311156117a2575f80fd5b938501935b828510156117c0578435845293850193928501926117a7565b8096505050505050509250929050565b602080825282518282018190525f9190848201906040850190845b81811015611807578351835292840192918401916001016117eb565b50909695505050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016003831061184757634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f9190848201906040850190845b8181101561180757835161ffff1683529284019291840191600101611868565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8a57610a8a611888565b8082028115828204841417610a8a57610a8a611888565b5f826118e057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156118f5575f80fd5b81518015158114611228575f80fd5b80820180821115610a8a57610a8a611888565b5f60208284031215611927575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161195357611953611888565b506001019056fea264697066735822122046fc0e7602f6fcb17f2a6546491e3fa0d6d1827e73068c40b038b8934deace3664736f6c63430008150033000000000000000000000000b8747b1a92c0db35bef62737bd3e91cf7cedf8ee

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c806379eb26d3116100fd578063d40f41f411610092578063f2fde38b11610062578063f2fde38b14610554578063fee81cf414610567578063ff8f27aa14610598578063ff98ccf0146105c3575f80fd5b8063d40f41f4146104f1578063d7533f0214610510578063e10b020c1461052d578063f04e283e14610541575f80fd5b8063b119ebfe116100cd578063b119ebfe14610438578063b894a41c14610463578063b9d5e56c1461048f578063c19d93fb146104cb575f80fd5b806379eb26d31461039c57806385023e8e146103bb5780638da5cb5b146103ed578063ad79d88414610419575f80fd5b806347b28b8e116101735780635fba5f6e116101435780635fba5f6e1461034d5780636f9fb98a1461036c578063715018a61461038057806376a6819b14610388575f80fd5b806347b28b8e146102c45780634c36c36e1461031157806354d1f13d1461033057806354fd4d5014610338575f80fd5b806315ac534d116101ae57806315ac534d1461027557806325692962146102895780633a053288146102915780634775f3b8146102b0575f80fd5b8062b0c4f8146101d357806308a207e7146101f4578063155f586f1461023f575b5f80fd5b3480156101de575f80fd5b506101f26101ed36600461162b565b6105ef565b005b3480156101ff575f80fd5b5061022c61020e36600461164b565b6003545f908152600660209081526040808320938352929052205490565b6040519081526020015b60405180910390f35b34801561024a575f80fd5b5061022c61025936600461162b565b600660209081525f928352604080842090915290825290205481565b348015610280575f80fd5b506101f26108bc565b6101f261091c565b34801561029c575f80fd5b506101f26102ab36600461167d565b610969565b3480156102bb575f80fd5b5061022c6109f2565b3480156102cf575f80fd5b5061022c6102de366004611696565b6003545f9081526005602090815260408083206001600160a01b0386168452825280832084845290915290205492915050565b34801561031c575f80fd5b506101f261032b36600461164b565b610a90565b6101f2610b18565b348015610343575f80fd5b5061022c60035481565b348015610358575f80fd5b506101f261036736600461164b565b610b51565b348015610377575f80fd5b5060025461022c565b6101f2610e41565b348015610393575f80fd5b506101f2610e54565b3480156103a7575f80fd5b5061022c6103b636600461164b565b611132565b3480156103c6575f80fd5b506103da6103d53660046116be565b61122f565b60405161ffff9091168152602001610236565b3480156103f8575f80fd5b50638b78c6d819545b6040516001600160a01b039091168152602001610236565b348015610424575f80fd5b5061022c61043336600461167d565b61127c565b348015610443575f80fd5b5061022c61045236600461164b565b60096020525f908152604090205481565b34801561046e575f80fd5b5061048261047d366004611704565b61133a565b60405161023691906117d0565b34801561049a575f80fd5b5061022c6104a93660046116be565b600560209081525f938452604080852082529284528284209052825290205481565b3480156104d6575f80fd5b506004546104e49060ff1681565b6040516102369190611827565b3480156104fc575f80fd5b50600154610401906001600160a01b031681565b34801561051b575f80fd5b506040516202a3008152602001610236565b348015610538575f80fd5b506101f2611403565b6101f261054f36600461167d565b611483565b6101f261056236600461167d565b6114bd565b348015610572575f80fd5b5061022c61058136600461167d565b63389a75e1600c9081525f91909152602090205490565b3480156105a3575f80fd5b5061022c6105b236600461164b565b60086020525f908152604090205481565b3480156105ce575f80fd5b506105e26105dd36600461167d565b6114e3565b604051610236919061184d565b6105f761157d565b5f60045460ff16600281111561060f5761060f611813565b14610618575f80fd5b5f821161066c5760405162461bcd60e51b815260206004820152601960248201527f50726564696374696f6e2063616e6e6f74206265207a65726f0000000000000060448201526064015b60405180910390fd5b683635c9adc5dea000008110156106cf5760405162461bcd60e51b815260206004820152602160248201527f42657420616d6f756e74206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608401610663565b5f60646106dd60058261189c565b6106e790846118af565b6106f191906118c6565b6001546040516323b872dd60e01b8152336004820152306024820152604481018590529192506001600160a01b0316906323b872dd906064016020604051808303815f875af1158015610746573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076a91906118e5565b50610775818361189c565b60025f8282546107859190611904565b90915550506003545f9081526005602090815260408083203384528252808320868452909152812080548392906107bd908490611904565b90915550506003545f908152600660209081526040808320868452909152812080548392906107ed908490611904565b90915550506003545f9081526009602052604081208054839290610812908490611904565b9091555050600380545f9081526007602090815260408083203380855290835281842080546001810182559085529383902060108504018054600f9095166002026101000a61ffff81810219909616958a1602949094179093559254835187815291820185905292810192909252907f7363e6581df4db69463222156be4a09656528b9f1302890fa4c0b60819b69fc69060600160405180910390a2506108b860015f55565b5050565b6108c46115d4565b5f60045460ff1660028111156108dc576108dc611813565b146108e5575f80fd5b6004805460ff191660011790556040517f61c54c4a156e474ec61fa0166fb08e91674c7e603abf6ff54b7e6dcbb326371d905f90a1565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6109716115d4565b600280545f90915560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af11580156109c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ed91906118e5565b505050565b6003545f818152600560209081526040808320338452825280832093835260088252808320548352929052908120548103610a2c57505f90565b6003545f81815260066020908152604080832060088352818420548085529083528184205494845260098352818420546005845282852033865284528285209185529252822054919291610a8091906118af565b610a8a91906118c6565b92915050565b610a986115d4565b600160045460ff166002811115610ab157610ab1611813565b14610aba575f80fd5b600380545f908152600860209081526040918290208490556004805460ff1916600217905591548151848152928301527f6f014aa1fc0c12b56c099fa8727bbf780907046b16c01199f4092f5c721187ab910160405180910390a150565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b5961157d565b5f8111610b64575f80fd5b6003548110610bcd5760405162461bcd60e51b815260206004820152602f60248201527f546869732066756e6374696f6e206973206f6e6c7920666f7220636c61696d6960448201526e6e67206f6c642077696e6e696e677360881b6064820152608401610663565b6003545f9081526008602090815260408083205484845260058352818420338552835281842081855290925290912054610c405760405162461bcd60e51b81526020600482015260146024820152734e6f2077696e6e696e677320746f20636c61696d60601b6044820152606401610663565b5f82815260066020908152604080832084845282528083205460035484526009835281842054868552600584528285203386528452828520868652909352908320549091610c8d916118af565b610c9791906118c6565b6001546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610ce2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d069190611917565b1015610d545760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20706179206f7574000000006044820152606401610663565b5f8381526005602090815260408083203380855290835281842086855290925280832092909255600154915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610dca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dee91906118e5565b5060035460405133917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a91610e2b91858252602082015260400190565b60405180910390a25050610e3e60015f55565b50565b610e496115d4565b610e525f6115ee565b565b610e5c61157d565b600260045460ff166002811115610e7557610e75611813565b14610ec25760405162461bcd60e51b815260206004820152601d60248201527f42657420686173206e6f74206265656e207265736f6c766564207965740000006044820152606401610663565b6003545f9081526008602090815260408083205460058352818420338552835281842081855290925290912054610f325760405162461bcd60e51b81526020600482015260146024820152734e6f2077696e6e696e677320746f20636c61696d60601b6044820152606401610663565b6003545f8181526006602090815260408083208584528252808320549383526009825280832054600583528184203385528352818420868552909252822054919291610f7e91906118af565b610f8891906118c6565b6001546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610fd3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff79190611917565b10156110455760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f20706179206f7574000000006044820152606401610663565b6003545f9081526005602090815260408083203380855290835281842086855290925280832092909255600154915163a9059cbb60e01b81526004810191909152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156110be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e291906118e5565b5060035460405133917f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a9161111f91858252602082015260400190565b60405180910390a25050610e5260015f55565b5f80821161113e575f80fd5b6003548211156111905760405162461bcd60e51b815260206004820152601660248201527f56657273696f6e20646f6573206e6f74206578697374000000000000000000006044820152606401610663565b5f82815260056020908152604080832033845282528083208584526008835281842054845290915281205490036111c857505f919050565b5f82815260066020908152604080832060088352818420548085529083528184205460035485526009845282852054878652600585528386203387528552838620928652919093529083205461121e91906118af565b61122891906118c6565b9392505050565b6007602052825f5260405f20602052815f5260405f208181548110611252575f80fd5b905f5260205f20906010918282040191900660020292509250509054906101000a900461ffff1681565b5f80805b6003545f9081526007602090815260408083206001600160a01b0388168452909152902054811015611333576003545f8181526005602090815260408083206001600160a01b0389168085529083528184209484526007835281842090845290915281208054849081106112f6576112f661192e565b5f9182526020808320601083040154600f9092166002026101000a90910461ffff1683528201929092526040019020549190910190600101611280565b5092915050565b6060815167ffffffffffffffff811115611356576113566116f0565b60405190808252806020026020018201604052801561137f578160200160208202803683370190505b5090505f5b8251811015611333576003545f9081526005602090815260408083206001600160a01b0388168452909152812084519091908590849081106113c8576113c861192e565b602002602001015181526020019081526020015f20548282815181106113f0576113f061192e565b6020908102919091010152600101611384565b61140b6115d4565b600260045460ff16600281111561142457611424611813565b1461142d575f80fd5b60038054905f61143c83611942565b90915550506004805460ff191690556003546040519081527f9b4839cd96beecd8707537f988e2253e5b89e2cbf896be7557c7d30f6430b71c9060200160405180910390a1565b61148b6115d4565b63389a75e1600c52805f526020600c2080544211156114b157636f5e88185f526004601cfd5b5f9055610e3e816115ee565b6114c56115d4565b8060601b6114da57637448fbae5f526004601cfd5b610e3e816115ee565b6003545f9081526007602090815260408083206001600160a01b038516845282529182902080548351818402810184019094528084526060939283018282801561157157602002820191905f5260205f20905f905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115385790505b50505050509050919050565b60025f54036115ce5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610663565b60025f55565b638b78c6d819543314610e52576382b429005f526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806040838503121561163c575f80fd5b50508035926020909101359150565b5f6020828403121561165b575f80fd5b5035919050565b80356001600160a01b0381168114611678575f80fd5b919050565b5f6020828403121561168d575f80fd5b61122882611662565b5f80604083850312156116a7575f80fd5b6116b083611662565b946020939093013593505050565b5f805f606084860312156116d0575f80fd5b833592506116e060208501611662565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215611715575f80fd5b61171e83611662565b915060208084013567ffffffffffffffff8082111561173b575f80fd5b818601915086601f83011261174e575f80fd5b813581811115611760576117606116f0565b8060051b604051601f19603f83011681018181108582111715611785576117856116f0565b6040529182528482019250838101850191898311156117a2575f80fd5b938501935b828510156117c0578435845293850193928501926117a7565b8096505050505050509250929050565b602080825282518282018190525f9190848201906040850190845b81811015611807578351835292840192918401916001016117eb565b50909695505050505050565b634e487b7160e01b5f52602160045260245ffd5b602081016003831061184757634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f9190848201906040850190845b8181101561180757835161ffff1683529284019291840191600101611868565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a8a57610a8a611888565b8082028115828204841417610a8a57610a8a611888565b5f826118e057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156118f5575f80fd5b81518015158114611228575f80fd5b80820180821115610a8a57610a8a611888565b5f60208284031215611927575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161195357611953611888565b506001019056fea264697066735822122046fc0e7602f6fcb17f2a6546491e3fa0d6d1827e73068c40b038b8934deace3664736f6c63430008150033

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

000000000000000000000000b8747b1a92c0db35bef62737bd3e91cf7cedf8ee

-----Decoded View---------------
Arg [0] : _chiraqToken (address): 0xb8747B1A92C0Db35bEF62737BD3e91cF7cEDF8ee

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b8747b1a92c0db35bef62737bd3e91cf7cedf8ee


Deployed Bytecode Sourcemap

27797:10180:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29424:812;;;;;;;;;;-1:-1:-1;29424:812:0;;;;;:::i;:::-;;:::i;:::-;;32598:172;;;;;;;;;;-1:-1:-1;32598:172:0;;;;;:::i;:::-;32744:7;;32696;32728:24;;;:15;:24;;;;;;;;:34;;;;;;;;;32598:172;;;;598:25:1;;;586:2;571:18;32598:172:0;;;;;;;;28238:70;;;;;;;;;;-1:-1:-1;28238:70:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;37064:156;;;;;;;;;;;;;:::i;18051:629::-;;;:::i;37734:240::-;;;;;;;;;;-1:-1:-1;37734:240:0;;;;;:::i;:::-;;:::i;35372:400::-;;;;;;;;;;;;;:::i;33695:194::-;;;;;;;;;;-1:-1:-1;33695:194:0;;;;;:::i;:::-;33856:7;;33813;33845:19;;;:10;:19;;;;;;;;-1:-1:-1;;;;;33845:26:0;;;;;;;;;:36;;;;;;;;;33695:194;;;;;37339:255;;;;;;;;;;-1:-1:-1;37339:255:0;;;;;:::i;:::-;;:::i;18765:466::-;;;:::i;27984:22::-;;;;;;;;;;;;;;;;31228:881;;;;;;;;;;-1:-1:-1;31228:881:0;;;;;:::i;:::-;;:::i;34771:101::-;;;;;;;;;;-1:-1:-1;34849:15:0;;34771:101;;17783:102;;;:::i;30305:774::-;;;;;;;;;;;;;:::i;35945:506::-;;;;;;;;;;-1:-1:-1;35945:506:0;;;;;:::i;:::-;;:::i;28317:71::-;;;;;;;;;;-1:-1:-1;28317:71:0;;;;;:::i;:::-;;:::i;:::-;;;1786:6:1;1774:19;;;1756:38;;1744:2;1729:18;28317:71:0;1612:188:1;20490:196:0;;;;;;;;;;-1:-1:-1;;;20641:27:0;20490:196;;;-1:-1:-1;;;;;1969:55:1;;;1951:74;;1939:2;1924:18;20490:196:0;1805:226:1;32947:469:0;;;;;;;;;;-1:-1:-1;32947:469:0;;;;;:::i;:::-;;:::i;28453:40::-;;;;;;;;;;-1:-1:-1;28453:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;34180:419;;;;;;;;;;-1:-1:-1;34180:419:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;28137:94::-;;;;;;;;;;-1:-1:-1;28137:94:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28091:37;;;;;;;;;;-1:-1:-1;28091:37:0;;;;;;;;;;;;;;;:::i;27856:25::-;;;;;;;;;;-1:-1:-1;27856:25:0;;;;-1:-1:-1;;;;;27856:25:0;;;21335:109;;;;;;;;;;-1:-1:-1;21335:109:0;;21427:9;4863:50:1;;4851:2;4836:18;21335:109:0;4719:200:1;36804:192:0;;;;;;;;;;;;;:::i;19422:724::-;;;;;;:::i;:::-;;:::i;17357:358::-;;;;;;:::i;:::-;;:::i;20792:449::-;;;;;;;;;;-1:-1:-1;20792:449:0;;;;;:::i;:::-;21071:19;21065:4;21058:33;;;20915:14;21105:26;;;;21217:4;21201:21;;21195:28;;20792:449;28397:49;;;;;;;;;;-1:-1:-1;28397:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;35063:167;;;;;;;;;;-1:-1:-1;35063:167:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29424:812::-;24224:21;:19;:21::i;:::-;29554:11:::1;29545:5;::::0;::::1;;:20;::::0;::::1;;;;;;:::i;:::-;;29537:29;;;::::0;::::1;;29599:1;29585:11;:15;29577:53;;;::::0;-1:-1:-1;;;29577:53:0;;5774:2:1;29577:53:0::1;::::0;::::1;5756:21:1::0;5813:2;5793:18;;;5786:30;5852:27;5832:18;;;5825:55;5897:18;;29577:53:0::1;;;;;;;;;29660:11;29649:7;:22;;29641:68;;;::::0;-1:-1:-1;;;29641:68:0;;6128:2:1;29641:68:0::1;::::0;::::1;6110:21:1::0;6167:2;6147:18;;;6140:30;6206:34;6186:18;;;6179:62;-1:-1:-1;;;6257:18:1;;;6250:31;6298:19;;29641:68:0::1;5926:397:1::0;29641:68:0::1;29722:17;29785:3;29754:26;27930:1;29785:3:::0;29754:26:::1;:::i;:::-;29743:38;::::0;:7;:38:::1;:::i;:::-;29742:46;;;;:::i;:::-;29801:11;::::0;:60:::1;::::0;-1:-1:-1;;;29801:60:0;;29826:10:::1;29801:60;::::0;::::1;7251:34:1::0;29846:4:0::1;7301:18:1::0;;;7294:43;7353:18;;;7346:34;;;29722:66:0;;-1:-1:-1;;;;;;29801:11:0::1;::::0;:24:::1;::::0;7163:18:1;;29801:60:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;29894:19:0::1;29904:9:::0;29894:7;:19:::1;:::i;:::-;29874:15;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;29936:7:0::1;::::0;29925:19:::1;::::0;;;:10:::1;:19;::::0;;;;;;;29945:10:::1;29925:31:::0;;;;;;;:44;;;;;;;;:57;;29973:9;;29925:19;:57:::1;::::0;29973:9;;29925:57:::1;:::i;:::-;::::0;;;-1:-1:-1;;30009:7:0::1;::::0;29993:24:::1;::::0;;;:15:::1;:24;::::0;;;;;;;:37;;;;;;;;:50;;30034:9;;29993:24;:50:::1;::::0;30034:9;;29993:50:::1;:::i;:::-;::::0;;;-1:-1:-1;;30060:7:0::1;::::0;30054:14:::1;::::0;;;:5:::1;:14;::::0;;;;:27;;30072:9;;30054:14;:27:::1;::::0;30072:9;;30054:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;30110:7:0::1;::::0;;30094:24:::1;::::0;;;:15:::1;:24;::::0;;;;;;;30119:10:::1;30094:36:::0;;;;;;;;;:62;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;;::::0;;;;;;::::1;;;;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;;30220:7;;30174:54;;8005:25:1;;;8046:18;;;8039:34;;;8089:18;;;8082:34;;;;30119:10:0;30174:54:::1;::::0;7993:2:1;7978:18;30174:54:0::1;;;;;;;29526:710;24268:20:::0;23662:1;24788:7;:22;24605:213;24268:20;29424:812;;:::o;37064:156::-;21841:13;:11;:13::i;:::-;37135:11:::1;37126:5;::::0;::::1;;:20;::::0;::::1;;;;;;:::i;:::-;;37118:29;;;::::0;::::1;;37158:5;:21:::0;;-1:-1:-1;;37158:21:0::1;37166:13;37158:21;::::0;;37197:15:::1;::::0;::::1;::::0;-1:-1:-1;;37197:15:0::1;37064:156::o:0;18051:629::-;18146:15;21427:9;18164:45;;:15;:45;18146:63;;18381:19;18375:4;18368:33;18432:8;18426:4;18419:22;18489:7;18482:4;18476;18466:21;18459:38;18638:8;18591:45;18588:1;18585;18580:67;18281:381;18051:629::o;37734:240::-;21841:13;:11;:13::i;:::-;37831:15:::1;::::0;;37813::::1;37857:19:::0;;;-1:-1:-1;37926:11:0;:40:::1;::::0;-1:-1:-1;;;37926:40:0;;-1:-1:-1;;;;;8319:55:1;;;37926:40:0::1;::::0;::::1;8301:74:1::0;8391:18;;;8384:34;;;37926:11:0;;::::1;::::0;:20:::1;::::0;8274:18:1;;37926:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37802:172;37734:240:::0;:::o;35372:400::-;35471:7;;35428;35460:19;;;:10;:19;;;;;;;;35480:10;35460:31;;;;;;;35492:23;;;:14;:23;;;;;;35460:56;;;;;;;;;:61;;35456:102;;-1:-1:-1;35545:1:0;;35372:400::o;35456:102::-;35705:7;;35570:14;35689:24;;;:15;:24;;;;;;;;35714:14;:23;;;;;;35689:49;;;;;;;;;;35671:14;;;:5;:14;;;;;;35588:10;:19;;;;;35608:10;35588:31;;;;;;;:80;;;;;;;;35570:14;;35689:49;35588:97;;35671:14;35588:97;:::i;:::-;35587:151;;;;:::i;:::-;35570:168;35372:400;-1:-1:-1;;35372:400:0:o;37339:255::-;21841:13;:11;:13::i;:::-;37431::::1;37422:5;::::0;::::1;;:22;::::0;::::1;;;;;;:::i;:::-;;37414:31;;;::::0;::::1;;37471:7;::::0;;37456:23:::1;::::0;;;:14:::1;:23;::::0;;;;;;;;:41;;;37508:5:::1;:23:::0;;-1:-1:-1;;37508:23:0::1;37516:15;37508:23;::::0;;37578:7;;37549:37;;8603:25:1;;;8644:18;;;8637:34;37549:37:0::1;::::0;8576:18:1;37549:37:0::1;;;;;;;37339:255:::0;:::o;18765:466::-;18971:19;18965:4;18958:33;19018:8;19012:4;19005:22;19071:1;19064:4;19058;19048:21;19041:32;19204:8;19158:44;19155:1;19152;19147:66;18765:466::o;31228:881::-;24224:21;:19;:21::i;:::-;31322:1:::1;31311:8;:12;31303:21;;;::::0;::::1;;31368:7;;31357:8;:18;31335:115;;;::::0;-1:-1:-1;;;31335:115:0;;8884:2:1;31335:115:0::1;::::0;::::1;8866:21:1::0;8923:2;8903:18;;;8896:30;8962:34;8942:18;;;8935:62;-1:-1:-1;;;9013:18:1;;;9006:45;9068:19;;31335:115:0::1;8682:411:1::0;31335:115:0::1;31501:7;::::0;31461:22:::1;31486:23:::0;;;:14:::1;:23;::::0;;;;;;;;31542:20;;;:10:::1;:20:::0;;;;;31563:10:::1;31542:32:::0;;;;;;;:48;;;;;;;;;;31520:122:::1;;;::::0;-1:-1:-1;;;31520:122:0;;9300:2:1;31520:122:0::1;::::0;::::1;9282:21:1::0;9339:2;9319:18;;;9312:30;-1:-1:-1;;;9358:18:1;;;9351:50;9418:18;;31520:122:0::1;9098:344:1::0;31520:122:0::1;31655:14;31755:25:::0;;;:15:::1;:25;::::0;;;;;;;:41;;;;;;;;;31743:7:::1;::::0;31737:14;;:5:::1;:14:::0;;;;;;31673:20;;;:10:::1;:20:::0;;;;;31694:10:::1;31673:32:::0;;;;;;;:48;;;;;;;;;;31755:41;;31673:78:::1;::::0;::::1;:::i;:::-;31672:124;;;;:::i;:::-;31829:11;::::0;:36:::1;::::0;-1:-1:-1;;;31829:36:0;;31859:4:::1;31829:36;::::0;::::1;1951:74:1::0;31655:141:0;;-1:-1:-1;31655:141:0;;-1:-1:-1;;;;;31829:11:0;;::::1;::::0;:21:::1;::::0;1924:18:1;;31829:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;31807:124;;;::::0;-1:-1:-1;;;31807:124:0;;9838:2:1;31807:124:0::1;::::0;::::1;9820:21:1::0;9877:2;9857:18;;;9850:30;9916;9896:18;;;9889:58;9964:18;;31807:124:0::1;9636:352:1::0;31807:124:0::1;31995:1;31944:20:::0;;;:10:::1;:20;::::0;;;;;;;31965:10:::1;31944:32:::0;;;;;;;;;:48;;;;;;;;;:52;;;;32007:11:::1;::::0;:40;;-1:-1:-1;;;32007:40:0;;::::1;::::0;::::1;8301:74:1::0;;;;8391:18;;;8384:34;;;-1:-1:-1;;;;;32007:11:0;;::::1;::::0;:20:::1;::::0;8274:18:1;;32007:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;32093:7:0::1;::::0;32065:36:::1;::::0;32073:10:::1;::::0;32065:36:::1;::::0;::::1;::::0;32085:6;8603:25:1;;8659:2;8644:18;;8637:34;8591:2;8576:18;;8429:248;32065:36:0::1;;;;;;;;31292:817;;24268:20:::0;23662:1;24788:7;:22;24605:213;24268:20;31228:881;:::o;17783:102::-;21841:13;:11;:13::i;:::-;17856:21:::1;17874:1;17856:9;:21::i;:::-;17783:102::o:0;30305:774::-;24224:21;:19;:21::i;:::-;30375:15:::1;30366:5;::::0;::::1;;:24;::::0;::::1;;;;;;:::i;:::-;;30358:66;;;::::0;-1:-1:-1;;;30358:66:0;;10195:2:1;30358:66:0::1;::::0;::::1;10177:21:1::0;10234:2;10214:18;;;10207:30;10273:31;10253:18;;;10246:59;10322:18;;30358:66:0::1;9993:353:1::0;30358:66:0::1;30475:7;::::0;30435:22:::1;30460:23:::0;;;:14:::1;:23;::::0;;;;;;;;30516:10:::1;:19:::0;;;;;30536:10:::1;30516:31:::0;;;;;;;:47;;;;;;;;;;30494:121:::1;;;::::0;-1:-1:-1;;;30494:121:0;;9300:2:1;30494:121:0::1;::::0;::::1;9282:21:1::0;9339:2;9319:18;;;9312:30;-1:-1:-1;;;9358:18:1;;;9351:50;9418:18;;30494:121:0::1;9098:344:1::0;30494:121:0::1;30743:7;::::0;30628:14:::1;30727:24:::0;;;:15:::1;:24;::::0;;;;;;;:40;;;;;;;;;30709:14;;;:5:::1;:14:::0;;;;;;30646:10:::1;:19:::0;;;;;30666:10:::1;30646:31:::0;;;;;;;:47;;;;;;;;;30628:14;;30727:40;30646:77:::1;::::0;30709:14;30646:77:::1;:::i;:::-;30645:122;;;;:::i;:::-;30800:11;::::0;:36:::1;::::0;-1:-1:-1;;;30800:36:0;;30830:4:::1;30800:36;::::0;::::1;1951:74:1::0;30628:139:0;;-1:-1:-1;30628:139:0;;-1:-1:-1;;;;;30800:11:0;;::::1;::::0;:21:::1;::::0;1924:18:1;;30800:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;30778:124;;;::::0;-1:-1:-1;;;30778:124:0;;9838:2:1;30778:124:0::1;::::0;::::1;9820:21:1::0;9877:2;9857:18;;;9850:30;9916;9896:18;;;9889:58;9964:18;;30778:124:0::1;9636:352:1::0;30778:124:0::1;30926:7;::::0;30965:1:::1;30915:19:::0;;;:10:::1;:19;::::0;;;;;;;30935:10:::1;30915:31:::0;;;;;;;;;:47;;;;;;;;;:51;;;;30977:11:::1;::::0;:40;;-1:-1:-1;;;30977:40:0;;::::1;::::0;::::1;8301:74:1::0;;;;8391:18;;;8384:34;;;-1:-1:-1;;;;;30977:11:0;;::::1;::::0;:20:::1;::::0;8274:18:1;;30977:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;31063:7:0::1;::::0;31035:36:::1;::::0;31043:10:::1;::::0;31035:36:::1;::::0;::::1;::::0;31055:6;8603:25:1;;8659:2;8644:18;;8637:34;8591:2;8576:18;;8429:248;31035:36:0::1;;;;;;;;30347:732;;24268:20:::0;23662:1;24788:7;:22;24605:213;35945:506;36010:7;36049:1;36038:8;:12;36030:21;;;;;;36082:7;;36070:8;:19;;36062:54;;;;-1:-1:-1;;;36062:54:0;;10553:2:1;36062:54:0;;;10535:21:1;10592:2;10572:18;;;10565:30;10631:24;10611:18;;;10604:52;10673:18;;36062:54:0;10351:346:1;36062:54:0;36133:20;;;;:10;:20;;;;;;;;36154:10;36133:32;;;;;;;36166:24;;;:14;:24;;;;;;36133:58;;;;;;;;:63;;36129:104;;-1:-1:-1;36220:1:0;;35945:506;-1:-1:-1;35945:506:0:o;36129:104::-;36245:14;36366:25;;;:15;:25;;;;;;;;36392:14;:24;;;;;;36366:51;;;;;;;;;;36354:7;;36348:14;;:5;:14;;;;;;36263:20;;;:10;:20;;;;;36284:10;36263:32;;;;;;;:82;;;;;;;;;;;:99;;36348:14;36263:99;:::i;:::-;36262:155;;;;:::i;:::-;36245:172;35945:506;-1:-1:-1;;;35945:506:0:o;28317:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32947:469::-;33009:7;;;33086:285;33161:7;;33145:24;;;;:15;:24;;;;;;;;-1:-1:-1;;;;;33145:31:0;;;;;;;;;:38;33141:42;;33086:285;;;33264:7;;33253:19;;;;:10;:19;;;;;;;;-1:-1:-1;;;;;33253:26:0;;;;;;;;;;;33302:24;;;:15;:24;;;;;:31;;;;;;;;:34;;33334:1;;33302:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;33253:102;;;;;;;;;;;;;33240:115;;;;;33202:3;;33086:285;;;-1:-1:-1;33399:9:0;32947:469;-1:-1:-1;;32947:469:0:o;34180:419::-;34307:24;34368:9;:16;34354:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34354:31:0;;34344:41;;34426:9;34421:135;34445:9;:16;34441:1;:20;34421:135;;;34511:7;;34500:19;;;;:10;:19;;;;;;;;-1:-1:-1;;;;;34500:26:0;;;;;;;;;34527:12;;34500:26;;:19;34527:9;;34537:1;;34527:12;;;;;;:::i;:::-;;;;;;;34500:40;;;;;;;;;;;;34487:7;34495:1;34487:10;;;;;;;;:::i;:::-;;;;;;;;;;:53;34463:3;;34421:135;;36804:192;21841:13;:11;:13::i;:::-;36874:15:::1;36865:5;::::0;::::1;;:24;::::0;::::1;;;;;;:::i;:::-;;36857:33;;;::::0;::::1;;36901:7;:9:::0;;;:7:::1;:9;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;36921:5:0::1;:19:::0;;-1:-1:-1;;36921:19:0::1;::::0;;36980:7:::1;::::0;36966:22:::1;::::0;598:25:1;;;36966:22:0::1;::::0;586:2:1;571:18;36966:22:0::1;;;;;;;36804:192::o:0;19422:724::-;21841:13;:11;:13::i;:::-;19660:19:::1;19654:4;19647:33;19707:12;19701:4;19694:26;19770:4;19764;19754:21;19878:12;19872:19;19859:11;19856:36;19853:160;;;19925:10;19919:4;19912:24;19993:4;19987;19980:18;19853:160;20092:1;20071:23:::0;;20115::::1;20125:12:::0;20115:9:::1;:23::i;17357:358::-:0;21841:13;:11;:13::i;:::-;17532:8:::1;17528:2;17524:17;17514:153;;17575:10;17569:4;17562:24;17647:4;17641;17634:18;17514:153;17688:19;17698:8;17688:9;:19::i;35063:167::-:0;35207:7;;35191:24;;;;:15;:24;;;;;;;;-1:-1:-1;;;;;35191:31:0;;;;;;;;;;35184:38;;;;;;;;;;;;;;;;;35151:15;;35184:38;;;35191:31;35184:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35063:167;;;:::o;24304:293::-;23706:1;24438:7;;:19;24430:63;;;;-1:-1:-1;;;24430:63:0;;11176:2:1;24430:63:0;;;11158:21:1;11215:2;11195:18;;;11188:30;11254:33;11234:18;;;11227:61;11305:18;;24430:63:0;10974:355:1;24430:63:0;23706:1;24571:7;:18;24304:293::o;16617:373::-;-1:-1:-1;;16827:27:0;16817:8;16814:41;16804:168;;16889:10;16883:4;16876:24;16952:4;16946;16939:18;16050:506;-1:-1:-1;;16433:16:0;;-1:-1:-1;;;;;16287:26:0;;;;;;16393:38;16390:1;;16382:78;16511:27;16050:506::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:180::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;-1:-1:-1;418:23:1;;267:180;-1:-1:-1;267:180:1:o;634:196::-;702:20;;-1:-1:-1;;;;;751:54:1;;741:65;;731:93;;820:1;817;810:12;731:93;634:196;;;:::o;835:186::-;894:6;947:2;935:9;926:7;922:23;918:32;915:52;;;963:1;960;953:12;915:52;986:29;1005:9;986:29;:::i;1026:254::-;1094:6;1102;1155:2;1143:9;1134:7;1130:23;1126:32;1123:52;;;1171:1;1168;1161:12;1123:52;1194:29;1213:9;1194:29;:::i;:::-;1184:39;1270:2;1255:18;;;;1242:32;;-1:-1:-1;;;1026:254:1:o;1285:322::-;1362:6;1370;1378;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1483:9;1470:23;1460:33;;1512:38;1546:2;1535:9;1531:18;1512:38;:::i;:::-;1502:48;;1597:2;1586:9;1582:18;1569:32;1559:42;;1285:322;;;;;:::o;2036:127::-;2097:10;2092:3;2088:20;2085:1;2078:31;2128:4;2125:1;2118:15;2152:4;2149:1;2142:15;2168:1189;2261:6;2269;2322:2;2310:9;2301:7;2297:23;2293:32;2290:52;;;2338:1;2335;2328:12;2290:52;2361:29;2380:9;2361:29;:::i;:::-;2351:39;;2409:2;2462;2451:9;2447:18;2434:32;2485:18;2526:2;2518:6;2515:14;2512:34;;;2542:1;2539;2532:12;2512:34;2580:6;2569:9;2565:22;2555:32;;2625:7;2618:4;2614:2;2610:13;2606:27;2596:55;;2647:1;2644;2637:12;2596:55;2683:2;2670:16;2705:2;2701;2698:10;2695:36;;;2711:18;;:::i;:::-;2757:2;2754:1;2750:10;2789:2;2783:9;2852:2;2848:7;2843:2;2839;2835:11;2831:25;2823:6;2819:38;2907:6;2895:10;2892:22;2887:2;2875:10;2872:18;2869:46;2866:72;;;2918:18;;:::i;:::-;2954:2;2947:22;3004:18;;;3038:15;;;;-1:-1:-1;3080:11:1;;;3076:20;;;3108:19;;;3105:39;;;3140:1;3137;3130:12;3105:39;3164:11;;;;3184:142;3200:6;3195:3;3192:15;3184:142;;;3266:17;;3254:30;;3217:12;;;;3304;;;;3184:142;;;3345:6;3335:16;;;;;;;;2168:1189;;;;;:::o;3362:632::-;3533:2;3585:21;;;3655:13;;3558:18;;;3677:22;;;3504:4;;3533:2;3756:15;;;;3730:2;3715:18;;;3504:4;3799:169;3813:6;3810:1;3807:13;3799:169;;;3874:13;;3862:26;;3943:15;;;;3908:12;;;;3835:1;3828:9;3799:169;;;-1:-1:-1;3985:3:1;;3362:632;-1:-1:-1;;;;;;3362:632:1:o;3999:127::-;4060:10;4055:3;4051:20;4048:1;4041:31;4091:4;4088:1;4081:15;4115:4;4112:1;4105:15;4131:338;4273:2;4258:18;;4306:1;4295:13;;4285:144;;4351:10;4346:3;4342:20;4339:1;4332:31;4386:4;4383:1;4376:15;4414:4;4411:1;4404:15;4285:144;4438:25;;;4131:338;:::o;4924:643::-;5093:2;5145:21;;;5215:13;;5118:18;;;5237:22;;;5064:4;;5093:2;5316:15;;;;5290:2;5275:18;;;5064:4;5359:182;5373:6;5370:1;5367:13;5359:182;;;5438:13;;5453:6;5434:26;5422:39;;5516:15;;;;5481:12;;;;5395:1;5388:9;5359:182;;6328:127;6389:10;6384:3;6380:20;6377:1;6370:31;6420:4;6417:1;6410:15;6444:4;6441:1;6434:15;6460:128;6527:9;;;6548:11;;;6545:37;;;6562:18;;:::i;6593:168::-;6666:9;;;6697;;6714:15;;;6708:22;;6694:37;6684:71;;6735:18;;:::i;6766:217::-;6806:1;6832;6822:132;;6876:10;6871:3;6867:20;6864:1;6857:31;6911:4;6908:1;6901:15;6939:4;6936:1;6929:15;6822:132;-1:-1:-1;6968:9:1;;6766:217::o;7391:277::-;7458:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:52;;;7527:1;7524;7517:12;7479:52;7559:9;7553:16;7612:5;7605:13;7598:21;7591:5;7588:32;7578:60;;7634:1;7631;7624:12;7673:125;7738:9;;;7759:10;;;7756:36;;;7772:18;;:::i;9447:184::-;9517:6;9570:2;9558:9;9549:7;9545:23;9541:32;9538:52;;;9586:1;9583;9576:12;9538:52;-1:-1:-1;9609:16:1;;9447:184;-1:-1:-1;9447:184:1:o;10702:127::-;10763:10;10758:3;10754:20;10751:1;10744:31;10794:4;10791:1;10784:15;10818:4;10815:1;10808:15;10834:135;10873:3;10894:17;;;10891:43;;10914:18;;:::i;:::-;-1:-1:-1;10961:1:1;10950:13;;10834:135::o

Swarm Source

ipfs://46fc0e7602f6fcb17f2a6546491e3fa0d6d1827e73068c40b038b8934deace36

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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