More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 461,121 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 53966995 | 11 days ago | IN | 0 AVAX | 0.00257823 | ||||
Claim | 53966882 | 11 days ago | IN | 0 AVAX | 0.00089376 | ||||
Claim | 43250289 | 268 days ago | IN | 0 AVAX | 0.00086514 | ||||
Unstake | 42951794 | 275 days ago | IN | 0 AVAX | 0.00101349 | ||||
Unstake | 42951791 | 275 days ago | IN | 0 AVAX | 0.0017225 | ||||
Unstake | 42951681 | 275 days ago | IN | 0 AVAX | 0.0017225 | ||||
Unstake | 42951679 | 275 days ago | IN | 0 AVAX | 0.0017225 | ||||
Unstake | 42951677 | 275 days ago | IN | 0 AVAX | 0.0017225 | ||||
Unstake | 42951675 | 275 days ago | IN | 0 AVAX | 0.0017225 | ||||
Unstake | 42951632 | 275 days ago | IN | 0 AVAX | 0.00217565 | ||||
Unstake | 42950191 | 276 days ago | IN | 0 AVAX | 0.00134998 | ||||
Claim | 40400264 | 336 days ago | IN | 0 AVAX | 0.00086514 | ||||
Claim | 39928703 | 347 days ago | IN | 0 AVAX | 0.00086514 | ||||
Claim | 39801156 | 350 days ago | IN | 0 AVAX | 0.00086514 | ||||
Unstake | 38958727 | 370 days ago | IN | 0 AVAX | 0.00388044 | ||||
Unstake | 38011249 | 392 days ago | IN | 0 AVAX | 0.00424114 | ||||
Claim | 37805385 | 397 days ago | IN | 0 AVAX | 0.00095867 | ||||
Unstake | 37805338 | 397 days ago | IN | 0 AVAX | 0.00217692 | ||||
Claim | 36895375 | 418 days ago | IN | 0 AVAX | 0.00086514 | ||||
Claim | 36852942 | 419 days ago | IN | 0 AVAX | 0.0008165 | ||||
Claim | 36124465 | 437 days ago | IN | 0 AVAX | 0.00086514 | ||||
Claim | 35563725 | 450 days ago | IN | 0 AVAX | 0.00086514 | ||||
Unstake | 35300615 | 456 days ago | IN | 0 AVAX | 0.00101121 | ||||
Unstake | 35300547 | 456 days ago | IN | 0 AVAX | 0.00120124 | ||||
Unstake | 35300533 | 456 days ago | IN | 0 AVAX | 0.00120124 |
Loading...
Loading
Contract Name:
TimeStaking
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at snowscan.xyz on 2021-11-06 */ // SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity 0.7.5; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function add32(uint32 a, uint32 b) internal pure returns (uint32) { uint32 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } interface IERC20 { function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.3._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } function addressToString(address _address) internal pure returns(string memory) { bytes32 _bytes = bytes32(uint256(_address)); bytes memory HEX = "0123456789abcdef"; bytes memory _addr = new bytes(42); _addr[0] = '0'; _addr[1] = 'x'; for(uint256 i = 0; i < 20; i++) { _addr[2+i*2] = HEX[uint8(_bytes[i + 12] >> 4)]; _addr[3+i*2] = HEX[uint8(_bytes[i + 12] & 0x0f)]; } return string(_addr); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) .sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IOwnable { function manager() external view returns (address); function renounceManagement() external; function pushManagement( address newOwner_ ) external; function pullManagement() external; } contract Ownable is IOwnable { address internal _owner; address internal _newOwner; event OwnershipPushed(address indexed previousOwner, address indexed newOwner); event OwnershipPulled(address indexed previousOwner, address indexed newOwner); constructor () { _owner = msg.sender; emit OwnershipPushed( address(0), _owner ); } function manager() public view override returns (address) { return _owner; } modifier onlyManager() { require( _owner == msg.sender, "Ownable: caller is not the owner" ); _; } function renounceManagement() public virtual override onlyManager() { emit OwnershipPushed( _owner, address(0) ); _owner = address(0); } function pushManagement( address newOwner_ ) public virtual override onlyManager() { require( newOwner_ != address(0), "Ownable: new owner is the zero address"); emit OwnershipPushed( _owner, newOwner_ ); _newOwner = newOwner_; } function pullManagement() public virtual override { require( msg.sender == _newOwner, "Ownable: must be new owner to pull"); emit OwnershipPulled( _owner, _newOwner ); _owner = _newOwner; } } interface IMemo { function rebase( uint256 ohmProfit_, uint epoch_) external returns (uint256); function circulatingSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function gonsForBalance( uint amount ) external view returns ( uint ); function balanceForGons( uint gons ) external view returns ( uint ); function index() external view returns ( uint ); } interface IWarmup { function retrieve( address staker_, uint amount_ ) external; } interface IDistributor { function distribute() external returns ( bool ); } contract TimeStaking is Ownable { using SafeMath for uint256; using SafeMath for uint32; using SafeERC20 for IERC20; address public immutable Time; address public immutable Memories; struct Epoch { uint number; uint distribute; uint32 length; uint32 endTime; } Epoch public epoch; address public distributor; address public locker; uint public totalBonus; address public warmupContract; uint public warmupPeriod; constructor ( address _Time, address _Memories, uint32 _epochLength, uint _firstEpochNumber, uint32 _firstEpochTime ) { require( _Time != address(0) ); Time = _Time; require( _Memories != address(0) ); Memories = _Memories; epoch = Epoch({ length: _epochLength, number: _firstEpochNumber, endTime: _firstEpochTime, distribute: 0 }); } struct Claim { uint deposit; uint gons; uint expiry; bool lock; // prevents malicious delays } mapping( address => Claim ) public warmupInfo; /** @notice stake OHM to enter warmup @param _amount uint @return bool */ function stake( uint _amount, address _recipient ) external returns ( bool ) { rebase(); IERC20( Time ).safeTransferFrom( msg.sender, address(this), _amount ); Claim memory info = warmupInfo[ _recipient ]; require( !info.lock, "Deposits for account are locked" ); warmupInfo[ _recipient ] = Claim ({ deposit: info.deposit.add( _amount ), gons: info.gons.add( IMemo( Memories ).gonsForBalance( _amount ) ), expiry: epoch.number.add( warmupPeriod ), lock: false }); IERC20( Memories ).safeTransfer( warmupContract, _amount ); return true; } /** @notice retrieve sOHM from warmup @param _recipient address */ function claim ( address _recipient ) public { Claim memory info = warmupInfo[ _recipient ]; if ( epoch.number >= info.expiry && info.expiry != 0 ) { delete warmupInfo[ _recipient ]; IWarmup( warmupContract ).retrieve( _recipient, IMemo( Memories ).balanceForGons( info.gons ) ); } } /** @notice forfeit sOHM in warmup and retrieve OHM */ function forfeit() external { Claim memory info = warmupInfo[ msg.sender ]; delete warmupInfo[ msg.sender ]; IWarmup( warmupContract ).retrieve( address(this), IMemo( Memories ).balanceForGons( info.gons ) ); IERC20( Time ).safeTransfer( msg.sender, info.deposit ); } /** @notice prevent new deposits to address (protection from malicious activity) */ function toggleDepositLock() external { warmupInfo[ msg.sender ].lock = !warmupInfo[ msg.sender ].lock; } /** @notice redeem sOHM for OHM @param _amount uint @param _trigger bool */ function unstake( uint _amount, bool _trigger ) external { if ( _trigger ) { rebase(); } IERC20( Memories ).safeTransferFrom( msg.sender, address(this), _amount ); IERC20( Time ).safeTransfer( msg.sender, _amount ); } /** @notice returns the sOHM index, which tracks rebase growth @return uint */ function index() public view returns ( uint ) { return IMemo( Memories ).index(); } /** @notice trigger rebase if epoch over */ function rebase() public { if( epoch.endTime <= uint32(block.timestamp) ) { IMemo( Memories ).rebase( epoch.distribute, epoch.number ); epoch.endTime = epoch.endTime.add32( epoch.length ); epoch.number++; if ( distributor != address(0) ) { IDistributor( distributor ).distribute(); } uint balance = contractBalance(); uint staked = IMemo( Memories ).circulatingSupply(); if( balance <= staked ) { epoch.distribute = 0; } else { epoch.distribute = balance.sub( staked ); } } } /** @notice returns contract OHM holdings, including bonuses provided @return uint */ function contractBalance() public view returns ( uint ) { return IERC20( Time ).balanceOf( address(this) ).add( totalBonus ); } /** @notice provide bonus to locked staking contract @param _amount uint */ function giveLockBonus( uint _amount ) external { require( msg.sender == locker ); totalBonus = totalBonus.add( _amount ); IERC20( Memories ).safeTransfer( locker, _amount ); } /** @notice reclaim bonus from locked staking contract @param _amount uint */ function returnLockBonus( uint _amount ) external { require( msg.sender == locker ); totalBonus = totalBonus.sub( _amount ); IERC20( Memories ).safeTransferFrom( locker, address(this), _amount ); } enum CONTRACTS { DISTRIBUTOR, WARMUP, LOCKER } /** @notice sets the contract address for LP staking @param _contract address */ function setContract( CONTRACTS _contract, address _address ) external onlyManager() { if( _contract == CONTRACTS.DISTRIBUTOR ) { // 0 distributor = _address; } else if ( _contract == CONTRACTS.WARMUP ) { // 1 require( warmupContract == address( 0 ), "Warmup cannot be set more than once" ); warmupContract = _address; } else if ( _contract == CONTRACTS.LOCKER ) { // 2 require( locker == address(0), "Locker cannot be set more than once" ); locker = _address; } } /** * @notice set warmup period in epoch's numbers for new stakers * @param _warmupPeriod uint */ function setWarmup( uint _warmupPeriod ) external onlyManager() { warmupPeriod = _warmupPeriod; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_Time","type":"address"},{"internalType":"address","name":"_Memories","type":"address"},{"internalType":"uint32","name":"_epochLength","type":"uint32"},{"internalType":"uint256","name":"_firstEpochNumber","type":"uint256"},{"internalType":"uint32","name":"_firstEpochTime","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"inputs":[],"name":"Memories","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Time","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"number","type":"uint256"},{"internalType":"uint256","name":"distribute","type":"uint256"},{"internalType":"uint32","name":"length","type":"uint32"},{"internalType":"uint32","name":"endTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forfeit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"giveLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"returnLockBonus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TimeStaking.CONTRACTS","name":"_contract","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_warmupPeriod","type":"uint256"}],"name":"setWarmup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleDepositLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_trigger","type":"bool"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"warmupContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"warmupInfo","outputs":[{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"gons","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"lock","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warmupPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b50604051611ac4380380611ac4833981810160405260a081101561003357600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b031916331780825593519596949592949391926001600160a01b0392909216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0385166100af57600080fd5b6001600160601b0319606086901b166080526001600160a01b0384166100d457600080fd5b6001600160601b0319606094851b1660a0526040805160808101825283815260006020820181905263ffffffff95861692820183905292909416939094018390526002919091556003556004805464010000000090920263ffffffff60201b1963ffffffff19909316909317919091169190911790555060805160601c60a05160601c61190a6101ba6000398061041152806105ac528061068d52806107175280610a165280610b225280610dd85280610e565280610fe652806111ad52806112f55250806109205280610cd95280610e0d52806112945280611321525061190a6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638f077b83116100de578063c9f464ff11610097578063ed4acaa811610071578063ed4acaa8146103a4578063f3d86e4a146103ac578063f62ae76a146103b4578063f8e157ea146103d157610173565b8063c9f464ff14610377578063d7b96d4e14610394578063deac361a1461039c57610173565b80638f077b83146102fe578063900cf0cf146103065780639ebea88c1461033a578063a8dd07dc1461035f578063af14052c14610367578063bfe109281461036f57610173565b8063481c6a7511610130578063481c6a75146102295780635a96ac0a146102315780636746f4c2146102395780637acb775714610287578063865e6fd3146102c75780638b7afe2e146102f657610173565b806303c2367014610178578063089208d8146101975780631e83409a1461019f5780632986c0e5146101c5578063367efb62146101df57806346f68ee914610203575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d9565b005b61019561043d565b610195600480360360208110156101b557600080fd5b50356001600160a01b03166104d4565b6101cd610689565b60408051918252519081900360200190f35b6101e7610715565b604080516001600160a01b039092168252519081900360200190f35b6101956004803603602081101561021957600080fd5b50356001600160a01b0316610739565b6101e7610826565b610195610835565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b03166108df565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102b36004803603604081101561029d57600080fd5b50803590602001356001600160a01b0316610909565b604080519115158252519081900360200190f35b610195600480360360408110156102dd57600080fd5b50803560ff1690602001356001600160a01b0316610b55565b6101cd610ccf565b610195610d7b565b61030e610d9f565b60408051948552602085019390935263ffffffff91821684840152166060830152519081900360800190f35b6101956004803603604081101561035057600080fd5b50803590602001351515610dbd565b6101cd610e34565b610195610e3a565b6101e761108e565b6101956004803603602081101561038d57600080fd5b503561109d565b6101e76110ef565b6101cd6110fe565b6101e7611104565b610195611113565b610195600480360360208110156103ca57600080fd5b50356112bd565b6101e761131f565b6006546001600160a01b031633146103f057600080fd5b6007546103fd9082611343565b60075560065461043a906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116836113a4565b50565b6000546001600160a01b0316331461048a576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b6104dc6117d2565b506001600160a01b0381166000908152600a602090815260409182902082516080810184528154815260018201549281019290925260028082015493830184905260039091015460ff1615156060830152549091118015906105415750604081015115155b15610685576001600160a01b038083166000908152600a602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600854848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b1580156105f257600080fd5b505afa158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561066c57600080fd5b505af1158015610680573d6000803e3d6000fd5b505050505b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d602081101561070e57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610786576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107cb5760405162461bcd60e51b81526004018080602001828103825260268152602001806118206026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b0316331461087e5760405162461bcd60e51b81526004018080602001828103825260228152602001806118696022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600a6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b6000610913610e3a565b6109486001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866113fb565b6109506117d2565b506001600160a01b0382166000908152600a602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109f3576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610a0c9087611343565b8152602001610aaf7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051602085015190611343565b8152600954600254602090920191610ac691611343565b8152600060209182018190526001600160a01b038681168252600a8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600854610b4b917f000000000000000000000000000000000000000000000000000000000000000081169116866113a4565b5060019392505050565b6000546001600160a01b03163314610ba2576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b6000826002811115610bb057fe5b1415610bd657600580546001600160a01b0319166001600160a01b038316179055610685565b6001826002811115610be457fe5b1415610c52576008546001600160a01b031615610c325760405162461bcd60e51b81526004018080602001828103825260238152602001806118466023913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b038316179055610685565b6002826002811115610c6057fe5b1415610685576006546001600160a01b031615610cae5760405162461bcd60e51b81526004018080602001828103825260238152602001806117fd6023913960400191505060405180910390fd5b600680546001600160a01b0383166001600160a01b03199091161790555050565b6000610d766007547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d6020811015610d6e57600080fd5b505190611343565b905090565b336000908152600a60205260409020600301805460ff19811660ff90911615179055565b60025460035460045463ffffffff8082169164010000000090041684565b8015610dcb57610dcb610e3a565b610e006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856113fb565b6106856001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633846113a4565b60075481565b60045463ffffffff428116640100000000909204161161108c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663058ecdb46002600101546002600001546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b505050506040513d6020811015610ef657600080fd5b5050600454610f189063ffffffff640100000000820481169181169061145b16565b6004805463ffffffff929092166401000000000267ffffffff00000000199092169190911790556002805460010190556005546001600160a01b031615610fd657600560009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b50505b6000610fe0610ccf565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b5051905080821161107c576000600355610685565b61108682826114be565b60035550505b565b6005546001600160a01b031681565b6000546001600160a01b031633146110ea576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b600955565b6006546001600160a01b031681565b60095481565b6008546001600160a01b031681565b61111b6117d2565b50336000818152600a602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560085492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000000000000000000000000000000000000000000090921692637965d56d92602480840193919291829003018186803b1580156111f357600080fd5b505afa158015611207573d6000803e3d6000fd5b505050506040513d602081101561121d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561126d57600080fd5b505af1158015611281573d6000803e3d6000fd5b5050825161043a92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915033906113a4565b6006546001600160a01b031633146112d457600080fd5b6007546112e190826114be565b60075560065461043a906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911630846113fb565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008282018381101561139d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113f6908490611500565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611455908590611500565b50505050565b600082820163ffffffff808516908216101561139d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061139d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b1565b6060611555826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116489092919063ffffffff16565b8051909150156113f65780806020019051602081101561157457600080fd5b50516113f65760405162461bcd60e51b815260040180806020018281038252602a8152602001806118ab602a913960400191505060405180910390fd5b600081848411156116405760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116055781810151838201526020016115ed565b50505050905090810190601f1680156116325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6060611657848460008561165f565b949350505050565b606061166a856117cc565b6116bb576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106116fa5780518252601f1990920191602091820191016116db565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461175c576040519150601f19603f3d011682016040523d82523d6000602084013e611761565b606091505b509150915081156117755791506116579050565b8051156117855780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156116055781810151838201526020016115ed565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208790bc90f96055e1474dc065b16dc7ea654cf7f56558095fac1d40bdab6f687964736f6c63430007050033000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c3000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c9000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000061314960
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80638f077b83116100de578063c9f464ff11610097578063ed4acaa811610071578063ed4acaa8146103a4578063f3d86e4a146103ac578063f62ae76a146103b4578063f8e157ea146103d157610173565b8063c9f464ff14610377578063d7b96d4e14610394578063deac361a1461039c57610173565b80638f077b83146102fe578063900cf0cf146103065780639ebea88c1461033a578063a8dd07dc1461035f578063af14052c14610367578063bfe109281461036f57610173565b8063481c6a7511610130578063481c6a75146102295780635a96ac0a146102315780636746f4c2146102395780637acb775714610287578063865e6fd3146102c75780638b7afe2e146102f657610173565b806303c2367014610178578063089208d8146101975780631e83409a1461019f5780632986c0e5146101c5578063367efb62146101df57806346f68ee914610203575b600080fd5b6101956004803603602081101561018e57600080fd5b50356103d9565b005b61019561043d565b610195600480360360208110156101b557600080fd5b50356001600160a01b03166104d4565b6101cd610689565b60408051918252519081900360200190f35b6101e7610715565b604080516001600160a01b039092168252519081900360200190f35b6101956004803603602081101561021957600080fd5b50356001600160a01b0316610739565b6101e7610826565b610195610835565b61025f6004803603602081101561024f57600080fd5b50356001600160a01b03166108df565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b6102b36004803603604081101561029d57600080fd5b50803590602001356001600160a01b0316610909565b604080519115158252519081900360200190f35b610195600480360360408110156102dd57600080fd5b50803560ff1690602001356001600160a01b0316610b55565b6101cd610ccf565b610195610d7b565b61030e610d9f565b60408051948552602085019390935263ffffffff91821684840152166060830152519081900360800190f35b6101956004803603604081101561035057600080fd5b50803590602001351515610dbd565b6101cd610e34565b610195610e3a565b6101e761108e565b6101956004803603602081101561038d57600080fd5b503561109d565b6101e76110ef565b6101cd6110fe565b6101e7611104565b610195611113565b610195600480360360208110156103ca57600080fd5b50356112bd565b6101e761131f565b6006546001600160a01b031633146103f057600080fd5b6007546103fd9082611343565b60075560065461043a906001600160a01b037f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c981169116836113a4565b50565b6000546001600160a01b0316331461048a576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b6104dc6117d2565b506001600160a01b0381166000908152600a602090815260409182902082516080810184528154815260018201549281019290925260028082015493830184905260039091015460ff1615156060830152549091118015906105415750604081015115155b15610685576001600160a01b038083166000908152600a602090815260408083208381556001810184905560028101939093556003909201805460ff19169055600854848201518351637965d56d60e01b8152600481019190915292519084169363c3a2a6659387937f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c990921692637965d56d92602480840193919291829003018186803b1580156105f257600080fd5b505afa158015610606573d6000803e3d6000fd5b505050506040513d602081101561061c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561066c57600080fd5b505af1158015610680573d6000803e3d6000fd5b505050505b5050565b60007f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c96001600160a01b0316632986c0e56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d602081101561070e57600080fd5b5051905090565b7f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c981565b6000546001600160a01b03163314610786576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b6001600160a01b0381166107cb5760405162461bcd60e51b81526004018080602001828103825260268152602001806118206026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6001546001600160a01b0316331461087e5760405162461bcd60e51b81526004018080602001828103825260228152602001806118696022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600a6020526000908152604090208054600182015460028301546003909301549192909160ff1684565b6000610913610e3a565b6109486001600160a01b037f000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c3163330866113fb565b6109506117d2565b506001600160a01b0382166000908152600a602090815260409182902082516080810184528154815260018201549281019290925260028101549282019290925260039091015460ff1615801560608301526109f3576040805162461bcd60e51b815260206004820152601f60248201527f4465706f7369747320666f72206163636f756e7420617265206c6f636b656400604482015290519081900360640190fd5b604080516080810190915281518190610a0c9087611343565b8152602001610aaf7f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c96001600160a01b0316631bd39674886040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610a7857600080fd5b505afa158015610a8c573d6000803e3d6000fd5b505050506040513d6020811015610aa257600080fd5b5051602085015190611343565b8152600954600254602090920191610ac691611343565b8152600060209182018190526001600160a01b038681168252600a8352604091829020845181559284015160018401559083015160028301556060909201516003909101805460ff1916911515919091179055600854610b4b917f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c981169116866113a4565b5060019392505050565b6000546001600160a01b03163314610ba2576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b6000826002811115610bb057fe5b1415610bd657600580546001600160a01b0319166001600160a01b038316179055610685565b6001826002811115610be457fe5b1415610c52576008546001600160a01b031615610c325760405162461bcd60e51b81526004018080602001828103825260238152602001806118466023913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b038316179055610685565b6002826002811115610c6057fe5b1415610685576006546001600160a01b031615610cae5760405162461bcd60e51b81526004018080602001828103825260238152602001806117fd6023913960400191505060405180910390fd5b600680546001600160a01b0383166001600160a01b03199091161790555050565b6000610d766007547f000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c36001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d4457600080fd5b505afa158015610d58573d6000803e3d6000fd5b505050506040513d6020811015610d6e57600080fd5b505190611343565b905090565b336000908152600a60205260409020600301805460ff19811660ff90911615179055565b60025460035460045463ffffffff8082169164010000000090041684565b8015610dcb57610dcb610e3a565b610e006001600160a01b037f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c9163330856113fb565b6106856001600160a01b037f000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c31633846113a4565b60075481565b60045463ffffffff428116640100000000909204161161108c577f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c96001600160a01b031663058ecdb46002600101546002600001546040518363ffffffff1660e01b81526004018083815260200182815260200192505050602060405180830381600087803b158015610ecc57600080fd5b505af1158015610ee0573d6000803e3d6000fd5b505050506040513d6020811015610ef657600080fd5b5050600454610f189063ffffffff640100000000820481169181169061145b16565b6004805463ffffffff929092166401000000000267ffffffff00000000199092169190911790556002805460010190556005546001600160a01b031615610fd657600560009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b50505b6000610fe0610ccf565b905060007f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c96001600160a01b0316639358928b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103d57600080fd5b505afa158015611051573d6000803e3d6000fd5b505050506040513d602081101561106757600080fd5b5051905080821161107c576000600355610685565b61108682826114be565b60035550505b565b6005546001600160a01b031681565b6000546001600160a01b031633146110ea576040805162461bcd60e51b8152602060048201819052602482015260008051602061188b833981519152604482015290519081900360640190fd5b600955565b6006546001600160a01b031681565b60095481565b6008546001600160a01b031681565b61111b6117d2565b50336000818152600a602081815260408084208151608081018352815481526001820180548286019081526002840180548487015260038501805460ff8116151560608701529a8a5297875293889055908790559590915560ff1990951690925560085492518251637965d56d60e01b8152600481019190915291516001600160a01b039384169363c3a2a6659330937f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c990921692637965d56d92602480840193919291829003018186803b1580156111f357600080fd5b505afa158015611207573d6000803e3d6000fd5b505050506040513d602081101561121d57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561126d57600080fd5b505af1158015611281573d6000803e3d6000fd5b5050825161043a92506001600160a01b037f000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c316915033906113a4565b6006546001600160a01b031633146112d457600080fd5b6007546112e190826114be565b60075560065461043a906001600160a01b037f000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c98116911630846113fb565b7f000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c381565b60008282018381101561139d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113f6908490611500565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611455908590611500565b50505050565b600082820163ffffffff808516908216101561139d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061139d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b1565b6060611555826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116489092919063ffffffff16565b8051909150156113f65780806020019051602081101561157457600080fd5b50516113f65760405162461bcd60e51b815260040180806020018281038252602a8152602001806118ab602a913960400191505060405180910390fd5b600081848411156116405760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116055781810151838201526020016115ed565b50505050905090810190601f1680156116325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6060611657848460008561165f565b949350505050565b606061166a856117cc565b6116bb576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106116fa5780518252601f1990920191602091820191016116db565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461175c576040519150601f19603f3d011682016040523d82523d6000602084013e611761565b606091505b509150915081156117755791506116579050565b8051156117855780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156116055781810151838201526020016115ed565b3b151590565b6040518060800160405280600081526020016000815260200160008152602001600015158152509056fe4c6f636b65722063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735761726d75702063616e6e6f7420626520736574206d6f7265207468616e206f6e63654f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208790bc90f96055e1474dc065b16dc7ea654cf7f56558095fac1d40bdab6f687964736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c3000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c9000000000000000000000000000000000000000000000000000000000000708000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000061314960
-----Decoded View---------------
Arg [0] : _Time (address): 0xb54f16fB19478766A268F172C9480f8da1a7c9C3
Arg [1] : _Memories (address): 0x136Acd46C134E8269052c62A67042D6bDeDde3C9
Arg [2] : _epochLength (uint32): 28800
Arg [3] : _firstEpochNumber (uint256): 69
Arg [4] : _firstEpochTime (uint32): 1630620000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000b54f16fb19478766a268f172c9480f8da1a7c9c3
Arg [1] : 000000000000000000000000136acd46c134e8269052c62a67042d6bdedde3c9
Arg [2] : 0000000000000000000000000000000000000000000000000000000000007080
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000045
Arg [4] : 0000000000000000000000000000000000000000000000000000000061314960
Deployed Bytecode Sourcemap
20867:6425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25751:208;;;;;;;;;;;;;;;;-1:-1:-1;25751:208:0;;:::i;:::-;;19560:159;;;:::i;23030:341::-;;;;;;;;;;;;;;;;-1:-1:-1;23030:341:0;-1:-1:-1;;;;;23030:341:0;;:::i;24504:97::-;;;:::i;:::-;;;;;;;;;;;;;;;;21044:33;;;:::i;:::-;;;;-1:-1:-1;;;;;21044:33:0;;;;;;;;;;;;;;19727:261;;;;;;;;;;;;;;;;-1:-1:-1;19727:261:0;-1:-1:-1;;;;;19727:261:0;;:::i;19333:90::-;;;:::i;20000:221::-;;;:::i;22069:45::-;;;;;;;;;;;;;;;;-1:-1:-1;22069:45:0;-1:-1:-1;;;;;22069:45:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22235:691;;;;;;;;;;;;;;;;-1:-1:-1;22235:691:0;;;;;;-1:-1:-1;;;;;22235:691:0;;:::i;:::-;;;;;;;;;;;;;;;;;;26475:570;;;;;;;;;;;;;;;;-1:-1:-1;26475:570:0;;;;;;;;-1:-1:-1;;;;;26475:570:0;;:::i;25497:141::-;;;:::i;23876:119::-;;;:::i;21210:18::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24117:271;;;;;;;;;;;;;;;;-1:-1:-1;24117:271:0;;;;;;;;;:::i;21304:22::-;;;:::i;24673:701::-;;;:::i;21237:26::-;;;:::i;27178:111::-;;;;;;;;;;;;;;;;-1:-1:-1;27178:111:0;;:::i;21276:21::-;;;:::i;21375:24::-;;;:::i;21339:29::-;;;:::i;23454:310::-;;;:::i;26074:229::-;;;;;;;;;;;;;;;;-1:-1:-1;26074:229:0;;:::i;21008:29::-;;;:::i;25751:208::-;25833:6;;-1:-1:-1;;;;;25833:6:0;25819:10;:20;25810:31;;;;;;25865:10;;:25;;25881:7;25865:14;:25::i;:::-;25852:10;:38;25934:6;;25901:50;;-1:-1:-1;;;;;25909:8:0;25901:31;;;25934:6;25942:7;25901:31;:50::i;:::-;25751:208;:::o;19560:159::-;19474:6;;-1:-1:-1;;;;;19474:6:0;19484:10;19474:20;19465:67;;;;;-1:-1:-1;;;19465:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19465:67:0;;;;;;;;;;;;;;;19677:1:::1;19661:6:::0;;19644:37:::1;::::0;-1:-1:-1;;;;;19661:6:0;;::::1;::::0;19644:37:::1;::::0;19677:1;;19644:37:::1;19709:1;19692:19:::0;;-1:-1:-1;;;;;;19692:19:0::1;::::0;;19560:159::o;23030:341::-;23086:17;;:::i;:::-;-1:-1:-1;;;;;;23106:24:0;;;;;;:10;:24;;;;;;;;;23086:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23146:12;23086:44;;-1:-1:-1;23146:27:0;;;:47;;-1:-1:-1;23177:11:0;;;;:16;;23146:47;23141:223;;;-1:-1:-1;;;;;23218:24:0;;;;;;;:10;:24;;;;;;;;23211:31;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23211:31:0;;;23266:14;;23339:9;;;;23305:45;;-1:-1:-1;;;23305:45:0;;;;;;;;;;;23266:14;;;;23257:34;;23230:10;;23312:8;23305:32;;;;;;:45;;;;;23218:24;;23305:45;;;;;;:32;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23305:45:0;23257:95;;;-1:-1:-1;;;;;;23257:95:0;;;;;;;-1:-1:-1;;;;;23257:95:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23257:95:0;;;;;;;-1:-1:-1;23257:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23141:223;23030:341;;:::o;24504:97::-;24543:4;24575:8;-1:-1:-1;;;;;24568:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24568:25:0;;-1:-1:-1;24504:97:0;:::o;21044:33::-;;;:::o;19727:261::-;19474:6;;-1:-1:-1;;;;;19474:6:0;19484:10;19474:20;19465:67;;;;;-1:-1:-1;;;19465:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19465:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19830:23:0;::::1;19821:75;;;;-1:-1:-1::0;;;19821:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19929:6;::::0;;19912:36:::1;::::0;-1:-1:-1;;;;;19912:36:0;;::::1;::::0;19929:6;::::1;::::0;19912:36:::1;::::0;::::1;19959:9;:21:::0;;-1:-1:-1;;;;;;19959:21:0::1;-1:-1:-1::0;;;;;19959:21:0;;;::::1;::::0;;;::::1;::::0;;19727:261::o;19333:90::-;19382:7;19409:6;-1:-1:-1;;;;;19409:6:0;19333:90;:::o;20000:221::-;20084:9;;-1:-1:-1;;;;;20084:9:0;20070:10;:23;20061:71;;;;-1:-1:-1;;;20061:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20173:9;;;20165:6;;20148:36;;-1:-1:-1;;;;;20173:9:0;;;;20165:6;;;;20148:36;;;20204:9;;;20195:18;;-1:-1:-1;;;;;;20195:18:0;-1:-1:-1;;;;;20204:9:0;;;20195:18;;;;;;20000:221::o;22069:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22235:691::-;22305:4;22323:8;:6;:8::i;:::-;22352:69;-1:-1:-1;;;;;22360:4:0;22352:31;22385:10;22405:4;22412:7;22352:31;:69::i;:::-;22434:17;;:::i;:::-;-1:-1:-1;;;;;;22454:24:0;;;;;;:10;:24;;;;;;;;;22434:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:56;;;;;-1:-1:-1;;;22489:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22585:232;;;;;;;;;22616:12;;22585:232;;22616:27;;22634:7;22616:16;:27::i;:::-;22585:232;;;;22664:60;22686:8;-1:-1:-1;;;;;22679:32:0;;22713:7;22679:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22679:43:0;;22664:9;;;;:13;:60::i;:::-;22585:232;;22765:12;;22747:5;:12;22585:232;;;;;22747:32;;:16;:32::i;:::-;22585:232;;22800:5;22585:232;;;;;;;-1:-1:-1;;;;;22558:24:0;;;;;:10;:24;;;;;;;:259;;;;;;;;22585:232;22558:259;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22558:259:0;;;;;;;;;;22871:14;;22838:58;;22846:8;22838:31;;;22871:14;22887:7;22838:31;:58::i;:::-;-1:-1:-1;22914:4:0;;22235:691;-1:-1:-1;;;22235:691:0:o;26475:570::-;19474:6;;-1:-1:-1;;;;;19474:6:0;19484:10;19474:20;19465:67;;;;;-1:-1:-1;;;19465:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19465:67:0;;;;;;;;;;;;;;;26588:21:::1;26575:9;:34;;;;;;;;;26571:467;;;26632:11;:22:::0;;-1:-1:-1;;;;;;26632:22:0::1;-1:-1:-1::0;;;;;26632:22:0;::::1;;::::0;;26571:467:::1;;;26690:16;26677:9;:29;;;;;;;;;26672:366;;;26738:14;::::0;-1:-1:-1;;;;;26738:14:0::1;:30:::0;26729:80:::1;;;;-1:-1:-1::0;;;26729:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26824:14;:25:::0;;-1:-1:-1;;;;;;26824:25:0::1;-1:-1:-1::0;;;;;26824:25:0;::::1;;::::0;;26672:366:::1;;;26885:16;26872:9;:29;;;;;;;;;26867:171;;;26933:6;::::0;-1:-1:-1;;;;;26933:6:0::1;:20:::0;26924:70:::1;;;;-1:-1:-1::0;;;26924:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27009:6;:17:::0;;-1:-1:-1;;;;;27009:17:0;::::1;-1:-1:-1::0;;;;;;27009:17:0;;::::1;;::::0;;26475:570;;:::o;25497:141::-;25546:4;25571:59;25618:10;;25579:4;-1:-1:-1;;;;;25571:24:0;;25605:4;25571:41;;;;;;;;;;;;;-1:-1:-1;;;;;25571:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25571:41:0;;:45;:59::i;:::-;25564:66;;25497:141;:::o;23876:119::-;23970:10;23958:24;;;;:10;:24;;;;;:29;;;;-1:-1:-1;;23925:62:0;;23958:29;;;;23957:30;23925:62;;;23876:119::o;21210:18::-;;;;;;;;;;;;;;;;;:::o;24117:271::-;24190:8;24185:51;;;24216:8;:6;:8::i;:::-;24246:73;-1:-1:-1;;;;;24254:8:0;24246:35;24283:10;24303:4;24310:7;24246:35;:73::i;:::-;24330:50;-1:-1:-1;;;;;24338:4:0;24330:27;24359:10;24371:7;24330:27;:50::i;21304:22::-;;;;:::o;24673:701::-;24713:13;;:40;24737:15;24713:40;;:13;;;;;:40;24709:658;;24780:8;-1:-1:-1;;;;;24773:24:0;;24799:5;:16;;;24817:5;:12;;;24773:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24885:12:0;;24864:35;;24885:12;24864:13;;;;;;24885:12;;;24864:19;:35;:::i;:::-;24848:13;:51;;;;;;;;;-1:-1:-1;;24848:51:0;;;;;;;;;:5;24914:14;;-1:-1:-1;24914:14:0;;;24962:11;;-1:-1:-1;;;;;24962:11:0;:25;24957:108;;25023:11;;;;;;;;;-1:-1:-1;;;;;25023:11:0;-1:-1:-1;;;;;25009:38:0;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24957:108:0;25081:12;25096:17;:15;:17::i;:::-;25081:32;;25128:11;25149:8;-1:-1:-1;;;;;25142:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25142:37:0;;-1:-1:-1;25200:17:0;;;25196:160;;25258:1;25239:16;:20;25196:160;;;25319:21;:7;25332:6;25319:11;:21::i;:::-;25300:16;:40;24709:658;;;24673:701::o;21237:26::-;;;-1:-1:-1;;;;;21237:26:0;;:::o;27178:111::-;19474:6;;-1:-1:-1;;;;;19474:6:0;19484:10;19474:20;19465:67;;;;;-1:-1:-1;;;19465:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19465:67:0;;;;;;;;;;;;;;;27253:12:::1;:28:::0;27178:111::o;21276:21::-;;;-1:-1:-1;;;;;21276:21:0;;:::o;21375:24::-;;;;:::o;21339:29::-;;;-1:-1:-1;;;;;21339:29:0;;:::o;23454:310::-;23493:17;;:::i;:::-;-1:-1:-1;23525:10:0;23513:24;;;;:10;:24;;;;;;;;23493:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23555:24;;;;;;23548:31;;;;;;;;;;;;-1:-1:-1;;23548:31:0;;;;;;23601:14;;23677:9;;23643:45;;-1:-1:-1;;;23643:45:0;;;;;;;;;;;-1:-1:-1;;;;;23601:14:0;;;;23592:34;;23636:4;;23650:8;23643:32;;;;;;:45;;;;;23513:24;;23643:45;;;;;;:32;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23643:45:0;23592:98;;;-1:-1:-1;;;;;;23592:98:0;;;;;;;-1:-1:-1;;;;;23592:98:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23592:98:0;;;;;;;-1:-1:-1;23592:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23742:12:0;;23701:55;;-1:-1:-1;;;;;;23709:4:0;23701:27;;-1:-1:-1;23730:10:0;;23701:27;:55::i;26074:229::-;26158:6;;-1:-1:-1;;;;;26158:6:0;26144:10;:20;26135:31;;;;;;26190:10;;:25;;26206:7;26190:14;:25::i;:::-;26177:10;:38;26263:6;;26226:69;;-1:-1:-1;;;;;26234:8:0;26226:35;;;26263:6;26279:4;26286:7;26226:35;:69::i;21008:29::-;;;:::o;336:181::-;394:7;426:5;;;450:6;;;;442:46;;;;;-1:-1:-1;;;442:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:1;336:181;-1:-1:-1;;;336:181:0:o;15589:177::-;15699:58;;;-1:-1:-1;;;;;15699:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15699:58:0;-1:-1:-1;;;15699:58:0;;;15672:86;;15692:5;;15672:19;:86::i;:::-;15589:177;;;:::o;15774:205::-;15902:68;;;-1:-1:-1;;;;;15902:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15902:68:0;-1:-1:-1;;;15902:68:0;;;15875:96;;15895:5;;15875:19;:96::i;:::-;15774:205;;;;:::o;523:179::-;581:6;611:5;;;635:6;;;;;;;;;627:46;;;;;-1:-1:-1;;;627:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;985:136;1043:7;1070:43;1074:1;1077;1070:43;;;;;;;;;;;;;;;;;:3;:43::i;17944:761::-;18368:23;18394:69;18422:4;18394:69;;;;;;;;;;;;;;;;;18402:5;-1:-1:-1;;;;;18394:27:0;;;:69;;;;;:::i;:::-;18478:17;;18368:95;;-1:-1:-1;18478:21:0;18474:224;;18620:10;18609:30;;;;;;;;;;;;;;;-1:-1:-1;18609:30:0;18601:85;;;;-1:-1:-1;;;18601:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:192;1510:7;1546:12;1538:6;;;;1530:29;;;;-1:-1:-1;;;1530:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1582:5:0;;;1424:192::o;9426:230::-;9563:12;9595:53;9618:6;9626:4;9632:1;9635:12;9595:22;:53::i;:::-;9588:60;9426:230;-1:-1:-1;;;;9426:230:0:o;11097:1025::-;11273:12;11306:18;11317:6;11306:10;:18::i;:::-;11298:60;;;;;-1:-1:-1;;;11298:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11432:12;11446:23;11473:6;-1:-1:-1;;;;;11473:11:0;11493:8;11504:4;11473:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11473:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11431:78;;;;11524:7;11520:595;;;11555:10;-1:-1:-1;11548:17:0;;-1:-1:-1;11548:17:0;11520:595;11669:17;;:21;11665:439;;11932:10;11926:17;11993:15;11980:10;11976:2;11972:19;11965:44;11880:148;12068:20;;-1:-1:-1;;;12068:20:0;;;;;;;;;;;;;;;;;12075:12;;12068:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6915:422;7282:20;7321:8;;;6915:422::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://8790bc90f96055e1474dc065b16dc7ea654cf7f56558095fac1d40bdab6f6879
Loading...
Loading
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.