Source Code
Overview
ETH Balance
30 wei
Eth Value
Less Than $0.01 (@ $2,074.96/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 64 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Approval For... | 24490700 | 22 days ago | IN | 0 ETH | 0.00009361 | ||||
| Approve | 17802235 | 958 days ago | IN | 0 ETH | 0.00049439 | ||||
| Approve | 17802220 | 958 days ago | IN | 0 ETH | 0.00044958 | ||||
| Approve | 16398063 | 1155 days ago | IN | 0 ETH | 0.00051105 | ||||
| Update Ipfs Hash | 16211977 | 1181 days ago | IN | 0 ETH | 0.00068486 | ||||
| Update Ipfs Hash | 16211940 | 1181 days ago | IN | 0 ETH | 0.00065635 | ||||
| Update Ipfs Hash | 16211933 | 1181 days ago | IN | 0 ETH | 0.00057808 | ||||
| Update Ipfs Hash | 16211930 | 1181 days ago | IN | 0 ETH | 0.00059519 | ||||
| Update Ipfs Hash | 16211921 | 1181 days ago | IN | 0 ETH | 0.00066602 | ||||
| Update Ipfs Hash | 16211919 | 1181 days ago | IN | 0 ETH | 0.00062649 | ||||
| Update Ipfs Hash | 16211893 | 1181 days ago | IN | 0 ETH | 0.00060705 | ||||
| Update Ipfs Hash | 16211874 | 1181 days ago | IN | 0 ETH | 0.00066026 | ||||
| Update Ipfs Hash | 16211868 | 1181 days ago | IN | 0 ETH | 0.00064011 | ||||
| Update Ipfs Hash | 16211842 | 1181 days ago | IN | 0 ETH | 0.00062741 | ||||
| Update Ipfs Hash | 16211836 | 1181 days ago | IN | 0 ETH | 0.00057576 | ||||
| Update Ipfs Hash | 16211829 | 1181 days ago | IN | 0 ETH | 0.0006173 | ||||
| Update Ipfs Hash | 16211822 | 1181 days ago | IN | 0 ETH | 0.00069812 | ||||
| Update Ipfs Hash | 16207549 | 1182 days ago | IN | 0 ETH | 0.0010173 | ||||
| Update Ipfs Hash | 16207531 | 1182 days ago | IN | 0 ETH | 0.00109145 | ||||
| Update Ipfs Hash | 16207507 | 1182 days ago | IN | 0 ETH | 0.00073352 | ||||
| Update Ipfs Hash | 16206584 | 1182 days ago | IN | 0 ETH | 0.00060526 | ||||
| Update Ipfs Hash | 16206226 | 1182 days ago | IN | 0 ETH | 0.00076579 | ||||
| Update Ipfs Hash | 16206216 | 1182 days ago | IN | 0 ETH | 0.00083001 | ||||
| Update Ipfs Hash | 16200301 | 1183 days ago | IN | 0 ETH | 0.00236854 | ||||
| Update Ipfs Hash | 16200288 | 1183 days ago | IN | 0 ETH | 0.00119282 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15171774 | 1334 days ago | 0.7 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.1 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer | 15171774 | 1334 days ago | 0.0095238 ETH | ||||
| Transfer From | 15171774 | 1334 days ago | 1 ETH | ||||
| - | 11967572 | 1836 days ago | 1.4 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TwistedSisterToken
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-10-31
*/
// File: @openzeppelin/contracts/math/SafeMath.sol
pragma solidity ^0.5.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, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero");
return a % b;
}
}
// File: contracts/libs/Strings.sol
pragma solidity ^0.5.12;
library Strings {
// via https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol
function doConcat(string memory _a, string memory _b) internal pure returns (string memory _concatenatedString) {
bytes memory _ba = bytes(_a);
bytes memory _bb = bytes(_b);
string memory ab = new string(_ba.length + _bb.length);
bytes memory bab = bytes(ab);
uint k = 0;
uint i = 0;
for (i = 0; i < _ba.length; i++) {
bab[k++] = _ba[i];
}
for (i = 0; i < _bb.length; i++) {
bab[k++] = _bb[i];
}
return string(bab);
}
function strConcat(string memory _a, string memory _b) internal pure returns (string memory) {
return doConcat(_a, _b);
}
}
// File: contracts/interfaces/erc721/IERC165.sol
pragma solidity ^0.5.12;
/**
* @dev Interface of the ERC165 standard, as defined in the
* [EIP](https://eips.ethereum.org/EIPS/eip-165).
*
* 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
* [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: contracts/interfaces/erc721/IERC721.sol
pragma solidity ^0.5.12;
/**
* @dev Required interface of an ERC721 compliant contract.
*/
contract IERC721 is IERC165 {
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
/**
* @dev Returns the number of NFTs in `owner`'s account.
*/
function balanceOf(address owner) public view returns (uint256 balance);
/**
* @dev Returns the owner of the NFT specified by `tokenId`.
*/
function ownerOf(uint256 tokenId) public view returns (address owner);
/**
* @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
* another (`to`).
*
*
*
* Requirements:
* - `from`, `to` cannot be zero.
* - `tokenId` must be owned by `from`.
* - If the caller is not `from`, it must be have been allowed to move this
* NFT by either `approve` or `setApproveForAll`.
*/
function safeTransferFrom(address payable from, address to, uint256 tokenId) public payable;
/**
* @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to
* another (`to`).
*
* Requirements:
* - If the caller is not `from`, it must be approved to move this NFT by
* either `approve` or `setApproveForAll`.
*/
function transferFrom(address payable from, address to, uint256 tokenId) public payable;
function approve(address to, uint256 tokenId) public;
function getApproved(uint256 tokenId) public view returns (address operator);
function setApprovalForAll(address operator, bool _approved) public;
function isApprovedForAll(address owner, address operator) public view returns (bool);
function safeTransferFrom(address payable from, address to, uint256 tokenId, bytes memory data) public payable;
}
// File: contracts/interfaces/erc721/IERC721Receiver.sol
pragma solidity ^0.5.12;
/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
contract IERC721Receiver {
/**
* @notice Handle the receipt of an NFT
* @dev The ERC721 smart contract calls this function on the recipient
* after a `safeTransfer`. This function MUST return the function selector,
* otherwise the caller will revert the transaction. The selector to be
* returned can be obtained as `this.onERC721Received.selector`. This
* function MAY throw to revert and reject the transfer.
* Note: the ERC721 contract address is always the message sender.
* @param operator The address which called `safeTransferFrom` function
* @param from The address which previously owned the token
* @param tokenId The NFT identifier which is being transferred
* @param data Additional data with no specified format
* @return bytes4 `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
*/
function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)
public returns (bytes4);
}
// File: contracts/interfaces/erc721/ERC165.sol
pragma solidity ^0.5.12;
/**
* @dev Implementation of the `IERC165` interface.
*
* Contracts may inherit from this and call `_registerInterface` to declare
* their support of an interface.
*/
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 () internal {
// Derived contracts need only register support for their own interfaces,
// we register support for ERC165 itself here
_registerInterface(_INTERFACE_ID_ERC165);
}
/**
* @dev See `IERC165.supportsInterface`.
*
* Time complexity O(1), guaranteed to always use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool) {
return _supportedInterfaces[interfaceId];
}
/**
* @dev Registers the contract as an implementer of the interface defined by
* `interfaceId`. Support of the actual ERC165 interface is automatic and
* registering its interface id is not required.
*
* See `IERC165.supportsInterface`.
*
* Requirements:
*
* - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).
*/
function _registerInterface(bytes4 interfaceId) internal {
require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
_supportedInterfaces[interfaceId] = true;
}
}
// File: @openzeppelin/contracts/utils/Address.sol
pragma solidity ^0.5.0;
/**
* @dev Collection of functions related to the address type,
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* This test is non-exhaustive, and there may be false-negatives: during the
* execution of a contract's constructor, its address will be reported as
* not containing a contract.
*
* > It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
}
// File: @openzeppelin/contracts/drafts/Counters.sol
pragma solidity ^0.5.0;
/**
* @title Counters
* @author Matt Condon (@shrugs)
* @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
* of elements in a mapping, issuing ERC721 ids, or counting request ids.
*
* Include with `using Counters for Counters.Counter;`
* Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the SafeMath
* overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never
* directly accessed.
*/
library Counters {
using SafeMath for uint256;
struct Counter {
// This variable should never be directly accessed by users of the library: interactions must be restricted to
// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
// this feature: see https://github.com/ethereum/solidity/issues/4637
uint256 _value; // default: 0
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
counter._value += 1;
}
function decrement(Counter storage counter) internal {
counter._value = counter._value.sub(1);
}
}
// File: contracts/interfaces/erc721/ERC721.sol
pragma solidity ^0.5.12;
/**
* @title ERC721 Non-Fungible Token Standard basic implementation
* @dev see https://eips.ethereum.org/EIPS/eip-721
*/
contract ERC721 is ERC165, IERC721 {
using SafeMath for uint256;
using Address for address;
using Counters for Counters.Counter;
// Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
// which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`
bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
// Mapping from token ID to owner
mapping (uint256 => address) private _tokenOwner;
// Mapping from token ID to approved address
mapping (uint256 => address) private _tokenApprovals;
// Mapping from owner to number of owned token
mapping (address => Counters.Counter) private _ownedTokensCount;
// Mapping from owner to operator approvals
mapping (address => mapping (address => bool)) private _operatorApprovals;
/*
* bytes4(keccak256('balanceOf(address)')) == 0x70a08231
* bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e
* bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3
* bytes4(keccak256('getApproved(uint256)')) == 0x081812fc
* bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465
* bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c
* bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd
* bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e
* bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde
*
* => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^
* 0xa22cb465 ^ 0xe985e9c ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd
*/
bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
constructor () public {
// register the supported interfaces to conform to ERC721 via ERC165
_registerInterface(_INTERFACE_ID_ERC721);
}
/**
* @dev Gets the balance of the specified address.
* @param owner address to query the balance of
* @return uint256 representing the amount owned by the passed address
*/
function balanceOf(address owner) public view returns (uint256) {
require(owner != address(0), "ERC721: balance query for the zero address");
return _ownedTokensCount[owner].current();
}
/**
* @dev Gets the owner of the specified token ID.
* @param tokenId uint256 ID of the token to query the owner of
* @return address currently marked as the owner of the given token ID
*/
function ownerOf(uint256 tokenId) public view returns (address) {
address owner = _tokenOwner[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
/**
* @dev Approves another address to transfer the given token ID
* The zero address indicates there is no approved address.
* There can only be one approved address per token at a given time.
* Can only be called by the token owner or an approved operator.
* @param to address to be approved for the given token ID
* @param tokenId uint256 ID of the token to be approved
*/
function approve(address to, uint256 tokenId) public {
address owner = ownerOf(tokenId);
require(to != owner, "ERC721: approval to current owner");
require(msg.sender == owner || isApprovedForAll(owner, msg.sender),
"ERC721: approve caller is not owner nor approved for all"
);
_tokenApprovals[tokenId] = to;
emit Approval(owner, to, tokenId);
}
/**
* @dev Gets the approved address for a token ID, or zero if no address set
* Reverts if the token ID does not exist.
* @param tokenId uint256 ID of the token to query the approval of
* @return address currently approved for the given token ID
*/
function getApproved(uint256 tokenId) public view returns (address) {
require(_exists(tokenId), "ERC721: approved query for nonexistent token");
return _tokenApprovals[tokenId];
}
/**
* @dev Sets or unsets the approval of a given operator
* An operator is allowed to transfer all tokens of the sender on their behalf.
* @param to operator address to set the approval
* @param approved representing the status of the approval to be set
*/
function setApprovalForAll(address to, bool approved) public {
require(to != msg.sender, "ERC721: approve to caller");
_operatorApprovals[msg.sender][to] = approved;
emit ApprovalForAll(msg.sender, to, approved);
}
/**
* @dev Tells whether an operator is approved by a given owner.
* @param owner owner address which you want to query the approval of
* @param operator operator address which you want to query the approval of
* @return bool whether the given operator is approved by the given owner
*/
function isApprovedForAll(address owner, address operator) public view returns (bool) {
return _operatorApprovals[owner][operator];
}
/**
* @dev Transfers the ownership of a given token ID to another address.
* Usage of this method is discouraged, use `safeTransferFrom` whenever possible.
* Requires the msg.sender to be the owner, approved, or operator.
* @param from current owner of the token
* @param to address to receive the ownership of the given token ID
* @param tokenId uint256 ID of the token to be transferred
*/
function transferFrom(address payable from, address to, uint256 tokenId) public payable {
//solhint-disable-next-line max-line-length
require(_isApprovedOrOwner(msg.sender, tokenId), "ERC721: transfer caller is not owner nor approved");
_transferFrom(from, to, tokenId);
}
/**
* @dev Safely transfers the ownership of a given token ID to another address
* If the target address is a contract, it must implement `onERC721Received`,
* which is called upon a safe transfer, and return the magic value
* `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise,
* the transfer is reverted.
* Requires the msg.sender to be the owner, approved, or operator
* @param from current owner of the token
* @param to address to receive the ownership of the given token ID
* @param tokenId uint256 ID of the token to be transferred
*/
function safeTransferFrom(address payable from, address to, uint256 tokenId) public payable {
safeTransferFrom(from, to, tokenId, "");
}
/**
* @dev Safely transfers the ownership of a given token ID to another address
* If the target address is a contract, it must implement `onERC721Received`,
* which is called upon a safe transfer, and return the magic value
* `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; otherwise,
* the transfer is reverted.
* Requires the msg.sender to be the owner, approved, or operator
* @param from current owner of the token
* @param to address to receive the ownership of the given token ID
* @param tokenId uint256 ID of the token to be transferred
* @param _data bytes data to send along with a safe transfer check
*/
function safeTransferFrom(address payable from, address to, uint256 tokenId, bytes memory _data) public payable {
transferFrom(from, to, tokenId);
require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
}
/**
* @dev Returns whether the specified token exists.
* @param tokenId uint256 ID of the token to query the existence of
* @return bool whether the token exists
*/
function _exists(uint256 tokenId) internal view returns (bool) {
address owner = _tokenOwner[tokenId];
return owner != address(0);
}
/**
* @dev Returns whether the given spender can transfer a given token ID.
* @param spender address of the spender to query
* @param tokenId uint256 ID of the token to be transferred
* @return bool whether the msg.sender is approved for the given token ID,
* is an operator of the owner, or is the owner of the token
*/
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
}
/**
* @dev Internal function to mint a new token.
* Reverts if the given token ID already exists.
* @param to The address that will own the minted token
* @param tokenId uint256 ID of the token to be minted
*/
function _mint(address to, uint256 tokenId) internal {
require(to != address(0), "ERC721: mint to the zero address");
require(!_exists(tokenId), "ERC721: token already minted");
_tokenOwner[tokenId] = to;
_ownedTokensCount[to].increment();
emit Transfer(address(0), to, tokenId);
}
/**
* @dev Internal function to burn a specific token.
* Reverts if the token does not exist.
* Deprecated, use _burn(uint256) instead.
* @param owner owner of the token to burn
* @param tokenId uint256 ID of the token being burned
*/
function _burn(address owner, uint256 tokenId) internal {
require(ownerOf(tokenId) == owner, "ERC721: burn of token that is not own");
_clearApproval(tokenId);
_ownedTokensCount[owner].decrement();
_tokenOwner[tokenId] = address(0);
emit Transfer(owner, address(0), tokenId);
}
/**
* @dev Internal function to burn a specific token.
* Reverts if the token does not exist.
* @param tokenId uint256 ID of the token being burned
*/
function _burn(uint256 tokenId) internal {
_burn(ownerOf(tokenId), tokenId);
}
/**
* @dev Internal function to transfer ownership of a given token ID to another address.
* As opposed to transferFrom, this imposes no restrictions on msg.sender.
* @param from current owner of the token
* @param to address to receive the ownership of the given token ID
* @param tokenId uint256 ID of the token to be transferred
*/
function _transferFrom(address payable from, address to, uint256 tokenId) internal {
require(ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
require(to != address(0), "ERC721: transfer to the zero address");
_clearApproval(tokenId);
_ownedTokensCount[from].decrement();
_ownedTokensCount[to].increment();
_tokenOwner[tokenId] = to;
emit Transfer(from, to, tokenId);
}
/**
* @dev Internal function to invoke `onERC721Received` on a target address.
* The call is not executed if the target address is not a contract.
*
* This function is deprecated.
* @param from address representing the previous owner of the given token ID
* @param to target address that will receive the tokens
* @param tokenId uint256 ID of the token to be transferred
* @param _data bytes optional data to send along with the call
* @return bool whether the call correctly returned the expected magic value
*/
function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
internal returns (bool)
{
if (!to.isContract()) {
return true;
}
bytes4 retval = IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data);
return (retval == _ERC721_RECEIVED);
}
/**
* @dev Private function to clear current approval of a given token ID.
* @param tokenId uint256 ID of the token to be transferred
*/
function _clearApproval(uint256 tokenId) private {
if (_tokenApprovals[tokenId] != address(0)) {
_tokenApprovals[tokenId] = address(0);
}
}
}
// File: contracts/interfaces/erc721/IERC721Enumerable.sol
pragma solidity ^0.5.12;
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
contract IERC721Enumerable is IERC721 {
function totalSupply() public view returns (uint256);
function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256 tokenId);
function tokenByIndex(uint256 index) public view returns (uint256);
}
// File: contracts/interfaces/erc721/ERC721Enumerable.sol
pragma solidity ^0.5.12;
/**
* @title ERC-721 Non-Fungible Token with optional enumeration extension logic
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
contract ERC721Enumerable is ERC165, ERC721, IERC721Enumerable {
// Mapping from owner to list of owned token IDs
mapping(address => uint256[]) private _ownedTokens;
// Mapping from token ID to index of the owner tokens list
mapping(uint256 => uint256) private _ownedTokensIndex;
// Array with all token ids, used for enumeration
uint256[] private _allTokens;
// Mapping from token id to position in the allTokens array
mapping(uint256 => uint256) private _allTokensIndex;
/*
* bytes4(keccak256('totalSupply()')) == 0x18160ddd
* bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59
* bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7
*
* => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63
*/
bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;
/**
* @dev Constructor function.
*/
constructor () public {
// register the supported interface to conform to ERC721Enumerable via ERC165
_registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);
}
/**
* @dev Gets the token ID at a given index of the tokens list of the requested owner.
* @param owner address owning the tokens list to be accessed
* @param index uint256 representing the index to be accessed of the requested tokens list
* @return uint256 token ID at the given index of the tokens list owned by the requested address
*/
function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {
require(index < balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
return _ownedTokens[owner][index];
}
/**
* @dev Gets the total amount of tokens stored by the contract.
* @return uint256 representing the total amount of tokens
*/
function totalSupply() public view returns (uint256) {
return _allTokens.length;
}
/**
* @dev Gets the token ID at a given index of all the tokens in this contract
* Reverts if the index is greater or equal to the total number of tokens.
* @param index uint256 representing the index to be accessed of the tokens list
* @return uint256 token ID at the given index of the tokens list
*/
function tokenByIndex(uint256 index) public view returns (uint256) {
require(index < totalSupply(), "ERC721Enumerable: global index out of bounds");
return _allTokens[index];
}
/**
* @dev Internal function to transfer ownership of a given token ID to another address.
* As opposed to transferFrom, this imposes no restrictions on msg.sender.
* @param from current owner of the token
* @param to address to receive the ownership of the given token ID
* @param tokenId uint256 ID of the token to be transferred
*/
function _transferFrom(address payable from, address to, uint256 tokenId) internal {
super._transferFrom(from, to, tokenId);
_removeTokenFromOwnerEnumeration(from, tokenId);
_addTokenToOwnerEnumeration(to, tokenId);
}
/**
* @dev Internal function to mint a new token.
* Reverts if the given token ID already exists.
* @param to address the beneficiary that will own the minted token
* @param tokenId uint256 ID of the token to be minted
*/
function _mint(address to, uint256 tokenId) internal {
super._mint(to, tokenId);
_addTokenToOwnerEnumeration(to, tokenId);
_addTokenToAllTokensEnumeration(tokenId);
}
/**
* @dev Internal function to burn a specific token.
* Reverts if the token does not exist.
* Deprecated, use _burn(uint256) instead.
* @param owner owner of the token to burn
* @param tokenId uint256 ID of the token being burned
*/
function _burn(address owner, uint256 tokenId) internal {
super._burn(owner, tokenId);
_removeTokenFromOwnerEnumeration(owner, tokenId);
// Since tokenId will be deleted, we can clear its slot in _ownedTokensIndex to trigger a gas refund
_ownedTokensIndex[tokenId] = 0;
_removeTokenFromAllTokensEnumeration(tokenId);
}
/**
* @dev Gets the list of token IDs of the requested owner.
* @param owner address owning the tokens
* @return uint256[] List of token IDs owned by the requested address
*/
function _tokensOfOwner(address owner) internal view returns (uint256[] storage) {
return _ownedTokens[owner];
}
/**
* @dev Private function to add a token to this extension's ownership-tracking data structures.
* @param to address representing the new owner of the given token ID
* @param tokenId uint256 ID of the token to be added to the tokens list of the given address
*/
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
_ownedTokensIndex[tokenId] = _ownedTokens[to].length;
_ownedTokens[to].push(tokenId);
}
/**
* @dev Private function to add a token to this extension's token tracking data structures.
* @param tokenId uint256 ID of the token to be added to the tokens list
*/
function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
_allTokensIndex[tokenId] = _allTokens.length;
_allTokens.push(tokenId);
}
/**
* @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
* while the token is not assigned a new owner, the _ownedTokensIndex mapping is _not_ updated: this allows for
* gas optimizations e.g. when performing a transfer operation (avoiding double writes).
* This has O(1) time complexity, but alters the order of the _ownedTokens array.
* @param from address representing the previous owner of the given token ID
* @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
*/
function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
// To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = _ownedTokens[from].length.sub(1);
uint256 tokenIndex = _ownedTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary
if (tokenIndex != lastTokenIndex) {
uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
_ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
}
// This also deletes the contents at the last position of the array
_ownedTokens[from].length--;
// Note that _ownedTokensIndex[tokenId] hasn't been cleared: it still points to the old slot (now occupied by
// lastTokenId, or just over the end of the array if the token was the last one).
}
/**
* @dev Private function to remove a token from this extension's token tracking data structures.
* This has O(1) time complexity, but alters the order of the _allTokens array.
* @param tokenId uint256 ID of the token to be removed from the tokens list
*/
function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
// To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
// then delete the last slot (swap and pop).
uint256 lastTokenIndex = _allTokens.length.sub(1);
uint256 tokenIndex = _allTokensIndex[tokenId];
// When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
// rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
// an 'if' statement (like in _removeTokenFromOwnerEnumeration)
uint256 lastTokenId = _allTokens[lastTokenIndex];
_allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
_allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
// This also deletes the contents at the last position of the array
_allTokens.length--;
_allTokensIndex[tokenId] = 0;
}
}
// File: contracts/interfaces/erc721/IERC721Metadata.sol
pragma solidity ^0.5.12;
/**
* @title ERC-721 Non-Fungible Token Standard, optional metadata extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
contract IERC721Metadata is IERC721 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function tokenURI(uint256 tokenId) external view returns (string memory);
}
// File: contracts/interfaces/erc721/ERC721MetadataWithoutTokenURI.sol
pragma solidity ^0.5.12;
contract ERC721MetadataWithoutTokenURI is ERC165, ERC721, IERC721Metadata {
// Token name
string private _name;
// Token symbol
string private _symbol;
/*
* bytes4(keccak256('name()')) == 0x06fdde03
* bytes4(keccak256('symbol()')) == 0x95d89b41
* bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd
*
* => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f
*/
bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;
/**
* @dev Constructor function
*/
constructor (string memory name, string memory symbol) public {
_name = name;
_symbol = symbol;
// register the supported interfaces to conform to ERC721 via ERC165
_registerInterface(_INTERFACE_ID_ERC721_METADATA);
}
/**
* @dev Gets the token name.
* @return string representing the token name
*/
function name() external view returns (string memory) {
return _name;
}
/**
* @dev Gets the token symbol.
* @return string representing the token symbol
*/
function symbol() external view returns (string memory) {
return _symbol;
}
}
// File: contracts/interfaces/erc721/CustomERC721Full.sol
pragma solidity ^0.5.12;
/**
* @title Custom version of the Full ERC721 Token contract produced by OpenZeppelin
* This implementation includes all the required, some optional functionality of the ERC721 standard and removes
* tokenURIs from the base ERC721Metadata contract.
* Moreover, it includes approve all functionality using operator terminology
* @dev see https://eips.ethereum.org/EIPS/eip-721
*/
contract CustomERC721Full is ERC721, ERC721Enumerable, ERC721MetadataWithoutTokenURI {
constructor (string memory name, string memory symbol) public ERC721MetadataWithoutTokenURI(name, symbol) {
// solhint-disable-previous-line no-empty-blocks
}
}
// File: contracts/interfaces/ITwistedSisterTokenCreator.sol
pragma solidity ^0.5.12;
contract ITwistedSisterTokenCreator {
function createTwisted(
uint256 _round,
uint256 _parameter,
string calldata _ipfsHash,
address _recipient
) external returns (uint256 _tokenId);
}
// File: contracts/interfaces/ITwistedSisterAccessControls.sol
pragma solidity ^0.5.12;
contract ITwistedSisterAccessControls {
function isWhitelisted(address account) public view returns (bool);
function isWhitelistAdmin(address account) public view returns (bool);
}
// File: contracts/interfaces/ITwistedSisterArtistCommissionRegistry.sol
pragma solidity ^0.5.12;
contract ITwistedSisterArtistCommissionRegistry {
function getCommissionSplits() external view returns (uint256[] memory _percentages, address payable[] memory _artists);
function getMaxCommission() external view returns (uint256);
}
// File: contracts/TwistedSisterArtistFundSplitter.sol
pragma solidity ^0.5.12;
contract TwistedSisterArtistFundSplitter {
using SafeMath for uint256;
event FundSplitAndTransferred(uint256 _totalValue, address payable _recipient);
ITwistedSisterArtistCommissionRegistry public artistCommissionRegistry;
constructor(ITwistedSisterArtistCommissionRegistry _artistCommissionRegistry) public {
artistCommissionRegistry = _artistCommissionRegistry;
}
function() external payable {
(uint256[] memory _percentages, address payable[] memory _artists) = artistCommissionRegistry.getCommissionSplits();
require(_percentages.length > 0, "No commissions found");
uint256 modulo = artistCommissionRegistry.getMaxCommission();
for (uint256 i = 0; i < _percentages.length; i++) {
uint256 percentage = _percentages[i];
address payable artist = _artists[i];
uint256 valueToSend = msg.value.div(modulo).mul(percentage);
(bool success, ) = artist.call.value(valueToSend)("");
require(success, "Transfer failed");
emit FundSplitAndTransferred(valueToSend, artist);
}
}
}
// File: contracts/token/TwistedSisterToken.sol
pragma solidity ^0.5.12;
contract TwistedSisterToken is CustomERC721Full, ITwistedSisterTokenCreator {
using SafeMath for uint256;
ITwistedSisterAccessControls public accessControls;
TwistedSisterArtistFundSplitter public artistFundSplitter;
string public tokenBaseURI = "";
event TwistMinted(
address indexed _recipient,
uint256 indexed _tokenId
);
struct Twist {
uint256 round;
uint256 parameter;
string ipfsHash;
}
uint256 public tokenIdPointer = 0;
uint256 public transfersEnabledFrom;
mapping(uint256 => Twist) internal twists;
modifier isWhitelisted() {
require(accessControls.isWhitelisted(msg.sender), "Caller not whitelisted");
_;
}
modifier onlyWhenTokenExists(uint256 _tokenId) {
require(_exists(_tokenId), "Token not found for ID");
_;
}
constructor (
string memory _tokenBaseURI,
ITwistedSisterAccessControls _accessControls,
uint256 _transfersEnabledFrom,
TwistedSisterArtistFundSplitter _artistFundSplitter
) public CustomERC721Full("twistedsister.io", "TWIST") {
accessControls = _accessControls;
tokenBaseURI = _tokenBaseURI;
transfersEnabledFrom = _transfersEnabledFrom;
artistFundSplitter = _artistFundSplitter;
}
function createTwisted(
uint256 _round,
uint256 _parameter,
string calldata _ipfsHash,
address _recipient
) external isWhitelisted returns (uint256 _tokenId) {
tokenIdPointer = tokenIdPointer.add(1);
uint256 tokenId = tokenIdPointer;
// Create Twist metadata
twists[tokenId] = Twist({
round: _round,
parameter: _parameter,
ipfsHash: _ipfsHash
});
_mint(_recipient, tokenId);
emit TwistMinted(_recipient, tokenId);
return tokenId;
}
function attributes(uint256 _tokenId) external onlyWhenTokenExists(_tokenId) view returns (
uint256 _round,
uint256 _parameter,
string memory _ipfsUrl
) {
Twist storage twist = twists[_tokenId];
return (
twist.round,
twist.parameter,
Strings.strConcat(tokenBaseURI, twist.ipfsHash)
);
}
function tokenURI(uint256 _tokenId) external onlyWhenTokenExists(_tokenId) view returns (string memory) {
return Strings.strConcat(tokenBaseURI, twists[_tokenId].ipfsHash);
}
function tokensOfOwner(address owner) external view returns (uint256[] memory) {
return _tokensOfOwner(owner);
}
function transferFrom(address payable from, address to, uint256 tokenId) public payable {
require(now > transfersEnabledFrom, "Transfers are currently disabled");
super.transferFrom(from, to, tokenId);
if (msg.value > 0) {
uint256 singleUnitOfValue = msg.value.div(100);
// 20% holders
uint256 holderSplit = singleUnitOfValue.mul(20);
_sendValueToTokenHolders(holderSplit);
// 10% artists
uint256 artistsSplit = singleUnitOfValue.mul(10);
(bool fsSuccess, ) = address(artistFundSplitter).call.value(artistsSplit)("");
require(fsSuccess, "Failed to send funds to the auction fund splitter");
// 70% seller
uint256 sellersSplit = singleUnitOfValue.mul(70);
(bool fromSuccess, ) = from.call.value(sellersSplit)("");
require(fromSuccess, "Failed to send funds to the seller");
}
}
function _sendValueToTokenHolders(uint256 _value) private {
uint256 individualTokenHolderSplit = _value.div(tokenIdPointer);
for(uint i = 1; i <= tokenIdPointer; i++) {
address payable owner = address(uint160(super.ownerOf(i)));
(bool ownerSuccess, ) = owner.call.value(individualTokenHolderSplit)("");
require(ownerSuccess, "Failed to send funds to a TWIST token owner");
}
}
function updateTransfersEnabledFrom(uint256 _transfersEnabledFrom) external isWhitelisted {
transfersEnabledFrom = _transfersEnabledFrom;
}
function updateTokenBaseURI(string calldata _newBaseURI) external isWhitelisted {
require(bytes(_newBaseURI).length != 0, "Base URI invalid");
tokenBaseURI = _newBaseURI;
}
function updateIpfsHash(uint256 _tokenId, string calldata _newIpfsHash) external isWhitelisted onlyWhenTokenExists(_tokenId) {
require(bytes(_newIpfsHash).length != 0, "New IPFS hash invalid");
twists[_tokenId].ipfsHash = _newIpfsHash;
}
function updateArtistFundSplitter(TwistedSisterArtistFundSplitter _artistFundSplitter) external isWhitelisted {
artistFundSplitter = _artistFundSplitter;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_tokenBaseURI","type":"string"},{"internalType":"contract ITwistedSisterAccessControls","name":"_accessControls","type":"address"},{"internalType":"uint256","name":"_transfersEnabledFrom","type":"uint256"},{"internalType":"contract TwistedSisterArtistFundSplitter","name":"_artistFundSplitter","type":"address"}],"payable":false,"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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"TwistMinted","type":"event"},{"constant":true,"inputs":[],"name":"accessControls","outputs":[{"internalType":"contract ITwistedSisterAccessControls","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"artistFundSplitter","outputs":[{"internalType":"contract TwistedSisterArtistFundSplitter","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"attributes","outputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_parameter","type":"uint256"},{"internalType":"string","name":"_ipfsUrl","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_round","type":"uint256"},{"internalType":"uint256","name":"_parameter","type":"uint256"},{"internalType":"string","name":"_ipfsHash","type":"string"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"createTwisted","outputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","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":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenIdPointer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabledFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract TwistedSisterArtistFundSplitter","name":"_artistFundSplitter","type":"address"}],"name":"updateArtistFundSplitter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_newIpfsHash","type":"string"}],"name":"updateIpfsHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"updateTokenBaseURI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_transfersEnabledFrom","type":"uint256"}],"name":"updateTransfersEnabledFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a06040819052600060808190526200001b91600d91620003b0565b506000600e553480156200002e57600080fd5b5060405162002d9338038062002d93833981810160405260808110156200005457600080fd5b81019080805160405193929190846401000000008211156200007557600080fd5b9083019060208201858111156200008b57600080fd5b8251640100000000811182820188101715620000a657600080fd5b82525081516020918201929091019080838360005b83811015620000d5578181015183820152602001620000bb565b50505050905090810190601f168015620001035780820380516001836020036101000a031916815260200191505b506040818152602083810151848301516060909501518484018452601085527f747769737465647369737465722e696f00000000000000000000000000000000838601528351808501909452600584527f54574953540000000000000000000000000000000000000000000000000000009284019290925295509293508181620001b67f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03620002e116565b620001ea7f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b03620002e116565b6200021e7f780e9d63000000000000000000000000000000000000000000000000000000006001600160e01b03620002e116565b815162000233906009906020850190620003b0565b5080516200024990600a906020840190620003b0565b506200027e7f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03620002e116565b5050600b80546001600160a01b0319166001600160a01b03871617905550508351620002b290600d906020870190620003b0565b50600f91909155600c80546001600160a01b0319166001600160a01b0390921691909117905550620004559050565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200037357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003f357805160ff191683800117855562000423565b8280016001018555821562000423579182015b828111156200042357825182559160200191906001019062000406565b506200043192915062000435565b5090565b6200045291905b808211156200043157600081556001016200043c565b90565b61292e80620004656000396000f3fe6080604052600436106101b75760003560e01c80634fd774cd116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd14610837578063d05dcc6a14610861578063e985e9c514610911578063e9bf24af1461094c576101b7565b8063a22cb46514610705578063b88d4fde14610740578063bdd7cfe714610804576101b7565b8063748365ef116100c6578063748365ef146105d65780638462151c146105eb57806395d89b411461066e5780639611c05114610683576101b7565b80634fd774cd1461054f5780636352211e1461057957806370a08231146105a3576101b7565b806323c19fbd116101595780633b3a1a7a116101335780633b3a1a7a146104c557806342842e0e146104da5780634e99b800146105105780634f6ccce714610525576101b7565b806323c19fbd146103e75780632f745c59146103fc578063309d568014610435576101b7565b8063095ea7b311610195578063095ea7b3146102d457806318160ddd1461030f5780632295ee5b1461033657806323b872dd146103b1576101b7565b806301ffc9a7146101bc57806306fdde0314610204578063081812fc1461028e575b600080fd5b3480156101c857600080fd5b506101f0600480360360208110156101df57600080fd5b50356001600160e01b031916610961565b604080519115158252519081900360200190f35b34801561021057600080fd5b50610219610980565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025357818101518382015260200161023b565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102b8600480360360208110156102b157600080fd5b5035610a17565b604080516001600160a01b039092168252519081900360200190f35b3480156102e057600080fd5b5061030d600480360360408110156102f757600080fd5b506001600160a01b038135169060200135610a79565b005b34801561031b57600080fd5b50610324610b8a565b60408051918252519081900360200190f35b34801561034257600080fd5b5061030d6004803603602081101561035957600080fd5b810190602081018135600160201b81111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460018302840111600160201b831117156103a657600080fd5b509092509050610b90565b61030d600480360360608110156103c757600080fd5b506001600160a01b03813581169160208101359091169060400135610ca7565b3480156103f357600080fd5b506102b8610e9c565b34801561040857600080fd5b506103246004803603604081101561041f57600080fd5b506001600160a01b038135169060200135610eab565b34801561044157600080fd5b506103246004803603608081101561045857600080fd5b813591602081013591810190606081016040820135600160201b81111561047e57600080fd5b82018360208201111561049057600080fd5b803590602001918460018302840111600160201b831117156104b157600080fd5b9193509150356001600160a01b0316610f2b565b3480156104d157600080fd5b506103246110d7565b61030d600480360360608110156104f057600080fd5b506001600160a01b038135811691602081013590911690604001356110dd565b34801561051c57600080fd5b506102196110f8565b34801561053157600080fd5b506103246004803603602081101561054857600080fd5b5035611186565b34801561055b57600080fd5b5061030d6004803603602081101561057257600080fd5b50356111ec565b34801561058557600080fd5b506102b86004803603602081101561059c57600080fd5b50356112b2565b3480156105af57600080fd5b50610324600480360360208110156105c657600080fd5b50356001600160a01b0316611306565b3480156105e257600080fd5b506102b861136e565b3480156105f757600080fd5b5061061e6004803603602081101561060e57600080fd5b50356001600160a01b031661137d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561065a578181015183820152602001610642565b505050509050019250505060405180910390f35b34801561067a57600080fd5b506102196113de565b34801561068f57600080fd5b5061030d600480360360408110156106a657600080fd5b81359190810190604081016020820135600160201b8111156106c757600080fd5b8201836020820111156106d957600080fd5b803590602001918460018302840111600160201b831117156106fa57600080fd5b50909250905061143f565b34801561071157600080fd5b5061030d6004803603604081101561072857600080fd5b506001600160a01b03813516906020013515156115c1565b61030d6004803603608081101561075657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460018302840111600160201b831117156107c357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061168d945050505050565b34801561081057600080fd5b5061030d6004803603602081101561082757600080fd5b50356001600160a01b03166116e5565b34801561084357600080fd5b506102196004803603602081101561085a57600080fd5b50356117c8565b34801561086d57600080fd5b5061088b6004803603602081101561088457600080fd5b5035611957565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108d45781810151838201526020016108bc565b50505050905090810190601f1680156109015780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561091d57600080fd5b506101f06004803603604081101561093457600080fd5b506001600160a01b0381358116916020013516611ac8565b34801561095857600080fd5b50610324611af6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0c5780601f106109e157610100808354040283529160200191610a0c565b820191906000526020600020905b8154815290600101906020018083116109ef57829003601f168201915b505050505090505b90565b6000610a2282611afc565b610a5d5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127cb602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610a84826112b2565b9050806001600160a01b0316836001600160a01b03161415610ad75760405162461bcd60e51b81526004018080602001828103825260218152602001806128206021913960400191505060405180910390fd5b336001600160a01b0382161480610af35750610af38133611ac8565b610b2e5760405162461bcd60e51b81526004018080602001828103825260388152602001806126fd6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b158015610bdb57600080fd5b505afa158015610bef573d6000803e3d6000fd5b505050506040513d6020811015610c0557600080fd5b5051610c51576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b80610c96576040805162461bcd60e51b815260206004820152601060248201526f10985cd948155492481a5b9d985b1a5960821b604482015290519081900360640190fd5b610ca2600d8383612529565b505050565b600f544211610cfd576040805162461bcd60e51b815260206004820181905260248201527f5472616e7366657273206172652063757272656e746c792064697361626c6564604482015290519081900360640190fd5b610d08838383611b19565b3415610ca2576000610d2134606463ffffffff611b6916565b90506000610d3682601463ffffffff611bd316565b9050610d4181611c2c565b6000610d5483600a63ffffffff611bd316565b600c546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114610da6576040519150601f19603f3d011682016040523d82523d6000602084013e610dab565b606091505b5050905080610deb5760405162461bcd60e51b81526004018080602001828103825260318152602001806128c96031913960400191505060405180910390fd5b6000610dfe85604663ffffffff611bd316565b6040519091506000906001600160a01b038a169083908381818185875af1925050503d8060008114610e4c576040519150601f19603f3d011682016040523d82523d6000602084013e610e51565b606091505b5050905080610e915760405162461bcd60e51b81526004018080602001828103825260228152602001806127886022913960400191505060405180910390fd5b505050505050505050565b600c546001600160a01b031681565b6000610eb683611306565b8210610ef35760405162461bcd60e51b815260040180806020018281038252602b815260200180612650602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610f1757fe5b906000526020600020015490505b92915050565b600b5460408051633af32abf60e01b815233600482015290516000926001600160a01b031691633af32abf916024808301926020929190829003018186803b158015610f7657600080fd5b505afa158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b5051610fec576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600e5461100090600163ffffffff611cf916565b600e8190556040805160608101825288815260208082018990528251601f8801829004820281018201845287815291928301919088908890819084018382808284376000920182905250939094525050838152601060209081526040918290208451815584820151600182015591840151805192935061108992600285019291909101906125a7565b509050506110978382611d53565b60405181906001600160a01b038516907f2feda9071495da20047859acf6710a8c42a8198da4ce96ad26eed97313c7880890600090a39695505050505050565b600e5481565b610ca28383836040518060200160405280600081525061168d565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561117e5780601f106111535761010080835404028352916020019161117e565b820191906000526020600020905b81548152906001019060200180831161116157829003601f168201915b505050505081565b6000611190610b8a565b82106111cd5760405162461bcd60e51b815260040180806020018281038252602c815260200180612872602c913960400191505060405180910390fd5b600782815481106111da57fe5b90600052602060002001549050919050565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516112ad576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600f55565b6000818152600160205260408120546001600160a01b031680610f255760405162461bcd60e51b815260040180806020018281038252602981526020018061275f6029913960400191505060405180910390fd5b60006001600160a01b03821661134d5760405162461bcd60e51b815260040180806020018281038252602a815260200180612735602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610f2590611d74565b600b546001600160a01b031681565b606061138882611d78565b8054806020026020016040519081016040528092919081815260200182805480156113d257602002820191906000526020600020905b8154815260200190600101908083116113be575b50505050509050919050565b600a8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0c5780601f106109e157610100808354040283529160200191610a0c565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b5051611500576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b8261150a81611afc565b611554576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b8161159e576040805162461bcd60e51b815260206004820152601560248201527413995dc812541194c81a185cda081a5b9d985b1a59605a1b604482015290519081900360640190fd5b60008481526010602052604090206115ba906002018484612529565b5050505050565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b611698848484610ca7565b6116a484848484611d92565b6116df5760405162461bcd60e51b815260040180806020018281038252603281526020018061267b6032913960400191505060405180910390fd5b50505050565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561173057600080fd5b505afa158015611744573d6000803e3d6000fd5b505050506040513d602081101561175a57600080fd5b50516117a6576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6060816117d481611afc565b61181e576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261195093909290918301828280156118ab5780601f10611880576101008083540402835291602001916118ab565b820191906000526020600020905b81548152906001019060200180831161188e57829003601f168201915b5050506000878152601060209081526040918290206002908101805484516001821615610100026000190190911692909204601f810184900484028301840190945283825290945092508301828280156119465780601f1061191b57610100808354040283529160200191611946565b820191906000526020600020905b81548152906001019060200180831161192957829003601f168201915b5050505050611ec6565b9392505050565b60008060608361196681611afc565b6119b0576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b6000858152601060209081526040918290208054600180830154600d80548751600294821615610100026000190190911693909304601f8101879004870284018701909752868352939592949093611ab9939091830182828015611a555780601f10611a2a57610100808354040283529160200191611a55565b820191906000526020600020905b815481529060010190602001808311611a3857829003601f168201915b50505060028088018054604080516020601f60001961010060018716150201909416959095049283018590048502810185019091528181529450909250908301828280156119465780601f1061191b57610100808354040283529160200191611946565b94509450945050509193909250565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600f5481565b6000908152600160205260409020546001600160a01b0316151590565b611b233382611ed2565b611b5e5760405162461bcd60e51b81526004018080602001828103825260318152602001806128416031913960400191505060405180910390fd5b610ca2838383611f6e565b6000808211611bbf576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611bca57fe5b04949350505050565b600082611be257506000610f25565b82820282848281611bef57fe5b04146119505760405162461bcd60e51b81526004018080602001828103825260218152602001806127aa6021913960400191505060405180910390fd5b6000611c43600e5483611b6990919063ffffffff16565b905060015b600e548111610ca2576000611c5c826112b2565b6040519091506000906001600160a01b0383169085908381818185875af1925050503d8060008114611caa576040519150601f19603f3d011682016040523d82523d6000602084013e611caf565b606091505b5050905080611cef5760405162461bcd60e51b815260040180806020018281038252602b81526020018061289e602b913960400191505060405180910390fd5b5050600101611c48565b600082820183811015611950576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611d5d8282611f8d565b611d6782826120be565b611d70816120fc565b5050565b5490565b6001600160a01b0316600090815260056020526040902090565b6000611da6846001600160a01b0316612140565b611db257506001611ebe565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611e2c578181015183820152602001611e14565b50505050905090810190601f168015611e595780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611e7b57600080fd5b505af1158015611e8f573d6000803e3d6000fd5b505050506040513d6020811015611ea557600080fd5b50516001600160e01b031916630a85bd0160e11b149150505b949350505050565b60606119508383612146565b6000611edd82611afc565b611f185760405162461bcd60e51b815260040180806020018281038252602c8152602001806126d1602c913960400191505060405180910390fd5b6000611f23836112b2565b9050806001600160a01b0316846001600160a01b03161480611f5e5750836001600160a01b0316611f5384610a17565b6001600160a01b0316145b80611ebe5750611ebe8185611ac8565b611f7983838361223d565b611f838382612381565b610ca282826120be565b6001600160a01b038216611fe8576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ff181611afc565b15612043576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120829061246f565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6060808390506060839050606081518351016040519080825280601f01601f191660200182016040528015612182576020820181803883390190505b509050806000805b85518110156121db5785818151811061219f57fe5b602001015160f81c60f81b8383806001019450815181106121bc57fe5b60200101906001600160f81b031916908160001a90535060010161218a565b5060005b8451811015612230578481815181106121f457fe5b602001015160f81c60f81b83838060010194508151811061221157fe5b60200101906001600160f81b031916908160001a9053506001016121df565b5090979650505050505050565b826001600160a01b0316612250826112b2565b6001600160a01b0316146122955760405162461bcd60e51b81526004018080602001828103825260298152602001806127f76029913960400191505060405180910390fd5b6001600160a01b0382166122da5760405162461bcd60e51b81526004018080602001828103825260248152602001806126ad6024913960400191505060405180910390fd5b6122e381612478565b6001600160a01b0383166000908152600360205260409020612304906124b5565b6001600160a01b03821660009081526003602052604090206123259061246f565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546123ab90600163ffffffff6124cc16565b600083815260066020526040902054909150808214612446576001600160a01b03841660009081526005602052604081208054849081106123e857fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061242657fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b03841660009081526005602052604090208054906115ba906000198301612615565b80546001019055565b6000818152600260205260409020546001600160a01b0316156124b257600081815260026020526040902080546001600160a01b03191690555b50565b80546124c890600163ffffffff6124cc16565b9055565b600082821115612523576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061256a5782800160ff19823516178555612597565b82800160010185558215612597579182015b8281111561259757823582559160200191906001019061257c565b506125a3929150612635565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125e857805160ff1916838001178555612597565b82800160010185558215612597579182015b828111156125975782518255916020019190600101906125fa565b815481835581811115610ca257600083815260209020610ca29181019083015b610a1491905b808211156125a3576000815560010161263b56fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4661696c656420746f2073656e642066756e647320746f207468652073656c6c6572536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734661696c656420746f2073656e642066756e647320746f206120545749535420746f6b656e206f776e65724661696c656420746f2073656e642066756e647320746f207468652061756374696f6e2066756e642073706c6974746572a265627a7a72315820fb1ef970b4ce198565b2c4ce69bc781f255991b8346eeda8f5c99b62718b7edf64736f6c634300050c0032000000000000000000000000000000000000000000000000000000000000008000000000000000000000000095a825196046f2322943d06119eb530b1bb064bb000000000000000000000000000000000000000000000000000000005e2a257000000000000000000000000031130d3ad9e408d502a799495e7d24073743b5d2000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f697066732e696e667572612e696f2f697066732f00000000
Deployed Bytecode
0x6080604052600436106101b75760003560e01c80634fd774cd116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd14610837578063d05dcc6a14610861578063e985e9c514610911578063e9bf24af1461094c576101b7565b8063a22cb46514610705578063b88d4fde14610740578063bdd7cfe714610804576101b7565b8063748365ef116100c6578063748365ef146105d65780638462151c146105eb57806395d89b411461066e5780639611c05114610683576101b7565b80634fd774cd1461054f5780636352211e1461057957806370a08231146105a3576101b7565b806323c19fbd116101595780633b3a1a7a116101335780633b3a1a7a146104c557806342842e0e146104da5780634e99b800146105105780634f6ccce714610525576101b7565b806323c19fbd146103e75780632f745c59146103fc578063309d568014610435576101b7565b8063095ea7b311610195578063095ea7b3146102d457806318160ddd1461030f5780632295ee5b1461033657806323b872dd146103b1576101b7565b806301ffc9a7146101bc57806306fdde0314610204578063081812fc1461028e575b600080fd5b3480156101c857600080fd5b506101f0600480360360208110156101df57600080fd5b50356001600160e01b031916610961565b604080519115158252519081900360200190f35b34801561021057600080fd5b50610219610980565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025357818101518382015260200161023b565b50505050905090810190601f1680156102805780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029a57600080fd5b506102b8600480360360208110156102b157600080fd5b5035610a17565b604080516001600160a01b039092168252519081900360200190f35b3480156102e057600080fd5b5061030d600480360360408110156102f757600080fd5b506001600160a01b038135169060200135610a79565b005b34801561031b57600080fd5b50610324610b8a565b60408051918252519081900360200190f35b34801561034257600080fd5b5061030d6004803603602081101561035957600080fd5b810190602081018135600160201b81111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460018302840111600160201b831117156103a657600080fd5b509092509050610b90565b61030d600480360360608110156103c757600080fd5b506001600160a01b03813581169160208101359091169060400135610ca7565b3480156103f357600080fd5b506102b8610e9c565b34801561040857600080fd5b506103246004803603604081101561041f57600080fd5b506001600160a01b038135169060200135610eab565b34801561044157600080fd5b506103246004803603608081101561045857600080fd5b813591602081013591810190606081016040820135600160201b81111561047e57600080fd5b82018360208201111561049057600080fd5b803590602001918460018302840111600160201b831117156104b157600080fd5b9193509150356001600160a01b0316610f2b565b3480156104d157600080fd5b506103246110d7565b61030d600480360360608110156104f057600080fd5b506001600160a01b038135811691602081013590911690604001356110dd565b34801561051c57600080fd5b506102196110f8565b34801561053157600080fd5b506103246004803603602081101561054857600080fd5b5035611186565b34801561055b57600080fd5b5061030d6004803603602081101561057257600080fd5b50356111ec565b34801561058557600080fd5b506102b86004803603602081101561059c57600080fd5b50356112b2565b3480156105af57600080fd5b50610324600480360360208110156105c657600080fd5b50356001600160a01b0316611306565b3480156105e257600080fd5b506102b861136e565b3480156105f757600080fd5b5061061e6004803603602081101561060e57600080fd5b50356001600160a01b031661137d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561065a578181015183820152602001610642565b505050509050019250505060405180910390f35b34801561067a57600080fd5b506102196113de565b34801561068f57600080fd5b5061030d600480360360408110156106a657600080fd5b81359190810190604081016020820135600160201b8111156106c757600080fd5b8201836020820111156106d957600080fd5b803590602001918460018302840111600160201b831117156106fa57600080fd5b50909250905061143f565b34801561071157600080fd5b5061030d6004803603604081101561072857600080fd5b506001600160a01b03813516906020013515156115c1565b61030d6004803603608081101561075657600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460018302840111600160201b831117156107c357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061168d945050505050565b34801561081057600080fd5b5061030d6004803603602081101561082757600080fd5b50356001600160a01b03166116e5565b34801561084357600080fd5b506102196004803603602081101561085a57600080fd5b50356117c8565b34801561086d57600080fd5b5061088b6004803603602081101561088457600080fd5b5035611957565b6040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156108d45781810151838201526020016108bc565b50505050905090810190601f1680156109015780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561091d57600080fd5b506101f06004803603604081101561093457600080fd5b506001600160a01b0381358116916020013516611ac8565b34801561095857600080fd5b50610324611af6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0c5780601f106109e157610100808354040283529160200191610a0c565b820191906000526020600020905b8154815290600101906020018083116109ef57829003601f168201915b505050505090505b90565b6000610a2282611afc565b610a5d5760405162461bcd60e51b815260040180806020018281038252602c8152602001806127cb602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610a84826112b2565b9050806001600160a01b0316836001600160a01b03161415610ad75760405162461bcd60e51b81526004018080602001828103825260218152602001806128206021913960400191505060405180910390fd5b336001600160a01b0382161480610af35750610af38133611ac8565b610b2e5760405162461bcd60e51b81526004018080602001828103825260388152602001806126fd6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b158015610bdb57600080fd5b505afa158015610bef573d6000803e3d6000fd5b505050506040513d6020811015610c0557600080fd5b5051610c51576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b80610c96576040805162461bcd60e51b815260206004820152601060248201526f10985cd948155492481a5b9d985b1a5960821b604482015290519081900360640190fd5b610ca2600d8383612529565b505050565b600f544211610cfd576040805162461bcd60e51b815260206004820181905260248201527f5472616e7366657273206172652063757272656e746c792064697361626c6564604482015290519081900360640190fd5b610d08838383611b19565b3415610ca2576000610d2134606463ffffffff611b6916565b90506000610d3682601463ffffffff611bd316565b9050610d4181611c2c565b6000610d5483600a63ffffffff611bd316565b600c546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114610da6576040519150601f19603f3d011682016040523d82523d6000602084013e610dab565b606091505b5050905080610deb5760405162461bcd60e51b81526004018080602001828103825260318152602001806128c96031913960400191505060405180910390fd5b6000610dfe85604663ffffffff611bd316565b6040519091506000906001600160a01b038a169083908381818185875af1925050503d8060008114610e4c576040519150601f19603f3d011682016040523d82523d6000602084013e610e51565b606091505b5050905080610e915760405162461bcd60e51b81526004018080602001828103825260228152602001806127886022913960400191505060405180910390fd5b505050505050505050565b600c546001600160a01b031681565b6000610eb683611306565b8210610ef35760405162461bcd60e51b815260040180806020018281038252602b815260200180612650602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610f1757fe5b906000526020600020015490505b92915050565b600b5460408051633af32abf60e01b815233600482015290516000926001600160a01b031691633af32abf916024808301926020929190829003018186803b158015610f7657600080fd5b505afa158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b5051610fec576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600e5461100090600163ffffffff611cf916565b600e8190556040805160608101825288815260208082018990528251601f8801829004820281018201845287815291928301919088908890819084018382808284376000920182905250939094525050838152601060209081526040918290208451815584820151600182015591840151805192935061108992600285019291909101906125a7565b509050506110978382611d53565b60405181906001600160a01b038516907f2feda9071495da20047859acf6710a8c42a8198da4ce96ad26eed97313c7880890600090a39695505050505050565b600e5481565b610ca28383836040518060200160405280600081525061168d565b600d805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561117e5780601f106111535761010080835404028352916020019161117e565b820191906000526020600020905b81548152906001019060200180831161116157829003601f168201915b505050505081565b6000611190610b8a565b82106111cd5760405162461bcd60e51b815260040180806020018281038252602c815260200180612872602c913960400191505060405180910390fd5b600782815481106111da57fe5b90600052602060002001549050919050565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d602081101561126157600080fd5b50516112ad576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600f55565b6000818152600160205260408120546001600160a01b031680610f255760405162461bcd60e51b815260040180806020018281038252602981526020018061275f6029913960400191505060405180910390fd5b60006001600160a01b03821661134d5760405162461bcd60e51b815260040180806020018281038252602a815260200180612735602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610f2590611d74565b600b546001600160a01b031681565b606061138882611d78565b8054806020026020016040519081016040528092919081815260200182805480156113d257602002820191906000526020600020905b8154815260200190600101908083116113be575b50505050509050919050565b600a8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a0c5780601f106109e157610100808354040283529160200191610a0c565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b5051611500576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b8261150a81611afc565b611554576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b8161159e576040805162461bcd60e51b815260206004820152601560248201527413995dc812541194c81a185cda081a5b9d985b1a59605a1b604482015290519081900360640190fd5b60008481526010602052604090206115ba906002018484612529565b5050505050565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b611698848484610ca7565b6116a484848484611d92565b6116df5760405162461bcd60e51b815260040180806020018281038252603281526020018061267b6032913960400191505060405180910390fd5b50505050565b600b5460408051633af32abf60e01b815233600482015290516001600160a01b0390921691633af32abf91602480820192602092909190829003018186803b15801561173057600080fd5b505afa158015611744573d6000803e3d6000fd5b505050506040513d602081101561175a57600080fd5b50516117a6576040805162461bcd60e51b815260206004820152601660248201527510d85b1b195c881b9bdd081dda1a5d195b1a5cdd195960521b604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6060816117d481611afc565b61181e576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815261195093909290918301828280156118ab5780601f10611880576101008083540402835291602001916118ab565b820191906000526020600020905b81548152906001019060200180831161188e57829003601f168201915b5050506000878152601060209081526040918290206002908101805484516001821615610100026000190190911692909204601f810184900484028301840190945283825290945092508301828280156119465780601f1061191b57610100808354040283529160200191611946565b820191906000526020600020905b81548152906001019060200180831161192957829003601f168201915b5050505050611ec6565b9392505050565b60008060608361196681611afc565b6119b0576040805162461bcd60e51b8152602060048201526016602482015275151bdad95b881b9bdd08199bdd5b9908199bdc88125160521b604482015290519081900360640190fd5b6000858152601060209081526040918290208054600180830154600d80548751600294821615610100026000190190911693909304601f8101879004870284018701909752868352939592949093611ab9939091830182828015611a555780601f10611a2a57610100808354040283529160200191611a55565b820191906000526020600020905b815481529060010190602001808311611a3857829003601f168201915b50505060028088018054604080516020601f60001961010060018716150201909416959095049283018590048502810185019091528181529450909250908301828280156119465780601f1061191b57610100808354040283529160200191611946565b94509450945050509193909250565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600f5481565b6000908152600160205260409020546001600160a01b0316151590565b611b233382611ed2565b611b5e5760405162461bcd60e51b81526004018080602001828103825260318152602001806128416031913960400191505060405180910390fd5b610ca2838383611f6e565b6000808211611bbf576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611bca57fe5b04949350505050565b600082611be257506000610f25565b82820282848281611bef57fe5b04146119505760405162461bcd60e51b81526004018080602001828103825260218152602001806127aa6021913960400191505060405180910390fd5b6000611c43600e5483611b6990919063ffffffff16565b905060015b600e548111610ca2576000611c5c826112b2565b6040519091506000906001600160a01b0383169085908381818185875af1925050503d8060008114611caa576040519150601f19603f3d011682016040523d82523d6000602084013e611caf565b606091505b5050905080611cef5760405162461bcd60e51b815260040180806020018281038252602b81526020018061289e602b913960400191505060405180910390fd5b5050600101611c48565b600082820183811015611950576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b611d5d8282611f8d565b611d6782826120be565b611d70816120fc565b5050565b5490565b6001600160a01b0316600090815260056020526040902090565b6000611da6846001600160a01b0316612140565b611db257506001611ebe565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611e2c578181015183820152602001611e14565b50505050905090810190601f168015611e595780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611e7b57600080fd5b505af1158015611e8f573d6000803e3d6000fd5b505050506040513d6020811015611ea557600080fd5b50516001600160e01b031916630a85bd0160e11b149150505b949350505050565b60606119508383612146565b6000611edd82611afc565b611f185760405162461bcd60e51b815260040180806020018281038252602c8152602001806126d1602c913960400191505060405180910390fd5b6000611f23836112b2565b9050806001600160a01b0316846001600160a01b03161480611f5e5750836001600160a01b0316611f5384610a17565b6001600160a01b0316145b80611ebe5750611ebe8185611ac8565b611f7983838361223d565b611f838382612381565b610ca282826120be565b6001600160a01b038216611fe8576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611ff181611afc565b15612043576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120829061246f565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6060808390506060839050606081518351016040519080825280601f01601f191660200182016040528015612182576020820181803883390190505b509050806000805b85518110156121db5785818151811061219f57fe5b602001015160f81c60f81b8383806001019450815181106121bc57fe5b60200101906001600160f81b031916908160001a90535060010161218a565b5060005b8451811015612230578481815181106121f457fe5b602001015160f81c60f81b83838060010194508151811061221157fe5b60200101906001600160f81b031916908160001a9053506001016121df565b5090979650505050505050565b826001600160a01b0316612250826112b2565b6001600160a01b0316146122955760405162461bcd60e51b81526004018080602001828103825260298152602001806127f76029913960400191505060405180910390fd5b6001600160a01b0382166122da5760405162461bcd60e51b81526004018080602001828103825260248152602001806126ad6024913960400191505060405180910390fd5b6122e381612478565b6001600160a01b0383166000908152600360205260409020612304906124b5565b6001600160a01b03821660009081526003602052604090206123259061246f565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546123ab90600163ffffffff6124cc16565b600083815260066020526040902054909150808214612446576001600160a01b03841660009081526005602052604081208054849081106123e857fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061242657fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b03841660009081526005602052604090208054906115ba906000198301612615565b80546001019055565b6000818152600260205260409020546001600160a01b0316156124b257600081815260026020526040902080546001600160a01b03191690555b50565b80546124c890600163ffffffff6124cc16565b9055565b600082821115612523576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061256a5782800160ff19823516178555612597565b82800160010185558215612597579182015b8281111561259757823582559160200191906001019061257c565b506125a3929150612635565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125e857805160ff1916838001178555612597565b82800160010185558215612597579182015b828111156125975782518255916020019190600101906125fa565b815481835581811115610ca257600083815260209020610ca29181019083015b610a1491905b808211156125a3576000815560010161263b56fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4661696c656420746f2073656e642066756e647320746f207468652073656c6c6572536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734661696c656420746f2073656e642066756e647320746f206120545749535420746f6b656e206f776e65724661696c656420746f2073656e642066756e647320746f207468652061756374696f6e2066756e642073706c6974746572a265627a7a72315820fb1ef970b4ce198565b2c4ce69bc781f255991b8346eeda8f5c99b62718b7edf64736f6c634300050c0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000095a825196046f2322943d06119eb530b1bb064bb000000000000000000000000000000000000000000000000000000005e2a257000000000000000000000000031130d3ad9e408d502a799495e7d24073743b5d2000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f697066732e696e667572612e696f2f697066732f00000000
-----Decoded View---------------
Arg [0] : _tokenBaseURI (string): https://ipfs.infura.io/ipfs/
Arg [1] : _accessControls (address): 0x95A825196046f2322943D06119EB530B1bb064Bb
Arg [2] : _transfersEnabledFrom (uint256): 1579820400
Arg [3] : _artistFundSplitter (address): 0x31130D3Ad9e408D502a799495e7D24073743b5D2
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000095a825196046f2322943d06119eb530b1bb064bb
Arg [2] : 000000000000000000000000000000000000000000000000000000005e2a2570
Arg [3] : 00000000000000000000000031130d3ad9e408d502a799495e7d24073743b5d2
Arg [4] : 000000000000000000000000000000000000000000000000000000000000001c
Arg [5] : 68747470733a2f2f697066732e696e667572612e696f2f697066732f00000000
Deployed Bytecode Sourcemap
39936:4957:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9729:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9729:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9729:135:0;-1:-1:-1;;;;;;9729:135:0;;:::i;:::-;;;;;;;;;;;;;;;;;;36568:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36568:85:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;36568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17158:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17158:204:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17158:204:0;;:::i;:::-;;;;-1:-1:-1;;;;;17158:204:0;;;;;;;;;;;;;;16444:421;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16444:421:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16444:421:0;;;;;;;;:::i;:::-;;28294:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28294:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;44250:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44250:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;44250:195:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;44250:195:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;44250:195:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;44250:195:0;;-1:-1:-1;44250:195:0;-1:-1:-1;44250:195:0;:::i;42643:983::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;42643:983:0;;;;;;;;;;;;;;;;;:::i;40111:57::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40111:57:0;;;:::i;27903:232::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27903:232:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27903:232:0;;;;;;;;:::i;41312:596::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41312:596:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;41312:596:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;41312:596:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;41312:596:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;41312:596:0;;-1:-1:-1;41312:596:0;-1:-1:-1;41312:596:0;-1:-1:-1;;;;;41312:596:0;;:::i;40429:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40429:33:0;;;:::i;19787:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19787:150:0;;;;;;;;;;;;;;;;;:::i;40177:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40177:31:0;;;:::i;28736:199::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28736:199:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28736:199:0;;:::i;44089:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44089:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44089:153:0;;:::i;15785:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15785:228:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15785:228:0;;:::i;15348:211::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15348:211:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15348:211:0;-1:-1:-1;;;;;15348:211:0;;:::i;40054:50::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40054:50:0;;;:::i;42509:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42509:126:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42509:126:0;-1:-1:-1;;;;;42509:126:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;42509:126:0;;;;;;;;;;;;;;;;;36768:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36768:89:0;;;:::i;44453:260::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44453:260:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;44453:260:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;44453:260:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;44453:260:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;44453:260:0;;-1:-1:-1;44453:260:0;-1:-1:-1;44453:260:0;:::i;17663:248::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17663:248:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17663:248:0;;;;;;;;;;:::i;20656:284::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;20656:284:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;20656:284:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20656:284:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20656:284:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20656:284:0;;-1:-1:-1;20656:284:0;;-1:-1:-1;;;;;20656:284:0:i;44721:169::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;44721:169:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;44721:169:0;-1:-1:-1;;;;;44721:169:0;;:::i;42313:188::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42313:188:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;42313:188:0;;:::i;41916:389::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41916:389:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;41916:389:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;41916:389:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18241:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18241:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18241:147:0;;;;;;;;;;:::i;40469:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40469:35:0;;;:::i;9729:135::-;-1:-1:-1;;;;;;9823:33:0;9799:4;9823:33;;;;;;;;;;;;;;9729:135::o;36568:85::-;36640:5;36633:12;;;;;;;;-1:-1:-1;;36633:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36607:13;;36633:12;;36640:5;;36633:12;;36640:5;36633:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36568:85;;:::o;17158:204::-;17217:7;17245:16;17253:7;17245;:16::i;:::-;17237:73;;;;-1:-1:-1;;;17237:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17330:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;17330:24:0;;17158:204::o;16444:421::-;16508:13;16524:16;16532:7;16524;:16::i;:::-;16508:32;;16565:5;-1:-1:-1;;;;;16559:11:0;:2;-1:-1:-1;;;;;16559:11:0;;;16551:57;;;;-1:-1:-1;;;16551:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16629:10;-1:-1:-1;;;;;16629:19:0;;;;:58;;;16652:35;16669:5;16676:10;16652:16;:35::i;:::-;16621:150;;;;-1:-1:-1;;;16621:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16784:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;16784:29:0;-1:-1:-1;;;;;16784:29:0;;;;;;;;;16829:28;;16784:24;;16829:28;;;;;;;16444:421;;;:::o;28294:96::-;28365:10;:17;28294:96;:::o;44250:195::-;40607:14;;:40;;;-1:-1:-1;;;40607:40:0;;40636:10;40607:40;;;;;;-1:-1:-1;;;;;40607:14:0;;;;:28;;:40;;;;;;;;;;;;;;;:14;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40607:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40607:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40607:40:0;40599:75;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;;;;44349:30;44341:59;;;;;-1:-1:-1;;;44341:59:0;;;;;;;;;;;;-1:-1:-1;;;44341:59:0;;;;;;;;;;;;;;;44411:26;:12;44426:11;;44411:26;:::i;:::-;;44250:195;;:::o;42643:983::-;42756:20;;42750:3;:26;42742:71;;;;;-1:-1:-1;;;42742:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42826:37;42845:4;42851:2;42855:7;42826:18;:37::i;:::-;42880:9;:13;42876:743;;42910:25;42938:18;:9;42952:3;42938:18;:13;:18;:::i;:::-;42910:46;-1:-1:-1;43001:19:0;43023:25;42910:46;43045:2;43023:25;:21;:25;:::i;:::-;43001:47;;43063:37;43088:11;43063:24;:37::i;:::-;43145:20;43168:25;:17;43190:2;43168:25;:21;:25;:::i;:::-;43237:18;;43229:56;;43145:48;;-1:-1:-1;43209:14:0;;-1:-1:-1;;;;;43237:18:0;;;;43145:48;;43209:14;43229:56;43209:14;43229:56;43145:48;43237:18;43229:56;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;43208:77:0;;;43308:9;43300:71;;;;-1:-1:-1;;;43300:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43415:20;43438:25;:17;43460:2;43438:25;:21;:25;:::i;:::-;43501:33;;43415:48;;-1:-1:-1;43479:16:0;;-1:-1:-1;;;;;43501:9:0;;;43415:48;;43479:16;43501:33;43479:16;43501:33;43415:48;43501:9;:33;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;43478:56:0;;;43557:11;43549:58;;;;-1:-1:-1;;;43549:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42876:743;;;;;;42643:983;;;:::o;40111:57::-;;;-1:-1:-1;;;;;40111:57:0;;:::o;27903:232::-;27983:7;28019:16;28029:5;28019:9;:16::i;:::-;28011:5;:24;28003:80;;;;-1:-1:-1;;;28003:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28101:19:0;;;;;;:12;:19;;;;;:26;;28121:5;;28101:26;;;;;;;;;;;;;;28094:33;;27903:232;;;;;:::o;41312:596::-;40607:14;;:40;;;-1:-1:-1;;;40607:40:0;;40636:10;40607:40;;;;;;41493:16;;-1:-1:-1;;;;;40607:14:0;;:28;;:40;;;;;;;;;;;;;;:14;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40607:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40607:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40607:40:0;40599:75;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;;;;41539:14;;:21;;41558:1;41539:21;:18;:21;:::i;:::-;41522:14;:38;;;41668:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41763:9;;;;;;41668:116;;41763:9;;;;41668:116;1:33:-1;99:1;81:16;;74:27;;;-1:-1;41668:116:0;;;;-1:-1:-1;;41650:15:0;;;:6;:15;;;;;;;;;:134;;;;;;;;;;;;;;;;;;:15;;-1:-1:-1;41650:134:0;;;;;;;;;;;;:::i;:::-;;;;;41797:26;41803:10;41815:7;41797:5;:26::i;:::-;41841:32;;41865:7;;-1:-1:-1;;;;;41841:32:0;;;;;;;;41893:7;41312:596;-1:-1:-1;;;;;;41312:596:0:o;40429:33::-;;;;:::o;19787:150::-;19890:39;19907:4;19913:2;19917:7;19890:39;;;;;;;;;;;;:16;:39::i;40177:31::-;;;;;;;;;;;;;;;-1:-1:-1;;40177:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28736:199::-;28794:7;28830:13;:11;:13::i;:::-;28822:5;:21;28814:78;;;;-1:-1:-1;;;28814:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28910:10;28921:5;28910:17;;;;;;;;;;;;;;;;28903:24;;28736:199;;;:::o;44089:153::-;40607:14;;:40;;;-1:-1:-1;;;40607:40:0;;40636:10;40607:40;;;;;;-1:-1:-1;;;;;40607:14:0;;;;:28;;:40;;;;;;;;;;;;;;;:14;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40607:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40607:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40607:40:0;40599:75;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;;;;44190:20;:44;44089:153::o;15785:228::-;15840:7;15876:20;;;:11;:20;;;;;;-1:-1:-1;;;;;15876:20:0;15915:19;15907:73;;;;-1:-1:-1;;;15907:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15348:211;15403:7;-1:-1:-1;;;;;15431:19:0;;15423:74;;;;-1:-1:-1;;;15423:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15517:24:0;;;;;;:17;:24;;;;;:34;;:32;:34::i;40054:50::-;;;-1:-1:-1;;;;;40054:50:0;;:::o;42509:126::-;42570:16;42606:21;42621:5;42606:14;:21::i;:::-;42599:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42509:126;;;:::o;36768:89::-;36842:7;36835:14;;;;;;;;-1:-1:-1;;36835:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36809:13;;36835:14;;36842:7;;36835:14;;36842:7;36835:14;;;;;;;;;;;;;;;;;;;;;;;;44453:260;40607:14;;:40;;;-1:-1:-1;;;40607:40:0;;40636:10;40607:40;;;;;;-1:-1:-1;;;;;40607:14:0;;;;:28;;:40;;;;;;;;;;;;;;;:14;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40607:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40607:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40607:40:0;40599:75;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;;;;44568:8;40768:17;40776:8;40768:7;:17::i;:::-;40760:52;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;;;;44597:31;44589:65;;;;;-1:-1:-1;;;44589:65:0;;;;;;;;;;;;-1:-1:-1;;;44589:65:0;;;;;;;;;;;;;;;44665:16;;;;:6;:16;;;;;:40;;:25;;44693:12;;44665:40;:::i;:::-;;40685:1;44453:260;;;:::o;17663:248::-;-1:-1:-1;;;;;17743:16:0;;17749:10;17743:16;;17735:54;;;;;-1:-1:-1;;;17735:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17821:10;17802:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;17802:34:0;;;;;;;;;;;;:45;;-1:-1:-1;;17802:45:0;;;;;;;;;;17863:40;;;;;;;17802:34;;17821:10;17863:40;;;;;;;;;;;17663:248;;:::o;20656:284::-;20779:31;20792:4;20798:2;20802:7;20779:12;:31::i;:::-;20829:48;20852:4;20858:2;20862:7;20871:5;20829:22;:48::i;:::-;20821:111;;;;-1:-1:-1;;;20821:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20656:284;;;;:::o;44721:169::-;40607:14;;:40;;;-1:-1:-1;;;40607:40:0;;40636:10;40607:40;;;;;;-1:-1:-1;;;;;40607:14:0;;;;:28;;:40;;;;;;;;;;;;;;;:14;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;40607:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40607:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;40607:40:0;40599:75;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;-1:-1:-1;;;40599:75:0;;;;;;;;;;;;;;;44842:18;:40;;-1:-1:-1;;;;;;44842:40:0;-1:-1:-1;;;;;44842:40:0;;;;;;;;;;44721:169::o;42313:188::-;42402:13;42378:8;40768:17;40776:8;40768:7;:17::i;:::-;40760:52;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;;;;42453:12;42435:58;;;;;;;;-1:-1:-1;;42435:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42453:12;;42435:58;;42453:12;42435:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;42467:16:0;;;;:6;:16;;;;;;;;;:25;;;;42435:58;;;;;;;;;;-1:-1:-1;;42435:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42467:25:0;-1:-1:-1;42435:58:0;;42467:25;42435:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:58::i;:::-;42428:65;42313:188;-1:-1:-1;;;42313:188:0:o;41916:389::-;42017:14;42042:18;42071:22;41983:8;40768:17;40776:8;40768:7;:17::i;:::-;40760:52;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;-1:-1:-1;;;40760:52:0;;;;;;;;;;;;;;;42112:19;42134:16;;;:6;:16;;;;;;;;;42183:11;;42209:15;;;;;42257:12;42239:47;;;;;;;;;;;-1:-1:-1;;42239:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;42134:16;;42183:11;;42209:15;;42239:47;;42257:12;;42239:47;;42257:12;42239:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;42271:14:0;;;;42239:47;;;;;;;-1:-1:-1;;42239:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;42271:14:0;;-1:-1:-1;42239:47:0;;;42271:14;42239:47;;;;;;;;;;;;;;;;;;;;;;;;;42161:136;;;;;;;41916:389;;;;;;:::o;18241:147::-;-1:-1:-1;;;;;18345:25:0;;;18321:4;18345:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;18241:147::o;40469:35::-;;;;:::o;21142:155::-;21199:4;21232:20;;;:11;:20;;;;;;-1:-1:-1;;;;;21232:20:0;21270:19;;;21142:155::o;18835:306::-;18995:39;19014:10;19026:7;18995:18;:39::i;:::-;18987:101;;;;-1:-1:-1;;;18987:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19101:32;19115:4;19121:2;19125:7;19101:13;:32::i;2743:333::-;2801:7;2900:1;2896;:5;2888:44;;;;;-1:-1:-1;;;2888:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2943:9;2959:1;2955;:5;;;;;;;2743:333;-1:-1:-1;;;;2743:333:0:o;1804:471::-;1862:7;2107:6;2103:47;;-1:-1:-1;2137:1:0;2130:8;;2103:47;2174:5;;;2178:1;2174;:5;:1;2198:5;;;;;:10;2190:56;;;;-1:-1:-1;;;2190:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43634:447;43703:34;43740:26;43751:14;;43740:6;:10;;:26;;;;:::i;:::-;43703:63;-1:-1:-1;43790:1:0;43777:297;43798:14;;43793:1;:19;43777:297;;43834:21;43874:16;43888:1;43874:13;:16::i;:::-;43931:48;;43834:58;;-1:-1:-1;43908:17:0;;-1:-1:-1;;;;;43931:10:0;;;43948:26;;43908:17;43931:48;43908:17;43931:48;43948:26;43931:10;:48;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;43907:72:0;;;44002:12;43994:68;;;;-1:-1:-1;;;43994:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43814:3:0;;43777:297;;913:181;971:7;1003:5;;;1027:6;;;;1019:46;;;;;-1:-1:-1;;;1019:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;29837:202;29901:24;29913:2;29917:7;29901:11;:24::i;:::-;29938:40;29966:2;29970:7;29938:27;:40::i;:::-;29991;30023:7;29991:31;:40::i;:::-;29837:202;;:::o;12624:114::-;12716:14;;12624:114::o;30907:126::-;-1:-1:-1;;;;;31006:19:0;30969:17;31006:19;;;:12;:19;;;;;;30907:126::o;24922:356::-;25044:4;25071:15;:2;-1:-1:-1;;;;;25071:13:0;;:15::i;:::-;25066:60;;-1:-1:-1;25110:4:0;25103:11;;25066:60;25154:70;;-1:-1:-1;;;25154:70:0;;25191:10;25154:70;;;;;;-1:-1:-1;;;;;25154:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25138:13;;25154:36;;;;;;25191:10;;25203:4;;25209:7;;25218:5;;25154:70;;;;;;;;;;;25138:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25154:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25154:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25154:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25154:70:0;-1:-1:-1;;;;;;25243:26:0;-1:-1:-1;;;25243:26:0;;-1:-1:-1;;24922:356:0;;;;;;;:::o;4424:135::-;4502:13;4535:16;4544:2;4548;4535:8;:16::i;21667:333::-;21752:4;21777:16;21785:7;21777;:16::i;:::-;21769:73;;;;-1:-1:-1;;;21769:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21853:13;21869:16;21877:7;21869;:16::i;:::-;21853:32;;21915:5;-1:-1:-1;;;;;21904:16:0;:7;-1:-1:-1;;;;;21904:16:0;;:51;;;;21948:7;-1:-1:-1;;;;;21924:31:0;:20;21936:7;21924:11;:20::i;:::-;-1:-1:-1;;;;;21924:31:0;;21904:51;:87;;;;21959:32;21976:5;21983:7;21959:16;:32::i;29319:253::-;29413:38;29433:4;29439:2;29443:7;29413:19;:38::i;:::-;29464:47;29497:4;29503:7;29464:32;:47::i;:::-;29524:40;29552:2;29556:7;29524:27;:40::i;22253:335::-;-1:-1:-1;;;;;22325:16:0;;22317:61;;;;;-1:-1:-1;;;22317:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22398:16;22406:7;22398;:16::i;:::-;22397:17;22389:58;;;;;-1:-1:-1;;;22389:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22460:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;22460:25:0;-1:-1:-1;;;;;22460:25:0;;;;;;;;22496:21;;:17;:21;;;;;:33;;:31;:33::i;:::-;22547;;22572:7;;-1:-1:-1;;;;;22547:33:0;;;22564:1;;22547:33;;22564:1;;22547:33;22253:335;;:::o;31334:186::-;-1:-1:-1;;;;;31448:16:0;;;;;;;:12;:16;;;;;;;;:23;;31419:26;;;:17;:26;;;;;:52;;;31482:16;;;39:1:-1;23:18;;45:23;;31482:30:0;;;;;;;;31334:186::o;31721:164::-;31825:10;:17;;31798:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;31853:24:0;;;;;;;31721:164::o;11083:422::-;11450:20;11489:8;;;11083:422::o;3869:547::-;3946:33;3992:16;4017:2;3992:28;;4031:16;4056:2;4031:28;;4070:16;4113:3;:10;4100:3;:10;:23;4089:35;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;4089:35:0;87:34:-1;135:17;;-1:-1;4089:35:0;-1:-1:-1;4070:54:0;-1:-1:-1;4070:54:0;4174:6;;4216:77;4232:3;:10;4228:1;:14;4216:77;;;4275:3;4279:1;4275:6;;;;;;;;;;;;;;;;4264:3;4268;;;;;;4264:8;;;;;;;;;;;:17;-1:-1:-1;;;;;4264:17:0;;;;;;;;-1:-1:-1;4244:3:0;;4216:77;;;-1:-1:-1;4312:1:0;4303:77;4319:3;:10;4315:1;:14;4303:77;;;4362:3;4366:1;4362:6;;;;;;;;;;;;;;;;4351:3;4355;;;;;;4351:8;;;;;;;;;;;:17;-1:-1:-1;;;;;4351:17:0;;;;;;;;-1:-1:-1;4331:3:0;;4303:77;;;-1:-1:-1;4404:3:0;;3869:547;-1:-1:-1;;;;;;;3869:547:0:o;23869:467::-;23991:4;-1:-1:-1;;;;;23971:24:0;:16;23979:7;23971;:16::i;:::-;-1:-1:-1;;;;;23971:24:0;;23963:78;;;;-1:-1:-1;;;23963:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24060:16:0;;24052:65;;;;-1:-1:-1;;;24052:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24130:23;24145:7;24130:14;:23::i;:::-;-1:-1:-1;;;;;24166:23:0;;;;;;:17;:23;;;;;:35;;:33;:35::i;:::-;-1:-1:-1;;;;;24212:21:0;;;;;;:17;:21;;;;;:33;;:31;:33::i;:::-;24258:20;;;;:11;:20;;;;;;:25;;-1:-1:-1;;;;;;24258:25:0;-1:-1:-1;;;;;24258:25:0;;;;;;;;;24301:27;;24258:20;;24301:27;;;;;;;23869:467;;;:::o;32510:1148::-;-1:-1:-1;;;;;32801:18:0;;32776:22;32801:18;;;:12;:18;;;;;:25;:32;;32831:1;32801:32;:29;:32;:::i;:::-;32844:18;32865:26;;;:17;:26;;;;;;32776:57;;-1:-1:-1;32998:28:0;;;32994:328;;-1:-1:-1;;;;;33065:18:0;;33043:19;33065:18;;;:12;:18;;;;;:34;;33084:14;;33065:34;;;;;;;;;;;;;;33043:56;;33149:11;33116:12;:18;33129:4;-1:-1:-1;;;;;33116:18:0;-1:-1:-1;;;;;33116:18:0;;;;;;;;;;;;33135:10;33116:30;;;;;;;;;;;;;;;;;;;:44;;;;33233:30;;;:17;:30;;;;;:43;;;32994:328;-1:-1:-1;;;;;33411:18:0;;;;;;:12;:18;;;;;:27;;;;;-1:-1:-1;;33411:27:0;;;:::i;12746:91::-;12810:19;;12828:1;12810:19;;;12746:91::o;25446:175::-;25546:1;25510:24;;;:15;:24;;;;;;-1:-1:-1;;;;;25510:24:0;:38;25506:108;;25600:1;25565:24;;;:15;:24;;;;;:37;;-1:-1:-1;;;;;;25565:37:0;;;25506:108;25446:175;:::o;12845:110::-;12926:14;;:21;;12945:1;12926:21;:18;:21;:::i;:::-;12909:38;;12845:110::o;1369:184::-;1427:7;1460:1;1455;:6;;1447:49;;;;;-1:-1:-1;;;1447:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1519:5:0;;;1369:184::o;39936:4957::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39936:4957:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39936:4957:0;;;-1:-1:-1;39936:4957:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://fb1ef970b4ce198565b2c4ce69bc781f255991b8346eeda8f5c99b62718b7edf
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,074.96 | 0.00000000000000003 | <$0.000001 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.