ERC-721
Overview
Max Total Supply
7,773 VISOR
Holders
6,305
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 VISORLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
VisorFactory
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {IFactory} from "../factory/IFactory.sol";import {IInstanceRegistry} from "../factory/InstanceRegistry.sol";import {ProxyFactory} from "../factory/ProxyFactory.sol";import {IUniversalVault} from "./Visor.sol";/// @title VisorFactorycontract VisorFactory is Ownable, IFactory, IInstanceRegistry, ERC721 {bytes32[] public names;mapping(bytes32=>address) public templates;bytes32 public activeTemplate;mapping(address=>address[]) public userIndex;event TemplateAdded(bytes32 indexed name, address indexed template);event TemplateActive(bytes32 indexed name, address indexed template);constructor() ERC721("VISOR", "VISOR") {}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;import "../../utils/Context.sol";import "./IERC721.sol";import "./IERC721Metadata.sol";import "./IERC721Enumerable.sol";import "./IERC721Receiver.sol";import "../../introspection/ERC165.sol";import "../../math/SafeMath.sol";import "../../utils/Address.sol";import "../../utils/EnumerableSet.sol";import "../../utils/EnumerableMap.sol";import "../../utils/Strings.sol";/*** @title ERC721 Non-Fungible Token Standard basic implementation* @dev see https://eips.ethereum.org/EIPS/eip-721*/contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {using SafeMath for uint256;using Address for address;using EnumerableSet for EnumerableSet.UintSet;using EnumerableMap for EnumerableMap.UintToAddressMap;using Strings for uint256;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.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.*/constructor () {
12345678// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;interface IFactory {function create(bytes calldata args) external returns (address instance);function create2(bytes calldata args, bytes32 salt) external returns (address instance);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";interface IInstanceRegistry {/* events */event InstanceAdded(address instance);event InstanceRemoved(address instance);/* view functions */function isInstance(address instance) external view returns (bool validity);function instanceCount() external view returns (uint256 count);function instanceAt(uint256 index) external view returns (address instance);}/// @title InstanceRegistrycontract InstanceRegistry is IInstanceRegistry {using EnumerableSet for EnumerableSet.AddressSet;/* storage */
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.7.6;import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";library ProxyFactory {/* functions */function _create(address logic, bytes memory data) internal returns (address proxy) {// deploy cloneproxy = Clones.clone(logic);// attempt initializationif (data.length > 0) {(bool success, bytes memory err) = proxy.call(data);require(success, string(err));}// explicit returnreturn proxy;}function _create2(address logic,bytes memory data,bytes32 salt
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;pragma abicoder v2;import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {Initializable} from "@openzeppelin/contracts/proxy/Initializable.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";import {Address} from "@openzeppelin/contracts/utils/Address.sol";import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";import {EIP712} from "./EIP712.sol";import {ERC1271} from "./ERC1271.sol";import {OwnableERC721} from "./OwnableERC721.sol";import {IRageQuit} from "../hypervisor/Hypervisor.sol";interface IUniversalVault {/* user events */event Locked(address delegate, address token, uint256 amount);event Unlocked(address delegate, address token, uint256 amount);event RageQuit(address delegate, address token, bool notified, string reason);/* data types */struct LockData {
123456789101112131415161718192021222324// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <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 GSN 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 payable) {return msg.sender;}function _msgData() internal view virtual returns (bytes memory) {this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;import "../../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);/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.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: MITpragma solidity ^0.7.0;import "./IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional enumeration extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/interface IERC721Enumerable is IERC721 {/*** @dev Returns the total amount of tokens stored by the contract.*/function totalSupply() external view returns (uint256);/*** @dev Returns a token ID owned by `owner` at a given `index` of its token list.* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.*/function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);/*** @dev Returns a token ID at a given `index` of all the tokens stored by the contract.* Use along with {totalSupply} to enumerate all tokens.
123456789101112131415161718192021// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/interface IERC721Receiver {/*** @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}* by `operator` from `from`, this function is called.** It must return its Solidity selector to confirm the token transfer.* If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.** The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.*/function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;import "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts may inherit from this and call {_registerInterface} to declare* their support of an interface.*/abstract contract ERC165 is IERC165 {/** bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7*/bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;/*** @dev Mapping of interface ids to whether or not it's supported.*/mapping(bytes4 => bool) private _supportedInterfaces;constructor () {// Derived contracts need only register support for their own interfaces,// we register support for ERC165 itself here
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @dev Wrappers over Solidity's arithmetic operations with added overflow* checks.** Arithmetic operations in Solidity wrap on overflow. This can easily result* in bugs, because programmers usually assume that an overflow raises an* error, which is the standard behavior in high level programming languages.* `SafeMath` restores this intuition by reverting the transaction when an* operation overflows.** Using this library instead of the unchecked operations eliminates an entire* class of bugs, so it's recommended to use it always.*/library SafeMath {/*** @dev Returns the addition of two unsigned integers, with an overflow flag.** _Available since v3.4._*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @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* ====*/function isContract(address account) internal view returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.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;* }* ```** As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @dev Library for managing an enumerable variant of Solidity's* https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]* type.** Maps have the following properties:** - Entries are added, removed, and checked for existence in constant time* (O(1)).* - Entries are enumerated in O(n). No guarantees are made on the ordering.** ```* contract Example {* // Add the library methods* using EnumerableMap for EnumerableMap.UintToAddressMap;** // Declare a set state variable* EnumerableMap.UintToAddressMap private myMap;* }* ```** As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @dev String operations.*/library Strings {/*** @dev Converts a `uint256` to its ASCII `string` representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;temp /= 10;}bytes memory buffer = new bytes(digits);uint256 index = digits - 1;
123456789101112131415161718192021222324// SPDX-License-Identifier: MITpragma solidity ^0.7.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: MITpragma solidity >=0.6.0 <0.8.0;/*** @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for* deploying minimal proxy contracts, also known as "clones".** > To simply and cheaply clone contract functionality in an immutable way, this standard specifies* > a minimal bytecode implementation that delegates all calls to a known, fixed address.** The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`* (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the* deterministic method.** _Available since v3.4._*/library Clones {/*** @dev Deploys and returns the address of a clone that mimics the behaviour of `master`.** This function uses the create opcode, which should never revert.*/function clone(address master) internal returns (address instance) {// solhint-disable-next-line no-inline-assemblyassembly {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Returns the amount of tokens in existence.*/function totalSupply() external view returns (uint256);/*** @dev Returns the amount of tokens owned by `account`.*/function balanceOf(address account) external view returns (uint256);/*** @dev Moves `amount` tokens from the caller's account to `recipient`.** Returns a boolean value indicating whether the operation succeeded.** Emits a {Transfer} event.*/function transfer(address recipient, uint256 amount) external returns (bool);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// solhint-disable-next-line compiler-versionpragma solidity >=0.4.24 <0.8.0;import "../utils/Address.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as* possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}.** CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.*/abstract contract Initializable {/*** @dev Indicates that the contract has been initialized.*/bool private _initialized;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity >=0.6.0;// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/falselibrary TransferHelper {function safeApprove(address token,address to,uint256 value) internal {// bytes4(keccak256(bytes('approve(address,uint256)')));(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));require(success && (data.length == 0 || abi.decode(data, (bool))),'TransferHelper::safeApprove: approve failed');}function safeTransfer(address token,address to,uint256 value) internal {// bytes4(keccak256(bytes('transfer(address,uint256)')));(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.0 <0.8.0;/* solhint-disable max-line-length *//*** @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.** The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,* thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding* they need in their contracts using a combination of `abi.encode` and `keccak256`.** This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding* scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA* ({_hashTypedDataV4}).** The implementation of the domain separator was designed to be as efficient as possible while still properly updating* the chain id to protect against replay attacks on an eventual fork of the chain.** NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method* https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].** _Available since v3.4._*/abstract contract EIP712 {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {ECDSA} from "@openzeppelin/contracts/cryptography/ECDSA.sol";import {Address} from "@openzeppelin/contracts/utils/Address.sol";interface IERC1271 {function isValidSignature(bytes32 _messageHash, bytes memory _signature)externalviewreturns (bytes4 magicValue);}library SignatureChecker {function isValidSignature(address signer,bytes32 hash,bytes memory signature) internal view returns (bool) {if (Address.isContract(signer)) {bytes4 selector = IERC1271.isValidSignature.selector;(bool success, bytes memory returndata) =signer.staticcall(abi.encodeWithSelector(selector, hash, signature));return success && abi.decode(returndata, (bytes4)) == selector;} else {return ECDSA.recover(hash, signature) == signer;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";/// @title OwnableERC721/// @notice Use ERC721 ownership for access controlcontract OwnableERC721 {address private _nftAddress;modifier onlyOwner() {require(owner() == msg.sender, "OwnableERC721: caller is not the owner");_;}function _setNFT(address nftAddress) internal {_nftAddress = nftAddress;}function nft() public view virtual returns (address nftAddress) {return _nftAddress;}function owner() public view virtual returns (address ownerAddress) {return IERC721(_nftAddress).ownerOf(uint256(address(this)));}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;pragma abicoder v2;import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";import {IFactory} from "../factory/IFactory.sol";import {IInstanceRegistry} from "../factory/InstanceRegistry.sol";import {IUniversalVault} from "../visor/Visor.sol";import {IRewardPool} from "./RewardPool.sol";import {Powered} from "./Powered.sol";interface IRageQuit {function rageQuit() external;}interface IHypervisor is IRageQuit {/* admin events */event HypervisorCreated(address rewardPool, address powerSwitch);event HypervisorFunded(uint256 amount, uint256 duration);event BonusTokenRegistered(address token);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.7.0;/*** @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.** These functions can be used to verify that a message was signed by the holder* of the private keys of a given address.*/library ECDSA {/*** @dev Returns the address that signed a hashed message (`hash`) with* `signature`. This address can then be used for verification purposes.** The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:* this function rejects them by requiring the `s` value to be in the lower* half order, and the `v` value to be either 27 or 28.** IMPORTANT: `hash` _must_ be the result of a hash operation for the* verification to be secure: it is possible to craft signatures that* recover to arbitrary addresses for non-hashed data. A safe way to ensure* this is by receiving a hash of the original message (which may otherwise* be too long), and then calling {toEthSignedMessageHash} on it.*/function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";import {Powered} from "./Powered.sol";interface IRewardPool {function sendERC20(address token,address to,uint256 value) external;function rescueERC20(address[] calldata tokens, address recipient) external;}/// @title Reward Pool/// @notice Vault for isolated storage of reward tokenscontract RewardPool is IRewardPool, Powered, Ownable {/* initializer */constructor(address powerSwitch) {Powered._setPowerSwitch(powerSwitch);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {IPowerSwitch} from "./PowerSwitch.sol";interface IPowered {function isOnline() external view returns (bool status);function isOffline() external view returns (bool status);function isShutdown() external view returns (bool status);function getPowerSwitch() external view returns (address powerSwitch);function getPowerController() external view returns (address controller);}/// @title Powered/// @notice Helper for calling external PowerSwitchcontract Powered is IPowered {/* storage */address private _powerSwitch;/* modifiers */
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.7.6;import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";interface IPowerSwitch {/* admin events */event PowerOn();event PowerOff();event EmergencyShutdown();/* data types */enum State {Online, Offline, Shutdown}/* admin functions */function powerOn() external;function powerOff() external;function emergencyShutdown() external;/* view functions */
12345678910111213141516{"optimizer": {"enabled": true,"runs": 1000},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"address","name":"instance","type":"address"}],"name":"InstanceAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"instance","type":"address"}],"name":"InstanceRemoved","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":"name","type":"bytes32"},{"indexed":true,"internalType":"address","name":"template","type":"address"}],"name":"TemplateActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"name","type":"bytes32"},{"indexed":true,"internalType":"address","name":"template","type":"address"}],"name":"TemplateAdded","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":"activeTemplate","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"address","name":"template","type":"address"}],"name":"addTemplate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"create","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"create","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create2","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"create2","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"createSelected","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"createSelected2","outputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTemplate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getUserVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"instanceAt","outputs":[{"internalType":"address","name":"instance","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"instanceCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"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":[{"internalType":"address","name":"instance","type":"address"}],"name":"isInstance","outputs":[{"internalType":"bool","name":"validity","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nameCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"names","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"setActive","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":"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":"bytes32","name":"","type":"bytes32"}],"name":"templates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","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":[],"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":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"vaultCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051806040016040528060058152602001642b24a9a7a960d91b815250604051806040016040528060058152602001642b24a9a7a960d91b8152506000620000606200012660201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000bc6301ffc9a760e01b6200012a565b8151620000d1906007906020850190620001b2565b508051620000e7906008906020840190620001b2565b50620000fa6380ac58cd60e01b6200012a565b6200010c635b5e139f60e01b6200012a565b6200011e63780e9d6360e01b6200012a565b50506200025e565b3390565b6001600160e01b031980821614156200018a576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001ea576000855562000235565b82601f106200020557805160ff191683800117855562000235565b8280016001018555821562000235579182015b828111156200023557825182559160200191906001019062000218565b506200024392915062000247565b5090565b5b8082111562000243576000815560010162000248565b612cb7806200026e6000396000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c80636c0360eb1161017b578063a22cb465116100d8578063d3239c221161008c578063ec56c71611610071578063ec56c716146108f3578063efc81a8c146108fb578063f2fde38b14610903576102ad565b8063d3239c2214610899578063e985e9c5146108c5576102ad565b8063bd522a4a116100bd578063bd522a4a146107e9578063c87b56dd1461080c578063cf5ba53f14610829576102ad565b8063a22cb465146106f5578063b88d4fde14610723576102ad565b806378ab7b3e1161012f5780638da5cb5b116101145780638da5cb5b146106bf5780639038ff80146106c757806395d89b41146106ed576102ad565b806378ab7b3e146106325780638c0b8db21461064f576102ad565b8063715018a611610160578063715018a6146105f65780637213d2e2146105fe57806373ff93a21461062a576102ad565b80636c0360eb146105c857806370a08231146105d0576102ad565b80631a9f09b5116102295780634622ab03116101dd5780634f6ccce7116101c25780634f6ccce7146105685780636352211e146105855780636b44e6be146105a2576102ad565b80634622ab031461051f5780634a9a7acc1461053c576102ad565b80632f745c591161020e5780632f745c59146104b5578063321c48f2146104e157806342842e0e146104e9576102ad565b80631a9f09b51461046257806323b872dd1461047f576102ad565b80630a631576116102805780630ff39f1a116102655780630ff39f1a1461042357806311d8293e1461043d57806318160ddd1461045a576102ad565b80630a631576146103e95780630c5b55f914610406576102ad565b806301ffc9a7146102b257806306fdde0314610305578063081812fc14610382578063095ea7b3146103bb575b600080fd5b6102f1600480360360208110156102c857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610929565b604080519115158252519081900360200190f35b61030d610964565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034757818101518382015260200161032f565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61039f6004803603602081101561039857600080fd5b50356109fa565b604080516001600160a01b039092168252519081900360200190f35b6103e7600480360360408110156103d157600080fd5b506001600160a01b038135169060200135610a5c565b005b61039f600480360360208110156103ff57600080fd5b5035610b37565b61039f6004803603602081101561041c57600080fd5b5035610b52565b61042b610c28565b60408051918252519081900360200190f35b61039f6004803603602081101561045357600080fd5b5035610c2e565b61042b610c3f565b6103e76004803603602081101561047857600080fd5b5035610c50565b6103e76004803603606081101561049557600080fd5b506001600160a01b03813581169160208101359091169060400135610d79565b61042b600480360360408110156104cb57600080fd5b506001600160a01b038135169060200135610dd0565b61039f610df9565b6103e7600480360360608110156104ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610e17565b61042b6004803603602081101561053557600080fd5b5035610e32565b61039f6004803603604081101561055257600080fd5b506001600160a01b038135169060200135610e53565b61042b6004803603602081101561057e57600080fd5b5035610e8b565b61039f6004803603602081101561059b57600080fd5b5035610ea1565b6102f1600480360360208110156105b857600080fd5b50356001600160a01b0316610ec9565b61030d610edd565b61042b600480360360208110156105e657600080fd5b50356001600160a01b0316610f3e565b6103e7610fa6565b6103e76004803603604081101561061457600080fd5b50803590602001356001600160a01b0316611064565b61042b611218565b61039f6004803603602081101561064857600080fd5b503561121e565b61039f6004803603604081101561066557600080fd5b81019060208101813564010000000081111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460018302840111640100000000831117156106b457600080fd5b91935091503561126d565b61039f611280565b61042b600480360360208110156106dd57600080fd5b50356001600160a01b031661128f565b61030d6112aa565b6103e76004803603604081101561070b57600080fd5b506001600160a01b038135169060200135151561130b565b6103e76004803603608081101561073957600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460018302840111640100000000831117156107a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611410945050505050565b61039f600480360360408110156107ff57600080fd5b508035906020013561146e565b61030d6004803603602081101561082257600080fd5b5035611546565b61039f6004803603602081101561083f57600080fd5b81019060208101813564010000000081111561085a57600080fd5b82018360208201111561086c57600080fd5b8035906020019184600183028401116401000000008311171561088e57600080fd5b5090925090506117c7565b61039f600480360360408110156108af57600080fd5b506001600160a01b0381351690602001356117d1565b6102f1600480360360408110156108db57600080fd5b506001600160a01b0381358116916020013516611811565b61042b61183f565b61039f611849565b6103e76004803603602081101561091957600080fd5b50356001600160a01b0316611920565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205460ff165b919050565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b820191906000526020600020905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b6000610a0582611a34565b610a405760405162461bcd60e51b815260040180806020018281038252602c815260200180612bac602c913960400191505060405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a6782610ea1565b9050806001600160a01b0316836001600160a01b03161415610aba5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c306021913960400191505060405180910390fd5b806001600160a01b0316610acc611a41565b6001600160a01b03161480610aed5750610aed81610ae8611a41565b611811565b610b285760405162461bcd60e51b8152600401808060200182810382526038815260200180612aff6038913960400191505060405180910390fd5b610b328383611a45565b505050565b600c602052600090815260409020546001600160a01b031681565b6000818152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052610b9d916001600160a01b031690611ab3565b9050610bb233826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a1919050565b600d5481565b6000610c3982610e8b565b92915050565b6000610c4b6003611c23565b905090565b610c58611a41565b6001600160a01b0316610c69611280565b6001600160a01b031614610cc4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000818152600c60205260409020546001600160a01b0316610d2d576040805162461bcd60e51b815260206004820152601760248201527f54656d706c61746520646f6573206e6f74206578697374000000000000000000604482015290519081900360640190fd5b600d8190556000818152600c60205260408082205490516001600160a01b039091169183917f15bcab9ffe886e924ddbf2486c3b19875bd3c7e3c980edf93634a250265791fb9190a350565b610d8a610d84611a41565b82611c2e565b610dc55760405162461bcd60e51b8152600401808060200182810382526031815260200180612c516031913960400191505060405180910390fd5b610b32838383611cca565b6001600160a01b0382166000908152600260205260408120610df29083611e16565b9392505050565b600d546000908152600c60205260409020546001600160a01b031690565b610b3283838360405180602001604052806000815250611410565b600b8181548110610e4257600080fd5b600091825260209091200154905081565b600e6020528160005260406000208181548110610e6f57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080610e99600384611e22565b509392505050565b6000610c3982604051806060016040528060298152602001612b616029913960039190611e3e565b6000610c39826001600160a01b0316611a34565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b60006001600160a01b038216610f855760405162461bcd60e51b815260040180806020018281038252602a815260200180612b37602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020610c3990611c23565b610fae611a41565b6001600160a01b0316610fbf611280565b6001600160a01b03161461101a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61106c611a41565b6001600160a01b031661107d611280565b6001600160a01b0316146110d8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000828152600c60205260409020546001600160a01b031615611142576040805162461bcd60e51b815260206004820152601760248201527f54656d706c61746520616c726561647920657869737473000000000000000000604482015290519081900360640190fd5b6000828152600c6020526040902080546001600160a01b0319166001600160a01b038316179055600b546111ac57600d8290556040516001600160a01b0382169083907f15bcab9ffe886e924ddbf2486c3b19875bd3c7e3c980edf93634a250265791fb90600090a35b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9018390556040516001600160a01b0383169184917f76a15abe5a3f991b7b1b9e9f9629149df5fe28934e3129cc19882221cd847c5e9190a35050565b600b5490565b600d546000908152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052610b9d916001600160a01b03169084611e4b565b60006112788261121e565b949350505050565b6000546001600160a01b031690565b6001600160a01b03166000908152600e602052604090205490565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b611313611a41565b6001600160a01b0316826001600160a01b03161415611379576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060066000611386611a41565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556113ca611a41565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61142161141b611a41565b83611c2e565b61145c5760405162461bcd60e51b8152600401808060200182810382526031815260200180612c516031913960400191505060405180910390fd5b61146884848484611f62565b50505050565b6000828152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b1790526114ba916001600160a01b03169084611e4b565b90506114cf33826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a192915050565b606061155182611a34565b61158c5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c01602f913960400191505060405180910390fd5b60008281526009602090815260408083208054825160026001831615610100026000190190921691909104601f81018590048502820185019093528281529290919083018282801561161f5780601f106115f45761010080835404028352916020019161161f565b820191906000526020600020905b81548152906001019060200180831161160257829003601f168201915b505050505090506000611630610edd565b90508051600014156116445750905061095f565b8151156117055780826040516020018083805190602001908083835b6020831061167f5780518252601f199092019160209182019101611660565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106116c75780518252601f1990920191602091820191016116a8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529250505061095f565b8061170f85611fb4565b6040516020018083805190602001908083835b602083106117415780518252601f199092019160209182019101611722565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106117895780518252601f19909201916020918201910161176a565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000610df2611849565b6001600160a01b0382166000908152600e602052604081208054839081106117f557fe5b6000918252602090912001546001600160a01b03169392505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6000610c4b610c3f565b600d546000908152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052611897916001600160a01b031690611ab3565b90506118ac33826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a190565b611928611a41565b6001600160a01b0316611939611280565b6001600160a01b031614611994576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166119d95760405162461bcd60e51b8152600401808060200182810382526026815260200180612a896026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c396003836120c3565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a7a82610ea1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611abe836120cf565b825190915015610c3957600080826001600160a01b0316846040518082805190602001908083835b60208310611b055780518252601f199092019160209182019101611ae6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150818190611bfc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bc1578181015183820152602001611ba9565b50505050905090810190601f168015611bee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505092915050565b611c1f82826040518060200160405280600081525061218a565b5050565b6000610c39826121dc565b6000611c3982611a34565b611c745760405162461bcd60e51b815260040180806020018281038252602c815260200180612ad3602c913960400191505060405180910390fd5b6000611c7f83610ea1565b9050806001600160a01b0316846001600160a01b03161480611cba5750836001600160a01b0316611caf846109fa565b6001600160a01b0316145b8061127857506112788185611811565b826001600160a01b0316611cdd82610ea1565b6001600160a01b031614611d225760405162461bcd60e51b8152600401808060200182810382526029815260200180612bd86029913960400191505060405180910390fd5b6001600160a01b038216611d675760405162461bcd60e51b8152600401808060200182810382526024815260200180612aaf6024913960400191505060405180910390fd5b611d72838383610b32565b611d7d600082611a45565b6001600160a01b0383166000908152600260205260409020611d9f90826121e0565b506001600160a01b0382166000908152600260205260409020611dc290826121ec565b50611dcf600382846121f8565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610df2838361220e565b6000808080611e318686612272565b9097909650945050505050565b60006112788484846122ed565b6000611e57848361237a565b835190915015610df257600080826001600160a01b0316856040518082805190602001908083835b60208310611e9e5780518252601f199092019160209182019101611e7f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f00576040519150601f19603f3d011682016040523d82523d6000602084013e611f05565b606091505b5091509150818190611f585760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bc1578181015183820152602001611ba9565b5050509392505050565b611f6d848484611cca565b611f7984848484612436565b6114685760405162461bcd60e51b8152600401808060200182810382526032815260200180612a576032913960400191505060405180910390fd5b606081611ff5575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261095f565b8160005b811561200d57600101600a82049150611ff9565b60008167ffffffffffffffff8111801561202657600080fd5b506040519080825280601f01601f191660200182016040528015612051576020820181803683370190505b50859350905060001982015b83156120ba57600a840660300160f81b8282806001900393508151811061208057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061205d565b50949350505050565b6000610df283836125b6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09150506001600160a01b03811661095f576040805162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fd5b61219483836125ce565b6121a16000848484612436565b610b325760405162461bcd60e51b8152600401808060200182810382526032815260200180612a576032913960400191505060405180910390fd5b5490565b6000610df283836126fc565b6000610df283836127c2565b600061127884846001600160a01b03851661280c565b815460009082106122505760405162461bcd60e51b8152600401808060200182810382526022815260200180612a356022913960400191505060405180910390fd5b82600001828154811061225f57fe5b9060005260206000200154905092915050565b8154600090819083106122b65760405162461bcd60e51b8152600401808060200182810382526022815260200180612b8a6022913960400191505060405180910390fd5b60008460000184815481106122c757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161234b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bc1578181015183820152602001611ba9565b5084600001600182038154811061235e57fe5b9060005260206000209060020201600101549150509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b038116610c39576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b600061244a846001600160a01b03166128a3565b61245657506001611278565b6000612564630a85bd0160e11b61246b611a41565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124d25781810151838201526020016124ba565b50505050905090810190601f1680156124ff5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612a57603291396001600160a01b03881691906128a9565b9050600081806020019051602081101561257d57600080fd5b50517fffffffff0000000000000000000000000000000000000000000000000000000016630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6001600160a01b038216612629576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61263281611a34565b15612684576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b61269060008383610b32565b6001600160a01b03821660009081526002602052604090206126b290826121ec565b506126bf600382846121f8565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260018301602052604081205480156127b8578354600019808301919081019060009087908390811061272f57fe5b906000526020600020015490508087600001848154811061274c57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061277c57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610c39565b6000915050610c39565b60006127ce83836125b6565b61280457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c39565b506000610c39565b600082815260018401602052604081205480612871575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610df2565b8285600001600183038154811061288457fe5b9060005260206000209060020201600101819055506000915050610df2565b3b151590565b60606112788484600085856128bd856128a3565b61290e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061294c5780518252601f19909201916020918201910161292d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146129ae576040519150601f19603f3d011682016040523d82523d6000602084013e6129b3565b606091505b50915091506129c38282866129ce565b979650505050505050565b606083156129dd575081610df2565b8251156129ed5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611bc1578181015183820152602001611ba956fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122064da48d1ef911d9d5fbbee822b825dea7021b244e522ee2dd8ddba63814b32e564736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c80636c0360eb1161017b578063a22cb465116100d8578063d3239c221161008c578063ec56c71611610071578063ec56c716146108f3578063efc81a8c146108fb578063f2fde38b14610903576102ad565b8063d3239c2214610899578063e985e9c5146108c5576102ad565b8063bd522a4a116100bd578063bd522a4a146107e9578063c87b56dd1461080c578063cf5ba53f14610829576102ad565b8063a22cb465146106f5578063b88d4fde14610723576102ad565b806378ab7b3e1161012f5780638da5cb5b116101145780638da5cb5b146106bf5780639038ff80146106c757806395d89b41146106ed576102ad565b806378ab7b3e146106325780638c0b8db21461064f576102ad565b8063715018a611610160578063715018a6146105f65780637213d2e2146105fe57806373ff93a21461062a576102ad565b80636c0360eb146105c857806370a08231146105d0576102ad565b80631a9f09b5116102295780634622ab03116101dd5780634f6ccce7116101c25780634f6ccce7146105685780636352211e146105855780636b44e6be146105a2576102ad565b80634622ab031461051f5780634a9a7acc1461053c576102ad565b80632f745c591161020e5780632f745c59146104b5578063321c48f2146104e157806342842e0e146104e9576102ad565b80631a9f09b51461046257806323b872dd1461047f576102ad565b80630a631576116102805780630ff39f1a116102655780630ff39f1a1461042357806311d8293e1461043d57806318160ddd1461045a576102ad565b80630a631576146103e95780630c5b55f914610406576102ad565b806301ffc9a7146102b257806306fdde0314610305578063081812fc14610382578063095ea7b3146103bb575b600080fd5b6102f1600480360360208110156102c857600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610929565b604080519115158252519081900360200190f35b61030d610964565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034757818101518382015260200161032f565b50505050905090810190601f1680156103745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61039f6004803603602081101561039857600080fd5b50356109fa565b604080516001600160a01b039092168252519081900360200190f35b6103e7600480360360408110156103d157600080fd5b506001600160a01b038135169060200135610a5c565b005b61039f600480360360208110156103ff57600080fd5b5035610b37565b61039f6004803603602081101561041c57600080fd5b5035610b52565b61042b610c28565b60408051918252519081900360200190f35b61039f6004803603602081101561045357600080fd5b5035610c2e565b61042b610c3f565b6103e76004803603602081101561047857600080fd5b5035610c50565b6103e76004803603606081101561049557600080fd5b506001600160a01b03813581169160208101359091169060400135610d79565b61042b600480360360408110156104cb57600080fd5b506001600160a01b038135169060200135610dd0565b61039f610df9565b6103e7600480360360608110156104ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610e17565b61042b6004803603602081101561053557600080fd5b5035610e32565b61039f6004803603604081101561055257600080fd5b506001600160a01b038135169060200135610e53565b61042b6004803603602081101561057e57600080fd5b5035610e8b565b61039f6004803603602081101561059b57600080fd5b5035610ea1565b6102f1600480360360208110156105b857600080fd5b50356001600160a01b0316610ec9565b61030d610edd565b61042b600480360360208110156105e657600080fd5b50356001600160a01b0316610f3e565b6103e7610fa6565b6103e76004803603604081101561061457600080fd5b50803590602001356001600160a01b0316611064565b61042b611218565b61039f6004803603602081101561064857600080fd5b503561121e565b61039f6004803603604081101561066557600080fd5b81019060208101813564010000000081111561068057600080fd5b82018360208201111561069257600080fd5b803590602001918460018302840111640100000000831117156106b457600080fd5b91935091503561126d565b61039f611280565b61042b600480360360208110156106dd57600080fd5b50356001600160a01b031661128f565b61030d6112aa565b6103e76004803603604081101561070b57600080fd5b506001600160a01b038135169060200135151561130b565b6103e76004803603608081101561073957600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460018302840111640100000000831117156107a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611410945050505050565b61039f600480360360408110156107ff57600080fd5b508035906020013561146e565b61030d6004803603602081101561082257600080fd5b5035611546565b61039f6004803603602081101561083f57600080fd5b81019060208101813564010000000081111561085a57600080fd5b82018360208201111561086c57600080fd5b8035906020019184600183028401116401000000008311171561088e57600080fd5b5090925090506117c7565b61039f600480360360408110156108af57600080fd5b506001600160a01b0381351690602001356117d1565b6102f1600480360360408110156108db57600080fd5b506001600160a01b0381358116916020013516611811565b61042b61183f565b61039f611849565b6103e76004803603602081101561091957600080fd5b50356001600160a01b0316611920565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526001602052604090205460ff165b919050565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b820191906000526020600020905b8154815290600101906020018083116109d357829003601f168201915b5050505050905090565b6000610a0582611a34565b610a405760405162461bcd60e51b815260040180806020018281038252602c815260200180612bac602c913960400191505060405180910390fd5b506000908152600560205260409020546001600160a01b031690565b6000610a6782610ea1565b9050806001600160a01b0316836001600160a01b03161415610aba5760405162461bcd60e51b8152600401808060200182810382526021815260200180612c306021913960400191505060405180910390fd5b806001600160a01b0316610acc611a41565b6001600160a01b03161480610aed5750610aed81610ae8611a41565b611811565b610b285760405162461bcd60e51b8152600401808060200182810382526038815260200180612aff6038913960400191505060405180910390fd5b610b328383611a45565b505050565b600c602052600090815260409020546001600160a01b031681565b6000818152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052610b9d916001600160a01b031690611ab3565b9050610bb233826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a1919050565b600d5481565b6000610c3982610e8b565b92915050565b6000610c4b6003611c23565b905090565b610c58611a41565b6001600160a01b0316610c69611280565b6001600160a01b031614610cc4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000818152600c60205260409020546001600160a01b0316610d2d576040805162461bcd60e51b815260206004820152601760248201527f54656d706c61746520646f6573206e6f74206578697374000000000000000000604482015290519081900360640190fd5b600d8190556000818152600c60205260408082205490516001600160a01b039091169183917f15bcab9ffe886e924ddbf2486c3b19875bd3c7e3c980edf93634a250265791fb9190a350565b610d8a610d84611a41565b82611c2e565b610dc55760405162461bcd60e51b8152600401808060200182810382526031815260200180612c516031913960400191505060405180910390fd5b610b32838383611cca565b6001600160a01b0382166000908152600260205260408120610df29083611e16565b9392505050565b600d546000908152600c60205260409020546001600160a01b031690565b610b3283838360405180602001604052806000815250611410565b600b8181548110610e4257600080fd5b600091825260209091200154905081565b600e6020528160005260406000208181548110610e6f57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080610e99600384611e22565b509392505050565b6000610c3982604051806060016040528060298152602001612b616029913960039190611e3e565b6000610c39826001600160a01b0316611a34565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b60006001600160a01b038216610f855760405162461bcd60e51b815260040180806020018281038252602a815260200180612b37602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600260205260409020610c3990611c23565b610fae611a41565b6001600160a01b0316610fbf611280565b6001600160a01b03161461101a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b61106c611a41565b6001600160a01b031661107d611280565b6001600160a01b0316146110d8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000828152600c60205260409020546001600160a01b031615611142576040805162461bcd60e51b815260206004820152601760248201527f54656d706c61746520616c726561647920657869737473000000000000000000604482015290519081900360640190fd5b6000828152600c6020526040902080546001600160a01b0319166001600160a01b038316179055600b546111ac57600d8290556040516001600160a01b0382169083907f15bcab9ffe886e924ddbf2486c3b19875bd3c7e3c980edf93634a250265791fb90600090a35b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9018390556040516001600160a01b0383169184917f76a15abe5a3f991b7b1b9e9f9629149df5fe28934e3129cc19882221cd847c5e9190a35050565b600b5490565b600d546000908152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052610b9d916001600160a01b03169084611e4b565b60006112788261121e565b949350505050565b6000546001600160a01b031690565b6001600160a01b03166000908152600e602052604090205490565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109f05780601f106109c5576101008083540402835291602001916109f0565b611313611a41565b6001600160a01b0316826001600160a01b03161415611379576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060066000611386611a41565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556113ca611a41565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b61142161141b611a41565b83611c2e565b61145c5760405162461bcd60e51b8152600401808060200182810382526031815260200180612c516031913960400191505060405180910390fd5b61146884848484611f62565b50505050565b6000828152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b1790526114ba916001600160a01b03169084611e4b565b90506114cf33826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a192915050565b606061155182611a34565b61158c5760405162461bcd60e51b815260040180806020018281038252602f815260200180612c01602f913960400191505060405180910390fd5b60008281526009602090815260408083208054825160026001831615610100026000190190921691909104601f81018590048502820185019093528281529290919083018282801561161f5780601f106115f45761010080835404028352916020019161161f565b820191906000526020600020905b81548152906001019060200180831161160257829003601f168201915b505050505090506000611630610edd565b90508051600014156116445750905061095f565b8151156117055780826040516020018083805190602001908083835b6020831061167f5780518252601f199092019160209182019101611660565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106116c75780518252601f1990920191602091820191016116a8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529250505061095f565b8061170f85611fb4565b6040516020018083805190602001908083835b602083106117415780518252601f199092019160209182019101611722565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106117895780518252601f19909201916020918201910161176a565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6000610df2611849565b6001600160a01b0382166000908152600e602052604081208054839081106117f557fe5b6000918252602090912001546001600160a01b03169392505050565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6000610c4b610c3f565b600d546000908152600c60209081526040808320548151600481526024810190925291810180516001600160e01b031663204a7f0760e21b179052611897916001600160a01b031690611ab3565b90506118ac33826001600160a01b0316611c05565b336000908152600e6020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038516908117909155825190815291517fee3a98e49d5a27452a99d57c90a7f73d4b2e44de88c6ded02e69c4ed964edd5a9281900390910190a190565b611928611a41565b6001600160a01b0316611939611280565b6001600160a01b031614611994576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166119d95760405162461bcd60e51b8152600401808060200182810382526026815260200180612a896026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c396003836120c3565b3390565b600081815260056020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a7a82610ea1565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611abe836120cf565b825190915015610c3957600080826001600160a01b0316846040518082805190602001908083835b60208310611b055780518252601f199092019160209182019101611ae6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b67576040519150601f19603f3d011682016040523d82523d6000602084013e611b6c565b606091505b5091509150818190611bfc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bc1578181015183820152602001611ba9565b50505050905090810190601f168015611bee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505092915050565b611c1f82826040518060200160405280600081525061218a565b5050565b6000610c39826121dc565b6000611c3982611a34565b611c745760405162461bcd60e51b815260040180806020018281038252602c815260200180612ad3602c913960400191505060405180910390fd5b6000611c7f83610ea1565b9050806001600160a01b0316846001600160a01b03161480611cba5750836001600160a01b0316611caf846109fa565b6001600160a01b0316145b8061127857506112788185611811565b826001600160a01b0316611cdd82610ea1565b6001600160a01b031614611d225760405162461bcd60e51b8152600401808060200182810382526029815260200180612bd86029913960400191505060405180910390fd5b6001600160a01b038216611d675760405162461bcd60e51b8152600401808060200182810382526024815260200180612aaf6024913960400191505060405180910390fd5b611d72838383610b32565b611d7d600082611a45565b6001600160a01b0383166000908152600260205260409020611d9f90826121e0565b506001600160a01b0382166000908152600260205260409020611dc290826121ec565b50611dcf600382846121f8565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610df2838361220e565b6000808080611e318686612272565b9097909650945050505050565b60006112788484846122ed565b6000611e57848361237a565b835190915015610df257600080826001600160a01b0316856040518082805190602001908083835b60208310611e9e5780518252601f199092019160209182019101611e7f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f00576040519150601f19603f3d011682016040523d82523d6000602084013e611f05565b606091505b5091509150818190611f585760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bc1578181015183820152602001611ba9565b5050509392505050565b611f6d848484611cca565b611f7984848484612436565b6114685760405162461bcd60e51b8152600401808060200182810382526032815260200180612a576032913960400191505060405180910390fd5b606081611ff5575060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015261095f565b8160005b811561200d57600101600a82049150611ff9565b60008167ffffffffffffffff8111801561202657600080fd5b506040519080825280601f01601f191660200182016040528015612051576020820181803683370190505b50859350905060001982015b83156120ba57600a840660300160f81b8282806001900393508151811061208057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061205d565b50949350505050565b6000610df283836125b6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09150506001600160a01b03811661095f576040805162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015290519081900360640190fd5b61219483836125ce565b6121a16000848484612436565b610b325760405162461bcd60e51b8152600401808060200182810382526032815260200180612a576032913960400191505060405180910390fd5b5490565b6000610df283836126fc565b6000610df283836127c2565b600061127884846001600160a01b03851661280c565b815460009082106122505760405162461bcd60e51b8152600401808060200182810382526022815260200180612a356022913960400191505060405180910390fd5b82600001828154811061225f57fe5b9060005260206000200154905092915050565b8154600090819083106122b65760405162461bcd60e51b8152600401808060200182810382526022815260200180612b8a6022913960400191505060405180910390fd5b60008460000184815481106122c757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161234b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611bc1578181015183820152602001611ba9565b5084600001600182038154811061235e57fe5b9060005260206000209060020201600101549150509392505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f59150506001600160a01b038116610c39576040805162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015290519081900360640190fd5b600061244a846001600160a01b03166128a3565b61245657506001611278565b6000612564630a85bd0160e11b61246b611a41565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156124d25781810151838201526020016124ba565b50505050905090810190601f1680156124ff5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612a57603291396001600160a01b03881691906128a9565b9050600081806020019051602081101561257d57600080fd5b50517fffffffff0000000000000000000000000000000000000000000000000000000016630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b6001600160a01b038216612629576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61263281611a34565b15612684576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b61269060008383610b32565b6001600160a01b03821660009081526002602052604090206126b290826121ec565b506126bf600382846121f8565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600081815260018301602052604081205480156127b8578354600019808301919081019060009087908390811061272f57fe5b906000526020600020015490508087600001848154811061274c57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061277c57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610c39565b6000915050610c39565b60006127ce83836125b6565b61280457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c39565b506000610c39565b600082815260018401602052604081205480612871575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610df2565b8285600001600183038154811061288457fe5b9060005260206000209060020201600101819055506000915050610df2565b3b151590565b60606112788484600085856128bd856128a3565b61290e576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b6020831061294c5780518252601f19909201916020918201910161292d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146129ae576040519150601f19603f3d011682016040523d82523d6000602084013e6129b3565b606091505b50915091506129c38282866129ce565b979650505050505050565b606083156129dd575081610df2565b8251156129ed5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611bc1578181015183820152602001611ba956fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122064da48d1ef911d9d5fbbee822b825dea7021b244e522ee2dd8ddba63814b32e564736f6c63430007060033
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.