Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x2caa71c7a14ed5c2d10641cb9143ff24e656981c6902771709bef2198e58e763 | Burn | 27318574 | 524 days 16 hrs ago | 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e | IN | 0xd6afbb6ee1b9ab0bd405714a8b231bc2f2345df4 | 0 MATIC | 0.001905895235 | |
0xc30aa689bfea6f0969cc6ee4cb766066e7622fe6262dab88c3121ba801e88af0 | Unstake Batch Li... | 27318471 | 524 days 16 hrs ago | 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e | IN | 0xd6afbb6ee1b9ab0bd405714a8b231bc2f2345df4 | 0 MATIC | 0.007755169656 | |
0x31cfb5526cc7dccbb203851501529c00af5aafb08ec1b06a2c416e686f1c899a | Stake Batch Lion... | 27136841 | 529 days 7 hrs ago | 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e | IN | 0xd6afbb6ee1b9ab0bd405714a8b231bc2f2345df4 | 0 MATIC | 0.010167790086 | |
0x12393d5de65d951eaba2fd28ad5a4f9dbd9d1319b5e53a0afda14016b073a76b | 0x60a06040 | 27123126 | 529 days 15 hrs ago | 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e | IN | Create: LionCubUtility | 0 MATIC | 0.102298054463 |
[ Download CSV Export ]
Contract Name:
LionCubUtility
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at PolygonScan.com on 2022-04-14 */ // SPDX-License-Identifier: MIT // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol // OpenZeppelin Contracts v4.4.0 (token/ERC721/utils/ERC721Holder.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC721Receiver} interface. * * Accepts all token transfers. * Make sure the contract is able to use its token with {IERC721-safeTransferFrom}, {IERC721-approve} or {IERC721-setApprovalForAll}. */ contract ERC721Holder is IERC721Receiver { /** * @dev See {IERC721Receiver-onERC721Received}. * * Always returns `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address, address, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC721Received.selector; } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.0 (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/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.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`, 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/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.0 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.0 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (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/AccessControl.sol // OpenZeppelin Contracts v4.4.0 (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: contracts/PSCUtility.sol pragma solidity ^0.8.2; contract LionCubUtility is ERC20, AccessControl, ERC721Holder { bytes32 public constant CONTRACT_ADMIN_ROLE = keccak256("CONTRACT_ADMIN_ROLE"); bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); address public collectionAddressLionCubNFT; address public collectionAddressNFTv2; uint256 public numberOfBlocksPerRewardUnit; uint256 public coinAmountPerRewardUnitLionCubNFT; uint256 public coinAmountPerRewardUnitNFTv2; uint256 public welcomeBonusAmountLionCubNFT; uint256 public welcomeBonusAmountNFTv2; uint256 public amountOfStakersLionCubNFT; uint256 public amountOfStakersNFTv2; uint256 public tokensStakedLionCubNFT; uint256 public tokensStakedNFTv2; uint256 immutable public contractCreationBlock; struct StakeInfo { uint256 stakedAtBlock; uint256 lastHarvestBlock; bool currentlyStaked; } /// owner => tokenId => StakeInfo mapping (address => mapping(uint256 => StakeInfo)) public stakeLogLionCubNFT; /// owner => tokenId => StakeInfo mapping (address => mapping(uint256 => StakeInfo)) public stakeLogNFTv2; /// owner => #NFTsStaked mapping (address => uint256) public tokensStakedByUserLionCubNFT; /// owner => #NFTsStaked mapping (address => uint256) public tokensStakedByUserNFTv2; /// tokenId => true/false (true if welcome bonus has been collected for a specific tokenId) mapping (uint256 => bool) public welcomeBonusCollectedLionCubNFT; /// tokenId => true/false (true if welcome bonus has been collected for a specific tokenId) mapping (uint256 => bool) public welcomeBonusCollectedNFTv2; /// owner => list of all tokenIds that the user has staked mapping (address => uint256[]) public stakePortfolioByUserLionCubNFT; /// owner => list of all tokenIds that the user has staked mapping (address => uint256[]) public stakePortfolioByUserNFTv2; /// tokenId => indexInStakePortfolio mapping(uint256 => uint256) public indexOfTokenIdInStakePortfolioLionCubNFT; /// tokenId => indexInStakePortfolio mapping(uint256 => uint256) public indexOfTokenIdInStakePortfolioNFTv2; event RewardsHarvestedLionCubNFT (address owner, uint256 amount); event NFTStakedLionCubNFT (address owner, uint256 tokenId); event NFTUnstakedLionCubNFT (address owner, uint256 tokenId); event RewardsHarvestedNFTv2 (address owner, uint256 amount); event NFTStakedNFTv2 (address owner, uint256 tokenId); event NFTUnstakedNFTv2 (address owner, uint256 tokenId); constructor(address owner, address _collectionAddressLionCubNFT, address _collectionAddressNFTv2) ERC20("LionCubUtility", "LCU") AccessControl(){ _mint(owner, 100000 * 10 ** 18); _setupRole(DEFAULT_ADMIN_ROLE, owner); _setupRole(CONTRACT_ADMIN_ROLE, owner); _setupRole(BURNER_ROLE, owner); _setupRole(MINTER_ROLE, owner); collectionAddressLionCubNFT = _collectionAddressLionCubNFT; collectionAddressNFTv2 = _collectionAddressNFTv2; contractCreationBlock = block.number; coinAmountPerRewardUnitLionCubNFT = 15 * 10 ** 18; // 5 ERC20 coins per rewardUnit, may be changed later on coinAmountPerRewardUnitNFTv2 = 15 * 10 ** 18; // 15 ERC20 coins per rewardUnit, may be changed later on numberOfBlocksPerRewardUnit = 29000; // 24 hours per reward unit , may be changed later on welcomeBonusAmountLionCubNFT = 300 * 10 ** 18; // 300 tokens welcome bonus, only paid once per tokenId welcomeBonusAmountNFTv2 = 600 * 10 ** 18; // 600 tokens welcome bonus, only paid once per tokenId } function stakedNFTSByUserLionCubNFT(address owner) external view returns (uint256[] memory){ return stakePortfolioByUserLionCubNFT[owner]; } function stakedNFTSByUserNFTv2(address owner) external view returns (uint256[] memory){ return stakePortfolioByUserNFTv2[owner]; } function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) { _mint(to, amount); } function burn(address from, uint256 amount) external onlyRole(BURNER_ROLE) { super._burn(from, amount); } function pendingRewardsLionCubNFT(address owner, uint256 tokenId) public view returns (uint256){ StakeInfo memory info = stakeLogLionCubNFT[owner][tokenId]; if(info.lastHarvestBlock < contractCreationBlock || info.currentlyStaked == false) { return 0; } uint256 blocksPassedSinceLastHarvest = block.number - info.lastHarvestBlock; if (blocksPassedSinceLastHarvest < numberOfBlocksPerRewardUnit * 2) { return 0; } uint256 rewardAmount = blocksPassedSinceLastHarvest / numberOfBlocksPerRewardUnit - 1; return rewardAmount * coinAmountPerRewardUnitLionCubNFT; } function pendingRewardsNFTv2(address owner, uint256 tokenId) public view returns (uint256){ StakeInfo memory info = stakeLogNFTv2[owner][tokenId]; if(info.lastHarvestBlock < contractCreationBlock || info.currentlyStaked == false) { return 0; } uint256 blocksPassedSinceLastHarvest = block.number - info.lastHarvestBlock; if (blocksPassedSinceLastHarvest < numberOfBlocksPerRewardUnit * 2) { return 0; } uint256 rewardAmount = blocksPassedSinceLastHarvest / numberOfBlocksPerRewardUnit - 1; return rewardAmount * coinAmountPerRewardUnitNFTv2; } function stakeLionCubNFT(uint256 tokenId) public { IERC721(collectionAddressLionCubNFT).safeTransferFrom(_msgSender(), address(this), tokenId); require(IERC721(collectionAddressLionCubNFT).ownerOf(tokenId) == address(this), "PSCUtility: Error while transferring token"); StakeInfo storage info = stakeLogLionCubNFT[_msgSender()][tokenId]; info.stakedAtBlock = block.number; info.lastHarvestBlock = block.number; info.currentlyStaked = true; if(tokensStakedByUserLionCubNFT[_msgSender()] == 0){ amountOfStakersLionCubNFT += 1; } tokensStakedByUserLionCubNFT[_msgSender()] += 1; tokensStakedLionCubNFT += 1; stakePortfolioByUserLionCubNFT[_msgSender()].push(tokenId); uint256 indexOfNewElement = stakePortfolioByUserLionCubNFT[_msgSender()].length - 1; indexOfTokenIdInStakePortfolioLionCubNFT[tokenId] = indexOfNewElement; if(!welcomeBonusCollectedLionCubNFT[tokenId]) { _mint(_msgSender(), welcomeBonusAmountLionCubNFT); welcomeBonusCollectedLionCubNFT[tokenId] = true; } emit NFTStakedLionCubNFT(_msgSender(), tokenId); } function stakeNFTv2(uint256 tokenId) public { IERC721(collectionAddressNFTv2).safeTransferFrom(_msgSender(), address(this), tokenId); require(IERC721(collectionAddressNFTv2).ownerOf(tokenId) == address(this), "PSCUtility: Error while transferring token"); StakeInfo storage info = stakeLogNFTv2[_msgSender()][tokenId]; info.stakedAtBlock = block.number; info.lastHarvestBlock = block.number; info.currentlyStaked = true; if(tokensStakedByUserNFTv2[_msgSender()] == 0){ amountOfStakersNFTv2 += 1; } tokensStakedByUserNFTv2[_msgSender()] += 1; tokensStakedNFTv2 += 1; stakePortfolioByUserNFTv2[_msgSender()].push(tokenId); uint256 indexOfNewElement = stakePortfolioByUserNFTv2[_msgSender()].length - 1; indexOfTokenIdInStakePortfolioNFTv2[tokenId] = indexOfNewElement; if(!welcomeBonusCollectedNFTv2[tokenId]) { _mint(_msgSender(), welcomeBonusAmountNFTv2); welcomeBonusCollectedNFTv2[tokenId] = true; } emit NFTStakedNFTv2(_msgSender(), tokenId); } function stakeBatchLionCubNFT(uint256[] memory tokenIds) external { for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } stakeLionCubNFT(tokenIds[currentId]); } } function stakeBatchNFTv2(uint256[] memory tokenIds) external { for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } stakeNFTv2(tokenIds[currentId]); } } function unstakeBatchLionCubNFT(uint256[] memory tokenIds) external { for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } unstakeLionCubNFT(tokenIds[currentId]); } } function unstakeBatchNFTv2(uint256[] memory tokenIds) external { for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } unstakeNFTv2(tokenIds[currentId]); } } function unstakeLionCubNFT(uint256 tokenId) public { if(pendingRewardsLionCubNFT(_msgSender(), tokenId) > 0){ harvestLionCubNFT(tokenId); } StakeInfo storage info = stakeLogLionCubNFT[_msgSender()][tokenId]; info.currentlyStaked = true; IERC721(collectionAddressLionCubNFT).safeTransferFrom(address(this), _msgSender(), tokenId); require(IERC721(collectionAddressLionCubNFT).ownerOf(tokenId) == _msgSender(), "PSCUtility: Error while transferring token"); if(tokensStakedByUserLionCubNFT[_msgSender()] == 1){ amountOfStakersLionCubNFT -= 1; } tokensStakedByUserLionCubNFT[_msgSender()] -= 1; tokensStakedLionCubNFT -= 1; stakePortfolioByUserLionCubNFT[_msgSender()][indexOfTokenIdInStakePortfolioLionCubNFT[tokenId]] = 0; emit NFTUnstakedLionCubNFT(_msgSender(), tokenId); } function unstakeNFTv2(uint256 tokenId) public { if(pendingRewardsNFTv2(_msgSender(), tokenId) > 0){ harvestNFTv2(tokenId); } StakeInfo storage info = stakeLogNFTv2[_msgSender()][tokenId]; info.currentlyStaked = true; IERC721(collectionAddressNFTv2).safeTransferFrom(address(this), _msgSender(), tokenId); require(IERC721(collectionAddressNFTv2).ownerOf(tokenId) == _msgSender(), "PSCUtility: Error while transferring token"); if(tokensStakedByUserNFTv2[_msgSender()] == 1){ amountOfStakersNFTv2 -= 1; } tokensStakedByUserNFTv2[_msgSender()] -= 1; tokensStakedNFTv2 -= 1; stakePortfolioByUserNFTv2[_msgSender()][indexOfTokenIdInStakePortfolioNFTv2[tokenId]] = 0; emit NFTUnstakedNFTv2(_msgSender(), tokenId); } function harvestLionCubNFT(uint256 tokenId) public { StakeInfo storage info = stakeLogLionCubNFT[_msgSender()][tokenId]; uint256 rewardAmountInERC20Tokens = pendingRewardsLionCubNFT(_msgSender(), tokenId); if(rewardAmountInERC20Tokens > 0) { info.lastHarvestBlock = block.number; _mint(_msgSender(), rewardAmountInERC20Tokens); emit RewardsHarvestedLionCubNFT(_msgSender(), rewardAmountInERC20Tokens); } } function harvestNFTv2(uint256 tokenId) public { StakeInfo storage info = stakeLogNFTv2[_msgSender()][tokenId]; uint256 rewardAmountInERC20Tokens = pendingRewardsNFTv2(_msgSender(), tokenId); if(rewardAmountInERC20Tokens > 0) { info.lastHarvestBlock = block.number; _mint(_msgSender(), rewardAmountInERC20Tokens); emit RewardsHarvestedNFTv2(_msgSender(), rewardAmountInERC20Tokens); } } function harvestBatchLionCubNFT(address user) external { uint256[] memory tokenIds = stakePortfolioByUserLionCubNFT[user]; for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } harvestLionCubNFT(tokenIds[currentId]); } } function harvestBatchNFTv2(address user) external { uint256[] memory tokenIds = stakePortfolioByUserNFTv2[user]; for(uint currentId = 0; currentId < tokenIds.length; currentId++) { if(tokenIds[currentId] == 0) { continue; } harvestNFTv2(tokenIds[currentId]); } } // ADMIN / SETTER FUNCTIONS function setNumberOfBlocksPerRewardUnit(uint256 numberOfBlocks) external onlyRole(CONTRACT_ADMIN_ROLE){ numberOfBlocksPerRewardUnit = numberOfBlocks; } // parameter value must be supplied with 18 zeros..... // e.g.: 3 token = setCoinAmountPerRewardUnit(3000000000000000000) function setCoinAmountPerRewardUnitLionCubNFT(uint256 coinAmount) external onlyRole(CONTRACT_ADMIN_ROLE){ coinAmountPerRewardUnitLionCubNFT = coinAmount; } function setCoinAmountPerRewardUnitNFTv2(uint256 coinAmount) external onlyRole(CONTRACT_ADMIN_ROLE){ coinAmountPerRewardUnitNFTv2 = coinAmount; } // same as setCoinAmountPerRewardUnit() function setWelcomeBonusAmountLionCubNFT(uint256 coinAmount) external onlyRole(CONTRACT_ADMIN_ROLE){ welcomeBonusAmountLionCubNFT = coinAmount; } function setWelcomeBonusAmountNFTv2(uint256 coinAmount) external onlyRole(CONTRACT_ADMIN_ROLE){ welcomeBonusAmountNFTv2 = coinAmount; } function setCollectionAddressLionCubNFT(address newAddress) external onlyRole(CONTRACT_ADMIN_ROLE){ require (newAddress != address(0), "VIBE: update to zero address not possible"); collectionAddressLionCubNFT = newAddress; } function setCollectionAddressNFTv2(address newAddress) external onlyRole(CONTRACT_ADMIN_ROLE){ require (newAddress != address(0), "VIBE: update to zero address not possible"); collectionAddressNFTv2 = newAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"_collectionAddressLionCubNFT","type":"address"},{"internalType":"address","name":"_collectionAddressNFTv2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTStakedLionCubNFT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTStakedNFTv2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTUnstakedLionCubNFT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTUnstakedNFTv2","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsHarvestedLionCubNFT","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsHarvestedNFTv2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountOfStakersLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountOfStakersNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coinAmountPerRewardUnitLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinAmountPerRewardUnitNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionAddressLionCubNFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionAddressNFTv2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractCreationBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"harvestBatchLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"harvestBatchNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"harvestLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"harvestNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexOfTokenIdInStakePortfolioLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexOfTokenIdInStakePortfolioNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfBlocksPerRewardUnit","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":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"pendingRewardsLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"pendingRewardsNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"setCoinAmountPerRewardUnitLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"setCoinAmountPerRewardUnitNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setCollectionAddressLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setCollectionAddressNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numberOfBlocks","type":"uint256"}],"name":"setNumberOfBlocksPerRewardUnit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"setWelcomeBonusAmountLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coinAmount","type":"uint256"}],"name":"setWelcomeBonusAmountNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeBatchLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"stakeBatchNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakeLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLogLionCubNFT","outputs":[{"internalType":"uint256","name":"stakedAtBlock","type":"uint256"},{"internalType":"uint256","name":"lastHarvestBlock","type":"uint256"},{"internalType":"bool","name":"currentlyStaked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakeLogNFTv2","outputs":[{"internalType":"uint256","name":"stakedAtBlock","type":"uint256"},{"internalType":"uint256","name":"lastHarvestBlock","type":"uint256"},{"internalType":"bool","name":"currentlyStaked","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"stakeNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakePortfolioByUserLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakePortfolioByUserNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"stakedNFTSByUserLionCubNFT","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"stakedNFTSByUserNFTv2","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensStakedByUserLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokensStakedByUserNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensStakedLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensStakedNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeBatchLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"unstakeBatchNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstakeLionCubNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"unstakeNFTv2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"welcomeBonusAmountLionCubNFT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"welcomeBonusAmountNFTv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"welcomeBonusCollectedLionCubNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"welcomeBonusCollectedNFTv2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040516200333e3803806200333e833981016040819052620000349162000413565b6040518060400160405280600e81526020016d4c696f6e4375625574696c69747960901b815250604051806040016040528060038152602001624c435560e81b81525081600390805190602001906200008f92919062000350565b508051620000a590600490602084019062000350565b505050620000c48369152d02c7e14af6800000620001bd60201b60201c565b620000d1600084620002a6565b620000fd7f2ce8d04a9c35987429af538825cd2438cc5c5bb5dc427955f84daaa3ea10501684620002a6565b620001297f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84884620002a6565b620001557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684620002a6565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055504360805267d02ab486cedc00006009819055600a55617148600855681043561a8829300000600b55682086ac351052600000600c55620004c1565b6001600160a01b038216620002185760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200022c91906200045d565b90915550506001600160a01b038216600090815260208190526040812080548392906200025b9084906200045d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b620002a2828260008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002a25760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200030c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b8280546200035e9062000484565b90600052602060002090601f016020900481019282620003825760008555620003cd565b82601f106200039d57805160ff1916838001178555620003cd565b82800160010185558215620003cd579182015b82811115620003cd578251825591602001919060010190620003b0565b50620003db929150620003df565b5090565b5b80821115620003db5760008155600101620003e0565b80516001600160a01b03811681146200040e57600080fd5b919050565b6000806000606084860312156200042957600080fd5b6200043484620003f6565b92506200044460208501620003f6565b91506200045460408501620003f6565b90509250925092565b600082198211156200047f57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200049957607f821691505b60208210811415620004bb57634e487b7160e01b600052602260045260246000fd5b50919050565b608051612e53620004eb600039600081816104df01528181610f410152611dbc0152612e536000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80637fa3d7bf11610220578063aaa0691b11610130578063d547741f116100b8578063ed6236be11610087578063ed6236be14610a0c578063eeebfa8014610a1f578063f6b917f314610a32578063f6c9272814610a45578063ff5914bb14610a5857600080fd5b8063d547741f146109a4578063d72b4b38146109b7578063dd62ed3e146109c0578063e9896398146109f957600080fd5b8063c797190c116100ff578063c797190c1461092b578063c7a9462514610934578063cc98230814610954578063cf69e7501461095d578063d53913931461097d57600080fd5b8063aaa0691b146108e9578063bc91121b146108fc578063c1e32a3b1461090f578063c2aaa7391461091857600080fd5b806395d89b41116101b3578063a457c2d711610182578063a457c2d71461087d578063a60bd00314610890578063a90187ec146108a3578063a9059cbb146108c3578063aa255363146108d657600080fd5b806395d89b411461084757806397cfc7f61461084f5780639dc29fac14610862578063a217fddf1461087557600080fd5b80638bbd3941116101ef5780638bbd3941146107e057806390621ccd146107e957806391d1485414610814578063923d4c111461082757600080fd5b80637fa3d7bf14610787578063805b55e6146107a7578063827e60b1146107ba57806383db5a04146107cd57600080fd5b8063312dea401161031b5780634c65e259116102ae578063649829071161027d57806364982907146106f25780636c8a66ed1461070557806370a082311461070e57806374a65793146107375780637ae1b20f1461074a57600080fd5b80634c65e259146106965780634dde6a24146106a95780635318f1c2146106bc578063588c3353146106df57600080fd5b806336568abe116102ea57806336568abe1461064a578063395093511461065d5780633a165b601461067057806340c10f191461068357600080fd5b8063312dea40146105fc578063313ce567146106055780633225dcc11461061457806334b4ded11461063757600080fd5b80631ac2bd9e1161039e5780632398ae8a1161036d5780632398ae8a1461053257806323b872dd1461058c578063248a9ca31461059f578063282c51f3146105c25780632f2ff15d146105e957600080fd5b80631ac2bd9e146104da5780631c77bd56146105015780631da0331214610514578063229080d21461052957600080fd5b8063095ea7b3116103da578063095ea7b31461047357806310354bd214610486578063150b7a021461049b57806318160ddd146104d257600080fd5b806301ffc9a71461040c57806306cc51451461043457806306fdde03146104555780630821dee51461046a575b600080fd5b61041f61041a366004612a9c565b610a6b565b60405190151581526020015b60405180910390f35b610447610442366004612985565b610aa2565b60405190815260200161042b565b61045d610ad3565b60405161042b9190612ba3565b610447600e5481565b61041f610481366004612985565b610b65565b610499610494366004612a5e565b610b7b565b005b6104b96104a93660046128c1565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161042b565b600254610447565b6104477f000000000000000000000000000000000000000000000000000000000000000081565b61049961050f366004612a5e565b610b9a565b610447600080516020612dfe83398151915281565b610447600d5481565b61056f610540366004612985565b601160209081526000928352604080842090915290825290208054600182015460029092015490919060ff1683565b60408051938452602084019290925215159082015260600161042b565b61041f61059a366004612880565b610bb9565b6104476105ad366004612a5e565b60009081526005602052604090206001015490565b6104477f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6104996105f7366004612a77565b610c68565b61044760095481565b6040516012815260200161042b565b61041f610622366004612a5e565b60156020526000908152604090205460ff1681565b61049961064536600461280d565b610c93565b610499610658366004612a77565b610cf5565b61041f61066b366004612985565b610d73565b61049961067e366004612a5e565b610daf565b610499610691366004612985565b610dce565b6104996106a4366004612a5e565b610e03565b6104996106b73660046129b1565b610e8b565b61041f6106ca366004612a5e565b60166020526000908152604090205460ff1681565b6104476106ed366004612985565b610ef2565b610499610700366004612a5e565b610fe8565b610447600c5481565b61044761071c36600461280d565b6001600160a01b031660009081526020819052604090205490565b610499610745366004612a5e565b61124e565b61056f610758366004612985565b601260209081526000928352604080842090915290825290208054600182015460029092015490919060ff1683565b610447610795366004612a5e565b601a6020526000908152604090205481565b6104996107b53660046129b1565b61149a565b6104996107c836600461280d565b611501565b6104996107db366004612a5e565b6115cf565b610447600a5481565b6006546107fc906001600160a01b031681565b6040516001600160a01b03909116815260200161042b565b61041f610822366004612a77565b6115ee565b61044761083536600461280d565b60136020526000908152604090205481565b61045d611619565b61049961085d36600461280d565b611628565b610499610870366004612985565b61168a565b610447600081565b61041f61088b366004612985565b6116bf565b6007546107fc906001600160a01b031681565b6104476108b1366004612a5e565b60196020526000908152604090205481565b61041f6108d1366004612985565b611758565b6104996108e4366004612a5e565b611765565b6104996108f7366004612a5e565b6117c8565b61044761090a366004612985565b611a11565b610447600b5481565b6104996109263660046129b1565b611a2d565b61044760105481565b61044761094236600461280d565b60146020526000908152604090205481565b610447600f5481565b61097061096b36600461280d565b611a94565b60405161042b9190612b5f565b6104477f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6104996109b2366004612a77565b611b00565b61044760085481565b6104476109ce366004612847565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610499610a07366004612a5e565b611b26565b610499610a1a366004612a5e565b611d4e565b610447610a2d366004612985565b611d6d565b610499610a403660046129b1565b611e59565b610499610a5336600461280d565b611ec0565b610970610a6636600461280d565b611f8e565b60006001600160e01b03198216637965db0b60e01b1480610a9c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60176020528160005260406000208181548110610abe57600080fd5b90600052602060002001600091509150505481565b606060038054610ae290612d4d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0e90612d4d565b8015610b5b5780601f10610b3057610100808354040283529160200191610b5b565b820191906000526020600020905b815481529060010190602001808311610b3e57829003601f168201915b5050505050905090565b6000610b72338484611ff8565b50600192915050565b600080516020612dfe833981519152610b94813361211c565b50600b55565b600080516020612dfe833981519152610bb3813361211c565b50600955565b6000610bc6848484612180565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c505760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610c5d8533858403611ff8565b506001949350505050565b600082815260056020526040902060010154610c84813361211c565b610c8e8383612350565b505050565b600080516020612dfe833981519152610cac813361211c565b6001600160a01b038216610cd25760405162461bcd60e51b8152600401610c4790612bd6565b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163314610d655760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c47565b610d6f82826123d6565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b72918590610daa908690612c9a565b611ff8565b600080516020612dfe833981519152610dc8813361211c565b50600c55565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610df9813361211c565b610c8e838361243d565b336000818152601260209081526040808320858452909152812091610e289084610ef2565b90508015610c8e57436001830155610e41335b8261243d565b7fc62aa71075d4c9ea2a293ecf4a12696cdba10daaf37ceb063c88998afd864bb4335b604080516001600160a01b03909216825260208201849052015b60405180910390a1505050565b60005b8151811015610d6f57818181518110610ea957610ea9612db9565b602002602001015160001415610ebe57610ee0565b610ee0828281518110610ed357610ed3612db9565b6020026020010151610fe8565b80610eea81612d88565b915050610e8e565b6001600160a01b03821660009081526012602090815260408083208484528252808320815160608101835281548152600182015493810184905260029091015460ff16151591810191909152907f00000000000000000000000000000000000000000000000000000000000000001180610f6e57506040810151155b15610f7d576000915050610a9c565b6000816020015143610f8f9190612cf3565b90506008546002610fa09190612cd4565b811015610fb257600092505050610a9c565b6000600160085483610fc49190612cb2565b610fce9190612cf3565b9050600a5481610fde9190612cd4565b9695505050505050565b6006546001600160a01b03166342842e0e3330846040518463ffffffff1660e01b815260040161101a93929190612b3b565b600060405180830381600087803b15801561103457600080fd5b505af1158015611048573d6000803e3d6000fd5b50506006546040516331a9108f60e11b8152600481018590523093506001600160a01b039091169150636352211e9060240160206040518083038186803b15801561109257600080fd5b505afa1580156110a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ca919061282a565b6001600160a01b0316146110f05760405162461bcd60e51b8152600401610c4790612c1f565b33600081815260116020908152604080832085845282528083204380825560018083019190915560028201805460ff19169091179055938352601390915290205461114e576001600d60008282546111489190612c9a565b90915550505b33600090815260136020526040812080546001929061116e908490612c9a565b925050819055506001600f60008282546111889190612c9a565b9091555050336000818152601760209081526040822080546001808201835582855292842001869055928252915490916111c191612cf3565b6000848152601960209081526040808320849055601590915290205490915060ff1661120d576111f333600b5461243d565b6000838152601560205260409020805460ff191660011790555b7f5ea9e43a43046e4da8ec8ffaeae2225ca5ca2ab2514eed50d4a84d3ddb5b1c0e335b604080516001600160a01b0390921682526020820186905201610e7e565b6007546001600160a01b03166342842e0e3330846040518463ffffffff1660e01b815260040161128093929190612b3b565b600060405180830381600087803b15801561129a57600080fd5b505af11580156112ae573d6000803e3d6000fd5b50506007546040516331a9108f60e11b8152600481018590523093506001600160a01b039091169150636352211e9060240160206040518083038186803b1580156112f857600080fd5b505afa15801561130c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611330919061282a565b6001600160a01b0316146113565760405162461bcd60e51b8152600401610c4790612c1f565b33600081815260126020908152604080832085845282528083204380825560018083019190915560028201805460ff1916909117905593835260149091529020546113b4576001600e60008282546113ae9190612c9a565b90915550505b3360009081526014602052604081208054600192906113d4908490612c9a565b925050819055506001601060008282546113ee9190612c9a565b90915550503360008181526018602090815260408220805460018082018355828552928420018690559282529154909161142791612cf3565b6000848152601a60209081526040808320849055601690915290205490915060ff166114735761145933600c5461243d565b6000838152601660205260409020805460ff191660011790555b7fd4d04f7de89b31a01c06b313a552fe356ad21c99270bf22d3ea7182da8a55d3e33611230565b60005b8151811015610d6f578181815181106114b8576114b8612db9565b6020026020010151600014156114cd576114ef565b6114ef8282815181106114e2576114e2612db9565b6020026020010151611b26565b806114f981612d88565b91505061149d565b6001600160a01b03811660009081526018602090815260408083208054825181850281018501909352808352919290919083018282801561156157602002820191906000526020600020905b81548152602001906001019080831161154d575b5050505050905060005b8151811015610c8e5781818151811061158657611586612db9565b60200260200101516000141561159b576115bd565b6115bd8282815181106115b0576115b0612db9565b6020026020010151610e03565b806115c781612d88565b91505061156b565b600080516020612dfe8339815191526115e8813361211c565b50600a55565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060048054610ae290612d4d565b600080516020612dfe833981519152611641813361211c565b6001600160a01b0382166116675760405162461bcd60e51b8152600401610c4790612bd6565b50600680546001600160a01b0319166001600160a01b0392909216919091179055565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486116b5813361211c565b610c8e838361251c565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156117415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c47565b61174e3385858403611ff8565b5060019392505050565b6000610b72338484612180565b33600081815260116020908152604080832085845290915281209161178a9084611d6d565b90508015610c8e574360018301556117a133610e3b565b7fa92a16f40a914c6729147b846acb875b1635cf1f14e197dc9696e9673a81a3e333610e64565b60006117d43383610ef2565b11156117e3576117e381610e03565b3360008181526012602090815260408083208584529091529081902060028101805460ff191660011790556007549151632142170760e11b815290926001600160a01b03909216916342842e0e916118419130918790600401612b3b565b600060405180830381600087803b15801561185b57600080fd5b505af115801561186f573d6000803e3d6000fd5b5050505061187a3390565b6007546040516331a9108f60e11b8152600481018590526001600160a01b039283169290911690636352211e9060240160206040518083038186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa919061282a565b6001600160a01b0316146119205760405162461bcd60e51b8152600401610c4790612c1f565b3360009081526014602052604090205460011415611951576001600e600082825461194b9190612cf3565b90915550505b336000908152601460205260408120805460019290611971908490612cf3565b9250508190555060016010600082825461198b9190612cf3565b9091555050336000908152601860209081526040808320858452601a909252822054815481106119bd576119bd612db9565b6000918252602090912001557fdc546340bf27064c19daabcafed9a74610e11889eb3f87d0454518a2dbc87ca5335b604080516001600160a01b039092168252602082018590520160405180910390a15050565b60186020528160005260406000208181548110610abe57600080fd5b60005b8151811015610d6f57818181518110611a4b57611a4b612db9565b602002602001015160001415611a6057611a82565b611a82828281518110611a7557611a75612db9565b602002602001015161124e565b80611a8c81612d88565b915050611a30565b6001600160a01b038116600090815260186020908152604091829020805483518184028101840190945280845260609392830182828015611af457602002820191906000526020600020905b815481526020019060010190808311611ae0575b50505050509050919050565b600082815260056020526040902060010154611b1c813361211c565b610c8e83836123d6565b6000611b323383611d6d565b1115611b4157611b4181611765565b3360008181526011602090815260408083208584529091529081902060028101805460ff191660011790556006549151632142170760e11b815290926001600160a01b03909216916342842e0e91611b9f9130918790600401612b3b565b600060405180830381600087803b158015611bb957600080fd5b505af1158015611bcd573d6000803e3d6000fd5b50505050611bd83390565b6006546040516331a9108f60e11b8152600481018590526001600160a01b039283169290911690636352211e9060240160206040518083038186803b158015611c2057600080fd5b505afa158015611c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c58919061282a565b6001600160a01b031614611c7e5760405162461bcd60e51b8152600401610c4790612c1f565b3360009081526013602052604090205460011415611caf576001600d6000828254611ca99190612cf3565b90915550505b336000908152601360205260408120805460019290611ccf908490612cf3565b925050819055506001600f6000828254611ce99190612cf3565b9091555050336000908152601760209081526040808320858452601990925282205481548110611d1b57611d1b612db9565b6000918252602090912001557ff533db774901faa7b34f31654de1c45dcc5b366d1dbc6efe77b1f684757055bb336119ec565b600080516020612dfe833981519152611d67813361211c565b50600855565b6001600160a01b03821660009081526011602090815260408083208484528252808320815160608101835281548152600182015493810184905260029091015460ff16151591810191909152907f00000000000000000000000000000000000000000000000000000000000000001180611de957506040810151155b15611df8576000915050610a9c565b6000816020015143611e0a9190612cf3565b90506008546002611e1b9190612cd4565b811015611e2d57600092505050610a9c565b6000600160085483611e3f9190612cb2565b611e499190612cf3565b905060095481610fde9190612cd4565b60005b8151811015610d6f57818181518110611e7757611e77612db9565b602002602001015160001415611e8c57611eae565b611eae828281518110611ea157611ea1612db9565b60200260200101516117c8565b80611eb881612d88565b915050611e5c565b6001600160a01b038116600090815260176020908152604080832080548251818502810185019093528083529192909190830182828015611f2057602002820191906000526020600020905b815481526020019060010190808311611f0c575b5050505050905060005b8151811015610c8e57818181518110611f4557611f45612db9565b602002602001015160001415611f5a57611f7c565b611f7c828281518110611f6f57611f6f612db9565b6020026020010151611765565b80611f8681612d88565b915050611f2a565b6001600160a01b038116600090815260176020908152604091829020805483518184028101840190945280845260609392830182828015611af45760200282019190600052602060002090815481526020019060010190808311611ae05750505050509050919050565b6001600160a01b03831661205a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c47565b6001600160a01b0382166120bb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c47565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b61212682826115ee565b610d6f5761213e816001600160a01b0316601461266a565b61214983602061266a565b60405160200161215a929190612ac6565b60408051601f198184030181529082905262461bcd60e51b8252610c4791600401612ba3565b6001600160a01b0383166121e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c47565b6001600160a01b0382166122465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c47565b6001600160a01b038316600090815260208190526040902054818110156122be5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c47565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906122f5908490612c9a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234191815260200190565b60405180910390a35b50505050565b61235a82826115ee565b610d6f5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123923390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6123e082826115ee565b15610d6f5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166124935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c47565b80600260008282546124a59190612c9a565b90915550506001600160a01b038216600090815260208190526040812080548392906124d2908490612c9a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661257c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c47565b6001600160a01b038216600090815260208190526040902054818110156125f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c47565b6001600160a01b038316600090815260208190526040812083830390556002805484929061261f908490612cf3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60606000612679836002612cd4565b612684906002612c9a565b67ffffffffffffffff81111561269c5761269c612dcf565b6040519080825280601f01601f1916602001820160405280156126c6576020820181803683370190505b509050600360fc1b816000815181106126e1576126e1612db9565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061271057612710612db9565b60200101906001600160f81b031916908160001a9053506000612734846002612cd4565b61273f906001612c9a565b90505b60018111156127b7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061277357612773612db9565b1a60f81b82828151811061278957612789612db9565b60200101906001600160f81b031916908160001a90535060049490941c936127b081612d36565b9050612742565b5083156128065760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c47565b9392505050565b60006020828403121561281f57600080fd5b813561280681612de5565b60006020828403121561283c57600080fd5b815161280681612de5565b6000806040838503121561285a57600080fd5b823561286581612de5565b9150602083013561287581612de5565b809150509250929050565b60008060006060848603121561289557600080fd5b83356128a081612de5565b925060208401356128b081612de5565b929592945050506040919091013590565b600080600080608085870312156128d757600080fd5b84356128e281612de5565b93506020858101356128f381612de5565b935060408601359250606086013567ffffffffffffffff8082111561291757600080fd5b818801915088601f83011261292b57600080fd5b81358181111561293d5761293d612dcf565b61294f601f8201601f19168501612c69565b9150808252898482850101111561296557600080fd5b808484018584013760008482840101525080935050505092959194509250565b6000806040838503121561299857600080fd5b82356129a381612de5565b946020939093013593505050565b600060208083850312156129c457600080fd5b823567ffffffffffffffff808211156129dc57600080fd5b818501915085601f8301126129f057600080fd5b813581811115612a0257612a02612dcf565b8060051b9150612a13848301612c69565b8181528481019084860184860187018a1015612a2e57600080fd5b600095505b83861015612a51578035835260019590950194918601918601612a33565b5098975050505050505050565b600060208284031215612a7057600080fd5b5035919050565b60008060408385031215612a8a57600080fd5b82359150602083013561287581612de5565b600060208284031215612aae57600080fd5b81356001600160e01b03198116811461280657600080fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612afe816017850160208801612d0a565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612b2f816028840160208801612d0a565b01602801949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612b9757835183529284019291840191600101612b7b565b50909695505050505050565b6020815260008251806020840152612bc2816040850160208701612d0a565b601f01601f19169190910160400192915050565b60208082526029908201527f564942453a2075706461746520746f207a65726f2061646472657373206e6f7460408201526820706f737369626c6560b81b606082015260800190565b6020808252602a908201527f5053435574696c6974793a204572726f72207768696c65207472616e736665726040820152693934b733903a37b5b2b760b11b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612c9257612c92612dcf565b604052919050565b60008219821115612cad57612cad612da3565b500190565b600082612ccf57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612cee57612cee612da3565b500290565b600082821015612d0557612d05612da3565b500390565b60005b83811015612d25578181015183820152602001612d0d565b8381111561234a5750506000910152565b600081612d4557612d45612da3565b506000190190565b600181811c90821680612d6157607f821691505b60208210811415612d8257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d9c57612d9c612da3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612dfa57600080fd5b5056fe2ce8d04a9c35987429af538825cd2438cc5c5bb5dc427955f84daaa3ea105016a26469706673582212208ed33f4b6fa522b9fd1a57ecbb761b0f9bbb01a70bcf9d8a45c59c894044336964736f6c63430008070033000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e0000000000000000000000008b257e399e9b254d6a0ca17240194644febca0a0000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e0000000000000000000000008b257e399e9b254d6a0ca17240194644febca0a0000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e
-----Decoded View---------------
Arg [0] : owner (address): 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e
Arg [1] : _collectionAddressLionCubNFT (address): 0x8b257e399e9b254d6a0ca17240194644febca0a0
Arg [2] : _collectionAddressNFTv2 (address): 0xfe65593a05b0a28a0fede6efa127370a7cc73b8e
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e
Arg [1] : 0000000000000000000000008b257e399e9b254d6a0ca17240194644febca0a0
Arg [2] : 000000000000000000000000fe65593a05b0a28a0fede6efa127370a7cc73b8e
Deployed ByteCode Sourcemap
38086:14385:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17334:204;;;;;;:::i;:::-;;:::i;:::-;;;7212:14:1;;7205:22;7187:41;;7175:2;7160:18;17334:204:0;;;;;;;;39945:68;;;;;;:::i;:::-;;:::i;:::-;;;7385:25:1;;;7373:2;7358:18;39945:68:0;7239:177:1;28057:100:0;;;:::i;:::-;;;;;;;:::i;38777:35::-;;;;;;30224:169;;;;;;:::i;:::-;;:::i;51652:159::-;;;;;;:::i;:::-;;:::i;:::-;;1678:207;;;;;;:::i;:::-;-1:-1:-1;;;1678:207:0;;;;;;;;;;-1:-1:-1;;;;;;7583:33:1;;;7565:52;;7553:2;7538:18;1678:207:0;7421:202:1;29177:108:0;29265:12;;29177:108;;38906:46;;;;;51263:169;;;;;;:::i;:::-;;:::i;38155:78::-;;-1:-1:-1;;;;;;;;;;;38155:78:0;;38730:40;;;;;;39129:76;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13997:25:1;;;14053:2;14038:18;;14031:34;;;;14108:14;14101:22;14081:18;;;14074:50;13985:2;13970:18;39129:76:0;13801:329:1;30875:492:0;;;;;;:::i;:::-;;:::i;18745:123::-;;;;;;:::i;:::-;18811:7;18838:12;;;:6;:12;;;;;:22;;;;18745:123;38240:62;;38278:24;38240:62;;19130:147;;;;;;:::i;:::-;;:::i;38526:48::-;;;;;;29019:93;;;29102:2;14277:36:1;;14265:2;14250:18;29019:93:0;14135:184:1;39639:64:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;52231:237;;;;;;:::i;:::-;;:::i;20178:218::-;;;;;;:::i;:::-;;:::i;31776:215::-;;;;;;:::i;:::-;;:::i;51819:149::-;;;;;;:::i;:::-;;:::i;42231:107::-;;;;;;:::i;:::-;;:::i;49717:465::-;;;;;;:::i;:::-;;:::i;46201:299::-;;;;;;:::i;:::-;;:::i;39813:59::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;43150:650;;;;;;:::i;:::-;;:::i;43806:1225::-;;;;;;:::i;:::-;;:::i;38683:38::-;;;;;;29348:127;;;;;;:::i;:::-;-1:-1:-1;;;;;29449:18:0;29422:7;29449:18;;;;;;;;;;;;29348:127;45043:1150;;;;;;:::i;:::-;;:::i;39257:71::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40334:70;;;;;;:::i;:::-;;;;;;;;;;;;;;46805:303;;;;;;:::i;:::-;;:::i;50565:352::-;;;;;;:::i;:::-;;:::i;51440:159::-;;;;;;:::i;:::-;;:::i;38581:43::-;;;;;;38380:42;;;;;-1:-1:-1;;;;;38380:42:0;;;;;;-1:-1:-1;;;;;5707:32:1;;;5689:51;;5677:2;5662:18;38380:42:0;5543:203:1;17630:139:0;;;;;;:::i;:::-;;:::i;39367:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;28276:104;;;:::i;51976:247::-;;;;;;:::i;:::-;;:::i;42346:119::-;;;;;;:::i;:::-;;:::i;16721:49::-;;16766:4;16721:49;;32494:413;;;;;;:::i;:::-;;:::i;38429:37::-;;;;;-1:-1:-1;;;;;38429:37:0;;;40204:75;;;;;;:::i;:::-;;;;;;;;;;;;;;29688:175;;;;;;:::i;:::-;;:::i;49224:485::-;;;;;;:::i;:::-;;:::i;48355:861::-;;;;;;:::i;:::-;;:::i;40090:63::-;;;;;;:::i;:::-;;:::i;38633:43::-;;;;;;46508:289;;;;;;:::i;:::-;;:::i;38865:32::-;;;;;;39474:59;;;;;;:::i;:::-;;;;;;;;;;;;;;38821:37;;;;;;42079:144;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;38309:62::-;;38347:24;38309:62;;19522:149;;;;;;:::i;:::-;;:::i;38475:42::-;;;;;;29926:151;;;;;;:::i;:::-;-1:-1:-1;;;;;30042:18:0;;;30015:7;30042:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;29926:151;47421:926;;;;;;:::i;:::-;;:::i;50958:165::-;;;;;;:::i;:::-;;:::i;42473:665::-;;;;;;:::i;:::-;;:::i;47120:293::-;;;;;;:::i;:::-;;:::i;50190:367::-;;;;;;:::i;:::-;;:::i;41913:154::-;;;;;;:::i;:::-;;:::i;17334:204::-;17419:4;-1:-1:-1;;;;;;17443:47:0;;-1:-1:-1;;;17443:47:0;;:87;;-1:-1:-1;;;;;;;;;;8645:40:0;;;17494:36;17436:94;17334:204;-1:-1:-1;;17334:204:0:o;39945:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28057:100::-;28111:13;28144:5;28137:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28057:100;:::o;30224:169::-;30307:4;30324:39;14624:10;30347:7;30356:6;30324:8;:39::i;:::-;-1:-1:-1;30381:4:0;30224:169;;;;:::o;51652:159::-;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;51762:28:0::1;:41:::0;51652:159::o;51263:169::-;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;51378:33:0::1;:46:::0;51263:169::o;30875:492::-;31015:4;31032:36;31042:6;31050:9;31061:6;31032:9;:36::i;:::-;-1:-1:-1;;;;;31108:19:0;;31081:24;31108:19;;;:11;:19;;;;;;;;14624:10;31108:33;;;;;;;;31160:26;;;;31152:79;;;;-1:-1:-1;;;31152:79:0;;10196:2:1;31152:79:0;;;10178:21:1;10235:2;10215:18;;;10208:30;10274:34;10254:18;;;10247:62;-1:-1:-1;;;10325:18:1;;;10318:38;10373:19;;31152:79:0;;;;;;;;;31267:57;31276:6;14624:10;31317:6;31298:16;:25;31267:8;:57::i;:::-;-1:-1:-1;31355:4:0;;30875:492;-1:-1:-1;;;;30875:492:0:o;19130:147::-;18811:7;18838:12;;;:6;:12;;;;;:22;;;17212:30;17223:4;14624:10;17212;:30::i;:::-;19244:25:::1;19255:4;19261:7;19244:10;:25::i;:::-;19130:147:::0;;;:::o;52231:237::-;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;;;;;52344:24:0;::::1;52335:79;;;;-1:-1:-1::0;;;52335:79:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;52425:22:0::1;:35:::0;;-1:-1:-1;;;;;;52425:35:0::1;-1:-1:-1::0;;;;;52425:35:0;;;::::1;::::0;;;::::1;::::0;;52231:237::o;20178:218::-;-1:-1:-1;;;;;20274:23:0;;14624:10;20274:23;20266:83;;;;-1:-1:-1;;;20266:83:0;;13045:2:1;20266:83:0;;;13027:21:1;13084:2;13064:18;;;13057:30;13123:34;13103:18;;;13096:62;-1:-1:-1;;;13174:18:1;;;13167:45;13229:19;;20266:83:0;12843:411:1;20266:83:0;20362:26;20374:4;20380:7;20362:11;:26::i;:::-;20178:218;;:::o;31776:215::-;14624:10;31864:4;31913:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;31913:34:0;;;;;;;;;;31864:4;;31881:80;;31904:7;;31913:47;;31950:10;;31913:47;:::i;:::-;31881:8;:80::i;51819:149::-;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;51924:23:0::1;:36:::0;51819:149::o;42231:107::-;38347:24;17212:30;38347:24;14624:10;17212;:30::i;:::-;42313:17:::1;42319:2;42323:6;42313:5;:17::i;49717:465::-:0;14624:10;49774:22;49799:27;;;:13;:27;;;;;;;;:36;;;;;;;;;49882:42;;49799:36;49882:19;:42::i;:::-;49846:78;-1:-1:-1;49938:29:0;;49935:240;;50008:12;49984:21;;;:36;50035:46;14624:10;50041:12;50055:25;50035:5;:46::i;:::-;50101:62;14624:10;50123:12;50101:62;;;-1:-1:-1;;;;;6323:32:1;;;6305:51;;6387:2;6372:18;;6365:34;;;6278:18;50101:62:0;;;;;;;;49763:419;;49717:465;:::o;46201:299::-;46282:14;46278:215;46314:8;:15;46302:9;:27;46278:215;;;46362:8;46371:9;46362:19;;;;;;;;:::i;:::-;;;;;;;46385:1;46362:24;46359:72;;;46407:8;;46359:72;46445:36;46461:8;46470:9;46461:19;;;;;;;;:::i;:::-;;;;;;;46445:15;:36::i;:::-;46331:11;;;;:::i;:::-;;;;46278:215;;43150:650;-1:-1:-1;;;;;43275:20:0;;43232:7;43275:20;;;:13;:20;;;;;;;;:29;;;;;;;;43251:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43344:21;-1:-1:-1;43320:45:0;:78;;-1:-1:-1;43369:20:0;;;;:29;43320:78;43317:118;;;43422:1;43415:8;;;;;43317:118;43445:36;43499:4;:21;;;43484:12;:36;;;;:::i;:::-;43445:75;;43566:27;;43596:1;43566:31;;;;:::i;:::-;43535:28;:62;43531:103;;;43621:1;43614:8;;;;;;43531:103;43644:20;43728:1;43698:27;;43667:28;:58;;;;:::i;:::-;:62;;;;:::i;:::-;43644:85;;43762:28;;43747:12;:43;;;;:::i;:::-;43740:50;43150:650;-1:-1:-1;;;;;;43150:650:0:o;43806:1225::-;43874:27;;-1:-1:-1;;;;;43874:27:0;43866:53;14624:10;43942:4;43949:7;43866:91;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43984:27:0;;43976:53;;-1:-1:-1;;;43976:53:0;;;;;7385:25:1;;;44041:4:0;;-1:-1:-1;;;;;;43984:27:0;;;;-1:-1:-1;43976:44:0;;7358:18:1;;43976:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43976:70:0;;43968:138;;;;-1:-1:-1;;;43968:138:0;;;;;;;:::i;:::-;14624:10;44117:22;44142:32;;;:18;:32;;;;;;;;:41;;;;;;;;44215:12;44194:33;;;44238:21;;;;:36;;;;44285:20;;;:27;;-1:-1:-1;;44285:27:0;;;;;;44326:42;;;:28;:42;;;;;;44323:108;;44418:1;44389:25;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;44323:108:0;14624:10;44441:42;;;;:28;:42;;;;;:47;;44487:1;;44441:42;:47;;44487:1;;44441:47;:::i;:::-;;;;;;;;44525:1;44499:22;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;14624:10:0;44537:44;;;;:30;:44;;;;;;;:58;;;;;;;;;;;;;;;;;;44634:44;;;:51;;44537:44;;44634:55;;;:::i;:::-;44700:49;;;;:40;:49;;;;;;;;:69;;;44784:31;:40;;;;;;44606:83;;-1:-1:-1;44784:40:0;;44780:184;;44841:49;14624:10;44861:28;;44841:5;:49::i;:::-;44905:40;;;;:31;:40;;;;;:47;;-1:-1:-1;;44905:47:0;44948:4;44905:47;;;44780:184;44981:42;14624:10;45001:12;44981:42;;;-1:-1:-1;;;;;6323:32:1;;;6305:51;;6387:2;6372:18;;6365:34;;;6278:18;44981:42:0;6131:274:1;45043:1150:0;45106:22;;-1:-1:-1;;;;;45106:22:0;45098:48;14624:10;45169:4;45176:7;45098:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;45211:22:0;;45203:48;;-1:-1:-1;;;45203:48:0;;;;;7385:25:1;;;45263:4:0;;-1:-1:-1;;;;;;45211:22:0;;;;-1:-1:-1;45203:39:0;;7358:18:1;;45203:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;45203:65:0;;45195:133;;;;-1:-1:-1;;;45195:133:0;;;;;;;:::i;:::-;14624:10;45339:22;45364:27;;;:13;:27;;;;;;;;:36;;;;;;;;45432:12;45411:33;;;45455:21;;;;:36;;;;45502:20;;;:27;;-1:-1:-1;;45502:27:0;;;;;;45543:37;;;:23;:37;;;;;;45540:98;;45625:1;45601:20;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;45540:98:0;14624:10;45648:37;;;;:23;:37;;;;;:42;;45689:1;;45648:37;:42;;45689:1;;45648:42;:::i;:::-;;;;;;;;45722:1;45701:17;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;14624:10:0;45734:39;;;;:25;:39;;;;;;;:53;;;;;;;;;;;;;;;;;;45826:39;;;:46;;45734:39;;45826:50;;;:::i;:::-;45887:44;;;;:35;:44;;;;;;;;:64;;;45966:26;:35;;;;;;45798:78;;-1:-1:-1;45966:35:0;;45962:169;;46018:44;14624:10;46038:23;;46018:5;:44::i;:::-;46077:35;;;;:26;:35;;;;;:42;;-1:-1:-1;;46077:42:0;46115:4;46077:42;;;45962:169;46148:37;14624:10;46163:12;14544:98;46805:303;46888:14;46884:217;46920:8;:15;46908:9;:27;46884:217;;;46968:8;46977:9;46968:19;;;;;;;;:::i;:::-;;;;;;;46991:1;46968:24;46965:72;;;47013:8;;46965:72;47051:38;47069:8;47078:9;47069:19;;;;;;;;:::i;:::-;;;;;;;47051:17;:38::i;:::-;46937:11;;;;:::i;:::-;;;;46884:217;;50565:352;-1:-1:-1;;;;;50654:31:0;;50626:25;50654:31;;;:25;:31;;;;;;;;50626:59;;;;;;;;;;;;;;;;;;;50654:31;;50626:59;;;50654:31;50626:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50702:14;50698:212;50734:8;:15;50722:9;:27;50698:212;;;50782:8;50791:9;50782:19;;;;;;;;:::i;:::-;;;;;;;50805:1;50782:24;50779:72;;;50827:8;;50779:72;50865:33;50878:8;50887:9;50878:19;;;;;;;;:::i;:::-;;;;;;;50865:12;:33::i;:::-;50751:11;;;;:::i;:::-;;;;50698:212;;51440:159;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;51550:28:0::1;:41:::0;51440:159::o;17630:139::-;17708:4;17732:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;17732:29:0;;;;;;;;;;;;;;;17630:139::o;28276:104::-;28332:13;28365:7;28358:14;;;;;:::i;51976:247::-;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;;;;;52094:24:0;::::1;52085:79;;;;-1:-1:-1::0;;;52085:79:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;52175:27:0::1;:40:::0;;-1:-1:-1;;;;;;52175:40:0::1;-1:-1:-1::0;;;;;52175:40:0;;;::::1;::::0;;;::::1;::::0;;51976:247::o;42346:119::-;38278:24;17212:30;38278:24;14624:10;17212;:30::i;:::-;42432:25:::1;42444:4;42450:6;42432:11;:25::i;32494:413::-:0;14624:10;32587:4;32631:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;32631:34:0;;;;;;;;;;32684:35;;;;32676:85;;;;-1:-1:-1;;;32676:85:0;;12639:2:1;32676:85:0;;;12621:21:1;12678:2;12658:18;;;12651:30;12717:34;12697:18;;;12690:62;-1:-1:-1;;;12768:18:1;;;12761:35;12813:19;;32676:85:0;12437:401:1;32676:85:0;32797:67;14624:10;32820:7;32848:15;32829:16;:34;32797:8;:67::i;:::-;-1:-1:-1;32895:4:0;;32494:413;-1:-1:-1;;;32494:413:0:o;29688:175::-;29774:4;29791:42;14624:10;29815:9;29826:6;29791:9;:42::i;49224:485::-;14624:10;49286:22;49311:32;;;:18;:32;;;;;;;;:41;;;;;;;;;49399:47;;49311:41;49399:24;:47::i;:::-;49363:83;-1:-1:-1;49460:29:0;;49457:245;;49530:12;49506:21;;;:36;49557:46;14624:10;49563:12;14544:98;49557:46;49623:67;14624:10;49650:12;14544:98;48355:861;48460:1;48415:42;14624:10;48449:7;48415:19;:42::i;:::-;:46;48412:98;;;48477:21;48490:7;48477:12;:21::i;:::-;14624:10;48520:22;48545:27;;;:13;:27;;;;;;;;:36;;;;;;;;;;48592:20;;;:27;;-1:-1:-1;;48592:27:0;48615:4;48592:27;;;48638:22;;48630:86;;-1:-1:-1;;;48630:86:0;;48545:36;;-1:-1:-1;;;;;48638:22:0;;;;48630:48;;:86;;48687:4;;48545:36;;48630:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48787:12;14624:10;;14544:98;48787:12;48743:22;;48735:48;;-1:-1:-1;;;48735:48:0;;;;;7385:25:1;;;-1:-1:-1;;;;;48735:64:0;;;;48743:22;;;;48735:39;;7358:18:1;;48735:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;48735:64:0;;48727:132;;;;-1:-1:-1;;;48727:132:0;;;;;;;:::i;:::-;14624:10;48873:37;;;;:23;:37;;;;;;48914:1;48873:42;48870:98;;;48955:1;48931:20;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;48870:98:0;14624:10;48978:37;;;;:23;:37;;;;;:42;;49019:1;;48978:37;:42;;49019:1;;48978:42;:::i;:::-;;;;;;;;49052:1;49031:17;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;14624:10:0;49152:1;49064:39;;;:25;:39;;;;;;;;49104:44;;;:35;:44;;;;;;49064:85;;;;;;;;:::i;:::-;;;;;;;;;;:89;49169:39;14624:10;49186:12;49169:39;;;-1:-1:-1;;;;;6323:32:1;;;6305:51;;6387:2;6372:18;;6365:34;;;6278:18;49169:39:0;;;;;;;48401:815;48355:861;:::o;40090:63::-;;;;;;;;;;;;;;;;;;;;46508:289;46584:14;46580:210;46616:8;:15;46604:9;:27;46580:210;;;46664:8;46673:9;46664:19;;;;;;;;:::i;:::-;;;;;;;46687:1;46664:24;46661:72;;;46709:8;;46661:72;46747:31;46758:8;46767:9;46758:19;;;;;;;;:::i;:::-;;;;;;;46747:10;:31::i;:::-;46633:11;;;;:::i;:::-;;;;46580:210;;42079:144;-1:-1:-1;;;;;42183:32:0;;;;;;:25;:32;;;;;;;;;42176:39;;;;;;;;;;;;;;;;;42148:16;;42176:39;;;42183:32;42176:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42079:144;;;:::o;19522:149::-;18811:7;18838:12;;;:6;:12;;;;;:22;;;17212:30;17223:4;14624:10;17212;:30::i;:::-;19637:26:::1;19649:4;19655:7;19637:11;:26::i;47421:926::-:0;47536:1;47486:47;14624:10;47525:7;47486:24;:47::i;:::-;:51;47483:108;;;47553:26;47571:7;47553:17;:26::i;:::-;14624:10;47601:22;47626:32;;;:18;:32;;;;;;;;:41;;;;;;;;;;47678:20;;;:27;;-1:-1:-1;;47678:27:0;47701:4;47678:27;;;47724;;47716:91;;-1:-1:-1;;;47716:91:0;;47626:41;;-1:-1:-1;;;;;47724:27:0;;;;47716:53;;:91;;47778:4;;47626:41;;47716:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47883:12;14624:10;;14544:98;47883:12;47834:27;;47826:53;;-1:-1:-1;;;47826:53:0;;;;;7385:25:1;;;-1:-1:-1;;;;;47826:69:0;;;;47834:27;;;;47826:44;;7358:18:1;;47826:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;47826:69:0;;47818:137;;;;-1:-1:-1;;;47818:137:0;;;;;;;:::i;:::-;14624:10;47969:42;;;;:28;:42;;;;;;48015:1;47969:47;47966:108;;;48061:1;48032:25;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;47966:108:0;14624:10;48084:42;;;;:28;:42;;;;;:47;;48130:1;;48084:42;:47;;48130:1;;48084:47;:::i;:::-;;;;;;;;48168:1;48142:22;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;14624:10:0;48278:1;48180:44;;;:30;:44;;;;;;;;48225:49;;;:40;:49;;;;;;48180:95;;;;;;;;:::i;:::-;;;;;;;;;;:99;48295:44;14624:10;48317:12;14544:98;50958:165;-1:-1:-1;;;;;;;;;;;17212:30:0;38201:32;14624:10;17212;:30::i;:::-;-1:-1:-1;51071:27:0::1;:44:::0;50958:165::o;42473:665::-;-1:-1:-1;;;;;42603:25:0;;42560:7;42603:25;;;:18;:25;;;;;;;;:34;;;;;;;;42579:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42677:21;-1:-1:-1;42653:45:0;:78;;-1:-1:-1;42702:20:0;;;;:29;42653:78;42650:118;;;42755:1;42748:8;;;;;42650:118;42778:36;42832:4;:21;;;42817:12;:36;;;;:::i;:::-;42778:75;;42899:27;;42929:1;42899:31;;;;:::i;:::-;42868:28;:62;42864:103;;;42954:1;42947:8;;;;;;42864:103;42977:20;43061:1;43031:27;;43000:28;:58;;;;:::i;:::-;:62;;;;:::i;:::-;42977:85;;43095:33;;43080:12;:48;;;;:::i;47120:293::-;47198:14;47194:212;47230:8;:15;47218:9;:27;47194:212;;;47278:8;47287:9;47278:19;;;;;;;;:::i;:::-;;;;;;;47301:1;47278:24;47275:72;;;47323:8;;47275:72;47361:33;47374:8;47383:9;47374:19;;;;;;;;:::i;:::-;;;;;;;47361:12;:33::i;:::-;47247:11;;;;:::i;:::-;;;;47194:212;;50190:367;-1:-1:-1;;;;;50284:36:0;;50256:25;50284:36;;;:30;:36;;;;;;;;50256:64;;;;;;;;;;;;;;;;;;;50284:36;;50256:64;;;50284:36;50256:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50337:14;50333:217;50369:8;:15;50357:9;:27;50333:217;;;50417:8;50426:9;50417:19;;;;;;;;:::i;:::-;;;;;;;50440:1;50417:24;50414:72;;;50462:8;;50414:72;50500:38;50518:8;50527:9;50518:19;;;;;;;;:::i;:::-;;;;;;;50500:17;:38::i;:::-;50386:11;;;;:::i;:::-;;;;50333:217;;41913:154;-1:-1:-1;;;;;42022:37:0;;;;;;:30;:37;;;;;;;;;42015:44;;;;;;;;;;;;;;;;;41987:16;;42015:44;;;42022:37;42015:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41913:154;;;:::o;36178:380::-;-1:-1:-1;;;;;36314:19:0;;36306:68;;;;-1:-1:-1;;;36306:68:0;;12234:2:1;36306:68:0;;;12216:21:1;12273:2;12253:18;;;12246:30;12312:34;12292:18;;;12285:62;-1:-1:-1;;;12363:18:1;;;12356:34;12407:19;;36306:68:0;12032:400:1;36306:68:0;-1:-1:-1;;;;;36393:21:0;;36385:68;;;;-1:-1:-1;;;36385:68:0;;9386:2:1;36385:68:0;;;9368:21:1;9425:2;9405:18;;;9398:30;9464:34;9444:18;;;9437:62;-1:-1:-1;;;9515:18:1;;;9508:32;9557:19;;36385:68:0;9184:398:1;36385:68:0;-1:-1:-1;;;;;36466:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36518:32;;7385:25:1;;;36518:32:0;;7358:18:1;36518:32:0;;;;;;;36178:380;;;:::o;18059:497::-;18140:22;18148:4;18154:7;18140;:22::i;:::-;18135:414;;18328:41;18356:7;-1:-1:-1;;;;;18328:41:0;18366:2;18328:19;:41::i;:::-;18442:38;18470:4;18477:2;18442:19;:38::i;:::-;18233:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;18233:270:0;;;;;;;;;;-1:-1:-1;;;18179:358:0;;;;;;;:::i;33397:733::-;-1:-1:-1;;;;;33537:20:0;;33529:70;;;;-1:-1:-1;;;33529:70:0;;11828:2:1;33529:70:0;;;11810:21:1;11867:2;11847:18;;;11840:30;11906:34;11886:18;;;11879:62;-1:-1:-1;;;11957:18:1;;;11950:35;12002:19;;33529:70:0;11626:401:1;33529:70:0;-1:-1:-1;;;;;33618:23:0;;33610:71;;;;-1:-1:-1;;;33610:71:0;;8579:2:1;33610:71:0;;;8561:21:1;8618:2;8598:18;;;8591:30;8657:34;8637:18;;;8630:62;-1:-1:-1;;;8708:18:1;;;8701:33;8751:19;;33610:71:0;8377:399:1;33610:71:0;-1:-1:-1;;;;;33778:17:0;;33754:21;33778:17;;;;;;;;;;;33814:23;;;;33806:74;;;;-1:-1:-1;;;33806:74:0;;9789:2:1;33806:74:0;;;9771:21:1;9828:2;9808:18;;;9801:30;9867:34;9847:18;;;9840:62;-1:-1:-1;;;9918:18:1;;;9911:36;9964:19;;33806:74:0;9587:402:1;33806:74:0;-1:-1:-1;;;;;33916:17:0;;;:9;:17;;;;;;;;;;;33936:22;;;33916:42;;33980:20;;;;;;;;:30;;33952:6;;33916:9;33980:30;;33952:6;;33980:30;:::i;:::-;;;;;;;;34045:9;-1:-1:-1;;;;;34028:35:0;34037:6;-1:-1:-1;;;;;34028:35:0;;34056:6;34028:35;;;;7385:25:1;;7373:2;7358:18;;7239:177;34028:35:0;;;;;;;;34076:46;33518:612;33397:733;;;:::o;21679:238::-;21763:22;21771:4;21777:7;21763;:22::i;:::-;21758:152;;21802:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;21802:29:0;;;;;;;;;:36;;-1:-1:-1;;21802:36:0;21834:4;21802:36;;;21885:12;14624:10;;14544:98;21885:12;-1:-1:-1;;;;;21858:40:0;21876:7;-1:-1:-1;;;;;21858:40:0;21870:4;21858:40;;;;;;;;;;21679:238;;:::o;22049:239::-;22133:22;22141:4;22147:7;22133;:22::i;:::-;22129:152;;;22204:5;22172:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;22172:29:0;;;;;;;;;;:37;;-1:-1:-1;;22172:37:0;;;22229:40;14624:10;;22172:12;;22229:40;;22204:5;22229:40;22049:239;;:::o;34417:399::-;-1:-1:-1;;;;;34501:21:0;;34493:65;;;;-1:-1:-1;;;34493:65:0;;13461:2:1;34493:65:0;;;13443:21:1;13500:2;13480:18;;;13473:30;13539:33;13519:18;;;13512:61;13590:18;;34493:65:0;13259:355:1;34493:65:0;34649:6;34633:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;34666:18:0;;:9;:18;;;;;;;;;;:28;;34688:6;;34666:9;:28;;34688:6;;34666:28;:::i;:::-;;;;-1:-1:-1;;34710:37:0;;7385:25:1;;;-1:-1:-1;;;;;34710:37:0;;;34727:1;;34710:37;;7373:2:1;7358:18;34710:37:0;;;;;;;20178:218;;:::o;35149:591::-;-1:-1:-1;;;;;35233:21:0;;35225:67;;;;-1:-1:-1;;;35225:67:0;;11015:2:1;35225:67:0;;;10997:21:1;11054:2;11034:18;;;11027:30;11093:34;11073:18;;;11066:62;-1:-1:-1;;;11144:18:1;;;11137:31;11185:19;;35225:67:0;10813:397:1;35225:67:0;-1:-1:-1;;;;;35392:18:0;;35367:22;35392:18;;;;;;;;;;;35429:24;;;;35421:71;;;;-1:-1:-1;;;35421:71:0;;8983:2:1;35421:71:0;;;8965:21:1;9022:2;9002:18;;;8995:30;9061:34;9041:18;;;9034:62;-1:-1:-1;;;9112:18:1;;;9105:32;9154:19;;35421:71:0;8781:398:1;35421:71:0;-1:-1:-1;;;;;35528:18:0;;:9;:18;;;;;;;;;;35549:23;;;35528:44;;35594:12;:22;;35566:6;;35528:9;35594:22;;35566:6;;35594:22;:::i;:::-;;;;-1:-1:-1;;35634:37:0;;7385:25:1;;;35660:1:0;;-1:-1:-1;;;;;35634:37:0;;;;;7373:2:1;7358:18;35634:37:0;;;;;;;19130:147;;;:::o;10366:451::-;10441:13;10467:19;10499:10;10503:6;10499:1;:10;:::i;:::-;:14;;10512:1;10499:14;:::i;:::-;10489:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10489:25:0;;10467:47;;-1:-1:-1;;;10525:6:0;10532:1;10525:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;10525:15:0;;;;;;;;;-1:-1:-1;;;10551:6:0;10558:1;10551:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;10551:15:0;;;;;;;;-1:-1:-1;10582:9:0;10594:10;10598:6;10594:1;:10;:::i;:::-;:14;;10607:1;10594:14;:::i;:::-;10582:26;;10577:135;10614:1;10610;:5;10577:135;;;-1:-1:-1;;;10662:5:0;10670:3;10662:11;10649:25;;;;;;;:::i;:::-;;;;10637:6;10644:1;10637:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;10637:37:0;;;;;;;;-1:-1:-1;10699:1:0;10689:11;;;;;10617:3;;;:::i;:::-;;;10577:135;;;-1:-1:-1;10730:10:0;;10722:55;;;;-1:-1:-1;;;10722:55:0;;8218:2:1;10722:55:0;;;8200:21:1;;;8237:18;;;8230:30;8296:34;8276:18;;;8269:62;8348:18;;10722:55:0;8016:356:1;10722:55:0;10802:6;10366:451;-1:-1:-1;;;10366:451:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:1108::-;1471:6;1479;1487;1495;1548:3;1536:9;1527:7;1523:23;1519:33;1516:53;;;1565:1;1562;1555:12;1516:53;1604:9;1591:23;1623:31;1648:5;1623:31;:::i;:::-;1673:5;-1:-1:-1;1697:2:1;1736:18;;;1723:32;1764:33;1723:32;1764:33;:::i;:::-;1816:7;-1:-1:-1;1870:2:1;1855:18;;1842:32;;-1:-1:-1;1925:2:1;1910:18;;1897:32;1948:18;1978:14;;;1975:34;;;2005:1;2002;1995:12;1975:34;2043:6;2032:9;2028:22;2018:32;;2088:7;2081:4;2077:2;2073:13;2069:27;2059:55;;2110:1;2107;2100:12;2059:55;2146:2;2133:16;2168:2;2164;2161:10;2158:36;;;2174:18;;:::i;:::-;2216:53;2259:2;2240:13;;-1:-1:-1;;2236:27:1;2232:36;;2216:53;:::i;:::-;2203:66;;2292:2;2285:5;2278:17;2332:7;2327:2;2322;2318;2314:11;2310:20;2307:33;2304:53;;;2353:1;2350;2343:12;2304:53;2408:2;2403;2399;2395:11;2390:2;2383:5;2379:14;2366:45;2452:1;2447:2;2442;2435:5;2431:14;2427:23;2420:34;;2473:5;2463:15;;;;;1376:1108;;;;;;;:::o;2489:315::-;2557:6;2565;2618:2;2606:9;2597:7;2593:23;2589:32;2586:52;;;2634:1;2631;2624:12;2586:52;2673:9;2660:23;2692:31;2717:5;2692:31;:::i;:::-;2742:5;2794:2;2779:18;;;;2766:32;;-1:-1:-1;;;2489:315:1:o;2809:957::-;2893:6;2924:2;2967;2955:9;2946:7;2942:23;2938:32;2935:52;;;2983:1;2980;2973:12;2935:52;3023:9;3010:23;3052:18;3093:2;3085:6;3082:14;3079:34;;;3109:1;3106;3099:12;3079:34;3147:6;3136:9;3132:22;3122:32;;3192:7;3185:4;3181:2;3177:13;3173:27;3163:55;;3214:1;3211;3204:12;3163:55;3250:2;3237:16;3272:2;3268;3265:10;3262:36;;;3278:18;;:::i;:::-;3324:2;3321:1;3317:10;3307:20;;3347:28;3371:2;3367;3363:11;3347:28;:::i;:::-;3409:15;;;3440:12;;;;3472:11;;;3502;;;3498:20;;3495:33;-1:-1:-1;3492:53:1;;;3541:1;3538;3531:12;3492:53;3563:1;3554:10;;3573:163;3587:2;3584:1;3581:9;3573:163;;;3644:17;;3632:30;;3605:1;3598:9;;;;;3682:12;;;;3714;;3573:163;;;-1:-1:-1;3755:5:1;2809:957;-1:-1:-1;;;;;;;;2809:957:1:o;3771:180::-;3830:6;3883:2;3871:9;3862:7;3858:23;3854:32;3851:52;;;3899:1;3896;3889:12;3851:52;-1:-1:-1;3922:23:1;;3771:180;-1:-1:-1;3771:180:1:o;3956:315::-;4024:6;4032;4085:2;4073:9;4064:7;4060:23;4056:32;4053:52;;;4101:1;4098;4091:12;4053:52;4137:9;4124:23;4114:33;;4197:2;4186:9;4182:18;4169:32;4210:31;4235:5;4210:31;:::i;4276:286::-;4334:6;4387:2;4375:9;4366:7;4362:23;4358:32;4355:52;;;4403:1;4400;4393:12;4355:52;4429:23;;-1:-1:-1;;;;;;4481:32:1;;4471:43;;4461:71;;4528:1;4525;4518:12;4752:786;5163:25;5158:3;5151:38;5133:3;5218:6;5212:13;5234:62;5289:6;5284:2;5279:3;5275:12;5268:4;5260:6;5256:17;5234:62;:::i;:::-;-1:-1:-1;;;5355:2:1;5315:16;;;5347:11;;;5340:40;5405:13;;5427:63;5405:13;5476:2;5468:11;;5461:4;5449:17;;5427:63;:::i;:::-;5510:17;5529:2;5506:26;;4752:786;-1:-1:-1;;;;4752:786:1:o;5751:375::-;-1:-1:-1;;;;;6009:15:1;;;5991:34;;6061:15;;;;6056:2;6041:18;;6034:43;6108:2;6093:18;;6086:34;;;;5941:2;5926:18;;5751:375::o;6410:632::-;6581:2;6633:21;;;6703:13;;6606:18;;;6725:22;;;6552:4;;6581:2;6804:15;;;;6778:2;6763:18;;;6552:4;6847:169;6861:6;6858:1;6855:13;6847:169;;;6922:13;;6910:26;;6991:15;;;;6956:12;;;;6883:1;6876:9;6847:169;;;-1:-1:-1;7033:3:1;;6410:632;-1:-1:-1;;;;;;6410:632:1:o;7628:383::-;7777:2;7766:9;7759:21;7740:4;7809:6;7803:13;7852:6;7847:2;7836:9;7832:18;7825:34;7868:66;7927:6;7922:2;7911:9;7907:18;7902:2;7894:6;7890:15;7868:66;:::i;:::-;7995:2;7974:15;-1:-1:-1;;7970:29:1;7955:45;;;;8002:2;7951:54;;7628:383;-1:-1:-1;;7628:383:1:o;10403:405::-;10605:2;10587:21;;;10644:2;10624:18;;;10617:30;10683:34;10678:2;10663:18;;10656:62;-1:-1:-1;;;10749:2:1;10734:18;;10727:39;10798:3;10783:19;;10403:405::o;11215:406::-;11417:2;11399:21;;;11456:2;11436:18;;;11429:30;11495:34;11490:2;11475:18;;11468:62;-1:-1:-1;;;11561:2:1;11546:18;;11539:40;11611:3;11596:19;;11215:406::o;14324:275::-;14395:2;14389:9;14460:2;14441:13;;-1:-1:-1;;14437:27:1;14425:40;;14495:18;14480:34;;14516:22;;;14477:62;14474:88;;;14542:18;;:::i;:::-;14578:2;14571:22;14324:275;;-1:-1:-1;14324:275:1:o;14604:128::-;14644:3;14675:1;14671:6;14668:1;14665:13;14662:39;;;14681:18;;:::i;:::-;-1:-1:-1;14717:9:1;;14604:128::o;14737:217::-;14777:1;14803;14793:132;;14847:10;14842:3;14838:20;14835:1;14828:31;14882:4;14879:1;14872:15;14910:4;14907:1;14900:15;14793:132;-1:-1:-1;14939:9:1;;14737:217::o;14959:168::-;14999:7;15065:1;15061;15057:6;15053:14;15050:1;15047:21;15042:1;15035:9;15028:17;15024:45;15021:71;;;15072:18;;:::i;:::-;-1:-1:-1;15112:9:1;;14959:168::o;15132:125::-;15172:4;15200:1;15197;15194:8;15191:34;;;15205:18;;:::i;:::-;-1:-1:-1;15242:9:1;;15132:125::o;15262:258::-;15334:1;15344:113;15358:6;15355:1;15352:13;15344:113;;;15434:11;;;15428:18;15415:11;;;15408:39;15380:2;15373:10;15344:113;;;15475:6;15472:1;15469:13;15466:48;;;-1:-1:-1;;15510:1:1;15492:16;;15485:27;15262:258::o;15525:136::-;15564:3;15592:5;15582:39;;15601:18;;:::i;:::-;-1:-1:-1;;;15637:18:1;;15525:136::o;15666:380::-;15745:1;15741:12;;;;15788;;;15809:61;;15863:4;15855:6;15851:17;15841:27;;15809:61;15916:2;15908:6;15905:14;15885:18;15882:38;15879:161;;;15962:10;15957:3;15953:20;15950:1;15943:31;15997:4;15994:1;15987:15;16025:4;16022:1;16015:15;15879:161;;15666:380;;;:::o;16051:135::-;16090:3;-1:-1:-1;;16111:17:1;;16108:43;;;16131:18;;:::i;:::-;-1:-1:-1;16178:1:1;16167:13;;16051:135::o;16191:127::-;16252:10;16247:3;16243:20;16240:1;16233:31;16283:4;16280:1;16273:15;16307:4;16304:1;16297:15;16323:127;16384:10;16379:3;16375:20;16372:1;16365:31;16415:4;16412:1;16405:15;16439:4;16436:1;16429:15;16455:127;16516:10;16511:3;16507:20;16504:1;16497:31;16547:4;16544:1;16537:15;16571:4;16568:1;16561:15;16587:131;-1:-1:-1;;;;;16662:31:1;;16652:42;;16642:70;;16708:1;16705;16698:12;16642:70;16587:131;:::o
Swarm Source
ipfs://8ed33f4b6fa522b9fd1a57ecbb761b0f9bbb01a70bcf9d8a45c59c8940443369
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.