Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
1,240 HNYSBT
Holders
1,239
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 HNYSBTLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
AHappyNounishYear2023SBTContract
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.17;import { Base64 } from 'base64-sol/base64.sol';import "contract-allow-list/contracts/ERC721AntiScam/restrictApprove/ERC721RestrictApprove.sol";import "@openzeppelin/contracts/access/AccessControl.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";import "@openzeppelin/contracts/token/common/ERC2981.sol";import "@openzeppelin/contracts/security/ReentrancyGuard.sol";import {UpdatableOperatorFilterer} from "operator-filter-registry/src/UpdatableOperatorFilterer.sol";import {RevokableDefaultOperatorFilterer} from "operator-filter-registry/src/RevokableDefaultOperatorFilterer.sol";//tokenURI interfaceinterface iTokenURI {function tokenURI(uint256 _tokenId) external view returns (string memory);}//SBT interfaceinterface iSbtCollection {function externalMint(address _address , uint256 _amount ) external payable;function balanceOf(address _owner) external view returns (uint);}
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import {RevokableOperatorFilterer} from "./RevokableOperatorFilterer.sol";/*** @title RevokableDefaultOperatorFilterer* @notice Inherits from RevokableOperatorFilterer and automatically subscribes to the default OpenSea subscription.* Note that OpenSea will disable creator fee enforcement if filtered operators begin fulfilling orders* on-chain, eg, if the registry is revoked or bypassed.*/abstract contract RevokableDefaultOperatorFilterer is RevokableOperatorFilterer {address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);constructor() RevokableOperatorFilterer(0x000000000000AAeB6D7670E522A718067333cd4E, DEFAULT_SUBSCRIPTION, true) {}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import {IOperatorFilterRegistry} from "./IOperatorFilterRegistry.sol";/*** @title UpdatableOperatorFilterer* @notice Abstract contract whose constructor automatically registers and optionally subscribes to or copies another* registrant's entries in the OperatorFilterRegistry. This contract allows the Owner to update the* OperatorFilterRegistry address via updateOperatorFilterRegistryAddress, including to the zero address,* which will bypass registry checks.* Note that OpenSea will still disable creator fee enforcement if filtered operators begin fulfilling orders* on-chain, eg, if the registry is revoked or bypassed.* @dev This smart contract is meant to be inherited by token contracts so they can use the following:* - `onlyAllowedOperator` modifier for `transferFrom` and `safeTransferFrom` methods.* - `onlyAllowedOperatorApproval` modifier for `approve` and `setApprovalForAll` methods.*/abstract contract UpdatableOperatorFilterer {error OperatorNotAllowed(address operator);error OnlyOwner();IOperatorFilterRegistry public operatorFilterRegistry;constructor(address _registry, address subscriptionOrRegistrantToCopy, bool subscribe) {IOperatorFilterRegistry registry = IOperatorFilterRegistry(_registry);operatorFilterRegistry = registry;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write// back. This is the compiler's defense against contract upgrades and
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol)pragma solidity ^0.8.0;import "../../interfaces/IERC2981.sol";import "../../utils/introspection/ERC165.sol";/*** @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.** Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for* specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.** Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the* fee is specified in basis points by default.** IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See* https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to* voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.** _Available since v4.5._*/abstract contract ERC2981 is IERC2981, ERC165 {struct RoyaltyInfo {address receiver;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/MerkleProof.sol)pragma solidity ^0.8.0;/*** @dev These functions deal with verification of Merkle Tree proofs.** The tree and the proofs can be generated using our* https://github.com/OpenZeppelin/merkle-tree[JavaScript library].* You will find a quickstart guide in the readme.** WARNING: You should avoid using leaf values that are 64 bytes long prior to* hashing, or use a hash function other than keccak256 for hashing leaves.* This is because the concatenation of a sorted pair of internal nodes in* the merkle tree could be reinterpreted as a leaf value.* OpenZeppelin's JavaScript library generates merkle trees that are safe* against this attack out of the box.*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol)pragma solidity ^0.8.0;import "./IAccessControl.sol";import "../utils/Context.sol";import "../utils/Strings.sol";import "../utils/introspection/ERC165.sol";/*** @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
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.0;import "erc721psi/contracts/extension/ERC721PsiBurnable.sol";import "./IERC721RestrictApprove.sol";import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";import "../../proxy/interface/IContractAllowListProxy.sol";/// @title AntiScam機能付きERC721A/// @dev Readmeを見てください。abstract contract ERC721RestrictApprove is ERC721PsiBurnable, IERC721RestrictApprove {using EnumerableSet for EnumerableSet.AddressSet;IContractAllowListProxy public CAL;EnumerableSet.AddressSet localAllowedAddresses;modifier onlyHolder(uint256 tokenId) {require(msg.sender == ownerOf(tokenId),"RestrictApprove: operation is only holder.");_;}/*//////////////////////////////////////////////////////////////
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0;/// @title Base64/// @author Brecht Devos - <brecht@loopring.org>/// @notice Provides functions for encoding/decoding base64library Base64 {string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';bytes internal constant TABLE_DECODE = hex"0000000000000000000000000000000000000000000000000000000000000000"hex"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000"hex"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000"hex"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000";function encode(bytes memory data) internal pure returns (string memory) {if (data.length == 0) return '';// load the table into memorystring memory table = TABLE_ENCODE;// multiply by 4/3 rounded upuint256 encodedLen = 4 * ((data.length + 2) / 3);// add some extra buffer at the end required for the writingstring memory result = new string(encodedLen + 32);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;interface IOperatorFilterRegistry {function isOperatorAllowed(address registrant, address operator) external view returns (bool);function register(address registrant) external;function registerAndSubscribe(address registrant, address subscription) external;function registerAndCopyEntries(address registrant, address registrantToCopy) external;function unregister(address addr) external;function updateOperator(address registrant, address operator, bool filtered) external;function updateOperators(address registrant, address[] calldata operators, bool filtered) external;function updateCodeHash(address registrant, bytes32 codehash, bool filtered) external;function updateCodeHashes(address registrant, bytes32[] calldata codeHashes, bool filtered) external;function subscribe(address registrant, address registrantToSubscribe) external;function unsubscribe(address registrant, bool copyExistingEntries) external;function subscriptionOf(address addr) external returns (address registrant);function subscribers(address registrant) external returns (address[] memory);function subscriberAt(address registrant, uint256 index) external returns (address);function copyEntriesOf(address registrant, address registrantToCopy) external;function isOperatorFiltered(address registrant, address operator) external returns (bool);function isCodeHashOfFiltered(address registrant, address operatorWithCode) external returns (bool);function isCodeHashFiltered(address registrant, bytes32 codeHash) external returns (bool);function filteredOperators(address addr) external returns (address[] memory);function filteredCodeHashes(address addr) external returns (bytes32[] memory);function filteredOperatorAt(address registrant, uint256 index) external returns (address);function filteredCodeHashAt(address registrant, uint256 index) external returns (bytes32);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import {UpdatableOperatorFilterer} from "./UpdatableOperatorFilterer.sol";import {IOperatorFilterRegistry} from "./IOperatorFilterRegistry.sol";/*** @title RevokableOperatorFilterer* @notice This contract is meant to allow contracts to permanently skip OperatorFilterRegistry checks if desired. The* Registry itself has an "unregister" function, but if the contract is ownable, the owner can re-register at* any point. As implemented, this abstract contract allows the contract owner to permanently skip the* OperatorFilterRegistry checks by calling revokeOperatorFilterRegistry. Once done, the registry* address cannot be further updated.* Note that OpenSea will still disable creator fee enforcement if filtered operators begin fulfilling orders* on-chain, eg, if the registry is revoked or bypassed.*/abstract contract RevokableOperatorFilterer is UpdatableOperatorFilterer {error RegistryHasBeenRevoked();error InitialRegistryAddressCannotBeZeroAddress();bool public isOperatorFilterRegistryRevoked;constructor(address _registry, address subscriptionOrRegistrantToCopy, bool subscribe)UpdatableOperatorFilterer(_registry, subscriptionOrRegistrantToCopy, subscribe){// don't allow creating a contract with a permanently revoked registry
123456789// SPDX-License-Identifier: MITpragma solidity >=0.7.0 <0.9.0;interface IContractAllowListProxy {function isAllowed(address _transferer, uint256 _level)externalviewreturns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/structs/EnumerableSet.sol)// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.pragma solidity ^0.8.0;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.8.0;/// @title IERC721RestrictApprove/// @dev Approve抑制機能付きコントラクトのインターフェース/// @author Lavuliteinterface IERC721RestrictApprove {/*** @dev CALレベルが変更された場合のイベント*/event CalLevelChanged(address indexed operator, uint256 indexed level);/*** @dev LocalContractAllowListnに追加された場合のイベント*/event LocalCalAdded(address indexed operator, address indexed transferer);/*** @dev LocalContractAllowListnに削除された場合のイベント*/event LocalCalRemoved(address indexed operator, address indexed transferer);/*** @dev CALを利用する場合のCALのレベルを設定する。レベルが高いほど、許可されるコントラクトの範囲が狭い。*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT/**______ _____ _____ ______ ___ __ _ _ _| ____| __ \ / ____|____ |__ \/_ | || || || |__ | |__) | | / / ) || | \| |/ || __| | _ /| | / / / / | |\_ _/| |____| | \ \| |____ / / / /_ | | | ||______|_| \_\\_____|/_/ |____||_| |_|*/pragma solidity ^0.8.0;import "solidity-bits/contracts/BitMaps.sol";import "../ERC721Psi.sol";abstract contract ERC721PsiBurnable is ERC721Psi {using BitMaps for BitMaps.BitMap;BitMaps.BitMap private _burnedToken;/*** @dev Destroys `tokenId`.* The approval is cleared when the token is burned.** Requirements:
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)pragma solidity ^0.8.0;import "./IERC165.sol";/*** @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) {
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.0;import "../utils/introspection/IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.** _Available since v4.5._*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.*/function royaltyInfo(uint256 tokenId, uint256 salePrice)externalviewreturns (address receiver, uint256 royaltyAmount);}
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)pragma solidity ^0.8.0;import "./math/Math.sol";/*** @dev String operations.*/library Strings {bytes16 private constant _SYMBOLS = "0123456789abcdef";uint8 private constant _ADDRESS_LENGTH = 20;/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {unchecked {uint256 length = Math.log10(value) + 1;string memory buffer = new string(length);uint256 ptr;/// @solidity memory-safe-assemblyassembly {ptr := add(buffer, add(32, length))}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT/**______ _____ _____ ______ ___ __ _ _ _| ____| __ \ / ____|____ |__ \/_ | || || || |__ | |__) | | / / ) || | \| |/ || __| | _ /| | / / / / | |\_ _/| |____| | \ \| |____ / / / /_ | | | ||______|_| \_\\_____|/_/ |____||_| |_|- github: https://github.com/estarriolvetch/ERC721Psi- npm: https://www.npmjs.com/package/erc721psi*/pragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC721/IERC721.sol";import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";import "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol";import "@openzeppelin/contracts/utils/Context.sol";import "@openzeppelin/contracts/utils/Strings.sol";import "@openzeppelin/contracts/utils/introspection/ERC165.sol";import "@openzeppelin/contracts/utils/Address.sol";import "@openzeppelin/contracts/utils/StorageSlot.sol";import "solidity-bits/contracts/BitMaps.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT/**_____ ___ ___ __ ____ _ __/ ___/____ / (_)___/ (_) /___ __ / __ )(_) /______\__ \/ __ \/ / / __ / / __/ / / / / __ / / __/ ___/___/ / /_/ / / / /_/ / / /_/ /_/ / / /_/ / / /_(__ )/____/\____/_/_/\__,_/_/\__/\__, / /_____/_/\__/____//____/- npm: https://www.npmjs.com/package/solidity-bits- github: https://github.com/estarriolvetch/solidity-bits*/pragma solidity ^0.8.0;import "./BitScan.sol";/*** @dev This Library is a modified version of Openzeppelin's BitMaps library.* Functions of finding the index of the closest set bit from a given index are added.* The indexing of each bucket is modifed to count from the MSB to the LSB instead of from the LSB to the MSB.* The modification of indexing makes finding the closest previous set bit more efficient in gas usage.*//*** @dev Library for managing uint256 to bool mapping in a compact and efficient way, providing the keys are sequential.
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Down, // Toward negative infinityUp, // Toward infinityZero // Toward zero}/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a > b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {
12345678910111213141516171819202122// SPDX-License-Identifier: MIT/**_____ ___ ___ __ ____ _ __/ ___/____ / (_)___/ (_) /___ __ / __ )(_) /______\__ \/ __ \/ / / __ / / __/ / / / / __ / / __/ ___/___/ / /_/ / / / /_/ / / /_/ /_/ / / /_/ / / /_(__ )/____/\____/_/_/\__,_/_/\__/\__, / /_____/_/\__/____//____/- npm: https://www.npmjs.com/package/solidity-bits- github: https://github.com/estarriolvetch/solidity-bits*/pragma solidity ^0.8.0;library BitScan {uint256 constant private DEBRUIJN_256 = 0x818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff;bytes constant private LOOKUP_TABLE_256 =hex"0001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8";/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (utils/StorageSlot.sol)pragma solidity ^0.8.0;/*** @dev Library for reading and writing primitive types to specific storage slots.** Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.* This library helps with reading and writing to such slots without the need for inline assembly.** The functions in this library return Slot structs that contain a `value` member that can be used to read or write.** Example usage to set ERC1967 implementation slot:* ```* contract ERC1967 {* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;** function _getImplementation() internal view returns (address) {* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;* }** function _setImplementation(address newImplementation) internal {* require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;* }
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)pragma solidity ^0.8.0;import "../IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Metadata is IERC721 {/*** @dev Returns the token collection name.*/function name() external view returns (string memory);/*** @dev Returns the token collection symbol.*/function symbol() external view returns (string memory);/*** @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.*/function tokenURI(uint256 tokenId) external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.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 `IERC721Receiver.onERC721Received.selector`.*/function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;import "../../utils/introspection/IERC165.sol";/*** @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);
123456789101112131415161718{"optimizer": {"enabled": true,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InitialRegistryAddressCannotBeZeroAddress","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"inputs":[],"name":"RegistryHasBeenRevoked","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"}],"name":"CalLevelChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"transferer","type":"address"}],"name":"LocalCalAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"transferer","type":"address"}],"name":"LocalCalRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AIRDROP_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CAL","outputs":[{"internalType":"contract IContractAllowListProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CALLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferer","type":"address"}],"name":"addLocalContractAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_airdropAddresses","type":"address[]"},{"internalType":"uint256[]","name":"_UserMintAmount","type":"uint256[]"}],"name":"airdropMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowlistType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"allowlistUserAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"animationURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAndMintMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRestrict","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_burnTokenIds","type":"uint256[]"}],"name":"externalBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"externalMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAllowlistUserAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLocalContractAllowList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getUserMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_saleId","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"getUserMintedAmountBySaleId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imageURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"interfaceOfTokenURI","outputs":[{"internalType":"contract iTokenURI","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperatorFilterRegistryRevoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSBT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataAttributes","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataDescription","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataTitle","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"uint256","name":"_maxMintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"uint256","name":"_burnId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintCount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintWithSBT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onlyAllowlisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorFilterRegistry","outputs":[{"internalType":"contract IOperatorFilterRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSaleMaxMintAmountPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"transferer","type":"address"}],"name":"removeLocalContractAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeOperatorFilterRegistry","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":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sbtCollection","outputs":[{"internalType":"contract iSbtCollection","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"setAllowListType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_saleId","type":"uint256"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"saleSupplies","type":"uint256[]"}],"name":"setAllowlistMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_animationURI","type":"string"}],"name":"setAnimationURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_burnAndMintMode","type":"bool"}],"name":"setBurnAndMintMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"calAddress","type":"address"}],"name":"setCAL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setCALLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint96","name":"_feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableRestrict","type":"bool"}],"name":"setEnebleRestrict","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_ImageURI","type":"string"}],"name":"setImageURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setInterfaceOfTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setIsSBT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmountPerTransaction","type":"uint256"}],"name":"setMaxMintAmountPerTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadataAttributes","type":"string"}],"name":"setMetadataAttributes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadataDescription","type":"string"}],"name":"setMetadataDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_metadataTitle","type":"string"}],"name":"setMetadataTitle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setMintCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_mintWithSBT","type":"bool"}],"name":"setMintWithSBT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setOnlyAllowlisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_publicSaleMaxMintAmountPerAddress","type":"uint256"}],"name":"setPublicSaleMaxMintAmountPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_saleId","type":"uint256"}],"name":"setSaleId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setSbtCollection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setTokenCALLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useAnimationUrl","type":"bool"}],"name":"setUseAnimationUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useInterfaceMetadata","type":"bool"}],"name":"setUseInterfaceMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_useSingleMetadata","type":"bool"}],"name":"setUseSingleMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setWalletCALLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_withdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"","type":"uint256"}],"name":"tokenCALLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRegistry","type":"address"}],"name":"updateOperatorFilterRegistryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"useAnimationUrl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useInterfaceMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useSingleMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userMintedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletCALLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
600f805460ff199081166001908117909255601291909155601580546001600160a01b03191673decf4b112d4120b6998e5020a6b4819e490f7db617905566038d7ea4c680006016556156ce60175560c86018556014601955601a805463ffffffff1916620101011790556000601b819055601d5560208054909116905560c06040526005608090815264173539b7b760d91b60a052602290620000a4908262001101565b506023805461ffff60a01b191690556028805460ff19908116909155602a80549091169055348015620000d657600080fd5b50604080518082018252601d81527f41204861707079204e6f756e69736820596561722032303233205342540000006020808301919091528251808401909352600683526512139654d09560d21b90830152600080546001600160a01b0319166daaeb6d7670e522a718067333cd4e908117909155909190733cc6cdda760b79bafa08df41ecfa224f810dceb6600182828282803b1562000283578115620001e257604051633e9f1edf60e11b81523060048201526001600160a01b038481166024830152821690637d3e3dbe906044015b600060405180830381600087803b158015620001c357600080fd5b505af1158015620001d8573d6000803e3d6000fd5b5050505062000283565b6001600160a01b03831615620002275760405163a0af290360e01b81523060048201526001600160a01b03848116602483015282169063a0af290390604401620001a8565b604051632210724360e11b81523060048201526001600160a01b03821690634420e48690602401600060405180830381600087803b1580156200026957600080fd5b505af11580156200027e573d6000803e3d6000fd5b505050505b5050506001600160a01b0384169050620002b05760405163c49d17ad60e01b815260040160405180910390fd5b505050620002cd620002c76200049b60201b60201c565b6200049f565b6005620002db838262001101565b506006620002ea828262001101565b5060006008555050600160145562000304600033620004f1565b620003307f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000501565b6200035c7f3a2f235c9daaf33349d300aadff2f15078a89df81bcfdd45ba11c8f816bddc6f3362000501565b620003776000805160206200719d8339815191523362000501565b6200038360016200052f565b60408051808201909152601d81527f41204861707079204e6f756e69736820596561722032303233205342540000006020820152620003c29062000569565b60408051808201909152601681527f5468616e6b20796f7520666f72206d696e74696e672e000000000000000000006020820152620004019062000592565b60408051808201909152600381526214d09560ea1b60208201526200042690620005bb565b6200044a604051806060016040528060338152602001620071dd60339139620005e4565b6200045660016200060d565b600c80546001600160a01b03191673dbaa28cbe70af04ebfb166b1a3e8f8034e5b9fc7179055620004893360016200062e565b62000495600162000650565b620013f9565b3390565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620004fd82826200067f565b5050565b6000828152601360205260409020600101546200051e8162000709565b6200052a83836200067f565b505050565b6000805160206200719d8339815191526200054a8162000709565b5060238054911515600160a81b0260ff60a81b19909216919091179055565b6000805160206200719d833981519152620005848162000709565b60256200052a838262001101565b6000805160206200719d833981519152620005ad8162000709565b60266200052a838262001101565b6000805160206200719d833981519152620005d68162000709565b60276200052a838262001101565b6000805160206200719d833981519152620005ff8162000709565b60246200052a838262001101565b6000805160206200719d833981519152620006288162000709565b50601255565b620004fd8282604051806020016040528060008152506200071860201b60201c565b6000805160206200719d8339815191526200066b8162000709565b50602a805460ff1916911515919091179055565b6200068b8282620007af565b620004fd5760008281526013602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006c53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b620007158133620007dc565b50565b60006200072460085490565b905062000732848462000854565b6200074260008583868662000a03565b620007a95760405162461bcd60e51b81526020600482015260356024820152600080516020620071bd83398151915260448201527f31526563656976657220696d706c656d656e746572000000000000000000000060648201526084015b60405180910390fd5b50505050565b60008281526013602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b620007e88282620007af565b620004fd57620008038162000ba660201b62002fdd1760201c565b6200081983602062002fef62000bb9821b17811c565b6040516020016200082c929190620011f3565b60408051601f198184030181529082905262461bcd60e51b8252620007a0916004016200129a565b60006200086060085490565b905060008211620008c25760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b6064820152608401620007a0565b6001600160a01b038316620009265760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b6064820152608401620007a0565b62000935600084838562000d79565b8160086000828254620009499190620012c5565b9091555050600081815260076020908152604090912080546001600160a01b0319166001600160a01b0386161790556200099190600490839062000e23811b6200318a17901c565b620009a0600084838562000e4f565b805b620009ae8383620012c5565b811015620007a95760405181906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a480620009fa81620012db565b915050620009a2565b600062000a24856001600160a01b03166200102960201b620031b61760201c565b1562000b9957506001835b62000a3b8486620012c5565b81101562000b9257604051630a85bd0160e11b81526001600160a01b0387169063150b7a029062000a779033908b9086908990600401620012f7565b6020604051808303816000875af192505050801562000ab5575060408051601f3d908101601f1916820190925262000ab29181019062001336565b60015b62000b5c573d80801562000ae6576040519150601f19603f3d011682016040523d82523d6000602084013e62000aeb565b606091505b50805160000362000b545760405162461bcd60e51b81526020600482015260356024820152600080516020620071bd83398151915260448201527f31526563656976657220696d706c656d656e74657200000000000000000000006064820152608401620007a0565b805181602001fd5b82801562000b7a57506001600160e01b03198116630a85bd0160e11b145b9250508062000b8981620012db565b91505062000a2f565b5062000b9d565b5060015b95945050505050565b6060620007d66001600160a01b03831660145b6060600062000bca83600262001362565b62000bd7906002620012c5565b6001600160401b0381111562000bf15762000bf16200105d565b6040519080825280601f01601f19166020018201604052801562000c1c576020820181803683370190505b509050600360fc1b8160008151811062000c3a5762000c3a6200137c565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062000c6c5762000c6c6200137c565b60200101906001600160f81b031916908160001a905350600062000c9284600262001362565b62000c9f906001620012c5565b90505b600181111562000d21576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062000cd75762000cd76200137c565b1a60f81b82828151811062000cf05762000cf06200137c565b60200101906001600160f81b031916908160001a90535060049490941c9362000d198162001392565b905062000ca2565b50831562000d725760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620007a0565b9392505050565b602a5460ff16158062000d9357506001600160a01b038416155b8062000da657506001600160a01b038316155b8062000dbc57506001600160a01b03831661dead145b62000e0a5760405162461bcd60e51b815260206004820152601660248201527f7472616e736665722069732070726f68696269746564000000000000000000006044820152606401620007a0565b620007a984848484620007a960201b6200187f1760201c565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b68010000000000000000811062000e6557600080fd5b806001600160a01b0385161562000ed3576001600160a01b0385166000908152602b60205260408120805483929062000ea99084906001600160401b0316620013ac565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555062000f3a565b6001600160a01b0384166000908152602b60205260409020805482919060089062000f159084906801000000000000000090046001600160401b0316620013d6565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b0384161562000fa7576001600160a01b0384166000908152602b60205260408120805483929062000f7d9084906001600160401b0316620013d6565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555062001009565b6001600160a01b0385166000908152602b60205260409020805482919060109062000fe4908490600160801b90046001600160401b0316620013d6565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b62001022858585856200103860201b620031c51760201c565b5050505050565b6001600160a01b03163b151590565b6001600160a01b03841615620007a957600082815260106020526040812055620007a9565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200108857607f821691505b602082108103620010a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200052a57600081815260208120601f850160051c81016020861015620010d85750805b601f850160051c820191505b81811015620010f957828155600101620010e4565b505050505050565b81516001600160401b038111156200111d576200111d6200105d565b62001135816200112e845462001073565b84620010af565b602080601f8311600181146200116d5760008415620011545750858301515b600019600386901b1c1916600185901b178555620010f9565b600085815260208120601f198616915b828110156200119e578886015182559484019460019091019084016200117d565b5085821015620011bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60005b83811015620011ea578181015183820152602001620011d0565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516200122d816017850160208801620011cd565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162001260816028840160208801620011cd565b01602801949350505050565b6000815180845262001286816020860160208601620011cd565b601f01601f19169290920160200192915050565b60208152600062000d7260208301846200126c565b634e487b7160e01b600052601160045260246000fd5b80820180821115620007d657620007d6620012af565b600060018201620012f057620012f0620012af565b5060010190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906200132c908301846200126c565b9695505050505050565b6000602082840312156200134957600080fd5b81516001600160e01b03198116811462000d7257600080fd5b8082028115828204841417620007d657620007d6620012af565b634e487b7160e01b600052603260045260246000fd5b600081620013a457620013a4620012af565b506000190190565b6001600160401b03828116828216039080821115620013cf57620013cf620012af565b5092915050565b6001600160401b03818116838216019080821115620013cf57620013cf620012af565b615d9480620014096000396000f3fe6080604052600436106106b45760003560e01c80636c0360eb1161037a578063b5f94d06116101d1578063d6dfad7611610102578063ecba222a116100a0578063f48824db1161007a578063f48824db1461144c578063f58f9c6614611484578063fcd1aac9146114a4578063ff768212146114c457600080fd5b8063ecba222a146113eb578063f138abfa1461140c578063f2fde38b1461142c57600080fd5b8063da3ef23f116100dc578063da3ef23f1461136b578063ddecc4d01461138b578063e39e0269146113ab578063e985e9c5146113cb57600080fd5b8063d6dfad7614611310578063d728312a14611331578063d96506f91461135157600080fd5b8063c66828621161016f578063d04f32d211610149578063d04f32d214611262578063d5391393146112a6578063d547741f146112da578063d5abeb01146112fa57600080fd5b8063c668286214611217578063c84c03871461122c578063c87b56dd1461124257600080fd5b8063ba6269c6116101ab578063ba6269c6146111a0578063bbb89744146111c1578063bedb86fb146111d7578063c5ac58e1146111f757600080fd5b8063b5f94d0614611140578063b88d4fde14611160578063b8d1e5321461118057600080fd5b8063942c9273116102ab578063a35c23ad11610249578063aabb9a8611610223578063aabb9a86146110c9578063b0ccc31e146110de578063b31391cb146110fe578063b51bbbdf1461112b57600080fd5b8063a35c23ad14611066578063a72193b614611093578063a9e2acd5146110a957600080fd5b8063981eb34411610285578063981eb34414610ffe57806399f988981461101e578063a217fddf14611031578063a22cb4651461104657600080fd5b8063942c927314610fb457806395d89b4114610fc95780639659867e14610fde57600080fd5b80637cb6475911610318578063877984cb116102f2578063877984cb14610f3f5780638da5cb5b14610f5f5780638e73cf0014610f7457806391d1485414610f9457600080fd5b80637cb6475914610ed25780637ee3b2ac14610ef25780638462151c14610f1257600080fd5b8063715018a611610354578063715018a614610e6757806372b44d7114610e7c57806373ef64fd14610e9c5780637c3dc17314610eb257600080fd5b80636c0360eb14610e125780636f8b44b014610e2757806370a0823114610e4757600080fd5b80632a0acc6a1161052e5780634c45cda21161045f578063599487c3116103fd5780636352211e116103d75780636352211e14610da0578063674c02aa14610dc05780636b1a2b7f14610ddf5780636b8ee0ec14610df257600080fd5b8063599487c314610d515780635c975abb14610d715780635ef9432a14610d8b57600080fd5b80634f3db346116104395780634f3db34614610cd657806355cda89814610cec57806355f804b314610d115780635978c01214610d3157600080fd5b80634c45cda214610c765780634cb110fc14610c965780634e6bf20414610cb657600080fd5b80633ab1a494116104cc57806342842e0e116104a657806342842e0e14610bba57806344a0d68a14610bda57806347705cbc14610bfa578063499a15d414610c3e57600080fd5b80633ab1a49414610b785780633ccfd60b14610b985780633cf40df314610ba057600080fd5b80632f2ff15d116105085780632f2ff15d14610ad55780633511cd5414610af557806336568abe14610b38578063396e8f5314610b5857600080fd5b80632a0acc6a14610a5e5780632a55205a14610a805780632eb4a7ab14610abf57600080fd5b8063095ea7b3116106085780631e0fbfa2116105a657806323c030851161058057806323c03085146109ba578063248a9ca3146109da578063279a669e14610a0a578063282c51f314610a2a57600080fd5b80631e0fbfa2146109395780632398f8431461096d57806323b872dd1461099a57600080fd5b806313faede6116105e257806313faede6146108ce5780631581b600146108e457806317dc10c41461090457806318160ddd1461092457600080fd5b8063095ea7b3146108795780630f4345e214610899578063135d088d146108b957600080fd5b8063025e332e1161067557806306fdde031161064f57806306fdde03146107f257806307265389146108075780630730baf014610821578063081812fc1461084157600080fd5b8063025e332e1461079057806304634d8d146107b257806304787ca2146107d257600080fd5b80623eb1e2146106b95780623f332f146106e857806285bb6f1461070a5780629a9b7b1461072b57806301340a321461074e57806301ffc9a714610770575b600080fd5b3480156106c557600080fd5b506028546106d39060ff1681565b60405190151581526020015b60405180910390f35b3480156106f457600080fd5b506106fd6114e4565b6040516106df9190614e54565b34801561071657600080fd5b50601a546106d3906301000000900460ff1681565b34801561073757600080fd5b506107406114f3565b6040519081526020016106df565b34801561075a57600080fd5b5061076361150a565b6040516106df9190614ef1565b34801561077c57600080fd5b506106d361078b366004614f1a565b611598565b34801561079c57600080fd5b506107b06107ab366004614f4e565b6115c7565b005b3480156107be57600080fd5b506107b06107cd366004614f69565b611602565b3480156107de57600080fd5b506107b06107ed366004615057565b611614565b3480156107fe57600080fd5b5061076361163d565b34801561081357600080fd5b50600f546106d39060ff1681565b34801561082d57600080fd5b506107b061083c3660046150ad565b6116cf565b34801561084d57600080fd5b5061086161085c3660046150ca565b6116fb565b6040516001600160a01b0390911681526020016106df565b34801561088557600080fd5b506107b06108943660046150e3565b61178b565b3480156108a557600080fd5b506107b06108b43660046150ca565b6117ea565b3480156108c557600080fd5b50610763611808565b3480156108da57600080fd5b5061074060165481565b3480156108f057600080fd5b50601554610861906001600160a01b031681565b34801561091057600080fd5b506107b061091f3660046150ad565b611815565b34801561093057600080fd5b50610740611848565b34801561094557600080fd5b506107407f3a2f235c9daaf33349d300aadff2f15078a89df81bcfdd45ba11c8f816bddc6f81565b34801561097957600080fd5b50610740610988366004614f4e565b60116020526000908152604090205481565b3480156109a657600080fd5b506107b06109b536600461510d565b61185a565b3480156109c657600080fd5b506107b06109d5366004614f4e565b611885565b3480156109e657600080fd5b506107406109f53660046150ca565b60009081526013602052604090206001015490565b348015610a1657600080fd5b506107b0610a25366004615216565b6118c0565b348015610a3657600080fd5b506107407f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b348015610a6a57600080fd5b50610740600080516020615c3f83398151915281565b348015610a8c57600080fd5b50610aa0610a9b36600461527e565b611acc565b604080516001600160a01b0390931683526020830191909152016106df565b348015610acb57600080fd5b50610740601c5481565b348015610ae157600080fd5b506107b0610af03660046152a0565b611b7a565b348015610b0157600080fd5b50610740610b103660046152a0565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205490565b348015610b4457600080fd5b506107b0610b533660046152a0565b611b9f565b348015610b6457600080fd5b50600c54610861906001600160a01b031681565b348015610b8457600080fd5b506107b0610b93366004614f4e565b611c19565b6107b0611c43565b348015610bac57600080fd5b50602a546106d39060ff1681565b348015610bc657600080fd5b506107b0610bd536600461510d565b611cae565b348015610be657600080fd5b506107b0610bf53660046150ca565b611cd3565b348015610c0657600080fd5b50610740610c15366004614f4e565b601d546000908152601e602090815260408083206001600160a01b039094168352929052205490565b348015610c4a57600080fd5b50610740610c593660046152a0565b601f60209081526000928352604080842090915290825290205481565b348015610c8257600080fd5b506107b0610c913660046150ad565b611cf1565b348015610ca257600080fd5b506107b0610cb13660046150ad565b611d1d565b348015610cc257600080fd5b506107b0610cd13660046152cc565b611d49565b348015610ce257600080fd5b5061074060125481565b348015610cf857600080fd5b506020546108619061010090046001600160a01b031681565b348015610d1d57600080fd5b506107b0610d2c366004615057565b611dfb565b348015610d3d57600080fd5b506107b0610d4c36600461538c565b611e1f565b348015610d5d57600080fd5b506107b0610d6c366004615057565b611f45565b348015610d7d57600080fd5b50601a546106d39060ff1681565b348015610d9757600080fd5b506107b0611f69565b348015610dac57600080fd5b50610861610dbb3660046150ca565b611fe5565b348015610dcc57600080fd5b50601a546106d390610100900460ff1681565b6107b0610ded3660046153c0565b611ff9565b348015610dfe57600080fd5b506107b0610e0d3660046150ad565b6125e9565b348015610e1e57600080fd5b50610763612620565b348015610e3357600080fd5b506107b0610e423660046150ca565b61262d565b348015610e5357600080fd5b50610740610e62366004614f4e565b61264b565b348015610e7357600080fd5b506107b06126de565b348015610e8857600080fd5b506107b0610e97366004614f4e565b6126f2565b348015610ea857600080fd5b5061074060195481565b348015610ebe57600080fd5b506107b0610ecd36600461527e565b612713565b348015610ede57600080fd5b506107b0610eed3660046150ca565b6127a3565b348015610efe57600080fd5b506107b0610f0d3660046150ca565b6127c1565b348015610f1e57600080fd5b50610f32610f2d366004614f4e565b612830565b6040516106df919061541a565b348015610f4b57600080fd5b50602354610861906001600160a01b031681565b348015610f6b57600080fd5b506108616128f6565b348015610f8057600080fd5b506107b0610f8f3660046150ad565b61290a565b348015610fa057600080fd5b506106d3610faf3660046152a0565b61293f565b348015610fc057600080fd5b5061076361296a565b348015610fd557600080fd5b50610763612977565b348015610fea57600080fd5b50601a546106d39062010000900460ff1681565b34801561100a57600080fd5b506107b0611019366004615057565b612986565b6107b061102c3660046150e3565b6129aa565b34801561103d57600080fd5b50610740600081565b34801561105257600080fd5b506107b0611061366004615452565b612a64565b34801561107257600080fd5b506107b06110813660046150ca565b33600090815260116020526040902055565b34801561109f57600080fd5b50610740601b5481565b3480156110b557600080fd5b506107b06110c43660046150ca565b612ad4565b3480156110d557600080fd5b50610763612af2565b3480156110ea57600080fd5b50600054610861906001600160a01b031681565b34801561110a57600080fd5b506107406111193660046150ca565b60106020526000908152604090205481565b34801561113757600080fd5b50610763612aff565b34801561114c57600080fd5b506107b061115b3660046150ca565b612b0c565b34801561116c57600080fd5b506107b061117b36600461547e565b612b2a565b34801561118c57600080fd5b506107b061119b366004614f4e565b612b50565b3480156111ac57600080fd5b506023546106d390600160a01b900460ff1681565b3480156111cd57600080fd5b5061074060185481565b3480156111e357600080fd5b506107b06111f23660046150ad565b612bd6565b34801561120357600080fd5b506107b0611212366004615057565b612c02565b34801561122357600080fd5b50610763612c26565b34801561123857600080fd5b50610740601d5481565b34801561124e57600080fd5b5061076361125d3660046150ca565b612c33565b34801561126e57600080fd5b5061074061127d366004614f4e565b601d546000908152601f602090815260408083206001600160a01b039094168352929052205490565b3480156112b257600080fd5b506107407f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156112e657600080fd5b506107b06112f53660046152a0565b612d92565b34801561130657600080fd5b5061074060175481565b34801561131c57600080fd5b506023546106d390600160a81b900460ff1681565b34801561133d57600080fd5b506107b061134c3660046150ca565b612db7565b34801561135d57600080fd5b506020546106d39060ff1681565b34801561137757600080fd5b506107b0611386366004615057565b612dd5565b34801561139757600080fd5b506107b06113a6366004615057565b612df9565b3480156113b757600080fd5b506107b06113c63660046150ad565b612e1d565b3480156113d757600080fd5b506106d36113e63660046154f9565b612e54565b3480156113f757600080fd5b506000546106d390600160a01b900460ff1681565b34801561141857600080fd5b506107b06114273660046150ad565b612ea2565b34801561143857600080fd5b506107b0611447366004614f4e565b612ed9565b34801561145857600080fd5b506107406114673660046152a0565b601e60209081526000928352604080842090915290825290205481565b34801561149057600080fd5b506107b061149f366004614f4e565b612f4f565b3480156114b057600080fd5b506107b06114bf3660046150ad565b612f90565b3480156114d057600080fd5b506107b06114df366004614f4e565b612fbc565b60606114ee6131e8565b905090565b6000600161150060085490565b6114ee9190615539565b602780546115179061554c565b80601f01602080910402602001604051908101604052809291908181526020018280546115439061554c565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b505050505081565b60006115a3826131f4565b806115b257506115b282613229565b806115c157506115c18261324a565b92915050565b600080516020615c3f8339815191526115df8161326f565b600c80546001600160a01b0319166001600160a01b0384161790555050565b5050565b61160a613279565b6115fe82826132d8565b600080516020615c3f83398151915261162c8161326f565b602461163883826155cc565b505050565b60606005805461164c9061554c565b80601f01602080910402602001604051908101604052809291908181526020018280546116789061554c565b80156116c55780601f1061169a576101008083540402835291602001916116c5565b820191906000526020600020905b8154815290600101906020018083116116a857829003601f168201915b5050505050905090565b600080516020615c3f8339815191526116e78161326f565b50600f805460ff1916911515919091179055565b6000611706826133d5565b61176f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084015b60405180910390fd5b506000908152600960205260409020546001600160a01b031690565b816117958161340a565b602a5460ff16156117e05760405162461bcd60e51b8152602060048201526015602482015274185c1c1c9bdd99481a5cc81c1c9bda1a589a5d1959605a1b6044820152606401611766565b6116388383613424565b600080516020615c3f8339815191526118028161326f565b50601255565b602480546115179061554c565b600080516020615c3f83398151915261182d8161326f565b50601a80549115156101000261ff0019909216919091179055565b6000611852613438565b61150061349a565b826001600160a01b0381163314611874576118743361340a565b61187f8484846134aa565b50505050565b600080516020615c3f83398151915261189d8161326f565b50602380546001600160a01b0319166001600160a01b0392909216919091179055565b6118ea7f3a2f235c9daaf33349d300aadff2f15078a89df81bcfdd45ba11c8f816bddc6f3361293f565b6119365760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742061206169722064726f7070657200000000006044820152606401611766565b805182146119865760405162461bcd60e51b815260206004820152601b60248201527f4172726179206c656e677468732061726520646966666572656e7400000000006044820152606401611766565b6000805b82518110156119cc578281815181106119a5576119a561568b565b6020026020010151826119b891906156a1565b9150806119c4816156b4565b91505061198a565b5080600010611a1d5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401611766565b601754816001611a2c60085490565b611a369190615539565b611a4091906156a1565b1115611a5e5760405162461bcd60e51b8152600401611766906156cd565b60005b8251811015611ac557611ab3858583818110611a7f57611a7f61568b565b9050602002016020810190611a949190614f4e565b848381518110611aa657611aa661568b565b60200260200101516134db565b80611abd816156b4565b915050611a61565b5050505050565b60008281526002602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291611b415750604080518082019091526001546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611b60906001600160601b0316876156fd565b611b6a9190615714565b91519350909150505b9250929050565b600082815260136020526040902060010154611b958161326f565b61163883836134f5565b6001600160a01b0381163314611c0f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611766565b6115fe828261357b565b611c21613279565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b611c4b613279565b6015546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611c98576040519150601f19603f3d011682016040523d82523d6000602084013e611c9d565b606091505b5050905080611cab57600080fd5b50565b826001600160a01b0381163314611cc857611cc83361340a565b61187f8484846135e2565b600080516020615c3f833981519152611ceb8161326f565b50601655565b600080516020615c3f833981519152611d098161326f565b506028805460ff1916911515919091179055565b600080516020615c3f833981519152611d358161326f565b506020805460ff1916911515919091179055565b600080516020615c3f833981519152611d618161326f565b8151835114611d6f57600080fd5b60005b8351811015611ac557828181518110611d8d57611d8d61568b565b6020026020010151601f60008781526020019081526020016000206000868481518110611dbc57611dbc61568b565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080611df3906156b4565b915050611d72565b600080516020615c3f833981519152611e138161326f565b602161163883826155cc565b611e276135fd565b611e517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8483361293f565b611e965760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba103090313ab93732b960511b6044820152606401611766565b60005b8151811015611f3a576000828281518110611eb657611eb661568b565b60200260200101519050611ec981611fe5565b6001600160a01b0316326001600160a01b031614611f1e5760405162461bcd60e51b815260206004820152601260248201527113dddb995c881a5cc8191a5999995c995b9d60721b6044820152606401611766565b611f2781613656565b5080611f32816156b4565b915050611e99565b50611cab6001601455565b600080516020615c3f833981519152611f5d8161326f565b602661163883826155cc565b611f716128f6565b6001600160a01b0316336001600160a01b031614611fa257604051635fc483c560e01b815260040160405180910390fd5b600054600160a01b900460ff1615611fcd57604051631551a48f60e11b815260040160405180910390fd5b600080546001600160a81b031916600160a01b179055565b600080611ff1836136c2565b509392505050565b3233146120485760405162461bcd60e51b815260206004820152601f60248201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163742e006044820152606401611766565b601a5460ff16156120945760405162461bcd60e51b81526020600482015260166024820152751d1a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401611766565b846000106120e45760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401611766565b6018548511156121425760405162461bcd60e51b8152602060048201526024808201527f6d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b6064820152608401611766565b60175485600161215160085490565b61215b9190615539565b61216591906156a1565b11156121835760405162461bcd60e51b8152600401611766906156cd565b348560165461219291906156fd565b11156121d55760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401611766565b601a54600090610100900460ff16151560010361235957601b546000036122c6576040516bffffffffffffffffffffffff193360601b1660208201526034810186905260009060540160405160208183030381529060405280519060200120905061227785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601c549150849050613759565b6122bd5760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd08185b1b1bdddb1a5cdd1959604a1b6044820152606401611766565b8591505061235e565b601b5460010361235457601d546000908152601f6020908152604080832033845290915281205490036123355760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd08185b1b1bdddb1a5cdd1959604a1b6044820152606401611766565b50601d546000908152601f602090815260408083203384529091529020545b61235e565b506019545b601a5462010000900460ff16151560010361241b57601d546000908152601e6020908152604080832033845290915290205461239a9082615539565b8611156123e95760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401611766565b601d546000908152601e60209081526040808320338452909152812080548892906124159084906156a1565b90915550505b601a546301000000900460ff1615156001036124e857856001146124815760405162461bcd60e51b815260206004820152601c60248201527f546865206e756d626572206f66206d696e7473206973206f7665722e000000006044820152606401611766565b61248a82611fe5565b6001600160a01b0316336001600160a01b0316146124df5760405162461bcd60e51b815260206004820152601260248201527113dddb995c881a5cc8191a5999995c995b9d60721b6044820152606401611766565b6124e882613656565b60205460ff1615156001036125d7576020546040516370a0823160e01b81523360048201526101009091046001600160a01b0316906370a0823190602401602060405180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125679190615736565b6000036125d75760205460405163133f311360e31b8152336004820152600160248201526101009091046001600160a01b0316906399f9889890604401600060405180830381600087803b1580156125be57600080fd5b505af11580156125d2573d6000803e3d6000fd5b505050505b6125e133876134db565b505050505050565b600080516020615c3f8339815191526126018161326f565b5060238054911515600160a81b0260ff60a81b19909216919091179055565b602180546115179061554c565b600080516020615c3f8339815191526126458161326f565b50601755565b60006001600160a01b0382166126b95760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201526c207a65726f206164647265737360981b6064820152608401611766565b506001600160a01b03166000908152602b60205260409020546001600160401b031690565b6126e6613279565b6126f0600061376f565b565b600080516020615c3f83398151915261270a8161326f565b6115fe826137c1565b8161271d81611fe5565b6001600160a01b0316336001600160a01b0316146127905760405162461bcd60e51b815260206004820152602a60248201527f5265737472696374417070726f76653a206f7065726174696f6e206973206f6e604482015269363c903437b63232b91760b11b6064820152608401611766565b5060009182526010602052604090912055565b600080516020615c3f8339815191526127bb8161326f565b50601c55565b600080516020615c3f8339815191526127d98161326f565b8115806127e65750816001145b61282a5760405162461bcd60e51b815260206004820152601560248201527420b63637bb903634b9ba103a3cb8329032b93937b960591b6044820152606401611766565b50601b55565b606060008061283e8461264b565b90506000816001600160401b0381111561285a5761285a614fac565b604051908082528060200260200182016040528015612883578160200160208202803683370190505b50905060005b8284146128ed57612899816133d5565b156128e557856001600160a01b03166128b182611fe5565b6001600160a01b0316036128e557808285806001019650815181106128d8576128d861568b565b6020026020010181815250505b600101612889565b50949350505050565b60006114ee6003546001600160a01b031690565b600080516020615c3f8339815191526129228161326f565b50601a8054911515620100000262ff000019909216919091179055565b60009182526013602090815260408084206001600160a01b0393909316845291905290205460ff1690565b602680546115179061554c565b60606006805461164c9061554c565b600080516020615c3f83398151915261299e8161326f565b602561163883826155cc565b6129d47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361293f565b612a195760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b4b73a32b960511b6044820152606401611766565b601754816001612a2860085490565b612a329190615539565b612a3c91906156a1565b1115612a5a5760405162461bcd60e51b8152600401611766906156cd565b6115fe82826134db565b81612a6e8161340a565b602a5460ff161580612a7e575081155b612aca5760405162461bcd60e51b815260206004820152601f60248201527f736574417070726f76616c466f72416c6c2069732070726f68696269746564006044820152606401611766565b6116388383613806565b600080516020615c3f833981519152612aec8161326f565b50601855565b602580546115179061554c565b602980546115179061554c565b600080516020615c3f833981519152612b248161326f565b50601955565b836001600160a01b0381163314612b4457612b443361340a565b611ac585858585613884565b612b586128f6565b6001600160a01b0316336001600160a01b031614612b8957604051635fc483c560e01b815260040160405180910390fd5b600054600160a01b900460ff1615612bb457604051631551a48f60e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020615c3f833981519152612bee8161326f565b50601a805460ff1916911515919091179055565b600080516020615c3f833981519152612c1a8161326f565b602961163883826155cc565b602280546115179061554c565b602354606090600160a01b900460ff161515600103612cbd5760235460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa158015612c95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c1919081019061574f565b602354600160a81b900460ff161515600103612d7657602854612d509060259060269060249060ff161515600114612d045760405180602001604052806000815250612d26565b6029604051602001612d16919061582f565b6040516020818303038152906040525b6027604051602001612d3c959493929190615868565b6040516020818303038152906040526138b6565b604051602001612d60919061596a565b6040516020818303038152906040529050919050565b612d7f82613a1a565b6022604051602001612d609291906159af565b600082815260136020526040902060010154612dad8161326f565b611638838361357b565b600080516020615c3f833981519152612dcf8161326f565b50601d55565b600080516020615c3f833981519152612ded8161326f565b602261163883826155cc565b600080516020615c3f833981519152612e118161326f565b602761163883826155cc565b600080516020615c3f833981519152612e358161326f565b50601a805491151563010000000263ff00000019909216919091179055565b6000612e608383613adf565b1515600003612e71575060006115c1565b6001600160a01b038084166000908152600a602090815260408083209386168352929052205460ff165b9392505050565b600080516020615c3f833981519152612eba8161326f565b5060238054911515600160a01b0260ff60a01b19909216919091179055565b612ee1613279565b6001600160a01b038116612f465760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611766565b611cab8161376f565b600080516020615c3f833981519152612f678161326f565b50602080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080516020615c3f833981519152612fa88161326f565b50602a805460ff1916911515919091179055565b600080516020615c3f833981519152612fd48161326f565b6115fe82613aff565b60606115c16001600160a01b03831660145b60606000612ffe8360026156fd565b6130099060026156a1565b6001600160401b0381111561302057613020614fac565b6040519080825280601f01601f19166020018201604052801561304a576020820181803683370190505b509050600360fc1b816000815181106130655761306561568b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130945761309461568b565b60200101906001600160f81b031916908160001a90535060006130b88460026156fd565b6130c39060016156a1565b90505b600181111561313b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106130f7576130f761568b565b1a60f81b82828151811061310d5761310d61568b565b60200101906001600160f81b031916908160001a90535060049490941c93613134816159cd565b90506130c6565b508315612e9b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611766565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b6001600160a01b03163b151590565b6001600160a01b0384161561187f5760008281526010602052604081205561187f565b60606114ee600d613b44565b60006001600160e01b0319821663152a902d60e11b14806115c157506301ffc9a760e01b6001600160e01b03198316146115c1565b60006001600160e01b03198216637965db0b60e01b14806115c157506115c1825b60006001600160e01b03198216630101c11560e71b14806115c157506115c182613b51565b611cab8133613b91565b336132826128f6565b6001600160a01b0316146126f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611766565b6127106001600160601b03821611156133465760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401611766565b6001600160a01b03821661339c5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611766565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600155565b600881901c6000908152600b6020526040812054600160ff1b60ff84161c161561340157506000919050565b6115c182613bea565b6000546001600160a01b031615611cab57611cab81613c06565b61342e8282613cc8565b6115fe8282613d43565b600880546000918291829190613450911c60016156a1565b9050815b81811015613494576000818152600b602052604090205461347481613e55565b61347e90866156a1565b945050808061348c906156b4565b915050613454565b50505090565b6000806008546114ee9190615539565b6134b43382613e74565b6134d05760405162461bcd60e51b8152600401611766906159e4565b611638838383613f39565b6115fe828260405180602001604052806000815250614138565b6134ff828261293f565b6115fe5760008281526013602090815260408083206001600160a01b03851684529091529020805460ff191660011790556135373390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613585828261293f565b156115fe5760008281526013602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61163883838360405180602001604052806000815250612b2a565b60026014540361364f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611766565b6002601455565b600061366182611fe5565b9050613671816000846001614179565b61367c600b8361318a565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46115fe816000846001614203565b6000806136ce836133d5565b61372f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611766565b613738836143b2565b6000818152600760205260409020546001600160a01b031694909350915050565b60008261376685846143bf565b14949350505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6137cc600d82614404565b506040516001600160a01b0382169033907f3b01c97343869ca2757fcc37cdb8f71683b0a7aed858e3755f4529a1db85729290600090a350565b61380f82614419565b80613818575080155b61387a5760405162461bcd60e51b815260206004820152602d60248201527f5265737472696374417070726f76653a2043616e206e6f7420617070726f766560448201526c103637b1b5b2b2103a37b5b2b760991b6064820152608401611766565b6115fe8282614425565b61388e3383613e74565b6138aa5760405162461bcd60e51b8152600401611766906159e4565b61187f848484846144e9565b606081516000036138d557505060408051602081019091526000815290565b6000604051806060016040528060408152602001615bff604091399050600060038451600261390491906156a1565b61390e9190615714565b6139199060046156fd565b905060006139288260206156a1565b6001600160401b0381111561393f5761393f614fac565b6040519080825280601f01601f191660200182016040528015613969576020820181803683370190505b509050818152600183018586518101602084015b818310156139d5576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161397d565b6003895106600181146139ef5760028114613a0057613a0c565b613d3d60f01b600119830152613a0c565b603d60f81b6000198301525b509398975050505050505050565b6060613a25826133d5565b613a845760405162461bcd60e51b815260206004820152602a60248201527f4552433732315073693a2055524920717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401611766565b6000613a8e614502565b90506000815111613aae5760405180602001604052806000815250612e9b565b80613ab884614511565b604051602001613ac9929190615a38565b6040516020818303038152906040529392505050565b600080613aeb846145a3565b9050613af783826145e5565b949350505050565b613b0a600d8261467e565b506040516001600160a01b0382169033907fbd0af1fe0a2c1c7bb340c17a284a291138979c8eeb797e176dbd1c415199af3c90600090a350565b60606000612e9b83614693565b60006001600160e01b031982166380ac58cd60e01b1480613b8257506001600160e01b03198216635b5e139f60e01b145b806115c157506115c1826131f4565b613b9b828261293f565b6115fe57613ba881612fdd565b613bb3836020612fef565b604051602001613bc4929190615a67565b60408051601f198184030181529082905262461bcd60e51b825261176691600401614ef1565b6000613bf560085490565b821080156115c15750600192915050565b6000546001600160a01b03168015801590613c2b57506000816001600160a01b03163b115b156115fe57604051633185c44d60e21b81523060048201526001600160a01b03838116602483015282169063c617113490604401602060405180830381865afa158015613c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca09190615adc565b6115fe57604051633b79c77360e21b81526001600160a01b0383166004820152602401611766565b6001600160a01b038216156115fe57613ce181836146ef565b6115fe5760405162461bcd60e51b815260206004820152602d60248201527f5265737472696374417070726f76653a2054686520636f6e747261637420697360448201526c103737ba1030b63637bbb2b21760991b6064820152608401611766565b6000613d4e82611fe5565b9050806001600160a01b0316836001600160a01b031603613dbd5760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f6044820152633bb732b960e11b6064820152608401611766565b336001600160a01b0382161480613dd95750613dd98133612e54565b613e4b5760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c00000000006064820152608401611766565b61163883836146fc565b60005b8115613e6f57600019820190911690600101613e58565b919050565b6000613e7f826133d5565b613ee35760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401611766565b6000613eee83611fe5565b9050806001600160a01b0316846001600160a01b03161480613f295750836001600160a01b0316613f1e846116fb565b6001600160a01b0316145b80613af75750613af78185612e54565b600080613f45836136c2565b91509150846001600160a01b0316826001600160a01b031614613fbf5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201526b3a1034b9903737ba1037bbb760a11b6064820152608401611766565b6001600160a01b0384166140255760405162461bcd60e51b815260206004820152602760248201527f4552433732315073693a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b6064820152608401611766565b6140328585856001614179565b61403d6000846146fc565b600061404a8460016156a1565b600881901c600090815260046020526040902054909150600160ff1b60ff83161c1615801561407a575060085481105b156140b157600081815260076020526040902080546001600160a01b0319166001600160a01b0388161790556140b160048261318a565b600084815260076020526040902080546001600160a01b0319166001600160a01b0387161790558184146140ea576140ea60048561318a565b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125e18686866001614203565b600061414360085490565b905061414f848461476a565b61415d6000858386866148f7565b61187f5760405162461bcd60e51b815260040161176690615af9565b602a5460ff16158061419257506001600160a01b038416155b806141a457506001600160a01b038316155b806141b957506001600160a01b03831661dead145b6141fe5760405162461bcd60e51b81526020600482015260166024820152751d1c985b9cd9995c881a5cc81c1c9bda1a589a5d195960521b6044820152606401611766565b61187f565b600160401b811061421357600080fd5b806001600160a01b0385161561427d576001600160a01b0385166000908152602b6020526040812080548392906142549084906001600160401b0316615b4e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506142dd565b6001600160a01b0384166000908152602b6020526040902080548291906008906142b8908490600160401b90046001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b03841615614346576001600160a01b0384166000908152602b60205260408120805483929061431d9084906001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506143a6565b6001600160a01b0385166000908152602b602052604090208054829190601090614381908490600160801b90046001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b611ac5858585856131c5565b60006115c1600483614a2e565b600081815b8451811015611ff1576143f0828683815181106143e3576143e361568b565b6020026020010151614b26565b9150806143fc816156b4565b9150506143c4565b6000612e9b836001600160a01b038416614b55565b60006115c13383613adf565b336001600160a01b0383160361447d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732315073693a20617070726f766520746f2063616c6c6572000000006044820152606401611766565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6144f4848484613f39565b61415d8484846001856148f7565b60606021805461164c9061554c565b6060600061451e83614c4f565b60010190506000816001600160401b0381111561453d5761453d614fac565b6040519080825280601f01601f191660200182016040528015614567576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461457157509392505050565b6001600160a01b038116600090815260116020526040812054156145dd57506001600160a01b031660009081526011602052604090205490565b505060125490565b600f5460009060ff166145fa575060016115c1565b61460383614d27565b80612e9b5750600c54604051630f8350ed60e41b81526001600160a01b038581166004830152602482018590529091169063f8350ed090604401602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9b9190615adc565b6000612e9b836001600160a01b038416614d51565b6060816000018054806020026020016040519081016040528092919081815260200182805480156146e357602002820191906000526020600020905b8154815260200190600101908083116146cf575b50505050509050919050565b600080613aeb3385614da0565b600081815260096020526040902080546001600160a01b0319166001600160a01b038416908117909155819061473182611fe5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061477560085490565b9050600082116147d55760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b6064820152608401611766565b6001600160a01b0383166148375760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611766565b6148446000848385614179565b816008600082825461485691906156a1565b9091555050600081815260076020526040902080546001600160a01b0319166001600160a01b03851617905561488d60048261318a565b61489a6000848385614203565b805b6148a683836156a1565b81101561187f5760405181906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4806148ef816156b4565b91505061489c565b60006001600160a01b0385163b15614a2157506001835b61491884866156a1565b811015614a1b57604051630a85bd0160e11b81526001600160a01b0387169063150b7a02906149519033908b9086908990600401615b8e565b6020604051808303816000875af192505050801561498c575060408051601f3d908101601f1916820190925261498991810190615bcb565b60015b6149e9573d8080156149ba576040519150601f19603f3d011682016040523d82523d6000602084013e6149bf565b606091505b5080516000036149e15760405162461bcd60e51b815260040161176690615af9565b805181602001fd5b828015614a0657506001600160e01b03198116630a85bd0160e11b145b92505080614a13816156b4565b91505061490e565b50614a25565b5060015b95945050505050565b600881901c60008181526020849052604081205490919060ff808516919082181c8015614a7057614a5e81614dd2565b60ff168203600884901b179350614b1d565b60008311614add5760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b6064820152608401611766565b506000199091016000818152602086905260409020549091908015614b1857614b0581614dd2565b60ff0360ff16600884901b179350614b1d565b614a70565b50505092915050565b6000818310614b42576000828152602084905260409020612e9b565b6000838152602083905260409020612e9b565b60008181526001830160205260408120548015614c3e576000614b79600183615539565b8554909150600090614b8d90600190615539565b9050818114614bf2576000866000018281548110614bad57614bad61568b565b9060005260206000200154905080876000018481548110614bd057614bd061568b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614c0357614c03615be8565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506115c1565b60009150506115c1565b5092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614c8e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614cba576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614cd857662386f26fc10000830492506010015b6305f5e1008310614cf0576305f5e100830492506008015b6127108310614d0457612710830492506004015b60648310614d16576064830492506002015b600a83106115c15760010192915050565b60006115c1600d836001600160a01b03811660009081526001830160205260408120541515612e9b565b6000818152600183016020526040812054614d98575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556115c1565b5060006115c1565b60008181526010602052604081205415614dc957506000818152601060205260409020546115c1565b612e9b836145a3565b60006040518061012001604052806101008152602001615c5f610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff614e1b85614e3c565b02901c81518110614e2e57614e2e61568b565b016020015160f81c92915050565b6000808211614e4a57600080fd5b5060008190031690565b6020808252825182820181905260009190848201906040850190845b81811015614e955783516001600160a01b031683529284019291840191600101614e70565b50909695505050505050565b60005b83811015614ebc578181015183820152602001614ea4565b50506000910152565b60008151808452614edd816020860160208601614ea1565b601f01601f19169290920160200192915050565b602081526000612e9b6020830184614ec5565b6001600160e01b031981168114611cab57600080fd5b600060208284031215614f2c57600080fd5b8135612e9b81614f04565b80356001600160a01b0381168114613e6f57600080fd5b600060208284031215614f6057600080fd5b612e9b82614f37565b60008060408385031215614f7c57600080fd5b614f8583614f37565b915060208301356001600160601b0381168114614fa157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614fea57614fea614fac565b604052919050565b60006001600160401b0382111561500b5761500b614fac565b50601f01601f191660200190565b600061502c61502784614ff2565b614fc2565b905082815283838301111561504057600080fd5b828260208301376000602084830101529392505050565b60006020828403121561506957600080fd5b81356001600160401b0381111561507f57600080fd5b8201601f8101841361509057600080fd5b613af784823560208401615019565b8015158114611cab57600080fd5b6000602082840312156150bf57600080fd5b8135612e9b8161509f565b6000602082840312156150dc57600080fd5b5035919050565b600080604083850312156150f657600080fd5b6150ff83614f37565b946020939093013593505050565b60008060006060848603121561512257600080fd5b61512b84614f37565b925061513960208501614f37565b9150604084013590509250925092565b60008083601f84011261515b57600080fd5b5081356001600160401b0381111561517257600080fd5b6020830191508360208260051b8501011115611b7357600080fd5b60006001600160401b038211156151a6576151a6614fac565b5060051b60200190565b600082601f8301126151c157600080fd5b813560206151d16150278361518d565b82815260059290921b840181019181810190868411156151f057600080fd5b8286015b8481101561520b57803583529183019183016151f4565b509695505050505050565b60008060006040848603121561522b57600080fd5b83356001600160401b038082111561524257600080fd5b61524e87838801615149565b9095509350602086013591508082111561526757600080fd5b50615274868287016151b0565b9150509250925092565b6000806040838503121561529157600080fd5b50508035926020909101359150565b600080604083850312156152b357600080fd5b823591506152c360208401614f37565b90509250929050565b6000806000606084860312156152e157600080fd5b833592506020808501356001600160401b038082111561530057600080fd5b818701915087601f83011261531457600080fd5b81356153226150278261518d565b81815260059190911b8301840190848101908a83111561534157600080fd5b938501935b828510156153665761535785614f37565b82529385019390850190615346565b96505050604087013592508083111561537e57600080fd5b5050615274868287016151b0565b60006020828403121561539e57600080fd5b81356001600160401b038111156153b457600080fd5b613af7848285016151b0565b6000806000806000608086880312156153d857600080fd5b853594506020860135935060408601356001600160401b038111156153fc57600080fd5b61540888828901615149565b96999598509660600135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015614e9557835183529284019291840191600101615436565b6000806040838503121561546557600080fd5b61546e83614f37565b91506020830135614fa18161509f565b6000806000806080858703121561549457600080fd5b61549d85614f37565b93506154ab60208601614f37565b92506040850135915060608501356001600160401b038111156154cd57600080fd5b8501601f810187136154de57600080fd5b6154ed87823560208401615019565b91505092959194509250565b6000806040838503121561550c57600080fd5b61551583614f37565b91506152c360208401614f37565b634e487b7160e01b600052601160045260246000fd5b818103818111156115c1576115c1615523565b600181811c9082168061556057607f821691505b60208210810361558057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561163857600081815260208120601f850160051c810160208610156155ad5750805b601f850160051c820191505b818110156125e1578281556001016155b9565b81516001600160401b038111156155e5576155e5614fac565b6155f9816155f3845461554c565b84615586565b602080601f83116001811461562e57600084156156165750858301515b600019600386901b1c1916600185901b1785556125e1565b600085815260208120601f198616915b8281101561565d5788860151825594840194600190910190840161563e565b508582101561567b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b808201808211156115c1576115c1615523565b6000600182016156c6576156c6615523565b5060010190565b6020808252601690820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b604082015260600190565b80820281158282048414176115c1576115c1615523565b60008261573157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561574857600080fd5b5051919050565b60006020828403121561576157600080fd5b81516001600160401b0381111561577757600080fd5b8201601f8101841361578857600080fd5b805161579661502782614ff2565b8181528560208385010111156157ab57600080fd5b614a25826020830160208601614ea1565b600081546157c98161554c565b600182811680156157e157600181146157f657615825565b60ff1984168752821515830287019450615825565b8560005260208060002060005b8581101561581c5781548a820152908401908201615803565b50505082870194505b5050505092915050565b711130b734b6b0ba34b7b72fbab936111d101160711b8152600061585660128301846157bc565b61088b60f21b81526002019392505050565b607b60f81b815267113730b6b2911d1160c11b6001820152600061588f60098301886157bc565b61088b60f21b8082526e113232b9b1b934b83a34b7b7111d1160891b60028301526158bd60118301896157bc565b818152691134b6b0b3b2911d101160b11b600282015291506158e2600c8301886157bc565b91508082525084516158fb816002840160208901614ea1565b7f2261747472696275746573223a5b7b2274726169745f74797065223a22747970600292909101918201526b329116113b30b63ab2911d1160a11b6022820152615948602e8201856157bc565b62227d5d60e81b8152607d60f81b600382015260040198975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516159a281601d850160208701614ea1565b91909101601d0192915050565b600083516159c1818460208801614ea1565b614a25818401856157bc565b6000816159dc576159dc615523565b506000190190565b60208082526034908201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f6040820152731d081bdddb995c881b9bdc88185c1c1c9bdd995960621b606082015260800190565b60008351615a4a818460208801614ea1565b835190830190615a5e818360208801614ea1565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615a9f816017850160208801614ea1565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615ad0816028840160208801614ea1565b01602801949350505050565b600060208284031215615aee57600080fd5b8151612e9b8161509f565b60208082526035908201527f4552433732315073693a207472616e7366657220746f206e6f6e20455243373260408201527418a932b1b2b4bb32b91034b6b83632b6b2b73a32b960591b606082015260800190565b6001600160401b03828116828216039080821115614c4857614c48615523565b6001600160401b03818116838216019080821115614c4857614c48615523565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615bc190830184614ec5565b9695505050505050565b600060208284031215615bdd57600080fd5b8151612e9b81614f04565b634e487b7160e01b600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec420001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a2646970667358221220a74c288e0511bb74bf5fc11eda1b27dee032b0b83931097a5023845c947c55f864736f6c63430008110033df8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec424552433732315073693a207472616e7366657220746f206e6f6e20455243373268747470733a2f2f646174612e6e6f756e736a702e7774662f323032322d656e642d796561722f7362742f323032332e676966
Deployed Bytecode
0x6080604052600436106106b45760003560e01c80636c0360eb1161037a578063b5f94d06116101d1578063d6dfad7611610102578063ecba222a116100a0578063f48824db1161007a578063f48824db1461144c578063f58f9c6614611484578063fcd1aac9146114a4578063ff768212146114c457600080fd5b8063ecba222a146113eb578063f138abfa1461140c578063f2fde38b1461142c57600080fd5b8063da3ef23f116100dc578063da3ef23f1461136b578063ddecc4d01461138b578063e39e0269146113ab578063e985e9c5146113cb57600080fd5b8063d6dfad7614611310578063d728312a14611331578063d96506f91461135157600080fd5b8063c66828621161016f578063d04f32d211610149578063d04f32d214611262578063d5391393146112a6578063d547741f146112da578063d5abeb01146112fa57600080fd5b8063c668286214611217578063c84c03871461122c578063c87b56dd1461124257600080fd5b8063ba6269c6116101ab578063ba6269c6146111a0578063bbb89744146111c1578063bedb86fb146111d7578063c5ac58e1146111f757600080fd5b8063b5f94d0614611140578063b88d4fde14611160578063b8d1e5321461118057600080fd5b8063942c9273116102ab578063a35c23ad11610249578063aabb9a8611610223578063aabb9a86146110c9578063b0ccc31e146110de578063b31391cb146110fe578063b51bbbdf1461112b57600080fd5b8063a35c23ad14611066578063a72193b614611093578063a9e2acd5146110a957600080fd5b8063981eb34411610285578063981eb34414610ffe57806399f988981461101e578063a217fddf14611031578063a22cb4651461104657600080fd5b8063942c927314610fb457806395d89b4114610fc95780639659867e14610fde57600080fd5b80637cb6475911610318578063877984cb116102f2578063877984cb14610f3f5780638da5cb5b14610f5f5780638e73cf0014610f7457806391d1485414610f9457600080fd5b80637cb6475914610ed25780637ee3b2ac14610ef25780638462151c14610f1257600080fd5b8063715018a611610354578063715018a614610e6757806372b44d7114610e7c57806373ef64fd14610e9c5780637c3dc17314610eb257600080fd5b80636c0360eb14610e125780636f8b44b014610e2757806370a0823114610e4757600080fd5b80632a0acc6a1161052e5780634c45cda21161045f578063599487c3116103fd5780636352211e116103d75780636352211e14610da0578063674c02aa14610dc05780636b1a2b7f14610ddf5780636b8ee0ec14610df257600080fd5b8063599487c314610d515780635c975abb14610d715780635ef9432a14610d8b57600080fd5b80634f3db346116104395780634f3db34614610cd657806355cda89814610cec57806355f804b314610d115780635978c01214610d3157600080fd5b80634c45cda214610c765780634cb110fc14610c965780634e6bf20414610cb657600080fd5b80633ab1a494116104cc57806342842e0e116104a657806342842e0e14610bba57806344a0d68a14610bda57806347705cbc14610bfa578063499a15d414610c3e57600080fd5b80633ab1a49414610b785780633ccfd60b14610b985780633cf40df314610ba057600080fd5b80632f2ff15d116105085780632f2ff15d14610ad55780633511cd5414610af557806336568abe14610b38578063396e8f5314610b5857600080fd5b80632a0acc6a14610a5e5780632a55205a14610a805780632eb4a7ab14610abf57600080fd5b8063095ea7b3116106085780631e0fbfa2116105a657806323c030851161058057806323c03085146109ba578063248a9ca3146109da578063279a669e14610a0a578063282c51f314610a2a57600080fd5b80631e0fbfa2146109395780632398f8431461096d57806323b872dd1461099a57600080fd5b806313faede6116105e257806313faede6146108ce5780631581b600146108e457806317dc10c41461090457806318160ddd1461092457600080fd5b8063095ea7b3146108795780630f4345e214610899578063135d088d146108b957600080fd5b8063025e332e1161067557806306fdde031161064f57806306fdde03146107f257806307265389146108075780630730baf014610821578063081812fc1461084157600080fd5b8063025e332e1461079057806304634d8d146107b257806304787ca2146107d257600080fd5b80623eb1e2146106b95780623f332f146106e857806285bb6f1461070a5780629a9b7b1461072b57806301340a321461074e57806301ffc9a714610770575b600080fd5b3480156106c557600080fd5b506028546106d39060ff1681565b60405190151581526020015b60405180910390f35b3480156106f457600080fd5b506106fd6114e4565b6040516106df9190614e54565b34801561071657600080fd5b50601a546106d3906301000000900460ff1681565b34801561073757600080fd5b506107406114f3565b6040519081526020016106df565b34801561075a57600080fd5b5061076361150a565b6040516106df9190614ef1565b34801561077c57600080fd5b506106d361078b366004614f1a565b611598565b34801561079c57600080fd5b506107b06107ab366004614f4e565b6115c7565b005b3480156107be57600080fd5b506107b06107cd366004614f69565b611602565b3480156107de57600080fd5b506107b06107ed366004615057565b611614565b3480156107fe57600080fd5b5061076361163d565b34801561081357600080fd5b50600f546106d39060ff1681565b34801561082d57600080fd5b506107b061083c3660046150ad565b6116cf565b34801561084d57600080fd5b5061086161085c3660046150ca565b6116fb565b6040516001600160a01b0390911681526020016106df565b34801561088557600080fd5b506107b06108943660046150e3565b61178b565b3480156108a557600080fd5b506107b06108b43660046150ca565b6117ea565b3480156108c557600080fd5b50610763611808565b3480156108da57600080fd5b5061074060165481565b3480156108f057600080fd5b50601554610861906001600160a01b031681565b34801561091057600080fd5b506107b061091f3660046150ad565b611815565b34801561093057600080fd5b50610740611848565b34801561094557600080fd5b506107407f3a2f235c9daaf33349d300aadff2f15078a89df81bcfdd45ba11c8f816bddc6f81565b34801561097957600080fd5b50610740610988366004614f4e565b60116020526000908152604090205481565b3480156109a657600080fd5b506107b06109b536600461510d565b61185a565b3480156109c657600080fd5b506107b06109d5366004614f4e565b611885565b3480156109e657600080fd5b506107406109f53660046150ca565b60009081526013602052604090206001015490565b348015610a1657600080fd5b506107b0610a25366004615216565b6118c0565b348015610a3657600080fd5b506107407f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b348015610a6a57600080fd5b50610740600080516020615c3f83398151915281565b348015610a8c57600080fd5b50610aa0610a9b36600461527e565b611acc565b604080516001600160a01b0390931683526020830191909152016106df565b348015610acb57600080fd5b50610740601c5481565b348015610ae157600080fd5b506107b0610af03660046152a0565b611b7a565b348015610b0157600080fd5b50610740610b103660046152a0565b6000918252601e602090815260408084206001600160a01b0393909316845291905290205490565b348015610b4457600080fd5b506107b0610b533660046152a0565b611b9f565b348015610b6457600080fd5b50600c54610861906001600160a01b031681565b348015610b8457600080fd5b506107b0610b93366004614f4e565b611c19565b6107b0611c43565b348015610bac57600080fd5b50602a546106d39060ff1681565b348015610bc657600080fd5b506107b0610bd536600461510d565b611cae565b348015610be657600080fd5b506107b0610bf53660046150ca565b611cd3565b348015610c0657600080fd5b50610740610c15366004614f4e565b601d546000908152601e602090815260408083206001600160a01b039094168352929052205490565b348015610c4a57600080fd5b50610740610c593660046152a0565b601f60209081526000928352604080842090915290825290205481565b348015610c8257600080fd5b506107b0610c913660046150ad565b611cf1565b348015610ca257600080fd5b506107b0610cb13660046150ad565b611d1d565b348015610cc257600080fd5b506107b0610cd13660046152cc565b611d49565b348015610ce257600080fd5b5061074060125481565b348015610cf857600080fd5b506020546108619061010090046001600160a01b031681565b348015610d1d57600080fd5b506107b0610d2c366004615057565b611dfb565b348015610d3d57600080fd5b506107b0610d4c36600461538c565b611e1f565b348015610d5d57600080fd5b506107b0610d6c366004615057565b611f45565b348015610d7d57600080fd5b50601a546106d39060ff1681565b348015610d9757600080fd5b506107b0611f69565b348015610dac57600080fd5b50610861610dbb3660046150ca565b611fe5565b348015610dcc57600080fd5b50601a546106d390610100900460ff1681565b6107b0610ded3660046153c0565b611ff9565b348015610dfe57600080fd5b506107b0610e0d3660046150ad565b6125e9565b348015610e1e57600080fd5b50610763612620565b348015610e3357600080fd5b506107b0610e423660046150ca565b61262d565b348015610e5357600080fd5b50610740610e62366004614f4e565b61264b565b348015610e7357600080fd5b506107b06126de565b348015610e8857600080fd5b506107b0610e97366004614f4e565b6126f2565b348015610ea857600080fd5b5061074060195481565b348015610ebe57600080fd5b506107b0610ecd36600461527e565b612713565b348015610ede57600080fd5b506107b0610eed3660046150ca565b6127a3565b348015610efe57600080fd5b506107b0610f0d3660046150ca565b6127c1565b348015610f1e57600080fd5b50610f32610f2d366004614f4e565b612830565b6040516106df919061541a565b348015610f4b57600080fd5b50602354610861906001600160a01b031681565b348015610f6b57600080fd5b506108616128f6565b348015610f8057600080fd5b506107b0610f8f3660046150ad565b61290a565b348015610fa057600080fd5b506106d3610faf3660046152a0565b61293f565b348015610fc057600080fd5b5061076361296a565b348015610fd557600080fd5b50610763612977565b348015610fea57600080fd5b50601a546106d39062010000900460ff1681565b34801561100a57600080fd5b506107b0611019366004615057565b612986565b6107b061102c3660046150e3565b6129aa565b34801561103d57600080fd5b50610740600081565b34801561105257600080fd5b506107b0611061366004615452565b612a64565b34801561107257600080fd5b506107b06110813660046150ca565b33600090815260116020526040902055565b34801561109f57600080fd5b50610740601b5481565b3480156110b557600080fd5b506107b06110c43660046150ca565b612ad4565b3480156110d557600080fd5b50610763612af2565b3480156110ea57600080fd5b50600054610861906001600160a01b031681565b34801561110a57600080fd5b506107406111193660046150ca565b60106020526000908152604090205481565b34801561113757600080fd5b50610763612aff565b34801561114c57600080fd5b506107b061115b3660046150ca565b612b0c565b34801561116c57600080fd5b506107b061117b36600461547e565b612b2a565b34801561118c57600080fd5b506107b061119b366004614f4e565b612b50565b3480156111ac57600080fd5b506023546106d390600160a01b900460ff1681565b3480156111cd57600080fd5b5061074060185481565b3480156111e357600080fd5b506107b06111f23660046150ad565b612bd6565b34801561120357600080fd5b506107b0611212366004615057565b612c02565b34801561122357600080fd5b50610763612c26565b34801561123857600080fd5b50610740601d5481565b34801561124e57600080fd5b5061076361125d3660046150ca565b612c33565b34801561126e57600080fd5b5061074061127d366004614f4e565b601d546000908152601f602090815260408083206001600160a01b039094168352929052205490565b3480156112b257600080fd5b506107407f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156112e657600080fd5b506107b06112f53660046152a0565b612d92565b34801561130657600080fd5b5061074060175481565b34801561131c57600080fd5b506023546106d390600160a81b900460ff1681565b34801561133d57600080fd5b506107b061134c3660046150ca565b612db7565b34801561135d57600080fd5b506020546106d39060ff1681565b34801561137757600080fd5b506107b0611386366004615057565b612dd5565b34801561139757600080fd5b506107b06113a6366004615057565b612df9565b3480156113b757600080fd5b506107b06113c63660046150ad565b612e1d565b3480156113d757600080fd5b506106d36113e63660046154f9565b612e54565b3480156113f757600080fd5b506000546106d390600160a01b900460ff1681565b34801561141857600080fd5b506107b06114273660046150ad565b612ea2565b34801561143857600080fd5b506107b0611447366004614f4e565b612ed9565b34801561145857600080fd5b506107406114673660046152a0565b601e60209081526000928352604080842090915290825290205481565b34801561149057600080fd5b506107b061149f366004614f4e565b612f4f565b3480156114b057600080fd5b506107b06114bf3660046150ad565b612f90565b3480156114d057600080fd5b506107b06114df366004614f4e565b612fbc565b60606114ee6131e8565b905090565b6000600161150060085490565b6114ee9190615539565b602780546115179061554c565b80601f01602080910402602001604051908101604052809291908181526020018280546115439061554c565b80156115905780601f1061156557610100808354040283529160200191611590565b820191906000526020600020905b81548152906001019060200180831161157357829003601f168201915b505050505081565b60006115a3826131f4565b806115b257506115b282613229565b806115c157506115c18261324a565b92915050565b600080516020615c3f8339815191526115df8161326f565b600c80546001600160a01b0319166001600160a01b0384161790555050565b5050565b61160a613279565b6115fe82826132d8565b600080516020615c3f83398151915261162c8161326f565b602461163883826155cc565b505050565b60606005805461164c9061554c565b80601f01602080910402602001604051908101604052809291908181526020018280546116789061554c565b80156116c55780601f1061169a576101008083540402835291602001916116c5565b820191906000526020600020905b8154815290600101906020018083116116a857829003601f168201915b5050505050905090565b600080516020615c3f8339815191526116e78161326f565b50600f805460ff1916911515919091179055565b6000611706826133d5565b61176f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084015b60405180910390fd5b506000908152600960205260409020546001600160a01b031690565b816117958161340a565b602a5460ff16156117e05760405162461bcd60e51b8152602060048201526015602482015274185c1c1c9bdd99481a5cc81c1c9bda1a589a5d1959605a1b6044820152606401611766565b6116388383613424565b600080516020615c3f8339815191526118028161326f565b50601255565b602480546115179061554c565b600080516020615c3f83398151915261182d8161326f565b50601a80549115156101000261ff0019909216919091179055565b6000611852613438565b61150061349a565b826001600160a01b0381163314611874576118743361340a565b61187f8484846134aa565b50505050565b600080516020615c3f83398151915261189d8161326f565b50602380546001600160a01b0319166001600160a01b0392909216919091179055565b6118ea7f3a2f235c9daaf33349d300aadff2f15078a89df81bcfdd45ba11c8f816bddc6f3361293f565b6119365760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742061206169722064726f7070657200000000006044820152606401611766565b805182146119865760405162461bcd60e51b815260206004820152601b60248201527f4172726179206c656e677468732061726520646966666572656e7400000000006044820152606401611766565b6000805b82518110156119cc578281815181106119a5576119a561568b565b6020026020010151826119b891906156a1565b9150806119c4816156b4565b91505061198a565b5080600010611a1d5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401611766565b601754816001611a2c60085490565b611a369190615539565b611a4091906156a1565b1115611a5e5760405162461bcd60e51b8152600401611766906156cd565b60005b8251811015611ac557611ab3858583818110611a7f57611a7f61568b565b9050602002016020810190611a949190614f4e565b848381518110611aa657611aa661568b565b60200260200101516134db565b80611abd816156b4565b915050611a61565b5050505050565b60008281526002602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b0316928201929092528291611b415750604080518082019091526001546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611b60906001600160601b0316876156fd565b611b6a9190615714565b91519350909150505b9250929050565b600082815260136020526040902060010154611b958161326f565b61163883836134f5565b6001600160a01b0381163314611c0f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401611766565b6115fe828261357b565b611c21613279565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b611c4b613279565b6015546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611c98576040519150601f19603f3d011682016040523d82523d6000602084013e611c9d565b606091505b5050905080611cab57600080fd5b50565b826001600160a01b0381163314611cc857611cc83361340a565b61187f8484846135e2565b600080516020615c3f833981519152611ceb8161326f565b50601655565b600080516020615c3f833981519152611d098161326f565b506028805460ff1916911515919091179055565b600080516020615c3f833981519152611d358161326f565b506020805460ff1916911515919091179055565b600080516020615c3f833981519152611d618161326f565b8151835114611d6f57600080fd5b60005b8351811015611ac557828181518110611d8d57611d8d61568b565b6020026020010151601f60008781526020019081526020016000206000868481518110611dbc57611dbc61568b565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080611df3906156b4565b915050611d72565b600080516020615c3f833981519152611e138161326f565b602161163883826155cc565b611e276135fd565b611e517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8483361293f565b611e965760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba103090313ab93732b960511b6044820152606401611766565b60005b8151811015611f3a576000828281518110611eb657611eb661568b565b60200260200101519050611ec981611fe5565b6001600160a01b0316326001600160a01b031614611f1e5760405162461bcd60e51b815260206004820152601260248201527113dddb995c881a5cc8191a5999995c995b9d60721b6044820152606401611766565b611f2781613656565b5080611f32816156b4565b915050611e99565b50611cab6001601455565b600080516020615c3f833981519152611f5d8161326f565b602661163883826155cc565b611f716128f6565b6001600160a01b0316336001600160a01b031614611fa257604051635fc483c560e01b815260040160405180910390fd5b600054600160a01b900460ff1615611fcd57604051631551a48f60e11b815260040160405180910390fd5b600080546001600160a81b031916600160a01b179055565b600080611ff1836136c2565b509392505050565b3233146120485760405162461bcd60e51b815260206004820152601f60248201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163742e006044820152606401611766565b601a5460ff16156120945760405162461bcd60e51b81526020600482015260166024820152751d1a194818dbdb9d1c9858dd081a5cc81c185d5cd95960521b6044820152606401611766565b846000106120e45760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e465400000000006044820152606401611766565b6018548511156121425760405162461bcd60e51b8152602060048201526024808201527f6d6178206d696e7420616d6f756e74207065722073657373696f6e20657863656044820152631959195960e21b6064820152608401611766565b60175485600161215160085490565b61215b9190615539565b61216591906156a1565b11156121835760405162461bcd60e51b8152600401611766906156cd565b348560165461219291906156fd565b11156121d55760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401611766565b601a54600090610100900460ff16151560010361235957601b546000036122c6576040516bffffffffffffffffffffffff193360601b1660208201526034810186905260009060540160405160208183030381529060405280519060200120905061227785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601c549150849050613759565b6122bd5760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd08185b1b1bdddb1a5cdd1959604a1b6044820152606401611766565b8591505061235e565b601b5460010361235457601d546000908152601f6020908152604080832033845290915281205490036123355760405162461bcd60e51b81526020600482015260176024820152761d5cd95c881a5cc81b9bdd08185b1b1bdddb1a5cdd1959604a1b6044820152606401611766565b50601d546000908152601f602090815260408083203384529091529020545b61235e565b506019545b601a5462010000900460ff16151560010361241b57601d546000908152601e6020908152604080832033845290915290205461239a9082615539565b8611156123e95760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401611766565b601d546000908152601e60209081526040808320338452909152812080548892906124159084906156a1565b90915550505b601a546301000000900460ff1615156001036124e857856001146124815760405162461bcd60e51b815260206004820152601c60248201527f546865206e756d626572206f66206d696e7473206973206f7665722e000000006044820152606401611766565b61248a82611fe5565b6001600160a01b0316336001600160a01b0316146124df5760405162461bcd60e51b815260206004820152601260248201527113dddb995c881a5cc8191a5999995c995b9d60721b6044820152606401611766565b6124e882613656565b60205460ff1615156001036125d7576020546040516370a0823160e01b81523360048201526101009091046001600160a01b0316906370a0823190602401602060405180830381865afa158015612543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125679190615736565b6000036125d75760205460405163133f311360e31b8152336004820152600160248201526101009091046001600160a01b0316906399f9889890604401600060405180830381600087803b1580156125be57600080fd5b505af11580156125d2573d6000803e3d6000fd5b505050505b6125e133876134db565b505050505050565b600080516020615c3f8339815191526126018161326f565b5060238054911515600160a81b0260ff60a81b19909216919091179055565b602180546115179061554c565b600080516020615c3f8339815191526126458161326f565b50601755565b60006001600160a01b0382166126b95760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201526c207a65726f206164647265737360981b6064820152608401611766565b506001600160a01b03166000908152602b60205260409020546001600160401b031690565b6126e6613279565b6126f0600061376f565b565b600080516020615c3f83398151915261270a8161326f565b6115fe826137c1565b8161271d81611fe5565b6001600160a01b0316336001600160a01b0316146127905760405162461bcd60e51b815260206004820152602a60248201527f5265737472696374417070726f76653a206f7065726174696f6e206973206f6e604482015269363c903437b63232b91760b11b6064820152608401611766565b5060009182526010602052604090912055565b600080516020615c3f8339815191526127bb8161326f565b50601c55565b600080516020615c3f8339815191526127d98161326f565b8115806127e65750816001145b61282a5760405162461bcd60e51b815260206004820152601560248201527420b63637bb903634b9ba103a3cb8329032b93937b960591b6044820152606401611766565b50601b55565b606060008061283e8461264b565b90506000816001600160401b0381111561285a5761285a614fac565b604051908082528060200260200182016040528015612883578160200160208202803683370190505b50905060005b8284146128ed57612899816133d5565b156128e557856001600160a01b03166128b182611fe5565b6001600160a01b0316036128e557808285806001019650815181106128d8576128d861568b565b6020026020010181815250505b600101612889565b50949350505050565b60006114ee6003546001600160a01b031690565b600080516020615c3f8339815191526129228161326f565b50601a8054911515620100000262ff000019909216919091179055565b60009182526013602090815260408084206001600160a01b0393909316845291905290205460ff1690565b602680546115179061554c565b60606006805461164c9061554c565b600080516020615c3f83398151915261299e8161326f565b602561163883826155cc565b6129d47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361293f565b612a195760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba10309036b4b73a32b960511b6044820152606401611766565b601754816001612a2860085490565b612a329190615539565b612a3c91906156a1565b1115612a5a5760405162461bcd60e51b8152600401611766906156cd565b6115fe82826134db565b81612a6e8161340a565b602a5460ff161580612a7e575081155b612aca5760405162461bcd60e51b815260206004820152601f60248201527f736574417070726f76616c466f72416c6c2069732070726f68696269746564006044820152606401611766565b6116388383613806565b600080516020615c3f833981519152612aec8161326f565b50601855565b602580546115179061554c565b602980546115179061554c565b600080516020615c3f833981519152612b248161326f565b50601955565b836001600160a01b0381163314612b4457612b443361340a565b611ac585858585613884565b612b586128f6565b6001600160a01b0316336001600160a01b031614612b8957604051635fc483c560e01b815260040160405180910390fd5b600054600160a01b900460ff1615612bb457604051631551a48f60e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020615c3f833981519152612bee8161326f565b50601a805460ff1916911515919091179055565b600080516020615c3f833981519152612c1a8161326f565b602961163883826155cc565b602280546115179061554c565b602354606090600160a01b900460ff161515600103612cbd5760235460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa158015612c95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c1919081019061574f565b602354600160a81b900460ff161515600103612d7657602854612d509060259060269060249060ff161515600114612d045760405180602001604052806000815250612d26565b6029604051602001612d16919061582f565b6040516020818303038152906040525b6027604051602001612d3c959493929190615868565b6040516020818303038152906040526138b6565b604051602001612d60919061596a565b6040516020818303038152906040529050919050565b612d7f82613a1a565b6022604051602001612d609291906159af565b600082815260136020526040902060010154612dad8161326f565b611638838361357b565b600080516020615c3f833981519152612dcf8161326f565b50601d55565b600080516020615c3f833981519152612ded8161326f565b602261163883826155cc565b600080516020615c3f833981519152612e118161326f565b602761163883826155cc565b600080516020615c3f833981519152612e358161326f565b50601a805491151563010000000263ff00000019909216919091179055565b6000612e608383613adf565b1515600003612e71575060006115c1565b6001600160a01b038084166000908152600a602090815260408083209386168352929052205460ff165b9392505050565b600080516020615c3f833981519152612eba8161326f565b5060238054911515600160a01b0260ff60a01b19909216919091179055565b612ee1613279565b6001600160a01b038116612f465760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611766565b611cab8161376f565b600080516020615c3f833981519152612f678161326f565b50602080546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080516020615c3f833981519152612fa88161326f565b50602a805460ff1916911515919091179055565b600080516020615c3f833981519152612fd48161326f565b6115fe82613aff565b60606115c16001600160a01b03831660145b60606000612ffe8360026156fd565b6130099060026156a1565b6001600160401b0381111561302057613020614fac565b6040519080825280601f01601f19166020018201604052801561304a576020820181803683370190505b509050600360fc1b816000815181106130655761306561568b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130945761309461568b565b60200101906001600160f81b031916908160001a90535060006130b88460026156fd565b6130c39060016156a1565b90505b600181111561313b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106130f7576130f761568b565b1a60f81b82828151811061310d5761310d61568b565b60200101906001600160f81b031916908160001a90535060049490941c93613134816159cd565b90506130c6565b508315612e9b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611766565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b6001600160a01b03163b151590565b6001600160a01b0384161561187f5760008281526010602052604081205561187f565b60606114ee600d613b44565b60006001600160e01b0319821663152a902d60e11b14806115c157506301ffc9a760e01b6001600160e01b03198316146115c1565b60006001600160e01b03198216637965db0b60e01b14806115c157506115c1825b60006001600160e01b03198216630101c11560e71b14806115c157506115c182613b51565b611cab8133613b91565b336132826128f6565b6001600160a01b0316146126f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611766565b6127106001600160601b03821611156133465760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401611766565b6001600160a01b03821661339c5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401611766565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600155565b600881901c6000908152600b6020526040812054600160ff1b60ff84161c161561340157506000919050565b6115c182613bea565b6000546001600160a01b031615611cab57611cab81613c06565b61342e8282613cc8565b6115fe8282613d43565b600880546000918291829190613450911c60016156a1565b9050815b81811015613494576000818152600b602052604090205461347481613e55565b61347e90866156a1565b945050808061348c906156b4565b915050613454565b50505090565b6000806008546114ee9190615539565b6134b43382613e74565b6134d05760405162461bcd60e51b8152600401611766906159e4565b611638838383613f39565b6115fe828260405180602001604052806000815250614138565b6134ff828261293f565b6115fe5760008281526013602090815260408083206001600160a01b03851684529091529020805460ff191660011790556135373390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613585828261293f565b156115fe5760008281526013602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b61163883838360405180602001604052806000815250612b2a565b60026014540361364f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611766565b6002601455565b600061366182611fe5565b9050613671816000846001614179565b61367c600b8361318a565b60405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a46115fe816000846001614203565b6000806136ce836133d5565b61372f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401611766565b613738836143b2565b6000818152600760205260409020546001600160a01b031694909350915050565b60008261376685846143bf565b14949350505050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6137cc600d82614404565b506040516001600160a01b0382169033907f3b01c97343869ca2757fcc37cdb8f71683b0a7aed858e3755f4529a1db85729290600090a350565b61380f82614419565b80613818575080155b61387a5760405162461bcd60e51b815260206004820152602d60248201527f5265737472696374417070726f76653a2043616e206e6f7420617070726f766560448201526c103637b1b5b2b2103a37b5b2b760991b6064820152608401611766565b6115fe8282614425565b61388e3383613e74565b6138aa5760405162461bcd60e51b8152600401611766906159e4565b61187f848484846144e9565b606081516000036138d557505060408051602081019091526000815290565b6000604051806060016040528060408152602001615bff604091399050600060038451600261390491906156a1565b61390e9190615714565b6139199060046156fd565b905060006139288260206156a1565b6001600160401b0381111561393f5761393f614fac565b6040519080825280601f01601f191660200182016040528015613969576020820181803683370190505b509050818152600183018586518101602084015b818310156139d5576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161397d565b6003895106600181146139ef5760028114613a0057613a0c565b613d3d60f01b600119830152613a0c565b603d60f81b6000198301525b509398975050505050505050565b6060613a25826133d5565b613a845760405162461bcd60e51b815260206004820152602a60248201527f4552433732315073693a2055524920717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b6064820152608401611766565b6000613a8e614502565b90506000815111613aae5760405180602001604052806000815250612e9b565b80613ab884614511565b604051602001613ac9929190615a38565b6040516020818303038152906040529392505050565b600080613aeb846145a3565b9050613af783826145e5565b949350505050565b613b0a600d8261467e565b506040516001600160a01b0382169033907fbd0af1fe0a2c1c7bb340c17a284a291138979c8eeb797e176dbd1c415199af3c90600090a350565b60606000612e9b83614693565b60006001600160e01b031982166380ac58cd60e01b1480613b8257506001600160e01b03198216635b5e139f60e01b145b806115c157506115c1826131f4565b613b9b828261293f565b6115fe57613ba881612fdd565b613bb3836020612fef565b604051602001613bc4929190615a67565b60408051601f198184030181529082905262461bcd60e51b825261176691600401614ef1565b6000613bf560085490565b821080156115c15750600192915050565b6000546001600160a01b03168015801590613c2b57506000816001600160a01b03163b115b156115fe57604051633185c44d60e21b81523060048201526001600160a01b03838116602483015282169063c617113490604401602060405180830381865afa158015613c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca09190615adc565b6115fe57604051633b79c77360e21b81526001600160a01b0383166004820152602401611766565b6001600160a01b038216156115fe57613ce181836146ef565b6115fe5760405162461bcd60e51b815260206004820152602d60248201527f5265737472696374417070726f76653a2054686520636f6e747261637420697360448201526c103737ba1030b63637bbb2b21760991b6064820152608401611766565b6000613d4e82611fe5565b9050806001600160a01b0316836001600160a01b031603613dbd5760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f6044820152633bb732b960e11b6064820152608401611766565b336001600160a01b0382161480613dd95750613dd98133612e54565b613e4b5760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c00000000006064820152608401611766565b61163883836146fc565b60005b8115613e6f57600019820190911690600101613e58565b919050565b6000613e7f826133d5565b613ee35760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401611766565b6000613eee83611fe5565b9050806001600160a01b0316846001600160a01b03161480613f295750836001600160a01b0316613f1e846116fb565b6001600160a01b0316145b80613af75750613af78185612e54565b600080613f45836136c2565b91509150846001600160a01b0316826001600160a01b031614613fbf5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201526b3a1034b9903737ba1037bbb760a11b6064820152608401611766565b6001600160a01b0384166140255760405162461bcd60e51b815260206004820152602760248201527f4552433732315073693a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b6064820152608401611766565b6140328585856001614179565b61403d6000846146fc565b600061404a8460016156a1565b600881901c600090815260046020526040902054909150600160ff1b60ff83161c1615801561407a575060085481105b156140b157600081815260076020526040902080546001600160a01b0319166001600160a01b0388161790556140b160048261318a565b600084815260076020526040902080546001600160a01b0319166001600160a01b0387161790558184146140ea576140ea60048561318a565b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125e18686866001614203565b600061414360085490565b905061414f848461476a565b61415d6000858386866148f7565b61187f5760405162461bcd60e51b815260040161176690615af9565b602a5460ff16158061419257506001600160a01b038416155b806141a457506001600160a01b038316155b806141b957506001600160a01b03831661dead145b6141fe5760405162461bcd60e51b81526020600482015260166024820152751d1c985b9cd9995c881a5cc81c1c9bda1a589a5d195960521b6044820152606401611766565b61187f565b600160401b811061421357600080fd5b806001600160a01b0385161561427d576001600160a01b0385166000908152602b6020526040812080548392906142549084906001600160401b0316615b4e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506142dd565b6001600160a01b0384166000908152602b6020526040902080548291906008906142b8908490600160401b90046001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b6001600160a01b03841615614346576001600160a01b0384166000908152602b60205260408120805483929061431d9084906001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506143a6565b6001600160a01b0385166000908152602b602052604090208054829190601090614381908490600160801b90046001600160401b0316615b6e565b92506101000a8154816001600160401b0302191690836001600160401b031602179055505b611ac5858585856131c5565b60006115c1600483614a2e565b600081815b8451811015611ff1576143f0828683815181106143e3576143e361568b565b6020026020010151614b26565b9150806143fc816156b4565b9150506143c4565b6000612e9b836001600160a01b038416614b55565b60006115c13383613adf565b336001600160a01b0383160361447d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732315073693a20617070726f766520746f2063616c6c6572000000006044820152606401611766565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6144f4848484613f39565b61415d8484846001856148f7565b60606021805461164c9061554c565b6060600061451e83614c4f565b60010190506000816001600160401b0381111561453d5761453d614fac565b6040519080825280601f01601f191660200182016040528015614567576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461457157509392505050565b6001600160a01b038116600090815260116020526040812054156145dd57506001600160a01b031660009081526011602052604090205490565b505060125490565b600f5460009060ff166145fa575060016115c1565b61460383614d27565b80612e9b5750600c54604051630f8350ed60e41b81526001600160a01b038581166004830152602482018590529091169063f8350ed090604401602060405180830381865afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9b9190615adc565b6000612e9b836001600160a01b038416614d51565b6060816000018054806020026020016040519081016040528092919081815260200182805480156146e357602002820191906000526020600020905b8154815260200190600101908083116146cf575b50505050509050919050565b600080613aeb3385614da0565b600081815260096020526040902080546001600160a01b0319166001600160a01b038416908117909155819061473182611fe5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061477560085490565b9050600082116147d55760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b6064820152608401611766565b6001600160a01b0383166148375760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611766565b6148446000848385614179565b816008600082825461485691906156a1565b9091555050600081815260076020526040902080546001600160a01b0319166001600160a01b03851617905561488d60048261318a565b61489a6000848385614203565b805b6148a683836156a1565b81101561187f5760405181906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4806148ef816156b4565b91505061489c565b60006001600160a01b0385163b15614a2157506001835b61491884866156a1565b811015614a1b57604051630a85bd0160e11b81526001600160a01b0387169063150b7a02906149519033908b9086908990600401615b8e565b6020604051808303816000875af192505050801561498c575060408051601f3d908101601f1916820190925261498991810190615bcb565b60015b6149e9573d8080156149ba576040519150601f19603f3d011682016040523d82523d6000602084013e6149bf565b606091505b5080516000036149e15760405162461bcd60e51b815260040161176690615af9565b805181602001fd5b828015614a0657506001600160e01b03198116630a85bd0160e11b145b92505080614a13816156b4565b91505061490e565b50614a25565b5060015b95945050505050565b600881901c60008181526020849052604081205490919060ff808516919082181c8015614a7057614a5e81614dd2565b60ff168203600884901b179350614b1d565b60008311614add5760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b6064820152608401611766565b506000199091016000818152602086905260409020549091908015614b1857614b0581614dd2565b60ff0360ff16600884901b179350614b1d565b614a70565b50505092915050565b6000818310614b42576000828152602084905260409020612e9b565b6000838152602083905260409020612e9b565b60008181526001830160205260408120548015614c3e576000614b79600183615539565b8554909150600090614b8d90600190615539565b9050818114614bf2576000866000018281548110614bad57614bad61568b565b9060005260206000200154905080876000018481548110614bd057614bd061568b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614c0357614c03615be8565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506115c1565b60009150506115c1565b5092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310614c8e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614cba576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310614cd857662386f26fc10000830492506010015b6305f5e1008310614cf0576305f5e100830492506008015b6127108310614d0457612710830492506004015b60648310614d16576064830492506002015b600a83106115c15760010192915050565b60006115c1600d836001600160a01b03811660009081526001830160205260408120541515612e9b565b6000818152600183016020526040812054614d98575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556115c1565b5060006115c1565b60008181526010602052604081205415614dc957506000818152601060205260409020546115c1565b612e9b836145a3565b60006040518061012001604052806101008152602001615c5f610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff614e1b85614e3c565b02901c81518110614e2e57614e2e61568b565b016020015160f81c92915050565b6000808211614e4a57600080fd5b5060008190031690565b6020808252825182820181905260009190848201906040850190845b81811015614e955783516001600160a01b031683529284019291840191600101614e70565b50909695505050505050565b60005b83811015614ebc578181015183820152602001614ea4565b50506000910152565b60008151808452614edd816020860160208601614ea1565b601f01601f19169290920160200192915050565b602081526000612e9b6020830184614ec5565b6001600160e01b031981168114611cab57600080fd5b600060208284031215614f2c57600080fd5b8135612e9b81614f04565b80356001600160a01b0381168114613e6f57600080fd5b600060208284031215614f6057600080fd5b612e9b82614f37565b60008060408385031215614f7c57600080fd5b614f8583614f37565b915060208301356001600160601b0381168114614fa157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614fea57614fea614fac565b604052919050565b60006001600160401b0382111561500b5761500b614fac565b50601f01601f191660200190565b600061502c61502784614ff2565b614fc2565b905082815283838301111561504057600080fd5b828260208301376000602084830101529392505050565b60006020828403121561506957600080fd5b81356001600160401b0381111561507f57600080fd5b8201601f8101841361509057600080fd5b613af784823560208401615019565b8015158114611cab57600080fd5b6000602082840312156150bf57600080fd5b8135612e9b8161509f565b6000602082840312156150dc57600080fd5b5035919050565b600080604083850312156150f657600080fd5b6150ff83614f37565b946020939093013593505050565b60008060006060848603121561512257600080fd5b61512b84614f37565b925061513960208501614f37565b9150604084013590509250925092565b60008083601f84011261515b57600080fd5b5081356001600160401b0381111561517257600080fd5b6020830191508360208260051b8501011115611b7357600080fd5b60006001600160401b038211156151a6576151a6614fac565b5060051b60200190565b600082601f8301126151c157600080fd5b813560206151d16150278361518d565b82815260059290921b840181019181810190868411156151f057600080fd5b8286015b8481101561520b57803583529183019183016151f4565b509695505050505050565b60008060006040848603121561522b57600080fd5b83356001600160401b038082111561524257600080fd5b61524e87838801615149565b9095509350602086013591508082111561526757600080fd5b50615274868287016151b0565b9150509250925092565b6000806040838503121561529157600080fd5b50508035926020909101359150565b600080604083850312156152b357600080fd5b823591506152c360208401614f37565b90509250929050565b6000806000606084860312156152e157600080fd5b833592506020808501356001600160401b038082111561530057600080fd5b818701915087601f83011261531457600080fd5b81356153226150278261518d565b81815260059190911b8301840190848101908a83111561534157600080fd5b938501935b828510156153665761535785614f37565b82529385019390850190615346565b96505050604087013592508083111561537e57600080fd5b5050615274868287016151b0565b60006020828403121561539e57600080fd5b81356001600160401b038111156153b457600080fd5b613af7848285016151b0565b6000806000806000608086880312156153d857600080fd5b853594506020860135935060408601356001600160401b038111156153fc57600080fd5b61540888828901615149565b96999598509660600135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015614e9557835183529284019291840191600101615436565b6000806040838503121561546557600080fd5b61546e83614f37565b91506020830135614fa18161509f565b6000806000806080858703121561549457600080fd5b61549d85614f37565b93506154ab60208601614f37565b92506040850135915060608501356001600160401b038111156154cd57600080fd5b8501601f810187136154de57600080fd5b6154ed87823560208401615019565b91505092959194509250565b6000806040838503121561550c57600080fd5b61551583614f37565b91506152c360208401614f37565b634e487b7160e01b600052601160045260246000fd5b818103818111156115c1576115c1615523565b600181811c9082168061556057607f821691505b60208210810361558057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561163857600081815260208120601f850160051c810160208610156155ad5750805b601f850160051c820191505b818110156125e1578281556001016155b9565b81516001600160401b038111156155e5576155e5614fac565b6155f9816155f3845461554c565b84615586565b602080601f83116001811461562e57600084156156165750858301515b600019600386901b1c1916600185901b1785556125e1565b600085815260208120601f198616915b8281101561565d5788860151825594840194600190910190840161563e565b508582101561567b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b808201808211156115c1576115c1615523565b6000600182016156c6576156c6615523565b5060010190565b6020808252601690820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b604082015260600190565b80820281158282048414176115c1576115c1615523565b60008261573157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561574857600080fd5b5051919050565b60006020828403121561576157600080fd5b81516001600160401b0381111561577757600080fd5b8201601f8101841361578857600080fd5b805161579661502782614ff2565b8181528560208385010111156157ab57600080fd5b614a25826020830160208601614ea1565b600081546157c98161554c565b600182811680156157e157600181146157f657615825565b60ff1984168752821515830287019450615825565b8560005260208060002060005b8581101561581c5781548a820152908401908201615803565b50505082870194505b5050505092915050565b711130b734b6b0ba34b7b72fbab936111d101160711b8152600061585660128301846157bc565b61088b60f21b81526002019392505050565b607b60f81b815267113730b6b2911d1160c11b6001820152600061588f60098301886157bc565b61088b60f21b8082526e113232b9b1b934b83a34b7b7111d1160891b60028301526158bd60118301896157bc565b818152691134b6b0b3b2911d101160b11b600282015291506158e2600c8301886157bc565b91508082525084516158fb816002840160208901614ea1565b7f2261747472696275746573223a5b7b2274726169745f74797065223a22747970600292909101918201526b329116113b30b63ab2911d1160a11b6022820152615948602e8201856157bc565b62227d5d60e81b8152607d60f81b600382015260040198975050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516159a281601d850160208701614ea1565b91909101601d0192915050565b600083516159c1818460208801614ea1565b614a25818401856157bc565b6000816159dc576159dc615523565b506000190190565b60208082526034908201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f6040820152731d081bdddb995c881b9bdc88185c1c1c9bdd995960621b606082015260800190565b60008351615a4a818460208801614ea1565b835190830190615a5e818360208801614ea1565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615a9f816017850160208801614ea1565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615ad0816028840160208801614ea1565b01602801949350505050565b600060208284031215615aee57600080fd5b8151612e9b8161509f565b60208082526035908201527f4552433732315073693a207472616e7366657220746f206e6f6e20455243373260408201527418a932b1b2b4bb32b91034b6b83632b6b2b73a32b960591b606082015260800190565b6001600160401b03828116828216039080821115614c4857614c48615523565b6001600160401b03818116838216019080821115614c4857614c48615523565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615bc190830184614ec5565b9695505050505050565b600060208284031215615bdd57600080fd5b8151612e9b81614f04565b634e487b7160e01b600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec420001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a2646970667358221220a74c288e0511bb74bf5fc11eda1b27dee032b0b83931097a5023845c947c55f864736f6c63430008110033
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.