More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 371 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Harvest Rewards ... | 17701121 | 355 days ago | IN | 0 ETH | 0.0041203 | ||||
Harvest Rewards ... | 17653838 | 361 days ago | IN | 0 ETH | 0.00284448 | ||||
Withdraw | 17418666 | 394 days ago | IN | 0 ETH | 0.00394444 | ||||
Harvest Rewards ... | 17418647 | 394 days ago | IN | 0 ETH | 0.00833755 | ||||
Withdraw | 17277357 | 414 days ago | IN | 0 ETH | 0.00624987 | ||||
Harvest Rewards ... | 17277336 | 414 days ago | IN | 0 ETH | 0.01447493 | ||||
Harvest Rewards ... | 17241176 | 419 days ago | IN | 0 ETH | 0.02087407 | ||||
Harvest Rewards ... | 17156241 | 431 days ago | IN | 0 ETH | 0.00626031 | ||||
Harvest Rewards ... | 17068396 | 444 days ago | IN | 0 ETH | 0.01024844 | ||||
Harvest Rewards ... | 17061337 | 445 days ago | IN | 0 ETH | 0.00767638 | ||||
Harvest Rewards ... | 17007152 | 453 days ago | IN | 0 ETH | 0.00627538 | ||||
Harvest Rewards ... | 16975285 | 457 days ago | IN | 0 ETH | 0.0046962 | ||||
Deposit | 16941204 | 462 days ago | IN | 0 ETH | 0.0068327 | ||||
Harvest Rewards ... | 16916234 | 465 days ago | IN | 0 ETH | 0.00531004 | ||||
Harvest Rewards ... | 16886005 | 470 days ago | IN | 0 ETH | 0.00365017 | ||||
Harvest Rewards ... | 16885982 | 470 days ago | IN | 0 ETH | 0.00775778 | ||||
Harvest Rewards ... | 16882503 | 470 days ago | IN | 0 ETH | 0.00194952 | ||||
Harvest Rewards ... | 16875444 | 471 days ago | IN | 0 ETH | 0.0021593 | ||||
Harvest Rewards ... | 16873994 | 471 days ago | IN | 0 ETH | 0.00188969 | ||||
Harvest Rewards ... | 16816481 | 479 days ago | IN | 0 ETH | 0.0060328 | ||||
Withdraw | 16806873 | 481 days ago | IN | 0 ETH | 0.00734288 | ||||
Harvest Rewards ... | 16794766 | 482 days ago | IN | 0 ETH | 0.00839661 | ||||
Harvest Rewards ... | 16757961 | 488 days ago | IN | 0 ETH | 0.00320953 | ||||
Harvest Rewards ... | 16752792 | 488 days ago | IN | 0 ETH | 0.00277158 | ||||
Harvest Rewards ... | 16718934 | 493 days ago | IN | 0 ETH | 0.00313416 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GriftersStaking
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-31 */ // SPDX-License-Identifier: MIT pragma solidity 0.7.5; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() internal { _status = _NOT_ENTERED; } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } interface IERC20 { function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } 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 _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface IGrifters { function increasePurchasedAmount(address _user, uint256 _amount) external; } contract GriftersStaking is Ownable, ReentrancyGuard { using SafeMath for uint256; using SafeERC20 for IERC20; uint256 public rewardsEndTimestamp; uint256 public rewardsStartTimestamp; uint256 public lastRewardTimestamp; uint256 public rewardPerDay; uint256[] public periodRewardsAllocations; // entire reward payable per day is further split into several lock periods, favoring longer lock ups over shorter ones; 100% is 1000 uint256[] public periodLockupDurations; // how long tokens should be locked for uint256 public PRECISION_FACTOR = 10 ** 21; uint256 public earlyWithdrawalTax = 250; // 1000 is 100% mapping(uint256 => uint256) public stakedAmounts; // how much is staked per each period mapping(uint256 => uint256) public accRewardsPerGon; // rewards payable per gon IERC20 public principleToken; //used for both staking and rewards address public treasury; //burnt tokens are sent over there bool public stakingEnabled = false; mapping(address => mapping (uint256 => UserInfo)) public userInfo; struct UserInfo { uint256 amount; // amount staked uint256 rewardDebt; // amount paid out uint256 lockExpiration; // when deposited tokens can be paid back without penalty } event Deposit(address indexed user, uint256 amount); event Withdraw(address indexed user, uint256 amount); constructor(address _token, address _treasury, uint256 _rewardPerDay, uint256 _rewardsStartTimestamp, uint256 _rewardsEndTimestamp) public { require(_rewardsEndTimestamp > _rewardsStartTimestamp); principleToken = IERC20(_token); treasury = _treasury; rewardPerDay = _rewardPerDay; rewardsStartTimestamp = _rewardsStartTimestamp; rewardsEndTimestamp = _rewardsEndTimestamp; lastRewardTimestamp = rewardsStartTimestamp; } function setupStakingTime(uint256 _startTimestamp, uint256 _endTimestamp) public onlyOwner { if (_startTimestamp != rewardsStartTimestamp) { require(block.timestamp < rewardsStartTimestamp, "Pool has started"); require(block.timestamp < _startTimestamp, "New start timestamp must be higher than current timestamp"); lastRewardTimestamp = _startTimestamp; } require(_startTimestamp < _endTimestamp, "New start timestamp must be lower than new end timestamp"); require(_endTimestamp > block.timestamp, "New end timestamp must be higher than current timestamp"); rewardsStartTimestamp = _startTimestamp; rewardsEndTimestamp = _endTimestamp; } function setupStakingRewards(uint256 _rewardPerDay, uint256 _earlyTax, uint256[] memory _allocations, uint256[] memory _durations) public onlyOwner { require(_allocations.length == _durations.length, "Incorrect input"); require(_earlyTax < 1000, "Cannot exceed 100%"); if (_allocations.length > 0) { periodRewardsAllocations = _allocations; periodLockupDurations = _durations; } rewardPerDay = _rewardPerDay; earlyWithdrawalTax = _earlyTax; } function setStakingEnabled(bool _enabled) public onlyOwner { stakingEnabled = _enabled; } function deposit(uint256 _amount, uint256 _periodID) external nonReentrant { require(_periodID < periodRewardsAllocations.length, "Period ID does not exist"); require(_amount > 0, "Must be higher than 0"); require(stakingEnabled, "Staking is disabled"); UserInfo storage user = userInfo[msg.sender][_periodID]; _updatePool(); uint256 pending; if (user.amount > 0) { pending = user.amount.mul(accRewardsPerGon[_periodID]).div(PRECISION_FACTOR).sub(user.rewardDebt); } principleToken.safeTransferFrom(msg.sender, address(this), _amount); stakedAmounts[_periodID] = stakedAmounts[_periodID].add(_amount).add(pending); user.amount = user.amount.add(_amount).add(pending); user.rewardDebt = user.amount.mul(accRewardsPerGon[_periodID]).div(PRECISION_FACTOR); if (user.lockExpiration == 0 || user.lockExpiration < block.timestamp) { user.lockExpiration = block.timestamp + periodLockupDurations[_periodID]; } emit Deposit(msg.sender, _amount); } function harvestRewardsAll(bool _reinvest) external nonReentrant { require(stakingEnabled, "Staking is disabled"); _updatePool(); uint256 pending = pendingReward(msg.sender); require(pending > 0, "No reward to harvest"); if (!_reinvest) { principleToken.safeTransfer(msg.sender, pending); IGrifters(address(principleToken)).increasePurchasedAmount(msg.sender, pending); } for (uint i = 0; i < periodRewardsAllocations.length; i++) { _harvestRewards(msg.sender, i, _reinvest); } } function harvestRewardsPeriod(uint256 _periodID, bool _reinvest) external nonReentrant { require(stakingEnabled, "Staking is disabled"); require(_periodID < periodRewardsAllocations.length, "Period ID does not exist"); _updatePool(); uint256 pending = pendingRewardPerPeriod(msg.sender, _periodID); require(pending > 0, "No reward to harvest"); if (!_reinvest) { principleToken.safeTransfer(msg.sender, pending); IGrifters(address(principleToken)).increasePurchasedAmount(msg.sender, pending); } _harvestRewards(msg.sender, _periodID, _reinvest); } function _harvestRewards(address _address, uint256 _periodID, bool _reinvest) internal { UserInfo storage user = userInfo[_address][_periodID]; if (_reinvest) { uint256 _pendingRewardPeriod = pendingRewardPerPeriod(_address, _periodID); user.amount = user.amount.add(_pendingRewardPeriod); stakedAmounts[_periodID] = stakedAmounts[_periodID].add(_pendingRewardPeriod); } user.rewardDebt = user.amount.mul(accRewardsPerGon[_periodID]).div(PRECISION_FACTOR); } function withdraw(uint256 _amount, uint256 _periodID, bool _withReward) external nonReentrant { require(stakingEnabled, "Staking is disabled"); UserInfo storage user = userInfo[msg.sender][_periodID]; require(_periodID < periodRewardsAllocations.length, "Period ID does not exist"); require(user.amount >= _amount, "Amount to withdraw too high"); _updatePool(); uint256 pending = user.amount.mul(accRewardsPerGon[_periodID]).div(PRECISION_FACTOR).sub(user.rewardDebt); user.amount = user.amount.sub(_amount); uint256 withdrawnAmount = _amount; if (user.lockExpiration > block.timestamp) { withdrawnAmount = withdrawnAmount.mul(1000 - earlyWithdrawalTax).div(1000); if (earlyWithdrawalTax > 0) { principleToken.safeTransfer(treasury, _amount.sub(withdrawnAmount)); } } principleToken.safeTransfer(msg.sender, withdrawnAmount); stakedAmounts[_periodID] = stakedAmounts[_periodID].sub(_amount); if (pending > 0 && _withReward) { principleToken.safeTransfer(msg.sender, pending); IGrifters(address(principleToken)).increasePurchasedAmount(msg.sender, pending); } user.rewardDebt = user.amount.mul(accRewardsPerGon[_periodID]).div(PRECISION_FACTOR); emit Withdraw(msg.sender, _amount); } function withdrawToken(address _tokenAddress, uint256 _tokenAmount) external onlyOwner { IERC20(_tokenAddress).safeTransfer(msg.sender, _tokenAmount); } function pendingRewardPerPeriod(address _user, uint256 _periodID) public view returns (uint256 userReward_) { require(_periodID < periodRewardsAllocations.length, "Period ID does not exist"); UserInfo memory user = userInfo[_user][_periodID]; uint256 userPeriodReward = accRewardsPerGon[_periodID]; if (block.timestamp > lastRewardTimestamp && stakedAmounts[_periodID] != 0) { userPeriodReward = adjustedAccRewardPerGon(_periodID); } userReward_ = userPeriodReward.mul(user.amount).div(PRECISION_FACTOR).sub(user.rewardDebt); } function pendingReward(address _user) public view returns (uint256 userRewardTotal_) { for (uint i = 0; i < periodRewardsAllocations.length; i++) { UserInfo memory user = userInfo[_user][i]; uint256 userPeriodReward = accRewardsPerGon[i]; if (block.timestamp > lastRewardTimestamp && stakedAmounts[i] != 0) { userPeriodReward = adjustedAccRewardPerGon(i); } userPeriodReward = userPeriodReward.mul(user.amount).div(PRECISION_FACTOR).sub(user.rewardDebt); userRewardTotal_ = userRewardTotal_ + userPeriodReward; } } function _updatePool() internal { if (block.timestamp <= lastRewardTimestamp) { return; } for (uint i = 0; i < periodRewardsAllocations.length; i++) { if (stakedAmounts[i] == 0) continue; accRewardsPerGon[i] = adjustedAccRewardPerGon(i); } lastRewardTimestamp = block.timestamp; } function adjustedAccRewardPerGon(uint256 _periodID) internal view returns (uint256 adjustedAccReward_) { require(_periodID < periodRewardsAllocations.length, "Period ID does not exist"); uint256 periodDailyReward = rewardPerDay.mul(periodRewardsAllocations[_periodID]).div(1000); uint256 time = timeRewardable(lastRewardTimestamp, block.timestamp); uint256 rewards = time.mul(periodDailyReward).div(1 days); adjustedAccReward_ = accRewardsPerGon[_periodID].add(rewards.mul(PRECISION_FACTOR).div(stakedAmounts[_periodID])); } function timeRewardable(uint256 _startTimestamp, uint256 _endTimestamp) internal view returns (uint256) { if (_endTimestamp <= rewardsEndTimestamp) { return _endTimestamp.sub(_startTimestamp); } else if (_startTimestamp >= rewardsEndTimestamp) { return 0; } else { return rewardsEndTimestamp.sub(_startTimestamp); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_rewardPerDay","type":"uint256"},{"internalType":"uint256","name":"_rewardsStartTimestamp","type":"uint256"},{"internalType":"uint256","name":"_rewardsEndTimestamp","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"PRECISION_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accRewardsPerGon","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_periodID","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyWithdrawalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_reinvest","type":"bool"}],"name":"harvestRewardsAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodID","type":"uint256"},{"internalType":"bool","name":"_reinvest","type":"bool"}],"name":"harvestRewardsPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"userRewardTotal_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_periodID","type":"uint256"}],"name":"pendingRewardPerPeriod","outputs":[{"internalType":"uint256","name":"userReward_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"periodLockupDurations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"periodRewardsAllocations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"principleToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setStakingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardPerDay","type":"uint256"},{"internalType":"uint256","name":"_earlyTax","type":"uint256"},{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"},{"internalType":"uint256[]","name":"_durations","type":"uint256[]"}],"name":"setupStakingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTimestamp","type":"uint256"},{"internalType":"uint256","name":"_endTimestamp","type":"uint256"}],"name":"setupStakingTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"lockExpiration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_periodID","type":"uint256"},{"internalType":"bool","name":"_withReward","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052683635c9adc5dea0000060085560fa6009556000600d60146101000a81548160ff0219169083151502179055503480156200003e57600080fd5b50604051620034a0380380620034a0833981810160405260a08110156200006457600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620000af6200020c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508181116200016157600080fd5b84600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826005819055508160038190555080600281905550600354600481905550505050505062000214565b600033905090565b61327c80620002246000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806387f95bbf116100f9578063ccd34cd511610097578063f2fde38b11610071578063f2fde38b1461079e578063f40f0f52146107e2578063f8077fae1461083a578063f8f0dd2114610858576101a9565b8063ccd34cd514610706578063e2bbb15814610724578063e33524ff1461075c576101a9565b80639e281a98116100d35780639e281a9814610628578063af8f42b814610676578063bc49912814610694578063bce8567e146106d6576101a9565b806387f95bbf146104525780638da5cb5b1461049457806392799f8f146104c8576101a9565b80635fbbdb07116101665780636fd6be35116101405780636fd6be351461037a578063715018a6146103ae57806374afcc41146103b85780637fbf744e146103f0576101a9565b80635fbbdb071461030a57806361d027b314610328578063635685021461035c576101a9565b80631cfff51b146101ae5780631f6f18bd146101ce57806321ce919d146101fe57806333cfcd3b1461026e578063385a7d57146102b25780634d8c5689146102d0575b600080fd5b6101b661089a565b60405180821515815260200191505060405180910390f35b6101fc600480360360208110156101e457600080fd5b810190808035151590602001909291905050506108ad565b005b61024a6004803603604081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6d565b60405180848152602001838152602001828152602001935050505060405180910390f35b6102b06004803603606081101561028457600080fd5b810190808035906020019092919080359060200190929190803515159060200190929190505050610ba4565b005b6102ba611174565b6040518082815260200191505060405180910390f35b610308600480360360408110156102e657600080fd5b810190808035906020019092919080351515906020019092919050505061117a565b005b610312611498565b6040518082815260200191505060405180910390f35b61033061149e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103646114c4565b6040518082815260200191505060405180910390f35b6103826114ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b66114f0565b005b6103ee600480360360408110156103ce57600080fd5b81019080803590602001909291908035906020019092919050505061165d565b005b61043c6004803603604081101561040657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118ae565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050611a46565b6040518082815260200191505060405180910390f35b61049c611a6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610626600480360360808110156104de57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184602083028401116401000000008311171561054357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460208302840111640100000000831117156105d757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611a93565b005b6106746004803603604081101561063e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7d565b005b61067e611d5b565b6040518082815260200191505060405180910390f35b6106c0600480360360208110156106aa57600080fd5b8101908080359060200190929190505050611d61565b6040518082815260200191505060405180910390f35b610704600480360360208110156106ec57600080fd5b81019080803515159060200190929190505050611d79565b005b61070e611e45565b6040518082815260200191505060405180910390f35b61075a6004803603604081101561073a57600080fd5b810190808035906020019092919080359060200190929190505050611e4b565b005b6107886004803603602081101561077257600080fd5b81019080803590602001909291905050506122ad565b6040518082815260200191505060405180910390f35b6107e0600480360360208110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c5565b005b610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124b7565b6040518082815260200191505060405180910390f35b6108426125fa565b6040518082815260200191505060405180910390f35b6108846004803603602081101561086e57600080fd5b8101908080359060200190929190505050612600565b6040518082815260200191505060405180910390f35b600d60149054906101000a900460ff1681565b60026001541415610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff166109b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6109b8612624565b60006109c3336124b7565b905060008111610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072657761726420746f206861727665737400000000000000000000000081525060200191505060405180910390fd5b81610b3957610a8d3382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610b2057600080fd5b505af1158015610b34573d6000803e3d6000fd5b505050505b60005b600680549050811015610b6157610b5433828561273e565b8080600101915050610b3c565b50506001808190555050565b600e602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60026001541415610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff16610ca7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002090506006805490508310610d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b8381600001541015610def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f416d6f756e7420746f20776974686472617720746f6f2068696768000000000081525060200191505060405180910390fd5b610df7612624565b6000610e4d8260010154610e3f600854610e31600b60008a815260200190815260200160002054876000015461285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b9050610e6685836000015461295f90919063ffffffff16565b826000018190555060008590504283600201541115610f3c57610eac6103e8610e9e6009546103e8038461285090919063ffffffff16565b6128d690919063ffffffff16565b905060006009541115610f3b57610f3a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef2838961295f90919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b5b5b610f893382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b610faf86600a60008881526020019081526020016000205461295f90919063ffffffff16565b600a600087815260200190815260200160002081905550600082118015610fd35750835b156110d1576110253383600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b505050505b61110f600854611101600b600089815260200190815260200160002054866000015461285090919063ffffffff16565b6128d690919063ffffffff16565b83600101819055503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364876040518082815260200191505060405180910390a250505060018081905550505050565b60025481565b600260015414156111f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff1661127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b60068054905082106112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6112ff612624565b600061130b33846118ae565b905060008111611383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072657761726420746f206861727665737400000000000000000000000081525060200191505060405180910390fd5b81611481576113d53382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b505050505b61148c33848461273e565b50600180819055505050565b60095481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86129e2565b73ffffffffffffffffffffffffffffffffffffffff16611516611a6a565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116656129e2565b73ffffffffffffffffffffffffffffffffffffffff16611683611a6a565b73ffffffffffffffffffffffffffffffffffffffff161461170c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60035482146117ec57600354421061178c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f506f6f6c2068617320737461727465640000000000000000000000000000000081525060200191505060405180910390fd5b8142106117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061318b6039913960400191505060405180910390fd5b816004819055505b808210611844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806131e56038913960400191505060405180910390fd5b42811161189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061312e6037913960400191505060405180910390fd5b81600381905550806002819055505050565b6000600680549050821061192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b61193261307c565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000600b6000858152602001908152602001600020549050600454421180156119ea57506000600a60008681526020019081526020016000205414155b156119fb576119f8846129ea565b90505b611a3c8260200151611a2e600854611a2086600001518661285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b9250505092915050565b60068181548110611a5657600080fd5b906000526020600020016000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a9b6129e2565b73ffffffffffffffffffffffffffffffffffffffff16611ab9611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611bb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88310611c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f43616e6e6f74206578636565642031303025000000000000000000000000000081525060200191505060405180910390fd5b600082511115611c69578160069080519060200190611c5092919061309d565b508060079080519060200190611c6792919061309d565b505b836005819055508260098190555050505050565b611c856129e2565b73ffffffffffffffffffffffffffffffffffffffff16611ca3611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611d2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d5733828473ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b5050565b60055481565b600a6020528060005260406000206000915090505481565b611d816129e2565b73ffffffffffffffffffffffffffffffffffffffff16611d9f611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b60085481565b60026001541415611ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506006805490508110611f46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b60008211611fbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d75737420626520686967686572207468616e2030000000000000000000000081525060200191505060405180910390fd5b600d60149054906101000a900460ff1661203e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020905061209a612624565b600080826000015411156120ff576120fc82600101546120ee6008546120e0600b600089815260200190815260200160002054876000015461285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b90505b61214e333086600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b4f909392919063ffffffff16565b6121868161217886600a600088815260200190815260200160002054612c1090919063ffffffff16565b612c1090919063ffffffff16565b600a6000858152602001908152602001600020819055506121c6816121b8868560000154612c1090919063ffffffff16565b612c1090919063ffffffff16565b826000018190555061220c6008546121fe600b600087815260200190815260200160002054856000015461285090919063ffffffff16565b6128d690919063ffffffff16565b826001018190555060008260020154148061222a5750428260020154105b15612252576007838154811061223c57fe5b9060005260206000200154420182600201819055505b3373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c856040518082815260200191505060405180910390a25050600180819055505050565b600b6020528060005260406000206000915090505481565b6122cd6129e2565b73ffffffffffffffffffffffffffffffffffffffff166122eb611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600090505b6006805490508110156125f4576124d461307c565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000600b60008481526020019081526020016000205490506004544211801561258c57506000600a60008581526020019081526020016000205414155b1561259d5761259a836129ea565b90505b6125de82602001516125d06008546125c286600001518661285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b90508084019350505080806001019150506124bf565b50919050565b60045481565b6007818154811061261057600080fd5b906000526020600020016000915090505481565b60045442116126325761269a565b60005b600680549050811015612691576000600a600083815260200190815260200160002054141561266357612684565b61266c816129ea565b600b6000838152602001908152602001600020819055505b8080600101915050612635565b50426004819055505b565b6127398363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c98565b505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020905081156128045760006127a485856118ae565b90506127bd818360000154612c1090919063ffffffff16565b82600001819055506127eb81600a600087815260200190815260200160002054612c1090919063ffffffff16565b600a600086815260200190815260200160002081905550505b612842600854612834600b600087815260200190815260200160002054846000015461285090919063ffffffff16565b6128d690919063ffffffff16565b816001018190555050505050565b60008083141561286357600090506128d0565b600082840290508284828161287457fe5b04146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131c46021913960400191505060405180910390fd5b809150505b92915050565b600080821161294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161295657fe5b04905092915050565b6000828211156129d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600033905090565b60006006805490508210612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6000612aa86103e8612a9a60068681548110612a7e57fe5b906000526020600020015460055461285090919063ffffffff16565b6128d690919063ffffffff16565b90506000612ab860045442612d87565b90506000612ae462015180612ad6858561285090919063ffffffff16565b6128d690919063ffffffff16565b9050612b45612b23600a600088815260200190815260200160002054612b156008548561285090919063ffffffff16565b6128d690919063ffffffff16565b600b600088815260200190815260200160002054612c1090919063ffffffff16565b9350505050919050565b612c0a846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c98565b50505050565b600080828401905083811015612c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6060612cfa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ddc9092919063ffffffff16565b9050600081511115612d8257808060200190516020811015612d1b57600080fd5b8101908080519060200190929190505050612d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061321d602a913960400191505060405180910390fd5b5b505050565b60006002548211612dac57612da5838361295f90919063ffffffff16565b9050612dd6565b6002548310612dbe5760009050612dd6565b612dd38360025461295f90919063ffffffff16565b90505b92915050565b6060612deb8484600085612df4565b90509392505050565b606082471015612e4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131656026913960400191505060405180910390fd5b612e5885612f9d565b612eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612f1a5780518252602082019150602081019050602083039250612ef7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f91828286612fb0565b92505050949350505050565b600080823b905060008111915050919050565b60608315612fc057829050613075565b600083511115612fd35782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561303a57808201518184015260208101905061301f565b50505050905090810190601f1680156130675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b60405180606001604052806000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156130d9579160200282015b828111156130d85782518255916020019190600101906130bd565b5b5090506130e691906130ea565b5090565b5b808211156131035760008160009055506001016130eb565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734e657720656e642074696d657374616d70206d75737420626520686967686572207468616e2063757272656e742074696d657374616d70416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4e65772073746172742074696d657374616d70206d75737420626520686967686572207468616e2063757272656e742074696d657374616d70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774e65772073746172742074696d657374616d70206d757374206265206c6f776572207468616e206e657720656e642074696d657374616d705361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ab950bc1b6eee574312e880497c21ebf5a56ffd3f5c7c5cc9d951e8d008e451464736f6c63430007050033000000000000000000000000f3d4151ef04bbda5769ea6c8c0f357b872edd210000000000000000000000000ffa9cc4b7c9da9e5213aa4c12873ad57db35166400000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000006295262800000000000000000000000000000000000000000000000000000000983a0f28
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806387f95bbf116100f9578063ccd34cd511610097578063f2fde38b11610071578063f2fde38b1461079e578063f40f0f52146107e2578063f8077fae1461083a578063f8f0dd2114610858576101a9565b8063ccd34cd514610706578063e2bbb15814610724578063e33524ff1461075c576101a9565b80639e281a98116100d35780639e281a9814610628578063af8f42b814610676578063bc49912814610694578063bce8567e146106d6576101a9565b806387f95bbf146104525780638da5cb5b1461049457806392799f8f146104c8576101a9565b80635fbbdb07116101665780636fd6be35116101405780636fd6be351461037a578063715018a6146103ae57806374afcc41146103b85780637fbf744e146103f0576101a9565b80635fbbdb071461030a57806361d027b314610328578063635685021461035c576101a9565b80631cfff51b146101ae5780631f6f18bd146101ce57806321ce919d146101fe57806333cfcd3b1461026e578063385a7d57146102b25780634d8c5689146102d0575b600080fd5b6101b661089a565b60405180821515815260200191505060405180910390f35b6101fc600480360360208110156101e457600080fd5b810190808035151590602001909291905050506108ad565b005b61024a6004803603604081101561021457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b6d565b60405180848152602001838152602001828152602001935050505060405180910390f35b6102b06004803603606081101561028457600080fd5b810190808035906020019092919080359060200190929190803515159060200190929190505050610ba4565b005b6102ba611174565b6040518082815260200191505060405180910390f35b610308600480360360408110156102e657600080fd5b810190808035906020019092919080351515906020019092919050505061117a565b005b610312611498565b6040518082815260200191505060405180910390f35b61033061149e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103646114c4565b6040518082815260200191505060405180910390f35b6103826114ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b66114f0565b005b6103ee600480360360408110156103ce57600080fd5b81019080803590602001909291908035906020019092919050505061165d565b005b61043c6004803603604081101561040657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118ae565b6040518082815260200191505060405180910390f35b61047e6004803603602081101561046857600080fd5b8101908080359060200190929190505050611a46565b6040518082815260200191505060405180910390f35b61049c611a6a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610626600480360360808110156104de57600080fd5b8101908080359060200190929190803590602001909291908035906020019064010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184602083028401116401000000008311171561054357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156105a357600080fd5b8201836020820111156105b557600080fd5b803590602001918460208302840111640100000000831117156105d757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611a93565b005b6106746004803603604081101561063e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7d565b005b61067e611d5b565b6040518082815260200191505060405180910390f35b6106c0600480360360208110156106aa57600080fd5b8101908080359060200190929190505050611d61565b6040518082815260200191505060405180910390f35b610704600480360360208110156106ec57600080fd5b81019080803515159060200190929190505050611d79565b005b61070e611e45565b6040518082815260200191505060405180910390f35b61075a6004803603604081101561073a57600080fd5b810190808035906020019092919080359060200190929190505050611e4b565b005b6107886004803603602081101561077257600080fd5b81019080803590602001909291905050506122ad565b6040518082815260200191505060405180910390f35b6107e0600480360360208110156107b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c5565b005b610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124b7565b6040518082815260200191505060405180910390f35b6108426125fa565b6040518082815260200191505060405180910390f35b6108846004803603602081101561086e57600080fd5b8101908080359060200190929190505050612600565b6040518082815260200191505060405180910390f35b600d60149054906101000a900460ff1681565b60026001541415610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff166109b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6109b8612624565b60006109c3336124b7565b905060008111610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072657761726420746f206861727665737400000000000000000000000081525060200191505060405180910390fd5b81610b3957610a8d3382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610b2057600080fd5b505af1158015610b34573d6000803e3d6000fd5b505050505b60005b600680549050811015610b6157610b5433828561273e565b8080600101915050610b3c565b50506001808190555050565b600e602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154905083565b60026001541415610c1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff16610ca7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002090506006805490508310610d75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b8381600001541015610def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f416d6f756e7420746f20776974686472617720746f6f2068696768000000000081525060200191505060405180910390fd5b610df7612624565b6000610e4d8260010154610e3f600854610e31600b60008a815260200190815260200160002054876000015461285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b9050610e6685836000015461295f90919063ffffffff16565b826000018190555060008590504283600201541115610f3c57610eac6103e8610e9e6009546103e8038461285090919063ffffffff16565b6128d690919063ffffffff16565b905060006009541115610f3b57610f3a600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef2838961295f90919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b5b5b610f893382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b610faf86600a60008881526020019081526020016000205461295f90919063ffffffff16565b600a600087815260200190815260200160002081905550600082118015610fd35750835b156110d1576110253383600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b505050505b61110f600854611101600b600089815260200190815260200160002054866000015461285090919063ffffffff16565b6128d690919063ffffffff16565b83600101819055503373ffffffffffffffffffffffffffffffffffffffff167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364876040518082815260200191505060405180910390a250505060018081905550505050565b60025481565b600260015414156111f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b6002600181905550600d60149054906101000a900460ff1661127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b60068054905082106112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6112ff612624565b600061130b33846118ae565b905060008111611383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072657761726420746f206861727665737400000000000000000000000081525060200191505060405180910390fd5b81611481576113d53382600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b6a100733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b505050505b61148c33848461273e565b50600180819055505050565b60095481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86129e2565b73ffffffffffffffffffffffffffffffffffffffff16611516611a6a565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116656129e2565b73ffffffffffffffffffffffffffffffffffffffff16611683611a6a565b73ffffffffffffffffffffffffffffffffffffffff161461170c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60035482146117ec57600354421061178c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f506f6f6c2068617320737461727465640000000000000000000000000000000081525060200191505060405180910390fd5b8142106117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603981526020018061318b6039913960400191505060405180910390fd5b816004819055505b808210611844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806131e56038913960400191505060405180910390fd5b42811161189c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061312e6037913960400191505060405180910390fd5b81600381905550806002819055505050565b6000600680549050821061192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b61193261307c565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000600b6000858152602001908152602001600020549050600454421180156119ea57506000600a60008681526020019081526020016000205414155b156119fb576119f8846129ea565b90505b611a3c8260200151611a2e600854611a2086600001518661285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b9250505092915050565b60068181548110611a5657600080fd5b906000526020600020016000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a9b6129e2565b73ffffffffffffffffffffffffffffffffffffffff16611ab9611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611b42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611bb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6103e88310611c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f43616e6e6f74206578636565642031303025000000000000000000000000000081525060200191505060405180910390fd5b600082511115611c69578160069080519060200190611c5092919061309d565b508060079080519060200190611c6792919061309d565b505b836005819055508260098190555050505050565b611c856129e2565b73ffffffffffffffffffffffffffffffffffffffff16611ca3611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611d2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611d5733828473ffffffffffffffffffffffffffffffffffffffff1661269c9092919063ffffffff16565b5050565b60055481565b600a6020528060005260406000206000915090505481565b611d816129e2565b73ffffffffffffffffffffffffffffffffffffffff16611d9f611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614611e28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d60146101000a81548160ff02191690831515021790555050565b60085481565b60026001541415611ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081525060200191505060405180910390fd5b60026001819055506006805490508110611f46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b60008211611fbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d75737420626520686967686572207468616e2030000000000000000000000081525060200191505060405180910390fd5b600d60149054906101000a900460ff1661203e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f5374616b696e672069732064697361626c65640000000000000000000000000081525060200191505060405180910390fd5b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020905061209a612624565b600080826000015411156120ff576120fc82600101546120ee6008546120e0600b600089815260200190815260200160002054876000015461285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b90505b61214e333086600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b4f909392919063ffffffff16565b6121868161217886600a600088815260200190815260200160002054612c1090919063ffffffff16565b612c1090919063ffffffff16565b600a6000858152602001908152602001600020819055506121c6816121b8868560000154612c1090919063ffffffff16565b612c1090919063ffffffff16565b826000018190555061220c6008546121fe600b600087815260200190815260200160002054856000015461285090919063ffffffff16565b6128d690919063ffffffff16565b826001018190555060008260020154148061222a5750428260020154105b15612252576007838154811061223c57fe5b9060005260206000200154420182600201819055505b3373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c856040518082815260200191505060405180910390a25050600180819055505050565b600b6020528060005260406000206000915090505481565b6122cd6129e2565b73ffffffffffffffffffffffffffffffffffffffff166122eb611a6a565b73ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131086026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600090505b6006805490508110156125f4576124d461307c565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000600b60008481526020019081526020016000205490506004544211801561258c57506000600a60008581526020019081526020016000205414155b1561259d5761259a836129ea565b90505b6125de82602001516125d06008546125c286600001518661285090919063ffffffff16565b6128d690919063ffffffff16565b61295f90919063ffffffff16565b90508084019350505080806001019150506124bf565b50919050565b60045481565b6007818154811061261057600080fd5b906000526020600020016000915090505481565b60045442116126325761269a565b60005b600680549050811015612691576000600a600083815260200190815260200160002054141561266357612684565b61266c816129ea565b600b6000838152602001908152602001600020819055505b8080600101915050612635565b50426004819055505b565b6127398363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c98565b505050565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020905081156128045760006127a485856118ae565b90506127bd818360000154612c1090919063ffffffff16565b82600001819055506127eb81600a600087815260200190815260200160002054612c1090919063ffffffff16565b600a600086815260200190815260200160002081905550505b612842600854612834600b600087815260200190815260200160002054846000015461285090919063ffffffff16565b6128d690919063ffffffff16565b816001018190555050505050565b60008083141561286357600090506128d0565b600082840290508284828161287457fe5b04146128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131c46021913960400191505060405180910390fd5b809150505b92915050565b600080821161294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161295657fe5b04905092915050565b6000828211156129d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600033905090565b60006006805490508210612a66576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f506572696f6420494420646f6573206e6f74206578697374000000000000000081525060200191505060405180910390fd5b6000612aa86103e8612a9a60068681548110612a7e57fe5b906000526020600020015460055461285090919063ffffffff16565b6128d690919063ffffffff16565b90506000612ab860045442612d87565b90506000612ae462015180612ad6858561285090919063ffffffff16565b6128d690919063ffffffff16565b9050612b45612b23600a600088815260200190815260200160002054612b156008548561285090919063ffffffff16565b6128d690919063ffffffff16565b600b600088815260200190815260200160002054612c1090919063ffffffff16565b9350505050919050565b612c0a846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c98565b50505050565b600080828401905083811015612c8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6060612cfa826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ddc9092919063ffffffff16565b9050600081511115612d8257808060200190516020811015612d1b57600080fd5b8101908080519060200190929190505050612d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061321d602a913960400191505060405180910390fd5b5b505050565b60006002548211612dac57612da5838361295f90919063ffffffff16565b9050612dd6565b6002548310612dbe5760009050612dd6565b612dd38360025461295f90919063ffffffff16565b90505b92915050565b6060612deb8484600085612df4565b90509392505050565b606082471015612e4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131656026913960400191505060405180910390fd5b612e5885612f9d565b612eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310612f1a5780518252602082019150602081019050602083039250612ef7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612f7c576040519150601f19603f3d011682016040523d82523d6000602084013e612f81565b606091505b5091509150612f91828286612fb0565b92505050949350505050565b600080823b905060008111915050919050565b60608315612fc057829050613075565b600083511115612fd35782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561303a57808201518184015260208101905061301f565b50505050905090810190601f1680156130675780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b60405180606001604052806000815260200160008152602001600081525090565b8280548282559060005260206000209081019282156130d9579160200282015b828111156130d85782518255916020019190600101906130bd565b5b5090506130e691906130ea565b5090565b5b808211156131035760008160009055506001016130eb565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734e657720656e642074696d657374616d70206d75737420626520686967686572207468616e2063757272656e742074696d657374616d70416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4e65772073746172742074696d657374616d70206d75737420626520686967686572207468616e2063757272656e742074696d657374616d70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774e65772073746172742074696d657374616d70206d757374206265206c6f776572207468616e206e657720656e642074696d657374616d705361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220ab950bc1b6eee574312e880497c21ebf5a56ffd3f5c7c5cc9d951e8d008e451464736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f3d4151ef04bbda5769ea6c8c0f357b872edd210000000000000000000000000ffa9cc4b7c9da9e5213aa4c12873ad57db35166400000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000006295262800000000000000000000000000000000000000000000000000000000983a0f28
-----Decoded View---------------
Arg [0] : _token (address): 0xF3D4151eF04bbDA5769ea6C8c0F357B872Edd210
Arg [1] : _treasury (address): 0xffa9Cc4B7C9da9E5213aA4c12873aD57db351664
Arg [2] : _rewardPerDay (uint256): 1000000000000000
Arg [3] : _rewardsStartTimestamp (uint256): 1653941800
Arg [4] : _rewardsEndTimestamp (uint256): 2553941800
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000f3d4151ef04bbda5769ea6c8c0f357b872edd210
Arg [1] : 000000000000000000000000ffa9cc4b7c9da9e5213aa4c12873ad57db351664
Arg [2] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [3] : 0000000000000000000000000000000000000000000000000000000062952628
Arg [4] : 00000000000000000000000000000000000000000000000000000000983a0f28
Deployed Bytecode Sourcemap
14221:10427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15208:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18661:593;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15251:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20463:1413;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14349:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19262:653;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14828:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15143:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14390:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15072:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1608:148;;;:::i;:::-;;16153:735;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22058:597;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14510:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;957:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16896:523;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21884:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14474:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14892:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17427:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14779:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17538:1115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14985:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1911:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22663:616;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14433:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14692:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15208:34;;;;;;;;;;;;;:::o;18661:593::-;3837:1;4066:7;;:19;;4058:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3837:1;4199:7;:18;;;;18745:14:::1;;;;;;;;;;;18737:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18794:13;:11;:13::i;:::-;18820:15;18838:25;18852:10;18838:13;:25::i;:::-;18820:43;;18892:1;18882:7;:11;18874:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18934:9;18929:181;;18958:48;18986:10;18998:7;18958:14;;;;;;;;;;;:27;;;;:48;;;;;:::i;:::-;19037:14;;;;;;;;;;;19019:58;;;19078:10;19090:7;19019:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18929:181;19127:6;19122:125;19143:24;:31;;;;19139:1;:35;19122:125;;;19194:41;19210:10;19222:1;19225:9;19194:15;:41::i;:::-;19176:3;;;;;;;19122:125;;;;4230:1;3793::::0;4378:7;:22;;;;18661:593;:::o;15251:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20463:1413::-;3837:1;4066:7;;:19;;4058:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3837:1;4199:7;:18;;;;20576:14:::1;;;;;;;;;;;20568:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20625:21;20649:8;:20;20658:10;20649:20;;;;;;;;;;;;;;;:31;20670:9;20649:31;;;;;;;;;;;20625:55;;20711:24;:31;;;;20699:9;:43;20691:80;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20805:7;20790:4;:11;;;:22;;20782:62;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;20857:13;:11;:13::i;:::-;20883:15;20901:87;20972:4;:15;;;20901:66;20950:16;;20901:44;20917:16;:27;20934:9;20917:27;;;;;;;;;;;;20901:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;:70;;:87;;;;:::i;:::-;20883:105;;21015:24;21031:7;21015:4;:11;;;:15;;:24;;;;:::i;:::-;21001:4;:11;;:38;;;;21050:23;21076:7;21050:33;;21120:15;21098:4;:19;;;:37;21094:278;;;21168:56;21219:4;21168:46;21195:18;;21188:4;:25;21168:15;:19;;:46;;;;:::i;:::-;:50;;:56;;;;:::i;:::-;21150:74;;21262:1;21241:18;;:22;21237:124;;;21280:67;21308:8;;;;;;;;;;;21318:28;21330:15;21318:7;:11;;:28;;;;:::i;:::-;21280:14;;;;;;;;;;;:27;;;;:67;;;;;:::i;:::-;21237:124;21094:278;21382:56;21410:10;21422:15;21382:14;;;;;;;;;;;:27;;;;:56;;;;;:::i;:::-;21476:37;21505:7;21476:13;:24;21490:9;21476:24;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;21449:13;:24;21463:9;21449:24;;;;;;;;;;;:64;;;;21540:1;21530:7;:11;:26;;;;;21545:11;21530:26;21526:201;;;21573:48;21601:10;21613:7;21573:14;;;;;;;;;;;:27;;;;:48;;;;;:::i;:::-;21654:14;;;;;;;;;;;21636:58;;;21695:10;21707:7;21636:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21526:201;21757:66;21806:16;;21757:44;21773:16;:27;21790:9;21773:27;;;;;;;;;;;;21757:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;21739:4;:15;;:84;;;;21848:10;21839:29;;;21860:7;21839:29;;;;;;;;;;;;;;;;;;4230:1;;;3793::::0;4378:7;:22;;;;20463:1413;;;:::o;14349:34::-;;;;:::o;19262:653::-;3837:1;4066:7;;:19;;4058:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3837:1;4199:7;:18;;;;19368:14:::1;;;;;;;;;;;19360:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19437:24;:31;;;;19425:9;:43;19417:80;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19508:13;:11;:13::i;:::-;19534:15;19552:45;19575:10;19587:9;19552:22;:45::i;:::-;19534:63;;19626:1;19616:7;:11;19608:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19670:9;19665:181;;19694:48;19722:10;19734:7;19694:14;;;;;;;;;;;:27;;;;:48;;;;;:::i;:::-;19773:14;;;;;;;;;;;19755:58;;;19814:10;19826:7;19755:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19665:181;19858:49;19874:10;19886:9;19897;19858:15;:49::i;:::-;4230:1;3793::::0;4378:7;:22;;;;19262:653;;:::o;14828:39::-;;;;:::o;15143:23::-;;;;;;;;;;;;;:::o;14390:36::-;;;;:::o;15072:28::-;;;;;;;;;;;;;:::o;1608:148::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1715:1:::1;1678:40;;1699:6;::::0;::::1;;;;;;;;1678:40;;;;;;;;;;;;1746:1;1729:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1608:148::o:0;16153:735::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16278:21:::1;;16259:15;:40;16255:305;;16340:21;;16322:15;:39;16314:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16421:15;16403;:33;16395:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16533:15;16511:19;:37;;;;16255:305;16598:13;16580:15;:31;16572:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16707:15;16691:13;:31;16683:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16819:15;16795:21;:39;;;;16867:13;16845:19;:35;;;;16153:735:::0;;:::o;22058:597::-;22145:19;22197:24;:31;;;;22185:9;:43;22177:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22268:20;;:::i;:::-;22291:8;:15;22300:5;22291:15;;;;;;;;;;;;;;;:26;22307:9;22291:26;;;;;;;;;;;22268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22328:24;22355:16;:27;22372:9;22355:27;;;;;;;;;;;;22328:54;;22415:19;;22397:15;:37;:70;;;;;22466:1;22438:13;:24;22452:9;22438:24;;;;;;;;;;;;:29;;22397:70;22393:154;;;22501:34;22525:9;22501:23;:34::i;:::-;22482:53;;22393:154;22571:76;22631:4;:15;;;22571:55;22609:16;;22571:33;22592:4;:11;;;22571:16;:20;;:33;;;;:::i;:::-;:37;;:55;;;;:::i;:::-;:59;;:76;;;;:::i;:::-;22557:90;;22058:597;;;;;;:::o;14510:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;957:87::-;1003:7;1030:6;;;;;;;;;;;1023:13;;957:87;:::o;16896:523::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17086:10:::1;:17;17063:12;:19;:40;17055:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17154:4;17142:9;:16;17134:47;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17218:1;17196:12;:19;:23;17192:140;;;17261:12;17234:24;:39;;;;;;;;;;;;:::i;:::-;;17310:10;17286:21;:34;;;;;;;;;;;;:::i;:::-;;17192:140;17357:13;17342:12;:28;;;;17402:9;17381:18;:30;;;;16896:523:::0;;;;:::o;21884:166::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21982:60:::1;22017:10;22029:12;21989:13;21982:34;;;;:60;;;;;:::i;:::-;21884:166:::0;;:::o;14474:27::-;;;;:::o;14892:48::-;;;;;;;;;;;;;;;;;:::o;17427:103::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17514:8:::1;17497:14;;:25;;;;;;;;;;;;;;;;;;17427:103:::0;:::o;14779:42::-;;;;:::o;17538:1115::-;3837:1;4066:7;;:19;;4058:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3837:1;4199:7;:18;;;;17644:24:::1;:31;;;;17632:9;:43;17624:80;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17733:1;17723:7;:11;17715:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17779:14;;;;;;;;;;;17771:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17828:21;17852:8;:20;17861:10;17852:20;;;;;;;;;;;;;;;:31;17873:9;17852:31;;;;;;;;;;;17828:55;;17896:13;:11;:13::i;:::-;17922:15;17968:1:::0;17954:4:::1;:11;;;:15;17950:145;;;17996:87;18067:4;:15;;;17996:66;18045:16;;17996:44;18012:16;:27;18029:9;18012:27;;;;;;;;;;;;17996:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;:70;;:87;;;;:::i;:::-;17986:97;;17950:145;18107:67;18139:10;18159:4;18166:7;18107:14;;;;;;;;;;;:31;;;;:67;;;;;;:::i;:::-;18212:50;18254:7;18212:37;18241:7;18212:13;:24;18226:9;18212:24;;;;;;;;;;;;:28;;:37;;;;:::i;:::-;:41;;:50;;;;:::i;:::-;18185:13;:24;18199:9;18185:24;;;;;;;;;;;:77;;;;18287:37;18316:7;18287:24;18303:7;18287:4;:11;;;:15;;:24;;;;:::i;:::-;:28;;:37;;;;:::i;:::-;18273:4;:11;;:51;;;;18353:66;18402:16;;18353:44;18369:16;:27;18386:9;18369:27;;;;;;;;;;;;18353:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;18335:4;:15;;:84;;;;18459:1;18436:4;:19;;;:24;:65;;;;18486:15;18464:4;:19;;;:37;18436:65;18432:168;;;18556:21;18578:9;18556:32;;;;;;;;;;;;;;;;18538:15;:50;18516:4;:19;;:72;;;;18432:168;18625:10;18617:28;;;18637:7;18617:28;;;;;;;;;;;;;;;;;;4230:1;;3793::::0;4378:7;:22;;;;17538:1115;;:::o;14985:51::-;;;;;;;;;;;;;;;;;:::o;1911:244::-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:1:::1;2000:22;;:8;:22;;;;1992:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:8;2081:38;;2102:6;::::0;::::1;;;;;;;;2081:38;;;;;;;;;;;;2139:8;2130:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1911:244:::0;:::o;22663:616::-;22722:24;22764:6;22773:1;22764:10;;22759:513;22780:24;:31;;;;22776:1;:35;22759:513;;;22831:20;;:::i;:::-;22854:8;:15;22863:5;22854:15;;;;;;;;;;;;;;;:18;22870:1;22854:18;;;;;;;;;;;22831:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22885:24;22912:16;:19;22929:1;22912:19;;;;;;;;;;;;22885:46;;22966:19;;22948:15;:37;:62;;;;;23009:1;22989:13;:16;23003:1;22989:16;;;;;;;;;;;;:21;;22948:62;22944:142;;;23046:26;23070:1;23046:23;:26::i;:::-;23027:45;;22944:142;23117:76;23177:4;:15;;;23117:55;23155:16;;23117:33;23138:4;:11;;;23117:16;:20;;:33;;;;:::i;:::-;:37;;:55;;;;:::i;:::-;:59;;:76;;;;:::i;:::-;23098:95;;23244:16;23225;:35;23206:54;;22759:513;;22813:3;;;;;;;22759:513;;;;22663:616;;;:::o;14433:34::-;;;;:::o;14692:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23287:369::-;23353:19;;23334:15;:38;23330:77;;23389:7;;23330:77;23424:6;23419:180;23440:24;:31;;;;23436:1;:35;23419:180;;;23515:1;23495:13;:16;23509:1;23495:16;;;;;;;;;;;;:21;23491:35;;;23518:8;;23491:35;23561:26;23585:1;23561:23;:26::i;:::-;23539:16;:19;23556:1;23539:19;;;;;;;;;;;:48;;;;23419:180;23473:3;;;;;;;23419:180;;;;23633:15;23611:19;:37;;;;23287:369;:::o;12859:211::-;12976:86;12996:5;13026:23;;;13051:2;13055:5;13003:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12976:19;:86::i;:::-;12859:211;;;:::o;19923:532::-;20021:21;20045:8;:18;20054:8;20045:18;;;;;;;;;;;;;;;:29;20064:9;20045:29;;;;;;;;;;;20021:53;;20089:9;20085:268;;;20113:28;20144:43;20167:8;20177:9;20144:22;:43::i;:::-;20113:74;;20214:37;20230:20;20214:4;:11;;;:15;;:37;;;;:::i;:::-;20200:4;:11;;:51;;;;20291:50;20320:20;20291:13;:24;20305:9;20291:24;;;;;;;;;;;;:28;;:50;;;;:::i;:::-;20264:13;:24;20278:9;20264:24;;;;;;;;;;;:77;;;;20085:268;;20381:66;20430:16;;20381:44;20397:16;:27;20414:9;20397:27;;;;;;;;;;;;20381:4;:11;;;:15;;:44;;;;:::i;:::-;:48;;:66;;;;:::i;:::-;20363:4;:15;;:84;;;;19923:532;;;;:::o;2541:220::-;2599:7;2628:1;2623;:6;2619:20;;;2638:1;2631:8;;;;2619:20;2650:9;2666:1;2662;:5;2650:17;;2695:1;2690;2686;:5;;;;;;:10;2678:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:1;2745:8;;;2541:220;;;;;:::o;2769:153::-;2827:7;2859:1;2855;:5;2847:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2913:1;2909;:5;;;;;;2902:12;;2769:153;;;;:::o;2375:158::-;2433:7;2466:1;2461;:6;;2453:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2524:1;2520;:5;2513:12;;2375:158;;;;:::o;94:106::-;147:15;182:10;175:17;;94:106;:::o;23664:576::-;23739:26;23798:24;:31;;;;23786:9;:43;23778:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23869:25;23897:63;23955:4;23897:53;23914:24;23939:9;23914:35;;;;;;;;;;;;;;;;23897:12;;:16;;:53;;;;:::i;:::-;:57;;:63;;;;:::i;:::-;23869:91;;23971:12;23986:52;24001:19;;24022:15;23986:14;:52::i;:::-;23971:67;;24049:15;24067:39;24099:6;24067:27;24076:17;24067:4;:8;;:27;;;;:::i;:::-;:31;;:39;;;;:::i;:::-;24049:57;;24140:92;24172:59;24206:13;:24;24220:9;24206:24;;;;;;;;;;;;24172:29;24184:16;;24172:7;:11;;:29;;;;:::i;:::-;:33;;:59;;;;:::i;:::-;24140:16;:27;24157:9;24140:27;;;;;;;;;;;;:31;;:92;;;;:::i;:::-;24119:113;;23664:576;;;;;;:::o;13078:248::-;13222:96;13242:5;13272:27;;;13301:4;13307:2;13311:5;13249:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13222:19;:96::i;:::-;13078:248;;;;:::o;2188:179::-;2246:7;2266:9;2282:1;2278;:5;2266:17;;2307:1;2302;:6;;2294:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2358:1;2351:8;;;2188:179;;;;:::o;13334:774::-;13758:23;13784:69;13812:4;13784:69;;;;;;;;;;;;;;;;;13792:5;13784:27;;;;:69;;;;;:::i;:::-;13758:95;;13888:1;13868:10;:17;:21;13864:237;;;14023:10;14012:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13864:237;13334:774;;;:::o;24248:397::-;24343:7;24384:19;;24367:13;:36;24363:275;;24427:34;24445:15;24427:13;:17;;:34;;;;:::i;:::-;24420:41;;;;24363:275;24502:19;;24483:15;:38;24479:159;;24545:1;24538:8;;;;24479:159;24586:40;24610:15;24586:19;;:23;;:40;;;;:::i;:::-;24579:47;;24248:397;;;;;:::o;8214:229::-;8351:12;8383:52;8405:6;8413:4;8419:1;8422:12;8383:21;:52::i;:::-;8376:59;;8214:229;;;;;:::o;9334:571::-;9504:12;9562:5;9537:21;:30;;9529:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9629:18;9640:6;9629:10;:18::i;:::-;9621:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9755:12;9769:23;9796:6;:11;;9815:5;9822:4;9796:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9754:73;;;;9845:52;9863:7;9872:10;9884:12;9845:17;:52::i;:::-;9838:59;;;;9334:571;;;;;;:::o;5274:444::-;5334:4;5542:12;5666:7;5654:20;5646:28;;5709:1;5702:4;:8;5695:15;;;5274:444;;;:::o;11983:777::-;12133:12;12162:7;12158:595;;;12193:10;12186:17;;;;12158:595;12327:1;12307:10;:17;:21;12303:439;;;12570:10;12564:17;12631:15;12618:10;12614:2;12610:19;12603:44;12518:148;12713:12;12706:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11983:777;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://ab950bc1b6eee574312e880497c21ebf5a56ffd3f5c7c5cc9d951e8d008e4514
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.