More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 86 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 14341861 | 1019 days ago | IN | 0 ETH | 0.03557256 | ||||
Claim | 14262014 | 1031 days ago | IN | 0 ETH | 0.01170674 | ||||
Claim | 14111704 | 1054 days ago | IN | 0 ETH | 0.03761827 | ||||
Claim | 14106210 | 1055 days ago | IN | 0 ETH | 0.00265137 | ||||
Claim | 14106210 | 1055 days ago | IN | 0 ETH | 0.03805808 | ||||
Claim | 14087152 | 1058 days ago | IN | 0 ETH | 0.03150812 | ||||
Claim | 14034976 | 1066 days ago | IN | 0 ETH | 0.03281731 | ||||
Claim | 14010482 | 1070 days ago | IN | 0 ETH | 0.03569939 | ||||
Claim | 13989922 | 1073 days ago | IN | 0 ETH | 0.05808663 | ||||
Claim | 13950748 | 1079 days ago | IN | 0 ETH | 0.03159899 | ||||
Claim | 13916961 | 1084 days ago | IN | 0 ETH | 0.00175732 | ||||
Claim | 13916960 | 1084 days ago | IN | 0 ETH | 0.02679667 | ||||
Claim | 13886357 | 1089 days ago | IN | 0 ETH | 0.01565615 | ||||
Claim | 13880029 | 1090 days ago | IN | 0 ETH | 0.01556662 | ||||
Claim | 13840952 | 1096 days ago | IN | 0 ETH | 0.0155606 | ||||
Claim | 13833365 | 1097 days ago | IN | 0 ETH | 0.0184135 | ||||
Claim | 13833363 | 1097 days ago | IN | 0 ETH | 0.01824478 | ||||
Claim | 13803979 | 1102 days ago | IN | 0 ETH | 0.00164628 | ||||
Claim | 13803979 | 1102 days ago | IN | 0 ETH | 0.02871603 | ||||
Claim | 13796056 | 1103 days ago | IN | 0 ETH | 0.0207534 | ||||
Claim | 13790476 | 1104 days ago | IN | 0 ETH | 0.01980506 | ||||
Claim | 13790372 | 1104 days ago | IN | 0 ETH | 0.01961759 | ||||
Claim | 13790075 | 1104 days ago | IN | 0 ETH | 0.01899338 | ||||
Claim | 13789965 | 1104 days ago | IN | 0 ETH | 0.01899133 | ||||
Claim | 13784652 | 1105 days ago | IN | 0 ETH | 0.02719423 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13182820 | 1199 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x0D722222...e8059f022 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Staking
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-08 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract Staking { using SafeMath for uint256; ManagerRole public manager; struct StakeHolder { bool isClaimed; // Current Staking status uint256 amount; // Current active stake uint256 stakedBlock; // Last staked block (if any) uint256 releaseBlock; // Last claimed block (if any) uint256 claimedOn; // Last time claimed uint256 rewards; // Rewards } mapping (address => StakeHolder) public StakeHolders; // List of stake holders address[] private allStakeHolders; // Stake & Reward Token address public stakeToken; // To check if the staking is paused bool public isStakingPaused; // To check if the pool is Active bool public isPoolActive; // No.of Staking Pool Tokens uint256 public stakingPool; // No.of Staking Pool Rewards uint256 public stakingPoolRewards; // Staking Duration in Days uint256 public stakingDuration; // Staking Opening Time for users to stake uint256 public stakingOpenTime; // Staking reward start block uint256 public stakingStartBlock; // Staking rewards ending block uint256 public stakingEndBlock; // No.of Staking Blocks uint256 public noOfStakingBlocks; // No.of users staked uint256 public noOfStakes; // 6440 is the avg no.of Ethereum Blocks per day, Applicable only for Ethereum network uint256 public avgETHBlocksPerDay = 6440; // To calculate the no.of Currently staked tokens uint256 public currentPool; // To check if the users are fully calimed bool public isPoolFullyClaimed; // no.of Days in a Year uint256 private daysInAYear = 365; /* EVENTS */ event Staked(address _address, uint256 _stakedTokens); event Claimed(address _address, uint256 _stakedTokens, uint256 _claimedTokens); event Paused(bool _status, uint256 _timestamp, uint256 _blockNumber); event Withdraw(address _stakeToken, address _hotwallet, uint256 _noOfTokens, uint256 _timestamp, uint256 _blockNumber); event SafeWithdraw(address _stakeToken, address _hotwallet, uint256 _noOfTokens, uint256 _timestamp, uint256 _blockNumber); event EmergencyWithdraw(address _stakeToken, address _hotwallet, uint256 _noOfTokens, uint256 _timestamp, uint256 _blockNumber); /** * @param _stakingToken address of the Token which user stakes * @param _stakingPool is the total no.of tokens to meet the requirement to start the staking * @param _stakingPoolRewards is the total no.of rewards for the _rewardCapital * @param _stakingOpenTime is the pool opening time (like count down) epoch * @param _stakingDuration is the statking duration of staking ex: 30 days, 60 days, 90 days... in days * @param _manager is to manage the managers of the contracts */ constructor(address _stakingToken, uint256 _stakingPool, uint256 _stakingPoolRewards, uint256 _stakingOpenTime, uint256 _stakingDuration, ManagerRole _manager) { stakeToken= _stakingToken; stakingPool = _stakingPool; stakingPoolRewards = _stakingPoolRewards; stakingOpenTime = _stakingOpenTime; stakingDuration = _stakingDuration; stakingStartBlock = _currentBlockNumber(); manager = _manager; isStakingPaused = false; isPoolActive = false; noOfStakes = 0; } function hotWallet() internal view returns(address) { return manager.getHotWallet(); } function getAPY() external view returns(uint256) { uint256 apy = stakingPoolRewards.mul(daysInAYear).mul(100).div(stakingPool.mul(stakingDuration)); return apy; } /* MODIFIERS */ modifier onlyManager { require(manager.isManager(msg.sender), "Manager:: Unauthorized Access"); _; } /** * @notice This is the endpoint for staking * @param _noOfTokens is the no.of Tokens user want to stake into the pool in WEI */ function stake(uint256 _noOfTokens) external { require(isStakingPaused == false, "Stake:: Staking is paused"); require(_noOfTokens > 0, "Stake:: Can not stake Zero Tokens"); require(_currentBlockTimestamp() > stakingOpenTime, "Stake:: Staking have not started for this pool"); require(stakingPool > currentPool, "Stake:: Staking Pool is Full"); require(_noOfTokens <= stakingPool.sub(currentPool), "Stake: Can not stake more than pool size"); _stake(_noOfTokens); } /** * @notice This is the internal staking function which can be called by stake * @param _noOfTokens is the no.of Tokens user want to stake into the pool in WEI */ function _stake(uint256 _noOfTokens) internal { IERC20(stakeToken).transferFrom(msg.sender, address(this), _noOfTokens); StakeHolders[msg.sender].amount = StakeHolders[msg.sender].amount.add(_noOfTokens); StakeHolders[msg.sender].isClaimed = false; StakeHolders[msg.sender].stakedBlock = block.number; StakeHolders[msg.sender].rewards = _calculateRewards(_noOfTokens); currentPool = currentPool.add(_noOfTokens); if(stakingPool == currentPool) { isPoolActive = true; stakingEndBlock = _currentBlockNumber().add(stakingDuration.mul(avgETHBlocksPerDay)); } noOfStakes = noOfStakes.add(1); allStakeHolders.push(msg.sender); emit Staked(msg.sender, _noOfTokens); } /** * @notice This is the internal reward calculation function which can be called by _stake * @param _noOfTokens is the no.of Tokens user want to stake into the pool in WEI */ function _calculateRewards(uint256 _noOfTokens) internal view returns (uint256) { uint256 userShareInPool = (_noOfTokens.mul(1e6)).div(stakingPool); return StakeHolders[msg.sender].rewards.add((userShareInPool.mul(stakingPoolRewards)).div(1e6)); } /** * @notice This is the external function to calculate reward * @param _noOfTokens is the no.of Tokens user want to stake into the pool in WEI */ function calculateRewardsView(address _wallet, uint256 _noOfTokens) external view returns (uint256) { uint256 userShareInPool = (_noOfTokens.mul(1e6)).div(stakingPool); return StakeHolders[_wallet].rewards.add((userShareInPool.mul(stakingPoolRewards)).div(1e6)); } /** * @notice This is the endpoint for Claiming the Stake + Rewards */ function claim() external { require(isStakingPaused == false, "Claim:: Pool is Paused"); require(isPoolActive == true, "Claim:: Pool is not active"); require(StakeHolders[msg.sender].isClaimed == false, "Claim:: Already Claimed"); require(StakeHolders[msg.sender].amount > 0, "Claim:: Seems like haven't staked to claim"); require(_currentBlockNumber() > stakingEndBlock, "Claim:: You can not claim before staked duration"); require(IERC20(stakeToken).balanceOf(address(this)) >= (StakeHolders[msg.sender].amount).add(StakeHolders[msg.sender].rewards), "Claim:: Insufficient Balance"); _claim(); } /** * @notice This is the internal function which will be called by claim */ function _claim() internal { uint256 claimedTokens = StakeHolders[msg.sender].amount; uint256 claimedRewards = StakeHolders[msg.sender].rewards; IERC20(stakeToken).transfer(msg.sender, claimedTokens); IERC20(stakeToken).transfer(msg.sender, claimedRewards); StakeHolders[msg.sender].isClaimed = true; StakeHolders[msg.sender].amount = claimedTokens; StakeHolders[msg.sender].rewards = claimedRewards; StakeHolders[msg.sender].releaseBlock = _currentBlockNumber(); StakeHolders[msg.sender].claimedOn = _currentBlockTimestamp(); updateFullyClaimed(); emit Claimed(msg.sender, claimedTokens, claimedRewards); } /** * @notice Admin Function */ function pauseStaking() external onlyManager { isStakingPaused = true; emit Paused(isStakingPaused, block.timestamp, block.number); } /** * @notice Admin Function */ function unPauseStaking() external onlyManager { isStakingPaused = false; emit Paused(isStakingPaused, block.timestamp, block.number); } /** * @notice This is the internal function which fetch the Current Time Stamp from Network */ function _currentBlockTimestamp() internal view returns (uint256) { return block.timestamp; } /** * @notice This is the internal function which fetch the Current Block number from Network */ function _currentBlockNumber() internal view returns (uint256) { return block.number; } /** * @notice This is the external function which allow user to check the staking status */ function claimStatus(address _address) external view returns (bool) { return StakeHolders[_address].isClaimed; } /** * @notice This is the external function to fetch the wallet and token information */ function stakeTokenInfo(address _wallet) external view returns(string memory, string memory, uint256) { return (IERC20(stakeToken).name(), IERC20(stakeToken).symbol(), IERC20(stakeToken).balanceOf(_wallet)); } /** * @notice Admin Function */ function withdraw(uint256 _noOfTokens) external onlyManager { require(_currentBlockNumber() < stakingEndBlock, "Withdraw:: Invalid withdraw"); require(IERC20(stakeToken).balanceOf(address(this)) >= _noOfTokens, "Withdraw:: Invalid Balance"); IERC20(stakeToken).transfer(hotWallet(), _noOfTokens); emit Withdraw(stakeToken, hotWallet(), _noOfTokens, block.timestamp, block.number); } /** * @notice Admin Function */ function safeWithdraw() external onlyManager { require(_currentBlockNumber() > stakingEndBlock, "SafeWithdraw:: Invalid withdraw"); // Unclaimed Tokens uint256 notClaimedStake; uint256 notClaimedRewards; // Claimed Tokens uint256 claimedStake; uint256 claimedRewards; for(uint256 i=0; i<allStakeHolders.length; i++) { if(StakeHolders[allStakeHolders[i]].isClaimed == false) { notClaimedStake = notClaimedStake.add(StakeHolders[allStakeHolders[i]].amount); notClaimedRewards = notClaimedRewards.add(StakeHolders[allStakeHolders[i]].rewards); } else if (StakeHolders[allStakeHolders[i]].isClaimed == true) { claimedStake = claimedStake.add(StakeHolders[allStakeHolders[i]].amount); claimedRewards = claimedRewards.add(StakeHolders[allStakeHolders[i]].rewards); } } // Calculate Balance uint256 totalUnClaimed = notClaimedStake.add(notClaimedRewards); uint256 balanceInContract = IERC20(stakeToken).balanceOf(address(this)); if(balanceInContract > totalUnClaimed) { IERC20(stakeToken).transfer(hotWallet(), balanceInContract.sub(totalUnClaimed)); emit SafeWithdraw(stakeToken, hotWallet(), balanceInContract.sub(totalUnClaimed), block.timestamp, block.number); } } /** * @notice Total Unclaimed Tokens */ function totalUnClaimedTokens() public view returns(uint256) { uint256 notClaimedStake; uint256 notClaimedRewards; for(uint256 i=0; i<allStakeHolders.length; i++) { if(StakeHolders[allStakeHolders[i]].isClaimed == false) { notClaimedStake = notClaimedStake.add(StakeHolders[allStakeHolders[i]].amount); notClaimedRewards = notClaimedRewards.add(StakeHolders[allStakeHolders[i]].rewards); } } uint256 totalUnClaimed = notClaimedStake.add(notClaimedRewards); return totalUnClaimed; } /** * @notice Update Fully Claimed Status */ function updateFullyClaimed() internal { if(totalUnClaimedTokens() == 0) { isPoolFullyClaimed = true; } } /** * @notice Get the current balance of the tokens in the contract */ function balanceOfContact() external view returns(uint256) { return IERC20(stakeToken).balanceOf(address(this)); } /** * @notice Get the current balance of the tokens */ function balanceToMaintain() external view returns(uint256) { uint256 currentBalance = IERC20(stakeToken).balanceOf(address(this)); uint256 totalUnClaimed = totalUnClaimedTokens(); if(totalUnClaimed > currentBalance) { return totalUnClaimed.sub(currentBalance); } else { return 0; } } /** * @notice EMERGENCY WITHDRAWL is used to empty the balance in contract in case of Emergency Situation */ function emergencyWithdrawl() external onlyManager { isStakingPaused = true; uint256 balanceInContract = IERC20(stakeToken).balanceOf(address(this)); IERC20(stakeToken).transfer(hotWallet(), balanceInContract); emit EmergencyWithdraw(stakeToken, hotWallet(), balanceInContract, block.timestamp, block.number); } } contract ManagerRole { address public superAdmin; address _hotWallet; event ManagerAdded(address _manager, bool _status); event ManagerUpdated(address _manager, bool _status); event HotWalletUpdated(address _oldHotWallet, address _newHotWallet); constructor(address _wallet) { require(_wallet != address(0), "Hotwallet can't be the zero address"); superAdmin = msg.sender; _hotWallet = _wallet; } modifier onlySuperAdmin { require(superAdmin == msg.sender, "Unauthorized Access"); _; } struct Manager { address _manager; bool _isActive; } mapping (address => Manager) public managers; function addManager(address _address, bool _status) external onlySuperAdmin { require(_address != address(0), "Manager can't be the zero address"); managers[_address]._manager = _address; managers[_address]._isActive = _status; emit ManagerAdded(_address, _status); } function getManager(address _address) view external returns (address, bool) { return(managers[_address]._manager, managers[_address]._isActive); } function isManager(address _address) external view returns(bool _status) { return(managers[_address]._isActive); } function updateManager(address _address, bool _status) external onlySuperAdmin { require(_address != address(0), "Manager can't be the zero address"); require(managers[_address]._isActive != _status); managers[_address]._isActive = _status; emit ManagerUpdated(_address, _status); } function governance() external view returns(address){ return superAdmin; } function getHotWallet() external view returns(address) { return _hotWallet; } function setNewHotWallet(address _newHotWallet) external onlySuperAdmin { require(_newHotWallet != address(0), "Hotwallet can't be the zero address"); address _oldHotWallet = _hotWallet; _hotWallet = _newHotWallet; emit HotWalletUpdated(_oldHotWallet, _newHotWallet); } } interface IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the sybmol of token. */ function symbol() external view returns (string memory); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"uint256","name":"_stakingPool","type":"uint256"},{"internalType":"uint256","name":"_stakingPoolRewards","type":"uint256"},{"internalType":"uint256","name":"_stakingOpenTime","type":"uint256"},{"internalType":"uint256","name":"_stakingDuration","type":"uint256"},{"internalType":"contract ManagerRole","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_stakedTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_claimedTokens","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_stakeToken","type":"address"},{"indexed":false,"internalType":"address","name":"_hotwallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"_noOfTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_status","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_stakeToken","type":"address"},{"indexed":false,"internalType":"address","name":"_hotwallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"_noOfTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"SafeWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_stakedTokens","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_stakeToken","type":"address"},{"indexed":false,"internalType":"address","name":"_hotwallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"_noOfTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"StakeHolders","outputs":[{"internalType":"bool","name":"isClaimed","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stakedBlock","type":"uint256"},{"internalType":"uint256","name":"releaseBlock","type":"uint256"},{"internalType":"uint256","name":"claimedOn","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"avgETHBlocksPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOfContact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceToMaintain","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"uint256","name":"_noOfTokens","type":"uint256"}],"name":"calculateRewardsView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"claimStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPoolActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPoolFullyClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStakingPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"contract ManagerRole","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noOfStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noOfStakingBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"safeWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_noOfTokens","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"stakeTokenInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingEndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingOpenTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPoolRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnClaimedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unPauseStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_noOfTokens","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637935e5a311610104578063a91d8fed116100a2578063da46af3a11610071578063da46af3a14610344578063df868ed31461034c578063ec2fc05114610354578063f999c5061461035c576101da565b8063a91d8fed14610307578063d2cbf7ad1461030f578063d5432cd414610317578063d67c3df31461033c576101da565b80638005a7de116100de5780638005a7de146102dc57806390c7a6e0146102e45780639d0f4482146102ec578063a694fc3a146102f4576101da565b80637935e5a3146102b95780637d590ccd146102c15780637fd42617146102d4576101da565b80634c8bb1321161017c578063692b69ae1161014b578063692b69ae146102995780636ae02ae6146102a1578063702bd900146102a95780637431b613146102b1576101da565b80634c8bb1321461026e5780634e71d92d14610276578063502ab61f1461027e57806351ed6a3014610291576101da565b8063248a891e116101b8578063248a891e1461021a5780632e1a7d4d1461023c578063481c6a751461025157806349db9a6e14610266576101da565b80630a122c8a146101df5780630c56ae3b146101fd5780631ea7ca8914610205575b600080fd5b6101e7610364565b6040516101f491906120da565b60405180910390f35b6101e761036a565b61020d610370565b6040516101f49190611cc7565b61022d610228366004611aa2565b610380565b6040516101f493929190611d14565b61024f61024a366004611bc8565b610526565b005b610259610770565b6040516101f49190611c24565b6101e761077f565b6101e7610837565b61024f610972565b61020d61028c366004611aa2565b610b1d565b610259610b3b565b6101e7610b4a565b61024f610b50565b61020d610c43565b6101e7610c4c565b61024f610cd2565b6101e76102cf366004611ada565b610ec4565b61024f610f34565b6101e7611365565b6101e761136b565b6101e7611371565b61024f610302366004611bc8565b611377565b6101e7611446565b6101e761144c565b61032a610325366004611aa2565b611491565b6040516101f496959493929190611cea565b6101e76114cd565b6101e76114d3565b61020d6114d9565b6101e76114e9565b61024f6114ef565b60095481565b60045481565b600354600160a01b900460ff1681565b6060806000600360009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b1580156103d357600080fd5b505afa1580156103e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261040f9190810190611b25565b600360009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561045d57600080fd5b505afa158015610471573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104999190810190611b25565b6003546040516370a0823160e01b81526001600160a01b03909116906370a08231906104c9908990600401611c24565b60206040518083038186803b1580156104e157600080fd5b505afa1580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105199190611be0565b9250925092509193909250565b60005460405163f3ae241560e01b81526001600160a01b039091169063f3ae241590610556903390600401611c24565b60206040518083038186803b15801561056e57600080fd5b505afa158015610582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a69190611b05565b6105cb5760405162461bcd60e51b81526004016105c290611d9a565b60405180910390fd5b6009546105d66115da565b106105f35760405162461bcd60e51b81526004016105c290611f90565b6003546040516370a0823160e01b815282916001600160a01b0316906370a0823190610623903090600401611c24565b60206040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106739190611be0565b10156106915760405162461bcd60e51b81526004016105c290612035565b6003546001600160a01b031663a9059cbb6106aa6115de565b836040518363ffffffff1660e01b81526004016106c8929190611c8d565b602060405180830381600087803b1580156106e257600080fd5b505af11580156106f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071a9190611b05565b506003547febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f906001600160a01b03166107516115de565b834243604051610765959493929190611c5c565b60405180910390a150565b6000546001600160a01b031681565b6003546040516370a0823160e01b815260009182916001600160a01b03909116906370a08231906107b4903090600401611c24565b60206040518083038186803b1580156107cc57600080fd5b505afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190611be0565b90506000610810610837565b90508181111561082d576108248183611665565b92505050610834565b6000925050505b90565b60008080805b60025481101561095d57600160006002838154811061086c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff1661094b576108ef60016000600284815481106108c057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020600101548490611678565b9250610948600160006002848154811061091957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020600501548390611678565b91505b8061095581612181565b91505061083d565b50600061096a8383611678565b935050505090565b600354600160a01b900460ff161561099c5760405162461bcd60e51b81526004016105c290611e19565b600354600160a81b900460ff1615156001146109ca5760405162461bcd60e51b81526004016105c290611f0f565b3360009081526001602052604090205460ff16156109fa5760405162461bcd60e51b81526004016105c2906120a3565b3360009081526001602081905260409091200154610a2a5760405162461bcd60e51b81526004016105c290611f46565b600954610a356115da565b11610a525760405162461bcd60e51b81526004016105c290611d4a565b3360009081526001602081905260409091206005810154910154610a7591611678565b6003546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa5903090600401611c24565b60206040518083038186803b158015610abd57600080fd5b505afa158015610ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af59190611be0565b1015610b135760405162461bcd60e51b81526004016105c290611fc7565b610b1b611684565b565b6001600160a01b031660009081526001602052604090205460ff1690565b6003546001600160a01b031681565b600d5481565b60005460405163f3ae241560e01b81526001600160a01b039091169063f3ae241590610b80903390600401611c24565b60206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd09190611b05565b610bec5760405162461bcd60e51b81526004016105c290611d9a565b6003805460ff60a01b1916908190556040517f38b9e359e45b457f6dea79f7a0f0169d7987c545ac59b080e4385722080048da91610c3991600160a01b90910460ff169042904390611cd2565b60405180910390a1565b600e5460ff1681565b6003546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610c7d903090600401611c24565b60206040518083038186803b158015610c9557600080fd5b505afa158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611be0565b905090565b60005460405163f3ae241560e01b81526001600160a01b039091169063f3ae241590610d02903390600401611c24565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190611b05565b610d6e5760405162461bcd60e51b81526004016105c290611d9a565b6003805460ff60a01b1916600160a01b17908190556040516370a0823160e01b81526000916001600160a01b0316906370a0823190610db1903090600401611c24565b60206040518083038186803b158015610dc957600080fd5b505afa158015610ddd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e019190611be0565b6003549091506001600160a01b031663a9059cbb610e1d6115de565b836040518363ffffffff1660e01b8152600401610e3b929190611c8d565b602060405180830381600087803b158015610e5557600080fd5b505af1158015610e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8d9190611b05565b506003547f73c8d106c93f18e1b97a29556ef7a7972c462ad3b6af8c27026ab42f45e79f70906001600160a01b03166107516115de565b600080610ee9600454610ee3620f42408661184f90919063ffffffff16565b9061185b565b9050610f2c610f0a620f4240610ee36005548561184f90919063ffffffff16565b6001600160a01b03861660009081526001602052604090206005015490611678565b949350505050565b60005460405163f3ae241560e01b81526001600160a01b039091169063f3ae241590610f64903390600401611c24565b60206040518083038186803b158015610f7c57600080fd5b505afa158015610f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb49190611b05565b610fd05760405162461bcd60e51b81526004016105c290611d9a565b600954610fdb6115da565b11610ff85760405162461bcd60e51b81526004016105c290611ffe565b60008060008060005b6002548110156111d157600160006002838154811061103057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16611113576110b3600160006002848154811061108457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020600101548690611678565b945061110c60016000600284815481106110dd57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020600501548590611678565b93506111bf565b600160006002838154811061113857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff161515600114156111bf5761119260016000600284815481106108c057634e487b7160e01b600052603260045260246000fd5b92506111bc600160006002848154811061091957634e487b7160e01b600052603260045260246000fd5b91505b806111c981612181565b915050611001565b5060006111de8585611678565b6003546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190611214903090600401611c24565b60206040518083038186803b15801561122c57600080fd5b505afa158015611240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112649190611be0565b90508181111561135d576003546001600160a01b031663a9059cbb6112876115de565b6112918486611665565b6040518363ffffffff1660e01b81526004016112ae929190611c8d565b602060405180830381600087803b1580156112c857600080fd5b505af11580156112dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113009190611b05565b506003547f6bd62c8c0078c0c9887ea420734755a5da28b76cd4ff88f8c684f6ff9fc582bf906001600160a01b03166113376115de565b6113418486611665565b4243604051611354959493929190611c5c565b60405180910390a15b505050505050565b60065481565b600a5481565b600b5481565b600354600160a01b900460ff16156113a15760405162461bcd60e51b81526004016105c29061206c565b600081116113c15760405162461bcd60e51b81526004016105c290611ece565b6007546113cc611867565b116113e95760405162461bcd60e51b81526004016105c290611e80565b600d546004541161140c5760405162461bcd60e51b81526004016105c290611e49565b600d5460045461141b91611665565b81111561143a5760405162461bcd60e51b81526004016105c290611dd1565b6114438161186b565b50565b60075481565b60008061148b61146960065460045461184f90919063ffffffff16565b610ee36064611485600f5460055461184f90919063ffffffff16565b9061184f565b91505090565b600160208190526000918252604090912080549181015460028201546003830154600484015460059094015460ff909516949293919290919086565b60055481565b600c5481565b600354600160a81b900460ff1681565b60085481565b60005460405163f3ae241560e01b81526001600160a01b039091169063f3ae24159061151f903390600401611c24565b60206040518083038186803b15801561153757600080fd5b505afa15801561154b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156f9190611b05565b61158b5760405162461bcd60e51b81526004016105c290611d9a565b6003805460ff60a01b1916600160a01b908117918290556040517f38b9e359e45b457f6dea79f7a0f0169d7987c545ac59b080e4385722080048da92610c3992900460ff169042904390611cd2565b4390565b60008060009054906101000a90046001600160a01b03166001600160a01b031663d367c5406040518163ffffffff1660e01b815260040160206040518083038186803b15801561162d57600080fd5b505afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190611abe565b6000611671828461213a565b9392505050565b600061167182846120e3565b3360008181526001602081905260409182902090810154600590910154600354925163a9059cbb60e01b8152919390926001600160a01b03169163a9059cbb916116d2918690600401611c8d565b602060405180830381600087803b1580156116ec57600080fd5b505af1158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190611b05565b5060035460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906117579033908590600401611c8d565b602060405180830381600087803b15801561177157600080fd5b505af1158015611785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a99190611b05565b50336000908152600160208190526040909120805460ff1916821781559081018390556005018190556117da6115da565b336000908152600160205260409020600301556117f5611867565b33600090815260016020526040902060040155611810611a2e565b7f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a33838360405161184393929190611ca6565b60405180910390a15050565b6000611671828461211b565b600061167182846120fb565b4290565b6003546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061189f90339030908690600401611c38565b602060405180830381600087803b1580156118b957600080fd5b505af11580156118cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f19190611b05565b5033600090815260016020819052604090912001546119109082611678565b33600090815260016020819052604090912090810191909155805460ff191681554360029091015561194181611a49565b33600090815260016020526040902060050155600d546119619082611678565b600d81905560045414156119a8576003805460ff60a81b1916600160a81b179055600c546006546119a491611996919061184f565b61199e6115da565b90611678565b6009555b600b546119b6906001611678565b600b55600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916339081179091556040517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d91610765918490611c8d565b611a36610837565b610b1b57600e805460ff19166001179055565b600080611a68600454610ee3620f42408661184f90919063ffffffff16565b9050611671611a89620f4240610ee36005548561184f90919063ffffffff16565b3360009081526001602052604090206005015490611678565b600060208284031215611ab3578081fd5b8135611671816121c8565b600060208284031215611acf578081fd5b8151611671816121c8565b60008060408385031215611aec578081fd5b8235611af7816121c8565b946020939093013593505050565b600060208284031215611b16578081fd5b81518015158114611671578182fd5b600060208284031215611b36578081fd5b815167ffffffffffffffff80821115611b4d578283fd5b818401915084601f830112611b60578283fd5b815181811115611b7257611b726121b2565b604051601f8201601f191681016020018381118282101715611b9657611b966121b2565b604052818152838201602001871015611bad578485fd5b611bbe826020830160208701612151565b9695505050505050565b600060208284031215611bd9578081fd5b5035919050565b600060208284031215611bf1578081fd5b5051919050565b60008151808452611c10816020860160208601612151565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03958616815293909416602084015260408301919091526060820152608081019190915260a00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b901515815260200190565b92151583526020830191909152604082015260600190565b9515158652602086019490945260408501929092526060840152608083015260a082015260c00190565b600060608252611d276060830186611bf8565b8281036020840152611d398186611bf8565b915050826040830152949350505050565b60208082526030908201527f436c61696d3a3a20596f752063616e206e6f7420636c61696d206265666f726560408201526f1039ba30b5b2b210323ab930ba34b7b760811b606082015260800190565b6020808252601d908201527f4d616e616765723a3a20556e617574686f72697a656420416363657373000000604082015260600190565b60208082526028908201527f5374616b653a2043616e206e6f74207374616b65206d6f7265207468616e20706040820152676f6f6c2073697a6560c01b606082015260800190565b60208082526016908201527510db185a5b4e8e88141bdbdb081a5cc814185d5cd95960521b604082015260600190565b6020808252601c908201527f5374616b653a3a205374616b696e6720506f6f6c2069732046756c6c00000000604082015260600190565b6020808252602e908201527f5374616b653a3a205374616b696e672068617665206e6f74207374617274656460408201526d08199bdc881d1a1a5cc81c1bdbdb60921b606082015260800190565b60208082526021908201527f5374616b653a3a2043616e206e6f74207374616b65205a65726f20546f6b656e6040820152607360f81b606082015260800190565b6020808252601a908201527f436c61696d3a3a20506f6f6c206973206e6f7420616374697665000000000000604082015260600190565b6020808252602a908201527f436c61696d3a3a205365656d73206c696b6520686176656e2774207374616b656040820152696420746f20636c61696d60b01b606082015260800190565b6020808252601b908201527f57697468647261773a3a20496e76616c69642077697468647261770000000000604082015260600190565b6020808252601c908201527f436c61696d3a3a20496e73756666696369656e742042616c616e636500000000604082015260600190565b6020808252601f908201527f5361666557697468647261773a3a20496e76616c696420776974686472617700604082015260600190565b6020808252601a908201527f57697468647261773a3a20496e76616c69642042616c616e6365000000000000604082015260600190565b60208082526019908201527f5374616b653a3a205374616b696e672069732070617573656400000000000000604082015260600190565b60208082526017908201527f436c61696d3a3a20416c726561647920436c61696d6564000000000000000000604082015260600190565b90815260200190565b600082198211156120f6576120f661219c565b500190565b60008261211657634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156121355761213561219c565b500290565b60008282101561214c5761214c61219c565b500390565b60005b8381101561216c578181015183820152602001612154565b8381111561217b576000848401525b50505050565b60006000198214156121955761219561219c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461144357600080fdfea2646970667358221220e6182e2398d5516b6b0cbb83a90677fce4032117f985e72c11a2a4934d751e2864736f6c63430008000033
Deployed Bytecode Sourcemap
6768:13736:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8065:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7681:26;;;:::i;7534:27::-;;;:::i;:::-;;;;;;;:::i;16220:223::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;16504:423::-;;;;;;:::i;:::-;;:::i;:::-;;6831:26;;;:::i;:::-;;;;;;;:::i;19654:360::-;;;:::i;18530:609::-;;;:::i;13506:665::-;;;:::i;15980:126::-;;;;;;:::i;:::-;;:::i;7458:25::-;;;:::i;8436:26::-;;;:::i;15254:159::-;;;:::i;8519:30::-;;;:::i;19446:128::-;;;:::i;20149:352::-;;;:::i;13123:287::-;;;;;;:::i;:::-;;:::i;16988:1477::-;;;:::i;7826:30::-;;;:::i;8133:32::-;;;:::i;8201:25::-;;;:::i;10956:524::-;;;;;;:::i;:::-;;:::i;7913:30::-;;;:::i;10453:185::-;;;:::i;7288:52::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;7751:33::-;;;:::i;8332:40::-;;;:::i;7609:24::-;;;:::i;7987:32::-;;;:::i;15041:156::-;;;:::i;8065:30::-;;;;:::o;7681:26::-;;;;:::o;7534:27::-;;;-1:-1:-1;;;7534:27:0;;;;;:::o;16220:223::-;16283:13;16298;16313:7;16348:10;;;;;;;;;-1:-1:-1;;;;;16348:10:0;-1:-1:-1;;;;;16341:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16341:25:0;;;;;;;;;;;;:::i;:::-;16375:10;;;;;;;;;-1:-1:-1;;;;;16375:10:0;-1:-1:-1;;;;;16368:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16368:27:0;;;;;;;;;;;;:::i;:::-;16404:10;;16397:37;;-1:-1:-1;;;16397:37:0;;-1:-1:-1;;;;;16404:10:0;;;;16397:28;;:37;;16426:7;;16397:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16333:102;;;;;;16220:223;;;;;:::o;16504:423::-;10711:7;;:29;;-1:-1:-1;;;10711:29:0;;-1:-1:-1;;;;;10711:7:0;;;;:17;;:29;;10729:10;;10711:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:71;;;;-1:-1:-1;;;10703:71:0;;;;;;;:::i;:::-;;;;;;;;;16607:15:::1;;16583:21;:19;:21::i;:::-;:39;16575:79;;;;-1:-1:-1::0;;;16575:79:0::1;;;;;;;:::i;:::-;16680:10;::::0;16673:43:::1;::::0;-1:-1:-1;;;16673:43:0;;16720:11;;-1:-1:-1;;;;;16680:10:0::1;::::0;16673:28:::1;::::0;:43:::1;::::0;16710:4:::1;::::0;16673:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;16665:97;;;;-1:-1:-1::0;;;16665:97:0::1;;;;;;;:::i;:::-;16780:10;::::0;-1:-1:-1;;;;;16780:10:0::1;16773:27;16801:11;:9;:11::i;:::-;16814;16773:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;16851:10:0::1;::::0;16842:77:::1;::::0;-1:-1:-1;;;;;16851:10:0::1;16863:11;:9;:11::i;:::-;16876;16889:15;16906:12;16842:77;;;;;;;;;;:::i;:::-;;;;;;;;16504:423:::0;:::o;6831:26::-;;;-1:-1:-1;;;;;6831:26:0;;:::o;19654:360::-;19757:10;;19750:43;;-1:-1:-1;;;19750:43:0;;19705:7;;;;-1:-1:-1;;;;;19757:10:0;;;;19750:28;;:43;;19787:4;;19750:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19725:68;;19804:22;19829;:20;:22::i;:::-;19804:47;;19882:14;19865;:31;19862:145;;;19920:34;:14;19939;19920:18;:34::i;:::-;19913:41;;;;;;19862:145;19994:1;19987:8;;;;19654:360;;:::o;18530:609::-;18582:7;;;;18680:346;18699:15;:22;18697:24;;18680:346;;;18746:12;:32;18759:15;18775:1;18759:18;;;;;;-1:-1:-1;;;18759:18:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18759:18:0;18746:32;;;;;;;;;;;;:42;;;18743:272;;18836:60;18856:12;:32;18869:15;18885:1;18869:18;;;;;;-1:-1:-1;;;18869:18:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18869:18:0;18856:32;;;;;;;;;;;;18869:18;18856:39;;18836:15;;:19;:60::i;:::-;18818:78;;18935:63;18957:12;:32;18970:15;18986:1;18970:18;;;;;;-1:-1:-1;;;18970:18:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18970:18:0;18957:32;;;;;;;;;;;;:40;;;18935:17;;:21;:63::i;:::-;18915:83;;18743:272;18723:3;;;;:::i;:::-;;;;18680:346;;;-1:-1:-1;19036:22:0;19061:38;:15;19081:17;19061:19;:38::i;:::-;19036:63;-1:-1:-1;;;;18530:609:0;:::o;13506:665::-;13551:15;;-1:-1:-1;;;13551:15:0;;;;:24;13543:59;;;;-1:-1:-1;;;13543:59:0;;;;;;;:::i;:::-;13621:12;;-1:-1:-1;;;13621:12:0;;;;:20;;13637:4;13621:20;13613:59;;;;-1:-1:-1;;;13613:59:0;;;;;;;:::i;:::-;13704:10;13691:24;;;;:12;:24;;;;;:34;;;:43;13683:79;;;;-1:-1:-1;;;13683:79:0;;;;;;;:::i;:::-;13794:10;13815:1;13781:24;;;:12;:24;;;;;;;;:31;;13773:90;;;;-1:-1:-1;;;13773:90:0;;;;;;;:::i;:::-;13906:15;;13882:21;:19;:21::i;:::-;:39;13874:100;;;;-1:-1:-1;;;13874:100:0;;;;;;;:::i;:::-;14091:10;14078:24;;;;:12;:24;;;;;;;;:32;;;;14041:31;;;14040:71;;:37;:71::i;:::-;14000:10;;13993:43;;-1:-1:-1;;;13993:43:0;;-1:-1:-1;;;;;14000:10:0;;;;13993:28;;:43;;14030:4;;13993:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:118;;13985:159;;;;-1:-1:-1;;;13985:159:0;;;;;;;:::i;:::-;14155:8;:6;:8::i;:::-;13506:665::o;15980:126::-;-1:-1:-1;;;;;16066:22:0;16042:4;16066:22;;;:12;:22;;;;;:32;;;;15980:126::o;7458:25::-;;;-1:-1:-1;;;;;7458:25:0;;:::o;8436:26::-;;;;:::o;15254:159::-;10711:7;;:29;;-1:-1:-1;;;10711:29:0;;-1:-1:-1;;;;;10711:7:0;;;;:17;;:29;;10729:10;;10711:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:71;;;;-1:-1:-1;;;10703:71:0;;;;;;;:::i;:::-;15312:15:::1;:23:::0;;-1:-1:-1;;;;15312:23:0::1;::::0;;;;15351:54:::1;::::0;::::1;::::0;::::1;::::0;-1:-1:-1;;;15358:15:0;;::::1;15312:23;15358:15;::::0;15375::::1;::::0;15392:12:::1;::::0;15351:54:::1;:::i;:::-;;;;;;;;15254:159::o:0;8519:30::-;;;;;;:::o;19446:128::-;19530:10;;19523:43;;-1:-1:-1;;;19523:43:0;;19496:7;;-1:-1:-1;;;;;19530:10:0;;19523:28;;:43;;19560:4;;19523:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19516:50;;19446:128;:::o;20149:352::-;10711:7;;:29;;-1:-1:-1;;;10711:29:0;;-1:-1:-1;;;;;10711:7:0;;;;:17;;:29;;10729:10;;10711:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:71;;;;-1:-1:-1;;;10703:71:0;;;;;;;:::i;:::-;20211:15:::1;:22:::0;;-1:-1:-1;;;;20211:22:0::1;-1:-1:-1::0;;;20211:22:0::1;::::0;;;;20272:43:::1;::::0;-1:-1:-1;;;20272:43:0;;20211:22;;-1:-1:-1;;;;;20279:10:0::1;::::0;20272:28:::1;::::0;:43:::1;::::0;20309:4:::1;::::0;20272:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20333:10;::::0;20244:71;;-1:-1:-1;;;;;;20333:10:0::1;20326:27;20354:11;:9;:11::i;:::-;20367:17;20326:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;20419:10:0::1;::::0;20401:92:::1;::::0;-1:-1:-1;;;;;20419:10:0::1;20431:11;:9;:11::i;13123:287::-:0;13214:7;13234:23;13260:39;13287:11;;13261:20;13277:3;13261:11;:15;;:20;;;;:::i;:::-;13260:26;;:39::i;:::-;13234:65;;13317:85;13351:50;13397:3;13352:39;13372:18;;13352:15;:19;;:39;;;;:::i;13351:50::-;-1:-1:-1;;;;;13317:21:0;;;;;;:12;:21;;;;;:29;;;;:33;:85::i;:::-;13310:92;13123:287;-1:-1:-1;;;;13123:287:0:o;16988:1477::-;10711:7;;:29;;-1:-1:-1;;;10711:29:0;;-1:-1:-1;;;;;10711:7:0;;;;:17;;:29;;10729:10;;10711:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:71;;;;-1:-1:-1;;;10703:71:0;;;;;;;:::i;:::-;17076:15:::1;;17052:21;:19;:21::i;:::-;:39;17044:83;;;;-1:-1:-1::0;;;17044:83:0::1;;;;;;;:::i;:::-;17177:23;17211:25:::0;17284:20:::1;17315:22:::0;17362:9:::1;17358:612;17377:15;:22:::0;17375:24;::::1;17358:612;;;17424:12;:32;17437:15;17453:1;17437:18;;;;;;-1:-1:-1::0;;;17437:18:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;17437:18:0::1;17424:32:::0;;;::::1;::::0;;;;;;;;:42;::::1;;17421:538;;17514:60;17534:12;:32;17547:15;17563:1;17547:18;;;;;;-1:-1:-1::0;;;17547:18:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;17547:18:0::1;17534:32:::0;;;::::1;::::0;;;;;;;;17547:18;17534:39:::1;::::0;17514:15;;:19:::1;:60::i;:::-;17496:78;;17613:63;17635:12;:32;17648:15;17664:1;17648:18;;;;;;-1:-1:-1::0;;;17648:18:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;17648:18:0::1;17635:32:::0;;;::::1;::::0;;;;;;;;:40:::1;;::::0;17613:17;;:21:::1;:63::i;:::-;17593:83;;17421:538;;;17703:12;:32;17716:15;17732:1;17716:18;;;;;;-1:-1:-1::0;;;17716:18:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;17716:18:0::1;17703:32:::0;;;::::1;::::0;;;;;;;;:42;::::1;;:50;;17716:18:::0;17703:50:::1;17699:260;;;17789:57;17806:12;:32;17819:15;17835:1;17819:18;;;;;;-1:-1:-1::0;;;17819:18:0::1;;;;;;;;17789:57;17774:72;;17882:60;17901:12;:32;17914:15;17930:1;17914:18;;;;;;-1:-1:-1::0;;;17914:18:0::1;;;;;;;;17882:60;17865:77;;17699:260;17401:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17358:612;;;-1:-1:-1::0;18020:22:0::1;18045:38;:15:::0;18065:17;18045:19:::1;:38::i;:::-;18129:10;::::0;18122:43:::1;::::0;-1:-1:-1;;;18122:43:0;;18020:63;;-1:-1:-1;18094:25:0::1;::::0;-1:-1:-1;;;;;18129:10:0;;::::1;::::0;18122:28:::1;::::0;:43:::1;::::0;18159:4:::1;::::0;18122:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18094:71;;18209:14;18189:17;:34;18186:272;;;18247:10;::::0;-1:-1:-1;;;;;18247:10:0::1;18240:27;18268:11;:9;:11::i;:::-;18281:37;:17:::0;18303:14;18281:21:::1;:37::i;:::-;18240:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18352:10:0::1;::::0;18339:107:::1;::::0;-1:-1:-1;;;;;18352:10:0::1;18364:11;:9;:11::i;:::-;18377:37;:17:::0;18399:14;18377:21:::1;:37::i;:::-;18416:15;18433:12;18339:107;;;;;;;;;;:::i;:::-;;;;;;;;18186:272;10785:1;;;;;;16988:1477::o:0;7826:30::-;;;;:::o;8133:32::-;;;;:::o;8201:25::-;;;;:::o;10956:524::-;11020:15;;-1:-1:-1;;;11020:15:0;;;;:24;11012:62;;;;-1:-1:-1;;;11012:62:0;;;;;;;:::i;:::-;11107:1;11093:11;:15;11085:61;;;;-1:-1:-1;;;11085:61:0;;;;;;;:::i;:::-;11192:15;;11165:24;:22;:24::i;:::-;:42;11157:101;;;;-1:-1:-1;;;11157:101:0;;;;;;;:::i;:::-;11291:11;;11277;;:25;11269:66;;;;-1:-1:-1;;;11269:66:0;;;;;;;:::i;:::-;11385:11;;11369;;:28;;:15;:28::i;:::-;11354:11;:43;;11346:96;;;;-1:-1:-1;;;11346:96:0;;;;;;;:::i;:::-;11453:19;11460:11;11453:6;:19::i;:::-;10956:524;:::o;7913:30::-;;;;:::o;10453:185::-;10493:7;10513:11;10527:82;10576:32;10592:15;;10576:11;;:15;;:32;;;;:::i;:::-;10527:44;10567:3;10527:35;10550:11;;10527:18;;:22;;:35;;;;:::i;:::-;:39;;:44::i;:82::-;10513:96;-1:-1:-1;;10453:185:0;:::o;7288:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7751:33::-;;;;:::o;8332:40::-;;;;:::o;7609:24::-;;;-1:-1:-1;;;7609:24:0;;;;;:::o;7987:32::-;;;;:::o;15041:156::-;10711:7;;:29;;-1:-1:-1;;;10711:29:0;;-1:-1:-1;;;;;10711:7:0;;;;:17;;:29;;10729:10;;10711:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10703:71;;;;-1:-1:-1;;;10703:71:0;;;;;;;:::i;:::-;15097:15:::1;:22:::0;;-1:-1:-1;;;;15097:22:0::1;-1:-1:-1::0;;;15097:22:0;;::::1;::::0;;;;15135:54:::1;::::0;::::1;::::0;::::1;::::0;15142:15;::::1;15097:22;15142:15;::::0;15159::::1;::::0;15176:12:::1;::::0;15135:54:::1;:::i;15762:101::-:0;15843:12;15762:101;:::o;10345:100::-;10388:7;10415;;;;;;;;;-1:-1:-1;;;;;10415:7:0;-1:-1:-1;;;;;10415:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2984:98::-;3042:7;3069:5;3073:1;3069;:5;:::i;:::-;3062:12;2984:98;-1:-1:-1;;;2984:98:0:o;2603:::-;2661:7;2688:5;2692:1;2688;:5;:::i;14273:711::-;14348:10;14311:21;14335:24;;;:12;:24;;;;;;;;;:31;;;;14402:32;;;;;14452:10;;14445:54;;-1:-1:-1;;;14445:54:0;;14335:31;;14402:32;;-1:-1:-1;;;;;14452:10:0;;14445:27;;:54;;14335:31;;14445:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14517:10:0;;14510:55;;-1:-1:-1;;;14510:55:0;;-1:-1:-1;;;;;14517:10:0;;;;14510:27;;:55;;14538:10;;14550:14;;14510:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14589:10:0;14576:24;;;;14613:4;14576:24;;;;;;;;:41;;-1:-1:-1;;14576:41:0;;;;;14628:31;;;:47;;;14686:32;;:49;;;14786:21;:19;:21::i;:::-;14759:10;14746:24;;;;:12;:24;;;;;:37;;:61;14855:24;:22;:24::i;:::-;14831:10;14818:24;;;;:12;:24;;;;;:34;;:61;14890:20;:18;:20::i;:::-;14926:50;14934:10;14946:13;14961:14;14926:50;;;;;;;;:::i;:::-;;;;;;;;14273:711;;:::o;3341:98::-;3399:7;3426:5;3430:1;3426;:5;:::i;3740:98::-;3798:7;3825:5;3829:1;3825;:5;:::i;15533:107::-;15617:15;15533:107;:::o;11676:790::-;11740:10;;11733:71;;-1:-1:-1;;;11733:71:0;;-1:-1:-1;;;;;11740:10:0;;;;11733:31;;:71;;11765:10;;11785:4;;11792:11;;11733:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11862:10:0;11849:24;;;;:12;:24;;;;;;;;:31;;:48;;11885:11;11849:35;:48::i;:::-;11828:10;11815:24;;;;:12;:24;;;;;;;;:31;;;:82;;;;11908:42;;-1:-1:-1;;11908:42:0;;;12000:12;11961:36;;;;:51;12058:30;12076:11;12058:17;:30::i;:::-;12036:10;12023:24;;;;:12;:24;;;;;:32;;:65;12113:11;;:28;;12129:11;12113:15;:28::i;:::-;12099:11;:42;;;12155:11;;:26;12152:176;;;12198:12;:19;;-1:-1:-1;;;;12198:19:0;-1:-1:-1;;;12198:19:0;;;12296:18;;12276:15;;12250:66;;12276:39;;:15;:19;:39::i;:::-;12250:21;:19;:21::i;:::-;:25;;:66::i;:::-;12232:15;:84;12152:176;12351:10;;:17;;12366:1;12351:14;:17::i;:::-;12338:10;:30;12379:15;:32;;;;;;;-1:-1:-1;12379:32:0;;;;;;;;-1:-1:-1;;;;;;12379:32:0;12400:10;12379:32;;;;;;12427:31;;;;;;12446:11;;12427:31;:::i;19209:141::-;19262:22;:20;:22::i;:::-;19259:84;;19306:18;:25;;-1:-1:-1;;19306:25:0;19327:4;19306:25;;;19209:141::o;12674:270::-;12745:7;12765:23;12791:39;12818:11;;12792:20;12808:3;12792:11;:15;;:20;;;;:::i;12791:39::-;12765:65;;12848:88;12885:50;12931:3;12886:39;12906:18;;12886:15;:19;;:39;;;;:::i;12885:50::-;12861:10;12848:24;;;;:12;:24;;;;;:32;;;;:36;:88::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:327::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;863:2;848:18;;;;835:32;;-1:-1:-1;;;633:240:1:o;878:297::-;;998:2;986:9;977:7;973:23;969:32;966:2;;;1019:6;1011;1004:22;966:2;1056:9;1050:16;1109:5;1102:13;1095:21;1088:5;1085:32;1075:2;;1136:6;1128;1121:22;1180:894;;1313:2;1301:9;1292:7;1288:23;1284:32;1281:2;;;1334:6;1326;1319:22;1281:2;1372:9;1366:16;1401:18;1442:2;1434:6;1431:14;1428:2;;;1463:6;1455;1448:22;1428:2;1506:6;1495:9;1491:22;1481:32;;1551:7;1544:4;1540:2;1536:13;1532:27;1522:2;;1578:6;1570;1563:22;1522:2;1612;1606:9;1634:2;1630;1627:10;1624:2;;;1640:18;;:::i;:::-;1689:2;1683:9;1758:2;1739:13;;-1:-1:-1;;1735:27:1;1723:40;;1765:2;1719:49;1783:18;;;1803:22;;;1780:46;1777:2;;;1829:18;;:::i;:::-;1865:2;1858:22;1889:18;;;1926:11;;;1939:2;1922:20;1919:33;-1:-1:-1;1916:2:1;;;1970:6;1962;1955:22;1916:2;1988:55;2040:2;2035;2027:6;2023:15;2018:2;2014;2010:11;1988:55;:::i;:::-;2062:6;1271:803;-1:-1:-1;;;;;;1271:803:1:o;2079:190::-;;2191:2;2179:9;2170:7;2166:23;2162:32;2159:2;;;2212:6;2204;2197:22;2159:2;-1:-1:-1;2240:23:1;;2149:120;-1:-1:-1;2149:120:1:o;2274:194::-;;2397:2;2385:9;2376:7;2372:23;2368:32;2365:2;;;2418:6;2410;2403:22;2365:2;-1:-1:-1;2446:16:1;;2355:113;-1:-1:-1;2355:113:1:o;2473:260::-;;2555:5;2549:12;2582:6;2577:3;2570:19;2598:63;2654:6;2647:4;2642:3;2638:14;2631:4;2624:5;2620:16;2598:63;:::i;:::-;2715:2;2694:15;-1:-1:-1;;2690:29:1;2681:39;;;;2722:4;2677:50;;2525:208;-1:-1:-1;;2525:208:1:o;2738:203::-;-1:-1:-1;;;;;2902:32:1;;;;2884:51;;2872:2;2857:18;;2839:102::o;2946:375::-;-1:-1:-1;;;;;3204:15:1;;;3186:34;;3256:15;;;;3251:2;3236:18;;3229:43;3303:2;3288:18;;3281:34;;;;3136:2;3121:18;;3103:218::o;3326:519::-;-1:-1:-1;;;;;3641:15:1;;;3623:34;;3693:15;;;;3688:2;3673:18;;3666:43;3740:2;3725:18;;3718:34;;;;3783:2;3768:18;;3761:34;3826:3;3811:19;;3804:35;;;;3572:3;3557:19;;3539:306::o;3850:274::-;-1:-1:-1;;;;;4042:32:1;;;;4024:51;;4106:2;4091:18;;4084:34;4012:2;3997:18;;3979:145::o;4129:345::-;-1:-1:-1;;;;;4349:32:1;;;;4331:51;;4413:2;4398:18;;4391:34;;;;4456:2;4441:18;;4434:34;4319:2;4304:18;;4286:188::o;4479:187::-;4644:14;;4637:22;4619:41;;4607:2;4592:18;;4574:92::o;4671:329::-;4892:14;;4885:22;4867:41;;4939:2;4924:18;;4917:34;;;;4982:2;4967:18;;4960:34;4855:2;4840:18;;4822:178::o;5005:545::-;5311:14;;5304:22;5286:41;;5358:2;5343:18;;5336:34;;;;5401:2;5386:18;;5379:34;;;;5444:2;5429:18;;5422:34;5487:3;5472:19;;5465:35;5531:3;5516:19;;5509:35;5273:3;5258:19;;5240:310::o;5783:458::-;;6008:2;5997:9;5990:21;6034:47;6077:2;6066:9;6062:18;6054:6;6034:47;:::i;:::-;6129:9;6121:6;6117:22;6112:2;6101:9;6097:18;6090:50;6157:35;6185:6;6177;6157:35;:::i;:::-;6149:43;;;6228:6;6223:2;6212:9;6208:18;6201:34;5980:261;;;;;;:::o;6246:412::-;6448:2;6430:21;;;6487:2;6467:18;;;6460:30;6526:34;6521:2;6506:18;;6499:62;-1:-1:-1;;;6592:2:1;6577:18;;6570:46;6648:3;6633:19;;6420:238::o;6663:353::-;6865:2;6847:21;;;6904:2;6884:18;;;6877:30;6943:31;6938:2;6923:18;;6916:59;7007:2;6992:18;;6837:179::o;7021:404::-;7223:2;7205:21;;;7262:2;7242:18;;;7235:30;7301:34;7296:2;7281:18;;7274:62;-1:-1:-1;;;7367:2:1;7352:18;;7345:38;7415:3;7400:19;;7195:230::o;7430:346::-;7632:2;7614:21;;;7671:2;7651:18;;;7644:30;-1:-1:-1;;;7705:2:1;7690:18;;7683:52;7767:2;7752:18;;7604:172::o;7781:352::-;7983:2;7965:21;;;8022:2;8002:18;;;7995:30;8061;8056:2;8041:18;;8034:58;8124:2;8109:18;;7955:178::o;8138:410::-;8340:2;8322:21;;;8379:2;8359:18;;;8352:30;8418:34;8413:2;8398:18;;8391:62;-1:-1:-1;;;8484:2:1;8469:18;;8462:44;8538:3;8523:19;;8312:236::o;8553:397::-;8755:2;8737:21;;;8794:2;8774:18;;;8767:30;8833:34;8828:2;8813:18;;8806:62;-1:-1:-1;;;8899:2:1;8884:18;;8877:31;8940:3;8925:19;;8727:223::o;8955:350::-;9157:2;9139:21;;;9196:2;9176:18;;;9169:30;9235:28;9230:2;9215:18;;9208:56;9296:2;9281:18;;9129:176::o;9310:406::-;9512:2;9494:21;;;9551:2;9531:18;;;9524:30;9590:34;9585:2;9570:18;;9563:62;-1:-1:-1;;;9656:2:1;9641:18;;9634:40;9706:3;9691:19;;9484:232::o;9721:351::-;9923:2;9905:21;;;9962:2;9942:18;;;9935:30;10001:29;9996:2;9981:18;;9974:57;10063:2;10048:18;;9895:177::o;10077:352::-;10279:2;10261:21;;;10318:2;10298:18;;;10291:30;10357;10352:2;10337:18;;10330:58;10420:2;10405:18;;10251:178::o;10434:355::-;10636:2;10618:21;;;10675:2;10655:18;;;10648:30;10714:33;10709:2;10694:18;;10687:61;10780:2;10765:18;;10608:181::o;10794:350::-;10996:2;10978:21;;;11035:2;11015:18;;;11008:30;11074:28;11069:2;11054:18;;11047:56;11135:2;11120:18;;10968:176::o;11149:349::-;11351:2;11333:21;;;11390:2;11370:18;;;11363:30;11429:27;11424:2;11409:18;;11402:55;11489:2;11474:18;;11323:175::o;11503:347::-;11705:2;11687:21;;;11744:2;11724:18;;;11717:30;11783:25;11778:2;11763:18;;11756:53;11841:2;11826:18;;11677:173::o;11855:177::-;12001:25;;;11989:2;11974:18;;11956:76::o;12037:128::-;;12108:1;12104:6;12101:1;12098:13;12095:2;;;12114:18;;:::i;:::-;-1:-1:-1;12150:9:1;;12085:80::o;12170:217::-;;12236:1;12226:2;;-1:-1:-1;;;12261:31:1;;12315:4;12312:1;12305:15;12343:4;12268:1;12333:15;12226:2;-1:-1:-1;12372:9:1;;12216:171::o;12392:168::-;;12498:1;12494;12490:6;12486:14;12483:1;12480:21;12475:1;12468:9;12461:17;12457:45;12454:2;;;12505:18;;:::i;:::-;-1:-1:-1;12545:9:1;;12444:116::o;12565:125::-;;12633:1;12630;12627:8;12624:2;;;12638:18;;:::i;:::-;-1:-1:-1;12675:9:1;;12614:76::o;12695:258::-;12767:1;12777:113;12791:6;12788:1;12785:13;12777:113;;;12867:11;;;12861:18;12848:11;;;12841:39;12813:2;12806:10;12777:113;;;12908:6;12905:1;12902:13;12899:2;;;12943:1;12934:6;12929:3;12925:16;12918:27;12899:2;;12748:205;;;:::o;12958:135::-;;-1:-1:-1;;13018:17:1;;13015:2;;;13038:18;;:::i;:::-;-1:-1:-1;13085:1:1;13074:13;;13005:88::o;13098:127::-;13159:10;13154:3;13150:20;13147:1;13140:31;13190:4;13187:1;13180:15;13214:4;13211:1;13204:15;13230:127;13291:10;13286:3;13282:20;13279:1;13272:31;13322:4;13319:1;13312:15;13346:4;13343:1;13336:15;13362:133;-1:-1:-1;;;;;13439:31:1;;13429:42;;13419:2;;13485:1;13482;13475:12
Swarm Source
ipfs://e6182e2398d5516b6b0cbb83a90677fce4032117f985e72c11a2a4934d751e28
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.001018 | 14,225.8 | $14.49 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.