More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 26 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Open Betting | 17793399 | 552 days ago | IN | 0 ETH | 0.00124255 | ||||
Resolve Bet | 17793394 | 552 days ago | IN | 0 ETH | 0.00143569 | ||||
Close Betting | 17787588 | 552 days ago | IN | 0 ETH | 0.00153258 | ||||
Murder Wager | 17780193 | 554 days ago | IN | 0 ETH | 0.00590976 | ||||
Open Betting | 17777945 | 554 days ago | IN | 0 ETH | 0.00108069 | ||||
Blood Money | 17777936 | 554 days ago | IN | 0 ETH | 0.00361356 | ||||
Resolve Bet | 17777841 | 554 days ago | IN | 0 ETH | 0.00187392 | ||||
Close Betting | 17771196 | 555 days ago | IN | 0 ETH | 0.00226051 | ||||
Murder Wager | 17765752 | 556 days ago | IN | 0 ETH | 0.00399794 | ||||
Murder Wager | 17765748 | 556 days ago | IN | 0 ETH | 0.00405399 | ||||
Murder Wager | 17765745 | 556 days ago | IN | 0 ETH | 0.00410251 | ||||
Murder Wager | 17765744 | 556 days ago | IN | 0 ETH | 0.00402455 | ||||
Murder Wager | 17765744 | 556 days ago | IN | 0 ETH | 0.00483952 | ||||
Murder Wager | 17764943 | 556 days ago | IN | 0 ETH | 0.00782659 | ||||
Open Betting | 17764908 | 556 days ago | IN | 0 ETH | 0.00119243 | ||||
Resolve Bet | 17763692 | 556 days ago | IN | 0 ETH | 0.00307842 | ||||
Close Betting | 17759549 | 556 days ago | IN | 0 ETH | 0.00086921 | ||||
Murder Wager | 17759517 | 556 days ago | IN | 0 ETH | 0.00256691 | ||||
Murder Wager | 17759500 | 556 days ago | IN | 0 ETH | 0.00321111 | ||||
Murder Wager | 17758587 | 557 days ago | IN | 0 ETH | 0.0040561 | ||||
Murder Wager | 17757414 | 557 days ago | IN | 0 ETH | 0.00656332 | ||||
Murder Wager | 17757406 | 557 days ago | IN | 0 ETH | 0.00734415 | ||||
Murder Wager | 17757366 | 557 days ago | IN | 0 ETH | 0.00313956 | ||||
Murder Wager | 17757329 | 557 days ago | IN | 0 ETH | 0.00613314 | ||||
Open Betting | 17757314 | 557 days ago | IN | 0 ETH | 0.00144392 |
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
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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.