More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 401 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Staking Token Wi... | 19811323 | 56 days ago | IN | 0 ETH | 0.00052369 | ||||
Staking Token Wi... | 19352641 | 120 days ago | IN | 0 ETH | 0.00236382 | ||||
Staking Token Wi... | 19158837 | 147 days ago | IN | 0 ETH | 0.00107013 | ||||
Staking Token Wi... | 19122163 | 152 days ago | IN | 0 ETH | 0.00182381 | ||||
Staking Token Wi... | 19120131 | 153 days ago | IN | 0 ETH | 0.00341474 | ||||
Staking Token Wi... | 19096341 | 156 days ago | IN | 0 ETH | 0.00086769 | ||||
Staking Token Wi... | 19088250 | 157 days ago | IN | 0 ETH | 0.00090099 | ||||
Staking Token Wi... | 19076983 | 159 days ago | IN | 0 ETH | 0.00124127 | ||||
Staking Token Wi... | 19059525 | 161 days ago | IN | 0 ETH | 0.00060986 | ||||
Staking Token Wi... | 19057100 | 161 days ago | IN | 0 ETH | 0.00103819 | ||||
Staking Token Wi... | 19056091 | 162 days ago | IN | 0 ETH | 0.00158095 | ||||
Staking Token Wi... | 19025966 | 166 days ago | IN | 0 ETH | 0.00172432 | ||||
Staking Token Wi... | 18989191 | 171 days ago | IN | 0 ETH | 0.00111647 | ||||
Staking Token Wi... | 18975098 | 173 days ago | IN | 0 ETH | 0.00108148 | ||||
Staking Token Wi... | 18933102 | 179 days ago | IN | 0 ETH | 0.00121042 | ||||
Staking Token Wi... | 18912949 | 182 days ago | IN | 0 ETH | 0.00060014 | ||||
Staking Token Wi... | 18912930 | 182 days ago | IN | 0 ETH | 0.00077548 | ||||
Staking Token Wi... | 18904001 | 183 days ago | IN | 0 ETH | 0.0010158 | ||||
Staking Token Wi... | 18883145 | 186 days ago | IN | 0 ETH | 0.00271281 | ||||
Staking Token Wi... | 18879416 | 186 days ago | IN | 0 ETH | 0.00162303 | ||||
Staking Token Wi... | 18852175 | 190 days ago | IN | 0 ETH | 0.00101898 | ||||
Staking Token Wi... | 18822885 | 194 days ago | IN | 0 ETH | 0.00359789 | ||||
Staking Token Wi... | 18818474 | 195 days ago | IN | 0 ETH | 0.00311118 | ||||
Staking Token Wi... | 18816466 | 195 days ago | IN | 0 ETH | 0.00278697 | ||||
Staking Token Wi... | 18814055 | 196 days ago | IN | 0 ETH | 0.00547161 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
17684828 | 354 days ago | 0.6 ETH |
Loading...
Loading
Contract Name:
LancetMembership
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; interface IERC721 { function ownerOf(uint256 tokenId) external view returns (address); function transferFrom(address from, address to, uint256 tokenId) external; function balanceOf(address owner) external view returns (uint256); } contract LancetMembership is Ownable,Pausable,ReentrancyGuard{ using SafeMath for uint256; // ========================================================================= // Types // ========================================================================= enum Staking48HType{ ThirtyDays, SixtyDays } struct MembershipType{ uint256 membershipDays; bool onSale; uint256 membershipPrice; } // ========================================================================= // Storage // ========================================================================= IERC721 public lancetPass ; uint256 public staking48HStartTimestamp; uint256 private constant _24H_SEC = 1 days; uint256[] public membershipCategory; bool public stakingEnabled; mapping(address => uint256) public ownedToken; mapping(uint256 => bool) public stakingAllowed; mapping(uint256 => uint256) public stakingEndAt; mapping(uint256 => uint256) public membershipEndAt; mapping(uint256 => MembershipType) public membershipState; // ========================================================================= // Constructor // ========================================================================= constructor(address _lancetPassAddress){ membershipState[30] = MembershipType(30,true,0.2 ether); membershipState[60] = MembershipType(60,true,0.35 ether); membershipState[90] = MembershipType(90,true,0.5 ether); membershipState[180] = MembershipType(180,true,0.6 ether); membershipCategory.push(30); membershipCategory.push(60); membershipCategory.push(90); membershipCategory.push(180); lancetPass = IERC721(_lancetPassAddress); } // ========================================================================= // Event // ========================================================================= event Staking48H(address indexed owner,uint256 indexed startTimestamp,uint256 indexed endTimestamp,uint256 tokenId); event MembershipPurchase(address indexed owner,uint256 indexed startTimestamp,uint256 indexed endTimestamp,uint256 tokenId); event Staking(address indexed owner,uint256 indexed startTimestamp,uint256 indexed endTimestamp,uint256 tokenId); event SetMembershipPrice(uint256 indexed membershipDays,uint256 indexed price); event SetMembershipState(uint256 indexed membershipDays,uint256 indexed price,bool indexed onSale); event StakingTokenWithdraw(address indexed owner,uint256 indexed tokenId); // ========================================================================= // Modifier // ========================================================================= modifier Staking48HOpen{ require(block.timestamp >= staking48HStartTimestamp && block.timestamp <= staking48HStartTimestamp.add(_24H_SEC.mul(2)),"48H Staking not opened"); _; } modifier Staking48HClosed{ require(block.timestamp > staking48HStartTimestamp.add(_24H_SEC.mul(2)),"48H Staking not closed"); _; } modifier OnlyPassOwner(uint256 tokenId){ require(tokenId != 0); require(ownedToken[msg.sender] == tokenId || lancetPass.ownerOf(tokenId) == msg.sender,"Not Lancet Pass Holder"); _; } // ========================================================================= // Function // ========================================================================= function staking48H(Staking48HType staking48HType,uint256 tokenId) Staking48HOpen OnlyPassOwner(tokenId) external { require(ownedToken[msg.sender] == 0,"Already staked"); lancetPass.transferFrom(msg.sender,address(this),tokenId); ownedToken[msg.sender] = tokenId; uint256 startTimestamp = block.timestamp; uint256 endTimestamp = startTimestamp.add(convertStakingTime(staking48HType)); membershipEndAt[tokenId] = endTimestamp; stakingEndAt[tokenId] = endTimestamp; emit Staking48H(msg.sender, startTimestamp, endTimestamp, tokenId); } function membershipPurchase(uint256 membershipDays,uint256 tokenId) Staking48HClosed OnlyPassOwner(tokenId) nonReentrant payable public{ require(msg.value == membershipState[membershipDays].membershipPrice,"Invalid Price"); require(membershipState[membershipDays].onSale,"Not On Sale"); uint256 startTimestamp = block.timestamp; uint256 membershipEndTimestamp; if (membershipEndAt[tokenId] > startTimestamp){ membershipEndTimestamp = membershipEndAt[tokenId].add(_24H_SEC.mul(membershipDays)); }else{ membershipEndTimestamp = startTimestamp.add(_24H_SEC.mul(membershipDays)); } membershipEndAt[tokenId] = membershipEndTimestamp; stakingAllowed[tokenId] = true; emit MembershipPurchase(msg.sender,startTimestamp,membershipEndTimestamp,tokenId); } function stakingAndMembership(uint256 membershipDays,uint256 tokenId) Staking48HClosed OnlyPassOwner(tokenId) nonReentrant payable external{ require(stakingEnabled,"Staking Not Open"); require(msg.value == membershipState[membershipDays].membershipPrice,"Invalid Price"); require(membershipState[membershipDays].onSale,"Not On Sale"); uint256 startTimestamp = block.timestamp; uint256 endTimestamp; if (membershipEndAt[tokenId] > startTimestamp){ endTimestamp = membershipEndAt[tokenId].add(_24H_SEC.mul(membershipDays)); }else{ endTimestamp = startTimestamp.add(_24H_SEC.mul(membershipDays)); } membershipEndAt[tokenId] = endTimestamp; if (ownedToken[msg.sender] == 0){ lancetPass.transferFrom(msg.sender,address(this),tokenId); ownedToken[msg.sender] = tokenId; } stakingEndAt[tokenId] = endTimestamp; stakingAllowed[tokenId] = false; emit Staking(msg.sender,startTimestamp,endTimestamp,tokenId); emit MembershipPurchase(msg.sender,startTimestamp,endTimestamp,tokenId); } function staking(uint256 stakeDuration,uint256 tokenId) Staking48HClosed OnlyPassOwner(tokenId) nonReentrant public { require(stakingEnabled,"Staking Not Open"); require(stakingAllowed[tokenId],"Staking not allowed"); uint256 startTimestamp = block.timestamp; require(membershipEndAt[tokenId] > startTimestamp,"Only membership can staking"); uint256 stakeEndTimestamp; if (ownedToken[msg.sender] == tokenId){ if (stakingEndAt[tokenId] > startTimestamp){ stakeEndTimestamp = stakingEndAt[tokenId].add(stakeDuration); }else{ stakeEndTimestamp = startTimestamp.add(stakeDuration); } }else if (ownedToken[msg.sender] == 0){ stakeEndTimestamp = startTimestamp.add(stakeDuration); lancetPass.transferFrom(msg.sender,address(this),tokenId); ownedToken[msg.sender] = tokenId; }else{ revert(); } if (membershipEndAt[tokenId] < stakeEndTimestamp){ stakeEndTimestamp = membershipEndAt[tokenId]; } stakingEndAt[tokenId] = stakeEndTimestamp; stakingAllowed[tokenId] = false; emit Staking(msg.sender,startTimestamp,stakeEndTimestamp,tokenId); } function stakingWithEndtime(uint256 stakeEndTimestamp,uint256 tokenId) Staking48HClosed OnlyPassOwner(tokenId) nonReentrant public { require(stakingEnabled,"Staking Not Open"); require(stakingAllowed[tokenId],"Staking not allowed"); uint256 startTimestamp = block.timestamp; require(membershipEndAt[tokenId] > startTimestamp,"Only membership can staking"); if (ownedToken[msg.sender] == 0){ lancetPass.transferFrom(msg.sender,address(this),tokenId); ownedToken[msg.sender] = tokenId; } if (membershipEndAt[tokenId] < stakeEndTimestamp){ stakingEndAt[tokenId] = membershipEndAt[tokenId]; }else{ stakingEndAt[tokenId] = stakeEndTimestamp; } stakingAllowed[tokenId] = false; emit Staking(msg.sender,startTimestamp,stakeEndTimestamp,tokenId); } function stakingTokenWithdraw() nonReentrant external{ uint256 ownedTokenId = ownedToken[msg.sender]; require(ownedTokenId != 0,"Have't token in staking"); require(stakingEndAt[ownedTokenId] <= block.timestamp,"Cannot withdraw"); lancetPass.transferFrom(address(this),msg.sender,ownedTokenId); ownedToken[msg.sender] = 0; emit StakingTokenWithdraw(msg.sender,ownedTokenId); } function convertStakingTime(Staking48HType stakeWithin48HType) pure private returns(uint256){ if (stakeWithin48HType == Staking48HType.ThirtyDays){ return _24H_SEC.mul(30); } if (stakeWithin48HType == Staking48HType.SixtyDays){ return _24H_SEC.mul(60); } return 0; } function convertMembershipTime(uint256 membershipDays) pure private returns(uint256){ return _24H_SEC.mul(membershipDays); } function setMembershipPrice(uint256 membershipDays,uint256 price) external onlyOwner{ membershipState[membershipDays] = MembershipType(membershipDays,false,price); emit SetMembershipPrice(membershipDays,price); } function setMembershipState(uint256 membershipDays,uint256 price,bool onSale) external onlyOwner{ require(membershipState[membershipDays].membershipPrice == price); if (membershipState[membershipDays].membershipDays == 0 && membershipDays != 0){ membershipCategory.push(membershipDays); } membershipState[membershipDays].onSale = onSale; emit SetMembershipState(membershipDays,price,onSale); } function setStakingEnabled() external onlyOwner{ stakingEnabled = !stakingEnabled; } function setStaking48HStartTimestamp(uint256 _staking48HStartTimestamp) external onlyOwner{ staking48HStartTimestamp = _staking48HStartTimestamp; } function getAllMembershipTypes() external view returns(MembershipType[] memory){ MembershipType[] memory membershipTypes = new MembershipType[](membershipCategory.length); for (uint256 i = 0;i < membershipCategory.length ;i ++){ membershipTypes[i] = membershipState[membershipCategory[i]]; } return membershipTypes; } function withdraw() external onlyOwner nonReentrant { (bool success, ) = msg.sender.call{value: (address(this).balance)}(""); require(success, "Withdraw: Transaction Unsuccessful."); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @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. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lancetPassAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"MembershipPurchase","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":"uint256","name":"membershipDays","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"}],"name":"SetMembershipPrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"membershipDays","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"price","type":"uint256"},{"indexed":true,"internalType":"bool","name":"onSale","type":"bool"}],"name":"SetMembershipState","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"endTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Staking48H","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"StakingTokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"getAllMembershipTypes","outputs":[{"components":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"bool","name":"onSale","type":"bool"},{"internalType":"uint256","name":"membershipPrice","type":"uint256"}],"internalType":"struct LancetMembership.MembershipType[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lancetPass","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"membershipCategory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"membershipEndAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"membershipPurchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"membershipState","outputs":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"bool","name":"onSale","type":"bool"},{"internalType":"uint256","name":"membershipPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"setMembershipPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"onSale","type":"bool"}],"name":"setMembershipState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_staking48HStartTimestamp","type":"uint256"}],"name":"setStaking48HStartTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setStakingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeDuration","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"staking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum LancetMembership.Staking48HType","name":"staking48HType","type":"uint8"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"staking48H","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staking48HStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakingAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"membershipDays","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakingAndMembership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"stakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakingEndAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingTokenWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeEndTimestamp","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakingWithEndtime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620039a6380380620039a6833981810160405281019062000037919062000466565b620000576200004b6200033060201b60201c565b6200033860201b60201c565b60008060146101000a81548160ff021916908315150217905550600180819055506040518060600160405280601e81526020016001151581526020016702c68af0bb140000815250600a6000601e81526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908315150217905550604082015181600201559050506040518060600160405280603c81526020016001151581526020016704db732547630000815250600a6000603c81526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908315150217905550604082015181600201559050506040518060600160405280605a81526020016001151581526020016706f05b59d3b20000815250600a6000605a81526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155905050604051806060016040528060b48152602001600115158152602001670853a0d2313c0000815250600a600060b481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908315150217905550604082015181600201559050506004601e90806001815401808255809150506001900390600052602060002001600090919091909150556004603c90806001815401808255809150506001900390600052602060002001600090919091909150556004605a9080600181540180825580915050600190039060005260206000200160009091909190915055600460b4908060018154018082558091505060019003906000526020600020016000909190919091505580600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000498565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200042e8262000401565b9050919050565b620004408162000421565b81146200044c57600080fd5b50565b600081519050620004608162000435565b92915050565b6000602082840312156200047f576200047e620003fc565b5b60006200048f848285016200044f565b91505092915050565b6134fe80620004a86000396000f3fe6080604052600436106101665760003560e01c80637126c330116100d1578063a93ee0191161008a578063e0187c4611610064578063e0187c46146104ea578063e1b0970f14610515578063f2fde38b1461053e578063ff237c011461056757610166565b8063a93ee0191461046d578063c7a2d424146104aa578063d366cde8146104c157610166565b80637126c3301461038b578063715018a6146103b6578063738e6ddc146103cd57806389f74947146103e95780638da5cb5b14610426578063a383654b1461045157610166565b80633ccfd60b116101235780633ccfd60b14610279578063515280b8146102905780635c975abb146102cf57806369c8b344146102fa5780636a2bef2b146103375780636f189a0f1461036057610166565b80630c1c8b301461016b5780631cfff51b146101a85780631fc890a2146101d35780632e9f411e146102105780632fce539f146102395780633bc2c9ce14610250575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612796565b610590565b60405161019f91906127de565b60405180910390f35b3480156101b457600080fd5b506101bd6105b0565b6040516101ca91906127de565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190612796565b6105c3565b6040516102079190612808565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612823565b6105db565b005b34801561024557600080fd5b5061024e610b74565b005b34801561025c57600080fd5b5061027760048036038101906102729190612796565b610d7e565b005b34801561028557600080fd5b5061028e610d90565b005b34801561029c57600080fd5b506102b760048036038101906102b29190612796565b610e57565b6040516102c693929190612863565b60405180910390f35b3480156102db57600080fd5b506102e4610e8e565b6040516102f191906127de565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906128f8565b610ea4565b60405161032e9190612808565b60405180910390f35b34801561034357600080fd5b5061035e60048036038101906103599190612823565b610ebc565b005b34801561036c57600080fd5b506103756113a4565b6040516103829190612808565b60405180910390f35b34801561039757600080fd5b506103a06113aa565b6040516103ad9190612984565b60405180910390f35b3480156103c257600080fd5b506103cb6113d0565b005b6103e760048036038101906103e29190612823565b6113e4565b005b3480156103f557600080fd5b50610410600480360381019061040b9190612796565b6117a5565b60405161041d9190612808565b60405180910390f35b34801561043257600080fd5b5061043b6117bd565b60405161044891906129ae565b60405180910390f35b61046b60048036038101906104669190612823565b6117e6565b005b34801561047957600080fd5b50610494600480360381019061048f9190612796565b611d7b565b6040516104a19190612808565b60405180910390f35b3480156104b657600080fd5b506104bf611d9f565b005b3480156104cd57600080fd5b506104e860048036038101906104e391906129ee565b611dd3565b005b3480156104f657600080fd5b506104ff6121b0565b60405161050c9190612b3d565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612823565b6122c3565b005b34801561054a57600080fd5b50610565600480360381019061056091906128f8565b612365565b005b34801561057357600080fd5b5061058e60048036038101906105899190612b8b565b6123e8565b005b60076020528060005260406000206000915054906101000a900460ff1681565b600560009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b6106066105f56002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063e90612c3b565b60405180910390fd5b806000810361065557600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061076857503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161070f9190612808565b602060405180830381865afa15801561072c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107509190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90612ce9565b60405180910390fd5b6107af6124f8565b600560009054906101000a900460ff166107fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f590612d55565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff1661085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590612dc1565b60405180910390fd5b6000429050806009600085815260200190815260200160002054116108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90612e2d565b60405180910390fd5b600083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610963578160086000868152602001908152602001600020541115610948576109418560086000878152602001908152602001600020546124e290919063ffffffff16565b905061095e565b61095b85836124e290919063ffffffff16565b90505b610a9f565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610a99576109bd85836124e290919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610a1e93929190612e4d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b5050505083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a9e565b600080fd5b5b8060096000868152602001908152602001600020541015610ad157600960008581526020019081526020016000205490505b80600860008681526020019081526020016000208190555060006007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa787604051610b5d9190612808565b60405180910390a45050610b6f612547565b505050565b610b7c6124f8565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90612ed0565b60405180910390fd5b4260086000838152602001908152602001600020541115610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090612f3c565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610cb893929190612e4d565b600060405180830381600087803b158015610cd257600080fd5b505af1158015610ce6573d6000803e3d6000fd5b505050506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550803373ffffffffffffffffffffffffffffffffffffffff167f2110d0b6cb51be018d8f0547a5aedb0afdefa98b21709a26ca2e0c1cdf912b1460405160405180910390a350610d7c612547565b565b610d86612550565b8060038190555050565b610d98612550565b610da06124f8565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610dc690612f8d565b60006040518083038185875af1925050503d8060008114610e03576040519150601f19603f3d011682016040523d82523d6000602084013e610e08565b606091505b5050905080610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613014565b60405180910390fd5b50610e55612547565b565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154905083565b60008060149054906101000a900460ff16905090565b60066020528060005260406000206000915090505481565b610ee7610ed66002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612c3b565b60405180910390fd5b8060008103610f3657600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061104957503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610ff09190612808565b602060405180830381865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f90612ce9565b60405180910390fd5b6110906124f8565b600560009054906101000a900460ff166110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612d55565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff1661113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612dc1565b60405180910390fd5b600042905080600960008581526020019081526020016000205411611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612e2d565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036112b657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161123f93929190612e4d565b600060405180830381600087803b15801561125957600080fd5b505af115801561126d573d6000803e3d6000fd5b5050505082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8360096000858152602001908152602001600020541015611301576009600084815260200190815260200160002054600860008581526020019081526020016000208190555061131a565b8360086000858152602001908152602001600020819055505b60006007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555083813373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa78660405161138e9190612808565b60405180910390a45061139f612547565b505050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d8612550565b6113e260006125ce565b565b61140f6113fe6002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612c3b565b60405180910390fd5b806000810361145e57600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061157157503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016115189190612808565b602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790612ce9565b60405180910390fd5b6115b86124f8565b600a6000848152602001908152602001600020600201543414611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613080565b60405180910390fd5b600a600084815260200190815260200160002060010160009054906101000a900460ff16611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a906130ec565b60405180910390fd5b6000429050600081600960008681526020019081526020016000205411156116d7576116d06116ae86620151806124cc90919063ffffffff16565b60096000878152602001908152602001600020546124e290919063ffffffff16565b9050611702565b6116ff6116f086620151806124cc90919063ffffffff16565b836124e290919063ffffffff16565b90505b80600960008681526020019081526020016000208190555060016007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f7603fd6665c88a83f724acf6ad9da40b1ea6468510b2d01cfd51484a005be1308760405161178e9190612808565b60405180910390a450506117a0612547565b505050565b60086020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118116118006002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990612c3b565b60405180910390fd5b806000810361186057600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061197357503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161191a9190612808565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990612ce9565b60405180910390fd5b6119ba6124f8565b600560009054906101000a900460ff16611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090612d55565b60405180910390fd5b600a6000848152602001908152602001600020600201543414611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890613080565b60405180910390fd5b600a600084815260200190815260200160002060010160009054906101000a900460ff16611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb906130ec565b60405180910390fd5b600042905060008160096000868152602001908152602001600020541115611b2857611b21611aff86620151806124cc90919063ffffffff16565b60096000878152602001908152602001600020546124e290919063ffffffff16565b9050611b53565b611b50611b4186620151806124cc90919063ffffffff16565b836124e290919063ffffffff16565b90505b8060096000868152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c8857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611c1193929190612e4d565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b5050505083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600860008681526020019081526020016000208190555060006007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa787604051611d149190612808565b60405180910390a480823373ffffffffffffffffffffffffffffffffffffffff167f7603fd6665c88a83f724acf6ad9da40b1ea6468510b2d01cfd51484a005be13087604051611d649190612808565b60405180910390a45050611d76612547565b505050565b60048181548110611d8b57600080fd5b906000526020600020016000915090505481565b611da7612550565b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b6003544210158015611e0f5750611e0b611dfa6002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211155b611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613158565b60405180910390fd5b8060008103611e5c57600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611f6f57503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611f169190612808565b602060405180830381865afa158015611f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f579190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa590612ce9565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906131c4565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161208f93929190612e4d565b600060405180830381600087803b1580156120a957600080fd5b505af11580156120bd573d6000803e3d6000fd5b5050505081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000429050600061212761211886612692565b836124e290919063ffffffff16565b905080600960008681526020019081526020016000208190555080600860008681526020019081526020016000208190555080823373ffffffffffffffffffffffffffffffffffffffff167fac86264a22d579d5f89c14f76e9780532f5acc59a5a761f8021bcda49ecb627b876040516121a19190612808565b60405180910390a45050505050565b6060600060048054905067ffffffffffffffff8111156121d3576121d26131e4565b5b60405190808252806020026020018201604052801561220c57816020015b6121f9612738565b8152602001906001900390816121f15790505b50905060005b6004805490508110156122bb57600a60006004838154811061223757612236613213565b5b90600052602060002001548152602001908152602001600020604051806060016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201548152505082828151811061229d5761229c613213565b5b602002602001018190525080806122b390613271565b915050612212565b508091505090565b6122cb612550565b604051806060016040528083815260200160001515815260200182815250600a60008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055506040820151816002015590505080827feac6b822107c51beb0e368734417199764b085d91dec94196accae7f691c9f4260405160405180910390a35050565b61236d612550565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061332b565b60405180910390fd5b6123e5816125ce565b50565b6123f0612550565b81600a6000858152602001908152602001600020600201541461241257600080fd5b6000600a600085815260200190815260200160002060000154148015612439575060008314155b156124685760048390806001815401808255809150506001900390600052602060002001600090919091909150555b80600a600085815260200190815260200160002060010160006101000a81548160ff02191690831515021790555080151582847f81e8270b221d9b9b95bbf9f32fd211121796be96710b695c9e966682bc8600a960405160405180910390a4505050565b600081836124da919061334b565b905092915050565b600081836124f0919061338d565b905092915050565b60026001540361253d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125349061340d565b60405180910390fd5b6002600181905550565b60018081905550565b612558612730565b73ffffffffffffffffffffffffffffffffffffffff166125766117bd565b73ffffffffffffffffffffffffffffffffffffffff16146125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c390613479565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060018111156126a7576126a6613499565b5b8260018111156126ba576126b9613499565b5b036126dd576126d6601e620151806124cc90919063ffffffff16565b905061272b565b6001808111156126f0576126ef613499565b5b82600181111561270357612702613499565b5b036127265761271f603c620151806124cc90919063ffffffff16565b905061272b565b600090505b919050565b600033905090565b604051806060016040528060008152602001600015158152602001600081525090565b600080fd5b6000819050919050565b61277381612760565b811461277e57600080fd5b50565b6000813590506127908161276a565b92915050565b6000602082840312156127ac576127ab61275b565b5b60006127ba84828501612781565b91505092915050565b60008115159050919050565b6127d8816127c3565b82525050565b60006020820190506127f360008301846127cf565b92915050565b61280281612760565b82525050565b600060208201905061281d60008301846127f9565b92915050565b6000806040838503121561283a5761283961275b565b5b600061284885828601612781565b925050602061285985828601612781565b9150509250929050565b600060608201905061287860008301866127f9565b61288560208301856127cf565b61289260408301846127f9565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128c58261289a565b9050919050565b6128d5816128ba565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b60006020828403121561290e5761290d61275b565b5b600061291c848285016128e3565b91505092915050565b6000819050919050565b600061294a6129456129408461289a565b612925565b61289a565b9050919050565b600061295c8261292f565b9050919050565b600061296e82612951565b9050919050565b61297e81612963565b82525050565b60006020820190506129996000830184612975565b92915050565b6129a8816128ba565b82525050565b60006020820190506129c3600083018461299f565b92915050565b600281106129d657600080fd5b50565b6000813590506129e8816129c9565b92915050565b60008060408385031215612a0557612a0461275b565b5b6000612a13858286016129d9565b9250506020612a2485828601612781565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612a6381612760565b82525050565b612a72816127c3565b82525050565b606082016000820151612a8e6000850182612a5a565b506020820151612aa16020850182612a69565b506040820151612ab46040850182612a5a565b50505050565b6000612ac68383612a78565b60608301905092915050565b6000602082019050919050565b6000612aea82612a2e565b612af48185612a39565b9350612aff83612a4a565b8060005b83811015612b30578151612b178882612aba565b9750612b2283612ad2565b925050600181019050612b03565b5085935050505092915050565b60006020820190508181036000830152612b578184612adf565b905092915050565b612b68816127c3565b8114612b7357600080fd5b50565b600081359050612b8581612b5f565b92915050565b600080600060608486031215612ba457612ba361275b565b5b6000612bb286828701612781565b9350506020612bc386828701612781565b9250506040612bd486828701612b76565b9150509250925092565b600082825260208201905092915050565b7f343848205374616b696e67206e6f7420636c6f73656400000000000000000000600082015250565b6000612c25601683612bde565b9150612c3082612bef565b602082019050919050565b60006020820190508181036000830152612c5481612c18565b9050919050565b600081519050612c6a816128cc565b92915050565b600060208284031215612c8657612c8561275b565b5b6000612c9484828501612c5b565b91505092915050565b7f4e6f74204c616e636574205061737320486f6c64657200000000000000000000600082015250565b6000612cd3601683612bde565b9150612cde82612c9d565b602082019050919050565b60006020820190508181036000830152612d0281612cc6565b9050919050565b7f5374616b696e67204e6f74204f70656e00000000000000000000000000000000600082015250565b6000612d3f601083612bde565b9150612d4a82612d09565b602082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b7f5374616b696e67206e6f7420616c6c6f77656400000000000000000000000000600082015250565b6000612dab601383612bde565b9150612db682612d75565b602082019050919050565b60006020820190508181036000830152612dda81612d9e565b9050919050565b7f4f6e6c79206d656d626572736869702063616e207374616b696e670000000000600082015250565b6000612e17601b83612bde565b9150612e2282612de1565b602082019050919050565b60006020820190508181036000830152612e4681612e0a565b9050919050565b6000606082019050612e62600083018661299f565b612e6f602083018561299f565b612e7c60408301846127f9565b949350505050565b7f48617665277420746f6b656e20696e207374616b696e67000000000000000000600082015250565b6000612eba601783612bde565b9150612ec582612e84565b602082019050919050565b60006020820190508181036000830152612ee981612ead565b9050919050565b7f43616e6e6f742077697468647261770000000000000000000000000000000000600082015250565b6000612f26600f83612bde565b9150612f3182612ef0565b602082019050919050565b60006020820190508181036000830152612f5581612f19565b9050919050565b600081905092915050565b50565b6000612f77600083612f5c565b9150612f8282612f67565b600082019050919050565b6000612f9882612f6a565b9150819050919050565b7f57697468647261773a205472616e73616374696f6e20556e737563636573736660008201527f756c2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612ffe602383612bde565b915061300982612fa2565b604082019050919050565b6000602082019050818103600083015261302d81612ff1565b9050919050565b7f496e76616c696420507269636500000000000000000000000000000000000000600082015250565b600061306a600d83612bde565b915061307582613034565b602082019050919050565b600060208201905081810360008301526130998161305d565b9050919050565b7f4e6f74204f6e2053616c65000000000000000000000000000000000000000000600082015250565b60006130d6600b83612bde565b91506130e1826130a0565b602082019050919050565b60006020820190508181036000830152613105816130c9565b9050919050565b7f343848205374616b696e67206e6f74206f70656e656400000000000000000000600082015250565b6000613142601683612bde565b915061314d8261310c565b602082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f416c7265616479207374616b6564000000000000000000000000000000000000600082015250565b60006131ae600e83612bde565b91506131b982613178565b602082019050919050565b600060208201905081810360008301526131dd816131a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061327c82612760565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132ae576132ad613242565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613315602683612bde565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b600061335682612760565b915061336183612760565b925082820261336f81612760565b9150828204841483151761338657613385613242565b5b5092915050565b600061339882612760565b91506133a383612760565b92508282019050808211156133bb576133ba613242565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006133f7601f83612bde565b9150613402826133c1565b602082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613463602083612bde565b915061346e8261342d565b602082019050919050565b6000602082019050818103600083015261349281613456565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220f936f3ea996930ff265d71a79ed548b50a8ff6c5b115ccf0777e9c1fb4ca179f64736f6c6343000811003300000000000000000000000000000000000881d280439988781f743e8cdd1fdf
Deployed Bytecode
0x6080604052600436106101665760003560e01c80637126c330116100d1578063a93ee0191161008a578063e0187c4611610064578063e0187c46146104ea578063e1b0970f14610515578063f2fde38b1461053e578063ff237c011461056757610166565b8063a93ee0191461046d578063c7a2d424146104aa578063d366cde8146104c157610166565b80637126c3301461038b578063715018a6146103b6578063738e6ddc146103cd57806389f74947146103e95780638da5cb5b14610426578063a383654b1461045157610166565b80633ccfd60b116101235780633ccfd60b14610279578063515280b8146102905780635c975abb146102cf57806369c8b344146102fa5780636a2bef2b146103375780636f189a0f1461036057610166565b80630c1c8b301461016b5780631cfff51b146101a85780631fc890a2146101d35780632e9f411e146102105780632fce539f146102395780633bc2c9ce14610250575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612796565b610590565b60405161019f91906127de565b60405180910390f35b3480156101b457600080fd5b506101bd6105b0565b6040516101ca91906127de565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190612796565b6105c3565b6040516102079190612808565b60405180910390f35b34801561021c57600080fd5b5061023760048036038101906102329190612823565b6105db565b005b34801561024557600080fd5b5061024e610b74565b005b34801561025c57600080fd5b5061027760048036038101906102729190612796565b610d7e565b005b34801561028557600080fd5b5061028e610d90565b005b34801561029c57600080fd5b506102b760048036038101906102b29190612796565b610e57565b6040516102c693929190612863565b60405180910390f35b3480156102db57600080fd5b506102e4610e8e565b6040516102f191906127de565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c91906128f8565b610ea4565b60405161032e9190612808565b60405180910390f35b34801561034357600080fd5b5061035e60048036038101906103599190612823565b610ebc565b005b34801561036c57600080fd5b506103756113a4565b6040516103829190612808565b60405180910390f35b34801561039757600080fd5b506103a06113aa565b6040516103ad9190612984565b60405180910390f35b3480156103c257600080fd5b506103cb6113d0565b005b6103e760048036038101906103e29190612823565b6113e4565b005b3480156103f557600080fd5b50610410600480360381019061040b9190612796565b6117a5565b60405161041d9190612808565b60405180910390f35b34801561043257600080fd5b5061043b6117bd565b60405161044891906129ae565b60405180910390f35b61046b60048036038101906104669190612823565b6117e6565b005b34801561047957600080fd5b50610494600480360381019061048f9190612796565b611d7b565b6040516104a19190612808565b60405180910390f35b3480156104b657600080fd5b506104bf611d9f565b005b3480156104cd57600080fd5b506104e860048036038101906104e391906129ee565b611dd3565b005b3480156104f657600080fd5b506104ff6121b0565b60405161050c9190612b3d565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612823565b6122c3565b005b34801561054a57600080fd5b50610565600480360381019061056091906128f8565b612365565b005b34801561057357600080fd5b5061058e60048036038101906105899190612b8b565b6123e8565b005b60076020528060005260406000206000915054906101000a900460ff1681565b600560009054906101000a900460ff1681565b60096020528060005260406000206000915090505481565b6106066105f56002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063e90612c3b565b60405180910390fd5b806000810361065557600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061076857503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161070f9190612808565b602060405180830381865afa15801561072c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107509190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e90612ce9565b60405180910390fd5b6107af6124f8565b600560009054906101000a900460ff166107fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f590612d55565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff1661085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590612dc1565b60405180910390fd5b6000429050806009600085815260200190815260200160002054116108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90612e2d565b60405180910390fd5b600083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610963578160086000868152602001908152602001600020541115610948576109418560086000878152602001908152602001600020546124e290919063ffffffff16565b905061095e565b61095b85836124e290919063ffffffff16565b90505b610a9f565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610a99576109bd85836124e290919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610a1e93929190612e4d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b5050505083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a9e565b600080fd5b5b8060096000868152602001908152602001600020541015610ad157600960008581526020019081526020016000205490505b80600860008681526020019081526020016000208190555060006007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa787604051610b5d9190612808565b60405180910390a45050610b6f612547565b505050565b610b7c6124f8565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008103610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90612ed0565b60405180910390fd5b4260086000838152602001908152602001600020541115610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090612f3c565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b8152600401610cb893929190612e4d565b600060405180830381600087803b158015610cd257600080fd5b505af1158015610ce6573d6000803e3d6000fd5b505050506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550803373ffffffffffffffffffffffffffffffffffffffff167f2110d0b6cb51be018d8f0547a5aedb0afdefa98b21709a26ca2e0c1cdf912b1460405160405180910390a350610d7c612547565b565b610d86612550565b8060038190555050565b610d98612550565b610da06124f8565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610dc690612f8d565b60006040518083038185875af1925050503d8060008114610e03576040519150601f19603f3d011682016040523d82523d6000602084013e610e08565b606091505b5050905080610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613014565b60405180910390fd5b50610e55612547565b565b600a6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154905083565b60008060149054906101000a900460ff16905090565b60066020528060005260406000206000915090505481565b610ee7610ed66002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1f90612c3b565b60405180910390fd5b8060008103610f3657600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061104957503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610ff09190612808565b602060405180830381865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f90612ce9565b60405180910390fd5b6110906124f8565b600560009054906101000a900460ff166110df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d690612d55565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900460ff1661113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612dc1565b60405180910390fd5b600042905080600960008581526020019081526020016000205411611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612e2d565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036112b657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b815260040161123f93929190612e4d565b600060405180830381600087803b15801561125957600080fd5b505af115801561126d573d6000803e3d6000fd5b5050505082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8360096000858152602001908152602001600020541015611301576009600084815260200190815260200160002054600860008581526020019081526020016000208190555061131a565b8360086000858152602001908152602001600020819055505b60006007600085815260200190815260200160002060006101000a81548160ff02191690831515021790555083813373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa78660405161138e9190612808565b60405180910390a45061139f612547565b505050565b60035481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113d8612550565b6113e260006125ce565b565b61140f6113fe6002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612c3b565b60405180910390fd5b806000810361145e57600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061157157503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016115189190612808565b602060405180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a790612ce9565b60405180910390fd5b6115b86124f8565b600a6000848152602001908152602001600020600201543414611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613080565b60405180910390fd5b600a600084815260200190815260200160002060010160009054906101000a900460ff16611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a906130ec565b60405180910390fd5b6000429050600081600960008681526020019081526020016000205411156116d7576116d06116ae86620151806124cc90919063ffffffff16565b60096000878152602001908152602001600020546124e290919063ffffffff16565b9050611702565b6116ff6116f086620151806124cc90919063ffffffff16565b836124e290919063ffffffff16565b90505b80600960008681526020019081526020016000208190555060016007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f7603fd6665c88a83f724acf6ad9da40b1ea6468510b2d01cfd51484a005be1308760405161178e9190612808565b60405180910390a450506117a0612547565b505050565b60086020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118116118006002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211611852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184990612c3b565b60405180910390fd5b806000810361186057600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061197357503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161191a9190612808565b602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195b9190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b6119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990612ce9565b60405180910390fd5b6119ba6124f8565b600560009054906101000a900460ff16611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090612d55565b60405180910390fd5b600a6000848152602001908152602001600020600201543414611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890613080565b60405180910390fd5b600a600084815260200190815260200160002060010160009054906101000a900460ff16611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb906130ec565b60405180910390fd5b600042905060008160096000868152602001908152602001600020541115611b2857611b21611aff86620151806124cc90919063ffffffff16565b60096000878152602001908152602001600020546124e290919063ffffffff16565b9050611b53565b611b50611b4186620151806124cc90919063ffffffff16565b836124e290919063ffffffff16565b90505b8060096000868152602001908152602001600020819055506000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c8857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611c1193929190612e4d565b600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b5050505083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600860008681526020019081526020016000208190555060006007600086815260200190815260200160002060006101000a81548160ff02191690831515021790555080823373ffffffffffffffffffffffffffffffffffffffff167f949a8db76845fd137ed692e4a5b8de95cd6038978523b30ea532d711a93fbfa787604051611d149190612808565b60405180910390a480823373ffffffffffffffffffffffffffffffffffffffff167f7603fd6665c88a83f724acf6ad9da40b1ea6468510b2d01cfd51484a005be13087604051611d649190612808565b60405180910390a45050611d76612547565b505050565b60048181548110611d8b57600080fd5b906000526020600020016000915090505481565b611da7612550565b600560009054906101000a900460ff1615600560006101000a81548160ff021916908315150217905550565b6003544210158015611e0f5750611e0b611dfa6002620151806124cc90919063ffffffff16565b6003546124e290919063ffffffff16565b4211155b611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590613158565b60405180910390fd5b8060008103611e5c57600080fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480611f6f57503373ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611f169190612808565b602060405180830381865afa158015611f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f579190612c70565b73ffffffffffffffffffffffffffffffffffffffff16145b611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa590612ce9565b60405180910390fd5b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906131c4565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161208f93929190612e4d565b600060405180830381600087803b1580156120a957600080fd5b505af11580156120bd573d6000803e3d6000fd5b5050505081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000429050600061212761211886612692565b836124e290919063ffffffff16565b905080600960008681526020019081526020016000208190555080600860008681526020019081526020016000208190555080823373ffffffffffffffffffffffffffffffffffffffff167fac86264a22d579d5f89c14f76e9780532f5acc59a5a761f8021bcda49ecb627b876040516121a19190612808565b60405180910390a45050505050565b6060600060048054905067ffffffffffffffff8111156121d3576121d26131e4565b5b60405190808252806020026020018201604052801561220c57816020015b6121f9612738565b8152602001906001900390816121f15790505b50905060005b6004805490508110156122bb57600a60006004838154811061223757612236613213565b5b90600052602060002001548152602001908152602001600020604051806060016040529081600082015481526020016001820160009054906101000a900460ff1615151515815260200160028201548152505082828151811061229d5761229c613213565b5b602002602001018190525080806122b390613271565b915050612212565b508091505090565b6122cb612550565b604051806060016040528083815260200160001515815260200182815250600a60008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055506040820151816002015590505080827feac6b822107c51beb0e368734417199764b085d91dec94196accae7f691c9f4260405160405180910390a35050565b61236d612550565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061332b565b60405180910390fd5b6123e5816125ce565b50565b6123f0612550565b81600a6000858152602001908152602001600020600201541461241257600080fd5b6000600a600085815260200190815260200160002060000154148015612439575060008314155b156124685760048390806001815401808255809150506001900390600052602060002001600090919091909150555b80600a600085815260200190815260200160002060010160006101000a81548160ff02191690831515021790555080151582847f81e8270b221d9b9b95bbf9f32fd211121796be96710b695c9e966682bc8600a960405160405180910390a4505050565b600081836124da919061334b565b905092915050565b600081836124f0919061338d565b905092915050565b60026001540361253d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125349061340d565b60405180910390fd5b6002600181905550565b60018081905550565b612558612730565b73ffffffffffffffffffffffffffffffffffffffff166125766117bd565b73ffffffffffffffffffffffffffffffffffffffff16146125cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c390613479565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060018111156126a7576126a6613499565b5b8260018111156126ba576126b9613499565b5b036126dd576126d6601e620151806124cc90919063ffffffff16565b905061272b565b6001808111156126f0576126ef613499565b5b82600181111561270357612702613499565b5b036127265761271f603c620151806124cc90919063ffffffff16565b905061272b565b600090505b919050565b600033905090565b604051806060016040528060008152602001600015158152602001600081525090565b600080fd5b6000819050919050565b61277381612760565b811461277e57600080fd5b50565b6000813590506127908161276a565b92915050565b6000602082840312156127ac576127ab61275b565b5b60006127ba84828501612781565b91505092915050565b60008115159050919050565b6127d8816127c3565b82525050565b60006020820190506127f360008301846127cf565b92915050565b61280281612760565b82525050565b600060208201905061281d60008301846127f9565b92915050565b6000806040838503121561283a5761283961275b565b5b600061284885828601612781565b925050602061285985828601612781565b9150509250929050565b600060608201905061287860008301866127f9565b61288560208301856127cf565b61289260408301846127f9565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128c58261289a565b9050919050565b6128d5816128ba565b81146128e057600080fd5b50565b6000813590506128f2816128cc565b92915050565b60006020828403121561290e5761290d61275b565b5b600061291c848285016128e3565b91505092915050565b6000819050919050565b600061294a6129456129408461289a565b612925565b61289a565b9050919050565b600061295c8261292f565b9050919050565b600061296e82612951565b9050919050565b61297e81612963565b82525050565b60006020820190506129996000830184612975565b92915050565b6129a8816128ba565b82525050565b60006020820190506129c3600083018461299f565b92915050565b600281106129d657600080fd5b50565b6000813590506129e8816129c9565b92915050565b60008060408385031215612a0557612a0461275b565b5b6000612a13858286016129d9565b9250506020612a2485828601612781565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612a6381612760565b82525050565b612a72816127c3565b82525050565b606082016000820151612a8e6000850182612a5a565b506020820151612aa16020850182612a69565b506040820151612ab46040850182612a5a565b50505050565b6000612ac68383612a78565b60608301905092915050565b6000602082019050919050565b6000612aea82612a2e565b612af48185612a39565b9350612aff83612a4a565b8060005b83811015612b30578151612b178882612aba565b9750612b2283612ad2565b925050600181019050612b03565b5085935050505092915050565b60006020820190508181036000830152612b578184612adf565b905092915050565b612b68816127c3565b8114612b7357600080fd5b50565b600081359050612b8581612b5f565b92915050565b600080600060608486031215612ba457612ba361275b565b5b6000612bb286828701612781565b9350506020612bc386828701612781565b9250506040612bd486828701612b76565b9150509250925092565b600082825260208201905092915050565b7f343848205374616b696e67206e6f7420636c6f73656400000000000000000000600082015250565b6000612c25601683612bde565b9150612c3082612bef565b602082019050919050565b60006020820190508181036000830152612c5481612c18565b9050919050565b600081519050612c6a816128cc565b92915050565b600060208284031215612c8657612c8561275b565b5b6000612c9484828501612c5b565b91505092915050565b7f4e6f74204c616e636574205061737320486f6c64657200000000000000000000600082015250565b6000612cd3601683612bde565b9150612cde82612c9d565b602082019050919050565b60006020820190508181036000830152612d0281612cc6565b9050919050565b7f5374616b696e67204e6f74204f70656e00000000000000000000000000000000600082015250565b6000612d3f601083612bde565b9150612d4a82612d09565b602082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b7f5374616b696e67206e6f7420616c6c6f77656400000000000000000000000000600082015250565b6000612dab601383612bde565b9150612db682612d75565b602082019050919050565b60006020820190508181036000830152612dda81612d9e565b9050919050565b7f4f6e6c79206d656d626572736869702063616e207374616b696e670000000000600082015250565b6000612e17601b83612bde565b9150612e2282612de1565b602082019050919050565b60006020820190508181036000830152612e4681612e0a565b9050919050565b6000606082019050612e62600083018661299f565b612e6f602083018561299f565b612e7c60408301846127f9565b949350505050565b7f48617665277420746f6b656e20696e207374616b696e67000000000000000000600082015250565b6000612eba601783612bde565b9150612ec582612e84565b602082019050919050565b60006020820190508181036000830152612ee981612ead565b9050919050565b7f43616e6e6f742077697468647261770000000000000000000000000000000000600082015250565b6000612f26600f83612bde565b9150612f3182612ef0565b602082019050919050565b60006020820190508181036000830152612f5581612f19565b9050919050565b600081905092915050565b50565b6000612f77600083612f5c565b9150612f8282612f67565b600082019050919050565b6000612f9882612f6a565b9150819050919050565b7f57697468647261773a205472616e73616374696f6e20556e737563636573736660008201527f756c2e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612ffe602383612bde565b915061300982612fa2565b604082019050919050565b6000602082019050818103600083015261302d81612ff1565b9050919050565b7f496e76616c696420507269636500000000000000000000000000000000000000600082015250565b600061306a600d83612bde565b915061307582613034565b602082019050919050565b600060208201905081810360008301526130998161305d565b9050919050565b7f4e6f74204f6e2053616c65000000000000000000000000000000000000000000600082015250565b60006130d6600b83612bde565b91506130e1826130a0565b602082019050919050565b60006020820190508181036000830152613105816130c9565b9050919050565b7f343848205374616b696e67206e6f74206f70656e656400000000000000000000600082015250565b6000613142601683612bde565b915061314d8261310c565b602082019050919050565b6000602082019050818103600083015261317181613135565b9050919050565b7f416c7265616479207374616b6564000000000000000000000000000000000000600082015250565b60006131ae600e83612bde565b91506131b982613178565b602082019050919050565b600060208201905081810360008301526131dd816131a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061327c82612760565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132ae576132ad613242565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613315602683612bde565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b600061335682612760565b915061336183612760565b925082820261336f81612760565b9150828204841483151761338657613385613242565b5b5092915050565b600061339882612760565b91506133a383612760565b92508282019050808211156133bb576133ba613242565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006133f7601f83612bde565b9150613402826133c1565b602082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613463602083612bde565b915061346e8261342d565b602082019050919050565b6000602082019050818103600083015261349281613456565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220f936f3ea996930ff265d71a79ed548b50a8ff6c5b115ccf0777e9c1fb4ca179f64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000881d280439988781f743e8cdd1fdf
-----Decoded View---------------
Arg [0] : _lancetPassAddress (address): 0x00000000000881D280439988781F743E8cDd1fdF
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000881d280439988781f743e8cdd1fdf
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.