Source Code
Latest 25 from a total of 165 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 13404284 | 1631 days ago | IN | 0 ETH | 0.00201748 | ||||
| Claim | 12466785 | 1776 days ago | IN | 0 ETH | 0.0149361 | ||||
| Claim | 12459653 | 1777 days ago | IN | 0 ETH | 0.00355986 | ||||
| Claim | 12453437 | 1778 days ago | IN | 0 ETH | 0.01250902 | ||||
| Deposit | 12427779 | 1782 days ago | IN | 0 ETH | 0.0040625 | ||||
| Add Winners | 12297248 | 1802 days ago | IN | 0 ETH | 0.02369833 | ||||
| Claim | 12191454 | 1819 days ago | IN | 0 ETH | 0.01182148 | ||||
| Add Winners | 12155263 | 1824 days ago | IN | 0 ETH | 0.01081525 | ||||
| Claim | 12153644 | 1825 days ago | IN | 0 ETH | 0.0046552 | ||||
| Claim | 12152488 | 1825 days ago | IN | 0 ETH | 0.00538257 | ||||
| Claim | 12152469 | 1825 days ago | IN | 0 ETH | 0.00538257 | ||||
| Claim | 12146457 | 1826 days ago | IN | 0 ETH | 0.00477158 | ||||
| Claim | 12146278 | 1826 days ago | IN | 0 ETH | 0.0046261 | ||||
| Claim | 12146038 | 1826 days ago | IN | 0 ETH | 0.00608085 | ||||
| Claim | 12146027 | 1826 days ago | IN | 0 ETH | 0.00610995 | ||||
| Withdraw | 12127856 | 1829 days ago | IN | 0 ETH | 0.00446675 | ||||
| Add Winners | 12110548 | 1831 days ago | IN | 0 ETH | 0.02018925 | ||||
| Deposit | 12085231 | 1835 days ago | IN | 0 ETH | 0.01031626 | ||||
| Deposit | 12084374 | 1835 days ago | IN | 0 ETH | 0.01776691 | ||||
| Deposit | 12082641 | 1836 days ago | IN | 0 ETH | 0.01015404 | ||||
| Deposit | 12080702 | 1836 days ago | IN | 0 ETH | 0.00674323 | ||||
| Deposit | 12080436 | 1836 days ago | IN | 0 ETH | 0.00950323 | ||||
| Deposit | 12080420 | 1836 days ago | IN | 0 ETH | 0.00688869 | ||||
| Withdraw | 12045931 | 1841 days ago | IN | 0 ETH | 0.00834288 | ||||
| Withdraw | 12034786 | 1843 days ago | IN | 0 ETH | 0.00758851 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LCPSignaling
Compiler Version
v0.5.12+commit.7709ece9
Optimization Enabled:
Yes with 9999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-02-09
*/
pragma solidity >=0.5.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
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;
}
/**
* @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.
*
* _Available since v2.4.0._
*/
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.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
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;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. 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 mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. 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.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
/**
* @dev Interface of the ERC20 standard as defined in the EIP. Does not include
* the optional functions; to access them see {ERC20Detailed}.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @dev Collection of functions related to the address type
*/
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) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account) internal pure returns (address payable) {
return address(uint160(account));
}
/**
* @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} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount)("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
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));
}
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.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "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");
}
}
}
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () internal { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() internal view returns (address payable) {
return msg.sender;
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @title Roles
* @dev Library for managing addresses assigned to a Role.
*/
library Roles {
struct Role {
mapping (address => bool) bearer;
}
/**
* @dev Give an account access to this role.
*/
function add(Role storage role, address account) internal {
require(!has(role, account), "Roles: account already has role");
role.bearer[account] = true;
}
/**
* @dev Remove an account's access to this role.
*/
function remove(Role storage role, address account) internal {
require(has(role, account), "Roles: account does not have role");
role.bearer[account] = false;
}
/**
* @dev Check if an account has this role.
* @return bool
*/
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0), "Roles: account is the zero address");
return role.bearer[account];
}
}
contract PauserRole is Context {
using Roles for Roles.Role;
event PauserAdded(address indexed account);
event PauserRemoved(address indexed account);
Roles.Role private _pausers;
constructor () internal {
_addPauser(_msgSender());
}
modifier onlyPauser() {
require(isPauser(_msgSender()), "PauserRole: caller does not have the Pauser role");
_;
}
function isPauser(address account) public view returns (bool) {
return _pausers.has(account);
}
function addPauser(address account) public onlyPauser {
_addPauser(account);
}
function renouncePauser() public {
_removePauser(_msgSender());
}
function _addPauser(address account) internal {
_pausers.add(account);
emit PauserAdded(account);
}
function _removePauser(address account) internal {
_pausers.remove(account);
emit PauserRemoved(account);
}
}
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
contract Pausable is Context, PauserRole {
/**
* @dev Emitted when the pause is triggered by a pauser (`account`).
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by a pauser (`account`).
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state. Assigns the Pauser role
* to the deployer.
*/
constructor () internal {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!_paused, "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(_paused, "Pausable: not paused");
_;
}
/**
* @dev Called by a pauser to pause, triggers stopped state.
*/
function pause() public onlyPauser whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Called by a pauser to unpause, returns to normal state.
*/
function unpause() public onlyPauser whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
/**
* @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].
*
* _Since v2.5.0:_ this module is now much more gas efficient, given net gas
* metering changes introduced in the Istanbul hardfork.
*/
contract ReentrancyGuard {
bool private _notEntered;
constructor () internal {
// Storing an initial 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 percetange 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.
_notEntered = true;
}
/**
* @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 make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_notEntered = false;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Returns true if the caller is the current owner.
*/
function isOwner() public view returns (bool) {
return _msgSender() == _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IERC1155 {
function lcpMint(
uint256 id,
address to,
uint256 amount,
bytes calldata data
) external;
}
contract LORTokenWrapper {
using SafeMath for uint256;
using SafeERC20 for IERC20;
IERC20 public lorToken;
uint256 private _totalSupply;
// Objects balances [id][address] => balance
mapping(uint256 => mapping(address => uint256)) internal _balances;
mapping(uint256 => uint256) private _totalDeposits;
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
function totalDeposits(uint256 id) public view returns (uint256) {
return _totalDeposits[id];
}
function balanceOf(address account, uint256 id) public view returns (uint256) {
return _balances[id][account];
}
function deposit(uint256 id, uint256 amount) public {
_totalSupply = _totalSupply.add(amount);
_totalDeposits[id] = _totalDeposits[id].add(amount);
_balances[id][msg.sender] = _balances[id][msg.sender].add(amount);
lorToken.transferFrom(msg.sender, address(this), amount);
}
function withdraw(uint256 id, uint256 amount) public {
_totalSupply = _totalSupply.sub(amount);
_totalDeposits[id] = _totalDeposits[id].sub(amount);
_balances[id][msg.sender] = _balances[id][msg.sender].sub(amount);
lorToken.transfer(msg.sender, amount);
}
function claim(uint256 id, address account) internal {
uint256 amount = balanceOf(account, id);
_totalSupply = _totalSupply.sub(amount);
_totalDeposits[id] = _totalDeposits[id].sub(amount);
_balances[id][account] = _balances[id][account].sub(amount);
}
}
contract LCPSignaling is LORTokenWrapper, ReentrancyGuard, Pausable, Ownable {
address public lotAddress;
uint256 public lcpEndEpoch;
bool private allowWithdraw;
mapping(address => bool) public protectedTokens;
mapping(uint256 => bool) private _generated;
mapping(uint256 => bool) private _winner;
event Deposited(address indexed user, uint256 id, uint256 amount);
event Withdrawn(address indexed user, uint256 id, uint256 amount);
event Claimed(address indexed user, uint256 id, uint256 amount);
event Generated(address indexed user, uint256 id);
constructor(address _lotAddress, address _lorAddress) public {
lotAddress = _lotAddress;
lorToken = IERC20(_lorAddress);
protectedTokens[_lorAddress] = true;
lorToken.safeApprove(_lotAddress, (2**256 - 1));
}
modifier onlyLOT() {
require(msg.sender == lotAddress, "only LOT allowed");
_;
}
function resetLcp(uint256 endEpoch) public onlyOwner {
lcpEndEpoch = endEpoch;
allowWithdraw = false;
}
function addWinners(uint256[] memory ids) public onlyOwner {
for (uint256 i = 0; i < ids.length; i++) _winner[ids[i]] = true;
allowWithdraw = true;
}
function deposit(uint256 id, uint256 amount) public nonReentrant whenNotPaused() {
require(block.timestamp <= lcpEndEpoch, "LCP is over. Check den.social for the lastest.");
require(amount % 1 ether == 0, "Deposit only increments of 1");
require(!_generated[id] || !_winner[id], "Lair previously won; no new deposits");
super.deposit(id, amount);
emit Deposited(msg.sender, id, amount);
}
function withdraw(uint256 id, uint256 amount) public nonReentrant {
require(amount > 0, "Cannot withdraw 0");
require(allowWithdraw || block.timestamp <= lcpEndEpoch, "Winners being tabulated. Withdraws open soon.");
require(!_winner[id] && !_generated[id], "Lair won LCP but not generated; claim to open soon");
require(!_generated[id], "LOT generated; did you intend to claim?");
require(amount % 1 ether == 0, "Withdraw only increments of 1");
super.withdraw(id, amount);
emit Withdrawn(msg.sender, id, amount);
}
function claim(uint256 id) public nonReentrant {
require(_generated[id], "LOT not generated; did you intend to withdraw?");
require(super.balanceOf(msg.sender, id) > 0, "Nothing to claim");
uint256 amount = super.balanceOf(msg.sender, id);
super.claim(id, msg.sender);
IERC1155(lotAddress).lcpMint(id, msg.sender, _toEther(amount), "");
emit Claimed(msg.sender, id, _toEther(amount));
}
function claimable(address account, uint256 id) public view returns (uint256) {
if (!_generated[id]) {
return 0;
}
return _toEther(super.balanceOf(account, id));
}
function generate(uint256 id) public onlyLOT returns (uint256) {
_generated[id] = true;
emit Generated(msg.sender, id);
return totalDeposits(id);
}
function sweep(address token) external onlyOwner {
require(!protectedTokens[token], "token is protected");
IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
}
// Internal functions
function _toEther(uint256 _amount) internal pure returns (uint256) {
return _amount / (1 ether);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_lotAddress","type":"address"},{"internalType":"address","name":"_lorAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Generated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"addWinners","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"generate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lcpEndEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lorToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lotAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protectedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"endEpoch","type":"uint256"}],"name":"resetLcp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200290938038062002909833981810160405260408110156200003757600080fd5b5080516020909101516004805460ff1916600117905562000073620000646001600160e01b036200015316565b6001600160e01b036200015716565b6006805460ff191690556000620000926001600160e01b036200015316565b60068054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600780546001600160a01b038085166001600160a01b03199283161790925560008054848416921682178155908152600a602090815260408220805460ff1916600117905590546200014b92169084906000199062001c00620001a9821b17901c565b5050620006a3565b3390565b620001728160056200031960201b62001a811790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b8015806200024c5750604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156200021c57600080fd5b505afa15801562000231573d6000803e3d6000fd5b505050506040513d60208110156200024857600080fd5b5051155b620002a3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180620028d36036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b039081167f095ea7b3000000000000000000000000000000000000000000000000000000001790915262000314918591620003c016565b505050565b6200032e82826001600160e01b03620005e316565b156200039b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b620003df826001600160a01b03166200066660201b62001d741760201c565b6200044b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106200048b5780518252601f1990920191602091820191016200046a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620004ef576040519150601f19603f3d011682016040523d82523d6000602084013e620004f4565b606091505b5091509150816200056657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115620005dd578080602001905160208110156200058457600080fd5b5051620005dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180620028a9602a913960400191505060405180910390fd5b50505050565b60006001600160a01b03821662000646576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620028876022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200069b57508115155b949350505050565b6121d480620006b36000396000f3fe608060405234801561001057600080fd5b50600436106101a25760003560e01c806360efe334116100ee57806389b3fe84116100975780638f32d59b116100715780638f32d59b146104a3578063c2c66b05146104ab578063e2bbb158146104c8578063f2fde38b146104eb576101a2565b806389b3fe84146103f057806389c24a00146104935780638da5cb5b1461049b576101a2565b8063715018a6116100c8578063715018a6146103ad57806382dc1ec4146103b55780638456cb59146103e8576101a2565b806360efe3341461036457806364f794821461039d5780636ef8d66d146103a5576101a2565b8063379607f51161015057806346fbf68e1161012a57806346fbf68e1461030c5780634a7dd5231461033f5780635c975abb1461035c576101a2565b8063379607f5146102c45780633f4ba83a146102e1578063441a3e70146102e9576101a2565b806318160ddd1161018157806318160ddd1461026e5780632357069714610276578063372af1b5146102a7576101a2565b8062fdd58e146101a757806301681a62146101f257806303d6818514610227575b600080fd5b6101e0600480360360408110156101bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561051e565b60408051918252519081900360200190f35b6102256004803603602081101561020857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610555565b005b61025a6004803603602081101561023d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076f565b604080519115158252519081900360200190f35b6101e0610784565b61027e61078a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e0600480360360208110156102bd57600080fd5b50356107a6565b610225600480360360208110156102da57600080fd5b50356107b8565b610225610a0c565b610225600480360360408110156102ff57600080fd5b5080359060200135610b0b565b61025a6004803603602081101561032257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d75565b6101e06004803603602081101561035557600080fd5b5035610d88565b61025a610e4f565b6101e06004803603604081101561037a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e58565b6101e0610e8f565b610225610e95565b610225610ea7565b610225600480360360208110156103cb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f74565b610225610fc6565b6102256004803603602081101561040657600080fd5b81019060208101813564010000000081111561042157600080fd5b82018360208201111561043357600080fd5b8035906020019184602083028401116401000000008311171561045557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061109a945050505050565b61027e611153565b61027e61116f565b61025a611190565b610225600480360360208110156104c157600080fd5b50356111d5565b610225600480360360408110156104de57600080fd5b508035906020013561123d565b6102256004803603602081101561050157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611451565b600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b61055d611190565b6105ae576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090205460ff1615610629576040805162461bcd60e51b815260206004820152601260248201527f746f6b656e2069732070726f7465637465640000000000000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff83169163a9059cbb91339184916370a0823191602480820192602092909190829003018186803b1580156106a057600080fd5b505afa1580156106b4573d6000803e3d6000fd5b505050506040513d60208110156106ca57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091525160448083019260209291908290030181600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b505050506040513d602081101561076a57600080fd5b505050565b600a6020526000908152604090205460ff1681565b60015490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60009081526003602052604090205490565b60045460ff1661080f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff191690556000818152600b602052604090205460ff166108665760405162461bcd60e51b815260040180806020018281038252602e815260200180612112602e913960400191505060405180910390fd5b6000610872338361051e565b116108c4576040805162461bcd60e51b815260206004820152601060248201527f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000604482015290519081900360640190fd5b60006108d0338361051e565b90506108dc82336114b3565b60075473ffffffffffffffffffffffffffffffffffffffff1663514a783c833361090585611576565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945273ffffffffffffffffffffffffffffffffffffffff9092166024840152604483015260806064830152600060848301819052905160c48084019382900301818387803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a836109e384611576565b6040805192835260208301919091528051918290030190a250506004805460ff19166001179055565b610a1c610a17611584565b610d75565b610a575760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b60065460ff16610aae576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610ae1611584565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60045460ff16610b62576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff1916905580610bbe576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b60095460ff1680610bd157506008544211155b610c0c5760405162461bcd60e51b815260040180806020018281038252602d815260200180611fcf602d913960400191505060405180910390fd5b6000828152600c602052604090205460ff16158015610c3a57506000828152600b602052604090205460ff16155b610c755760405162461bcd60e51b81526004018080602001828103825260328152602001806120766032913960400191505060405180910390fd5b6000828152600b602052604090205460ff1615610cc35760405162461bcd60e51b81526004018080602001828103825260278152602001806120a86027913960400191505060405180910390fd5b670de0b6b3a7640000810615610d20576040805162461bcd60e51b815260206004820152601d60248201527f5769746864726177206f6e6c7920696e6372656d656e7473206f662031000000604482015290519081900360640190fd5b610d2a8282611588565b6040805183815260208101839052815133927f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6928290030190a250506004805460ff19166001179055565b600061054f60058363ffffffff6116b416565b60075460009073ffffffffffffffffffffffffffffffffffffffff163314610df7576040805162461bcd60e51b815260206004820152601060248201527f6f6e6c79204c4f5420616c6c6f77656400000000000000000000000000000000604482015290519081900360640190fd5b6000828152600b6020908152604091829020805460ff191660011790558151848152915133927f359852fd5ea6af65adbce6b260e48d9952e17600a8dabec8ff6455b496b0120692908290030190a261054f826107a6565b60065460ff1690565b6000818152600b602052604081205460ff16610e765750600061054f565b610e88610e83848461051e565b611576565b9392505050565b60085481565b610ea5610ea0611584565b611735565b565b610eaf611190565b610f00576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600654604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610f7f610a17611584565b610fba5760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b610fc38161178a565b50565b610fd1610a17611584565b61100c5760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b60065460ff1615611064576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ae1611584565b6110a2611190565b6110f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b8151811015611142576001600c600084848151811061111157fe5b6020908102919091018101518252810191909152604001600020805460ff19169115159190911790556001016110f6565b50506009805460ff19166001179055565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600654600090610100900473ffffffffffffffffffffffffffffffffffffffff166111b9611584565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6111dd611190565b61122e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6008556009805460ff19169055565b60045460ff16611294576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff1916905560065460ff16156112f6576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6008544211156113375760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa1602e913960400191505060405180910390fd5b670de0b6b3a7640000810615611394576040805162461bcd60e51b815260206004820152601c60248201527f4465706f736974206f6e6c7920696e6372656d656e7473206f66203100000000604482015290519081900360640190fd5b6000828152600b602052604090205460ff1615806113c157506000828152600c602052604090205460ff16155b6113fc5760405162461bcd60e51b81526004018080602001828103825260248152602001806120526024913960400191505060405180910390fd5b61140682826117df565b6040805183815260208101839052815133927f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca928290030190a250506004805460ff19166001179055565b611459611190565b6114aa576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610fc3816118e1565b60006114bf828461051e565b6001549091506114d5908263ffffffff6119cb16565b6001556000838152600360205260409020546114f7908263ffffffff6119cb16565b6000848152600360209081526040808320939093556002815282822073ffffffffffffffffffffffffffffffffffffffff8616835290522054611540908263ffffffff6119cb16565b600093845260026020908152604080862073ffffffffffffffffffffffffffffffffffffffff9095168652939052919092205550565b670de0b6b3a7640000900490565b3390565b60015461159b908263ffffffff6119cb16565b6001556000828152600360205260409020546115bd908263ffffffff6119cb16565b60008381526003602090815260408083209390935560028152828220338352905220546115f0908263ffffffff6119cb16565b60008381526002602090815260408083203380855290835281842094909455825481517fa9059cbb000000000000000000000000000000000000000000000000000000008152600481019590955260248501869052905173ffffffffffffffffffffffffffffffffffffffff9091169363a9059cbb9360448083019493928390030190829087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506040513d60208110156116ae57600080fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff82166117085760405162461bcd60e51b81526004018080602001828103825260228152602001806120f06022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b61174660058263ffffffff611a0d16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61179b60058263ffffffff611a8116565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001546117f2908263ffffffff611b0f16565b600155600082815260036020526040902054611814908263ffffffff611b0f16565b6000838152600360209081526040808320939093556002815282822033835290522054611847908263ffffffff611b0f16565b60008381526002602090815260408083203380855290835281842094909455825481517f23b872dd000000000000000000000000000000000000000000000000000000008152600481019590955230602486015260448501869052905173ffffffffffffffffffffffffffffffffffffffff909116936323b872dd9360648083019493928390030190829087803b15801561168457600080fd5b73ffffffffffffffffffffffffffffffffffffffff81166119335760405162461bcd60e51b815260040180806020018281038252602681526020018061202c6026913960400191505060405180910390fd5b60065460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6000610e8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b69565b611a1782826116b4565b611a525760405162461bcd60e51b81526004018080602001828103825260218152602001806120cf6021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19169055565b611a8b82826116b4565b15611add576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b600082820183811015610e88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611bf85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b801580611cac5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c7e57600080fd5b505afa158015611c92573d6000803e3d6000fd5b505050506040513d6020811015611ca857600080fd5b5051155b611ce75760405162461bcd60e51b815260040180806020018281038252603681526020018061216a6036913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261076a908490611db0565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611da857508115155b949350505050565b611dcf8273ffffffffffffffffffffffffffffffffffffffff16611d74565b611e20576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310611e8957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611e4c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611eeb576040519150601f19603f3d011682016040523d82523d6000602084013e611ef0565b606091505b509150915081611f47576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156116ae57808060200190516020811015611f6357600080fd5b50516116ae5760405162461bcd60e51b815260040180806020018281038252602a815260200180612140602a913960400191505060405180910390fdfe4c4350206973206f7665722e20436865636b2064656e2e736f6369616c20666f7220746865206c6173746573742e57696e6e657273206265696e6720746162756c617465642e20576974686472617773206f70656e20736f6f6e2e506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c6169722070726576696f75736c7920776f6e3b206e6f206e6577206465706f736974734c61697220776f6e204c435020627574206e6f742067656e6572617465643b20636c61696d20746f206f70656e20736f6f6e4c4f542067656e6572617465643b2064696420796f7520696e74656e6420746f20636c61696d3f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734c4f54206e6f742067656e6572617465643b2064696420796f7520696e74656e6420746f2077697468647261773f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158208d1244f559013174764a6d280390e9f17376b166477d8cd6eb78848fddcaa45364736f6c634300050c0032526f6c65733a206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000000005fb784ed9d2e5b2eca16cb8f467e03a8b7ea22cd000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a25760003560e01c806360efe334116100ee57806389b3fe84116100975780638f32d59b116100715780638f32d59b146104a3578063c2c66b05146104ab578063e2bbb158146104c8578063f2fde38b146104eb576101a2565b806389b3fe84146103f057806389c24a00146104935780638da5cb5b1461049b576101a2565b8063715018a6116100c8578063715018a6146103ad57806382dc1ec4146103b55780638456cb59146103e8576101a2565b806360efe3341461036457806364f794821461039d5780636ef8d66d146103a5576101a2565b8063379607f51161015057806346fbf68e1161012a57806346fbf68e1461030c5780634a7dd5231461033f5780635c975abb1461035c576101a2565b8063379607f5146102c45780633f4ba83a146102e1578063441a3e70146102e9576101a2565b806318160ddd1161018157806318160ddd1461026e5780632357069714610276578063372af1b5146102a7576101a2565b8062fdd58e146101a757806301681a62146101f257806303d6818514610227575b600080fd5b6101e0600480360360408110156101bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561051e565b60408051918252519081900360200190f35b6102256004803603602081101561020857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610555565b005b61025a6004803603602081101561023d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076f565b604080519115158252519081900360200190f35b6101e0610784565b61027e61078a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101e0600480360360208110156102bd57600080fd5b50356107a6565b610225600480360360208110156102da57600080fd5b50356107b8565b610225610a0c565b610225600480360360408110156102ff57600080fd5b5080359060200135610b0b565b61025a6004803603602081101561032257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d75565b6101e06004803603602081101561035557600080fd5b5035610d88565b61025a610e4f565b6101e06004803603604081101561037a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e58565b6101e0610e8f565b610225610e95565b610225610ea7565b610225600480360360208110156103cb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f74565b610225610fc6565b6102256004803603602081101561040657600080fd5b81019060208101813564010000000081111561042157600080fd5b82018360208201111561043357600080fd5b8035906020019184602083028401116401000000008311171561045557600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061109a945050505050565b61027e611153565b61027e61116f565b61025a611190565b610225600480360360208110156104c157600080fd5b50356111d5565b610225600480360360408110156104de57600080fd5b508035906020013561123d565b6102256004803603602081101561050157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611451565b600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b61055d611190565b6105ae576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604090205460ff1615610629576040805162461bcd60e51b815260206004820152601260248201527f746f6b656e2069732070726f7465637465640000000000000000000000000000604482015290519081900360640190fd5b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff83169163a9059cbb91339184916370a0823191602480820192602092909190829003018186803b1580156106a057600080fd5b505afa1580156106b4573d6000803e3d6000fd5b505050506040513d60208110156106ca57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff909316600484015260248301919091525160448083019260209291908290030181600087803b15801561074057600080fd5b505af1158015610754573d6000803e3d6000fd5b505050506040513d602081101561076a57600080fd5b505050565b600a6020526000908152604090205460ff1681565b60015490565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60009081526003602052604090205490565b60045460ff1661080f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff191690556000818152600b602052604090205460ff166108665760405162461bcd60e51b815260040180806020018281038252602e815260200180612112602e913960400191505060405180910390fd5b6000610872338361051e565b116108c4576040805162461bcd60e51b815260206004820152601060248201527f4e6f7468696e6720746f20636c61696d00000000000000000000000000000000604482015290519081900360640190fd5b60006108d0338361051e565b90506108dc82336114b3565b60075473ffffffffffffffffffffffffffffffffffffffff1663514a783c833361090585611576565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945273ffffffffffffffffffffffffffffffffffffffff9092166024840152604483015260806064830152600060848301819052905160c48084019382900301818387803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a836109e384611576565b6040805192835260208301919091528051918290030190a250506004805460ff19166001179055565b610a1c610a17611584565b610d75565b610a575760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b60065460ff16610aae576040805162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b6006805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610ae1611584565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60045460ff16610b62576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff1916905580610bbe576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b60095460ff1680610bd157506008544211155b610c0c5760405162461bcd60e51b815260040180806020018281038252602d815260200180611fcf602d913960400191505060405180910390fd5b6000828152600c602052604090205460ff16158015610c3a57506000828152600b602052604090205460ff16155b610c755760405162461bcd60e51b81526004018080602001828103825260328152602001806120766032913960400191505060405180910390fd5b6000828152600b602052604090205460ff1615610cc35760405162461bcd60e51b81526004018080602001828103825260278152602001806120a86027913960400191505060405180910390fd5b670de0b6b3a7640000810615610d20576040805162461bcd60e51b815260206004820152601d60248201527f5769746864726177206f6e6c7920696e6372656d656e7473206f662031000000604482015290519081900360640190fd5b610d2a8282611588565b6040805183815260208101839052815133927f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc6928290030190a250506004805460ff19166001179055565b600061054f60058363ffffffff6116b416565b60075460009073ffffffffffffffffffffffffffffffffffffffff163314610df7576040805162461bcd60e51b815260206004820152601060248201527f6f6e6c79204c4f5420616c6c6f77656400000000000000000000000000000000604482015290519081900360640190fd5b6000828152600b6020908152604091829020805460ff191660011790558151848152915133927f359852fd5ea6af65adbce6b260e48d9952e17600a8dabec8ff6455b496b0120692908290030190a261054f826107a6565b60065460ff1690565b6000818152600b602052604081205460ff16610e765750600061054f565b610e88610e83848461051e565b611576565b9392505050565b60085481565b610ea5610ea0611584565b611735565b565b610eaf611190565b610f00576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600654604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b610f7f610a17611584565b610fba5760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b610fc38161178a565b50565b610fd1610a17611584565b61100c5760405162461bcd60e51b8152600401808060200182810382526030815260200180611ffc6030913960400191505060405180910390fd5b60065460ff1615611064576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6006805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ae1611584565b6110a2611190565b6110f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60005b8151811015611142576001600c600084848151811061111157fe5b6020908102919091018101518252810191909152604001600020805460ff19169115159190911790556001016110f6565b50506009805460ff19166001179055565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b600654610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600654600090610100900473ffffffffffffffffffffffffffffffffffffffff166111b9611584565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6111dd611190565b61122e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6008556009805460ff19169055565b60045460ff16611294576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6004805460ff1916905560065460ff16156112f6576040805162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6008544211156113375760405162461bcd60e51b815260040180806020018281038252602e815260200180611fa1602e913960400191505060405180910390fd5b670de0b6b3a7640000810615611394576040805162461bcd60e51b815260206004820152601c60248201527f4465706f736974206f6e6c7920696e6372656d656e7473206f66203100000000604482015290519081900360640190fd5b6000828152600b602052604090205460ff1615806113c157506000828152600c602052604090205460ff16155b6113fc5760405162461bcd60e51b81526004018080602001828103825260248152602001806120526024913960400191505060405180910390fd5b61140682826117df565b6040805183815260208101839052815133927f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca928290030190a250506004805460ff19166001179055565b611459611190565b6114aa576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610fc3816118e1565b60006114bf828461051e565b6001549091506114d5908263ffffffff6119cb16565b6001556000838152600360205260409020546114f7908263ffffffff6119cb16565b6000848152600360209081526040808320939093556002815282822073ffffffffffffffffffffffffffffffffffffffff8616835290522054611540908263ffffffff6119cb16565b600093845260026020908152604080862073ffffffffffffffffffffffffffffffffffffffff9095168652939052919092205550565b670de0b6b3a7640000900490565b3390565b60015461159b908263ffffffff6119cb16565b6001556000828152600360205260409020546115bd908263ffffffff6119cb16565b60008381526003602090815260408083209390935560028152828220338352905220546115f0908263ffffffff6119cb16565b60008381526002602090815260408083203380855290835281842094909455825481517fa9059cbb000000000000000000000000000000000000000000000000000000008152600481019590955260248501869052905173ffffffffffffffffffffffffffffffffffffffff9091169363a9059cbb9360448083019493928390030190829087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b505050506040513d60208110156116ae57600080fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff82166117085760405162461bcd60e51b81526004018080602001828103825260228152602001806120f06022913960400191505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152602091909152604090205460ff1690565b61174660058263ffffffff611a0d16565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61179b60058263ffffffff611a8116565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6001546117f2908263ffffffff611b0f16565b600155600082815260036020526040902054611814908263ffffffff611b0f16565b6000838152600360209081526040808320939093556002815282822033835290522054611847908263ffffffff611b0f16565b60008381526002602090815260408083203380855290835281842094909455825481517f23b872dd000000000000000000000000000000000000000000000000000000008152600481019590955230602486015260448501869052905173ffffffffffffffffffffffffffffffffffffffff909116936323b872dd9360648083019493928390030190829087803b15801561168457600080fd5b73ffffffffffffffffffffffffffffffffffffffff81166119335760405162461bcd60e51b815260040180806020018281038252602681526020018061202c6026913960400191505060405180910390fd5b60065460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6000610e8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b69565b611a1782826116b4565b611a525760405162461bcd60e51b81526004018080602001828103825260218152602001806120cf6021913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19169055565b611a8b82826116b4565b15611add576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260209190915260409020805460ff19166001179055565b600082820183811015610e88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008184841115611bf85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bbd578181015183820152602001611ba5565b50505050905090810190601f168015611bea5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b801580611cac5750604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611c7e57600080fd5b505afa158015611c92573d6000803e3d6000fd5b505050506040513d6020811015611ca857600080fd5b5051155b611ce75760405162461bcd60e51b815260040180806020018281038252603681526020018061216a6036913960400191505060405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261076a908490611db0565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611da857508115155b949350505050565b611dcf8273ffffffffffffffffffffffffffffffffffffffff16611d74565b611e20576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310611e8957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611e4c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611eeb576040519150601f19603f3d011682016040523d82523d6000602084013e611ef0565b606091505b509150915081611f47576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156116ae57808060200190516020811015611f6357600080fd5b50516116ae5760405162461bcd60e51b815260040180806020018281038252602a815260200180612140602a913960400191505060405180910390fdfe4c4350206973206f7665722e20436865636b2064656e2e736f6369616c20666f7220746865206c6173746573742e57696e6e657273206265696e6720746162756c617465642e20576974686472617773206f70656e20736f6f6e2e506175736572526f6c653a2063616c6c657220646f6573206e6f742068617665207468652050617573657220726f6c654f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c6169722070726576696f75736c7920776f6e3b206e6f206e6577206465706f736974734c61697220776f6e204c435020627574206e6f742067656e6572617465643b20636c61696d20746f206f70656e20736f6f6e4c4f542067656e6572617465643b2064696420796f7520696e74656e6420746f20636c61696d3f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734c4f54206e6f742067656e6572617465643b2064696420796f7520696e74656e6420746f2077697468647261773f5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158208d1244f559013174764a6d280390e9f17376b166477d8cd6eb78848fddcaa45364736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005fb784ed9d2e5b2eca16cb8f467e03a8b7ea22cd000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
-----Decoded View---------------
Arg [0] : _lotAddress (address): 0x5Fb784Ed9d2e5b2ECA16cb8F467E03A8B7EA22cD
Arg [1] : _lorAddress (address): 0xC3F18a746B7Ca4B22976A7aaCD289e83cA2faF41
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005fb784ed9d2e5b2eca16cb8f467e03a8b7ea22cd
Arg [1] : 000000000000000000000000c3f18a746b7ca4b22976a7aacd289e83ca2faf41
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2,237.14
Net Worth in ETH
1.08082
Token Allocations
LOR
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.00 | 11,046,799 | $0.00 |
Loading...
Loading
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.