ETH Price: $2,153.89 (-0.54%)

Token

My Final Form (MFFers)
 

Overview

Max Total Supply

2,777 MFFers

Holders

1,279

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
alexpanda.eth
Balance
1 MFFers
0xd93befb91dbffefff2eb18b86af1d2e043acb66b
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Restored back to its rightful utopia, Gooch Island has seen an influx of evil amphibious creatures occupying the desolate wasteland.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
IndelibleERC721A

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 13 : IndelibleERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "erc721a/contracts/ERC721A.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Base64.sol";
import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "./SSTORE2.sol";
import "./DynamicBuffer.sol";
import "./HelperLib.sol";
contract IndelibleERC721A is ERC721A, ReentrancyGuard, Ownable {
using HelperLib for uint256;
using DynamicBuffer for bytes;
struct TraitDTO {
string name;
string mimetype;
bytes data;
}
struct Trait {
string name;
string mimetype;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 13 : DynamicBuffer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// Copyright (c) 2021 the ethier authors (github.com/divergencetech/ethier)
pragma solidity >=0.8.0;
/// @title DynamicBuffer
/// @author David Huber (@cxkoda) and Simon Fremaux (@dievardump). See also
/// https://raw.githubusercontent.com/dievardump/solidity-dynamic-buffer
/// @notice This library is used to allocate a big amount of container memory
// which will be subsequently filled without needing to reallocate
/// memory.
/// @dev First, allocate memory.
/// Then use `buffer.appendUnchecked(theBytes)` or `appendSafe()` if
/// bounds checking is required.
library DynamicBuffer {
/// @notice Allocates container space for the DynamicBuffer
/// @param capacity The intended max amount of bytes in the buffer
/// @return buffer The memory location of the buffer
/// @dev Allocates `capacity + 0x60` bytes of space
/// The buffer array starts at the first container data position,
/// (i.e. `buffer = container + 0x20`)
function allocate(uint256 capacity)
internal
pure
returns (bytes memory buffer)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 13 : HelperLib.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.14;
library HelperLib {
function parseInt(string memory _a)
internal
pure
returns (uint8 _parsedInt)
{
bytes memory bresult = bytes(_a);
uint8 mint = 0;
for (uint8 i = 0; i < bresult.length; i++) {
if (
(uint8(uint8(bresult[i])) >= 48) &&
(uint8(uint8(bresult[i])) <= 57)
) {
mint *= 10;
mint += uint8(bresult[i]) - 48;
}
}
return mint;
}
function _substring(
string memory str,
uint256 startIndex,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 13 : SSTORE2.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "./utils/Bytecode.sol";
/**
@title A key-value storage with auto-generated keys for storing chunks of data with a lower write & read cost.
@author Agustin Aguilar <aa@horizon.io>
Readme: https://github.com/0xsequence/sstore2#readme
*/
library SSTORE2 {
error WriteError();
/**
@notice Stores `_data` and returns `pointer` as key for later retrieval
@dev The pointer is a contract address with `_data` as code
@param _data to be written
@return pointer Pointer to the written `_data`
*/
function write(bytes memory _data) internal returns (address pointer) {
// Append 00 to _data so contract can't be called
// Build init code
bytes memory code = Bytecode.creationCodeFor(
abi.encodePacked(
hex'00',
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 13 : Bytecode.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
library Bytecode {
error InvalidCodeAtRange(uint256 _size, uint256 _start, uint256 _end);
/**
@notice Generate a creation code that results on a contract with `_code` as bytecode
@param _code The returning value of the resulting `creationCode`
@return creationCode (constructor) for new contract
*/
function creationCodeFor(bytes memory _code) internal pure returns (bytes memory) {
/*
0x00 0x63 0x63XXXXXX PUSH4 _code.length size
0x01 0x80 0x80 DUP1 size size
0x02 0x60 0x600e PUSH1 14 14 size size
0x03 0x60 0x6000 PUSH1 00 0 14 size size
0x04 0x39 0x39 CODECOPY size
0x05 0x60 0x6000 PUSH1 00 0 size
0x06 0xf3 0xf3 RETURN
<CODE>
*/
return abi.encodePacked(
hex"63",
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 13 : Ownable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 13 : ReentrancyGuard.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 13 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 13 : Base64.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Base64.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides a set of functions to operate with Base64 strings.
*
* _Available since v4.5._
*/
library Base64 {
/**
* @dev Base64 Encoding/Decoding Table
*/
string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
/**
* @dev Converts a `bytes` to its Bytes64 `string` representation.
*/
function encode(bytes memory data) internal pure returns (string memory) {
/**
* Inspired by Brecht Devos (Brechtpd) implementation - MIT licence
* https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol
*/
if (data.length == 0) return "";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 13 : Context.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 13 : MerkleProof.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/cryptography/MerkleProof.sol)
pragma solidity ^0.8.0;
/**
* @dev These functions deal with verification of Merkle Trees proofs.
*
* The proofs can be generated using the JavaScript library
* https://github.com/miguelmota/merkletreejs[merkletreejs].
* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
*
* See `test/utils/cryptography/MerkleProof.test.js` for some examples.
*
* WARNING: You should avoid using leaf values that are 64 bytes long prior to
* hashing, or use a hash function other than keccak256 for hashing leaves.
* This is because the concatenation of a sorted pair of internal nodes in
* the merkle tree could be reinterpreted as a leaf value.
*/
library MerkleProof {
/**
* @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
* defined by `root`. For this, a `proof` must be provided, containing
* sibling hashes on the branch from the leaf to the root of the tree. Each
* pair of leaves and each pair of pre-images are assumed to be sorted.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 13 : ERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// ERC721A Contracts v4.1.0
// Creator: Chiru Labs
pragma solidity ^0.8.4;
import './IERC721A.sol';
/**
* @dev ERC721 token receiver interface.
*/
interface ERC721A__IERC721Receiver {
function onERC721Received(
address operator,
address from,
uint256 tokenId,
bytes calldata data
) external returns (bytes4);
}
/**
* @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard,
* including the Metadata extension. Built to optimize for lower gas during batch mints.
*
* Assumes serials are sequentially minted starting at `_startTokenId()`
* (defaults to 0, e.g. 0, 1, 2, 3..).
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 13 : IERC721A.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// ERC721A Contracts v4.1.0
// Creator: Chiru Labs
pragma solidity ^0.8.4;
/**
* @dev Interface of an ERC721A compliant contract.
*/
interface IERC721A {
/**
* The caller must own the token or be an approved operator.
*/
error ApprovalCallerNotOwnerNorApproved();
/**
* The token does not exist.
*/
error ApprovalQueryForNonexistentToken();
/**
* The caller cannot approve to their own address.
*/
error ApproveToCaller();
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": true
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[{"internalType":"uint256","name":"_size","type":"uint256"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"InvalidCodeAtRange","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"WriteError","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_layerIndex","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"mimetype","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IndelibleERC721A.TraitDTO[]","name":"traits","type":"tuple[]"}],"name":"addLayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_layerIndex","type":"uint256"},{"internalType":"uint256","name":"_traitIndex","type":"uint256"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"mimetype","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct IndelibleERC721A.TraitDTO","name":"trait","type":"tuple"}],"name":"addTrait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowListPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractData","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"banner","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"uint256","name":"royalties","type":"uint256"},{"internalType":"string","name":"royaltiesRecipient","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_hash","type":"string"}],"name":"hashToMetadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_hash","type":"string"}],"name":"hashToSVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAllowListActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isContractSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicMintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAllowList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"_count","type":"uint64"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"onAllowList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicMintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIdA","type":"uint256"},{"internalType":"uint256","name":"tokenIdB","type":"uint256"}],"name":"reRollDuplicate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_backgroundColor","type":"string"}],"name":"setBackgroundColor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"banner","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"uint256","name":"royalties","type":"uint256"},{"internalType":"string","name":"royaltiesRecipient","type":"string"}],"internalType":"struct IndelibleERC721A.ContractData","name":"_contractData","type":"tuple"}],"name":"setContractData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPerAddress","type":"uint256"}],"name":"setMaxPerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPerAllowList","type":"uint256"}],"name":"setMaxPerAllowList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"newMerkleRoot","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"bool","name":"_renderOffChain","type":"bool"}],"name":"setRenderOfTokenId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAllowListMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePublicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleWrapSVG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenIdToHash","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenIdToSVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenIdA","type":"uint256"},{"internalType":"uint256","name":"tokenIdB","type":"uint256"}],"name":"tokensAreDuplicates","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_layerIndex","type":"uint256"},{"internalType":"uint256","name":"_traitIndex","type":"uint256"}],"name":"traitData","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_layerIndex","type":"uint256"},{"internalType":"uint256","name":"_traitIndex","type":"uint256"}],"name":"traitDetails","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"mimetype","type":"string"}],"internalType":"struct IndelibleERC721A.Trait","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60076102608181526631206f6620317360c81b61028052608090815260056102a09081526448616e647360d81b6102c05260a05260096102e0908152684163636573736f727960b81b6103005260c052610320828152665350204579657360c81b6103405260e0526008610360818152670a6a0409adeeae8d60c31b61038052610100526103a08381526614d4081219585960ca1b6103c052610120526103e0838152664c4c204579657360c81b61040052610140526104209081526709898409adeeae8d60c31b6104405261016052610460918252661313081219585960ca1b6104805261018091909152600b6104a09081526a0a8dec2c8f4409adeeae8d60ab1b6104c0526101a052600a6104e081815269546f61647a204579657360b01b610500526101c0526004610520818152634469636b60e01b610540526101e05261056081815263109d5d1d60e21b61058052610200526105a09081526329b5b4b760e11b6105c052610220526106206040526105e090815269109858dad9dc9bdd5b9960b21b61060052610240526200019e90601c90600f62002297565b50601d805460ff1916600117905560408051808201909152600b8082526a1d1c985b9cdc185c995b9d60aa1b6020909201918252620001e091601e91620022fb565b50600a602090815566470de4df8200006021556040805191820190819052600091829052620002139160229190620022fb565b50600060255560016026556040518060e001604052806040518060400160405280600d81526020016c4d792046696e616c20466f726d60981b81525081526020016040518061038001604052806103428152602001620071c5610342913981526020016040518060a0016040528060628152602001620071026062913981526020016040518060a0016040528060618152602001620071646061913981526020016040518060400160405280601681526020017f687474703a2f2f6d7966696e616c666f726d2e696f2f0000000000000000000081525081526020016101f481526020016040518060600160405280602a815260200162007507602a91399052805180516028916200032b91839160200190620022fb565b506020828101518051620003469260018501920190620022fb565b506040820151805162000364916002840191602090910190620022fb565b506060820151805162000382916003840191602090910190620022fb565b5060808201518051620003a0916004840191602090910190620022fb565b5060a0820151600582015560c08201518051620003c8916006840191602090910190620022fb565b505050348015620003d857600080fd5b50604080518082018252600d81526c4d792046696e616c20466f726d60981b6020808301918252835180850190945260068452654d464665727360d01b9084015281519192916200042c91600291620022fb565b50805162000442906003906020840190620022fb565b506000805550506001600855620004593362002245565b6040805161018081018252600180825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810191909152610ace610160820152620004cb90600d90600c62002386565b5060408051610360810182526004815260066020820152600f918101919091526011606082015260166080820152601860a0820152602d60c0820152603660e08201526043610100820152604b610120820152604d6101408201526055610160820152605861018082015260616101a082015260696101c0820152606a6101e0820152606d610200820152607461022082015260766102408201526086610260820152608861028082015260976102a082015260ba6102c082015260bc6102e082015260c1610300820152610107610320820152610128610340820152620005b890600e90601b62002386565b50604080516106808101825260018082526020808301829052828401919091526002606083015260036080830152600460a0830152600560c0830152600660e083015260076101008301526009610120830152600a610140830152600d610160830152600f61018083018190526101a0830181905260116101c084015260136101e0840181905261020084015260166102208401526019610240840152601e6102608401819052610280840152601f6102a08401526102c083018290526102e08301829052610300830191909152602361032083015260276103408301526028610360830152602b610380830152602c6103a0830152602d6103c0830152602f6103e0830152603561040083015260386104208301526039610440830152603a610460830152603c610480830152603d6104a08301526104c082019290925260436104e08201526047610500820152604961052082015260526105408201526056610560820152605961058082015260946105a082015260996105c082018190526105e0820152609f61060082015260a661062082015260d861064082015260e76106608201526200076d91906034620023ca565b5060408051610a808101825260018082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820152600261012082018190526101408201526003610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820152600461022082018190526102408201819052610260820152600561028082018190526102a082015260066102c082015260086102e08201819052610300820181905261032082015260096103408201819052610360820152600a610380820152600d6103a082018190526103c0820152600e6103e082015260106104008201819052601161042083018190526104408301819052610460830152601361048083015260146104a083015260156104c083015260166104e0830152601761050083018190526105208301526019610540830152601a6105608301819052610580830152601b6105a0830152601e6105c0830152601f6105e0830152610600820192909252602261062082015260236106408201819052610660820152602461068082015260256106a082018190526106c082018190526106e08201526026610700820152602761072082018190526107408201526028610760820181905261078082015260296107a0820152602c6107c082018190526107e0820152602d6108008201819052610820820152602e61084082015260306108608201526039610880820152603d6108a082015260436108c082015260446108e08201526049610900820152604d6109208201526050610940820152605f610960820181905261098082015260646109a082015260686109c0820152606a6109e0820152606e610a008201526079610a208201819052610a40820152608b610a6082015262000a1e91906054620023ca565b506040805161060081018252600180825260208201819052918101919091526003606082018190526080820152600460a0820152600560c0820152600660e08201526008610100820152600c61012082015260106101408201819052610160820152601261018082015260156101a0820152601c6101c0820152601f6101e08201819052610200820152602261022082018190526102408201526024610260820152602c610280820152602d6102a082015260306102c08201819052603a6102e08301819052610300830152603d610320830152603e61034083018190526103608301819052610380830152603f6103a083015260416103c083015260466103e083018190526104008301526047610420830152604a6104408301526051610460830152605661048083015260576104a0830152605a6104c0830152605b6104e08301526068610500830152606c610520830152606e610540830152607c610560830152608661058083015260af6105a083015260b16105c083015260bc6105e083015262000bb091601191620023ca565b50604080516114008101825260018082526020808301829052928201819052606082018190526080820181905260a080830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083019190915260026101e08301819052610200830181905261022083018190526102408301819052610260830181905261028083018190526102a083018190526102c083018190526102e08301819052610300830181905261032083018190526103408301819052610360830152600361038083018190526103a083018190526103c083018190526103e08301819052610400830181905261042083018190526104408301526004610460830181905261048083018190526104a083018190526104c083015260056104e08301819052610500830181905261052083018190526105408301819052610560830181905261058083015260066105a083018190526105c083015260076105e08301819052610600830181905261062083015260086106408301819052610660830181905261068083018190526106a083018190526106c083015260096106e0830181905261070083018190526107208301819052610740830152600a610760830181905261078083018190526107a083018190526107c0830152600b6107e08301819052610800830181905261082083018190526108408301819052610860830152600c61088083018190526108a083018190526108c083018190526108e083018190526109008301819052610920830181905261094083018190526109608301819052610980830152600d6109a083018190526109c083018190526109e08301819052610a008301819052610a208301819052610a40830152600e610a608301819052610a808301819052610aa08301819052610ac08301819052610ae08301819052610b00830152600f610b208301819052610b408301819052610b608301819052610b808301819052610ba08301819052610bc08301526010610be08301819052610c008301819052610c208301526011610c408301819052610c608301819052610c808301819052610ca08301819052610cc08301526012610ce08301819052610d008301819052610d208301819052610d4083018190526013610d608401819052610d808401819052610da08401526014610dc08401526015610de08401819052610e008401819052610e208401819052610e408401526017610e608401819052610e808401819052610ea08401819052610ec08401819052610ee08401526018610f008401819052610f208401819052610f408401819052610f608401526019610f808401819052610fa0840152601a610fc0840152601b610fe084018190526110008401819052611020840152601c611040840152601d611060840181905261108084018190526110a084018190526110c084018190526110e0840152601f61110084015261112083018490526111408301849052611160830193909352602161118083015260226111a083015260266111c083015260276111e08301526029611200830152602a611220830152602c611240830152602d611260830152602e61128083015260316112a083015260336112c083018190526112e08301819052611300830152603e61132083015260426113408301526048611360830152604a611380830152604b6113a083018190526113c083015260536113e0830152620010c4929190620023ca565b5060408051610a408101825260018082526020808301829052928201819052606082015260026080820181905260a0820152600360c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820152600561018082018190526101a082015260066101c082015260076101e082015260096102008201819052610220820152600a6102408201819052610260820152600b610280820152600c6102a0820152600d6102c0820152600e6102e08201819052610300820152600f61032082015260126103408201819052610360820152601361038082018190526103a082018190526103c0820181905260146103e08301526015610400830181905261042083015260166104408301819052610460830152601761048083015260186104a0830152601a6104c0830152601d6104e08301819052610500830152601f6105208301526105408201839052610560820192909252602161058082018190526105a082018190526105c082015260226105e08201819052610600820152602361062082015260246106408201526025610660820181905261068082018190526106a082015260266106c082015260276106e082018190526107008201819052610720820152602a610740820152602b610760820152602c610780820152602d6107a0820152602e6107c0820152602f6107e08201819052610800820152603061082082015260326108408201526034610860820152603761088082015260386108a082015260396108c0820152603b6108e08201526043610900820152604f6109208201526057610940820152605b610960820152605c61098082015260626109a082015260696109c0820152606e6109e08201526078610a00820152608e610a208201526200136591906052620023ca565b50604080516106208101825260018152600260208201819052818301819052606082015260036080820181905260a0820152600560c0820181905260e082015260066101008201819052610120820152600861014082018190526101608201526009610180820152600a6101a0820152600c6101c082015260116101e082015260126102008201819052610220820181905261024082015260146102608201819052601c61028083015260266102a083015260296102c0830152602a6102e0830152602b610300830152602f61032083015260306103408301526032610360830152603761038083015260386103a0830152603b6103c0830152603e6103e0830152610400820192909252604261042082015260446104408201526054610460820181905261048082015260576104a082015260596104c082015260616104e0820152607261050082015260746105208201526079610540820152607d610560820152608461058082015260a96105a082015260b16105c082015260d16105e082015260e9610600820152620014fe91906031620023ca565b50604080516113c08101825260018082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082015260026101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082015260036103408201819052610360820181905261038082018190526103a082018190526103c082015260046103e08201819052610400820181905261042082015260056104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820152600661052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082018190526105e08201819052610600820152600761062082018190526106408201819052610660820181905261068082018190526106a082018190526106c082018190526106e08201819052610700820181905261072082018190526107408201526008610760820181905261078082018190526107a082018190526107c082015260096107e082018190526108008201819052610820820152600a6108408201819052610860820181905261088082018190526108a0820152600b6108c082018190526108e082018190526109008201819052610920820152600c61094082018190526109608201819052610980820152600d6109a082018190526109c082018190526109e08201819052610a008201819052610a208201819052610a40820152600e610a608201819052610a808201819052610aa08201819052610ac08201819052610ae0820152600f610b008201819052610b208201819052610b408201819052610b608201819052610b808201526010610ba08201819052610bc08201526011610be08201819052610c008201819052610c208201526012610c408201819052610c608201819052610c808201819052610ca08201819052610cc08201526013610ce08201819052610d008201819052610d208201526014610d408201526015610d608201819052610d808201819052610da08201819052610dc082018190526016610de08301819052610e008301819052610e208301819052610e408301526017610e608301819052610e808301819052610ea08301819052610ec08301526018610ee08301819052610f008301819052610f208301819052610f408301819052610f608301526019610f808301819052610fa0830152601c610fc0830152601d610fe0830152601e6110008301819052611020830152601f611040830181905261106083015261108082018390526110a082019290925260216110c082015260226110e08201819052611100820152602361112082018190526111408201526024611160820152602961118082018190526111a0820152602d6111c082018190526111e0820152602e611200820152602f61122082015260336112408201526034611260820152603661128082015260376112a082018190526112c0820152603c6112e0820152603e611300820152604461132082015260456113408201526047611360820152604b61138082015260556113a0820152620019ff9190609e620023ca565b50604080516106208101825260028152600360208201526004918101919091526007606082018190526080820152600860a0820181905260c0820152600960e0820152600b610100820152600c61012082018190526101408201526011610160820181905261018082015260146101a082015260166101c0820181905260186101e0830152601b6102008301819052610220830152601c610240830152601d610260830152601f61028083015260226102a083015260266102c083015260296102e0830152602a610300830152602e610320830152603161034083018190526035610360840181905261038084015260386103a0840152603a6103c084018190526103e0840152603b610400840152603d61042084015260436104408401526044610460840152604c61048084015260526104a084015260566104c0840152605c6104e0840152606461050084015260656105208401526072610540840152608f6105608401819052610580840152609c6105a0840152609e6105c084015260bf6105e084015260e361060084015262001b9a9290620023ca565b5060408051610ac08101825260018082526020808301829052928201526002606082018190526080820181905260a0820181905260c0820152600360e08201819052610100820181905261012082018190526101408201819052610160820152600461018082018190526101a082018190526101c082015260056101e08201526006610200820152600861022082018190526102408201819052610260820152600961028082018190526102a082018190526102c0820152600b6102e082018190526103008201819052610320820152600c6103408201819052610360820152600d61038082018190526103a0820152600e6103c082018190526103e0820152600f610400820152601061042082015260126104408201819052610460820152601461048082015260176104a082018190526104c0820181905260186104e083018190526105008301526019610520830152601a610540830152601b610560830152601c610580830152601d6105a0830152601e6105c083018190526105e08301819052610600830181905261062083018190526106408301819052610660830152601f61068083018190526106a08301526106c082018390526106e08201929092526021610700820181905261072082015260226107408201526023610760820152602461078082015260256107a082015260276107c0820152602a6107e0820152602b610800820152602c610820820152602d610840820152602e610860820152603061088082018190526108a082015260336108c082015260356108e08201819052610900820152603661092082015260376109408201819052610960820152603b61098082015260466109a0820152604a6109c082015260526109e0820152605a610a008201526063610a208201526074610a408201526082610a60820152609a610a8082015260ba610aa082015262001e5b91906056620023ca565b50604080516102808101825260058152600d6020820152601591810191909152601760608201526024608080830191909152602a60a0830152602c60c0830152602d60e08301526049610100830152605b610120830152605e610140830152605f610160830152606161018083015260656101a0830152606d6101c0830152607b6101e0830152607e610200830152610220820152608f61024082015261055861026082015262001f1190601890601462002386565b506040805160808101825260298152604e602082015260ff91810191909152610963606082015262001f4890601990600462002386565b50604080516105c081018252600381526005602082015260078183015260096060820152600a6080820152600b60a0820152600c60c0820152600e60e0820152600f6101008201526011610120820152601261014082015260136101608201526018610180820152601a6101a0820152601c6101c0820152601f6101e082015260226102008201526025610220820152602a610240820152602b6102608201819052610280820152602e6102a0820152602f6102c082015260306102e082015260366103008201526039610320820152603b6103408201819052610360820152603e610380820152603f6103a082018190526103c082018190526103e082015261040081019190915260416104208201526043610440820152604f610460820152605761048082015260686104a082015260696104c082015260956104e08201526097610500820152609b610520820152609c61054082015260a761056082015260ab61058082015260bc6105a0820152600d80620020cc92910190602e620023ca565b50604080516105808101825260018152600260208201526003818301819052606082015260056080820181905260a0820152600760c0820152600860e0820152600a610100820152600d610120820181905261014082018190526101608201526011610180820152601a6101a0820152601e6101c082015260256101e08201526026610200820152602761022082015260286102408201526029610260820152602a61028082018190526102a082015260316102c082015260346102e082015260356103008201526039610320820152603b610340820152603f61036082015261038081019190915260416103a082015260426103c082018190526103e08201526058610400820152605c610420820152605e61044082015260686104608201526073610480820152607c6104a082015260876104c0820152608e6104e0820152609561050082015260c161052082015260ee6105408201526101126105608201526200223e90601b90602c62002386565b50620024c3565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215620022e9579160200282015b82811115620022e95782518051620022d8918491602090910190620022fb565b5091602001919060010190620022b8565b50620022f79291506200240d565b5090565b828054620023099062002487565b90600052602060002090601f0160209004810192826200232d576000855562002378565b82601f106200234857805160ff191683800117855562002378565b8280016001018555821562002378579182015b82811115620023785782518255916020019190600101906200235b565b50620022f79291506200242e565b82805482825590600052602060002090810192821562002378579160200282015b8281111562002378578251829061ffff16905591602001919060010190620023a7565b82805482825590600052602060002090810192821562002378579160200282015b8281111562002378578251829060ff16905591602001919060010190620023eb565b80821115620022f757600062002424828262002445565b506001016200240d565b5b80821115620022f757600081556001016200242f565b508054620024539062002487565b6000825580601f1062002464575050565b601f0160209004906000526020600020908101906200248491906200242e565b50565b600181811c908216806200249c57607f821691505b602082108103620024bd57634e487b7160e01b600052602260045260246000fd5b50919050565b614c2f80620024d36000396000f3fe60806040526004361061031a5760003560e01c80636c0360eb116101ab578063a24e5153116100f7578063dbe9875f11610095578063e985e9c51161006f578063e985e9c5146108ba578063ea84b59b14610903578063f2fde38b14610930578063fd6b3cf51461095057600080fd5b8063dbe9875f1461086f578063dc53fd921461088f578063e8a3d485146108a557600080fd5b8063c11feac1116100d1578063c11feac1146107f9578063c5c627fb14610819578063c87b56dd14610839578063d5abeb011461085957600080fd5b8063a24e5153146107a3578063b32c5680146107b9578063b88d4fde146107d957600080fd5b80637cb64759116101645780638fb4e8a91161013e5780638fb4e8a91461074657806395d89b411461075b578063a2026e3d14610770578063a22cb4651461078357600080fd5b80637cb64759146106e857806389ce3074146107085780638da5cb5b1461072857600080fd5b80636c0360eb1461063e5780636cced73a1461065357806370a0823114610673578063715018a614610693578063716e43d7146106a85780637bddd65b146106c857600080fd5b80634047638d1161026a5780635b92ac0d116102235780636352211e116101fd5780636352211e146105d3578063639814e0146105f357806366e338701461060957806368bd580e1461062957600080fd5b80635b92ac0d1461057e5780636190e1da14610593578063621a1f74146105b357600080fd5b80634047638d146104da57806342842e0e146104ef5780634920154b1461050f5780634ca1a0f214610524578063542d50411461054457806355f804b31461055e57600080fd5b806318160ddd116102d75780632d6b6224116102b15780632d6b62241461046d57806336cd2edd146104875780633cca24201461049d5780633ccfd60b146104c557600080fd5b806318160ddd1461041057806323b872dd1461043357806329fc6bae1461045357600080fd5b806301ffc9a71461031f57806306fdde0314610354578063081812fc14610376578063095ea7b3146103ae57806309dbabca146103d05780630f3debbe146103f0575b600080fd5b34801561032b57600080fd5b5061033f61033a36600461392f565b610970565b60405190151581526020015b60405180910390f35b34801561036057600080fd5b506103696109c2565b60405161034b91906139a4565b34801561038257600080fd5b506103966103913660046139b7565b610a54565b6040516001600160a01b03909116815260200161034b565b3480156103ba57600080fd5b506103ce6103c93660046139ec565b610a98565b005b3480156103dc57600080fd5b506103696103eb366004613a16565b610b38565b3480156103fc57600080fd5b506103ce61040b366004613b15565b610b80565b34801561041c57600080fd5b50600154600054035b60405190815260200161034b565b34801561043f57600080fd5b506103ce61044e366004613c3f565b610c89565b34801561045f57600080fd5b5060275461033f9060ff1681565b34801561047957600080fd5b5060235461033f9060ff1681565b34801561049357600080fd5b5061042560265481565b3480156104a957600080fd5b506104b2610e3d565b60405161034b9796959493929190613c7b565b3480156104d157600080fd5b506103ce61119b565b3480156104e657600080fd5b506103ce611296565b3480156104fb57600080fd5b506103ce61050a366004613c3f565b6112d4565b34801561051b57600080fd5b506103ce6112f4565b34801561053057600080fd5b506103ce61053f3660046139b7565b611332565b34801561055057600080fd5b50601f5461033f9060ff1681565b34801561056a57600080fd5b506103ce610579366004613d04565b611361565b34801561058a57600080fd5b5061033f6113a2565b34801561059f57600080fd5b506103ce6105ae366004613d04565b6113d0565b3480156105bf57600080fd5b506103696105ce3660046139b7565b611430565b3480156105df57600080fd5b506103966105ee3660046139b7565b6115e8565b3480156105ff57600080fd5b5061042560205481565b34801561061557600080fd5b50610369610624366004613d04565b6115f3565b34801561063557600080fd5b506103ce611748565b34801561064a57600080fd5b506103696117a4565b34801561065f57600080fd5b5061033f61066e366004613a16565b611832565b34801561067f57600080fd5b5061042561068e366004613d38565b61184e565b34801561069f57600080fd5b506103ce61189c565b3480156106b457600080fd5b506103ce6106c3366004613e01565b6118d2565b3480156106d457600080fd5b506103ce6106e33660046139b7565b611b12565b3480156106f457600080fd5b506103ce6107033660046139b7565b611b41565b34801561071457600080fd5b50610369610723366004613d04565b611b70565b34801561073457600080fd5b506009546001600160a01b0316610396565b34801561075257600080fd5b506103ce611d89565b34801561076757600080fd5b50610369611dc7565b61042561077e366004613f1a565b611dd6565b34801561078f57600080fd5b506103ce61079e366004613f87565b612207565b3480156107af57600080fd5b5061042560255481565b3480156107c557600080fd5b5061033f6107d4366004613fba565b61229c565b3480156107e557600080fd5b506103ce6107f4366004613fff565b61231c565b34801561080557600080fd5b506103696108143660046139b7565b612360565b34801561082557600080fd5b506103ce610834366004614066565b61236e565b34801561084557600080fd5b506103696108543660046139b7565b6124d7565b34801561086557600080fd5b50610425610ad981565b34801561087b57600080fd5b506103ce61088a3660046140b5565b612755565b34801561089b57600080fd5b5061042560215481565b3480156108b157600080fd5b506103696127f5565b3480156108c657600080fd5b5061033f6108d53660046140d8565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561090f57600080fd5b5061092361091e366004613a16565b612853565b60405161034b9190614102565b34801561093c57600080fd5b506103ce61094b366004613d38565b6129b5565b34801561095c57600080fd5b506103ce61096b366004613a16565b612a50565b60006301ffc9a760e01b6001600160e01b0319831614806109a157506380ac58cd60e01b6001600160e01b03198316145b806109bc5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546109d190614144565b80601f01602080910402602001604051908101604052809291908181526020018280546109fd90614144565b8015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b6000610a5f82612bcf565b610a7c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610aa3826115e8565b9050336001600160a01b03821614610adc57610abf81336108d5565b610adc576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000828152600a602052604090208054606091610b799184908110610b5f57610b5f614178565b6000918252602090912001546001600160a01b0316612bf6565b9392505050565b6009546001600160a01b03163314610bb35760405162461bcd60e51b8152600401610baa9061418e565b60405180910390fd5b601f5460ff1615610bd65760405162461bcd60e51b8152600401610baa906141c3565b805180518291602891610bf091839160209091019061382b565b506020828101518051610c09926001850192019061382b565b5060408201518051610c2591600284019160209091019061382b565b5060608201518051610c4191600384019160209091019061382b565b5060808201518051610c5d91600484019160209091019061382b565b5060a0820151600582015560c08201518051610c8391600684019160209091019061382b565b50505050565b6000610c9482612c06565b9050836001600160a01b0316816001600160a01b031614610cc75760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417610d1457610cf786336108d5565b610d1457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610d3b57604051633a954ecd60e21b815260040160405180910390fd5b8015610d4657600082555b6001600160a01b03808716600090815260056020526040808220805460001901905591871681522080546001019055610d9f85610d84888287612c6d565b600160e11b174260a01b176001600160a01b03919091161790565b600085815260046020526040812091909155600160e11b84169003610df457600184016000818152600460205260408120549003610df2576000548114610df25760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b602880548190610e4c90614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7890614144565b8015610ec55780601f10610e9a57610100808354040283529160200191610ec5565b820191906000526020600020905b815481529060010190602001808311610ea857829003601f168201915b505050505090806001018054610eda90614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690614144565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b505050505090806002018054610f6890614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9490614144565b8015610fe15780601f10610fb657610100808354040283529160200191610fe1565b820191906000526020600020905b815481529060010190602001808311610fc457829003601f168201915b505050505090806003018054610ff690614144565b80601f016020809104026020016040519081016040528092919081815260200182805461102290614144565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b50505050509080600401805461108490614144565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614144565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b50505050509080600501549080600601805461111890614144565b80601f016020809104026020016040519081016040528092919081815260200182805461114490614144565b80156111915780601f1061116657610100808354040283529160200191611191565b820191906000526020600020905b81548152906001019060200180831161117457829003601f168201915b5050505050905087565b6009546001600160a01b031633146111c55760405162461bcd60e51b8152600401610baa9061418e565b6002600854036112175760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610baa565b600260085547600061271061122d60fa82614205565b611237908461421c565b6112419190614251565b905060006112576009546001600160a01b031690565b905073ea208da933c43857683c04bc76e3fd331d7bfdf76112788284612c90565b61128b816112868587614205565b612c90565b505060016008555050565b6009546001600160a01b031633146112c05760405162461bcd60e51b8152600401610baa9061418e565b6023805460ff19811660ff90911615179055565b6112ef8383836040518060200160405280600081525061231c565b505050565b6009546001600160a01b0316331461131e5760405162461bcd60e51b8152600401610baa9061418e565b601d805460ff19811660ff90911615179055565b6009546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610baa9061418e565b602655565b6009546001600160a01b0316331461138b5760405162461bcd60e51b8152600401610baa9061418e565b805161139e90602290602084019061382b565b5050565b6000610ad96113b060005490565b1080156113cb575060235460ff16806113cb575060275460ff165b905090565b6009546001600160a01b031633146113fa5760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff161561141d5760405162461bcd60e51b8152600401610baa906141c3565b805161139e90601e90602084019061382b565b606061143b82612bcf565b6114775760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610baa565b60006114a5611488600f600461421c565b604080518281016060018252910181526000602090910190815290565b905060005b600f8110156115e1576000610ad96114c186612da9565b866114cc8582614265565b60405160e89390931b6001600160e81b0319166020840152602383019190915260438201526063016040516020818303038152906040528051906020012060001c611517919061427d565b905060006115258284612dbe565b9050600a81101561155957604080518082019091526002815261030360f41b6020820152611554908590612e5a565b611585565b6064811015611585576040805180820190915260018152600360fc1b6020820152611585908590612e5a565b6103e78111156115b95760408051808201909152600381526239393960e81b60208201526115b4908590612e5a565b6115cc565b6115cc6115c582612edf565b8590612e5a565b505080806115d990614291565b9150506114aa565b5092915050565b60006109bc82612c06565b60408051620200608101825262020040815260006020918201908152825180840190935260018352605b60f81b91830191909152606091611635908290612e5a565b60005b600f8110156115e15760006116756116708661165585600361421c565b61166086600361421c565b61166b906003614265565b612f2e565b612ffa565b60ff1690506116d8601c838154811061169057611690614178565b60009182526020808320868452600b8252604080852087865283529384902093516116c19493909101929101614343565b60408051601f198184030181529190528490612e5a565b6116e46001600f614205565b8203611712576040805180820190915260018152605d60f81b602082015261170d908490612e5a565b611735565b6040805180820190915260018152600b60fa1b6020820152611735908490612e5a565b508061174081614291565b915050611638565b601f5460ff161561176b5760405162461bcd60e51b8152600401610baa906141c3565b6009546001600160a01b031633146117955760405162461bcd60e51b8152600401610baa9061418e565b601f805460ff19166001179055565b602280546117b190614144565b80601f01602080910402602001604051908101604052809291908181526020018280546117dd90614144565b801561182a5780601f106117ff5761010080835404028352916020019161182a565b820191906000526020600020905b81548152906001019060200180831161180d57829003601f168201915b505050505081565b6000610b7961184084611430565b61184984611430565b6130b8565b60006001600160a01b038216611877576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6009546001600160a01b031633146118c65760405162461bcd60e51b8152600401610baa9061418e565b6118d06000613111565b565b6009546001600160a01b031633146118fc5760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff161561191f5760405162461bcd60e51b8152600401610baa906141c3565b8051600d83600f811061193457611934614178565b01541461199b5760405162461bcd60e51b815260206004820152602f60248201527f5472616974732073697a6520646f6573206e6f74206d6174636820746965727360448201526e040ccdee440e8d0d2e640d2dcc8caf608b1b6064820152608401610baa565b600081516001600160401b038111156119b6576119b6613a38565b6040519080825280602002602001820160405280156119df578160200160208202803683370190505b50905060005b8251811015611af257611a14838281518110611a0357611a03614178565b602002602001015160400151613163565b828281518110611a2657611a26614178565b60200260200101906001600160a01b031690816001600160a01b0316815250506040518060400160405280848381518110611a6357611a63614178565b6020026020010151600001518152602001848381518110611a8657611a86614178565b6020908102919091018101518101519091526000868152600b8252604080822085835283529020825180519192611ac29284929091019061382b565b506020828101518051611adb926001850192019061382b565b509050508080611aea90614291565b9150506119e5565b506000838152600a602090815260409091208251610c83928401906138af565b6009546001600160a01b03163314611b3c5760405162461bcd60e51b8152600401610baa9061418e565b602055565b6009546001600160a01b03163314611b6b5760405162461bcd60e51b8152600401610baa9061418e565b602455565b604080516202006081019091526202004081526000602090910181815260609190611bb46040518060c0016040528060818152602001614b39608191398290612e5a565b611be0601e604051602001611bc99190614399565b60408051601f198184030181529190528290612e5a565b60005b611bef6001600f614205565b811015611cab57611c1361167086611c0884600361421c565b61166085600361421c565b60ff169250611c99600b60008381526020019081526020016000206000858152602001908152602001600020600101611c71611c6c600a60008681526020019081526020016000208781548110610b5f57610b5f614178565b6131c8565b604051602001611c829291906143cb565b60408051601f198184030181529190528390612e5a565b80611ca381614291565b915050611be3565b50611cd6611670856003611cc0600f8261421c565b611cca9190614205565b61166b600f600361421c565b60ff169150611d58600b6000611cee6001600f614205565b81526020019081526020016000206000848152602001908152602001600020600101611d47611c6c600a60006001600f611d289190614205565b81526020019081526020016000208681548110610b5f57610b5f614178565b604051602001611bc9929190614425565b611d61816131c8565b604051602001611d719190614589565b60405160208183030381529060405292505050919050565b6009546001600160a01b03163314611db35760405162461bcd60e51b8152600401610baa9061418e565b6027805460ff19811660ff90911615179055565b6060600380546109d190614144565b6000600260085403611e2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610baa565b6002600855611e376113a2565b611e7b5760405162461bcd60e51b81526020600482015260156024820152744d696e74696e67206973206e6f742061637469766560581b6044820152606401610baa565b6000546001600160401b038516611eca5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081d1bdad95b8818dbdd5b9d606a1b6044820152606401610baa565b610ad9611ee06001600160401b03871683614265565b1115611f245760405162461bcd60e51b8152602060048201526013602482015272416c6c20746f6b656e732061726520676f6e6560681b6044820152606401610baa565b60235460ff161561203c576009546001600160a01b03163314611fd257602054856001600160401b0316611f7a336001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b611f849190614265565b1115611fd25760405162461bcd60e51b815260206004820152601a60248201527f4578636565646564206d6178206d696e747320616c6c6f7765640000000000006044820152606401610baa565b34602154866001600160401b0316611fea919061421c565b146120375760405162461bcd60e51b815260206004820152601e60248201527f496e636f727265637420616d6f756e74206f662065746865722073656e7400006044820152606401610baa565b61218f565b6009546001600160a01b0316331461212a5761205933858561229c565b6120995760405162461bcd60e51b8152602060048201526011602482015270139bdd081bdb88185b1b1bddc81b1a5cdd607a1b6044820152606401610baa565b602654856001600160401b03166120d2336001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b6120dc9190614265565b111561212a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565646564206d6178206d696e747320616c6c6f7765640000000000006044820152606401610baa565b34602554866001600160401b0316612142919061421c565b1461218f5760405162461bcd60e51b815260206004820152601e60248201527f496e636f727265637420616d6f756e74206f662065746865722073656e7400006044820152606401610baa565b60006121a560146001600160401b038816614251565b905060006121bd60146001600160401b03891661427d565b905060005b828110156121e7576121d533601461331a565b806121df81614291565b9150506121c2565b5080156121f8576121f8338261331a565b50506001600855949350505050565b336001600160a01b038316036122305760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000612314838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506024546040516bffffffffffffffffffffffff1960608b901b16602082015290925060340190506040516020818303038152906040528051906020012061341b565b949350505050565b612327848484610c89565b6001600160a01b0383163b15610c835761234384848484613431565b610c83576040516368d2bf6b60e11b815260040160405180910390fd5b60606109bc61072383611430565b6009546001600160a01b031633146123985760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff16156123bb5760405162461bcd60e51b8152600401610baa906141c3565b60408051808201825282518152602080840151818301526000868152600b825283812086825282529290922081518051929391926123fc928492019061382b565b506020828101518051612415926001850192019061382b565b5050506000838152600a602090815260408083208054825181850281018501909352808352919290919083018282801561247857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161245a575b5050505050905061248c8260400151613163565b81848151811061249e5761249e614178565b6001600160a01b039092166020928302919091018201526000858152600a82526040902082516124d0928401906138af565b5050505050565b60606124e282612bcf565b61251e5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610baa565b60008052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3546125955760405162461bcd60e51b815260206004820152601a60248201527f5472616974732068617665206e6f74206265656e2061646465640000000000006044820152606401610baa565b60006125a083611430565b604080516202006081018252620200408152600060209182019081528251808401909352601883527f7b226e616d65223a224d792046696e616c20466f726d20230000000000000000918301919091529192506125fe908290612e5a565b61261d61260a85612edf565b604051611bc991906029906020016145ce565b60006022805461262c90614144565b905011801561264957506000848152600c602052604090205460ff165b156126745761266f602261265c86612edf565b84604051602001611bc99392919061461c565b612720565b604080516020810190915260008152601d5460ff16156126fe57600061269984611b70565b90506126c3816040516020016126af9190614697565b6040516020818303038152906040526131c8565b6040516020016126d39190614589565b60405160208183030381529060405291506126f8816040516020016116c19190614782565b5061270a565b61270783611b70565b90505b61271e81604051602001611c8291906147c9565b505b61273c61272c836115f3565b604051602001611bc9919061480c565b612745816131c8565b604051602001611d71919061484d565b61275e826115e8565b6001600160a01b0316336001600160a01b0316146127d55760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c792074686520746f6b656e206f776e65722063616e207365742074686560448201526d081c995b99195c881b595d1a1bd960921b6064820152608401610baa565b6000918252600c6020526040909120805460ff1916911515919091179055565b602d5460609061282f90602890602990602a90602b90602c9061281790612edf565b6040516126af96959493929190602e90602001614892565b60405160200161283f919061484d565b604051602081830303815290604052905090565b60408051808201909152606080825260208201526000838152600b6020908152604080832085845290915290819020815180830190925280548290829061289990614144565b80601f01602080910402602001604051908101604052809291908181526020018280546128c590614144565b80156129125780601f106128e757610100808354040283529160200191612912565b820191906000526020600020905b8154815290600101906020018083116128f557829003601f168201915b5050505050815260200160018201805461292b90614144565b80601f016020809104026020016040519081016040528092919081815260200182805461295790614144565b80156129a45780601f10612979576101008083540402835291602001916129a4565b820191906000526020600020905b81548152906001019060200180831161298757829003601f168201915b505050505081525050905092915050565b6009546001600160a01b031633146129df5760405162461bcd60e51b8152600401610baa9061418e565b6001600160a01b038116612a445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610baa565b612a4d81613111565b50565b601f5460ff1615612a735760405162461bcd60e51b8152600401610baa906141c3565b612a7d8282611832565b612ac95760405162461bcd60e51b815260206004820152601d60248201527f416c6c20746f6b656e73206d757374206265206475706c6963617465730000006044820152606401610baa565b6000818311612ad85781612ada565b825b9050612aee6009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614612b8a57612b0f816115e8565b6001600160a01b0316336001600160a01b031614612b8a5760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792074686520746f6b656e206f776e6572206f7220636f6e7472616374604482015271081bdddb995c8818d85b881c994b5c9bdb1b60721b6064820152608401610baa565b612b938161351c565b612ba6612ba1826001614265565b612bcf565b15612bbe57612bbe612bb9826001614265565b61351c565b6112ef81612bca61354c565b6135bd565b60008054821080156109bc575050600090815260046020526040902054600160e01b161590565b60606109bc826001600019613612565b600081600054811015612c545760008181526004602052604081205490600160e01b82169003612c52575b80600003610b79575060001901600081815260046020526040902054612c31565b505b604051636f96cda160e11b815260040160405180910390fd5b600060e882811c90612c808686846136c7565b62ffffff16901b95945050505050565b80471015612ce05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610baa565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d2d576040519150601f19603f3d011682016040523d82523d6000602084013e612d32565b606091505b50509050806112ef5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610baa565b6000612db4826136e6565b6060015192915050565b600080805b600d84600f8110612dd657612dd6614178565b015481101561031a576000600d85600f8110612df457612df4614178565b018281548110612e0657612e06614178565b90600052602060002001549050828610158015612e2b5750612e288184614265565b86105b15612e3a575091506109bc9050565b612e448184614265565b9250508080612e5290614291565b915050612dc3565b601f1982015182518251603f19909201918290612e779083614265565b1115612ed55760405162461bcd60e51b815260206004820152602760248201527f44796e616d69634275666665723a20417070656e64696e67206f7574206f66206044820152663137bab732399760c91b6064820152608401610baa565b610c83848461375d565b604080516080810191829052607f0190826030600a8206018353600a90045b8015612f1c57600183039250600a81066030018353600a9004612efe565b50819003601f19909101908152919050565b6060836000612f3d8585614205565b6001600160401b03811115612f5457612f54613a38565b6040519080825280601f01601f191660200182016040528015612f7e576020820181803683370190505b509050845b84811015612ff057828181518110612f9d57612f9d614178565b01602001516001600160f81b03191682612fb78884614205565b81518110612fc757612fc7614178565b60200101906001600160f81b031916908160001a90535080612fe881614291565b915050612f83565b5095945050505050565b60008181805b82518160ff1610156130b0576030838260ff168151811061302357613023614178565b016020015160f81c1080159061305657506039838260ff168151811061304b5761304b614178565b016020015160f81c11155b1561309e57613066600a836149bb565b91506030838260ff168151811061307f5761307f614178565b0160200151613091919060f81c6149e4565b61309b9083614a07565b91505b806130a881614a2c565b915050613000565b509392505050565b6000816040516020016130cb9190614a4b565b60405160208183030381529060405280519060200120836040516020016130f29190614a4b565b6040516020818303038152906040528051906020012014905092915050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008061318e8360405160200161317a9190614a67565b604051602081830303815290604052613793565b90508051602082016000f091506001600160a01b0382166131c25760405163046a55db60e11b815260040160405180910390fd5b50919050565b606081516000036131e757505060408051602081019091526000815290565b6000604051806060016040528060408152602001614bba60409139905060006003845160026132169190614265565b6132209190614251565b61322b90600461421c565b6001600160401b0381111561324257613242613a38565b6040519080825280601f01601f19166020018201604052801561326c576020820181803683370190505b509050600182016020820185865187015b808210156132d8576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184535060018301925061327d565b50506003865106600181146132f457600281146133075761330f565b603d6001830353603d600283035361330f565b603d60018303535b509195945050505050565b6000546001600160a01b03831661334357604051622e076360e81b815260040160405180910390fd5b816000036133645760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260056020526040812080546801000000000000000185020190556133bb90849061339e908281612c6d565b6001851460e11b174260a01b176001600160a01b03919091161790565b600082815260046020526040902055808281015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106133cf5760005550505050565b60008261342885846137bf565b14949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613466903390899088908890600401614a8d565b6020604051808303816000875af19250505080156134a1575060408051601f3d908101601f1916820190925261349e91810190614aca565b60015b6134ff573d8080156134cf576040519150601f19603f3d011682016040523d82523d6000602084013e6134d4565b606091505b5080516000036134f7576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000818152600460205260408120549003612a4d5761353a81612c06565b60008281526004602052604090205550565b6000803a43424461355e600184614205565b6040805160208101969096528501939093526060808501929092526080840152904060a083015233901b6bffffffffffffffffffffffff191660c082015260d40160408051601f19818403018152919052805160209091012092915050565b600082815260046020526040812054908190036135ec5760405162d5815360e01b815260040160405180910390fd5b6000928352600460205260409092206001600160e81b039290921660e89190911b179055565b6060833b6000819003613635575050604080516020810190915260008152610b79565b80841115613653575050604080516020810190915260008152610b79565b838310156136855760405163162544fd60e11b8152600481018290526024810185905260448101849052606401610baa565b838303848203600082821061369a578261369c565b815b60408051603f8301601f19168101909152818152955090508087602087018a3c505050509392505050565b60006001600160a01b038416156136de5781612314565b61231461354c565b6040805160808101825260008082526020820181905291810182905260608101919091526109bc61371683612c06565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b8051602082019150808201602084510184015b81841015613788578351815260209384019301613770565b505082510190915250565b60608151826040516020016137a9929190614ae7565b6040516020818303038152906040529050919050565b600081815b84518110156130b05760008582815181106137e1576137e1614178565b602002602001015190508083116138075760008381526020829052604090209250613818565b600081815260208490526040902092505b508061382381614291565b9150506137c4565b82805461383790614144565b90600052602060002090601f016020900481019282613859576000855561389f565b82601f1061387257805160ff191683800117855561389f565b8280016001018555821561389f579182015b8281111561389f578251825591602001919060010190613884565b506138ab929150613904565b5090565b82805482825590600052602060002090810192821561389f579160200282015b8281111561389f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906138cf565b5b808211156138ab5760008155600101613905565b6001600160e01b031981168114612a4d57600080fd5b60006020828403121561394157600080fd5b8135610b7981613919565b60005b8381101561396757818101518382015260200161394f565b83811115610c835750506000910152565b6000815180845261399081602086016020860161394c565b601f01601f19169290920160200192915050565b602081526000610b796020830184613978565b6000602082840312156139c957600080fd5b5035919050565b80356001600160a01b03811681146139e757600080fd5b919050565b600080604083850312156139ff57600080fd5b613a08836139d0565b946020939093013593505050565b60008060408385031215613a2957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613a7057613a70613a38565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613a9e57613a9e613a38565b604052919050565b600082601f830112613ab757600080fd5b81356001600160401b03811115613ad057613ad0613a38565b613ae3601f8201601f1916602001613a76565b818152846020838601011115613af857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613b2757600080fd5b81356001600160401b0380821115613b3e57600080fd5b9083019060e08286031215613b5257600080fd5b613b5a613a4e565b823582811115613b6957600080fd5b613b7587828601613aa6565b825250602083013582811115613b8a57600080fd5b613b9687828601613aa6565b602083015250604083013582811115613bae57600080fd5b613bba87828601613aa6565b604083015250606083013582811115613bd257600080fd5b613bde87828601613aa6565b606083015250608083013582811115613bf657600080fd5b613c0287828601613aa6565b60808301525060a083013560a082015260c083013582811115613c2457600080fd5b613c3087828601613aa6565b60c08301525095945050505050565b600080600060608486031215613c5457600080fd5b613c5d846139d0565b9250613c6b602085016139d0565b9150604084013590509250925092565b60e081526000613c8e60e083018a613978565b8281036020840152613ca0818a613978565b90508281036040840152613cb48189613978565b90508281036060840152613cc88188613978565b90508281036080840152613cdc8187613978565b90508460a084015282810360c0840152613cf68185613978565b9a9950505050505050505050565b600060208284031215613d1657600080fd5b81356001600160401b03811115613d2c57600080fd5b61231484828501613aa6565b600060208284031215613d4a57600080fd5b610b79826139d0565b600060608284031215613d6557600080fd5b604051606081016001600160401b038282108183111715613d8857613d88613a38565b816040528293508435915080821115613da057600080fd5b613dac86838701613aa6565b83526020850135915080821115613dc257600080fd5b613dce86838701613aa6565b60208401526040850135915080821115613de757600080fd5b50613df485828601613aa6565b6040830152505092915050565b60008060408385031215613e1457600080fd5b823591506020808401356001600160401b0380821115613e3357600080fd5b818601915086601f830112613e4757600080fd5b813581811115613e5957613e59613a38565b8060051b613e68858201613a76565b918252838101850191858101908a841115613e8257600080fd5b86860192505b83831015613ebe57823585811115613ea05760008081fd5b613eae8c89838a0101613d53565b8352509186019190860190613e88565b809750505050505050509250929050565b60008083601f840112613ee157600080fd5b5081356001600160401b03811115613ef857600080fd5b6020830191508360208260051b8501011115613f1357600080fd5b9250929050565b600080600060408486031215613f2f57600080fd5b83356001600160401b038082168214613f4757600080fd5b90935060208501359080821115613f5d57600080fd5b50613f6a86828701613ecf565b9497909650939450505050565b803580151581146139e757600080fd5b60008060408385031215613f9a57600080fd5b613fa3836139d0565b9150613fb160208401613f77565b90509250929050565b600080600060408486031215613fcf57600080fd5b613fd8846139d0565b925060208401356001600160401b03811115613ff357600080fd5b613f6a86828701613ecf565b6000806000806080858703121561401557600080fd5b61401e856139d0565b935061402c602086016139d0565b92506040850135915060608501356001600160401b0381111561404e57600080fd5b61405a87828801613aa6565b91505092959194509250565b60008060006060848603121561407b57600080fd5b833592506020840135915060408401356001600160401b0381111561409f57600080fd5b6140ab86828701613d53565b9150509250925092565b600080604083850312156140c857600080fd5b82359150613fb160208401613f77565b600080604083850312156140eb57600080fd5b6140f4836139d0565b9150613fb1602084016139d0565b60208152600082516040602084015261411e6060840182613978565b90506020840151601f1984830301604085015261413b8282613978565b95945050505050565b600181811c9082168061415857607f821691505b6020821081036131c257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015614217576142176141ef565b500390565b6000816000190483118215151615614236576142366141ef565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826142605761426061423b565b500490565b60008219821115614278576142786141ef565b500190565b60008261428c5761428c61423b565b500690565b6000600182016142a3576142a36141ef565b5060010190565b8054600090600181811c90808316806142c457607f831692505b602080841082036142e557634e487b7160e01b600052602260045260246000fd5b8180156142f9576001811461430a57614337565b60ff19861689528489019650614337565b60008881526020902060005b8681101561432f5781548b820152908501908301614316565b505084890196505b50505050505092915050565b6e3d913a3930b4ba2fba3cb832911d1160891b81526000614367600f8301856142aa565b6a1116113b30b63ab2911d1160a91b8152614385600b8201856142aa565b61227d60f01b815260020195945050505050565b60006143a582846142aa565b75076c4c2c6d6cee4deeadcc85ad2dac2ceca74eae4d8560531b81526016019392505050565b643230ba309d60d91b815260006143e560058301856142aa565b670ed8985cd94d8d0b60c21b8152835161440681600884016020880161394c565b6505258eae4d8560d31b60089290910191820152600e01949350505050565b643230ba309d60d91b8152600061443f60058301856142aa565b670ed8985cd94d8d0b60c21b8152835161446081600884016020880161394c565b7f293b6261636b67726f756e642d7265706561743a6e6f2d7265706561743b6261600892909101918201527f636b67726f756e642d73697a653a636f6e7461696e3b6261636b67726f756e6460288201527f2d706f736974696f6e3a63656e7465723b696d6167652d72656e646572696e6760488201527f3a2d7765626b69742d6f7074696d697a652d636f6e74726173743b2d6d732d6960688201527f6e746572706f6c6174696f6e2d6d6f64653a6e6561726573742d6e656967686260888201527f6f723b696d6167652d72656e646572696e673a2d6d6f7a2d63726973702d656460a88201527f6765733b696d6167652d72656e646572696e673a706978656c617465643b223e60c8820152651e17b9bb339f60d11b60e882015260ee01949350505050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000008152600082516145c181601a85016020870161394c565b91909101601a0192915050565b600083516145e081846020880161394c565b701116113232b9b1b934b83a34b7b7111d1160791b90830190815261460860118201856142aa565b61088b60f21b815260020195945050505050565b681134b6b0b3b2911d1160b91b8152600061463a60098301866142aa565b845161464a81836020890161394c565b643f646e613d60d81b9101908152835161466b81600584016020880161394c565b71099b995d1ddbdc9acf5b585a5b9b995d088b60721b6005929091019182015260170195945050505050565b7f3c7376672077696474683d223130302522206865696768743d2231303025222081527f76696577426f783d2230203020313230302031323030222076657273696f6e3d60208201527f22312e322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f3260408201527f3030302f737667223e3c696d6167652077696474683d2231323030222068656960608201527033b43a1e91189918181110343932b31e9160791b60808201526000825161475b81609185016020870161394c565b6f111f1e17b4b6b0b3b29f1e17b9bb339f60811b609193909101928301525060a101919050565b711139bb33afb4b6b0b3b2afb230ba30911d1160711b815281516000906147b081601285016020870161394c565b61088b60f21b6012939091019283015250601401919050565b6d1134b6b0b3b2afb230ba30911d1160911b815281516000906147f381600e85016020870161394c565b61088b60f21b600e939091019283015250601001919050565b6c1130ba3a3934b13aba32b9911d60991b8152815160009061483581600d85016020870161394c565b607d60f81b600d939091019283015250600e01919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161488581601d85016020870161394c565b91909101601d0192915050565b683d913730b6b2911d1160b91b815260006148b0600983018a6142aa565b701116113232b9b1b934b83a34b7b7111d1160791b81526148d4601182018a6142aa565b6a11161134b6b0b3b2911d1160a91b815290506148f4600b8201896142aa565b6b1116113130b73732b9111d1160a11b81529050614915600c8201886142aa565b7211161132bc3a32b93730b62fb634b735911d1160691b8152905061493d60138201876142aa565b90507f222c2273656c6c65725f6665655f62617369735f706f696e7473223a000000008152845161497581601c84016020890161394c565b7116113332b2afb932b1b4b834b2b73a111d1160711b601c92909101918201526149a2602e8201856142aa565b61227d60f01b81526002019a9950505050505050505050565b600060ff821660ff84168160ff04811182151516156149dc576149dc6141ef565b029392505050565b600060ff821660ff8416808210156149fe576149fe6141ef565b90039392505050565b600060ff821660ff84168060ff03821115614a2457614a246141ef565b019392505050565b600060ff821660ff8103614a4257614a426141ef565b60010192915050565b60008251614a5d81846020870161394c565b9190910192915050565b6000815260008251614a8081600185016020870161394c565b9190910160010192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614ac090830184613978565b9695505050505050565b600060208284031215614adc57600080fd5b8151610b7981613919565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201528151600090614b2a81600e85016020870161394c565b91909101600e01939250505056fe3c7376672077696474683d223132303022206865696768743d2231323030222076696577426f783d2230203020313230302031323030222076657273696f6e3d22312e322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207374796c653d226261636b67726f756e642d636f6c6f723a4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e70a6ecc5bae3e00929e79edf68625e5b933b55460beffa128bbd166831bc82c64736f6c634300080e003368747470733a2f2f696e64656c69626c656c6162732d70726f642e73332e75732d656173742d322e616d617a6f6e6177732e636f6d2f70726f66696c652f35343266336239342d303538642d343936642d396534632d31623463366166643965623268747470733a2f2f696e64656c69626c656c6162732d70726f642e73332e75732d656173742d322e616d617a6f6e6177732e636f6d2f62616e6e65722f35343266336239342d303538642d343936642d396534632d316234633661666439656232526573746f726564206261636b20746f2069747320726967687466756c2075746f7069612c20476f6f63682049736c616e6420686173207365656e20616e20696e666c7578206f66206576696c20616d70686962696f757320637265617475726573206f6363757079696e6720746865206465736f6c6174652077617374656c616e642e20204469636b62757474206368696c6472656e206172652076616e697368696e672c2050465020506f6c6963652061726520736561726368696e672c204c61727661204c6164732061726520776f727279696e672c20546f61647a2061726520686964696e6720616e642053746f6e65797320617265207374696c6c20736d6f6b696e67204741532e2020536f6d657468696e672073686f636b696e6720686173206265656e20756e636f76657265642062792061205068756e6b7920436976696c69616ee280a6202042656c6f77207468652050465020506f6c696365204851206f6e20476f6f63682049736c616e642c204576696c204b696e67204772656d706c696e20262054686520476f6f63682041726d7920617265206578706572696d656e74696e6720616e642063726f7373206272656564696e672053746f6e65792043727970746f6164204469636b62757474204c61727661205068756e6b732120204d792046696e616c20466f726d206973206120636f6c6c656374696f6e206f6620323737372072616e646f6d6c792067656e6572617465642c206f6e2d636861696e2c206578706572696d656e74616c2063726561747572657320756e636f76657265642062792061205068756e6b792041727469737420262068697320706f7420736d6f6b696e6720667269656e64732e2020204d464620697320696e20746865207075626c696320646f6d61696e2c204d46466572732063616e206265207573656420696e20616e792077617920696d6167696e61626c65206a75737420646f6ee28099742073686f7720796f7572206368696c6472656e2e2020416c6c204d46466572732066616365206c65667420666f72206f6276696f757320726561736f6e732c20746865792077696c6c2072656d61696e206f6e207468652072696768742073696465206f66205765623320486973746f727921307862426336353031324646444264393032433941383064363532423863313437386631383830413064

Deployed Bytecode

0x60806040526004361061031a5760003560e01c80636c0360eb116101ab578063a24e5153116100f7578063dbe9875f11610095578063e985e9c51161006f578063e985e9c5146108ba578063ea84b59b14610903578063f2fde38b14610930578063fd6b3cf51461095057600080fd5b8063dbe9875f1461086f578063dc53fd921461088f578063e8a3d485146108a557600080fd5b8063c11feac1116100d1578063c11feac1146107f9578063c5c627fb14610819578063c87b56dd14610839578063d5abeb011461085957600080fd5b8063a24e5153146107a3578063b32c5680146107b9578063b88d4fde146107d957600080fd5b80637cb64759116101645780638fb4e8a91161013e5780638fb4e8a91461074657806395d89b411461075b578063a2026e3d14610770578063a22cb4651461078357600080fd5b80637cb64759146106e857806389ce3074146107085780638da5cb5b1461072857600080fd5b80636c0360eb1461063e5780636cced73a1461065357806370a0823114610673578063715018a614610693578063716e43d7146106a85780637bddd65b146106c857600080fd5b80634047638d1161026a5780635b92ac0d116102235780636352211e116101fd5780636352211e146105d3578063639814e0146105f357806366e338701461060957806368bd580e1461062957600080fd5b80635b92ac0d1461057e5780636190e1da14610593578063621a1f74146105b357600080fd5b80634047638d146104da57806342842e0e146104ef5780634920154b1461050f5780634ca1a0f214610524578063542d50411461054457806355f804b31461055e57600080fd5b806318160ddd116102d75780632d6b6224116102b15780632d6b62241461046d57806336cd2edd146104875780633cca24201461049d5780633ccfd60b146104c557600080fd5b806318160ddd1461041057806323b872dd1461043357806329fc6bae1461045357600080fd5b806301ffc9a71461031f57806306fdde0314610354578063081812fc14610376578063095ea7b3146103ae57806309dbabca146103d05780630f3debbe146103f0575b600080fd5b34801561032b57600080fd5b5061033f61033a36600461392f565b610970565b60405190151581526020015b60405180910390f35b34801561036057600080fd5b506103696109c2565b60405161034b91906139a4565b34801561038257600080fd5b506103966103913660046139b7565b610a54565b6040516001600160a01b03909116815260200161034b565b3480156103ba57600080fd5b506103ce6103c93660046139ec565b610a98565b005b3480156103dc57600080fd5b506103696103eb366004613a16565b610b38565b3480156103fc57600080fd5b506103ce61040b366004613b15565b610b80565b34801561041c57600080fd5b50600154600054035b60405190815260200161034b565b34801561043f57600080fd5b506103ce61044e366004613c3f565b610c89565b34801561045f57600080fd5b5060275461033f9060ff1681565b34801561047957600080fd5b5060235461033f9060ff1681565b34801561049357600080fd5b5061042560265481565b3480156104a957600080fd5b506104b2610e3d565b60405161034b9796959493929190613c7b565b3480156104d157600080fd5b506103ce61119b565b3480156104e657600080fd5b506103ce611296565b3480156104fb57600080fd5b506103ce61050a366004613c3f565b6112d4565b34801561051b57600080fd5b506103ce6112f4565b34801561053057600080fd5b506103ce61053f3660046139b7565b611332565b34801561055057600080fd5b50601f5461033f9060ff1681565b34801561056a57600080fd5b506103ce610579366004613d04565b611361565b34801561058a57600080fd5b5061033f6113a2565b34801561059f57600080fd5b506103ce6105ae366004613d04565b6113d0565b3480156105bf57600080fd5b506103696105ce3660046139b7565b611430565b3480156105df57600080fd5b506103966105ee3660046139b7565b6115e8565b3480156105ff57600080fd5b5061042560205481565b34801561061557600080fd5b50610369610624366004613d04565b6115f3565b34801561063557600080fd5b506103ce611748565b34801561064a57600080fd5b506103696117a4565b34801561065f57600080fd5b5061033f61066e366004613a16565b611832565b34801561067f57600080fd5b5061042561068e366004613d38565b61184e565b34801561069f57600080fd5b506103ce61189c565b3480156106b457600080fd5b506103ce6106c3366004613e01565b6118d2565b3480156106d457600080fd5b506103ce6106e33660046139b7565b611b12565b3480156106f457600080fd5b506103ce6107033660046139b7565b611b41565b34801561071457600080fd5b50610369610723366004613d04565b611b70565b34801561073457600080fd5b506009546001600160a01b0316610396565b34801561075257600080fd5b506103ce611d89565b34801561076757600080fd5b50610369611dc7565b61042561077e366004613f1a565b611dd6565b34801561078f57600080fd5b506103ce61079e366004613f87565b612207565b3480156107af57600080fd5b5061042560255481565b3480156107c557600080fd5b5061033f6107d4366004613fba565b61229c565b3480156107e557600080fd5b506103ce6107f4366004613fff565b61231c565b34801561080557600080fd5b506103696108143660046139b7565b612360565b34801561082557600080fd5b506103ce610834366004614066565b61236e565b34801561084557600080fd5b506103696108543660046139b7565b6124d7565b34801561086557600080fd5b50610425610ad981565b34801561087b57600080fd5b506103ce61088a3660046140b5565b612755565b34801561089b57600080fd5b5061042560215481565b3480156108b157600080fd5b506103696127f5565b3480156108c657600080fd5b5061033f6108d53660046140d8565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561090f57600080fd5b5061092361091e366004613a16565b612853565b60405161034b9190614102565b34801561093c57600080fd5b506103ce61094b366004613d38565b6129b5565b34801561095c57600080fd5b506103ce61096b366004613a16565b612a50565b60006301ffc9a760e01b6001600160e01b0319831614806109a157506380ac58cd60e01b6001600160e01b03198316145b806109bc5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546109d190614144565b80601f01602080910402602001604051908101604052809291908181526020018280546109fd90614144565b8015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b6000610a5f82612bcf565b610a7c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610aa3826115e8565b9050336001600160a01b03821614610adc57610abf81336108d5565b610adc576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000828152600a602052604090208054606091610b799184908110610b5f57610b5f614178565b6000918252602090912001546001600160a01b0316612bf6565b9392505050565b6009546001600160a01b03163314610bb35760405162461bcd60e51b8152600401610baa9061418e565b60405180910390fd5b601f5460ff1615610bd65760405162461bcd60e51b8152600401610baa906141c3565b805180518291602891610bf091839160209091019061382b565b506020828101518051610c09926001850192019061382b565b5060408201518051610c2591600284019160209091019061382b565b5060608201518051610c4191600384019160209091019061382b565b5060808201518051610c5d91600484019160209091019061382b565b5060a0820151600582015560c08201518051610c8391600684019160209091019061382b565b50505050565b6000610c9482612c06565b9050836001600160a01b0316816001600160a01b031614610cc75760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417610d1457610cf786336108d5565b610d1457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610d3b57604051633a954ecd60e21b815260040160405180910390fd5b8015610d4657600082555b6001600160a01b03808716600090815260056020526040808220805460001901905591871681522080546001019055610d9f85610d84888287612c6d565b600160e11b174260a01b176001600160a01b03919091161790565b600085815260046020526040812091909155600160e11b84169003610df457600184016000818152600460205260408120549003610df2576000548114610df25760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b602880548190610e4c90614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7890614144565b8015610ec55780601f10610e9a57610100808354040283529160200191610ec5565b820191906000526020600020905b815481529060010190602001808311610ea857829003601f168201915b505050505090806001018054610eda90614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0690614144565b8015610f535780601f10610f2857610100808354040283529160200191610f53565b820191906000526020600020905b815481529060010190602001808311610f3657829003601f168201915b505050505090806002018054610f6890614144565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9490614144565b8015610fe15780601f10610fb657610100808354040283529160200191610fe1565b820191906000526020600020905b815481529060010190602001808311610fc457829003601f168201915b505050505090806003018054610ff690614144565b80601f016020809104026020016040519081016040528092919081815260200182805461102290614144565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b50505050509080600401805461108490614144565b80601f01602080910402602001604051908101604052809291908181526020018280546110b090614144565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b50505050509080600501549080600601805461111890614144565b80601f016020809104026020016040519081016040528092919081815260200182805461114490614144565b80156111915780601f1061116657610100808354040283529160200191611191565b820191906000526020600020905b81548152906001019060200180831161117457829003601f168201915b5050505050905087565b6009546001600160a01b031633146111c55760405162461bcd60e51b8152600401610baa9061418e565b6002600854036112175760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610baa565b600260085547600061271061122d60fa82614205565b611237908461421c565b6112419190614251565b905060006112576009546001600160a01b031690565b905073ea208da933c43857683c04bc76e3fd331d7bfdf76112788284612c90565b61128b816112868587614205565b612c90565b505060016008555050565b6009546001600160a01b031633146112c05760405162461bcd60e51b8152600401610baa9061418e565b6023805460ff19811660ff90911615179055565b6112ef8383836040518060200160405280600081525061231c565b505050565b6009546001600160a01b0316331461131e5760405162461bcd60e51b8152600401610baa9061418e565b601d805460ff19811660ff90911615179055565b6009546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610baa9061418e565b602655565b6009546001600160a01b0316331461138b5760405162461bcd60e51b8152600401610baa9061418e565b805161139e90602290602084019061382b565b5050565b6000610ad96113b060005490565b1080156113cb575060235460ff16806113cb575060275460ff165b905090565b6009546001600160a01b031633146113fa5760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff161561141d5760405162461bcd60e51b8152600401610baa906141c3565b805161139e90601e90602084019061382b565b606061143b82612bcf565b6114775760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610baa565b60006114a5611488600f600461421c565b604080518281016060018252910181526000602090910190815290565b905060005b600f8110156115e1576000610ad96114c186612da9565b866114cc8582614265565b60405160e89390931b6001600160e81b0319166020840152602383019190915260438201526063016040516020818303038152906040528051906020012060001c611517919061427d565b905060006115258284612dbe565b9050600a81101561155957604080518082019091526002815261030360f41b6020820152611554908590612e5a565b611585565b6064811015611585576040805180820190915260018152600360fc1b6020820152611585908590612e5a565b6103e78111156115b95760408051808201909152600381526239393960e81b60208201526115b4908590612e5a565b6115cc565b6115cc6115c582612edf565b8590612e5a565b505080806115d990614291565b9150506114aa565b5092915050565b60006109bc82612c06565b60408051620200608101825262020040815260006020918201908152825180840190935260018352605b60f81b91830191909152606091611635908290612e5a565b60005b600f8110156115e15760006116756116708661165585600361421c565b61166086600361421c565b61166b906003614265565b612f2e565b612ffa565b60ff1690506116d8601c838154811061169057611690614178565b60009182526020808320868452600b8252604080852087865283529384902093516116c19493909101929101614343565b60408051601f198184030181529190528490612e5a565b6116e46001600f614205565b8203611712576040805180820190915260018152605d60f81b602082015261170d908490612e5a565b611735565b6040805180820190915260018152600b60fa1b6020820152611735908490612e5a565b508061174081614291565b915050611638565b601f5460ff161561176b5760405162461bcd60e51b8152600401610baa906141c3565b6009546001600160a01b031633146117955760405162461bcd60e51b8152600401610baa9061418e565b601f805460ff19166001179055565b602280546117b190614144565b80601f01602080910402602001604051908101604052809291908181526020018280546117dd90614144565b801561182a5780601f106117ff5761010080835404028352916020019161182a565b820191906000526020600020905b81548152906001019060200180831161180d57829003601f168201915b505050505081565b6000610b7961184084611430565b61184984611430565b6130b8565b60006001600160a01b038216611877576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6009546001600160a01b031633146118c65760405162461bcd60e51b8152600401610baa9061418e565b6118d06000613111565b565b6009546001600160a01b031633146118fc5760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff161561191f5760405162461bcd60e51b8152600401610baa906141c3565b8051600d83600f811061193457611934614178565b01541461199b5760405162461bcd60e51b815260206004820152602f60248201527f5472616974732073697a6520646f6573206e6f74206d6174636820746965727360448201526e040ccdee440e8d0d2e640d2dcc8caf608b1b6064820152608401610baa565b600081516001600160401b038111156119b6576119b6613a38565b6040519080825280602002602001820160405280156119df578160200160208202803683370190505b50905060005b8251811015611af257611a14838281518110611a0357611a03614178565b602002602001015160400151613163565b828281518110611a2657611a26614178565b60200260200101906001600160a01b031690816001600160a01b0316815250506040518060400160405280848381518110611a6357611a63614178565b6020026020010151600001518152602001848381518110611a8657611a86614178565b6020908102919091018101518101519091526000868152600b8252604080822085835283529020825180519192611ac29284929091019061382b565b506020828101518051611adb926001850192019061382b565b509050508080611aea90614291565b9150506119e5565b506000838152600a602090815260409091208251610c83928401906138af565b6009546001600160a01b03163314611b3c5760405162461bcd60e51b8152600401610baa9061418e565b602055565b6009546001600160a01b03163314611b6b5760405162461bcd60e51b8152600401610baa9061418e565b602455565b604080516202006081019091526202004081526000602090910181815260609190611bb46040518060c0016040528060818152602001614b39608191398290612e5a565b611be0601e604051602001611bc99190614399565b60408051601f198184030181529190528290612e5a565b60005b611bef6001600f614205565b811015611cab57611c1361167086611c0884600361421c565b61166085600361421c565b60ff169250611c99600b60008381526020019081526020016000206000858152602001908152602001600020600101611c71611c6c600a60008681526020019081526020016000208781548110610b5f57610b5f614178565b6131c8565b604051602001611c829291906143cb565b60408051601f198184030181529190528390612e5a565b80611ca381614291565b915050611be3565b50611cd6611670856003611cc0600f8261421c565b611cca9190614205565b61166b600f600361421c565b60ff169150611d58600b6000611cee6001600f614205565b81526020019081526020016000206000848152602001908152602001600020600101611d47611c6c600a60006001600f611d289190614205565b81526020019081526020016000208681548110610b5f57610b5f614178565b604051602001611bc9929190614425565b611d61816131c8565b604051602001611d719190614589565b60405160208183030381529060405292505050919050565b6009546001600160a01b03163314611db35760405162461bcd60e51b8152600401610baa9061418e565b6027805460ff19811660ff90911615179055565b6060600380546109d190614144565b6000600260085403611e2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610baa565b6002600855611e376113a2565b611e7b5760405162461bcd60e51b81526020600482015260156024820152744d696e74696e67206973206e6f742061637469766560581b6044820152606401610baa565b6000546001600160401b038516611eca5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081d1bdad95b8818dbdd5b9d606a1b6044820152606401610baa565b610ad9611ee06001600160401b03871683614265565b1115611f245760405162461bcd60e51b8152602060048201526013602482015272416c6c20746f6b656e732061726520676f6e6560681b6044820152606401610baa565b60235460ff161561203c576009546001600160a01b03163314611fd257602054856001600160401b0316611f7a336001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b611f849190614265565b1115611fd25760405162461bcd60e51b815260206004820152601a60248201527f4578636565646564206d6178206d696e747320616c6c6f7765640000000000006044820152606401610baa565b34602154866001600160401b0316611fea919061421c565b146120375760405162461bcd60e51b815260206004820152601e60248201527f496e636f727265637420616d6f756e74206f662065746865722073656e7400006044820152606401610baa565b61218f565b6009546001600160a01b0316331461212a5761205933858561229c565b6120995760405162461bcd60e51b8152602060048201526011602482015270139bdd081bdb88185b1b1bddc81b1a5cdd607a1b6044820152606401610baa565b602654856001600160401b03166120d2336001600160a01b03166000908152600560205260409081902054901c6001600160401b031690565b6120dc9190614265565b111561212a5760405162461bcd60e51b815260206004820152601a60248201527f4578636565646564206d6178206d696e747320616c6c6f7765640000000000006044820152606401610baa565b34602554866001600160401b0316612142919061421c565b1461218f5760405162461bcd60e51b815260206004820152601e60248201527f496e636f727265637420616d6f756e74206f662065746865722073656e7400006044820152606401610baa565b60006121a560146001600160401b038816614251565b905060006121bd60146001600160401b03891661427d565b905060005b828110156121e7576121d533601461331a565b806121df81614291565b9150506121c2565b5080156121f8576121f8338261331a565b50506001600855949350505050565b336001600160a01b038316036122305760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000612314838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506024546040516bffffffffffffffffffffffff1960608b901b16602082015290925060340190506040516020818303038152906040528051906020012061341b565b949350505050565b612327848484610c89565b6001600160a01b0383163b15610c835761234384848484613431565b610c83576040516368d2bf6b60e11b815260040160405180910390fd5b60606109bc61072383611430565b6009546001600160a01b031633146123985760405162461bcd60e51b8152600401610baa9061418e565b601f5460ff16156123bb5760405162461bcd60e51b8152600401610baa906141c3565b60408051808201825282518152602080840151818301526000868152600b825283812086825282529290922081518051929391926123fc928492019061382b565b506020828101518051612415926001850192019061382b565b5050506000838152600a602090815260408083208054825181850281018501909352808352919290919083018282801561247857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161245a575b5050505050905061248c8260400151613163565b81848151811061249e5761249e614178565b6001600160a01b039092166020928302919091018201526000858152600a82526040902082516124d0928401906138af565b5050505050565b60606124e282612bcf565b61251e5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606401610baa565b60008052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3546125955760405162461bcd60e51b815260206004820152601a60248201527f5472616974732068617665206e6f74206265656e2061646465640000000000006044820152606401610baa565b60006125a083611430565b604080516202006081018252620200408152600060209182019081528251808401909352601883527f7b226e616d65223a224d792046696e616c20466f726d20230000000000000000918301919091529192506125fe908290612e5a565b61261d61260a85612edf565b604051611bc991906029906020016145ce565b60006022805461262c90614144565b905011801561264957506000848152600c602052604090205460ff165b156126745761266f602261265c86612edf565b84604051602001611bc99392919061461c565b612720565b604080516020810190915260008152601d5460ff16156126fe57600061269984611b70565b90506126c3816040516020016126af9190614697565b6040516020818303038152906040526131c8565b6040516020016126d39190614589565b60405160208183030381529060405291506126f8816040516020016116c19190614782565b5061270a565b61270783611b70565b90505b61271e81604051602001611c8291906147c9565b505b61273c61272c836115f3565b604051602001611bc9919061480c565b612745816131c8565b604051602001611d71919061484d565b61275e826115e8565b6001600160a01b0316336001600160a01b0316146127d55760405162461bcd60e51b815260206004820152602e60248201527f4f6e6c792074686520746f6b656e206f776e65722063616e207365742074686560448201526d081c995b99195c881b595d1a1bd960921b6064820152608401610baa565b6000918252600c6020526040909120805460ff1916911515919091179055565b602d5460609061282f90602890602990602a90602b90602c9061281790612edf565b6040516126af96959493929190602e90602001614892565b60405160200161283f919061484d565b604051602081830303815290604052905090565b60408051808201909152606080825260208201526000838152600b6020908152604080832085845290915290819020815180830190925280548290829061289990614144565b80601f01602080910402602001604051908101604052809291908181526020018280546128c590614144565b80156129125780601f106128e757610100808354040283529160200191612912565b820191906000526020600020905b8154815290600101906020018083116128f557829003601f168201915b5050505050815260200160018201805461292b90614144565b80601f016020809104026020016040519081016040528092919081815260200182805461295790614144565b80156129a45780601f10612979576101008083540402835291602001916129a4565b820191906000526020600020905b81548152906001019060200180831161298757829003601f168201915b505050505081525050905092915050565b6009546001600160a01b031633146129df5760405162461bcd60e51b8152600401610baa9061418e565b6001600160a01b038116612a445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610baa565b612a4d81613111565b50565b601f5460ff1615612a735760405162461bcd60e51b8152600401610baa906141c3565b612a7d8282611832565b612ac95760405162461bcd60e51b815260206004820152601d60248201527f416c6c20746f6b656e73206d757374206265206475706c6963617465730000006044820152606401610baa565b6000818311612ad85781612ada565b825b9050612aee6009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614612b8a57612b0f816115e8565b6001600160a01b0316336001600160a01b031614612b8a5760405162461bcd60e51b815260206004820152603260248201527f4f6e6c792074686520746f6b656e206f776e6572206f7220636f6e7472616374604482015271081bdddb995c8818d85b881c994b5c9bdb1b60721b6064820152608401610baa565b612b938161351c565b612ba6612ba1826001614265565b612bcf565b15612bbe57612bbe612bb9826001614265565b61351c565b6112ef81612bca61354c565b6135bd565b60008054821080156109bc575050600090815260046020526040902054600160e01b161590565b60606109bc826001600019613612565b600081600054811015612c545760008181526004602052604081205490600160e01b82169003612c52575b80600003610b79575060001901600081815260046020526040902054612c31565b505b604051636f96cda160e11b815260040160405180910390fd5b600060e882811c90612c808686846136c7565b62ffffff16901b95945050505050565b80471015612ce05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610baa565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d2d576040519150601f19603f3d011682016040523d82523d6000602084013e612d32565b606091505b50509050806112ef5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610baa565b6000612db4826136e6565b6060015192915050565b600080805b600d84600f8110612dd657612dd6614178565b015481101561031a576000600d85600f8110612df457612df4614178565b018281548110612e0657612e06614178565b90600052602060002001549050828610158015612e2b5750612e288184614265565b86105b15612e3a575091506109bc9050565b612e448184614265565b9250508080612e5290614291565b915050612dc3565b601f1982015182518251603f19909201918290612e779083614265565b1115612ed55760405162461bcd60e51b815260206004820152602760248201527f44796e616d69634275666665723a20417070656e64696e67206f7574206f66206044820152663137bab732399760c91b6064820152608401610baa565b610c83848461375d565b604080516080810191829052607f0190826030600a8206018353600a90045b8015612f1c57600183039250600a81066030018353600a9004612efe565b50819003601f19909101908152919050565b6060836000612f3d8585614205565b6001600160401b03811115612f5457612f54613a38565b6040519080825280601f01601f191660200182016040528015612f7e576020820181803683370190505b509050845b84811015612ff057828181518110612f9d57612f9d614178565b01602001516001600160f81b03191682612fb78884614205565b81518110612fc757612fc7614178565b60200101906001600160f81b031916908160001a90535080612fe881614291565b915050612f83565b5095945050505050565b60008181805b82518160ff1610156130b0576030838260ff168151811061302357613023614178565b016020015160f81c1080159061305657506039838260ff168151811061304b5761304b614178565b016020015160f81c11155b1561309e57613066600a836149bb565b91506030838260ff168151811061307f5761307f614178565b0160200151613091919060f81c6149e4565b61309b9083614a07565b91505b806130a881614a2c565b915050613000565b509392505050565b6000816040516020016130cb9190614a4b565b60405160208183030381529060405280519060200120836040516020016130f29190614a4b565b6040516020818303038152906040528051906020012014905092915050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008061318e8360405160200161317a9190614a67565b604051602081830303815290604052613793565b90508051602082016000f091506001600160a01b0382166131c25760405163046a55db60e11b815260040160405180910390fd5b50919050565b606081516000036131e757505060408051602081019091526000815290565b6000604051806060016040528060408152602001614bba60409139905060006003845160026132169190614265565b6132209190614251565b61322b90600461421c565b6001600160401b0381111561324257613242613a38565b6040519080825280601f01601f19166020018201604052801561326c576020820181803683370190505b509050600182016020820185865187015b808210156132d8576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184535060018301925061327d565b50506003865106600181146132f457600281146133075761330f565b603d6001830353603d600283035361330f565b603d60018303535b509195945050505050565b6000546001600160a01b03831661334357604051622e076360e81b815260040160405180910390fd5b816000036133645760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600090815260056020526040812080546801000000000000000185020190556133bb90849061339e908281612c6d565b6001851460e11b174260a01b176001600160a01b03919091161790565b600082815260046020526040902055808281015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106133cf5760005550505050565b60008261342885846137bf565b14949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613466903390899088908890600401614a8d565b6020604051808303816000875af19250505080156134a1575060408051601f3d908101601f1916820190925261349e91810190614aca565b60015b6134ff573d8080156134cf576040519150601f19603f3d011682016040523d82523d6000602084013e6134d4565b606091505b5080516000036134f7576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000818152600460205260408120549003612a4d5761353a81612c06565b60008281526004602052604090205550565b6000803a43424461355e600184614205565b6040805160208101969096528501939093526060808501929092526080840152904060a083015233901b6bffffffffffffffffffffffff191660c082015260d40160408051601f19818403018152919052805160209091012092915050565b600082815260046020526040812054908190036135ec5760405162d5815360e01b815260040160405180910390fd5b6000928352600460205260409092206001600160e81b039290921660e89190911b179055565b6060833b6000819003613635575050604080516020810190915260008152610b79565b80841115613653575050604080516020810190915260008152610b79565b838310156136855760405163162544fd60e11b8152600481018290526024810185905260448101849052606401610baa565b838303848203600082821061369a578261369c565b815b60408051603f8301601f19168101909152818152955090508087602087018a3c505050509392505050565b60006001600160a01b038416156136de5781612314565b61231461354c565b6040805160808101825260008082526020820181905291810182905260608101919091526109bc61371683612c06565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b8051602082019150808201602084510184015b81841015613788578351815260209384019301613770565b505082510190915250565b60608151826040516020016137a9929190614ae7565b6040516020818303038152906040529050919050565b600081815b84518110156130b05760008582815181106137e1576137e1614178565b602002602001015190508083116138075760008381526020829052604090209250613818565b600081815260208490526040902092505b508061382381614291565b9150506137c4565b82805461383790614144565b90600052602060002090601f016020900481019282613859576000855561389f565b82601f1061387257805160ff191683800117855561389f565b8280016001018555821561389f579182015b8281111561389f578251825591602001919060010190613884565b506138ab929150613904565b5090565b82805482825590600052602060002090810192821561389f579160200282015b8281111561389f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906138cf565b5b808211156138ab5760008155600101613905565b6001600160e01b031981168114612a4d57600080fd5b60006020828403121561394157600080fd5b8135610b7981613919565b60005b8381101561396757818101518382015260200161394f565b83811115610c835750506000910152565b6000815180845261399081602086016020860161394c565b601f01601f19169290920160200192915050565b602081526000610b796020830184613978565b6000602082840312156139c957600080fd5b5035919050565b80356001600160a01b03811681146139e757600080fd5b919050565b600080604083850312156139ff57600080fd5b613a08836139d0565b946020939093013593505050565b60008060408385031215613a2957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613a7057613a70613a38565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613a9e57613a9e613a38565b604052919050565b600082601f830112613ab757600080fd5b81356001600160401b03811115613ad057613ad0613a38565b613ae3601f8201601f1916602001613a76565b818152846020838601011115613af857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613b2757600080fd5b81356001600160401b0380821115613b3e57600080fd5b9083019060e08286031215613b5257600080fd5b613b5a613a4e565b823582811115613b6957600080fd5b613b7587828601613aa6565b825250602083013582811115613b8a57600080fd5b613b9687828601613aa6565b602083015250604083013582811115613bae57600080fd5b613bba87828601613aa6565b604083015250606083013582811115613bd257600080fd5b613bde87828601613aa6565b606083015250608083013582811115613bf657600080fd5b613c0287828601613aa6565b60808301525060a083013560a082015260c083013582811115613c2457600080fd5b613c3087828601613aa6565b60c08301525095945050505050565b600080600060608486031215613c5457600080fd5b613c5d846139d0565b9250613c6b602085016139d0565b9150604084013590509250925092565b60e081526000613c8e60e083018a613978565b8281036020840152613ca0818a613978565b90508281036040840152613cb48189613978565b90508281036060840152613cc88188613978565b90508281036080840152613cdc8187613978565b90508460a084015282810360c0840152613cf68185613978565b9a9950505050505050505050565b600060208284031215613d1657600080fd5b81356001600160401b03811115613d2c57600080fd5b61231484828501613aa6565b600060208284031215613d4a57600080fd5b610b79826139d0565b600060608284031215613d6557600080fd5b604051606081016001600160401b038282108183111715613d8857613d88613a38565b816040528293508435915080821115613da057600080fd5b613dac86838701613aa6565b83526020850135915080821115613dc257600080fd5b613dce86838701613aa6565b60208401526040850135915080821115613de757600080fd5b50613df485828601613aa6565b6040830152505092915050565b60008060408385031215613e1457600080fd5b823591506020808401356001600160401b0380821115613e3357600080fd5b818601915086601f830112613e4757600080fd5b813581811115613e5957613e59613a38565b8060051b613e68858201613a76565b918252838101850191858101908a841115613e8257600080fd5b86860192505b83831015613ebe57823585811115613ea05760008081fd5b613eae8c89838a0101613d53565b8352509186019190860190613e88565b809750505050505050509250929050565b60008083601f840112613ee157600080fd5b5081356001600160401b03811115613ef857600080fd5b6020830191508360208260051b8501011115613f1357600080fd5b9250929050565b600080600060408486031215613f2f57600080fd5b83356001600160401b038082168214613f4757600080fd5b90935060208501359080821115613f5d57600080fd5b50613f6a86828701613ecf565b9497909650939450505050565b803580151581146139e757600080fd5b60008060408385031215613f9a57600080fd5b613fa3836139d0565b9150613fb160208401613f77565b90509250929050565b600080600060408486031215613fcf57600080fd5b613fd8846139d0565b925060208401356001600160401b03811115613ff357600080fd5b613f6a86828701613ecf565b6000806000806080858703121561401557600080fd5b61401e856139d0565b935061402c602086016139d0565b92506040850135915060608501356001600160401b0381111561404e57600080fd5b61405a87828801613aa6565b91505092959194509250565b60008060006060848603121561407b57600080fd5b833592506020840135915060408401356001600160401b0381111561409f57600080fd5b6140ab86828701613d53565b9150509250925092565b600080604083850312156140c857600080fd5b82359150613fb160208401613f77565b600080604083850312156140eb57600080fd5b6140f4836139d0565b9150613fb1602084016139d0565b60208152600082516040602084015261411e6060840182613978565b90506020840151601f1984830301604085015261413b8282613978565b95945050505050565b600181811c9082168061415857607f821691505b6020821081036131c257634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526012908201527110dbdb9d1c9858dd081a5cc81cd9585b195960721b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015614217576142176141ef565b500390565b6000816000190483118215151615614236576142366141ef565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826142605761426061423b565b500490565b60008219821115614278576142786141ef565b500190565b60008261428c5761428c61423b565b500690565b6000600182016142a3576142a36141ef565b5060010190565b8054600090600181811c90808316806142c457607f831692505b602080841082036142e557634e487b7160e01b600052602260045260246000fd5b8180156142f9576001811461430a57614337565b60ff19861689528489019650614337565b60008881526020902060005b8681101561432f5781548b820152908501908301614316565b505084890196505b50505050505092915050565b6e3d913a3930b4ba2fba3cb832911d1160891b81526000614367600f8301856142aa565b6a1116113b30b63ab2911d1160a91b8152614385600b8201856142aa565b61227d60f01b815260020195945050505050565b60006143a582846142aa565b75076c4c2c6d6cee4deeadcc85ad2dac2ceca74eae4d8560531b81526016019392505050565b643230ba309d60d91b815260006143e560058301856142aa565b670ed8985cd94d8d0b60c21b8152835161440681600884016020880161394c565b6505258eae4d8560d31b60089290910191820152600e01949350505050565b643230ba309d60d91b8152600061443f60058301856142aa565b670ed8985cd94d8d0b60c21b8152835161446081600884016020880161394c565b7f293b6261636b67726f756e642d7265706561743a6e6f2d7265706561743b6261600892909101918201527f636b67726f756e642d73697a653a636f6e7461696e3b6261636b67726f756e6460288201527f2d706f736974696f6e3a63656e7465723b696d6167652d72656e646572696e6760488201527f3a2d7765626b69742d6f7074696d697a652d636f6e74726173743b2d6d732d6960688201527f6e746572706f6c6174696f6e2d6d6f64653a6e6561726573742d6e656967686260888201527f6f723b696d6167652d72656e646572696e673a2d6d6f7a2d63726973702d656460a88201527f6765733b696d6167652d72656e646572696e673a706978656c617465643b223e60c8820152651e17b9bb339f60d11b60e882015260ee01949350505050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000008152600082516145c181601a85016020870161394c565b91909101601a0192915050565b600083516145e081846020880161394c565b701116113232b9b1b934b83a34b7b7111d1160791b90830190815261460860118201856142aa565b61088b60f21b815260020195945050505050565b681134b6b0b3b2911d1160b91b8152600061463a60098301866142aa565b845161464a81836020890161394c565b643f646e613d60d81b9101908152835161466b81600584016020880161394c565b71099b995d1ddbdc9acf5b585a5b9b995d088b60721b6005929091019182015260170195945050505050565b7f3c7376672077696474683d223130302522206865696768743d2231303025222081527f76696577426f783d2230203020313230302031323030222076657273696f6e3d60208201527f22312e322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f3260408201527f3030302f737667223e3c696d6167652077696474683d2231323030222068656960608201527033b43a1e91189918181110343932b31e9160791b60808201526000825161475b81609185016020870161394c565b6f111f1e17b4b6b0b3b29f1e17b9bb339f60811b609193909101928301525060a101919050565b711139bb33afb4b6b0b3b2afb230ba30911d1160711b815281516000906147b081601285016020870161394c565b61088b60f21b6012939091019283015250601401919050565b6d1134b6b0b3b2afb230ba30911d1160911b815281516000906147f381600e85016020870161394c565b61088b60f21b600e939091019283015250601001919050565b6c1130ba3a3934b13aba32b9911d60991b8152815160009061483581600d85016020870161394c565b607d60f81b600d939091019283015250600e01919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161488581601d85016020870161394c565b91909101601d0192915050565b683d913730b6b2911d1160b91b815260006148b0600983018a6142aa565b701116113232b9b1b934b83a34b7b7111d1160791b81526148d4601182018a6142aa565b6a11161134b6b0b3b2911d1160a91b815290506148f4600b8201896142aa565b6b1116113130b73732b9111d1160a11b81529050614915600c8201886142aa565b7211161132bc3a32b93730b62fb634b735911d1160691b8152905061493d60138201876142aa565b90507f222c2273656c6c65725f6665655f62617369735f706f696e7473223a000000008152845161497581601c84016020890161394c565b7116113332b2afb932b1b4b834b2b73a111d1160711b601c92909101918201526149a2602e8201856142aa565b61227d60f01b81526002019a9950505050505050505050565b600060ff821660ff84168160ff04811182151516156149dc576149dc6141ef565b029392505050565b600060ff821660ff8416808210156149fe576149fe6141ef565b90039392505050565b600060ff821660ff84168060ff03821115614a2457614a246141ef565b019392505050565b600060ff821660ff8103614a4257614a426141ef565b60010192915050565b60008251614a5d81846020870161394c565b9190910192915050565b6000815260008251614a8081600185016020870161394c565b9190910160010192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614ac090830184613978565b9695505050505050565b600060208284031215614adc57600080fd5b8151610b7981613919565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201528151600090614b2a81600e85016020870161394c565b91909101600e01939250505056fe3c7376672077696474683d223132303022206865696768743d2231323030222076696577426f783d2230203020313230302031323030222076657273696f6e3d22312e322220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207374796c653d226261636b67726f756e642d636f6c6f723a4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e70a6ecc5bae3e00929e79edf68625e5b933b55460beffa128bbd166831bc82c64736f6c634300080e0033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.