More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
FlowerNFTStaking
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-02-02 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/[email protected]/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/[email protected]/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/[email protected]/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.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/[email protected]/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/[email protected]/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.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. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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/[email protected]/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File: @openzeppelin/[email protected]/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: growopstaking.sol pragma solidity ^0.8.0; interface IFlowerNFT { function levels(uint256 tokenId) external view returns (uint256); } contract FlowerNFTStaking is Ownable, ReentrancyGuard, Pausable { IERC721 public flowerNFT; IERC20 public flowerToken; IERC721 public stonerToken; uint256 public rewardRate = 1 ether; uint256 public stonerBonusMultiplier = 10; uint256 public flowerNFTBonusMultiplier = 5; uint256 public tapBonusAmount = 0.1 ether; uint256 public tapCooldown = 1 hours; struct Stake { uint256 tokenId; uint256 stakedAt; uint256 lastTapped; } mapping(address => Stake[]) public stakes; mapping(uint256 => address) public stakedTokenOwners; mapping(address => uint256[]) public stonerStakes; event Staked(address indexed user, uint256[] flowerTokenIds, uint256[] stonerTokenIds); event Unstaked(address indexed user, uint256[] flowerTokenIds, uint256[] stonerTokenIds); event RewardClaimed(address indexed user, uint256 amount); event TapBonusClaimed(address indexed user, uint256 amount); event TokensWithdrawn(address indexed owner, uint256 amount); event RewardRateUpdated(uint256 newRate); event StonerBonusUpdated(uint256 newMultiplier); event FlowerNFTBonusUpdated(uint256 newMultiplier); event TapBonusUpdated(uint256 newAmount); event TapCooldownUpdated(uint256 newCooldown); constructor(address _flowerNFT, address _flowerToken, address _stonerToken) { flowerNFT = IERC721(_flowerNFT); flowerToken = IERC20(_flowerToken); stonerToken = IERC721(_stonerToken); } /** ADMIN FUNCTIONS TO SET REWARD PARAMETERS **/ function setRewardRate(uint256 newRate) external onlyOwner { require(newRate > 0, "Reward rate must be greater than zero"); rewardRate = newRate; emit RewardRateUpdated(newRate); } function setStonerBonusMultiplier(uint256 newMultiplier) external onlyOwner { require(newMultiplier >= 1, "Multiplier must be at least 1"); stonerBonusMultiplier = newMultiplier; emit StonerBonusUpdated(newMultiplier); } function setFlowerNFTBonusMultiplier(uint256 newMultiplier) external onlyOwner { require(newMultiplier >= 1, "Multiplier must be at least 1"); flowerNFTBonusMultiplier = newMultiplier; emit FlowerNFTBonusUpdated(newMultiplier); } function setTapBonusAmount(uint256 newAmount) external onlyOwner { require(newAmount > 0, "Bonus amount must be greater than zero"); tapBonusAmount = newAmount; emit TapBonusUpdated(newAmount); } function setTapCooldown(uint256 newCooldown) external onlyOwner { require(newCooldown > 0, "Cooldown must be greater than zero"); tapCooldown = newCooldown; emit TapCooldownUpdated(newCooldown); } /** ADMIN FUNCTION TO WITHDRAW $FLOWER TOKENS **/ function withdrawTokens(uint256 amount) external onlyOwner { require(amount > 0, "Amount must be greater than zero"); require(flowerToken.balanceOf(address(this)) >= amount, "Not enough tokens in contract"); flowerToken.transfer(msg.sender, amount); emit TokensWithdrawn(msg.sender, amount); } /** STAKING MULTIPLE NFTs **/ function stakeMultiple(uint256[] memory flowerTokenIds, uint256[] memory stonerTokenIds) external nonReentrant whenNotPaused { require(flowerTokenIds.length > 0 || stonerTokenIds.length > 0, "No NFTs provided"); for (uint256 i = 0; i < flowerTokenIds.length; i++) { uint256 tokenId = flowerTokenIds[i]; require(flowerNFT.ownerOf(tokenId) == msg.sender, "You do not own this FlowerNFT"); require(stakedTokenOwners[tokenId] == address(0), "This NFT is already staked"); stakes[msg.sender].push(Stake({tokenId: tokenId, stakedAt: block.timestamp, lastTapped: 0})); stakedTokenOwners[tokenId] = msg.sender; flowerNFT.safeTransferFrom(msg.sender, address(this), tokenId); } for (uint256 i = 0; i < stonerTokenIds.length; i++) { uint256 stonerId = stonerTokenIds[i]; require(stonerToken.ownerOf(stonerId) == msg.sender, "You do not own this StonerNFT"); stonerToken.safeTransferFrom(msg.sender, address(this), stonerId); stonerStakes[msg.sender].push(stonerId); } emit Staked(msg.sender, flowerTokenIds, stonerTokenIds); } /** UNSTAKING MULTIPLE NFTs **/ function unstakeMultiple(uint256[] memory flowerTokenIds, uint256[] memory stonerTokenIds) external nonReentrant whenNotPaused { require(flowerTokenIds.length > 0 || stonerTokenIds.length > 0, "No NFTs provided"); uint256 totalReward = 0; for (uint256 i = 0; i < flowerTokenIds.length; i++) { uint256 tokenId = flowerTokenIds[i]; require(stakedTokenOwners[tokenId] == msg.sender, "You do not own this staked NFT"); totalReward += calculateReward(msg.sender, tokenId); _removeStake(msg.sender, tokenId); flowerNFT.safeTransferFrom(address(this), msg.sender, tokenId); } require(stonerStakes[msg.sender].length >= stonerTokenIds.length, "Not enough staked StonerNFTs"); for (uint256 i = 0; i < stonerTokenIds.length; i++) { uint256 stonerId = stonerTokenIds[i]; require(_removeStonerStake(msg.sender, stonerId), "StonerNFT not staked by user"); stonerToken.safeTransferFrom(address(this), msg.sender, stonerId); } if (totalReward > 0) { flowerToken.transfer(msg.sender, totalReward); emit RewardClaimed(msg.sender, totalReward); } emit Unstaked(msg.sender, flowerTokenIds, stonerTokenIds); } /** REWARD CALCULATION **/ function calculateReward(address user, uint256 tokenId) public view returns (uint256) { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { uint256 timeStaked = block.timestamp - stakes[user][i].stakedAt; uint256 baseReward = (timeStaked * getFlowerNFTLevel(tokenId) * rewardRate) / 1 days; return baseReward; } } return 0; } /** ✅ MISSING FUNCTION RESTORED **/ function getFlowerNFTLevel(uint256 tokenId) public view returns (uint256) { require(address(flowerNFT) != address(0), "FlowerNFT contract not set"); return IFlowerNFT(address(flowerNFT)).levels(tokenId); } function _removeStake(address user, uint256 tokenId) internal { for (uint256 i = 0; i < stakes[user].length; i++) { if (stakes[user][i].tokenId == tokenId) { stakes[user][i] = stakes[user][stakes[user].length - 1]; stakes[user].pop(); delete stakedTokenOwners[tokenId]; break; } } } function _removeStonerStake(address user, uint256 tokenId) internal returns (bool) { uint256[] storage stakedNFTs = stonerStakes[user]; for (uint256 i = 0; i < stakedNFTs.length; i++) { if (stakedNFTs[i] == tokenId) { stakedNFTs[i] = stakedNFTs[stakedNFTs.length - 1]; stakedNFTs.pop(); return true; } } return false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_flowerNFT","type":"address"},{"internalType":"address","name":"_flowerToken","type":"address"},{"internalType":"address","name":"_stonerToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"FlowerNFTBonusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"RewardRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"StonerBonusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TapBonusClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"TapBonusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCooldown","type":"uint256"}],"name":"TapCooldownUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerNFT","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerNFTBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flowerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getFlowerNFTLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setFlowerNFTBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMultiplier","type":"uint256"}],"name":"setStonerBonusMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setTapBonusAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCooldown","type":"uint256"}],"name":"setTapCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"flowerTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"stakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakedTokenOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"stakedAt","type":"uint256"},{"internalType":"uint256","name":"lastTapped","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerBonusMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stonerStakes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stonerToken","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapBonusAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tapCooldown","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":"flowerTokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"stonerTokenIds","type":"uint256[]"}],"name":"unstakeMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052670de0b6b3a7640000600555600a600655600560075567016345785d8a0000600855610e106009553480156200003957600080fd5b50604051620033793803806200337983398181016040528101906200005f9190620002a3565b6200007f620000736200016d60201b60201c565b6200017560201b60201c565b600180819055506000600260006101000a81548160ff02191690831515021790555082600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620002ff565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200026b826200023e565b9050919050565b6200027d816200025e565b81146200028957600080fd5b50565b6000815190506200029d8162000272565b92915050565b600080600060608486031215620002bf57620002be62000239565b5b6000620002cf868287016200028c565b9350506020620002e2868287016200028c565b9250506040620002f5868287016200028c565b9150509250925092565b61306a806200030f6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063602095ce116100de5780638da5cb5b116100975780639f60421f116100715780639f60421f14610418578063aee8c3a214610434578063e7d554ac14610464578063f2fde38b1461048057610173565b80638da5cb5b146103c057806396e840a9146103de5780639e447fc6146103fc57610173565b8063602095ce1461030e578063715018a61461032c578063721a1f45146103365780637b0a47ee14610354578063851fbb54146103725780638b3d81b31461039057610173565b80633cfd1568116101305780633cfd15681461023857806341cd5f731461026857806351f3db4814610286578063584b62a1146102a25780635c975abb146102d45780635cae8f59146102f257610173565b80631852e8d9146101785780631cc6ec93146101a85780632c583bf3146101c4578063315a095d146101e05780633b18dc71146101fc5780633b3f944c1461021a575b600080fd5b610192600480360381019061018d9190612000565b61049c565b60405161019f919061204f565b60405180910390f35b6101c260048036038101906101bd919061206a565b610626565b005b6101de60048036038101906101d991906121f0565b6106b2565b005b6101fa60048036038101906101f5919061206a565b610d20565b005b610204610f3b565b604051610211919061204f565b60405180910390f35b610222610f41565b60405161022f919061204f565b60405180910390f35b610252600480360381019061024d9190612000565b610f47565b60405161025f919061204f565b60405180910390f35b610270610f78565b60405161027d919061204f565b60405180910390f35b6102a0600480360381019061029b919061206a565b610f7e565b005b6102bc60048036038101906102b79190612000565b61100a565b6040516102cb93929190612268565b60405180910390f35b6102dc611051565b6040516102e991906122ba565b60405180910390f35b61030c6004803603810190610307919061206a565b611068565b005b6103166110f5565b6040516103239190612334565b60405180910390f35b61033461111b565b005b61033e61112f565b60405161034b9190612370565b60405180910390f35b61035c611155565b604051610369919061204f565b60405180910390f35b61037a61115b565b6040516103879190612370565b60405180910390f35b6103aa60048036038101906103a5919061206a565b611181565b6040516103b7919061239a565b60405180910390f35b6103c86111b4565b6040516103d5919061239a565b60405180910390f35b6103e66111dd565b6040516103f3919061204f565b60405180910390f35b6104166004803603810190610411919061206a565b6111e3565b005b610432600480360381019061042d91906121f0565b61126f565b005b61044e6004803603810190610449919061206a565b611759565b60405161045b919061204f565b60405180910390f35b61047e6004803603810190610479919061206a565b61188e565b005b61049a600480360381019061049591906123b5565b61191b565b005b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561061a5782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105405761053f6123e2565b5b90600052602060002090600302016000015403610607576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105aa576105a96123e2565b5b906000526020600020906003020160010154426105c79190612440565b90506000620151806005546105db87611759565b846105e69190612474565b6105f09190612474565b6105fa91906124e5565b9050809350505050610620565b808061061290612516565b9150506104a4565b50600090505b92915050565b61062e61199e565b60008111610671576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906125e1565b60405180910390fd5b806009819055507fa292edce75c880178d165ee8473be051a702186c35b27ea86dab6c73ce88ff57816040516106a7919061204f565b60405180910390a150565b6106ba611a1c565b6106c2611a6b565b6000825111806106d3575060008151115b610712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107099061264d565b60405180910390fd5b60005b8251811015610a83576000838281518110610733576107326123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016107af919061204f565b602060405180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612682565b73ffffffffffffffffffffffffffffffffffffffff1614610846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083d906126fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108df90612767565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528083815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610a3d93929190612787565b600060405180830381600087803b158015610a5757600080fd5b505af1158015610a6b573d6000803e3d6000fd5b50505050508080610a7b90612516565b915050610715565b5060005b8151811015610cc3576000828281518110610aa557610aa46123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610b21919061204f565b602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b629190612682565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf9061280a565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610c1793929190612787565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b50505050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055508080610cbb90612516565b915050610a87565b503373ffffffffffffffffffffffffffffffffffffffff167f859a4049709b7ed7c28d73c9122229b70aa55880d8744d1931e98e093a1b5b918383604051610d0c9291906128e8565b60405180910390a2610d1c611ab5565b5050565b610d2861199e565b60008111610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061296b565b60405180910390fd5b80600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dc7919061239a565b602060405180830381865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0891906129a0565b1015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090612a19565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ea6929190612a39565b6020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612a8e565b503373ffffffffffffffffffffffffffffffffffffffff167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b82604051610f30919061204f565b60405180910390a250565b60085481565b60075481565b600c6020528160005260406000208181548110610f6357600080fd5b90600052602060002001600091509150505481565b60095481565b610f8661199e565b60008111610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090612b2d565b60405180910390fd5b806008819055507f984f97438a61d2a2abf6ae7cccfe9dc9c37c8e3111255c24be5ef1129c6f2c7681604051610fff919061204f565b60405180910390a150565b600a602052816000526040600020818154811061102657600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b61107061199e565b60018110156110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90612b99565b60405180910390fd5b806006819055507ff4b2d54c414c720f8a9e79192fc7b4918e9b12a7ce94b34ab404a40bccc6821d816040516110ea919061204f565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61112361199e565b61112d6000611abe565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6111eb61199e565b6000811161122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612c2b565b60405180910390fd5b806005819055507f41d466ebd06fb97e7786086ac8b69b7eb7da798592036251291d34e9791cde0181604051611264919061204f565b60405180910390a150565b611277611a1c565b61127f611a6b565b600082511180611290575060008151115b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c69061264d565b60405180910390fd5b6000805b83518110156114625760008482815181106112f1576112f06123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139390612c97565b60405180910390fd5b6113a6338261049c565b836113b19190612cb7565b92506113bd3382611b82565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b815260040161141c93929190612787565b600060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b5050505050808061145a90612516565b9150506112d3565b508151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905010156114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612d37565b60405180910390fd5b60005b825181101561160257600083828151811061150a576115096123e2565b5b6020026020010151905061151e3382611e38565b61155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490612da3565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b81526004016115bc93929190612787565b600060405180830381600087803b1580156115d657600080fd5b505af11580156115ea573d6000803e3d6000fd5b505050505080806115fa90612516565b9150506114ec565b5060008111156116fc57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611669929190612a39565b6020604051808303816000875af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190612a8e565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516116f3919061204f565b60405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167fef3bc8b2408263209f01abd2cf8120586077da5e4cf45d8a7dd83d2a0545f10384846040516117449291906128e8565b60405180910390a250611755611ab5565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290612e0f565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b8152600401611846919061204f565b602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188791906129a0565b9050919050565b61189661199e565b60018110156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190612b99565b60405180910390fd5b806007819055507ff3570cd97015150a0e5502c9cf62bb4b8fd0d2891b81254dd7da2d319adf884181604051611910919061204f565b60405180910390a150565b61192361199e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990612ea1565b60405180910390fd5b61199b81611abe565b50565b6119a6611f50565b73ffffffffffffffffffffffffffffffffffffffff166119c46111b4565b73ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190612f0d565b60405180910390fd5b565b600260015403611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612f79565b60405180910390fd5b6002600181905550565b611a73611051565b15611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90612fe5565b60405180910390fd5b565b60018081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611e335781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611c2157611c206123e2565b5b90600052602060002090600302016000015403611e2057600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611cc69190612440565b81548110611cd757611cd66123e2565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d3657611d356123e2565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611db457611db3613005565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611e33565b8080611e2b90612516565b915050611b85565b505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611f435783828281548110611e9f57611e9e6123e2565b5b906000526020600020015403611f30578160018380549050611ec19190612440565b81548110611ed257611ed16123e2565b5b9060005260206000200154828281548110611ef057611eef6123e2565b5b906000526020600020018190555081805480611f0f57611f0e613005565b5b60019003818190600052602060002001600090559055600192505050611f4a565b8080611f3b90612516565b915050611e7f565b5060009150505b92915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9782611f6c565b9050919050565b611fa781611f8c565b8114611fb257600080fd5b50565b600081359050611fc481611f9e565b92915050565b6000819050919050565b611fdd81611fca565b8114611fe857600080fd5b50565b600081359050611ffa81611fd4565b92915050565b6000806040838503121561201757612016611f62565b5b600061202585828601611fb5565b925050602061203685828601611feb565b9150509250929050565b61204981611fca565b82525050565b60006020820190506120646000830184612040565b92915050565b6000602082840312156120805761207f611f62565b5b600061208e84828501611feb565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120e58261209c565b810181811067ffffffffffffffff82111715612104576121036120ad565b5b80604052505050565b6000612117611f58565b905061212382826120dc565b919050565b600067ffffffffffffffff821115612143576121426120ad565b5b602082029050602081019050919050565b600080fd5b600061216c61216784612128565b61210d565b9050808382526020820190506020840283018581111561218f5761218e612154565b5b835b818110156121b857806121a48882611feb565b845260208401935050602081019050612191565b5050509392505050565b600082601f8301126121d7576121d6612097565b5b81356121e7848260208601612159565b91505092915050565b6000806040838503121561220757612206611f62565b5b600083013567ffffffffffffffff81111561222557612224611f67565b5b612231858286016121c2565b925050602083013567ffffffffffffffff81111561225257612251611f67565b5b61225e858286016121c2565b9150509250929050565b600060608201905061227d6000830186612040565b61228a6020830185612040565b6122976040830184612040565b949350505050565b60008115159050919050565b6122b48161229f565b82525050565b60006020820190506122cf60008301846122ab565b92915050565b6000819050919050565b60006122fa6122f56122f084611f6c565b6122d5565b611f6c565b9050919050565b600061230c826122df565b9050919050565b600061231e82612301565b9050919050565b61232e81612313565b82525050565b60006020820190506123496000830184612325565b92915050565b600061235a82612301565b9050919050565b61236a8161234f565b82525050565b60006020820190506123856000830184612361565b92915050565b61239481611f8c565b82525050565b60006020820190506123af600083018461238b565b92915050565b6000602082840312156123cb576123ca611f62565b5b60006123d984828501611fb5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061244b82611fca565b915061245683611fca565b925082820390508181111561246e5761246d612411565b5b92915050565b600061247f82611fca565b915061248a83611fca565b925082820261249881611fca565b915082820484148315176124af576124ae612411565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006124f082611fca565b91506124fb83611fca565b92508261250b5761250a6124b6565b5b828204905092915050565b600061252182611fca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361255357612552612411565b5b600182019050919050565b600082825260208201905092915050565b7f436f6f6c646f776e206d7573742062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b60006125cb60228361255e565b91506125d68261256f565b604082019050919050565b600060208201905081810360008301526125fa816125be565b9050919050565b7f4e6f204e4654732070726f766964656400000000000000000000000000000000600082015250565b600061263760108361255e565b915061264282612601565b602082019050919050565b600060208201905081810360008301526126668161262a565b9050919050565b60008151905061267c81611f9e565b92915050565b60006020828403121561269857612697611f62565b5b60006126a68482850161266d565b91505092915050565b7f596f7520646f206e6f74206f776e207468697320466c6f7765724e4654000000600082015250565b60006126e5601d8361255e565b91506126f0826126af565b602082019050919050565b60006020820190508181036000830152612714816126d8565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b6000612751601a8361255e565b915061275c8261271b565b602082019050919050565b6000602082019050818103600083015261278081612744565b9050919050565b600060608201905061279c600083018661238b565b6127a9602083018561238b565b6127b66040830184612040565b949350505050565b7f596f7520646f206e6f74206f776e20746869732053746f6e65724e4654000000600082015250565b60006127f4601d8361255e565b91506127ff826127be565b602082019050919050565b60006020820190508181036000830152612823816127e7565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61285f81611fca565b82525050565b60006128718383612856565b60208301905092915050565b6000602082019050919050565b60006128958261282a565b61289f8185612835565b93506128aa83612846565b8060005b838110156128db5781516128c28882612865565b97506128cd8361287d565b9250506001810190506128ae565b5085935050505092915050565b60006040820190508181036000830152612902818561288a565b90508181036020830152612916818461288a565b90509392505050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b600061295560208361255e565b91506129608261291f565b602082019050919050565b6000602082019050818103600083015261298481612948565b9050919050565b60008151905061299a81611fd4565b92915050565b6000602082840312156129b6576129b5611f62565b5b60006129c48482850161298b565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e20636f6e7472616374000000600082015250565b6000612a03601d8361255e565b9150612a0e826129cd565b602082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b6000604082019050612a4e600083018561238b565b612a5b6020830184612040565b9392505050565b612a6b8161229f565b8114612a7657600080fd5b50565b600081519050612a8881612a62565b92915050565b600060208284031215612aa457612aa3611f62565b5b6000612ab284828501612a79565b91505092915050565b7f426f6e757320616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000612b1760268361255e565b9150612b2282612abb565b604082019050919050565b60006020820190508181036000830152612b4681612b0a565b9050919050565b7f4d756c7469706c696572206d757374206265206174206c656173742031000000600082015250565b6000612b83601d8361255e565b9150612b8e82612b4d565b602082019050919050565b60006020820190508181036000830152612bb281612b76565b9050919050565b7f5265776172642072617465206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c1560258361255e565b9150612c2082612bb9565b604082019050919050565b60006020820190508181036000830152612c4481612c08565b9050919050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b6000612c81601e8361255e565b9150612c8c82612c4b565b602082019050919050565b60006020820190508181036000830152612cb081612c74565b9050919050565b6000612cc282611fca565b9150612ccd83611fca565b9250828201905080821115612ce557612ce4612411565b5b92915050565b7f4e6f7420656e6f756768207374616b65642053746f6e65724e46547300000000600082015250565b6000612d21601c8361255e565b9150612d2c82612ceb565b602082019050919050565b60006020820190508181036000830152612d5081612d14565b9050919050565b7f53746f6e65724e4654206e6f74207374616b6564206279207573657200000000600082015250565b6000612d8d601c8361255e565b9150612d9882612d57565b602082019050919050565b60006020820190508181036000830152612dbc81612d80565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612df9601a8361255e565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e8b60268361255e565b9150612e9682612e2f565b604082019050919050565b60006020820190508181036000830152612eba81612e7e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ef760208361255e565b9150612f0282612ec1565b602082019050919050565b60006020820190508181036000830152612f2681612eea565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612f63601f8361255e565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612fcf60108361255e565b9150612fda82612f99565b602082019050919050565b60006020820190508181036000830152612ffe81612fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202d41c6259468c6ec6b32d726212763c285d0ea7e10b28da4ce697b4a2d642a7764736f6c634300081300330000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a72644890000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063602095ce116100de5780638da5cb5b116100975780639f60421f116100715780639f60421f14610418578063aee8c3a214610434578063e7d554ac14610464578063f2fde38b1461048057610173565b80638da5cb5b146103c057806396e840a9146103de5780639e447fc6146103fc57610173565b8063602095ce1461030e578063715018a61461032c578063721a1f45146103365780637b0a47ee14610354578063851fbb54146103725780638b3d81b31461039057610173565b80633cfd1568116101305780633cfd15681461023857806341cd5f731461026857806351f3db4814610286578063584b62a1146102a25780635c975abb146102d45780635cae8f59146102f257610173565b80631852e8d9146101785780631cc6ec93146101a85780632c583bf3146101c4578063315a095d146101e05780633b18dc71146101fc5780633b3f944c1461021a575b600080fd5b610192600480360381019061018d9190612000565b61049c565b60405161019f919061204f565b60405180910390f35b6101c260048036038101906101bd919061206a565b610626565b005b6101de60048036038101906101d991906121f0565b6106b2565b005b6101fa60048036038101906101f5919061206a565b610d20565b005b610204610f3b565b604051610211919061204f565b60405180910390f35b610222610f41565b60405161022f919061204f565b60405180910390f35b610252600480360381019061024d9190612000565b610f47565b60405161025f919061204f565b60405180910390f35b610270610f78565b60405161027d919061204f565b60405180910390f35b6102a0600480360381019061029b919061206a565b610f7e565b005b6102bc60048036038101906102b79190612000565b61100a565b6040516102cb93929190612268565b60405180910390f35b6102dc611051565b6040516102e991906122ba565b60405180910390f35b61030c6004803603810190610307919061206a565b611068565b005b6103166110f5565b6040516103239190612334565b60405180910390f35b61033461111b565b005b61033e61112f565b60405161034b9190612370565b60405180910390f35b61035c611155565b604051610369919061204f565b60405180910390f35b61037a61115b565b6040516103879190612370565b60405180910390f35b6103aa60048036038101906103a5919061206a565b611181565b6040516103b7919061239a565b60405180910390f35b6103c86111b4565b6040516103d5919061239a565b60405180910390f35b6103e66111dd565b6040516103f3919061204f565b60405180910390f35b6104166004803603810190610411919061206a565b6111e3565b005b610432600480360381019061042d91906121f0565b61126f565b005b61044e6004803603810190610449919061206a565b611759565b60405161045b919061204f565b60405180910390f35b61047e6004803603810190610479919061206a565b61188e565b005b61049a600480360381019061049591906123b5565b61191b565b005b600080600090505b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081101561061a5782600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105405761053f6123e2565b5b90600052602060002090600302016000015403610607576000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106105aa576105a96123e2565b5b906000526020600020906003020160010154426105c79190612440565b90506000620151806005546105db87611759565b846105e69190612474565b6105f09190612474565b6105fa91906124e5565b9050809350505050610620565b808061061290612516565b9150506104a4565b50600090505b92915050565b61062e61199e565b60008111610671576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610668906125e1565b60405180910390fd5b806009819055507fa292edce75c880178d165ee8473be051a702186c35b27ea86dab6c73ce88ff57816040516106a7919061204f565b60405180910390a150565b6106ba611a1c565b6106c2611a6b565b6000825111806106d3575060008151115b610712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107099061264d565b60405180910390fd5b60005b8251811015610a83576000838281518110610733576107326123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016107af919061204f565b602060405180830381865afa1580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f09190612682565b73ffffffffffffffffffffffffffffffffffffffff1614610846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083d906126fb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108df90612767565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040528083815260200142815260200160008152509080600181540180825580915050600190039060005260206000209060030201600090919091909150600082015181600001556020820151816001015560408201518160020155505033600b600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610a3d93929190612787565b600060405180830381600087803b158015610a5757600080fd5b505af1158015610a6b573d6000803e3d6000fd5b50505050508080610a7b90612516565b915050610715565b5060005b8151811015610cc3576000828281518110610aa557610aa46123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610b21919061204f565b602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b629190612682565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baf9061280a565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3330846040518463ffffffff1660e01b8152600401610c1793929190612787565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b50505050600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055508080610cbb90612516565b915050610a87565b503373ffffffffffffffffffffffffffffffffffffffff167f859a4049709b7ed7c28d73c9122229b70aa55880d8744d1931e98e093a1b5b918383604051610d0c9291906128e8565b60405180910390a2610d1c611ab5565b5050565b610d2861199e565b60008111610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d629061296b565b60405180910390fd5b80600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dc7919061239a565b602060405180830381865afa158015610de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0891906129a0565b1015610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090612a19565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ea6929190612a39565b6020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612a8e565b503373ffffffffffffffffffffffffffffffffffffffff167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b82604051610f30919061204f565b60405180910390a250565b60085481565b60075481565b600c6020528160005260406000208181548110610f6357600080fd5b90600052602060002001600091509150505481565b60095481565b610f8661199e565b60008111610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090612b2d565b60405180910390fd5b806008819055507f984f97438a61d2a2abf6ae7cccfe9dc9c37c8e3111255c24be5ef1129c6f2c7681604051610fff919061204f565b60405180910390a150565b600a602052816000526040600020818154811061102657600080fd5b9060005260206000209060030201600091509150508060000154908060010154908060020154905083565b6000600260009054906101000a900460ff16905090565b61107061199e565b60018110156110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90612b99565b60405180910390fd5b806006819055507ff4b2d54c414c720f8a9e79192fc7b4918e9b12a7ce94b34ab404a40bccc6821d816040516110ea919061204f565b60405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61112361199e565b61112d6000611abe565b565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6111eb61199e565b6000811161122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612c2b565b60405180910390fd5b806005819055507f41d466ebd06fb97e7786086ac8b69b7eb7da798592036251291d34e9791cde0181604051611264919061204f565b60405180910390a150565b611277611a1c565b61127f611a6b565b600082511180611290575060008151115b6112cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c69061264d565b60405180910390fd5b6000805b83518110156114625760008482815181106112f1576112f06123e2565b5b602002602001015190503373ffffffffffffffffffffffffffffffffffffffff16600b600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139390612c97565b60405180910390fd5b6113a6338261049c565b836113b19190612cb7565b92506113bd3382611b82565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b815260040161141c93929190612787565b600060405180830381600087803b15801561143657600080fd5b505af115801561144a573d6000803e3d6000fd5b5050505050808061145a90612516565b9150506112d3565b508151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905010156114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090612d37565b60405180910390fd5b60005b825181101561160257600083828151811061150a576115096123e2565b5b6020026020010151905061151e3382611e38565b61155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155490612da3565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3033846040518463ffffffff1660e01b81526004016115bc93929190612787565b600060405180830381600087803b1580156115d657600080fd5b505af11580156115ea573d6000803e3d6000fd5b505050505080806115fa90612516565b9150506114ec565b5060008111156116fc57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611669929190612a39565b6020604051808303816000875af1158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190612a8e565b503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241826040516116f3919061204f565b60405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167fef3bc8b2408263209f01abd2cf8120586077da5e4cf45d8a7dd83d2a0545f10384846040516117449291906128e8565b60405180910390a250611755611ab5565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290612e0f565b60405180910390fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2596a67836040518263ffffffff1660e01b8152600401611846919061204f565b602060405180830381865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188791906129a0565b9050919050565b61189661199e565b60018110156118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d190612b99565b60405180910390fd5b806007819055507ff3570cd97015150a0e5502c9cf62bb4b8fd0d2891b81254dd7da2d319adf884181604051611910919061204f565b60405180910390a150565b61192361199e565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990612ea1565b60405180910390fd5b61199b81611abe565b50565b6119a6611f50565b73ffffffffffffffffffffffffffffffffffffffff166119c46111b4565b73ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190612f0d565b60405180910390fd5b565b600260015403611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890612f79565b60405180910390fd5b6002600181905550565b611a73611051565b15611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90612fe5565b60405180910390fd5b565b60018081905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811015611e335781600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611c2157611c206123e2565b5b90600052602060002090600302016000015403611e2057600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050611cc69190612440565b81548110611cd757611cd66123e2565b5b9060005260206000209060030201600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110611d3657611d356123e2565b5b9060005260206000209060030201600082015481600001556001820154816001015560028201548160020155905050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480611db457611db3613005565b5b60019003818190600052602060002090600302016000808201600090556001820160009055600282016000905550509055600b600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611e33565b8080611e2b90612516565b915050611b85565b505050565b600080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015611f435783828281548110611e9f57611e9e6123e2565b5b906000526020600020015403611f30578160018380549050611ec19190612440565b81548110611ed257611ed16123e2565b5b9060005260206000200154828281548110611ef057611eef6123e2565b5b906000526020600020018190555081805480611f0f57611f0e613005565b5b60019003818190600052602060002001600090559055600192505050611f4a565b8080611f3b90612516565b915050611e7f565b5060009150505b92915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f9782611f6c565b9050919050565b611fa781611f8c565b8114611fb257600080fd5b50565b600081359050611fc481611f9e565b92915050565b6000819050919050565b611fdd81611fca565b8114611fe857600080fd5b50565b600081359050611ffa81611fd4565b92915050565b6000806040838503121561201757612016611f62565b5b600061202585828601611fb5565b925050602061203685828601611feb565b9150509250929050565b61204981611fca565b82525050565b60006020820190506120646000830184612040565b92915050565b6000602082840312156120805761207f611f62565b5b600061208e84828501611feb565b91505092915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120e58261209c565b810181811067ffffffffffffffff82111715612104576121036120ad565b5b80604052505050565b6000612117611f58565b905061212382826120dc565b919050565b600067ffffffffffffffff821115612143576121426120ad565b5b602082029050602081019050919050565b600080fd5b600061216c61216784612128565b61210d565b9050808382526020820190506020840283018581111561218f5761218e612154565b5b835b818110156121b857806121a48882611feb565b845260208401935050602081019050612191565b5050509392505050565b600082601f8301126121d7576121d6612097565b5b81356121e7848260208601612159565b91505092915050565b6000806040838503121561220757612206611f62565b5b600083013567ffffffffffffffff81111561222557612224611f67565b5b612231858286016121c2565b925050602083013567ffffffffffffffff81111561225257612251611f67565b5b61225e858286016121c2565b9150509250929050565b600060608201905061227d6000830186612040565b61228a6020830185612040565b6122976040830184612040565b949350505050565b60008115159050919050565b6122b48161229f565b82525050565b60006020820190506122cf60008301846122ab565b92915050565b6000819050919050565b60006122fa6122f56122f084611f6c565b6122d5565b611f6c565b9050919050565b600061230c826122df565b9050919050565b600061231e82612301565b9050919050565b61232e81612313565b82525050565b60006020820190506123496000830184612325565b92915050565b600061235a82612301565b9050919050565b61236a8161234f565b82525050565b60006020820190506123856000830184612361565b92915050565b61239481611f8c565b82525050565b60006020820190506123af600083018461238b565b92915050565b6000602082840312156123cb576123ca611f62565b5b60006123d984828501611fb5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061244b82611fca565b915061245683611fca565b925082820390508181111561246e5761246d612411565b5b92915050565b600061247f82611fca565b915061248a83611fca565b925082820261249881611fca565b915082820484148315176124af576124ae612411565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006124f082611fca565b91506124fb83611fca565b92508261250b5761250a6124b6565b5b828204905092915050565b600061252182611fca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361255357612552612411565b5b600182019050919050565b600082825260208201905092915050565b7f436f6f6c646f776e206d7573742062652067726561746572207468616e207a6560008201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b60006125cb60228361255e565b91506125d68261256f565b604082019050919050565b600060208201905081810360008301526125fa816125be565b9050919050565b7f4e6f204e4654732070726f766964656400000000000000000000000000000000600082015250565b600061263760108361255e565b915061264282612601565b602082019050919050565b600060208201905081810360008301526126668161262a565b9050919050565b60008151905061267c81611f9e565b92915050565b60006020828403121561269857612697611f62565b5b60006126a68482850161266d565b91505092915050565b7f596f7520646f206e6f74206f776e207468697320466c6f7765724e4654000000600082015250565b60006126e5601d8361255e565b91506126f0826126af565b602082019050919050565b60006020820190508181036000830152612714816126d8565b9050919050565b7f54686973204e465420697320616c7265616479207374616b6564000000000000600082015250565b6000612751601a8361255e565b915061275c8261271b565b602082019050919050565b6000602082019050818103600083015261278081612744565b9050919050565b600060608201905061279c600083018661238b565b6127a9602083018561238b565b6127b66040830184612040565b949350505050565b7f596f7520646f206e6f74206f776e20746869732053746f6e65724e4654000000600082015250565b60006127f4601d8361255e565b91506127ff826127be565b602082019050919050565b60006020820190508181036000830152612823816127e7565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61285f81611fca565b82525050565b60006128718383612856565b60208301905092915050565b6000602082019050919050565b60006128958261282a565b61289f8185612835565b93506128aa83612846565b8060005b838110156128db5781516128c28882612865565b97506128cd8361287d565b9250506001810190506128ae565b5085935050505092915050565b60006040820190508181036000830152612902818561288a565b90508181036020830152612916818461288a565b90509392505050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b600061295560208361255e565b91506129608261291f565b602082019050919050565b6000602082019050818103600083015261298481612948565b9050919050565b60008151905061299a81611fd4565b92915050565b6000602082840312156129b6576129b5611f62565b5b60006129c48482850161298b565b91505092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e20636f6e7472616374000000600082015250565b6000612a03601d8361255e565b9150612a0e826129cd565b602082019050919050565b60006020820190508181036000830152612a32816129f6565b9050919050565b6000604082019050612a4e600083018561238b565b612a5b6020830184612040565b9392505050565b612a6b8161229f565b8114612a7657600080fd5b50565b600081519050612a8881612a62565b92915050565b600060208284031215612aa457612aa3611f62565b5b6000612ab284828501612a79565b91505092915050565b7f426f6e757320616d6f756e74206d75737420626520677265617465722074686160008201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b6000612b1760268361255e565b9150612b2282612abb565b604082019050919050565b60006020820190508181036000830152612b4681612b0a565b9050919050565b7f4d756c7469706c696572206d757374206265206174206c656173742031000000600082015250565b6000612b83601d8361255e565b9150612b8e82612b4d565b602082019050919050565b60006020820190508181036000830152612bb281612b76565b9050919050565b7f5265776172642072617465206d7573742062652067726561746572207468616e60008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612c1560258361255e565b9150612c2082612bb9565b604082019050919050565b60006020820190508181036000830152612c4481612c08565b9050919050565b7f596f7520646f206e6f74206f776e2074686973207374616b6564204e46540000600082015250565b6000612c81601e8361255e565b9150612c8c82612c4b565b602082019050919050565b60006020820190508181036000830152612cb081612c74565b9050919050565b6000612cc282611fca565b9150612ccd83611fca565b9250828201905080821115612ce557612ce4612411565b5b92915050565b7f4e6f7420656e6f756768207374616b65642053746f6e65724e46547300000000600082015250565b6000612d21601c8361255e565b9150612d2c82612ceb565b602082019050919050565b60006020820190508181036000830152612d5081612d14565b9050919050565b7f53746f6e65724e4654206e6f74207374616b6564206279207573657200000000600082015250565b6000612d8d601c8361255e565b9150612d9882612d57565b602082019050919050565b60006020820190508181036000830152612dbc81612d80565b9050919050565b7f466c6f7765724e465420636f6e7472616374206e6f7420736574000000000000600082015250565b6000612df9601a8361255e565b9150612e0482612dc3565b602082019050919050565b60006020820190508181036000830152612e2881612dec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e8b60268361255e565b9150612e9682612e2f565b604082019050919050565b60006020820190508181036000830152612eba81612e7e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ef760208361255e565b9150612f0282612ec1565b602082019050919050565b60006020820190508181036000830152612f2681612eea565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612f63601f8361255e565b9150612f6e82612f2d565b602082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000612fcf60108361255e565b9150612fda82612f99565b602082019050919050565b60006020820190508181036000830152612ffe81612fc2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202d41c6259468c6ec6b32d726212763c285d0ea7e10b28da4ce697b4a2d642a7764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a72644890000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
-----Decoded View---------------
Arg [0] : _flowerNFT (address): 0x3be8d7A305856Dcc5f6a41aDE1B2F63CE4CDc86D
Arg [1] : _flowerToken (address): 0xa58cD405FB0F4aD5C917393518aAFd71A7264489
Arg [2] : _stonerToken (address): 0x9b567e03d891F537b2B7874aA4A3308Cfe2F4FBb
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000003be8d7a305856dcc5f6a41ade1b2f63ce4cdc86d
Arg [1] : 000000000000000000000000a58cd405fb0f4ad5c917393518aafd71a7264489
Arg [2] : 0000000000000000000000009b567e03d891f537b2b7874aa4a3308cfe2f4fbb
Deployed Bytecode Sourcemap
18469:7493:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24350:476;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21056:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21726:1215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21347:336;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18778:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18728:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19089:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18826:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20821:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18982:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17330:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20292:252;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18571:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11588:103;;;:::i;:::-;;18540:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18638:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18603:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19030:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10947:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18680:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20072:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22986:1324;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24877:228;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20552:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11846:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24350:476;24427:7;24452:9;24464:1;24452:13;;24447:353;24471:6;:12;24478:4;24471:12;;;;;;;;;;;;;;;:19;;;;24467:1;:23;24447:353;;;24543:7;24516:6;:12;24523:4;24516:12;;;;;;;;;;;;;;;24529:1;24516:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;24512:277;;24571:18;24610:6;:12;24617:4;24610:12;;;;;;;;;;;;;;;24623:1;24610:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:24;;;24592:15;:42;;;;:::i;:::-;24571:63;;24653:18;24731:6;24717:10;;24688:26;24706:7;24688:17;:26::i;:::-;24675:10;:39;;;;:::i;:::-;:52;;;;:::i;:::-;24674:63;;;;:::i;:::-;24653:84;;24763:10;24756:17;;;;;;;24512:277;24492:3;;;;;:::i;:::-;;;;24447:353;;;;24817:1;24810:8;;24350:476;;;;;:::o;21056:228::-;10833:13;:11;:13::i;:::-;21153:1:::1;21139:11;:15;21131:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21218:11;21204;:25;;;;21245:31;21264:11;21245:31;;;;;;:::i;:::-;;;;;;;;21056:228:::0;:::o;21726:1215::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;21894:1:::2;21870:14;:21;:25;:54;;;;21923:1;21899:14;:21;:25;21870:54;21862:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21963:9;21958:545;21982:14;:21;21978:1;:25;21958:545;;;22025:15;22043:14;22058:1;22043:17;;;;;;;;:::i;:::-;;;;;;;;22025:35;;22113:10;22083:40;;:9;;;;;;;;;;;:17;;;22101:7;22083:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;22075:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;22218:1;22180:40;;:17;:26;22198:7;22180:26;;;;;;;;;;;;;;;;;;;;;:40;;;22172:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22268:6;:18;22275:10;22268:18;;;;;;;;;;;;;;;22292:67;;;;;;;;22308:7;22292:67;;;;22327:15;22292:67;;;;22356:1;22292:67;;::::0;22268:92:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22404:10;22375:17;:26;22393:7;22375:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22429:9;;;;;;;;;;;:26;;;22456:10;22476:4;22483:7;22429:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22010:493;22005:3;;;;;:::i;:::-;;;;21958:545;;;;22520:9;22515:351;22539:14;:21;22535:1;:25;22515:351;;;22582:16;22601:14;22616:1;22601:17;;;;;;;;:::i;:::-;;;;;;;;22582:36;;22674:10;22641:43;;:11;;;;;;;;;;;:19;;;22661:8;22641:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;22633:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;22735:11;;;;;;;;;;;:28;;;22764:10;22784:4;22791:8;22735:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;22815:12;:24;22828:10;22815:24;;;;;;;;;;;;;;;22845:8;22815:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22567:299;22562:3;;;;;:::i;:::-;;;;22515:351;;;;22890:10;22883:50;;;22902:14;22918;22883:50;;;;;;;:::i;:::-;;;;;;;;14800:20:::0;:18;:20::i;:::-;21726:1215;;:::o;21347:336::-;10833:13;:11;:13::i;:::-;21434:1:::1;21425:6;:10;21417:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;21531:6;21491:11;;;;;;;;;;;:21;;;21521:4;21491:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;21483:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;21584:11;;;;;;;;;;;:20;;;21605:10;21617:6;21584:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21656:10;21640:35;;;21668:6;21640:35;;;;;;:::i;:::-;;;;;;;;21347:336:::0;:::o;18778:41::-;;;;:::o;18728:43::-;;;;:::o;19089:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18826:36::-;;;;:::o;20821:227::-;10833:13;:11;:13::i;:::-;20917:1:::1;20905:9;:13;20897:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20989:9;20972:14;:26;;;;21014;21030:9;21014:26;;;;;;:::i;:::-;;;;;;;;20821:227:::0;:::o;18982:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17330:86::-;17377:4;17401:7;;;;;;;;;;;17394:14;;17330:86;:::o;20292:252::-;10833:13;:11;:13::i;:::-;20404:1:::1;20387:13;:18;;20379:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20474:13;20450:21;:37;;;;20503:33;20522:13;20503:33;;;;;;:::i;:::-;;;;;;;;20292:252:::0;:::o;18571:25::-;;;;;;;;;;;;;:::o;11588:103::-;10833:13;:11;:13::i;:::-;11653:30:::1;11680:1;11653:18;:30::i;:::-;11588:103::o:0;18540:24::-;;;;;;;;;;;;;:::o;18638:35::-;;;;:::o;18603:26::-;;;;;;;;;;;;;:::o;19030:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;10947:87::-;10993:7;11020:6;;;;;;;;;;;11013:13;;10947:87;:::o;18680:41::-;;;;:::o;20072:212::-;10833:13;:11;:13::i;:::-;20160:1:::1;20150:7;:11;20142:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20227:7;20214:10;:20;;;;20250:26;20268:7;20250:26;;;;;;:::i;:::-;;;;;;;;20072:212:::0;:::o;22986:1324::-;14756:21;:19;:21::i;:::-;16935:19:::1;:17;:19::i;:::-;23156:1:::2;23132:14;:21;:25;:54;;;;23185:1;23161:14;:21;:25;23132:54;23124:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23218:19;23259:9:::0;23254:405:::2;23278:14;:21;23274:1;:25;23254:405;;;23321:15;23339:14;23354:1;23339:17;;;;;;;;:::i;:::-;;;;;;;;23321:35;;23409:10;23379:40;;:17;:26;23397:7;23379:26;;;;;;;;;;;;;;;;;;;;;:40;;;23371:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23486:36;23502:10;23514:7;23486:15;:36::i;:::-;23471:51;;;;;:::i;:::-;;;23537:33;23550:10;23562:7;23537:12;:33::i;:::-;23585:9;;;;;;;;;;;:26;;;23620:4;23627:10;23639:7;23585:62;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23306:353;23301:3;;;;;:::i;:::-;;;;23254:405;;;;23714:14;:21;23679:12;:24;23692:10;23679:24;;;;;;;;;;;;;;;:31;;;;:56;;23671:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23784:9;23779:293;23803:14;:21;23799:1;:25;23779:293;;;23846:16;23865:14;23880:1;23865:17;;;;;;;;:::i;:::-;;;;;;;;23846:36;;23905:40;23924:10;23936:8;23905:18;:40::i;:::-;23897:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23995:11;;;;;;;;;;;:28;;;24032:4;24039:10;24051:8;23995:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;23831:241;23826:3;;;;;:::i;:::-;;;;23779:293;;;;24102:1;24088:11;:15;24084:151;;;24120:11;;;;;;;;;;;:20;;;24141:10;24153:11;24120:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24199:10;24185:38;;;24211:11;24185:38;;;;;;:::i;:::-;;;;;;;;24084:151;24259:10;24250:52;;;24271:14;24287;24250:52;;;;;;;:::i;:::-;;;;;;;;23113:1197;14800:20:::0;:18;:20::i;:::-;22986:1324;;:::o;24877:228::-;24942:7;25000:1;24970:32;;24978:9;;;;;;;;;;;24970:32;;;24962:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25070:9;;;;;;;;;;;25051:37;;;25089:7;25051:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25044:53;;24877:228;;;:::o;20552:261::-;10833:13;:11;:13::i;:::-;20667:1:::1;20650:13;:18;;20642:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20740:13;20713:24;:40;;;;20769:36;20791:13;20769:36;;;;;;:::i;:::-;;;;;;;;20552:261:::0;:::o;11846:201::-;10833:13;:11;:13::i;:::-;11955:1:::1;11935:22;;:8;:22;;::::0;11927:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12011:28;12030:8;12011:18;:28::i;:::-;11846:201:::0;:::o;11112:132::-;11187:12;:10;:12::i;:::-;11176:23;;:7;:5;:7::i;:::-;:23;;;11168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11112:132::o;14836:293::-;14238:1;14970:7;;:19;14962:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14238:1;15103:7;:18;;;;14836:293::o;17489:108::-;17560:8;:6;:8::i;:::-;17559:9;17551:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:108::o;15137:213::-;14194:1;15320:7;:22;;;;15137:213::o;12207:191::-;12281:16;12300:6;;;;;;;;;;;12281:25;;12326:8;12317:6;;:17;;;;;;;;;;;;;;;;;;12381:8;12350:40;;12371:8;12350:40;;;;;;;;;;;;12270:128;12207:191;:::o;25113:399::-;25191:9;25186:319;25210:6;:12;25217:4;25210:12;;;;;;;;;;;;;;;:19;;;;25206:1;:23;25186:319;;;25282:7;25255:6;:12;25262:4;25255:12;;;;;;;;;;;;;;;25268:1;25255:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;:34;25251:243;;25328:6;:12;25335:4;25328:12;;;;;;;;;;;;;;;25363:1;25341:6;:12;25348:4;25341:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;25328:37;;;;;;;;:::i;:::-;;;;;;;;;;;;25310:6;:12;25317:4;25310:12;;;;;;;;;;;;;;;25323:1;25310:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;25384:6;:12;25391:4;25384:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25428:17;:26;25446:7;25428:26;;;;;;;;;;;;25421:33;;;;;;;;;;;25473:5;;25251:243;25231:3;;;;;:::i;:::-;;;;25186:319;;;;25113:399;;:::o;25520:439::-;25597:4;25614:28;25645:12;:18;25658:4;25645:18;;;;;;;;;;;;;;;25614:49;;25681:9;25676:253;25700:10;:17;;;;25696:1;:21;25676:253;;;25760:7;25743:10;25754:1;25743:13;;;;;;;;:::i;:::-;;;;;;;;;;:24;25739:179;;25804:10;25835:1;25815:10;:17;;;;:21;;;;:::i;:::-;25804:33;;;;;;;;:::i;:::-;;;;;;;;;;25788:10;25799:1;25788:13;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;25856:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25898:4;25891:11;;;;;;25739:179;25719:3;;;;;:::i;:::-;;;;25676:253;;;;25946:5;25939:12;;;25520:439;;;;;:::o;9492:98::-;9545:7;9572:10;9565:17;;9492:98;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:329::-;2088:6;2137:2;2125:9;2116:7;2112:23;2108:32;2105:119;;;2143:79;;:::i;:::-;2105:119;2263:1;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2234:117;2029:329;;;;:::o;2364:117::-;2473:1;2470;2463:12;2487:102;2528:6;2579:2;2575:7;2570:2;2563:5;2559:14;2555:28;2545:38;;2487:102;;;:::o;2595:180::-;2643:77;2640:1;2633:88;2740:4;2737:1;2730:15;2764:4;2761:1;2754:15;2781:281;2864:27;2886:4;2864:27;:::i;:::-;2856:6;2852:40;2994:6;2982:10;2979:22;2958:18;2946:10;2943:34;2940:62;2937:88;;;3005:18;;:::i;:::-;2937:88;3045:10;3041:2;3034:22;2824:238;2781:281;;:::o;3068:129::-;3102:6;3129:20;;:::i;:::-;3119:30;;3158:33;3186:4;3178:6;3158:33;:::i;:::-;3068:129;;;:::o;3203:311::-;3280:4;3370:18;3362:6;3359:30;3356:56;;;3392:18;;:::i;:::-;3356:56;3442:4;3434:6;3430:17;3422:25;;3502:4;3496;3492:15;3484:23;;3203:311;;;:::o;3520:117::-;3629:1;3626;3619:12;3660:710;3756:5;3781:81;3797:64;3854:6;3797:64;:::i;:::-;3781:81;:::i;:::-;3772:90;;3882:5;3911:6;3904:5;3897:21;3945:4;3938:5;3934:16;3927:23;;3998:4;3990:6;3986:17;3978:6;3974:30;4027:3;4019:6;4016:15;4013:122;;;4046:79;;:::i;:::-;4013:122;4161:6;4144:220;4178:6;4173:3;4170:15;4144:220;;;4253:3;4282:37;4315:3;4303:10;4282:37;:::i;:::-;4277:3;4270:50;4349:4;4344:3;4340:14;4333:21;;4220:144;4204:4;4199:3;4195:14;4188:21;;4144:220;;;4148:21;3762:608;;3660:710;;;;;:::o;4393:370::-;4464:5;4513:3;4506:4;4498:6;4494:17;4490:27;4480:122;;4521:79;;:::i;:::-;4480:122;4638:6;4625:20;4663:94;4753:3;4745:6;4738:4;4730:6;4726:17;4663:94;:::i;:::-;4654:103;;4470:293;4393:370;;;;:::o;4769:894::-;4887:6;4895;4944:2;4932:9;4923:7;4919:23;4915:32;4912:119;;;4950:79;;:::i;:::-;4912:119;5098:1;5087:9;5083:17;5070:31;5128:18;5120:6;5117:30;5114:117;;;5150:79;;:::i;:::-;5114:117;5255:78;5325:7;5316:6;5305:9;5301:22;5255:78;:::i;:::-;5245:88;;5041:302;5410:2;5399:9;5395:18;5382:32;5441:18;5433:6;5430:30;5427:117;;;5463:79;;:::i;:::-;5427:117;5568:78;5638:7;5629:6;5618:9;5614:22;5568:78;:::i;:::-;5558:88;;5353:303;4769:894;;;;;:::o;5669:442::-;5818:4;5856:2;5845:9;5841:18;5833:26;;5869:71;5937:1;5926:9;5922:17;5913:6;5869:71;:::i;:::-;5950:72;6018:2;6007:9;6003:18;5994:6;5950:72;:::i;:::-;6032;6100:2;6089:9;6085:18;6076:6;6032:72;:::i;:::-;5669:442;;;;;;:::o;6117:90::-;6151:7;6194:5;6187:13;6180:21;6169:32;;6117:90;;;:::o;6213:109::-;6294:21;6309:5;6294:21;:::i;:::-;6289:3;6282:34;6213:109;;:::o;6328:210::-;6415:4;6453:2;6442:9;6438:18;6430:26;;6466:65;6528:1;6517:9;6513:17;6504:6;6466:65;:::i;:::-;6328:210;;;;:::o;6544:60::-;6572:3;6593:5;6586:12;;6544:60;;;:::o;6610:142::-;6660:9;6693:53;6711:34;6720:24;6738:5;6720:24;:::i;:::-;6711:34;:::i;:::-;6693:53;:::i;:::-;6680:66;;6610:142;;;:::o;6758:126::-;6808:9;6841:37;6872:5;6841:37;:::i;:::-;6828:50;;6758:126;;;:::o;6890:140::-;6954:9;6987:37;7018:5;6987:37;:::i;:::-;6974:50;;6890:140;;;:::o;7036:159::-;7137:51;7182:5;7137:51;:::i;:::-;7132:3;7125:64;7036:159;;:::o;7201:250::-;7308:4;7346:2;7335:9;7331:18;7323:26;;7359:85;7441:1;7430:9;7426:17;7417:6;7359:85;:::i;:::-;7201:250;;;;:::o;7457:141::-;7522:9;7555:37;7586:5;7555:37;:::i;:::-;7542:50;;7457:141;;;:::o;7604:161::-;7706:52;7752:5;7706:52;:::i;:::-;7701:3;7694:65;7604:161;;:::o;7771:252::-;7879:4;7917:2;7906:9;7902:18;7894:26;;7930:86;8013:1;8002:9;7998:17;7989:6;7930:86;:::i;:::-;7771:252;;;;:::o;8029:118::-;8116:24;8134:5;8116:24;:::i;:::-;8111:3;8104:37;8029:118;;:::o;8153:222::-;8246:4;8284:2;8273:9;8269:18;8261:26;;8297:71;8365:1;8354:9;8350:17;8341:6;8297:71;:::i;:::-;8153:222;;;;:::o;8381:329::-;8440:6;8489:2;8477:9;8468:7;8464:23;8460:32;8457:119;;;8495:79;;:::i;:::-;8457:119;8615:1;8640:53;8685:7;8676:6;8665:9;8661:22;8640:53;:::i;:::-;8630:63;;8586:117;8381:329;;;;:::o;8716:180::-;8764:77;8761:1;8754:88;8861:4;8858:1;8851:15;8885:4;8882:1;8875:15;8902:180;8950:77;8947:1;8940:88;9047:4;9044:1;9037:15;9071:4;9068:1;9061:15;9088:194;9128:4;9148:20;9166:1;9148:20;:::i;:::-;9143:25;;9182:20;9200:1;9182:20;:::i;:::-;9177:25;;9226:1;9223;9219:9;9211:17;;9250:1;9244:4;9241:11;9238:37;;;9255:18;;:::i;:::-;9238:37;9088:194;;;;:::o;9288:410::-;9328:7;9351:20;9369:1;9351:20;:::i;:::-;9346:25;;9385:20;9403:1;9385:20;:::i;:::-;9380:25;;9440:1;9437;9433:9;9462:30;9480:11;9462:30;:::i;:::-;9451:41;;9641:1;9632:7;9628:15;9625:1;9622:22;9602:1;9595:9;9575:83;9552:139;;9671:18;;:::i;:::-;9552:139;9336:362;9288:410;;;;:::o;9704:180::-;9752:77;9749:1;9742:88;9849:4;9846:1;9839:15;9873:4;9870:1;9863:15;9890:185;9930:1;9947:20;9965:1;9947:20;:::i;:::-;9942:25;;9981:20;9999:1;9981:20;:::i;:::-;9976:25;;10020:1;10010:35;;10025:18;;:::i;:::-;10010:35;10067:1;10064;10060:9;10055:14;;9890:185;;;;:::o;10081:233::-;10120:3;10143:24;10161:5;10143:24;:::i;:::-;10134:33;;10189:66;10182:5;10179:77;10176:103;;10259:18;;:::i;:::-;10176:103;10306:1;10299:5;10295:13;10288:20;;10081:233;;;:::o;10320:169::-;10404:11;10438:6;10433:3;10426:19;10478:4;10473:3;10469:14;10454:29;;10320:169;;;;:::o;10495:221::-;10635:34;10631:1;10623:6;10619:14;10612:58;10704:4;10699:2;10691:6;10687:15;10680:29;10495:221;:::o;10722:366::-;10864:3;10885:67;10949:2;10944:3;10885:67;:::i;:::-;10878:74;;10961:93;11050:3;10961:93;:::i;:::-;11079:2;11074:3;11070:12;11063:19;;10722:366;;;:::o;11094:419::-;11260:4;11298:2;11287:9;11283:18;11275:26;;11347:9;11341:4;11337:20;11333:1;11322:9;11318:17;11311:47;11375:131;11501:4;11375:131;:::i;:::-;11367:139;;11094:419;;;:::o;11519:166::-;11659:18;11655:1;11647:6;11643:14;11636:42;11519:166;:::o;11691:366::-;11833:3;11854:67;11918:2;11913:3;11854:67;:::i;:::-;11847:74;;11930:93;12019:3;11930:93;:::i;:::-;12048:2;12043:3;12039:12;12032:19;;11691:366;;;:::o;12063:419::-;12229:4;12267:2;12256:9;12252:18;12244:26;;12316:9;12310:4;12306:20;12302:1;12291:9;12287:17;12280:47;12344:131;12470:4;12344:131;:::i;:::-;12336:139;;12063:419;;;:::o;12488:143::-;12545:5;12576:6;12570:13;12561:22;;12592:33;12619:5;12592:33;:::i;:::-;12488:143;;;;:::o;12637:351::-;12707:6;12756:2;12744:9;12735:7;12731:23;12727:32;12724:119;;;12762:79;;:::i;:::-;12724:119;12882:1;12907:64;12963:7;12954:6;12943:9;12939:22;12907:64;:::i;:::-;12897:74;;12853:128;12637:351;;;;:::o;12994:179::-;13134:31;13130:1;13122:6;13118:14;13111:55;12994:179;:::o;13179:366::-;13321:3;13342:67;13406:2;13401:3;13342:67;:::i;:::-;13335:74;;13418:93;13507:3;13418:93;:::i;:::-;13536:2;13531:3;13527:12;13520:19;;13179:366;;;:::o;13551:419::-;13717:4;13755:2;13744:9;13740:18;13732:26;;13804:9;13798:4;13794:20;13790:1;13779:9;13775:17;13768:47;13832:131;13958:4;13832:131;:::i;:::-;13824:139;;13551:419;;;:::o;13976:176::-;14116:28;14112:1;14104:6;14100:14;14093:52;13976:176;:::o;14158:366::-;14300:3;14321:67;14385:2;14380:3;14321:67;:::i;:::-;14314:74;;14397:93;14486:3;14397:93;:::i;:::-;14515:2;14510:3;14506:12;14499:19;;14158:366;;;:::o;14530:419::-;14696:4;14734:2;14723:9;14719:18;14711:26;;14783:9;14777:4;14773:20;14769:1;14758:9;14754:17;14747:47;14811:131;14937:4;14811:131;:::i;:::-;14803:139;;14530:419;;;:::o;14955:442::-;15104:4;15142:2;15131:9;15127:18;15119:26;;15155:71;15223:1;15212:9;15208:17;15199:6;15155:71;:::i;:::-;15236:72;15304:2;15293:9;15289:18;15280:6;15236:72;:::i;:::-;15318;15386:2;15375:9;15371:18;15362:6;15318:72;:::i;:::-;14955:442;;;;;;:::o;15403:179::-;15543:31;15539:1;15531:6;15527:14;15520:55;15403:179;:::o;15588:366::-;15730:3;15751:67;15815:2;15810:3;15751:67;:::i;:::-;15744:74;;15827:93;15916:3;15827:93;:::i;:::-;15945:2;15940:3;15936:12;15929:19;;15588:366;;;:::o;15960:419::-;16126:4;16164:2;16153:9;16149:18;16141:26;;16213:9;16207:4;16203:20;16199:1;16188:9;16184:17;16177:47;16241:131;16367:4;16241:131;:::i;:::-;16233:139;;15960:419;;;:::o;16385:114::-;16452:6;16486:5;16480:12;16470:22;;16385:114;;;:::o;16505:184::-;16604:11;16638:6;16633:3;16626:19;16678:4;16673:3;16669:14;16654:29;;16505:184;;;;:::o;16695:132::-;16762:4;16785:3;16777:11;;16815:4;16810:3;16806:14;16798:22;;16695:132;;;:::o;16833:108::-;16910:24;16928:5;16910:24;:::i;:::-;16905:3;16898:37;16833:108;;:::o;16947:179::-;17016:10;17037:46;17079:3;17071:6;17037:46;:::i;:::-;17115:4;17110:3;17106:14;17092:28;;16947:179;;;;:::o;17132:113::-;17202:4;17234;17229:3;17225:14;17217:22;;17132:113;;;:::o;17281:732::-;17400:3;17429:54;17477:5;17429:54;:::i;:::-;17499:86;17578:6;17573:3;17499:86;:::i;:::-;17492:93;;17609:56;17659:5;17609:56;:::i;:::-;17688:7;17719:1;17704:284;17729:6;17726:1;17723:13;17704:284;;;17805:6;17799:13;17832:63;17891:3;17876:13;17832:63;:::i;:::-;17825:70;;17918:60;17971:6;17918:60;:::i;:::-;17908:70;;17764:224;17751:1;17748;17744:9;17739:14;;17704:284;;;17708:14;18004:3;17997:10;;17405:608;;;17281:732;;;;:::o;18019:634::-;18240:4;18278:2;18267:9;18263:18;18255:26;;18327:9;18321:4;18317:20;18313:1;18302:9;18298:17;18291:47;18355:108;18458:4;18449:6;18355:108;:::i;:::-;18347:116;;18510:9;18504:4;18500:20;18495:2;18484:9;18480:18;18473:48;18538:108;18641:4;18632:6;18538:108;:::i;:::-;18530:116;;18019:634;;;;;:::o;18659:182::-;18799:34;18795:1;18787:6;18783:14;18776:58;18659:182;:::o;18847:366::-;18989:3;19010:67;19074:2;19069:3;19010:67;:::i;:::-;19003:74;;19086:93;19175:3;19086:93;:::i;:::-;19204:2;19199:3;19195:12;19188:19;;18847:366;;;:::o;19219:419::-;19385:4;19423:2;19412:9;19408:18;19400:26;;19472:9;19466:4;19462:20;19458:1;19447:9;19443:17;19436:47;19500:131;19626:4;19500:131;:::i;:::-;19492:139;;19219:419;;;:::o;19644:143::-;19701:5;19732:6;19726:13;19717:22;;19748:33;19775:5;19748:33;:::i;:::-;19644:143;;;;:::o;19793:351::-;19863:6;19912:2;19900:9;19891:7;19887:23;19883:32;19880:119;;;19918:79;;:::i;:::-;19880:119;20038:1;20063:64;20119:7;20110:6;20099:9;20095:22;20063:64;:::i;:::-;20053:74;;20009:128;19793:351;;;;:::o;20150:179::-;20290:31;20286:1;20278:6;20274:14;20267:55;20150:179;:::o;20335:366::-;20477:3;20498:67;20562:2;20557:3;20498:67;:::i;:::-;20491:74;;20574:93;20663:3;20574:93;:::i;:::-;20692:2;20687:3;20683:12;20676:19;;20335:366;;;:::o;20707:419::-;20873:4;20911:2;20900:9;20896:18;20888:26;;20960:9;20954:4;20950:20;20946:1;20935:9;20931:17;20924:47;20988:131;21114:4;20988:131;:::i;:::-;20980:139;;20707:419;;;:::o;21132:332::-;21253:4;21291:2;21280:9;21276:18;21268:26;;21304:71;21372:1;21361:9;21357:17;21348:6;21304:71;:::i;:::-;21385:72;21453:2;21442:9;21438:18;21429:6;21385:72;:::i;:::-;21132:332;;;;;:::o;21470:116::-;21540:21;21555:5;21540:21;:::i;:::-;21533:5;21530:32;21520:60;;21576:1;21573;21566:12;21520:60;21470:116;:::o;21592:137::-;21646:5;21677:6;21671:13;21662:22;;21693:30;21717:5;21693:30;:::i;:::-;21592:137;;;;:::o;21735:345::-;21802:6;21851:2;21839:9;21830:7;21826:23;21822:32;21819:119;;;21857:79;;:::i;:::-;21819:119;21977:1;22002:61;22055:7;22046:6;22035:9;22031:22;22002:61;:::i;:::-;21992:71;;21948:125;21735:345;;;;:::o;22086:225::-;22226:34;22222:1;22214:6;22210:14;22203:58;22295:8;22290:2;22282:6;22278:15;22271:33;22086:225;:::o;22317:366::-;22459:3;22480:67;22544:2;22539:3;22480:67;:::i;:::-;22473:74;;22556:93;22645:3;22556:93;:::i;:::-;22674:2;22669:3;22665:12;22658:19;;22317:366;;;:::o;22689:419::-;22855:4;22893:2;22882:9;22878:18;22870:26;;22942:9;22936:4;22932:20;22928:1;22917:9;22913:17;22906:47;22970:131;23096:4;22970:131;:::i;:::-;22962:139;;22689:419;;;:::o;23114:179::-;23254:31;23250:1;23242:6;23238:14;23231:55;23114:179;:::o;23299:366::-;23441:3;23462:67;23526:2;23521:3;23462:67;:::i;:::-;23455:74;;23538:93;23627:3;23538:93;:::i;:::-;23656:2;23651:3;23647:12;23640:19;;23299:366;;;:::o;23671:419::-;23837:4;23875:2;23864:9;23860:18;23852:26;;23924:9;23918:4;23914:20;23910:1;23899:9;23895:17;23888:47;23952:131;24078:4;23952:131;:::i;:::-;23944:139;;23671:419;;;:::o;24096:224::-;24236:34;24232:1;24224:6;24220:14;24213:58;24305:7;24300:2;24292:6;24288:15;24281:32;24096:224;:::o;24326:366::-;24468:3;24489:67;24553:2;24548:3;24489:67;:::i;:::-;24482:74;;24565:93;24654:3;24565:93;:::i;:::-;24683:2;24678:3;24674:12;24667:19;;24326:366;;;:::o;24698:419::-;24864:4;24902:2;24891:9;24887:18;24879:26;;24951:9;24945:4;24941:20;24937:1;24926:9;24922:17;24915:47;24979:131;25105:4;24979:131;:::i;:::-;24971:139;;24698:419;;;:::o;25123:180::-;25263:32;25259:1;25251:6;25247:14;25240:56;25123:180;:::o;25309:366::-;25451:3;25472:67;25536:2;25531:3;25472:67;:::i;:::-;25465:74;;25548:93;25637:3;25548:93;:::i;:::-;25666:2;25661:3;25657:12;25650:19;;25309:366;;;:::o;25681:419::-;25847:4;25885:2;25874:9;25870:18;25862:26;;25934:9;25928:4;25924:20;25920:1;25909:9;25905:17;25898:47;25962:131;26088:4;25962:131;:::i;:::-;25954:139;;25681:419;;;:::o;26106:191::-;26146:3;26165:20;26183:1;26165:20;:::i;:::-;26160:25;;26199:20;26217:1;26199:20;:::i;:::-;26194:25;;26242:1;26239;26235:9;26228:16;;26263:3;26260:1;26257:10;26254:36;;;26270:18;;:::i;:::-;26254:36;26106:191;;;;:::o;26303:178::-;26443:30;26439:1;26431:6;26427:14;26420:54;26303:178;:::o;26487:366::-;26629:3;26650:67;26714:2;26709:3;26650:67;:::i;:::-;26643:74;;26726:93;26815:3;26726:93;:::i;:::-;26844:2;26839:3;26835:12;26828:19;;26487:366;;;:::o;26859:419::-;27025:4;27063:2;27052:9;27048:18;27040:26;;27112:9;27106:4;27102:20;27098:1;27087:9;27083:17;27076:47;27140:131;27266:4;27140:131;:::i;:::-;27132:139;;26859:419;;;:::o;27284:178::-;27424:30;27420:1;27412:6;27408:14;27401:54;27284:178;:::o;27468:366::-;27610:3;27631:67;27695:2;27690:3;27631:67;:::i;:::-;27624:74;;27707:93;27796:3;27707:93;:::i;:::-;27825:2;27820:3;27816:12;27809:19;;27468:366;;;:::o;27840:419::-;28006:4;28044:2;28033:9;28029:18;28021:26;;28093:9;28087:4;28083:20;28079:1;28068:9;28064:17;28057:47;28121:131;28247:4;28121:131;:::i;:::-;28113:139;;27840:419;;;:::o;28265:176::-;28405:28;28401:1;28393:6;28389:14;28382:52;28265:176;:::o;28447:366::-;28589:3;28610:67;28674:2;28669:3;28610:67;:::i;:::-;28603:74;;28686:93;28775:3;28686:93;:::i;:::-;28804:2;28799:3;28795:12;28788:19;;28447:366;;;:::o;28819:419::-;28985:4;29023:2;29012:9;29008:18;29000:26;;29072:9;29066:4;29062:20;29058:1;29047:9;29043:17;29036:47;29100:131;29226:4;29100:131;:::i;:::-;29092:139;;28819:419;;;:::o;29244:225::-;29384:34;29380:1;29372:6;29368:14;29361:58;29453:8;29448:2;29440:6;29436:15;29429:33;29244:225;:::o;29475:366::-;29617:3;29638:67;29702:2;29697:3;29638:67;:::i;:::-;29631:74;;29714:93;29803:3;29714:93;:::i;:::-;29832:2;29827:3;29823:12;29816:19;;29475:366;;;:::o;29847:419::-;30013:4;30051:2;30040:9;30036:18;30028:26;;30100:9;30094:4;30090:20;30086:1;30075:9;30071:17;30064:47;30128:131;30254:4;30128:131;:::i;:::-;30120:139;;29847:419;;;:::o;30272:182::-;30412:34;30408:1;30400:6;30396:14;30389:58;30272:182;:::o;30460:366::-;30602:3;30623:67;30687:2;30682:3;30623:67;:::i;:::-;30616:74;;30699:93;30788:3;30699:93;:::i;:::-;30817:2;30812:3;30808:12;30801:19;;30460:366;;;:::o;30832:419::-;30998:4;31036:2;31025:9;31021:18;31013:26;;31085:9;31079:4;31075:20;31071:1;31060:9;31056:17;31049:47;31113:131;31239:4;31113:131;:::i;:::-;31105:139;;30832:419;;;:::o;31257:181::-;31397:33;31393:1;31385:6;31381:14;31374:57;31257:181;:::o;31444:366::-;31586:3;31607:67;31671:2;31666:3;31607:67;:::i;:::-;31600:74;;31683:93;31772:3;31683:93;:::i;:::-;31801:2;31796:3;31792:12;31785:19;;31444:366;;;:::o;31816:419::-;31982:4;32020:2;32009:9;32005:18;31997:26;;32069:9;32063:4;32059:20;32055:1;32044:9;32040:17;32033:47;32097:131;32223:4;32097:131;:::i;:::-;32089:139;;31816:419;;;:::o;32241:166::-;32381:18;32377:1;32369:6;32365:14;32358:42;32241:166;:::o;32413:366::-;32555:3;32576:67;32640:2;32635:3;32576:67;:::i;:::-;32569:74;;32652:93;32741:3;32652:93;:::i;:::-;32770:2;32765:3;32761:12;32754:19;;32413:366;;;:::o;32785:419::-;32951:4;32989:2;32978:9;32974:18;32966:26;;33038:9;33032:4;33028:20;33024:1;33013:9;33009:17;33002:47;33066:131;33192:4;33066:131;:::i;:::-;33058:139;;32785:419;;;:::o;33210:180::-;33258:77;33255:1;33248:88;33355:4;33352:1;33345:15;33379:4;33376:1;33369:15
Swarm Source
ipfs://2d41c6259468c6ec6b32d726212763c285d0ea7e10b28da4ce697b4a2d642a77
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.