Overview
MATIC Balance
0 MATIC
MATIC Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator:
Latest 25 from a total of 1,493 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 50980039 | 108 days ago | IN | 0 MATIC | 0.00543105 | ||||
Unstake | 50865171 | 111 days ago | IN | 0 MATIC | 0.02364453 | ||||
Unstake | 50726646 | 115 days ago | IN | 0 MATIC | 0.00515871 | ||||
Claim Rewards | 50726194 | 115 days ago | IN | 0 MATIC | 0.00277782 | ||||
Unstake | 49622337 | 143 days ago | IN | 0 MATIC | 0.00806098 | ||||
Claim Rewards | 49333631 | 150 days ago | IN | 0 MATIC | 0.00738741 | ||||
Unstake | 48715044 | 166 days ago | IN | 0 MATIC | 0.01008572 | ||||
Claim Rewards | 48714515 | 166 days ago | IN | 0 MATIC | 0.00857363 | ||||
Unstake | 48714495 | 166 days ago | IN | 0 MATIC | 0.0100861 | ||||
Claim Rewards | 48714492 | 166 days ago | IN | 0 MATIC | 0.00860149 | ||||
Claim Rewards | 48714480 | 166 days ago | IN | 0 MATIC | 0.00915522 | ||||
Claim Rewards | 48622883 | 168 days ago | IN | 0 MATIC | 0.00987033 | ||||
Unstake | 48477091 | 172 days ago | IN | 0 MATIC | 0.00448538 | ||||
Claim Rewards | 48477070 | 172 days ago | IN | 0 MATIC | 0.00427211 | ||||
Unstake | 48395915 | 174 days ago | IN | 0 MATIC | 0.01435922 | ||||
Claim Rewards | 48395899 | 174 days ago | IN | 0 MATIC | 0.0118697 | ||||
Unstake | 48356809 | 175 days ago | IN | 0 MATIC | 0.00904047 | ||||
Set Daily Reward... | 48351373 | 175 days ago | IN | 0 MATIC | 0.00217324 | ||||
Unstake | 48317003 | 176 days ago | IN | 0 MATIC | 0.00975849 | ||||
Unstake | 48281694 | 177 days ago | IN | 0 MATIC | 0.01126619 | ||||
Unstake | 48238564 | 178 days ago | IN | 0 MATIC | 0.00951934 | ||||
Claim Rewards | 48238534 | 178 days ago | IN | 0 MATIC | 0.00578927 | ||||
Claim Rewards | 48190650 | 179 days ago | IN | 0 MATIC | 0.00676756 | ||||
Unstake | 48190640 | 179 days ago | IN | 0 MATIC | 0.01203966 | ||||
Unstake | 48176085 | 179 days ago | IN | 0 MATIC | 0.00765657 |
Loading...
Loading
Contract Name:
Farm
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-10-25 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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"); (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"); (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"); (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"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: contracts/Farm.sol pragma solidity ^0.8.17; contract Farm is Ownable { using SafeERC20 for IERC20; IERC20 public constant STAKING_TOKEN = IERC20(0xcfFbFA978Ac3fB10e829cA6b763c307daAFe8a77); // SLP WETH FBX IERC20 public constant REWARD_TOKEN = IERC20(0xD125443F38A69d776177c2B9c041f462936F8218); // FBX address public constant DAO_MULTISIG = 0x6EeC36B374377CDd03d94761d6C21EfCC7e6F377; mapping(address => uint256) public stakedTokens; mapping(address => uint256) public lastClaim; uint256 public timer = block.timestamp; uint256 public dailyRewards = 1e18 * 1000; event DailyRewardsChanged(uint256 newRewards); event FarmStopped(); event Stake(address indexed account, uint256 amount); event Unstake(address indexed account, uint256 amount); function setDailyRewards(uint256 newDailyRewards) public onlyOwner { dailyRewards = newDailyRewards; emit DailyRewardsChanged(newDailyRewards); } function resetTimer() public onlyOwner { timer = block.timestamp; } function stopFarm() public onlyOwner { REWARD_TOKEN.safeTransfer(DAO_MULTISIG, REWARD_TOKEN.balanceOf(address(this))); emit FarmStopped(); } function claimableRewards(address account) public view returns (uint256) { if (stakedTokens[account] == 0) { return 0; } uint256 elapsedTime = block.timestamp - lastClaim[account]; if (timer > lastClaim[account]) { elapsedTime = block.timestamp - timer; } if (elapsedTime > 15 * 24 * 3600) { elapsedTime = 15 * 24 * 3600; // Max reward period is 15 days } uint256 rewards = dailyRewards * stakedTokens[account] / STAKING_TOKEN.balanceOf(address(this)) * elapsedTime / 24 / 3600; uint256 contractBalance = REWARD_TOKEN.balanceOf(address(this)); if (contractBalance < rewards) { rewards = contractBalance; } return rewards; } function claimRewards() public returns (uint256) { uint256 rewards = claimableRewards(msg.sender); lastClaim[msg.sender] = block.timestamp; if (rewards > 0) { REWARD_TOKEN.safeTransfer(msg.sender, rewards); } return rewards; } function stake(uint256 amount) public { require(amount > 0, "Amount to stake should be greater than 0."); require(REWARD_TOKEN.balanceOf(address(this)) > 0, "Withdrawals only, farming is not currently available."); claimRewards(); STAKING_TOKEN.safeTransferFrom(msg.sender, address(this), amount); stakedTokens[msg.sender] += amount; emit Stake(msg.sender, amount); } function unstake(uint256 amount) public { require(amount > 0, "Amount to unstake should be greater than 0."); require(stakedTokens[msg.sender] >= amount, "Not enough staked tokens."); claimRewards(); stakedTokens[msg.sender] -= amount; STAKING_TOKEN.safeTransfer(msg.sender, amount); emit Unstake(msg.sender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRewards","type":"uint256"}],"name":"DailyRewardsChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"FarmStopped","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":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstake","type":"event"},{"inputs":[],"name":"DAO_MULTISIG","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"claimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDailyRewards","type":"uint256"}],"name":"setDailyRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405242600355683635c9adc5dea0000060045534801561002157600080fd5b5061003e61003361004360201b60201c565b61004b60201b60201c565b61010f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611b9e8061011e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80637d55d304116100a2578063a5b39cfb11610071578063a5b39cfb1461024a578063a694fc3a1461027a578063c8bfef7714610296578063dc01f60d146102b4578063f2fde38b146102e45761010b565b80637d55d304146101e657806388c9cb3c146101f05780638da5cb5b1461020e57806399248ea71461022c5761010b565b8063372500ab116100de578063372500ab146101725780634adef718146101905780635c16e15e146101ac578063715018a6146101dc5761010b565b80630479d644146101105780630750fa451461012e578063208e22a51461014c5780632e17de7814610156575b600080fd5b610118610300565b6040516101259190611226565b60405180910390f35b610136610318565b6040516101439190611262565b60405180910390f35b610154610330565b005b610170600480360381019061016b91906112b8565b610446565b005b61017a6105fa565b60405161018791906112f4565b60405180910390f35b6101aa60048036038101906101a591906112b8565b61069c565b005b6101c660048036038101906101c1919061133b565b6106e5565b6040516101d391906112f4565b60405180910390f35b6101e46106fd565b005b6101ee610711565b005b6101f8610722565b60405161020591906112f4565b60405180910390f35b610216610728565b6040516102239190611262565b60405180910390f35b610234610751565b6040516102419190611226565b60405180910390f35b610264600480360381019061025f919061133b565b610769565b60405161027191906112f4565b60405180910390f35b610294600480360381019061028f91906112b8565b610781565b005b61029e610985565b6040516102ab91906112f4565b60405180910390f35b6102ce60048036038101906102c9919061133b565b61098b565b6040516102db91906112f4565b60405180910390f35b6102fe60048036038101906102f9919061133b565b610c4e565b005b73cffbfa978ac3fb10e829ca6b763c307daafe8a7781565b736eec36b374377cdd03d94761d6c21efcc7e6f37781565b610338610cd1565b610418736eec36b374377cdd03d94761d6c21efcc7e6f37773d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161039d9190611262565b602060405180830381865afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de919061137d565b73d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b7f40ddd02d88583e29313b2fa88942913e7fd230fdc9c9a7b4e7772c6b45eaa66860405160405180910390a1565b60008111610489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104809061142d565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290611499565b60405180910390fd5b6105136105fa565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461056391906114e8565b925050819055506105a9338273cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040516105ef91906112f4565b60405180910390a250565b6000806106063361098b565b905042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081111561069557610694338273d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b5b8091505090565b6106a4610cd1565b806004819055507f2e5d788daa621e1c14000069c9b8fa5311f1eb386b10e6281e0e3e0181dd75c1816040516106da91906112f4565b60405180910390a150565b60026020528060005260406000206000915090505481565b610705610cd1565b61070f6000610dd5565b565b610719610cd1565b42600381905550565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73d125443f38a69d776177c2b9c041f462936f821881565b60016020528060005260406000206000915090505481565b600081116107c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bb9061158e565b60405180910390fd5b600073d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108139190611262565b602060405180830381865afa158015610830573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610854919061137d565b11610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90611620565b60405180910390fd5b61089c6105fa565b506108de33308373cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff16610e99909392919063ffffffff16565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092d9190611640565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8260405161097a91906112f4565b60405180910390a250565b60045481565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036109dc5760009050610c49565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610a2991906114e8565b9050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003541115610a855760035442610a8291906114e8565b90505b6213c680811115610a97576213c68090505b6000610e1060188373cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aec9190611262565b602060405180830381865afa158015610b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2d919061137d565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600454610b7a9190611674565b610b8491906116e5565b610b8e9190611674565b610b9891906116e5565b610ba291906116e5565b9050600073d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf39190611262565b602060405180830381865afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c34919061137d565b905081811015610c42578091505b8193505050505b919050565b610c56610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611788565b60405180910390fd5b610cce81610dd5565b50565b610cd9610f22565b73ffffffffffffffffffffffffffffffffffffffff16610cf7610728565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d44906117f4565b60405180910390fd5b565b610dd08363a9059cbb60e01b8484604051602401610d6e929190611814565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f2a565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610f1c846323b872dd60e01b858585604051602401610eba9392919061183d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f2a565b50505050565b600033905090565b6000610f8c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610ff19092919063ffffffff16565b9050600081511115610fec5780806020019051810190610fac91906118ac565b610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe29061194b565b60405180910390fd5b5b505050565b60606110008484600085611009565b90509392505050565b60608247101561104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906119dd565b60405180910390fd5b6110578561111d565b611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90611a49565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516110bf9190611ada565b60006040518083038185875af1925050503d80600081146110fc576040519150601f19603f3d011682016040523d82523d6000602084013e611101565b606091505b5091509150611111828286611140565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611150578290506111a0565b6000835111156111635782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979190611b46565b60405180910390fd5b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006111ec6111e76111e2846111a7565b6111c7565b6111a7565b9050919050565b60006111fe826111d1565b9050919050565b6000611210826111f3565b9050919050565b61122081611205565b82525050565b600060208201905061123b6000830184611217565b92915050565b600061124c826111a7565b9050919050565b61125c81611241565b82525050565b60006020820190506112776000830184611253565b92915050565b600080fd5b6000819050919050565b61129581611282565b81146112a057600080fd5b50565b6000813590506112b28161128c565b92915050565b6000602082840312156112ce576112cd61127d565b5b60006112dc848285016112a3565b91505092915050565b6112ee81611282565b82525050565b600060208201905061130960008301846112e5565b92915050565b61131881611241565b811461132357600080fd5b50565b6000813590506113358161130f565b92915050565b6000602082840312156113515761135061127d565b5b600061135f84828501611326565b91505092915050565b6000815190506113778161128c565b92915050565b6000602082840312156113935761139261127d565b5b60006113a184828501611368565b91505092915050565b600082825260208201905092915050565b7f416d6f756e7420746f20756e7374616b652073686f756c64206265206772656160008201527f746572207468616e20302e000000000000000000000000000000000000000000602082015250565b6000611417602b836113aa565b9150611422826113bb565b604082019050919050565b600060208201905081810360008301526114468161140a565b9050919050565b7f4e6f7420656e6f756768207374616b656420746f6b656e732e00000000000000600082015250565b60006114836019836113aa565b915061148e8261144d565b602082019050919050565b600060208201905081810360008301526114b281611476565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114f382611282565b91506114fe83611282565b9250828203905081811115611516576115156114b9565b5b92915050565b7f416d6f756e7420746f207374616b652073686f756c642062652067726561746560008201527f72207468616e20302e0000000000000000000000000000000000000000000000602082015250565b60006115786029836113aa565b91506115838261151c565b604082019050919050565b600060208201905081810360008301526115a78161156b565b9050919050565b7f5769746864726177616c73206f6e6c792c206661726d696e67206973206e6f7460008201527f2063757272656e746c7920617661696c61626c652e0000000000000000000000602082015250565b600061160a6035836113aa565b9150611615826115ae565b604082019050919050565b60006020820190508181036000830152611639816115fd565b9050919050565b600061164b82611282565b915061165683611282565b925082820190508082111561166e5761166d6114b9565b5b92915050565b600061167f82611282565b915061168a83611282565b925082820261169881611282565b915082820484148315176116af576116ae6114b9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006116f082611282565b91506116fb83611282565b92508261170b5761170a6116b6565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117726026836113aa565b915061177d82611716565b604082019050919050565b600060208201905081810360008301526117a181611765565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006117de6020836113aa565b91506117e9826117a8565b602082019050919050565b6000602082019050818103600083015261180d816117d1565b9050919050565b60006040820190506118296000830185611253565b61183660208301846112e5565b9392505050565b60006060820190506118526000830186611253565b61185f6020830185611253565b61186c60408301846112e5565b949350505050565b60008115159050919050565b61188981611874565b811461189457600080fd5b50565b6000815190506118a681611880565b92915050565b6000602082840312156118c2576118c161127d565b5b60006118d084828501611897565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611935602a836113aa565b9150611940826118d9565b604082019050919050565b6000602082019050818103600083015261196481611928565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006119c76026836113aa565b91506119d28261196b565b604082019050919050565b600060208201905081810360008301526119f6816119ba565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611a33601d836113aa565b9150611a3e826119fd565b602082019050919050565b60006020820190508181036000830152611a6281611a26565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611a9d578082015181840152602081019050611a82565b60008484015250505050565b6000611ab482611a69565b611abe8185611a74565b9350611ace818560208601611a7f565b80840191505092915050565b6000611ae68284611aa9565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b6000611b1882611af1565b611b2281856113aa565b9350611b32818560208601611a7f565b611b3b81611afc565b840191505092915050565b60006020820190508181036000830152611b608184611b0d565b90509291505056fea26469706673582212203f0e16ec0d65023972aa69bf3e5d5bf20898518fbfb7e9f80cda301e352f752d64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80637d55d304116100a2578063a5b39cfb11610071578063a5b39cfb1461024a578063a694fc3a1461027a578063c8bfef7714610296578063dc01f60d146102b4578063f2fde38b146102e45761010b565b80637d55d304146101e657806388c9cb3c146101f05780638da5cb5b1461020e57806399248ea71461022c5761010b565b8063372500ab116100de578063372500ab146101725780634adef718146101905780635c16e15e146101ac578063715018a6146101dc5761010b565b80630479d644146101105780630750fa451461012e578063208e22a51461014c5780632e17de7814610156575b600080fd5b610118610300565b6040516101259190611226565b60405180910390f35b610136610318565b6040516101439190611262565b60405180910390f35b610154610330565b005b610170600480360381019061016b91906112b8565b610446565b005b61017a6105fa565b60405161018791906112f4565b60405180910390f35b6101aa60048036038101906101a591906112b8565b61069c565b005b6101c660048036038101906101c1919061133b565b6106e5565b6040516101d391906112f4565b60405180910390f35b6101e46106fd565b005b6101ee610711565b005b6101f8610722565b60405161020591906112f4565b60405180910390f35b610216610728565b6040516102239190611262565b60405180910390f35b610234610751565b6040516102419190611226565b60405180910390f35b610264600480360381019061025f919061133b565b610769565b60405161027191906112f4565b60405180910390f35b610294600480360381019061028f91906112b8565b610781565b005b61029e610985565b6040516102ab91906112f4565b60405180910390f35b6102ce60048036038101906102c9919061133b565b61098b565b6040516102db91906112f4565b60405180910390f35b6102fe60048036038101906102f9919061133b565b610c4e565b005b73cffbfa978ac3fb10e829ca6b763c307daafe8a7781565b736eec36b374377cdd03d94761d6c21efcc7e6f37781565b610338610cd1565b610418736eec36b374377cdd03d94761d6c21efcc7e6f37773d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161039d9190611262565b602060405180830381865afa1580156103ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103de919061137d565b73d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b7f40ddd02d88583e29313b2fa88942913e7fd230fdc9c9a7b4e7772c6b45eaa66860405160405180910390a1565b60008111610489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104809061142d565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050290611499565b60405180910390fd5b6105136105fa565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461056391906114e8565b925050819055506105a9338273cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd826040516105ef91906112f4565b60405180910390a250565b6000806106063361098b565b905042600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081111561069557610694338273d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff16610d4f9092919063ffffffff16565b5b8091505090565b6106a4610cd1565b806004819055507f2e5d788daa621e1c14000069c9b8fa5311f1eb386b10e6281e0e3e0181dd75c1816040516106da91906112f4565b60405180910390a150565b60026020528060005260406000206000915090505481565b610705610cd1565b61070f6000610dd5565b565b610719610cd1565b42600381905550565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b73d125443f38a69d776177c2b9c041f462936f821881565b60016020528060005260406000206000915090505481565b600081116107c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bb9061158e565b60405180910390fd5b600073d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108139190611262565b602060405180830381865afa158015610830573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610854919061137d565b11610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90611620565b60405180910390fd5b61089c6105fa565b506108de33308373cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff16610e99909392919063ffffffff16565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461092d9190611640565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8260405161097a91906112f4565b60405180910390a250565b60045481565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036109dc5760009050610c49565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610a2991906114e8565b9050600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003541115610a855760035442610a8291906114e8565b90505b6213c680811115610a97576213c68090505b6000610e1060188373cffbfa978ac3fb10e829ca6b763c307daafe8a7773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610aec9190611262565b602060405180830381865afa158015610b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2d919061137d565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600454610b7a9190611674565b610b8491906116e5565b610b8e9190611674565b610b9891906116e5565b610ba291906116e5565b9050600073d125443f38a69d776177c2b9c041f462936f821873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610bf39190611262565b602060405180830381865afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c34919061137d565b905081811015610c42578091505b8193505050505b919050565b610c56610cd1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611788565b60405180910390fd5b610cce81610dd5565b50565b610cd9610f22565b73ffffffffffffffffffffffffffffffffffffffff16610cf7610728565b73ffffffffffffffffffffffffffffffffffffffff1614610d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d44906117f4565b60405180910390fd5b565b610dd08363a9059cbb60e01b8484604051602401610d6e929190611814565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f2a565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610f1c846323b872dd60e01b858585604051602401610eba9392919061183d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610f2a565b50505050565b600033905090565b6000610f8c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610ff19092919063ffffffff16565b9050600081511115610fec5780806020019051810190610fac91906118ac565b610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe29061194b565b60405180910390fd5b5b505050565b60606110008484600085611009565b90509392505050565b60608247101561104e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611045906119dd565b60405180910390fd5b6110578561111d565b611096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108d90611a49565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516110bf9190611ada565b60006040518083038185875af1925050503d80600081146110fc576040519150601f19603f3d011682016040523d82523d6000602084013e611101565b606091505b5091509150611111828286611140565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611150578290506111a0565b6000835111156111635782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111979190611b46565b60405180910390fd5b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006111ec6111e76111e2846111a7565b6111c7565b6111a7565b9050919050565b60006111fe826111d1565b9050919050565b6000611210826111f3565b9050919050565b61122081611205565b82525050565b600060208201905061123b6000830184611217565b92915050565b600061124c826111a7565b9050919050565b61125c81611241565b82525050565b60006020820190506112776000830184611253565b92915050565b600080fd5b6000819050919050565b61129581611282565b81146112a057600080fd5b50565b6000813590506112b28161128c565b92915050565b6000602082840312156112ce576112cd61127d565b5b60006112dc848285016112a3565b91505092915050565b6112ee81611282565b82525050565b600060208201905061130960008301846112e5565b92915050565b61131881611241565b811461132357600080fd5b50565b6000813590506113358161130f565b92915050565b6000602082840312156113515761135061127d565b5b600061135f84828501611326565b91505092915050565b6000815190506113778161128c565b92915050565b6000602082840312156113935761139261127d565b5b60006113a184828501611368565b91505092915050565b600082825260208201905092915050565b7f416d6f756e7420746f20756e7374616b652073686f756c64206265206772656160008201527f746572207468616e20302e000000000000000000000000000000000000000000602082015250565b6000611417602b836113aa565b9150611422826113bb565b604082019050919050565b600060208201905081810360008301526114468161140a565b9050919050565b7f4e6f7420656e6f756768207374616b656420746f6b656e732e00000000000000600082015250565b60006114836019836113aa565b915061148e8261144d565b602082019050919050565b600060208201905081810360008301526114b281611476565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114f382611282565b91506114fe83611282565b9250828203905081811115611516576115156114b9565b5b92915050565b7f416d6f756e7420746f207374616b652073686f756c642062652067726561746560008201527f72207468616e20302e0000000000000000000000000000000000000000000000602082015250565b60006115786029836113aa565b91506115838261151c565b604082019050919050565b600060208201905081810360008301526115a78161156b565b9050919050565b7f5769746864726177616c73206f6e6c792c206661726d696e67206973206e6f7460008201527f2063757272656e746c7920617661696c61626c652e0000000000000000000000602082015250565b600061160a6035836113aa565b9150611615826115ae565b604082019050919050565b60006020820190508181036000830152611639816115fd565b9050919050565b600061164b82611282565b915061165683611282565b925082820190508082111561166e5761166d6114b9565b5b92915050565b600061167f82611282565b915061168a83611282565b925082820261169881611282565b915082820484148315176116af576116ae6114b9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006116f082611282565b91506116fb83611282565b92508261170b5761170a6116b6565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006117726026836113aa565b915061177d82611716565b604082019050919050565b600060208201905081810360008301526117a181611765565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006117de6020836113aa565b91506117e9826117a8565b602082019050919050565b6000602082019050818103600083015261180d816117d1565b9050919050565b60006040820190506118296000830185611253565b61183660208301846112e5565b9392505050565b60006060820190506118526000830186611253565b61185f6020830185611253565b61186c60408301846112e5565b949350505050565b60008115159050919050565b61188981611874565b811461189457600080fd5b50565b6000815190506118a681611880565b92915050565b6000602082840312156118c2576118c161127d565b5b60006118d084828501611897565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000611935602a836113aa565b9150611940826118d9565b604082019050919050565b6000602082019050818103600083015261196481611928565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006119c76026836113aa565b91506119d28261196b565b604082019050919050565b600060208201905081810360008301526119f6816119ba565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611a33601d836113aa565b9150611a3e826119fd565b602082019050919050565b60006020820190508181036000830152611a6281611a26565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015611a9d578082015181840152602081019050611a82565b60008484015250505050565b6000611ab482611a69565b611abe8185611a74565b9350611ace818560208601611a7f565b80840191505092915050565b6000611ae68284611aa9565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b6000611b1882611af1565b611b2281856113aa565b9350611b32818560208601611a7f565b611b3b81611afc565b840191505092915050565b60006020820190508181036000830152611b608184611b0d565b90509291505056fea26469706673582212203f0e16ec0d65023972aa69bf3e5d5bf20898518fbfb7e9f80cda301e352f752d64736f6c63430008110033
Deployed Bytecode Sourcemap
21959:3120:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22026:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22242:81;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22999:163;;;:::i;:::-;;24698:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23963:289;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22734:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22386:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:103;;;:::i;:::-;;22910:81;;;:::i;:::-;;22439:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2128:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22138:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22332:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24264:426;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22484:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23170:785;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3034:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22026:89;22072:42;22026:89;:::o;22242:81::-;22281:42;22242:81;:::o;22999:163::-;2014:13;:11;:13::i;:::-;23047:78:::1;22281:42;22183;23087:22;;;23118:4;23087:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22183:42;23047:25;;;;:78;;;;;:::i;:::-;23141:13;;;;;;;;;;22999:163::o:0;24698:378::-;24766:1;24757:6;:10;24749:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:6;24834:12;:24;24847:10;24834:24;;;;;;;;;;;;;;;;:34;;24826:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24909:14;:12;:14::i;:::-;;24962:6;24934:12;:24;24947:10;24934:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;24979:46;25006:10;25018:6;22072:42;24979:26;;;;:46;;;;;:::i;:::-;25049:10;25041:27;;;25061:6;25041:27;;;;;;:::i;:::-;;;;;;;;24698:378;:::o;23963:289::-;24003:7;24023:15;24041:28;24058:10;24041:16;:28::i;:::-;24023:46;;24104:15;24080:9;:21;24090:10;24080:21;;;;;;;;;;;;;;;:39;;;;24144:1;24134:7;:11;24130:90;;;24162:46;24188:10;24200:7;22183:42;24162:25;;;;:46;;;;;:::i;:::-;24130:90;24237:7;24230:14;;;23963:289;:::o;22734:168::-;2014:13;:11;:13::i;:::-;22827:15:::1;22812:12;:30;;;;22858:36;22878:15;22858:36;;;;;;:::i;:::-;;;;;;;;22734:168:::0;:::o;22386:44::-;;;;;;;;;;;;;;;;;:::o;2776:103::-;2014:13;:11;:13::i;:::-;2841:30:::1;2868:1;2841:18;:30::i;:::-;2776:103::o:0;22910:81::-;2014:13;:11;:13::i;:::-;22968:15:::1;22960:5;:23;;;;22910:81::o:0;22439:38::-;;;;:::o;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;22138:88::-;22183:42;22138:88;:::o;22332:47::-;;;;;;;;;;;;;;;;;:::o;24264:426::-;24330:1;24321:6;:10;24313:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24436:1;22183:42;24396:22;;;24427:4;24396:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;24388:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;24506:14;:12;:14::i;:::-;;24531:65;24562:10;24582:4;24589:6;22072:42;24531:30;;;;:65;;;;;;:::i;:::-;24635:6;24607:12;:24;24620:10;24607:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;24663:10;24657:25;;;24675:6;24657:25;;;;;;:::i;:::-;;;;;;;;24264:426;:::o;22484:41::-;;;;:::o;23170:785::-;23234:7;23283:1;23258:12;:21;23271:7;23258:21;;;;;;;;;;;;;;;;:26;23254:64;;23305:1;23298:8;;;;23254:64;23328:19;23368:9;:18;23378:7;23368:18;;;;;;;;;;;;;;;;23350:15;:36;;;;:::i;:::-;23328:58;;23409:9;:18;23419:7;23409:18;;;;;;;;;;;;;;;;23401:5;;:26;23397:96;;;23476:5;;23458:15;:23;;;;:::i;:::-;23444:37;;23397:96;23521:14;23507:11;:28;23503:121;;;23566:14;23552:28;;23503:121;23634:15;23751:4;23746:2;23732:11;22072:42;23691:23;;;23723:4;23691:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23667:12;:21;23680:7;23667:21;;;;;;;;;;;;;;;;23652:12;;:36;;;;:::i;:::-;:77;;;;:::i;:::-;:91;;;;:::i;:::-;:96;;;;:::i;:::-;:103;;;;:::i;:::-;23634:121;;23766:23;22183:42;23792:22;;;23823:4;23792:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23766:63;;23862:7;23844:15;:25;23840:83;;;23896:15;23886:25;;23840:83;23940:7;23933:14;;;;;23170:785;;;;:::o;3034:201::-;2014:13;:11;:13::i;:::-;3143:1:::1;3123:22;;:8;:22;;::::0;3115:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3199:28;3218:8;3199:18;:28::i;:::-;3034:201:::0;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;18104:211::-;18221:86;18241:5;18271:23;;;18296:2;18300:5;18248:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18221:19;:86::i;:::-;18104:211;;;:::o;3395:191::-;3469:16;3488:6;;;;;;;;;;;3469:25;;3514:8;3505:6;;:17;;;;;;;;;;;;;;;;;;3569:8;3538:40;;3559:8;3538:40;;;;;;;;;;;;3458:128;3395:191;:::o;18323:248::-;18467:96;18487:5;18517:27;;;18546:4;18552:2;18556:5;18494:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18467:19;:96::i;:::-;18323:248;;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;21171:716::-;21595:23;21621:69;21649:4;21621:69;;;;;;;;;;;;;;;;;21629:5;21621:27;;;;:69;;;;;:::i;:::-;21595:95;;21725:1;21705:10;:17;:21;21701:179;;;21802:10;21791:30;;;;;;;;;;;;:::i;:::-;21783:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21701:179;21241:646;21171:716;;:::o;7571:229::-;7708:12;7740:52;7762:6;7770:4;7776:1;7779:12;7740:21;:52::i;:::-;7733:59;;7571:229;;;;;:::o;8691:510::-;8861:12;8919:5;8894:21;:30;;8886:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8986:18;8997:6;8986:10;:18::i;:::-;8978:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9052:12;9066:23;9093:6;:11;;9112:5;9119:4;9093:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9051:73;;;;9142:51;9159:7;9168:10;9180:12;9142:16;:51::i;:::-;9135:58;;;;8691:510;;;;;;:::o;4826:326::-;4886:4;5143:1;5121:7;:19;;;:23;5114:30;;4826:326;;;:::o;11377:762::-;11527:12;11556:7;11552:580;;;11587:10;11580:17;;;;11552:580;11721:1;11701:10;:17;:21;11697:424;;;11949:10;11943:17;12010:15;11997:10;11993:2;11989:19;11982:44;11697:424;12092:12;12085:20;;;;;;;;;;;:::i;:::-;;;;;;;;11377:762;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:140::-;549:9;582:37;613:5;582:37;:::i;:::-;569:50;;485:140;;;:::o;631:159::-;732:51;777:5;732:51;:::i;:::-;727:3;720:64;631:159;;:::o;796:250::-;903:4;941:2;930:9;926:18;918:26;;954:85;1036:1;1025:9;1021:17;1012:6;954:85;:::i;:::-;796:250;;;;:::o;1052:96::-;1089:7;1118:24;1136:5;1118:24;:::i;:::-;1107:35;;1052:96;;;:::o;1154:118::-;1241:24;1259:5;1241:24;:::i;:::-;1236:3;1229:37;1154:118;;:::o;1278:222::-;1371:4;1409:2;1398:9;1394:18;1386:26;;1422:71;1490:1;1479:9;1475:17;1466:6;1422:71;:::i;:::-;1278:222;;;;:::o;1587:117::-;1696:1;1693;1686:12;1833:77;1870:7;1899:5;1888:16;;1833:77;;;:::o;1916:122::-;1989:24;2007:5;1989:24;:::i;:::-;1982:5;1979:35;1969:63;;2028:1;2025;2018:12;1969:63;1916:122;:::o;2044:139::-;2090:5;2128:6;2115:20;2106:29;;2144:33;2171:5;2144:33;:::i;:::-;2044:139;;;;:::o;2189:329::-;2248:6;2297:2;2285:9;2276:7;2272:23;2268:32;2265:119;;;2303:79;;:::i;:::-;2265:119;2423:1;2448:53;2493:7;2484:6;2473:9;2469:22;2448:53;:::i;:::-;2438:63;;2394:117;2189:329;;;;:::o;2524:118::-;2611:24;2629:5;2611:24;:::i;:::-;2606:3;2599:37;2524:118;;:::o;2648:222::-;2741:4;2779:2;2768:9;2764:18;2756:26;;2792:71;2860:1;2849:9;2845:17;2836:6;2792:71;:::i;:::-;2648:222;;;;:::o;2876:122::-;2949:24;2967:5;2949:24;:::i;:::-;2942:5;2939:35;2929:63;;2988:1;2985;2978:12;2929:63;2876:122;:::o;3004:139::-;3050:5;3088:6;3075:20;3066:29;;3104:33;3131:5;3104:33;:::i;:::-;3004:139;;;;:::o;3149:329::-;3208:6;3257:2;3245:9;3236:7;3232:23;3228:32;3225:119;;;3263:79;;:::i;:::-;3225:119;3383:1;3408:53;3453:7;3444:6;3433:9;3429:22;3408:53;:::i;:::-;3398:63;;3354:117;3149:329;;;;:::o;3484:143::-;3541:5;3572:6;3566:13;3557:22;;3588:33;3615:5;3588:33;:::i;:::-;3484:143;;;;:::o;3633:351::-;3703:6;3752:2;3740:9;3731:7;3727:23;3723:32;3720:119;;;3758:79;;:::i;:::-;3720:119;3878:1;3903:64;3959:7;3950:6;3939:9;3935:22;3903:64;:::i;:::-;3893:74;;3849:128;3633:351;;;;:::o;3990:169::-;4074:11;4108:6;4103:3;4096:19;4148:4;4143:3;4139:14;4124:29;;3990:169;;;;:::o;4165:230::-;4305:34;4301:1;4293:6;4289:14;4282:58;4374:13;4369:2;4361:6;4357:15;4350:38;4165:230;:::o;4401:366::-;4543:3;4564:67;4628:2;4623:3;4564:67;:::i;:::-;4557:74;;4640:93;4729:3;4640:93;:::i;:::-;4758:2;4753:3;4749:12;4742:19;;4401:366;;;:::o;4773:419::-;4939:4;4977:2;4966:9;4962:18;4954:26;;5026:9;5020:4;5016:20;5012:1;5001:9;4997:17;4990:47;5054:131;5180:4;5054:131;:::i;:::-;5046:139;;4773:419;;;:::o;5198:175::-;5338:27;5334:1;5326:6;5322:14;5315:51;5198:175;:::o;5379:366::-;5521:3;5542:67;5606:2;5601:3;5542:67;:::i;:::-;5535:74;;5618:93;5707:3;5618:93;:::i;:::-;5736:2;5731:3;5727:12;5720:19;;5379:366;;;:::o;5751:419::-;5917:4;5955:2;5944:9;5940:18;5932:26;;6004:9;5998:4;5994:20;5990:1;5979:9;5975:17;5968:47;6032:131;6158:4;6032:131;:::i;:::-;6024:139;;5751:419;;;:::o;6176:180::-;6224:77;6221:1;6214:88;6321:4;6318:1;6311:15;6345:4;6342:1;6335:15;6362:194;6402:4;6422:20;6440:1;6422:20;:::i;:::-;6417:25;;6456:20;6474:1;6456:20;:::i;:::-;6451:25;;6500:1;6497;6493:9;6485:17;;6524:1;6518:4;6515:11;6512:37;;;6529:18;;:::i;:::-;6512:37;6362:194;;;;:::o;6562:228::-;6702:34;6698:1;6690:6;6686:14;6679:58;6771:11;6766:2;6758:6;6754:15;6747:36;6562:228;:::o;6796:366::-;6938:3;6959:67;7023:2;7018:3;6959:67;:::i;:::-;6952:74;;7035:93;7124:3;7035:93;:::i;:::-;7153:2;7148:3;7144:12;7137:19;;6796:366;;;:::o;7168:419::-;7334:4;7372:2;7361:9;7357:18;7349:26;;7421:9;7415:4;7411:20;7407:1;7396:9;7392:17;7385:47;7449:131;7575:4;7449:131;:::i;:::-;7441:139;;7168:419;;;:::o;7593:240::-;7733:34;7729:1;7721:6;7717:14;7710:58;7802:23;7797:2;7789:6;7785:15;7778:48;7593:240;:::o;7839:366::-;7981:3;8002:67;8066:2;8061:3;8002:67;:::i;:::-;7995:74;;8078:93;8167:3;8078:93;:::i;:::-;8196:2;8191:3;8187:12;8180:19;;7839:366;;;:::o;8211:419::-;8377:4;8415:2;8404:9;8400:18;8392:26;;8464:9;8458:4;8454:20;8450:1;8439:9;8435:17;8428:47;8492:131;8618:4;8492:131;:::i;:::-;8484:139;;8211:419;;;:::o;8636:191::-;8676:3;8695:20;8713:1;8695:20;:::i;:::-;8690:25;;8729:20;8747:1;8729:20;:::i;:::-;8724:25;;8772:1;8769;8765:9;8758:16;;8793:3;8790:1;8787:10;8784:36;;;8800:18;;:::i;:::-;8784:36;8636:191;;;;:::o;8833:410::-;8873:7;8896:20;8914:1;8896:20;:::i;:::-;8891:25;;8930:20;8948:1;8930:20;:::i;:::-;8925:25;;8985:1;8982;8978:9;9007:30;9025:11;9007:30;:::i;:::-;8996:41;;9186:1;9177:7;9173:15;9170:1;9167:22;9147:1;9140:9;9120:83;9097:139;;9216:18;;:::i;:::-;9097:139;8881:362;8833:410;;;;:::o;9249:180::-;9297:77;9294:1;9287:88;9394:4;9391:1;9384:15;9418:4;9415:1;9408:15;9435:185;9475:1;9492:20;9510:1;9492:20;:::i;:::-;9487:25;;9526:20;9544:1;9526:20;:::i;:::-;9521:25;;9565:1;9555:35;;9570:18;;:::i;:::-;9555:35;9612:1;9609;9605:9;9600:14;;9435:185;;;;:::o;9626:225::-;9766:34;9762:1;9754:6;9750:14;9743:58;9835:8;9830:2;9822:6;9818:15;9811:33;9626:225;:::o;9857:366::-;9999:3;10020:67;10084:2;10079:3;10020:67;:::i;:::-;10013:74;;10096:93;10185:3;10096:93;:::i;:::-;10214:2;10209:3;10205:12;10198:19;;9857:366;;;:::o;10229:419::-;10395:4;10433:2;10422:9;10418:18;10410:26;;10482:9;10476:4;10472:20;10468:1;10457:9;10453:17;10446:47;10510:131;10636:4;10510:131;:::i;:::-;10502:139;;10229:419;;;:::o;10654:182::-;10794:34;10790:1;10782:6;10778:14;10771:58;10654:182;:::o;10842:366::-;10984:3;11005:67;11069:2;11064:3;11005:67;:::i;:::-;10998:74;;11081:93;11170:3;11081:93;:::i;:::-;11199:2;11194:3;11190:12;11183:19;;10842:366;;;:::o;11214:419::-;11380:4;11418:2;11407:9;11403:18;11395:26;;11467:9;11461:4;11457:20;11453:1;11442:9;11438:17;11431:47;11495:131;11621:4;11495:131;:::i;:::-;11487:139;;11214:419;;;:::o;11639:332::-;11760:4;11798:2;11787:9;11783:18;11775:26;;11811:71;11879:1;11868:9;11864:17;11855:6;11811:71;:::i;:::-;11892:72;11960:2;11949:9;11945:18;11936:6;11892:72;:::i;:::-;11639:332;;;;;:::o;11977:442::-;12126:4;12164:2;12153:9;12149:18;12141:26;;12177:71;12245:1;12234:9;12230:17;12221:6;12177:71;:::i;:::-;12258:72;12326:2;12315:9;12311:18;12302:6;12258:72;:::i;:::-;12340;12408:2;12397:9;12393:18;12384:6;12340:72;:::i;:::-;11977:442;;;;;;:::o;12425:90::-;12459:7;12502:5;12495:13;12488:21;12477:32;;12425:90;;;:::o;12521:116::-;12591:21;12606:5;12591:21;:::i;:::-;12584:5;12581:32;12571:60;;12627:1;12624;12617:12;12571:60;12521:116;:::o;12643:137::-;12697:5;12728:6;12722:13;12713:22;;12744:30;12768:5;12744:30;:::i;:::-;12643:137;;;;:::o;12786:345::-;12853:6;12902:2;12890:9;12881:7;12877:23;12873:32;12870:119;;;12908:79;;:::i;:::-;12870:119;13028:1;13053:61;13106:7;13097:6;13086:9;13082:22;13053:61;:::i;:::-;13043:71;;12999:125;12786:345;;;;:::o;13137:229::-;13277:34;13273:1;13265:6;13261:14;13254:58;13346:12;13341:2;13333:6;13329:15;13322:37;13137:229;:::o;13372:366::-;13514:3;13535:67;13599:2;13594:3;13535:67;:::i;:::-;13528:74;;13611:93;13700:3;13611:93;:::i;:::-;13729:2;13724:3;13720:12;13713:19;;13372:366;;;:::o;13744:419::-;13910:4;13948:2;13937:9;13933:18;13925:26;;13997:9;13991:4;13987:20;13983:1;13972:9;13968:17;13961:47;14025:131;14151:4;14025:131;:::i;:::-;14017:139;;13744:419;;;:::o;14169:225::-;14309:34;14305:1;14297:6;14293:14;14286:58;14378:8;14373:2;14365:6;14361:15;14354:33;14169:225;:::o;14400:366::-;14542:3;14563:67;14627:2;14622:3;14563:67;:::i;:::-;14556:74;;14639:93;14728:3;14639:93;:::i;:::-;14757:2;14752:3;14748:12;14741:19;;14400:366;;;:::o;14772:419::-;14938:4;14976:2;14965:9;14961:18;14953:26;;15025:9;15019:4;15015:20;15011:1;15000:9;14996:17;14989:47;15053:131;15179:4;15053:131;:::i;:::-;15045:139;;14772:419;;;:::o;15197:179::-;15337:31;15333:1;15325:6;15321:14;15314:55;15197:179;:::o;15382:366::-;15524:3;15545:67;15609:2;15604:3;15545:67;:::i;:::-;15538:74;;15621:93;15710:3;15621:93;:::i;:::-;15739:2;15734:3;15730:12;15723:19;;15382:366;;;:::o;15754:419::-;15920:4;15958:2;15947:9;15943:18;15935:26;;16007:9;16001:4;15997:20;15993:1;15982:9;15978:17;15971:47;16035:131;16161:4;16035:131;:::i;:::-;16027:139;;15754:419;;;:::o;16179:98::-;16230:6;16264:5;16258:12;16248:22;;16179:98;;;:::o;16283:147::-;16384:11;16421:3;16406:18;;16283:147;;;;:::o;16436:246::-;16517:1;16527:113;16541:6;16538:1;16535:13;16527:113;;;16626:1;16621:3;16617:11;16611:18;16607:1;16602:3;16598:11;16591:39;16563:2;16560:1;16556:10;16551:15;;16527:113;;;16674:1;16665:6;16660:3;16656:16;16649:27;16498:184;16436:246;;;:::o;16688:386::-;16792:3;16820:38;16852:5;16820:38;:::i;:::-;16874:88;16955:6;16950:3;16874:88;:::i;:::-;16867:95;;16971:65;17029:6;17024:3;17017:4;17010:5;17006:16;16971:65;:::i;:::-;17061:6;17056:3;17052:16;17045:23;;16796:278;16688:386;;;;:::o;17080:271::-;17210:3;17232:93;17321:3;17312:6;17232:93;:::i;:::-;17225:100;;17342:3;17335:10;;17080:271;;;;:::o;17357:99::-;17409:6;17443:5;17437:12;17427:22;;17357:99;;;:::o;17462:102::-;17503:6;17554:2;17550:7;17545:2;17538:5;17534:14;17530:28;17520:38;;17462:102;;;:::o;17570:377::-;17658:3;17686:39;17719:5;17686:39;:::i;:::-;17741:71;17805:6;17800:3;17741:71;:::i;:::-;17734:78;;17821:65;17879:6;17874:3;17867:4;17860:5;17856:16;17821:65;:::i;:::-;17911:29;17933:6;17911:29;:::i;:::-;17906:3;17902:39;17895:46;;17662:285;17570:377;;;;:::o;17953:313::-;18066:4;18104:2;18093:9;18089:18;18081:26;;18153:9;18147:4;18143:20;18139:1;18128:9;18124:17;18117:47;18181:78;18254:4;18245:6;18181:78;:::i;:::-;18173:86;;17953:313;;;;:::o
Swarm Source
ipfs://3f0e16ec0d65023972aa69bf3e5d5bf20898518fbfb7e9f80cda301e352f752d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
MATIC | 100.00% | $0.542078 | 280.6244 | $152.12 |
[ 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.