Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
SpotStaking
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-05-06 */ // File: staking_final.sol // @TheSpotNFT - https://thespotnft.com - https://thespot.wtf - https://thespot.art // File: @openzeppelin/contracts/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/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (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`, 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 be 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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * 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 Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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 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); /** * @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; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol // OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol) pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: contracts/staking.sol pragma solidity ^0.8.2; contract SpotStaking is Ownable { address public SPOT_CONTRACT; mapping(address => uint[]) public contractToIndexes; mapping(address => mapping(uint => uint)) public userToIndexStakeStart; mapping(address => mapping(uint => uint)) public userToIndexClaimed; struct StakeItem { address nftContract; address rewardContract; uint256 contractIndex; uint256 stakeTime; uint256 tokenID; bool active; } uint16 currentIndex = 0; StakeItem[] public stakeItems; constructor() {} event RewardClaimed(address _claimer, address _contract, uint _index); event StakeStarted(address _staker, address _contract, uint _timestamp); function timeUntilClaimable(address _account, address _contract, uint _contractIndex) public view returns(uint) { uint index = contractToIndexes[_contract][_contractIndex]; StakeItem memory s = stakeItems[index]; uint userStarted = userToIndexStakeStart[_account][index]; if (userStarted == 0) { return s.stakeTime; } else { uint _endTime = userStarted + s.stakeTime; if (_endTime > block.timestamp) { return _endTime - block.timestamp; } else { return 0; } } } function stake(address _contract, uint _contractIndex) public { uint index = contractToIndexes[_contract][_contractIndex]; require(userToIndexStakeStart[msg.sender][index] == 0, "Spot Staking: You've already started staking!"); StakeItem memory s = stakeItems[index]; require(s.active, "Staking that NFT is not currently available!"); require(userToIndexClaimed[msg.sender][index] == 0, "Spot Staking: You've already claimed this!"); IERC721 spotNFT = IERC721(SPOT_CONTRACT); require(spotNFT.balanceOf(msg.sender) > 0, "Spot Staking: You don't have a Spot!"); IERC721 stakedNFT = IERC721(_contract); require(stakedNFT.balanceOf(msg.sender) > 0, "Spot Staking: You don't have the correct NFT to stake!"); userToIndexStakeStart[msg.sender][index] = block.timestamp; emit StakeStarted(msg.sender, _contract, block.timestamp); } function claimStake(address _contract, uint _contractIndex) public { uint index = contractToIndexes[_contract][_contractIndex]; require(userToIndexClaimed[msg.sender][index] == 0, "Spot Staking: You've already claimed this!"); IERC721 spotNFT = IERC721(SPOT_CONTRACT); require(spotNFT.balanceOf(msg.sender) > 0, "Spot Staking: You don't have a Spot!"); IERC721 stakedNFT = IERC721(_contract); require(stakedNFT.balanceOf(msg.sender) > 0, "Spot Staking: You don't have the correct NFT in your wallet!"); require(timeUntilClaimable(msg.sender, _contract, _contractIndex) == 0, "Spot Staking: Staking not finished yet!"); StakeItem memory s = stakeItems[index]; IERC1155 rewardContract = IERC1155(s.rewardContract); require(rewardContract.balanceOf(address(this), s.tokenID) > 0, "Spot Staking: No rewards available!"); rewardContract.safeTransferFrom(address(this), msg.sender, s.tokenID, 1, ""); userToIndexClaimed[msg.sender][index] = 1; emit RewardClaimed(msg.sender, _contract, index); } function getStakeItemsCount() public view returns(uint) { return stakeItems.length; } function getContractStakeItemsCount(address _contract) public view returns(uint) { return contractToIndexes[_contract].length; } // <AdminStuff> function setSpotAddress(address _contract) external onlyOwner { SPOT_CONTRACT = _contract; } function addStakeItem(address _nftContract, uint256 _stakeTime, address _rewardContract, uint256 _tokenID, bool _active) public onlyOwner { StakeItem memory s = StakeItem(_nftContract, _rewardContract, contractToIndexes[_nftContract].length, _stakeTime, _tokenID, _active); stakeItems.push(s); contractToIndexes[_nftContract].push(currentIndex); currentIndex += 1; } function updateStakeActive(uint _index, bool _active) public onlyOwner { StakeItem storage s = stakeItems[_index]; s.active = _active; } function updateStakeTime(uint _index, uint _time) public onlyOwner { StakeItem storage s = stakeItems[_index]; s.stakeTime = _time; } function withdrawERC1155(address _contract, uint256[] memory _tokenIDs, uint256[] memory _amounts, address _to) public onlyOwner { IERC1155 c = IERC1155(_contract); c.safeBatchTransferFrom(address(this), _to, _tokenIDs, _amounts, ""); } function onERC1155Received(address, address, uint256, uint256, bytes memory) public virtual returns (bytes4) { return this.onERC1155Received.selector; } function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) public virtual returns (bytes4) { return this.onERC1155BatchReceived.selector; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"_claimer","type":"address"},{"indexed":false,"internalType":"address","name":"_contract","type":"address"},{"indexed":false,"internalType":"uint256","name":"_index","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_staker","type":"address"},{"indexed":false,"internalType":"address","name":"_contract","type":"address"},{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"StakeStarted","type":"event"},{"inputs":[],"name":"SPOT_CONTRACT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nftContract","type":"address"},{"internalType":"uint256","name":"_stakeTime","type":"uint256"},{"internalType":"address","name":"_rewardContract","type":"address"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"bool","name":"_active","type":"bool"}],"name":"addStakeItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint256","name":"_contractIndex","type":"uint256"}],"name":"claimStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"contractToIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"getContractStakeItemsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStakeItemsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setSpotAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint256","name":"_contractIndex","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeItems","outputs":[{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"address","name":"rewardContract","type":"address"},{"internalType":"uint256","name":"contractIndex","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"bool","name":"active","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint256","name":"_contractIndex","type":"uint256"}],"name":"timeUntilClaimable","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":"_index","type":"uint256"},{"internalType":"bool","name":"_active","type":"bool"}],"name":"updateStakeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"updateStakeTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userToIndexClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userToIndexStakeStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"uint256[]","name":"_tokenIDs","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600560006101000a81548161ffff021916908361ffff1602179055503480156200002f57600080fd5b5062000050620000446200005660201b60201c565b6200005e60201b60201c565b62000122565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612d0280620001326000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638145fa19116100ad578063bc197c8111610071578063bc197c8114610332578063f23a6e6114610362578063f2fde38b14610392578063f559df67146103ae578063fa9d585b146103ca5761012c565b80638145fa19146102905780638da5cb5b146102ac5780639b7ada86146102ca578063a6a156b4146102fa578063adc9772e146103165761012c565b806353a69c14116100f457806353a69c14146101ec57806358f6197c14610208578063606920c214610226578063715018a61461025657806378ed6270146102605761012c565b80631a07e7c1146101315780631fb8b0a11461014d57806333f26d661461016957806337a1c2e414610199578063445ff63b146101b7575b600080fd5b61014b60048036038101906101469190612089565b6103fa565b005b61016760048036038101906101629190611ed5565b6104bd565b005b610183600480360381019061017e9190611f74565b6105b6565b604051610190919061264f565b60405180910390f35b6101a16105db565b6040516101ae919061264f565b60405180910390f35b6101d160048036038101906101cc919061202f565b6105e8565b6040516101e39695949392919061246a565b60405180910390f35b61020660048036038101906102019190611fb4565b610681565b005b610210610954565b60405161021d919061235a565b60405180910390f35b610240600480360381019061023b9190611cef565b61097a565b60405161024d919061264f565b60405180910390f35b61025e6109c6565b005b61027a60048036038101906102759190611f74565b610a4e565b604051610287919061264f565b60405180910390f35b6102aa60048036038101906102a59190611f74565b610a7f565b005b6102b4611080565b6040516102c1919061235a565b60405180910390f35b6102e460048036038101906102df9190611deb565b6110a9565b6040516102f1919061264f565b60405180910390f35b610314600480360381019061030f9190611cef565b6112d0565b005b610330600480360381019061032b9190611f74565b611390565b005b61034c60048036038101906103479190611d1c565b6118ca565b60405161035991906124f4565b60405180910390f35b61037c60048036038101906103779190611e3e565b6118df565b60405161038991906124f4565b60405180910390f35b6103ac60048036038101906103a79190611cef565b6118f4565b005b6103c860048036038101906103c391906120c9565b6119ec565b005b6103e460048036038101906103df9190611f74565b611a9c565b6040516103f1919061264f565b60405180910390f35b610402611ac1565b73ffffffffffffffffffffffffffffffffffffffff16610420611080565b73ffffffffffffffffffffffffffffffffffffffff1614610476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046d9061258f565b60405180910390fd5b60006006838154811061048c5761048b61290c565b5b90600052602060002090600602019050818160050160006101000a81548160ff021916908315150217905550505050565b6104c5611ac1565b73ffffffffffffffffffffffffffffffffffffffff166104e3611080565b73ffffffffffffffffffffffffffffffffffffffff1614610539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105309061258f565b60405180910390fd5b60008490508073ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6308487876040518563ffffffff1660e01b815260040161057d9493929190612375565b600060405180830381600087803b15801561059757600080fd5b505af11580156105ab573d6000803e3d6000fd5b505050505050505050565b6004602052816000526040600020602052806000526040600020600091509150505481565b6000600680549050905090565b600681815481106105f857600080fd5b90600052602060002090600602016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050160009054906101000a900460ff16905086565b610689611ac1565b73ffffffffffffffffffffffffffffffffffffffff166106a7611080565b73ffffffffffffffffffffffffffffffffffffffff16146106fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f49061258f565b60405180910390fd5b60006040518060c001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905081526020018681526020018481526020018315158152509050600681908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff0219169083151502179055505050600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600560009054906101000a900461ffff16908060018154018082558091505060019003906000526020600020016000909161ffff169091909150556001600560008282829054906101000a900461ffff166109329190612747565b92506101000a81548161ffff021916908361ffff160217905550505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6109ce611ac1565b73ffffffffffffffffffffffffffffffffffffffff166109ec611080565b73ffffffffffffffffffffffffffffffffffffffff1614610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a399061258f565b60405180910390fd5b610a4c6000611ac9565b565b60026020528160005260406000208181548110610a6a57600080fd5b90600052602060002001600091509150505481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610ad257610ad161290c565b5b906000526020600020015490506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205414610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b699061260f565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610bd4919061235a565b60206040518083038186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c24919061205c565b11610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b9061252f565b60405180910390fd5b600084905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610ca4919061235a565b60206040518083038186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf4919061205c565b11610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b906125ef565b60405180910390fd5b6000610d413387876110a9565b14610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906125af565b60405180910390fd5b600060068481548110610d9757610d9661290c565b5b90600052602060002090600602016040518060c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff161515151581525050905060008160200151905060008173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3085608001516040518363ffffffff1660e01b8152600401610ee09291906124cb565b60206040518083038186803b158015610ef857600080fd5b505afa158015610f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f30919061205c565b11610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f67906125cf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663f242432a3033856080015160016040518563ffffffff1660e01b8152600401610fb49493929190612412565b600060405180830381600087803b158015610fce57600080fd5b505af1158015610fe2573d6000803e3d6000fd5b505050506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020819055507f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b733888760405161106f939291906123db565b60405180910390a150505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106110fd576110fc61290c565b5b906000526020600020015490506000600682815481106111205761111f61290c565b5b90600052602060002090600602016040518060c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff16151515158152505090506000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600081141561128d57816060015193505050506112c9565b600082606001518261129f919061277f565b9050428111156112c05742816112b591906127d5565b9450505050506112c9565b60009450505050505b9392505050565b6112d8611ac1565b73ffffffffffffffffffffffffffffffffffffffff166112f6611080565b73ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113439061258f565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106113e3576113e261290c565b5b906000526020600020015490506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205414611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a9061256f565b60405180910390fd5b6000600682815481106114995761149861290c565b5b90600052602060002090600602016040518060c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff16151515158152505090508060a001516115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d49061254f565b60405180910390fd5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205414611670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116679061260f565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016116d2919061235a565b60206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061205c565b11611762576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117599061252f565b60405180910390fd5b600085905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016117a2919061235a565b60206040518083038186803b1580156117ba57600080fd5b505afa1580156117ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f2919061205c565b11611832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118299061262f565b60405180910390fd5b42600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020819055507f7756de63cd9fefc30e8ef2a6d85ef3b687232ccb1059378e3bd1e9ab6c11b49f3387426040516118ba939291906123db565b60405180910390a1505050505050565b600063bc197c8160e01b905095945050505050565b600063f23a6e6160e01b905095945050505050565b6118fc611ac1565b73ffffffffffffffffffffffffffffffffffffffff1661191a611080565b73ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119679061258f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d79061250f565b60405180910390fd5b6119e981611ac9565b50565b6119f4611ac1565b73ffffffffffffffffffffffffffffffffffffffff16611a12611080565b73ffffffffffffffffffffffffffffffffffffffff1614611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f9061258f565b60405180910390fd5b600060068381548110611a7e57611a7d61290c565b5b90600052602060002090600602019050818160030181905550505050565b6003602052816000526040600020602052806000526040600020600091509150505481565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611ba0611b9b8461268f565b61266a565b90508083825260208201905082856020860282011115611bc357611bc261296f565b5b60005b85811015611bf35781611bd98882611cc5565b845260208401935060208301925050600181019050611bc6565b5050509392505050565b6000611c10611c0b846126bb565b61266a565b905082815260208101848484011115611c2c57611c2b612974565b5b611c3784828561289d565b509392505050565b600081359050611c4e81612c87565b92915050565b600082601f830112611c6957611c6861296a565b5b8135611c79848260208601611b8d565b91505092915050565b600081359050611c9181612c9e565b92915050565b600082601f830112611cac57611cab61296a565b5b8135611cbc848260208601611bfd565b91505092915050565b600081359050611cd481612cb5565b92915050565b600081519050611ce981612cb5565b92915050565b600060208284031215611d0557611d0461297e565b5b6000611d1384828501611c3f565b91505092915050565b600080600080600060a08688031215611d3857611d3761297e565b5b6000611d4688828901611c3f565b9550506020611d5788828901611c3f565b945050604086013567ffffffffffffffff811115611d7857611d77612979565b5b611d8488828901611c54565b935050606086013567ffffffffffffffff811115611da557611da4612979565b5b611db188828901611c54565b925050608086013567ffffffffffffffff811115611dd257611dd1612979565b5b611dde88828901611c97565b9150509295509295909350565b600080600060608486031215611e0457611e0361297e565b5b6000611e1286828701611c3f565b9350506020611e2386828701611c3f565b9250506040611e3486828701611cc5565b9150509250925092565b600080600080600060a08688031215611e5a57611e5961297e565b5b6000611e6888828901611c3f565b9550506020611e7988828901611c3f565b9450506040611e8a88828901611cc5565b9350506060611e9b88828901611cc5565b925050608086013567ffffffffffffffff811115611ebc57611ebb612979565b5b611ec888828901611c97565b9150509295509295909350565b60008060008060808587031215611eef57611eee61297e565b5b6000611efd87828801611c3f565b945050602085013567ffffffffffffffff811115611f1e57611f1d612979565b5b611f2a87828801611c54565b935050604085013567ffffffffffffffff811115611f4b57611f4a612979565b5b611f5787828801611c54565b9250506060611f6887828801611c3f565b91505092959194509250565b60008060408385031215611f8b57611f8a61297e565b5b6000611f9985828601611c3f565b9250506020611faa85828601611cc5565b9150509250929050565b600080600080600060a08688031215611fd057611fcf61297e565b5b6000611fde88828901611c3f565b9550506020611fef88828901611cc5565b945050604061200088828901611c3f565b935050606061201188828901611cc5565b925050608061202288828901611c82565b9150509295509295909350565b6000602082840312156120455761204461297e565b5b600061205384828501611cc5565b91505092915050565b6000602082840312156120725761207161297e565b5b600061208084828501611cda565b91505092915050565b600080604083850312156120a05761209f61297e565b5b60006120ae85828601611cc5565b92505060206120bf85828601611c82565b9150509250929050565b600080604083850312156120e0576120df61297e565b5b60006120ee85828601611cc5565b92505060206120ff85828601611cc5565b9150509250929050565b6000612115838361233c565b60208301905092915050565b61212a81612809565b82525050565b600061213b826126fc565b6121458185612714565b9350612150836126ec565b8060005b838110156121815781516121688882612109565b975061217383612707565b925050600181019050612154565b5085935050505092915050565b6121978161281b565b82525050565b6121a681612827565b82525050565b6121b58161288b565b82525050565b60006121c8602683612736565b91506121d382612994565b604082019050919050565b60006121eb602483612736565b91506121f6826129e3565b604082019050919050565b600061220e602c83612736565b915061221982612a32565b604082019050919050565b6000612231602d83612736565b915061223c82612a81565b604082019050919050565b6000612254602083612736565b915061225f82612ad0565b602082019050919050565b6000612277602783612736565b915061228282612af9565b604082019050919050565b600061229a602383612736565b91506122a582612b48565b604082019050919050565b60006122bd600083612725565b91506122c882612b97565b600082019050919050565b60006122e0603c83612736565b91506122eb82612b9a565b604082019050919050565b6000612303602a83612736565b915061230e82612be9565b604082019050919050565b6000612326603683612736565b915061233182612c38565b604082019050919050565b61234581612881565b82525050565b61235481612881565b82525050565b600060208201905061236f6000830184612121565b92915050565b600060a08201905061238a6000830187612121565b6123976020830186612121565b81810360408301526123a98185612130565b905081810360608301526123bd8184612130565b905081810360808301526123d0816122b0565b905095945050505050565b60006060820190506123f06000830186612121565b6123fd6020830185612121565b61240a604083018461234b565b949350505050565b600060a0820190506124276000830187612121565b6124346020830186612121565b612441604083018561234b565b61244e60608301846121ac565b818103608083015261245f816122b0565b905095945050505050565b600060c08201905061247f6000830189612121565b61248c6020830188612121565b612499604083018761234b565b6124a6606083018661234b565b6124b3608083018561234b565b6124c060a083018461218e565b979650505050505050565b60006040820190506124e06000830185612121565b6124ed602083018461234b565b9392505050565b6000602082019050612509600083018461219d565b92915050565b60006020820190508181036000830152612528816121bb565b9050919050565b60006020820190508181036000830152612548816121de565b9050919050565b6000602082019050818103600083015261256881612201565b9050919050565b6000602082019050818103600083015261258881612224565b9050919050565b600060208201905081810360008301526125a881612247565b9050919050565b600060208201905081810360008301526125c88161226a565b9050919050565b600060208201905081810360008301526125e88161228d565b9050919050565b60006020820190508181036000830152612608816122d3565b9050919050565b60006020820190508181036000830152612628816122f6565b9050919050565b6000602082019050818103600083015261264881612319565b9050919050565b6000602082019050612664600083018461234b565b92915050565b6000612674612685565b905061268082826128ac565b919050565b6000604051905090565b600067ffffffffffffffff8211156126aa576126a961293b565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156126d6576126d561293b565b5b6126df82612983565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061275282612853565b915061275d83612853565b92508261ffff03821115612774576127736128dd565b5b828201905092915050565b600061278a82612881565b915061279583612881565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127ca576127c96128dd565b5b828201905092915050565b60006127e082612881565b91506127eb83612881565b9250828210156127fe576127fd6128dd565b5b828203905092915050565b600061281482612861565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061289682612881565b9050919050565b82818337600083830152505050565b6128b582612983565b810181811067ffffffffffffffff821117156128d4576128d361293b565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f53706f74205374616b696e673a20596f7520646f6e277420686176652061205360008201527f706f742100000000000000000000000000000000000000000000000000000000602082015250565b7f5374616b696e672074686174204e4654206973206e6f742063757272656e746c60008201527f7920617661696c61626c65210000000000000000000000000000000000000000602082015250565b7f53706f74205374616b696e673a20596f7527766520616c72656164792073746160008201527f72746564207374616b696e672100000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53706f74205374616b696e673a205374616b696e67206e6f742066696e69736860008201527f6564207965742100000000000000000000000000000000000000000000000000602082015250565b7f53706f74205374616b696e673a204e6f207265776172647320617661696c616260008201527f6c65210000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f53706f74205374616b696e673a20596f7520646f6e277420686176652074686560008201527f20636f7272656374204e465420696e20796f75722077616c6c65742100000000602082015250565b7f53706f74205374616b696e673a20596f7527766520616c726561647920636c6160008201527f696d656420746869732100000000000000000000000000000000000000000000602082015250565b7f53706f74205374616b696e673a20596f7520646f6e277420686176652074686560008201527f20636f7272656374204e465420746f207374616b652100000000000000000000602082015250565b612c9081612809565b8114612c9b57600080fd5b50565b612ca78161281b565b8114612cb257600080fd5b50565b612cbe81612881565b8114612cc957600080fd5b5056fea2646970667358221220b31142a7657d23e936c426f36463a1e67caf2e6436c137d1054a149a602537c964736f6c63430008070033
Deployed ByteCode Sourcemap
23144:5203:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27376:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27707:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23361:67;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26567:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23651:29;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;26961:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23189:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26674:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15225:103;;;:::i;:::-;;23226:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25406:1153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14574:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23869:594;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26847:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24471:927;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28148:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27974:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27543:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23284:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27376:159;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27458:19:::1;27480:10;27491:6;27480:18;;;;;;;;:::i;:::-;;;;;;;;;;;;27458:40;;27520:7;27509:1;:8;;;:18;;;;;;;;;;;;;;;;;;27447:88;27376:159:::0;;:::o;27707:259::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27847:10:::1;27869:9;27847:32;;27890:1;:23;;;27922:4;27929:3;27934:9;27945:8;27890:68;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27836:130;27707:259:::0;;;;:::o;23361:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26567:99::-;26617:4;26641:10;:17;;;;26634:24;;26567:99;:::o;23651:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26961:407::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27110:18:::1;27131:111;;;;;;;;27141:12;27131:111;;;;;;27155:15;27131:111;;;;;;27172:17;:31;27190:12;27172:31;;;;;;;;;;;;;;;:38;;;;27131:111;;;;27212:10;27131:111;;;;27224:8;27131:111;;;;27234:7;27131:111;;;;::::0;27110:132:::1;;27253:10;27269:1;27253:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27282:17;:31;27300:12;27282:31;;;;;;;;;;;;;;;27319:12;;;;;;;;;;;27282:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27359:1;27343:12;;:17;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27099:269;26961:407:::0;;;;;:::o;23189:28::-;;;;;;;;;;;;;:::o;26674:142::-;26749:4;26773:17;:28;26791:9;26773:28;;;;;;;;;;;;;;;:35;;;;26766:42;;26674:142;;;:::o;15225:103::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:30:::1;15317:1;15290:18;:30::i;:::-;15225:103::o:0;23226:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;25406:1153::-;25484:10;25497:17;:28;25515:9;25497:28;;;;;;;;;;;;;;;25526:14;25497:44;;;;;;;;:::i;:::-;;;;;;;;;;25484:57;;25601:1;25560:18;:30;25579:10;25560:30;;;;;;;;;;;;;;;:37;25591:5;25560:37;;;;;;;;;;;;:42;25552:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25670:15;25696:13;;;;;;;;;;;25670:40;;25761:1;25729:7;:17;;;25747:10;25729:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;25721:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;25824:17;25852:9;25824:38;;25915:1;25881:9;:19;;;25901:10;25881:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;25873:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;26071:1;26010:57;26029:10;26041:9;26052:14;26010:18;:57::i;:::-;:62;26002:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;26137:18;26158:10;26169:5;26158:17;;;;;;;;:::i;:::-;;;;;;;;;;;;26137:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26186:23;26221:1;:16;;;26186:52;;26310:1;26257:14;:24;;;26290:4;26297:1;:9;;;26257:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;26249:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;26364:14;:31;;;26404:4;26411:10;26423:1;:9;;;26434:1;26364:76;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26491:1;26451:18;:30;26470:10;26451:30;;;;;;;;;;;;;;;:37;26482:5;26451:37;;;;;;;;;;;:41;;;;26508:43;26522:10;26534:9;26545:5;26508:43;;;;;;;;:::i;:::-;;;;;;;;25473:1086;;;;;25406:1153;;:::o;14574:87::-;14620:7;14647:6;;;;;;;;;;;14640:13;;14574:87;:::o;23869:594::-;23975:4;23992:10;24005:17;:28;24023:9;24005:28;;;;;;;;;;;;;;;24034:14;24005:44;;;;;;;;:::i;:::-;;;;;;;;;;23992:57;;24060:18;24081:10;24092:5;24081:17;;;;;;;;:::i;:::-;;;;;;;;;;;;24060:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24109:16;24128:21;:31;24150:8;24128:31;;;;;;;;;;;;;;;:38;24160:5;24128:38;;;;;;;;;;;;24109:57;;24199:1;24184:11;:16;24180:276;;;24217:1;:11;;;24210:18;;;;;;;24180:276;24247:13;24277:1;:11;;;24263;:25;;;;:::i;:::-;24247:41;;24318:15;24307:8;:26;24303:149;;;24372:15;24361:8;:26;;;;:::i;:::-;24354:33;;;;;;;;24303:149;24435:1;24428:8;;;;;;23869:594;;;;;;:::o;26847:106::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26936:9:::1;26920:13;;:25;;;;;;;;;;;;;;;;;;26847:106:::0;:::o;24471:927::-;24544:10;24557:17;:28;24575:9;24557:28;;;;;;;;;;;;;;;24586:14;24557:44;;;;;;;;:::i;:::-;;;;;;;;;;24544:57;;24657:1;24613:21;:33;24635:10;24613:33;;;;;;;;;;;;;;;:40;24647:5;24613:40;;;;;;;;;;;;:45;24605:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;24719:18;24740:10;24751:5;24740:17;;;;;;;;:::i;:::-;;;;;;;;;;;;24719:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24776:1;:8;;;24768:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;24893:1;24852:18;:30;24871:10;24852:30;;;;;;;;;;;;;;;:37;24883:5;24852:37;;;;;;;;;;;;:42;24844:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24954:15;24980:13;;;;;;;;;;;24954:40;;25045:1;25013:7;:17;;;25031:10;25013:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;25005:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;25100:17;25128:9;25100:38;;25191:1;25157:9;:19;;;25177:10;25157:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:35;25149:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;25307:15;25264:21;:33;25286:10;25264:33;;;;;;;;;;;;;;;:40;25298:5;25264:40;;;;;;;;;;;:58;;;;25338:52;25351:10;25363:9;25374:15;25338:52;;;;;;;;:::i;:::-;;;;;;;;24533:865;;;;24471:927;;:::o;28148:194::-;28272:6;28298:36;;;28291:43;;28148:194;;;;;;;:::o;27974:166::-;28075:6;28101:31;;;28094:38;;27974:166;;;;;;;:::o;15483:201::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15592:1:::1;15572:22;;:8;:22;;;;15564:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15648:28;15667:8;15648:18;:28::i;:::-;15483:201:::0;:::o;27543:156::-;14805:12;:10;:12::i;:::-;14794:23;;:7;:5;:7::i;:::-;:23;;;14786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27621:19:::1;27643:10;27654:6;27643:18;;;;;;;;:::i;:::-;;;;;;;;;;;;27621:40;;27686:5;27672:1;:11;;:19;;;;27610:89;27543:156:::0;;:::o;23284:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13298:98::-;13351:7;13378:10;13371:17;;13298:98;:::o;15844:191::-;15918:16;15937:6;;;;;;;;;;;15918:25;;15963:8;15954:6;;:17;;;;;;;;;;;;;;;;;;16018:8;15987:40;;16008:8;15987:40;;;;;;;;;;;;15907:128;15844:191;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:139::-;1214:5;1252:6;1239:20;1230:29;;1268:33;1295:5;1268:33;:::i;:::-;1168:139;;;;:::o;1330:370::-;1401:5;1450:3;1443:4;1435:6;1431:17;1427:27;1417:122;;1458:79;;:::i;:::-;1417:122;1575:6;1562:20;1600:94;1690:3;1682:6;1675:4;1667:6;1663:17;1600:94;:::i;:::-;1591:103;;1407:293;1330:370;;;;:::o;1706:133::-;1749:5;1787:6;1774:20;1765:29;;1803:30;1827:5;1803:30;:::i;:::-;1706:133;;;;:::o;1858:338::-;1913:5;1962:3;1955:4;1947:6;1943:17;1939:27;1929:122;;1970:79;;:::i;:::-;1929:122;2087:6;2074:20;2112:78;2186:3;2178:6;2171:4;2163:6;2159:17;2112:78;:::i;:::-;2103:87;;1919:277;1858:338;;;;:::o;2202:139::-;2248:5;2286:6;2273:20;2264:29;;2302:33;2329:5;2302:33;:::i;:::-;2202:139;;;;:::o;2347:143::-;2404:5;2435:6;2429:13;2420:22;;2451:33;2478:5;2451:33;:::i;:::-;2347:143;;;;:::o;2496:329::-;2555:6;2604:2;2592:9;2583:7;2579:23;2575:32;2572:119;;;2610:79;;:::i;:::-;2572:119;2730:1;2755:53;2800:7;2791:6;2780:9;2776:22;2755:53;:::i;:::-;2745:63;;2701:117;2496:329;;;;:::o;2831:1509::-;2985:6;2993;3001;3009;3017;3066:3;3054:9;3045:7;3041:23;3037:33;3034:120;;;3073:79;;:::i;:::-;3034:120;3193:1;3218:53;3263:7;3254:6;3243:9;3239:22;3218:53;:::i;:::-;3208:63;;3164:117;3320:2;3346:53;3391:7;3382:6;3371:9;3367:22;3346:53;:::i;:::-;3336:63;;3291:118;3476:2;3465:9;3461:18;3448:32;3507:18;3499:6;3496:30;3493:117;;;3529:79;;:::i;:::-;3493:117;3634:78;3704:7;3695:6;3684:9;3680:22;3634:78;:::i;:::-;3624:88;;3419:303;3789:2;3778:9;3774:18;3761:32;3820:18;3812:6;3809:30;3806:117;;;3842:79;;:::i;:::-;3806:117;3947:78;4017:7;4008:6;3997:9;3993:22;3947:78;:::i;:::-;3937:88;;3732:303;4102:3;4091:9;4087:19;4074:33;4134:18;4126:6;4123:30;4120:117;;;4156:79;;:::i;:::-;4120:117;4261:62;4315:7;4306:6;4295:9;4291:22;4261:62;:::i;:::-;4251:72;;4045:288;2831:1509;;;;;;;;:::o;4346:619::-;4423:6;4431;4439;4488:2;4476:9;4467:7;4463:23;4459:32;4456:119;;;4494:79;;:::i;:::-;4456:119;4614:1;4639:53;4684:7;4675:6;4664:9;4660:22;4639:53;:::i;:::-;4629:63;;4585:117;4741:2;4767:53;4812:7;4803:6;4792:9;4788:22;4767:53;:::i;:::-;4757:63;;4712:118;4869:2;4895:53;4940:7;4931:6;4920:9;4916:22;4895:53;:::i;:::-;4885:63;;4840:118;4346:619;;;;;:::o;4971:1089::-;5075:6;5083;5091;5099;5107;5156:3;5144:9;5135:7;5131:23;5127:33;5124:120;;;5163:79;;:::i;:::-;5124:120;5283:1;5308:53;5353:7;5344:6;5333:9;5329:22;5308:53;:::i;:::-;5298:63;;5254:117;5410:2;5436:53;5481:7;5472:6;5461:9;5457:22;5436:53;:::i;:::-;5426:63;;5381:118;5538:2;5564:53;5609:7;5600:6;5589:9;5585:22;5564:53;:::i;:::-;5554:63;;5509:118;5666:2;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5637:118;5822:3;5811:9;5807:19;5794:33;5854:18;5846:6;5843:30;5840:117;;;5876:79;;:::i;:::-;5840:117;5981:62;6035:7;6026:6;6015:9;6011:22;5981:62;:::i;:::-;5971:72;;5765:288;4971:1089;;;;;;;;:::o;6066:1185::-;6202:6;6210;6218;6226;6275:3;6263:9;6254:7;6250:23;6246:33;6243:120;;;6282:79;;:::i;:::-;6243:120;6402:1;6427:53;6472:7;6463:6;6452:9;6448:22;6427:53;:::i;:::-;6417:63;;6373:117;6557:2;6546:9;6542:18;6529:32;6588:18;6580:6;6577:30;6574:117;;;6610:79;;:::i;:::-;6574:117;6715:78;6785:7;6776:6;6765:9;6761:22;6715:78;:::i;:::-;6705:88;;6500:303;6870:2;6859:9;6855:18;6842:32;6901:18;6893:6;6890:30;6887:117;;;6923:79;;:::i;:::-;6887:117;7028:78;7098:7;7089:6;7078:9;7074:22;7028:78;:::i;:::-;7018:88;;6813:303;7155:2;7181:53;7226:7;7217:6;7206:9;7202:22;7181:53;:::i;:::-;7171:63;;7126:118;6066:1185;;;;;;;:::o;7257:474::-;7325:6;7333;7382:2;7370:9;7361:7;7357:23;7353:32;7350:119;;;7388:79;;:::i;:::-;7350:119;7508:1;7533:53;7578:7;7569:6;7558:9;7554:22;7533:53;:::i;:::-;7523:63;;7479:117;7635:2;7661:53;7706:7;7697:6;7686:9;7682:22;7661:53;:::i;:::-;7651:63;;7606:118;7257:474;;;;;:::o;7737:905::-;7829:6;7837;7845;7853;7861;7910:3;7898:9;7889:7;7885:23;7881:33;7878:120;;;7917:79;;:::i;:::-;7878:120;8037:1;8062:53;8107:7;8098:6;8087:9;8083:22;8062:53;:::i;:::-;8052:63;;8008:117;8164:2;8190:53;8235:7;8226:6;8215:9;8211:22;8190:53;:::i;:::-;8180:63;;8135:118;8292:2;8318:53;8363:7;8354:6;8343:9;8339:22;8318:53;:::i;:::-;8308:63;;8263:118;8420:2;8446:53;8491:7;8482:6;8471:9;8467:22;8446:53;:::i;:::-;8436:63;;8391:118;8548:3;8575:50;8617:7;8608:6;8597:9;8593:22;8575:50;:::i;:::-;8565:60;;8519:116;7737:905;;;;;;;;:::o;8648:329::-;8707:6;8756:2;8744:9;8735:7;8731:23;8727:32;8724:119;;;8762:79;;:::i;:::-;8724:119;8882:1;8907:53;8952:7;8943:6;8932:9;8928:22;8907:53;:::i;:::-;8897:63;;8853:117;8648:329;;;;:::o;8983:351::-;9053:6;9102:2;9090:9;9081:7;9077:23;9073:32;9070:119;;;9108:79;;:::i;:::-;9070:119;9228:1;9253:64;9309:7;9300:6;9289:9;9285:22;9253:64;:::i;:::-;9243:74;;9199:128;8983:351;;;;:::o;9340:468::-;9405:6;9413;9462:2;9450:9;9441:7;9437:23;9433:32;9430:119;;;9468:79;;:::i;:::-;9430:119;9588:1;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9559:117;9715:2;9741:50;9783:7;9774:6;9763:9;9759:22;9741:50;:::i;:::-;9731:60;;9686:115;9340:468;;;;;:::o;9814:474::-;9882:6;9890;9939:2;9927:9;9918:7;9914:23;9910:32;9907:119;;;9945:79;;:::i;:::-;9907:119;10065:1;10090:53;10135:7;10126:6;10115:9;10111:22;10090:53;:::i;:::-;10080:63;;10036:117;10192:2;10218:53;10263:7;10254:6;10243:9;10239:22;10218:53;:::i;:::-;10208:63;;10163:118;9814:474;;;;;:::o;10294:179::-;10363:10;10384:46;10426:3;10418:6;10384:46;:::i;:::-;10462:4;10457:3;10453:14;10439:28;;10294:179;;;;:::o;10479:118::-;10566:24;10584:5;10566:24;:::i;:::-;10561:3;10554:37;10479:118;;:::o;10633:732::-;10752:3;10781:54;10829:5;10781:54;:::i;:::-;10851:86;10930:6;10925:3;10851:86;:::i;:::-;10844:93;;10961:56;11011:5;10961:56;:::i;:::-;11040:7;11071:1;11056:284;11081:6;11078:1;11075:13;11056:284;;;11157:6;11151:13;11184:63;11243:3;11228:13;11184:63;:::i;:::-;11177:70;;11270:60;11323:6;11270:60;:::i;:::-;11260:70;;11116:224;11103:1;11100;11096:9;11091:14;;11056:284;;;11060:14;11356:3;11349:10;;10757:608;;;10633:732;;;;:::o;11371:109::-;11452:21;11467:5;11452:21;:::i;:::-;11447:3;11440:34;11371:109;;:::o;11486:115::-;11571:23;11588:5;11571:23;:::i;:::-;11566:3;11559:36;11486:115;;:::o;11607:147::-;11702:45;11741:5;11702:45;:::i;:::-;11697:3;11690:58;11607:147;;:::o;11760:366::-;11902:3;11923:67;11987:2;11982:3;11923:67;:::i;:::-;11916:74;;11999:93;12088:3;11999:93;:::i;:::-;12117:2;12112:3;12108:12;12101:19;;11760:366;;;:::o;12132:::-;12274:3;12295:67;12359:2;12354:3;12295:67;:::i;:::-;12288:74;;12371:93;12460:3;12371:93;:::i;:::-;12489:2;12484:3;12480:12;12473:19;;12132:366;;;:::o;12504:::-;12646:3;12667:67;12731:2;12726:3;12667:67;:::i;:::-;12660:74;;12743:93;12832:3;12743:93;:::i;:::-;12861:2;12856:3;12852:12;12845:19;;12504:366;;;:::o;12876:::-;13018:3;13039:67;13103:2;13098:3;13039:67;:::i;:::-;13032:74;;13115:93;13204:3;13115:93;:::i;:::-;13233:2;13228:3;13224:12;13217:19;;12876:366;;;:::o;13248:::-;13390:3;13411:67;13475:2;13470:3;13411:67;:::i;:::-;13404:74;;13487:93;13576:3;13487:93;:::i;:::-;13605:2;13600:3;13596:12;13589:19;;13248:366;;;:::o;13620:::-;13762:3;13783:67;13847:2;13842:3;13783:67;:::i;:::-;13776:74;;13859:93;13948:3;13859:93;:::i;:::-;13977:2;13972:3;13968:12;13961:19;;13620:366;;;:::o;13992:::-;14134:3;14155:67;14219:2;14214:3;14155:67;:::i;:::-;14148:74;;14231:93;14320:3;14231:93;:::i;:::-;14349:2;14344:3;14340:12;14333:19;;13992:366;;;:::o;14364:362::-;14505:3;14526:65;14589:1;14584:3;14526:65;:::i;:::-;14519:72;;14600:93;14689:3;14600:93;:::i;:::-;14718:1;14713:3;14709:11;14702:18;;14364:362;;;:::o;14732:366::-;14874:3;14895:67;14959:2;14954:3;14895:67;:::i;:::-;14888:74;;14971:93;15060:3;14971:93;:::i;:::-;15089:2;15084:3;15080:12;15073:19;;14732:366;;;:::o;15104:::-;15246:3;15267:67;15331:2;15326:3;15267:67;:::i;:::-;15260:74;;15343:93;15432:3;15343:93;:::i;:::-;15461:2;15456:3;15452:12;15445:19;;15104:366;;;:::o;15476:::-;15618:3;15639:67;15703:2;15698:3;15639:67;:::i;:::-;15632:74;;15715:93;15804:3;15715:93;:::i;:::-;15833:2;15828:3;15824:12;15817:19;;15476:366;;;:::o;15848:108::-;15925:24;15943:5;15925:24;:::i;:::-;15920:3;15913:37;15848:108;;:::o;15962:118::-;16049:24;16067:5;16049:24;:::i;:::-;16044:3;16037:37;15962:118;;:::o;16086:222::-;16179:4;16217:2;16206:9;16202:18;16194:26;;16230:71;16298:1;16287:9;16283:17;16274:6;16230:71;:::i;:::-;16086:222;;;;:::o;16314:1161::-;16691:4;16729:3;16718:9;16714:19;16706:27;;16743:71;16811:1;16800:9;16796:17;16787:6;16743:71;:::i;:::-;16824:72;16892:2;16881:9;16877:18;16868:6;16824:72;:::i;:::-;16943:9;16937:4;16933:20;16928:2;16917:9;16913:18;16906:48;16971:108;17074:4;17065:6;16971:108;:::i;:::-;16963:116;;17126:9;17120:4;17116:20;17111:2;17100:9;17096:18;17089:48;17154:108;17257:4;17248:6;17154:108;:::i;:::-;17146:116;;17310:9;17304:4;17300:20;17294:3;17283:9;17279:19;17272:49;17338:130;17463:4;17338:130;:::i;:::-;17330:138;;16314:1161;;;;;;;:::o;17481:442::-;17630:4;17668:2;17657:9;17653:18;17645:26;;17681:71;17749:1;17738:9;17734:17;17725:6;17681:71;:::i;:::-;17762:72;17830:2;17819:9;17815:18;17806:6;17762:72;:::i;:::-;17844;17912:2;17901:9;17897:18;17888:6;17844:72;:::i;:::-;17481:442;;;;;;:::o;17929:875::-;18214:4;18252:3;18241:9;18237:19;18229:27;;18266:71;18334:1;18323:9;18319:17;18310:6;18266:71;:::i;:::-;18347:72;18415:2;18404:9;18400:18;18391:6;18347:72;:::i;:::-;18429;18497:2;18486:9;18482:18;18473:6;18429:72;:::i;:::-;18511:80;18587:2;18576:9;18572:18;18563:6;18511:80;:::i;:::-;18639:9;18633:4;18629:20;18623:3;18612:9;18608:19;18601:49;18667:130;18792:4;18667:130;:::i;:::-;18659:138;;17929:875;;;;;;;:::o;18810:763::-;19037:4;19075:3;19064:9;19060:19;19052:27;;19089:71;19157:1;19146:9;19142:17;19133:6;19089:71;:::i;:::-;19170:72;19238:2;19227:9;19223:18;19214:6;19170:72;:::i;:::-;19252;19320:2;19309:9;19305:18;19296:6;19252:72;:::i;:::-;19334;19402:2;19391:9;19387:18;19378:6;19334:72;:::i;:::-;19416:73;19484:3;19473:9;19469:19;19460:6;19416:73;:::i;:::-;19499:67;19561:3;19550:9;19546:19;19537:6;19499:67;:::i;:::-;18810:763;;;;;;;;;:::o;19579:332::-;19700:4;19738:2;19727:9;19723:18;19715:26;;19751:71;19819:1;19808:9;19804:17;19795:6;19751:71;:::i;:::-;19832:72;19900:2;19889:9;19885:18;19876:6;19832:72;:::i;:::-;19579:332;;;;;:::o;19917:218::-;20008:4;20046:2;20035:9;20031:18;20023:26;;20059:69;20125:1;20114:9;20110:17;20101:6;20059:69;:::i;:::-;19917:218;;;;:::o;20141:419::-;20307:4;20345:2;20334:9;20330:18;20322:26;;20394:9;20388:4;20384:20;20380:1;20369:9;20365:17;20358:47;20422:131;20548:4;20422:131;:::i;:::-;20414:139;;20141:419;;;:::o;20566:::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:::-;21157:4;21195:2;21184:9;21180:18;21172:26;;21244:9;21238:4;21234:20;21230:1;21219:9;21215:17;21208:47;21272:131;21398:4;21272:131;:::i;:::-;21264:139;;20991:419;;;:::o;21416:::-;21582:4;21620:2;21609:9;21605:18;21597:26;;21669:9;21663:4;21659:20;21655:1;21644:9;21640:17;21633:47;21697:131;21823:4;21697:131;:::i;:::-;21689:139;;21416:419;;;:::o;21841:::-;22007:4;22045:2;22034:9;22030:18;22022:26;;22094:9;22088:4;22084:20;22080:1;22069:9;22065:17;22058:47;22122:131;22248:4;22122:131;:::i;:::-;22114:139;;21841:419;;;:::o;22266:::-;22432:4;22470:2;22459:9;22455:18;22447:26;;22519:9;22513:4;22509:20;22505:1;22494:9;22490:17;22483:47;22547:131;22673:4;22547:131;:::i;:::-;22539:139;;22266:419;;;:::o;22691:::-;22857:4;22895:2;22884:9;22880:18;22872:26;;22944:9;22938:4;22934:20;22930:1;22919:9;22915:17;22908:47;22972:131;23098:4;22972:131;:::i;:::-;22964:139;;22691:419;;;:::o;23116:::-;23282:4;23320:2;23309:9;23305:18;23297:26;;23369:9;23363:4;23359:20;23355:1;23344:9;23340:17;23333:47;23397:131;23523:4;23397:131;:::i;:::-;23389:139;;23116:419;;;:::o;23541:::-;23707:4;23745:2;23734:9;23730:18;23722:26;;23794:9;23788:4;23784:20;23780:1;23769:9;23765:17;23758:47;23822:131;23948:4;23822:131;:::i;:::-;23814:139;;23541:419;;;:::o;23966:::-;24132:4;24170:2;24159:9;24155:18;24147:26;;24219:9;24213:4;24209:20;24205:1;24194:9;24190:17;24183:47;24247:131;24373:4;24247:131;:::i;:::-;24239:139;;23966:419;;;:::o;24391:222::-;24484:4;24522:2;24511:9;24507:18;24499:26;;24535:71;24603:1;24592:9;24588:17;24579:6;24535:71;:::i;:::-;24391:222;;;;:::o;24619:129::-;24653:6;24680:20;;:::i;:::-;24670:30;;24709:33;24737:4;24729:6;24709:33;:::i;:::-;24619:129;;;:::o;24754:75::-;24787:6;24820:2;24814:9;24804:19;;24754:75;:::o;24835:311::-;24912:4;25002:18;24994:6;24991:30;24988:56;;;25024:18;;:::i;:::-;24988:56;25074:4;25066:6;25062:17;25054:25;;25134:4;25128;25124:15;25116:23;;24835:311;;;:::o;25152:307::-;25213:4;25303:18;25295:6;25292:30;25289:56;;;25325:18;;:::i;:::-;25289:56;25363:29;25385:6;25363:29;:::i;:::-;25355:37;;25447:4;25441;25437:15;25429:23;;25152:307;;;:::o;25465:132::-;25532:4;25555:3;25547:11;;25585:4;25580:3;25576:14;25568:22;;25465:132;;;:::o;25603:114::-;25670:6;25704:5;25698:12;25688:22;;25603:114;;;:::o;25723:113::-;25793:4;25825;25820:3;25816:14;25808:22;;25723:113;;;:::o;25842:184::-;25941:11;25975:6;25970:3;25963:19;26015:4;26010:3;26006:14;25991:29;;25842:184;;;;:::o;26032:168::-;26115:11;26149:6;26144:3;26137:19;26189:4;26184:3;26180:14;26165:29;;26032:168;;;;:::o;26206:169::-;26290:11;26324:6;26319:3;26312:19;26364:4;26359:3;26355:14;26340:29;;26206:169;;;;:::o;26381:242::-;26420:3;26439:19;26456:1;26439:19;:::i;:::-;26434:24;;26472:19;26489:1;26472:19;:::i;:::-;26467:24;;26565:1;26557:6;26553:14;26550:1;26547:21;26544:47;;;26571:18;;:::i;:::-;26544:47;26615:1;26612;26608:9;26601:16;;26381:242;;;;:::o;26629:305::-;26669:3;26688:20;26706:1;26688:20;:::i;:::-;26683:25;;26722:20;26740:1;26722:20;:::i;:::-;26717:25;;26876:1;26808:66;26804:74;26801:1;26798:81;26795:107;;;26882:18;;:::i;:::-;26795:107;26926:1;26923;26919:9;26912:16;;26629:305;;;;:::o;26940:191::-;26980:4;27000:20;27018:1;27000:20;:::i;:::-;26995:25;;27034:20;27052:1;27034:20;:::i;:::-;27029:25;;27073:1;27070;27067:8;27064:34;;;27078:18;;:::i;:::-;27064:34;27123:1;27120;27116:9;27108:17;;26940:191;;;;:::o;27137:96::-;27174:7;27203:24;27221:5;27203:24;:::i;:::-;27192:35;;27137:96;;;:::o;27239:90::-;27273:7;27316:5;27309:13;27302:21;27291:32;;27239:90;;;:::o;27335:149::-;27371:7;27411:66;27404:5;27400:78;27389:89;;27335:149;;;:::o;27490:89::-;27526:7;27566:6;27559:5;27555:18;27544:29;;27490:89;;;:::o;27585:126::-;27622:7;27662:42;27655:5;27651:54;27640:65;;27585:126;;;:::o;27717:77::-;27754:7;27783:5;27772:16;;27717:77;;;:::o;27800:121::-;27858:9;27891:24;27909:5;27891:24;:::i;:::-;27878:37;;27800:121;;;:::o;27927:154::-;28011:6;28006:3;28001;27988:30;28073:1;28064:6;28059:3;28055:16;28048:27;27927:154;;;:::o;28087:281::-;28170:27;28192:4;28170:27;:::i;:::-;28162:6;28158:40;28300:6;28288:10;28285:22;28264:18;28252:10;28249:34;28246:62;28243:88;;;28311:18;;:::i;:::-;28243:88;28351:10;28347:2;28340:22;28130:238;28087:281;;:::o;28374:180::-;28422:77;28419:1;28412:88;28519:4;28516:1;28509:15;28543:4;28540:1;28533:15;28560:180;28608:77;28605:1;28598:88;28705:4;28702:1;28695:15;28729:4;28726:1;28719:15;28746:180;28794:77;28791:1;28784:88;28891:4;28888:1;28881:15;28915:4;28912:1;28905:15;28932:117;29041:1;29038;29031:12;29055:117;29164:1;29161;29154:12;29178:117;29287:1;29284;29277:12;29301:117;29410:1;29407;29400:12;29424:117;29533:1;29530;29523:12;29547:102;29588:6;29639:2;29635:7;29630:2;29623:5;29619:14;29615:28;29605:38;;29547:102;;;:::o;29655:225::-;29795:34;29791:1;29783:6;29779:14;29772:58;29864:8;29859:2;29851:6;29847:15;29840:33;29655:225;:::o;29886:223::-;30026:34;30022:1;30014:6;30010:14;30003:58;30095:6;30090:2;30082:6;30078:15;30071:31;29886:223;:::o;30115:231::-;30255:34;30251:1;30243:6;30239:14;30232:58;30324:14;30319:2;30311:6;30307:15;30300:39;30115:231;:::o;30352:232::-;30492:34;30488:1;30480:6;30476:14;30469:58;30561:15;30556:2;30548:6;30544:15;30537:40;30352:232;:::o;30590:182::-;30730:34;30726:1;30718:6;30714:14;30707:58;30590:182;:::o;30778:226::-;30918:34;30914:1;30906:6;30902:14;30895:58;30987:9;30982:2;30974:6;30970:15;30963:34;30778:226;:::o;31010:222::-;31150:34;31146:1;31138:6;31134:14;31127:58;31219:5;31214:2;31206:6;31202:15;31195:30;31010:222;:::o;31238:114::-;;:::o;31358:247::-;31498:34;31494:1;31486:6;31482:14;31475:58;31567:30;31562:2;31554:6;31550:15;31543:55;31358:247;:::o;31611:229::-;31751:34;31747:1;31739:6;31735:14;31728:58;31820:12;31815:2;31807:6;31803:15;31796:37;31611:229;:::o;31846:241::-;31986:34;31982:1;31974:6;31970:14;31963:58;32055:24;32050:2;32042:6;32038:15;32031:49;31846:241;:::o;32093:122::-;32166:24;32184:5;32166:24;:::i;:::-;32159:5;32156:35;32146:63;;32205:1;32202;32195:12;32146:63;32093:122;:::o;32221:116::-;32291:21;32306:5;32291:21;:::i;:::-;32284:5;32281:32;32271:60;;32327:1;32324;32317:12;32271:60;32221:116;:::o;32343:122::-;32416:24;32434:5;32416:24;:::i;:::-;32409:5;32406:35;32396:63;;32455:1;32452;32445:12;32396:63;32343:122;:::o
Swarm Source
ipfs://b31142a7657d23e936c426f36463a1e67caf2e6436c137d1054a149a602537c9
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.