Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x5795acdfe1150f8d527debf2febeecfee9a9b04905fac7d024376ee0d5423dd7 | 0x60806040 | 14699319 | 7 days 10 hrs ago | 0x6c56515a63151a6a57a26d4828d2b016a1448173 | IN | Create: AVAcadoClub | 0 AVAX | 0.1444615425 |
[ Download CSV Export ]
Contract Name:
AVAcadoClub
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-05-14 */ // File: @openzeppelin/[email protected]/utils/cryptography/MerkleProof.sol // OpenZeppelin Contracts (last updated v4.5.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. */ 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. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // 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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: AVAcadoClub.sol pragma solidity >= 0.7.0 < 0.9.0; contract AVAcadoClub is ERC721, Ownable { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private supply; // URI string public uriPrefix = "ipfs://QmWUdqMhGQgMu5Ug9sQvyHdH5i93npXNR286qp1p4557mD/"; string public uriSuffix = ".json"; // Cost uint256 public presaleCost = 0.5 ether; uint256 public whitelistsaleCost = 0.7 ether; uint256 public publicsaleCost = 1 ether; // Supply uint256 public maxSupply = 1000; uint256 public maxSupplyLimit = 1000; // Per Address & TX Limit uint256 public nftPresalePerAddressLimit = 10; uint256 public nftWhitelistsalePerAddressLimit = 10; uint256 public nftPublicsalePerAddressLimit = 10; // States bool public paused = false; bool public presale = true; bool public whitelistsale = false; // Minted Balance mapping(address => uint256) public addressPresaleMintedBalance; mapping(address => uint256) public addressWhitelistsaleMintedBalance; mapping(address => uint256) public addressPublicsaleMintedBalance; // Merkle Tree Root bytes32 public whitelistsaleMerkleTreeRoot; // Constructor constructor(bytes32 _whitelistsaleMerkleTreeRoot) ERC721("AVAcadoClub", "AVAC") { whitelistsaleMerkleTreeRoot = _whitelistsaleMerkleTreeRoot; } // Functions: URI function _baseURI() internal view virtual override returns (string memory) { return uriPrefix; } function setUriPrefix(string memory _uriPrefix) public onlyOwner { uriPrefix = _uriPrefix; } function setUriSuffix(string memory _uriSuffix) public onlyOwner { uriSuffix = _uriSuffix; } // Functions: Cost function setPresaleCost(uint256 _cost) public onlyOwner { presaleCost = _cost; } function setWhitelistsaleCost(uint256 _cost) public onlyOwner { whitelistsaleCost = _cost; } function setPublicsaleCost(uint256 _cost) public onlyOwner { publicsaleCost = _cost; } // Functions: Supply function setMaxSupply(uint256 _supply) public onlyOwner { maxSupply = _supply; } function setMaxSupplyLimit(uint256 _supply) public onlyOwner { maxSupplyLimit = _supply; } // Functions: Per Address & TX Limit function setNFTPresalePerAddressLimit(uint256 _limit) public onlyOwner { nftPresalePerAddressLimit = _limit; } function setNFTWhitelistsalePerAddressLimit(uint256 _limit) public onlyOwner { nftWhitelistsalePerAddressLimit = _limit; } function setNFTPublicsalePerAddressLimit(uint256 _limit) public onlyOwner { nftPublicsalePerAddressLimit = _limit; } // Functions: States function setPaused(bool _state) public onlyOwner { paused = _state; } function setPresale(bool _state) public onlyOwner { presale = _state; } function setWhitelistsale(bool _state) public onlyOwner { whitelistsale = _state; } // Functions: Merkle Tree Root function setWhitelistsaleMerkleTreeRoot(bytes32 _root) public onlyOwner { whitelistsaleMerkleTreeRoot = _root; } // Functions: Presale Mint function presaleMint(uint256 _mintAmount) public payable presaleMintCompliance(_mintAmount) { require(!paused, "MSG: The contract is paused"); require(presale == true && whitelistsale == false, "MSG: Presale is not live yet"); require(msg.value >= presaleCost * _mintAmount, "MSG: Insufficient funds"); _presaleMintLoop(msg.sender, _mintAmount); } // Functions: Presale Mint Helpers modifier presaleMintCompliance(uint256 _mintAmount) { uint256 ownerMintedCount = addressPresaleMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftPresalePerAddressLimit, "MSG: Max NFT per address exceeded for presale"); require(supply.current() + _mintAmount <= maxSupplyLimit, "MSG: Max supply exceeded"); _; } function _presaleMintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); addressPresaleMintedBalance[msg.sender]++; } } // Functions: Whitelistsale Mint function whitelistsaleMint(uint256 _mintAmount, bytes32[] memory _merkleTreeProof) public payable whitelistsaleMintCompliance(_mintAmount, _merkleTreeProof) { require(!paused, "MSG: The contract is paused"); require(presale == false && whitelistsale == true, "MSG: Whitelistsale is not live yet"); require(msg.value >= whitelistsaleCost * _mintAmount, "MSG: Insufficient funds"); _whitelistsaleMintLoop(msg.sender, _mintAmount); } // Functions: Whitelistsale Mint Helpers modifier whitelistsaleMintCompliance(uint256 _mintAmount, bytes32[] memory _merkleTreeProof) { require(isValidWhitelistsaleMerkleTreeProof(_merkleTreeProof, keccak256(abi.encodePacked(msg.sender))), "MSG: User is not whitelisted"); uint256 ownerMintedCount = addressWhitelistsaleMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftWhitelistsalePerAddressLimit, "MSG: Max NFT per address exceeded for whitelistsale"); require(supply.current() + _mintAmount <= maxSupplyLimit, "MSG: Max supply exceeded"); _; } function _whitelistsaleMintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); addressWhitelistsaleMintedBalance[msg.sender]++; } } // Functions: Publicsale Mint function publicsaleMint(uint256 _mintAmount) public payable publicsaleMintCompliance(_mintAmount) { require(!paused, "MSG: The contract is paused"); require(presale == false && whitelistsale == false, "MSG: Publicsale is not live yet"); require(msg.value >= publicsaleCost * _mintAmount, "MSG: Insufficient funds"); _publicsaleMintLoop(msg.sender, _mintAmount); } // Functions: Publicsale Mint Helpers modifier publicsaleMintCompliance(uint256 _mintAmount) { uint256 ownerMintedCount = addressPublicsaleMintedBalance[msg.sender]; require(ownerMintedCount + _mintAmount <= nftPublicsalePerAddressLimit, "MSG: Max NFT per address exceeded for publicsale"); require(supply.current() + _mintAmount <= maxSupplyLimit, "MSG: Max supply exceeded"); _; } function _publicsaleMintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); addressPublicsaleMintedBalance[msg.sender]++; } } // Functions: Merkle Tree Proof function isValidWhitelistsaleMerkleTreeProof(bytes32[] memory proof, bytes32 leaf) public view returns (bool) { return MerkleProof.verify(proof, whitelistsaleMerkleTreeRoot, leaf); } // Functions: Owner Mint function ownerMint(uint256 _mintAmount) public onlyOwner { require(!paused, "MSG: The contract is paused"); _ownerMintLoop(msg.sender, _mintAmount); } function ownerMintSpecific(uint256 _tokenID) public onlyOwner { require(!paused, "MSG: The contract is paused"); _safeMint(msg.sender, _tokenID); } // Functions: Owner Mint Helpers function _ownerMintLoop(address _receiver, uint256 _mintAmount) internal { for (uint256 i = 0; i < _mintAmount; i++) { supply.increment(); _safeMint(_receiver, supply.current()); } } // Functions: Other function totalSupply() public view returns (uint256) { return supply.current(); } function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) { require(_exists(_tokenId), "MSG: URI query for nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), uriSuffix)) : ""; } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount); uint256 currentTokenId = 1; uint256 ownedTokenIndex = 0; while (ownedTokenIndex < ownerTokenCount && currentTokenId <= maxSupply) { address currentTokenOwner = ownerOf(currentTokenId); if (currentTokenOwner == _owner) { ownedTokenIds[ownedTokenIndex] = currentTokenId; ownedTokenIndex++; } currentTokenId++; } return ownedTokenIds; } function withdraw() public payable onlyOwner { (bool os, ) = payable(0x4dfD1bE1E10cD8EC104f332e721253686080f638).call{value: address(this).balance}(""); require(os); } }
[{"inputs":[{"internalType":"bytes32","name":"_whitelistsaleMerkleTreeRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"address","name":"","type":"address"}],"name":"addressPresaleMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressPublicsaleMintedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressWhitelistsaleMintedBalance","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"leaf","type":"bytes32"}],"name":"isValidWhitelistsaleMerkleTreeProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPresalePerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftPublicsalePerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftWhitelistsalePerAddressLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"}],"name":"ownerMintSpecific","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"presaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicsaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"publicsaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"}],"name":"setMaxSupplyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNFTPresalePerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNFTPublicsalePerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_limit","type":"uint256"}],"name":"setNFTWhitelistsalePerAddressLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setPresaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setPublicsaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setWhitelistsale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"setWhitelistsaleCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setWhitelistsaleMerkleTreeRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistsale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistsaleCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistsaleMerkleTreeRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"},{"internalType":"bytes32[]","name":"_merkleTreeProof","type":"bytes32[]"}],"name":"whitelistsaleMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405260405180606001604052806036815260200162005bd1603691396008908051906020019062000035929190620002e3565b506040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506009908051906020019062000083929190620002e3565b506706f05b59d3b20000600a556709b6e64a8ec60000600b55670de0b6b3a7640000600c556103e8600d556103e8600e55600a600f55600a601055600a6011556000601260006101000a81548160ff0219169083151502179055506001601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055503480156200012157600080fd5b5060405162005c0738038062005c078339818101604052810190620001479190620003aa565b6040518060400160405280600b81526020017f4156416361646f436c75620000000000000000000000000000000000000000008152506040518060400160405280600481526020017f41564143000000000000000000000000000000000000000000000000000000008152508160009080519060200190620001cb929190620002e3565b508060019080519060200190620001e4929190620002e3565b50505062000207620001fb6200021560201b60201c565b6200021d60201b60201c565b80601681905550506200046a565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002f190620003e6565b90600052602060002090601f01602090048101928262000315576000855562000361565b82601f106200033057805160ff191683800117855562000361565b8280016001018555821562000361579182015b828111156200036057825182559160200191906001019062000343565b5b50905062000370919062000374565b5090565b5b808211156200038f57600081600090555060010162000375565b5090565b600081519050620003a48162000450565b92915050565b600060208284031215620003c357620003c26200044b565b5b6000620003d38482850162000393565b91505092915050565b6000819050919050565b60006002820490506001821680620003ff57607f821691505b602082108114156200041657620004156200041c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6200045b81620003dc565b81146200046757600080fd5b50565b615757806200047a6000396000f3fe60806040526004361061036b5760003560e01c8063715018a6116101c6578063c54e73e3116100f7578063e985e9c511610095578063f2fde38b1161006f578063f2fde38b14610c56578063f9d38e9714610c7f578063fcfab25d14610cbc578063fdea8e0b14610ce55761036b565b8063e985e9c514610bc5578063eb95416014610c02578063f19e75d414610c2d5761036b565b8063d5abeb01116100d1578063d5abeb0114610b1f578063e08823c514610b4a578063e688008014610b73578063e9058c3714610b9c5761036b565b8063c54e73e314610a9d578063c87b56dd14610ac6578063c9b298f114610b035761036b565b806392829d7411610164578063ae1373071161013e578063ae137307146109f5578063af9b33c514610a1e578063b88d4fde14610a49578063b8d988a214610a725761036b565b806392829d741461097657806395d89b41146109a1578063a22cb465146109cc5761036b565b80637f269151116101a05780637f269151146108dd5780638bdd045d146108f95780638da5cb5b146109225780638fdcf9421461094d5761036b565b8063715018a61461086057806376215ee3146108775780637ec4a659146108b45761036b565b806342842e0e116102a057806362b99ad41161023e5780636905b184116102185780636905b184146107a65780636f636e8b146107cf5780636f8b44b0146107fa57806370a08231146108235761036b565b806362b99ad4146107155780636352211e14610740578063651561e01461077d5761036b565b80634db1ffe21161027a5780634db1ffe21461066b5780635503a0e814610694578063551c3d1c146106bf5780635c975abb146106ea5761036b565b806342842e0e146105da578063438b6300146106035780634b64785f146106405761036b565b806316c38b3c1161030d5780631ee81293116102e75780631ee812931461056057806323b872dd1461057c5780632a23d07d146105a55780633ccfd60b146105d05761036b565b806316c38b3c146104cf57806318160ddd146104f85780631ee4b47a146105235761036b565b8063081812fc11610349578063081812fc14610415578063095ea7b3146104525780630b8b16141461047b57806316ba10e0146104a65761036b565b806301ffc9a71461037057806306fdde03146103ad57806307b9f56d146103d8575b600080fd5b34801561037c57600080fd5b5061039760048036038101906103929190613f66565b610d10565b6040516103a49190614727565b60405180910390f35b3480156103b957600080fd5b506103c2610df2565b6040516103cf919061475d565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190613ced565b610e84565b60405161040c9190614abf565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190614009565b610e9c565b604051610449919061469e565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190613e70565b610f21565b005b34801561048757600080fd5b50610490611039565b60405161049d9190614727565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190613fc0565b61104c565b005b3480156104db57600080fd5b506104f660048036038101906104f19190613f0c565b6110e2565b005b34801561050457600080fd5b5061050d61117b565b60405161051a9190614abf565b60405180910390f35b34801561052f57600080fd5b5061054a60048036038101906105459190613ced565b61118c565b6040516105579190614abf565b60405180910390f35b61057a60048036038101906105759190614009565b6111a4565b005b34801561058857600080fd5b506105a3600480360381019061059e9190613d5a565b6113b6565b005b3480156105b157600080fd5b506105ba611416565b6040516105c79190614abf565b60405180910390f35b6105d861141c565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613d5a565b611525565b005b34801561060f57600080fd5b5061062a60048036038101906106259190613ced565b611545565b6040516106379190614705565b60405180910390f35b34801561064c57600080fd5b50610655611650565b6040516106629190614abf565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613f39565b611656565b005b3480156106a057600080fd5b506106a96116dc565b6040516106b6919061475d565b60405180910390f35b3480156106cb57600080fd5b506106d461176a565b6040516106e19190614742565b60405180910390f35b3480156106f657600080fd5b506106ff611770565b60405161070c9190614727565b60405180910390f35b34801561072157600080fd5b5061072a611783565b604051610737919061475d565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190614009565b611811565b604051610774919061469e565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f9190613f0c565b6118c3565b005b3480156107b257600080fd5b506107cd60048036038101906107c89190614009565b61195c565b005b3480156107db57600080fd5b506107e46119e2565b6040516107f19190614abf565b60405180910390f35b34801561080657600080fd5b50610821600480360381019061081c9190614009565b6119e8565b005b34801561082f57600080fd5b5061084a60048036038101906108459190613ced565b611a6e565b6040516108579190614abf565b60405180910390f35b34801561086c57600080fd5b50610875611b26565b005b34801561088357600080fd5b5061089e60048036038101906108999190613eb0565b611bae565b6040516108ab9190614727565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d69190613fc0565b611bc5565b005b6108f760048036038101906108f29190614036565b611c5b565b005b34801561090557600080fd5b50610920600480360381019061091b9190614009565b611edf565b005b34801561092e57600080fd5b50610937611f65565b604051610944919061469e565b60405180910390f35b34801561095957600080fd5b50610974600480360381019061096f9190614009565b611f8f565b005b34801561098257600080fd5b5061098b612015565b6040516109989190614abf565b60405180910390f35b3480156109ad57600080fd5b506109b661201b565b6040516109c3919061475d565b60405180910390f35b3480156109d857600080fd5b506109f360048036038101906109ee9190613e30565b6120ad565b005b348015610a0157600080fd5b50610a1c6004803603810190610a179190614009565b6120c3565b005b348015610a2a57600080fd5b50610a33612149565b604051610a409190614abf565b60405180910390f35b348015610a5557600080fd5b50610a706004803603810190610a6b9190613dad565b61214f565b005b348015610a7e57600080fd5b50610a876121b1565b604051610a949190614abf565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf9190613f0c565b6121b7565b005b348015610ad257600080fd5b50610aed6004803603810190610ae89190614009565b612250565b604051610afa919061475d565b60405180910390f35b610b1d6004803603810190610b189190614009565b6122fa565b005b348015610b2b57600080fd5b50610b3461250c565b604051610b419190614abf565b60405180910390f35b348015610b5657600080fd5b50610b716004803603810190610b6c9190614009565b612512565b005b348015610b7f57600080fd5b50610b9a6004803603810190610b959190614009565b6125eb565b005b348015610ba857600080fd5b50610bc36004803603810190610bbe9190614009565b612671565b005b348015610bd157600080fd5b50610bec6004803603810190610be79190613d1a565b6126f7565b604051610bf99190614727565b60405180910390f35b348015610c0e57600080fd5b50610c1761278b565b604051610c249190614abf565b60405180910390f35b348015610c3957600080fd5b50610c546004803603810190610c4f9190614009565b612791565b005b348015610c6257600080fd5b50610c7d6004803603810190610c789190613ced565b61286a565b005b348015610c8b57600080fd5b50610ca66004803603810190610ca19190613ced565b612962565b604051610cb39190614abf565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde9190614009565b61297a565b005b348015610cf157600080fd5b50610cfa612a00565b604051610d079190614727565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ddb57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610deb5750610dea82612a13565b5b9050919050565b606060008054610e0190614dfe565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2d90614dfe565b8015610e7a5780601f10610e4f57610100808354040283529160200191610e7a565b820191906000526020600020905b815481529060010190602001808311610e5d57829003601f168201915b5050505050905090565b60156020528060005260406000206000915090505481565b6000610ea782612a7d565b610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd9061497f565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f2c82611811565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f94906149ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610fbc612ae9565b73ffffffffffffffffffffffffffffffffffffffff161480610feb5750610fea81610fe5612ae9565b6126f7565b5b61102a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611021906148bf565b60405180910390fd5b6110348383612af1565b505050565b601260029054906101000a900460ff1681565b611054612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611072611f65565b73ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf906149bf565b60405180910390fd5b80600990805190602001906110de929190613a4e565b5050565b6110ea612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611108611f65565b73ffffffffffffffffffffffffffffffffffffffff161461115e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611155906149bf565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b60006111876007612baa565b905090565b60146020528060005260406000206000915090505481565b806000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060115482826111f89190614c29565b1115611239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123090614a3f565b60405180910390fd5b600e54826112476007612baa565b6112519190614c29565b1115611292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128990614a5f565b60405180910390fd5b601260009054906101000a900460ff16156112e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d99061481f565b60405180910390fd5b60001515601260019054906101000a900460ff161515148015611318575060001515601260029054906101000a900460ff161515145b611357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134e9061487f565b60405180910390fd5b82600c546113659190614cb0565b3410156113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e9061499f565b60405180910390fd5b6113b13384612bb8565b505050565b6113c76113c1612ae9565b82612c4d565b611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90614a1f565b60405180910390fd5b611411838383612d2b565b505050565b600a5481565b611424612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611442611f65565b73ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f906149bf565b60405180910390fd5b6000734dfd1be1e10cd8ec104f332e721253686080f63873ffffffffffffffffffffffffffffffffffffffff16476040516114d290614689565b60006040518083038185875af1925050503d806000811461150f576040519150601f19603f3d011682016040523d82523d6000602084013e611514565b606091505b505090508061152257600080fd5b50565b6115408383836040518060200160405280600081525061214f565b505050565b6060600061155283611a6e565b905060008167ffffffffffffffff8111156115705761156f614fbb565b5b60405190808252806020026020018201604052801561159e5781602001602082028036833780820191505090505b50905060006001905060005b83811080156115bb5750600d548211155b156116445760006115cb83611811565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611630578284838151811061161557611614614f8c565b5b602002602001018181525050818061162c90614e61565b9250505b828061163b90614e61565b935050506115aa565b82945050505050919050565b60105481565b61165e612ae9565b73ffffffffffffffffffffffffffffffffffffffff1661167c611f65565b73ffffffffffffffffffffffffffffffffffffffff16146116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c9906149bf565b60405180910390fd5b8060168190555050565b600980546116e990614dfe565b80601f016020809104026020016040519081016040528092919081815260200182805461171590614dfe565b80156117625780601f1061173757610100808354040283529160200191611762565b820191906000526020600020905b81548152906001019060200180831161174557829003601f168201915b505050505081565b60165481565b601260009054906101000a900460ff1681565b6008805461179090614dfe565b80601f01602080910402602001604051908101604052809291908181526020018280546117bc90614dfe565b80156118095780601f106117de57610100808354040283529160200191611809565b820191906000526020600020905b8154815290600101906020018083116117ec57829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b19061491f565b60405180910390fd5b80915050919050565b6118cb612ae9565b73ffffffffffffffffffffffffffffffffffffffff166118e9611f65565b73ffffffffffffffffffffffffffffffffffffffff161461193f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611936906149bf565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b611964612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611982611f65565b73ffffffffffffffffffffffffffffffffffffffff16146119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf906149bf565b60405180910390fd5b80600c8190555050565b600f5481565b6119f0612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611a0e611f65565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b906149bf565b60405180910390fd5b80600d8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad6906148ff565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b2e612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611b4c611f65565b73ffffffffffffffffffffffffffffffffffffffff1614611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b99906149bf565b60405180910390fd5b611bac6000612f92565b565b6000611bbd8360165484613058565b905092915050565b611bcd612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611beb611f65565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c38906149bf565b60405180910390fd5b8060089080519060200190611c57929190613a4e565b5050565b8181611c8d8133604051602001611c72919061463d565b60405160208183030381529060405280519060200120611bae565b611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc39061477f565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506010548382611d1f9190614c29565b1115611d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5790614a7f565b60405180910390fd5b600e5483611d6e6007612baa565b611d789190614c29565b1115611db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db090614a5f565b60405180910390fd5b601260009054906101000a900460ff1615611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e009061481f565b60405180910390fd5b60001515601260019054906101000a900460ff161515148015611e3f575060011515601260029054906101000a900460ff161515145b611e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7590614a9f565b60405180910390fd5b84600b54611e8c9190614cb0565b341015611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec59061499f565b60405180910390fd5b611ed8338661306f565b5050505050565b611ee7612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611f05611f65565b73ffffffffffffffffffffffffffffffffffffffff1614611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f52906149bf565b60405180910390fd5b80600b8190555050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f97612ae9565b73ffffffffffffffffffffffffffffffffffffffff16611fb5611f65565b73ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612002906149bf565b60405180910390fd5b80600a8190555050565b600c5481565b60606001805461202a90614dfe565b80601f016020809104026020016040519081016040528092919081815260200182805461205690614dfe565b80156120a35780601f10612078576101008083540402835291602001916120a3565b820191906000526020600020905b81548152906001019060200180831161208657829003601f168201915b5050505050905090565b6120bf6120b8612ae9565b8383613104565b5050565b6120cb612ae9565b73ffffffffffffffffffffffffffffffffffffffff166120e9611f65565b73ffffffffffffffffffffffffffffffffffffffff161461213f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612136906149bf565b60405180910390fd5b8060118190555050565b600b5481565b61216061215a612ae9565b83612c4d565b61219f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219690614a1f565b60405180910390fd5b6121ab84848484613271565b50505050565b60115481565b6121bf612ae9565b73ffffffffffffffffffffffffffffffffffffffff166121dd611f65565b73ffffffffffffffffffffffffffffffffffffffff1614612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a906149bf565b60405180910390fd5b80601260016101000a81548160ff02191690831515021790555050565b606061225b82612a7d565b61229a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612291906149df565b60405180910390fd5b60006122a46132cd565b905060008151116122c457604051806020016040528060008152506122f2565b806122ce8461335f565b60096040516020016122e293929190614658565b6040516020818303038152906040525b915050919050565b806000601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600f54828261234e9190614c29565b111561238f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123869061495f565b60405180910390fd5b600e548261239d6007612baa565b6123a79190614c29565b11156123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df90614a5f565b60405180910390fd5b601260009054906101000a900460ff1615612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9061481f565b60405180910390fd5b60011515601260019054906101000a900460ff16151514801561246e575060001515601260029054906101000a900460ff161515145b6124ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a4906148df565b60405180910390fd5b82600a546124bb9190614cb0565b3410156124fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f49061499f565b60405180910390fd5b61250733846134c0565b505050565b600d5481565b61251a612ae9565b73ffffffffffffffffffffffffffffffffffffffff16612538611f65565b73ffffffffffffffffffffffffffffffffffffffff161461258e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612585906149bf565b60405180910390fd5b601260009054906101000a900460ff16156125de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d59061481f565b60405180910390fd5b6125e83382613555565b50565b6125f3612ae9565b73ffffffffffffffffffffffffffffffffffffffff16612611611f65565b73ffffffffffffffffffffffffffffffffffffffff1614612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e906149bf565b60405180910390fd5b80600e8190555050565b612679612ae9565b73ffffffffffffffffffffffffffffffffffffffff16612697611f65565b73ffffffffffffffffffffffffffffffffffffffff16146126ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e4906149bf565b60405180910390fd5b80600f8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600e5481565b612799612ae9565b73ffffffffffffffffffffffffffffffffffffffff166127b7611f65565b73ffffffffffffffffffffffffffffffffffffffff161461280d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612804906149bf565b60405180910390fd5b601260009054906101000a900460ff161561285d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128549061481f565b60405180910390fd5b6128673382613573565b50565b612872612ae9565b73ffffffffffffffffffffffffffffffffffffffff16612890611f65565b73ffffffffffffffffffffffffffffffffffffffff16146128e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dd906149bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294d906147bf565b60405180910390fd5b61295f81612f92565b50565b60136020528060005260406000206000915090505481565b612982612ae9565b73ffffffffffffffffffffffffffffffffffffffff166129a0611f65565b73ffffffffffffffffffffffffffffffffffffffff16146129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed906149bf565b60405180910390fd5b8060108190555050565b601260019054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612b6483611811565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b60005b81811015612c4857612bcd60076135b3565b612be083612bdb6007612baa565b613555565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190612c3090614e61565b91905055508080612c4090614e61565b915050612bbb565b505050565b6000612c5882612a7d565b612c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8e9061489f565b60405180910390fd5b6000612ca283611811565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612ce45750612ce381856126f7565b5b80612d2257508373ffffffffffffffffffffffffffffffffffffffff16612d0a84610e9c565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612d4b82611811565b73ffffffffffffffffffffffffffffffffffffffff1614612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d98906147df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e089061483f565b60405180910390fd5b612e1c8383836135c9565b612e27600082612af1565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612e779190614d0a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ece9190614c29565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612f8d8383836135ce565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008261306585846135d3565b1490509392505050565b60005b818110156130ff5761308460076135b3565b613097836130926007612baa565b613555565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906130e790614e61565b919050555080806130f790614e61565b915050613072565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316a9061485f565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516132649190614727565b60405180910390a3505050565b61327c848484612d2b565b61328884848484613648565b6132c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132be9061479f565b60405180910390fd5b50505050565b6060600880546132dc90614dfe565b80601f016020809104026020016040519081016040528092919081815260200182805461330890614dfe565b80156133555780601f1061332a57610100808354040283529160200191613355565b820191906000526020600020905b81548152906001019060200180831161333857829003601f168201915b5050505050905090565b606060008214156133a7576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506134bb565b600082905060005b600082146133d95780806133c290614e61565b915050600a826133d29190614c7f565b91506133af565b60008167ffffffffffffffff8111156133f5576133f4614fbb565b5b6040519080825280601f01601f1916602001820160405280156134275781602001600182028036833780820191505090505b5090505b600085146134b4576001826134409190614d0a565b9150600a8561344f9190614ece565b603061345b9190614c29565b60f81b81838151811061347157613470614f8c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856134ad9190614c7f565b945061342b565b8093505050505b919050565b60005b81811015613550576134d560076135b3565b6134e8836134e36007612baa565b613555565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061353890614e61565b9190505550808061354890614e61565b9150506134c3565b505050565b61356f8282604051806020016040528060008152506137df565b5050565b60005b818110156135ae5761358860076135b3565b61359b836135966007612baa565b613555565b80806135a690614e61565b915050613576565b505050565b6001816000016000828254019250508190555050565b505050565b505050565b60008082905060005b845181101561363d5760008582815181106135fa576135f9614f8c565b5b6020026020010151905080831161361c57613615838261383a565b9250613629565b613626818461383a565b92505b50808061363590614e61565b9150506135dc565b508091505092915050565b60006136698473ffffffffffffffffffffffffffffffffffffffff16613851565b156137d2578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613692612ae9565b8786866040518563ffffffff1660e01b81526004016136b494939291906146b9565b602060405180830381600087803b1580156136ce57600080fd5b505af19250505080156136ff57506040513d601f19601f820116820180604052508101906136fc9190613f93565b60015b613782573d806000811461372f576040519150601f19603f3d011682016040523d82523d6000602084013e613734565b606091505b5060008151141561377a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137719061479f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506137d7565b600190505b949350505050565b6137e98383613874565b6137f66000848484613648565b613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382c9061479f565b60405180910390fd5b505050565b600082600052816020526040600020905092915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156138e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138db9061493f565b60405180910390fd5b6138ed81612a7d565b1561392d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613924906147ff565b60405180910390fd5b613939600083836135c9565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139899190614c29565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613a4a600083836135ce565b5050565b828054613a5a90614dfe565b90600052602060002090601f016020900481019282613a7c5760008555613ac3565b82601f10613a9557805160ff1916838001178555613ac3565b82800160010185558215613ac3579182015b82811115613ac2578251825591602001919060010190613aa7565b5b509050613ad09190613ad4565b5090565b5b80821115613aed576000816000905550600101613ad5565b5090565b6000613b04613aff84614aff565b614ada565b90508083825260208201905082856020860282011115613b2757613b26614fef565b5b60005b85811015613b575781613b3d8882613c3d565b845260208401935060208301925050600181019050613b2a565b5050509392505050565b6000613b74613b6f84614b2b565b614ada565b905082815260208101848484011115613b9057613b8f614ff4565b5b613b9b848285614dbc565b509392505050565b6000613bb6613bb184614b5c565b614ada565b905082815260208101848484011115613bd257613bd1614ff4565b5b613bdd848285614dbc565b509392505050565b600081359050613bf4816156ae565b92915050565b600082601f830112613c0f57613c0e614fea565b5b8135613c1f848260208601613af1565b91505092915050565b600081359050613c37816156c5565b92915050565b600081359050613c4c816156dc565b92915050565b600081359050613c61816156f3565b92915050565b600081519050613c76816156f3565b92915050565b600082601f830112613c9157613c90614fea565b5b8135613ca1848260208601613b61565b91505092915050565b600082601f830112613cbf57613cbe614fea565b5b8135613ccf848260208601613ba3565b91505092915050565b600081359050613ce78161570a565b92915050565b600060208284031215613d0357613d02614ffe565b5b6000613d1184828501613be5565b91505092915050565b60008060408385031215613d3157613d30614ffe565b5b6000613d3f85828601613be5565b9250506020613d5085828601613be5565b9150509250929050565b600080600060608486031215613d7357613d72614ffe565b5b6000613d8186828701613be5565b9350506020613d9286828701613be5565b9250506040613da386828701613cd8565b9150509250925092565b60008060008060808587031215613dc757613dc6614ffe565b5b6000613dd587828801613be5565b9450506020613de687828801613be5565b9350506040613df787828801613cd8565b925050606085013567ffffffffffffffff811115613e1857613e17614ff9565b5b613e2487828801613c7c565b91505092959194509250565b60008060408385031215613e4757613e46614ffe565b5b6000613e5585828601613be5565b9250506020613e6685828601613c28565b9150509250929050565b60008060408385031215613e8757613e86614ffe565b5b6000613e9585828601613be5565b9250506020613ea685828601613cd8565b9150509250929050565b60008060408385031215613ec757613ec6614ffe565b5b600083013567ffffffffffffffff811115613ee557613ee4614ff9565b5b613ef185828601613bfa565b9250506020613f0285828601613c3d565b9150509250929050565b600060208284031215613f2257613f21614ffe565b5b6000613f3084828501613c28565b91505092915050565b600060208284031215613f4f57613f4e614ffe565b5b6000613f5d84828501613c3d565b91505092915050565b600060208284031215613f7c57613f7b614ffe565b5b6000613f8a84828501613c52565b91505092915050565b600060208284031215613fa957613fa8614ffe565b5b6000613fb784828501613c67565b91505092915050565b600060208284031215613fd657613fd5614ffe565b5b600082013567ffffffffffffffff811115613ff457613ff3614ff9565b5b61400084828501613caa565b91505092915050565b60006020828403121561401f5761401e614ffe565b5b600061402d84828501613cd8565b91505092915050565b6000806040838503121561404d5761404c614ffe565b5b600061405b85828601613cd8565b925050602083013567ffffffffffffffff81111561407c5761407b614ff9565b5b61408885828601613bfa565b9150509250929050565b600061409e838361461f565b60208301905092915050565b6140b381614d3e565b82525050565b6140ca6140c582614d3e565b614eaa565b82525050565b60006140db82614bb2565b6140e58185614be0565b93506140f083614b8d565b8060005b838110156141215781516141088882614092565b975061411383614bd3565b9250506001810190506140f4565b5085935050505092915050565b61413781614d50565b82525050565b61414681614d5c565b82525050565b600061415782614bbd565b6141618185614bf1565b9350614171818560208601614dcb565b61417a81615003565b840191505092915050565b600061419082614bc8565b61419a8185614c0d565b93506141aa818560208601614dcb565b6141b381615003565b840191505092915050565b60006141c982614bc8565b6141d38185614c1e565b93506141e3818560208601614dcb565b80840191505092915050565b600081546141fc81614dfe565b6142068186614c1e565b94506001821660008114614221576001811461423257614265565b60ff19831686528186019350614265565b61423b85614b9d565b60005b8381101561425d5781548189015260018201915060208101905061423e565b838801955050505b50505092915050565b600061427b601c83614c0d565b915061428682615021565b602082019050919050565b600061429e603283614c0d565b91506142a98261504a565b604082019050919050565b60006142c1602683614c0d565b91506142cc82615099565b604082019050919050565b60006142e4602583614c0d565b91506142ef826150e8565b604082019050919050565b6000614307601c83614c0d565b915061431282615137565b602082019050919050565b600061432a601b83614c0d565b915061433582615160565b602082019050919050565b600061434d602483614c0d565b915061435882615189565b604082019050919050565b6000614370601983614c0d565b915061437b826151d8565b602082019050919050565b6000614393601f83614c0d565b915061439e82615201565b602082019050919050565b60006143b6602c83614c0d565b91506143c18261522a565b604082019050919050565b60006143d9603883614c0d565b91506143e482615279565b604082019050919050565b60006143fc601c83614c0d565b9150614407826152c8565b602082019050919050565b600061441f602a83614c0d565b915061442a826152f1565b604082019050919050565b6000614442602983614c0d565b915061444d82615340565b604082019050919050565b6000614465602083614c0d565b91506144708261538f565b602082019050919050565b6000614488602d83614c0d565b9150614493826153b8565b604082019050919050565b60006144ab602c83614c0d565b91506144b682615407565b604082019050919050565b60006144ce601783614c0d565b91506144d982615456565b602082019050919050565b60006144f1602083614c0d565b91506144fc8261547f565b602082019050919050565b6000614514602483614c0d565b915061451f826154a8565b604082019050919050565b6000614537602183614c0d565b9150614542826154f7565b604082019050919050565b600061455a600083614c02565b915061456582615546565b600082019050919050565b600061457d603183614c0d565b915061458882615549565b604082019050919050565b60006145a0603083614c0d565b91506145ab82615598565b604082019050919050565b60006145c3601883614c0d565b91506145ce826155e7565b602082019050919050565b60006145e6603383614c0d565b91506145f182615610565b604082019050919050565b6000614609602283614c0d565b91506146148261565f565b604082019050919050565b61462881614db2565b82525050565b61463781614db2565b82525050565b600061464982846140b9565b60148201915081905092915050565b600061466482866141be565b915061467082856141be565b915061467c82846141ef565b9150819050949350505050565b60006146948261454d565b9150819050919050565b60006020820190506146b360008301846140aa565b92915050565b60006080820190506146ce60008301876140aa565b6146db60208301866140aa565b6146e8604083018561462e565b81810360608301526146fa818461414c565b905095945050505050565b6000602082019050818103600083015261471f81846140d0565b905092915050565b600060208201905061473c600083018461412e565b92915050565b6000602082019050614757600083018461413d565b92915050565b600060208201905081810360008301526147778184614185565b905092915050565b600060208201905081810360008301526147988161426e565b9050919050565b600060208201905081810360008301526147b881614291565b9050919050565b600060208201905081810360008301526147d8816142b4565b9050919050565b600060208201905081810360008301526147f8816142d7565b9050919050565b60006020820190508181036000830152614818816142fa565b9050919050565b600060208201905081810360008301526148388161431d565b9050919050565b6000602082019050818103600083015261485881614340565b9050919050565b6000602082019050818103600083015261487881614363565b9050919050565b6000602082019050818103600083015261489881614386565b9050919050565b600060208201905081810360008301526148b8816143a9565b9050919050565b600060208201905081810360008301526148d8816143cc565b9050919050565b600060208201905081810360008301526148f8816143ef565b9050919050565b6000602082019050818103600083015261491881614412565b9050919050565b6000602082019050818103600083015261493881614435565b9050919050565b6000602082019050818103600083015261495881614458565b9050919050565b600060208201905081810360008301526149788161447b565b9050919050565b600060208201905081810360008301526149988161449e565b9050919050565b600060208201905081810360008301526149b8816144c1565b9050919050565b600060208201905081810360008301526149d8816144e4565b9050919050565b600060208201905081810360008301526149f881614507565b9050919050565b60006020820190508181036000830152614a188161452a565b9050919050565b60006020820190508181036000830152614a3881614570565b9050919050565b60006020820190508181036000830152614a5881614593565b9050919050565b60006020820190508181036000830152614a78816145b6565b9050919050565b60006020820190508181036000830152614a98816145d9565b9050919050565b60006020820190508181036000830152614ab8816145fc565b9050919050565b6000602082019050614ad4600083018461462e565b92915050565b6000614ae4614af5565b9050614af08282614e30565b919050565b6000604051905090565b600067ffffffffffffffff821115614b1a57614b19614fbb565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614b4657614b45614fbb565b5b614b4f82615003565b9050602081019050919050565b600067ffffffffffffffff821115614b7757614b76614fbb565b5b614b8082615003565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614c3482614db2565b9150614c3f83614db2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c7457614c73614eff565b5b828201905092915050565b6000614c8a82614db2565b9150614c9583614db2565b925082614ca557614ca4614f2e565b5b828204905092915050565b6000614cbb82614db2565b9150614cc683614db2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614cff57614cfe614eff565b5b828202905092915050565b6000614d1582614db2565b9150614d2083614db2565b925082821015614d3357614d32614eff565b5b828203905092915050565b6000614d4982614d92565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614de9578082015181840152602081019050614dce565b83811115614df8576000848401525b50505050565b60006002820490506001821680614e1657607f821691505b60208210811415614e2a57614e29614f5d565b5b50919050565b614e3982615003565b810181811067ffffffffffffffff82111715614e5857614e57614fbb565b5b80604052505050565b6000614e6c82614db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e9f57614e9e614eff565b5b600182019050919050565b6000614eb582614ebc565b9050919050565b6000614ec782615014565b9050919050565b6000614ed982614db2565b9150614ee483614db2565b925082614ef457614ef3614f2e565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4d53473a2055736572206973206e6f742077686974656c697374656400000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4d53473a2054686520636f6e7472616374206973207061757365640000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4d53473a205075626c696373616c65206973206e6f74206c6976652079657400600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4d53473a2050726573616c65206973206e6f74206c6976652079657400000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4d53473a204d6178204e4654207065722061646472657373206578636565646560008201527f6420666f722070726573616c6500000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d53473a20496e73756666696369656e742066756e6473000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d53473a2055524920717565727920666f72206e6f6e6578697374656e74207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4d53473a204d6178204e4654207065722061646472657373206578636565646560008201527f6420666f72207075626c696373616c6500000000000000000000000000000000602082015250565b7f4d53473a204d617820737570706c792065786365656465640000000000000000600082015250565b7f4d53473a204d6178204e4654207065722061646472657373206578636565646560008201527f6420666f722077686974656c69737473616c6500000000000000000000000000602082015250565b7f4d53473a2057686974656c69737473616c65206973206e6f74206c697665207960008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6156b781614d3e565b81146156c257600080fd5b50565b6156ce81614d50565b81146156d957600080fd5b50565b6156e581614d5c565b81146156f057600080fd5b50565b6156fc81614d66565b811461570757600080fd5b50565b61571381614db2565b811461571e57600080fd5b5056fea264697066735822122037c42d9758a23917f09b8a0fd0e16daae664a94a4a129015d0a9fab5b9ca97f264736f6c63430008070033697066733a2f2f516d575564714d684751674d753555673973517679486448356939336e70584e5232383671703170343535376d442fc9d775805956ffaf54e33b978eb6f856e3096368403fda6e423da9c315086053
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
c9d775805956ffaf54e33b978eb6f856e3096368403fda6e423da9c315086053
-----Decoded View---------------
Arg [0] : _whitelistsaleMerkleTreeRoot (bytes32): 0xc9d775805956ffaf54e33b978eb6f856e3096368403fda6e423da9c315086053
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : c9d775805956ffaf54e33b978eb6f856e3096368403fda6e423da9c315086053
Deployed ByteCode Sourcemap
41197:9435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28007:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28952:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42256:65;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30512:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30035:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42047:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42846:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44030:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49273:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42181:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47166:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31262:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41520:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50439:190;;;:::i;:::-;;31672:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49744:687;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41845:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44355:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41461:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42355:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41975:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41372:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28646:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44214:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43200:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41793:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43334:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28376:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8590:103;;;;;;;;;;;;;:::i;:::-;;48372:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42732:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;45691:483;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43086:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7939:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42984:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41616:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29121:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30805:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43866:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41565:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31928:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41903:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44121:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49376:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44521:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41679:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48789:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43436:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43590:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31031:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41717:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48606:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8848:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42112:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43722:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42014:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28007:305;28109:4;28161:25;28146:40;;;:11;:40;;;;:105;;;;28218:33;28203:48;;;:11;:48;;;;28146:105;:158;;;;28268:36;28292:11;28268:23;:36::i;:::-;28146:158;28126:178;;28007:305;;;:::o;28952:100::-;29006:13;29039:5;29032:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28952:100;:::o;42256:65::-;;;;;;;;;;;;;;;;;:::o;30512:221::-;30588:7;30616:16;30624:7;30616;:16::i;:::-;30608:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30701:15;:24;30717:7;30701:24;;;;;;;;;;;;;;;;;;;;;30694:31;;30512:221;;;:::o;30035:411::-;30116:13;30132:23;30147:7;30132:14;:23::i;:::-;30116:39;;30180:5;30174:11;;:2;:11;;;;30166:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;30274:5;30258:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;30283:37;30300:5;30307:12;:10;:12::i;:::-;30283:16;:37::i;:::-;30258:62;30236:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;30417:21;30426:2;30430:7;30417:8;:21::i;:::-;30105:341;30035:411;;:::o;42047:33::-;;;;;;;;;;;;;:::o;42846:106::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42934:10:::1;42922:9;:22;;;;;;;;;;;;:::i;:::-;;42846:106:::0;:::o;44030:83::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44099:6:::1;44090;;:15;;;;;;;;;;;;;;;;;;44030:83:::0;:::o;49273:95::-;49317:7;49344:16;:6;:14;:16::i;:::-;49337:23;;49273:95;:::o;42181:68::-;;;;;;;;;;;;;;;;;:::o;47166:416::-;47251:11;47699:24;47726:30;:42;47757:10;47726:42;;;;;;;;;;;;;;;;47699:69;;47821:28;;47806:11;47787:16;:30;;;;:::i;:::-;:62;;47779:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;47957:14;;47942:11;47923:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:48;;47915:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;47284:6:::1;;;;;;;;;;;47283:7;47275:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;47352:5;47341:16;;:7;;;;;;;;;;;:16;;;:42;;;;;47378:5;47361:22;;:13;;;;;;;;;;;:22;;;47341:42;47333:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;47470:11;47453:14;;:28;;;;:::i;:::-;47440:9;:41;;47432:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;47530:44;47550:10;47562:11;47530:19;:44::i;:::-;47688:332:::0;47166:416;;:::o;31262:339::-;31457:41;31476:12;:10;:12::i;:::-;31490:7;31457:18;:41::i;:::-;31449:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;31565:28;31575:4;31581:2;31585:7;31565:9;:28::i;:::-;31262:339;;;:::o;41520:38::-;;;;:::o;50439:190::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50496:7:::1;50517:42;50509:56;;50573:21;50509:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50495:104;;;50618:2;50610:11;;;::::0;::::1;;50484:145;50439:190::o:0;31672:185::-;31810:39;31827:4;31833:2;31837:7;31810:39;;;;;;;;;;;;:16;:39::i;:::-;31672:185;;;:::o;49744:687::-;49804:16;49833:23;49859:17;49869:6;49859:9;:17::i;:::-;49833:43;;49887:30;49934:15;49920:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49887:63;;49963:22;49988:1;49963:26;;50000:23;50040:351;50065:15;50047;:33;:64;;;;;50102:9;;50084:14;:27;;50047:64;50040:351;;;50128:25;50156:23;50164:14;50156:7;:23::i;:::-;50128:51;;50221:6;50200:27;;:17;:27;;;50196:151;;;50281:14;50248:13;50262:15;50248:30;;;;;;;;:::i;:::-;;;;;;;:47;;;;;50314:17;;;;;:::i;:::-;;;;50196:151;50363:16;;;;;:::i;:::-;;;;50113:278;50040:351;;;50410:13;50403:20;;;;;;49744:687;;;:::o;41845:51::-;;;;:::o;44355:126::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44468:5:::1;44438:27;:35;;;;44355:126:::0;:::o;41461:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;42355:42::-;;;;:::o;41975:26::-;;;;;;;;;;;;;:::o;41372:82::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28646:239::-;28718:7;28738:13;28754:7;:16;28762:7;28754:16;;;;;;;;;;;;;;;;;;;;;28738:32;;28806:1;28789:19;;:5;:19;;;;28781:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28872:5;28865:12;;;28646:239;;;:::o;44214:97::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44297:6:::1;44281:13;;:22;;;;;;;;;;;;;;;;;;44214:97:::0;:::o;43200:100::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43287:5:::1;43270:14;:22;;;;43200:100:::0;:::o;41793:45::-;;;;:::o;43334:94::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43413:7:::1;43401:9;:19;;;;43334:94:::0;:::o;28376:208::-;28448:7;28493:1;28476:19;;:5;:19;;;;28468:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;28560:9;:16;28570:5;28560:16;;;;;;;;;;;;;;;;28553:23;;28376:208;;;:::o;8590:103::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8655:30:::1;8682:1;8655:18;:30::i;:::-;8590:103::o:0;48372:196::-;48476:4;48500:60;48519:5;48526:27;;48555:4;48500:18;:60::i;:::-;48493:67;;48372:196;;;;:::o;42732:106::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42820:10:::1;42808:9;:22;;;;;;;;;;;;:::i;:::-;;42732:106:::0;:::o;45691:483::-;45817:11;45830:16;46340:94;46376:16;46421:10;46404:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;46394:39;;;;;;46340:35;:94::i;:::-;46332:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;46480:24;46507:33;:45;46541:10;46507:45;;;;;;;;;;;;;;;;46480:72;;46605:31;;46590:11;46571:16;:30;;;;:::i;:::-;:65;;46563:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;46747:14;;46732:11;46713:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:48;;46705:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;45868:6:::1;;;;;;;;;;;45867:7;45859:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;45936:5;45925:16;;:7;;;;;;;;;;;:16;;;:41;;;;;45962:4;45945:21;;:13;;;;;;;;;;;:21;;;45925:41;45917:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;46059:11;46039:17;;:31;;;;:::i;:::-;46026:9;:44;;46018:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;46119:47;46142:10;46154:11;46119:22;:47::i;:::-;46321:489:::0;45691:483;;;;:::o;43086:106::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43179:5:::1;43159:17;:25;;;;43086:106:::0;:::o;7939:87::-;7985:7;8012:6;;;;;;;;;;;8005:13;;7939:87;:::o;42984:94::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43065:5:::1;43051:11;:19;;;;42984:94:::0;:::o;41616:39::-;;;;:::o;29121:104::-;29177:13;29210:7;29203:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29121:104;:::o;30805:155::-;30900:52;30919:12;:10;:12::i;:::-;30933:8;30943;30900:18;:52::i;:::-;30805:155;;:::o;43866:130::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43982:6:::1;43951:28;:37;;;;43866:130:::0;:::o;41565:44::-;;;;:::o;31928:328::-;32103:41;32122:12;:10;:12::i;:::-;32136:7;32103:18;:41::i;:::-;32095:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;32209:39;32223:4;32229:2;32233:7;32242:5;32209:13;:39::i;:::-;31928:328;;;;:::o;41903:48::-;;;;:::o;44121:85::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44192:6:::1;44182:7;;:16;;;;;;;;;;;;;;;;;;44121:85:::0;:::o;49376:360::-;49450:13;49484:17;49492:8;49484:7;:17::i;:::-;49476:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;49555:28;49586:10;:8;:10::i;:::-;49555:41;;49647:1;49622:14;49616:28;:32;:112;;;;;;;;;;;;;;;;;49675:14;49691:19;:8;:17;:19::i;:::-;49712:9;49658:64;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;49616:112;49609:119;;;49376:360;;;:::o;44521:400::-;44600:11;45032:24;45059:27;:39;45087:10;45059:39;;;;;;;;;;;;;;;;45032:66;;45151:25;;45136:11;45117:16;:30;;;;:::i;:::-;:59;;45109:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;45281:14;;45266:11;45247:16;:6;:14;:16::i;:::-;:30;;;;:::i;:::-;:48;;45239:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;44633:6:::1;;;;;;;;;;;44632:7;44624:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;44701:4;44690:15;;:7;;;;;;;;;;;:15;;;:41;;;;;44726:5;44709:22;;:13;;;;;;;;;;;:22;;;44690:41;44682:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;44812:11;44798;;:25;;;;:::i;:::-;44785:9;:38;;44777:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;44872:41;44889:10;44901:11;44872:16;:41::i;:::-;45021:323:::0;44521:400;;:::o;41679:31::-;;;;:::o;48789:172::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48871:6:::1;;;;;;;;;;;48870:7;48862:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;48922:31;48932:10;48944:8;48922:9;:31::i;:::-;48789:172:::0;:::o;43436:104::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43525:7:::1;43508:14;:24;;;;43436:104:::0;:::o;43590:124::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43700:6:::1;43672:25;:34;;;;43590:124:::0;:::o;31031:164::-;31128:4;31152:18;:25;31171:5;31152:25;;;;;;;;;;;;;;;:35;31178:8;31152:35;;;;;;;;;;;;;;;;;;;;;;;;;31145:42;;31031:164;;;;:::o;41717:36::-;;;;:::o;48606:175::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48683:6:::1;;;;;;;;;;;48682:7;48674:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;48734:39;48749:10;48761:11;48734:14;:39::i;:::-;48606:175:::0;:::o;8848:201::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8957:1:::1;8937:22;;:8;:22;;;;8929:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9013:28;9032:8;9013:18;:28::i;:::-;8848:201:::0;:::o;42112:62::-;;;;;;;;;;;;;;;;;:::o;43722:136::-;8170:12;:10;:12::i;:::-;8159:23;;:7;:5;:7::i;:::-;:23;;;8151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;43844:6:::1;43810:31;:40;;;;43722:136:::0;:::o;42014:26::-;;;;;;;;;;;;;:::o;20746:157::-;20831:4;20870:25;20855:40;;;:11;:40;;;;20848:47;;20746:157;;;:::o;33766:127::-;33831:4;33883:1;33855:30;;:7;:16;33863:7;33855:16;;;;;;;;;;;;;;;;;;;;;:30;;;;33848:37;;33766:127;;;:::o;6663:98::-;6716:7;6743:10;6736:17;;6663:98;:::o;37912:174::-;38014:2;37987:15;:24;38003:7;37987:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;38070:7;38066:2;38032:46;;38041:23;38056:7;38041:14;:23::i;:::-;38032:46;;;;;;;;;;;;37912:174;;:::o;3267:114::-;3332:7;3359;:14;;;3352:21;;3267:114;;;:::o;48028:299::-;48122:9;48117:203;48141:11;48137:1;:15;48117:203;;;48174:18;:6;:16;:18::i;:::-;48209:38;48219:9;48230:16;:6;:14;:16::i;:::-;48209:9;:38::i;:::-;48264:30;:42;48295:10;48264:42;;;;;;;;;;;;;;;;:44;;;;;;;;;:::i;:::-;;;;;;48154:3;;;;;:::i;:::-;;;;48117:203;;;;48028:299;;:::o;34060:348::-;34153:4;34178:16;34186:7;34178;:16::i;:::-;34170:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34254:13;34270:23;34285:7;34270:14;:23::i;:::-;34254:39;;34323:5;34312:16;;:7;:16;;;:52;;;;34332:32;34349:5;34356:7;34332:16;:32::i;:::-;34312:52;:87;;;;34392:7;34368:31;;:20;34380:7;34368:11;:20::i;:::-;:31;;;34312:87;34304:96;;;34060:348;;;;:::o;37169:625::-;37328:4;37301:31;;:23;37316:7;37301:14;:23::i;:::-;:31;;;37293:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;37407:1;37393:16;;:2;:16;;;;37385:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;37463:39;37484:4;37490:2;37494:7;37463:20;:39::i;:::-;37567:29;37584:1;37588:7;37567:8;:29::i;:::-;37628:1;37609:9;:15;37619:4;37609:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;37657:1;37640:9;:13;37650:2;37640:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;37688:2;37669:7;:16;37677:7;37669:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;37727:7;37723:2;37708:27;;37717:4;37708:27;;;;;;;;;;;;37748:38;37768:4;37774:2;37778:7;37748:19;:38::i;:::-;37169:625;;;:::o;9209:191::-;9283:16;9302:6;;;;;;;;;;;9283:25;;9328:8;9319:6;;:17;;;;;;;;;;;;;;;;;;9383:8;9352:40;;9373:8;9352:40;;;;;;;;;;;;9272:128;9209:191;:::o;929:190::-;1054:4;1107;1078:25;1091:5;1098:4;1078:12;:25::i;:::-;:33;1071:40;;929:190;;;;;:::o;46818:305::-;46915:9;46910:206;46934:11;46930:1;:15;46910:206;;;46967:18;:6;:16;:18::i;:::-;47002:38;47012:9;47023:16;:6;:14;:16::i;:::-;47002:9;:38::i;:::-;47057:33;:45;47091:10;47057:45;;;;;;;;;;;;;;;;:47;;;;;;;;;:::i;:::-;;;;;;46947:3;;;;;:::i;:::-;;;;46910:206;;;;46818:305;;:::o;38228:315::-;38383:8;38374:17;;:5;:17;;;;38366:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;38470:8;38432:18;:25;38451:5;38432:25;;;;;;;;;;;;;;;:35;38458:8;38432:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;38516:8;38494:41;;38509:5;38494:41;;;38526:8;38494:41;;;;;;:::i;:::-;;;;;;;;38228:315;;;:::o;33138:::-;33295:28;33305:4;33311:2;33315:7;33295:9;:28::i;:::-;33342:48;33365:4;33371:2;33375:7;33384:5;33342:22;:48::i;:::-;33334:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;33138:315;;;;:::o;42614:110::-;42674:13;42707:9;42700:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42614:110;:::o;4225:723::-;4281:13;4511:1;4502:5;:10;4498:53;;;4529:10;;;;;;;;;;;;;;;;;;;;;4498:53;4561:12;4576:5;4561:20;;4592:14;4617:78;4632:1;4624:4;:9;4617:78;;4650:8;;;;;:::i;:::-;;;;4681:2;4673:10;;;;;:::i;:::-;;;4617:78;;;4705:19;4737:6;4727:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4705:39;;4755:154;4771:1;4762:5;:10;4755:154;;4799:1;4789:11;;;;;:::i;:::-;;;4866:2;4858:5;:10;;;;:::i;:::-;4845:2;:24;;;;:::i;:::-;4832:39;;4815:6;4822;4815:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;4895:2;4886:11;;;;;:::i;:::-;;;4755:154;;;4933:6;4919:21;;;;;4225:723;;;;:::o;45352:293::-;45443:9;45438:200;45462:11;45458:1;:15;45438:200;;;45495:18;:6;:16;:18::i;:::-;45530:38;45540:9;45551:16;:6;:14;:16::i;:::-;45530:9;:38::i;:::-;45585:27;:39;45613:10;45585:39;;;;;;;;;;;;;;;;:41;;;;;;;;;:::i;:::-;;;;;;45475:3;;;;;:::i;:::-;;;;45438:200;;;;45352:293;;:::o;34750:110::-;34826:26;34836:2;34840:7;34826:26;;;;;;;;;;;;:9;:26::i;:::-;34750:110;;:::o;49007:233::-;49096:9;49091:142;49115:11;49111:1;:15;49091:142;;;49148:18;:6;:16;:18::i;:::-;49183:38;49193:9;49204:16;:6;:14;:16::i;:::-;49183:9;:38::i;:::-;49128:3;;;;;:::i;:::-;;;;49091:142;;;;49007:233;;:::o;3389:127::-;3496:1;3478:7;:14;;;:19;;;;;;;;;;;3389:127;:::o;40479:126::-;;;;:::o;40990:125::-;;;;:::o;1481:675::-;1564:7;1584:20;1607:4;1584:27;;1627:9;1622:497;1646:5;:12;1642:1;:16;1622:497;;;1680:20;1703:5;1709:1;1703:8;;;;;;;;:::i;:::-;;;;;;;;1680:31;;1746:12;1730;:28;1726:382;;1873:42;1888:12;1902;1873:14;:42::i;:::-;1858:57;;1726:382;;;2050:42;2065:12;2079;2050:14;:42::i;:::-;2035:57;;1726:382;1665:454;1660:3;;;;;:::i;:::-;;;;1622:497;;;;2136:12;2129:19;;;1481:675;;;;:::o;39108:799::-;39263:4;39284:15;:2;:13;;;:15::i;:::-;39280:620;;;39336:2;39320:36;;;39357:12;:10;:12::i;:::-;39371:4;39377:7;39386:5;39320:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;39316:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39579:1;39562:6;:13;:18;39558:272;;;39605:60;;;;;;;;;;:::i;:::-;;;;;;;;39558:272;39780:6;39774:13;39765:6;39761:2;39757:15;39750:38;39316:529;39453:41;;;39443:51;;;:6;:51;;;;39436:58;;;;;39280:620;39884:4;39877:11;;39108:799;;;;;;;:::o;35087:321::-;35217:18;35223:2;35227:7;35217:5;:18::i;:::-;35268:54;35299:1;35303:2;35307:7;35316:5;35268:22;:54::i;:::-;35246:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;35087:321;;;:::o;2164:224::-;2232:13;2295:1;2289:4;2282:15;2324:1;2318:4;2311:15;2365:4;2359;2349:21;2340:30;;2164:224;;;;:::o;10640:326::-;10700:4;10957:1;10935:7;:19;;;:23;10928:30;;10640:326;;;:::o;35744:439::-;35838:1;35824:16;;:2;:16;;;;35816:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35897:16;35905:7;35897;:16::i;:::-;35896:17;35888:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;35959:45;35988:1;35992:2;35996:7;35959:20;:45::i;:::-;36034:1;36017:9;:13;36027:2;36017:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;36065:2;36046:7;:16;36054:7;36046:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;36110:7;36106:2;36085:33;;36102:1;36085:33;;;;;;;;;;;;36131:44;36159:1;36163:2;36167:7;36131:19;:44::i;:::-;35744:439;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:139::-;2309:5;2347:6;2334:20;2325:29;;2363:33;2390:5;2363:33;:::i;:::-;2263:139;;;;:::o;2408:137::-;2453:5;2491:6;2478:20;2469:29;;2507:32;2533:5;2507:32;:::i;:::-;2408:137;;;;:::o;2551:141::-;2607:5;2638:6;2632:13;2623:22;;2654:32;2680:5;2654:32;:::i;:::-;2551:141;;;;:::o;2711:338::-;2766:5;2815:3;2808:4;2800:6;2796:17;2792:27;2782:122;;2823:79;;:::i;:::-;2782:122;2940:6;2927:20;2965:78;3039:3;3031:6;3024:4;3016:6;3012:17;2965:78;:::i;:::-;2956:87;;2772:277;2711:338;;;;:::o;3069:340::-;3125:5;3174:3;3167:4;3159:6;3155:17;3151:27;3141:122;;3182:79;;:::i;:::-;3141:122;3299:6;3286:20;3324:79;3399:3;3391:6;3384:4;3376:6;3372:17;3324:79;:::i;:::-;3315:88;;3131:278;3069:340;;;;:::o;3415:139::-;3461:5;3499:6;3486:20;3477:29;;3515:33;3542:5;3515:33;:::i;:::-;3415:139;;;;:::o;3560:329::-;3619:6;3668:2;3656:9;3647:7;3643:23;3639:32;3636:119;;;3674:79;;:::i;:::-;3636:119;3794:1;3819:53;3864:7;3855:6;3844:9;3840:22;3819:53;:::i;:::-;3809:63;;3765:117;3560:329;;;;:::o;3895:474::-;3963:6;3971;4020:2;4008:9;3999:7;3995:23;3991:32;3988:119;;;4026:79;;:::i;:::-;3988:119;4146:1;4171:53;4216:7;4207:6;4196:9;4192:22;4171:53;:::i;:::-;4161:63;;4117:117;4273:2;4299:53;4344:7;4335:6;4324:9;4320:22;4299:53;:::i;:::-;4289:63;;4244:118;3895:474;;;;;:::o;4375:619::-;4452:6;4460;4468;4517:2;4505:9;4496:7;4492:23;4488:32;4485:119;;;4523:79;;:::i;:::-;4485:119;4643:1;4668:53;4713:7;4704:6;4693:9;4689:22;4668:53;:::i;:::-;4658:63;;4614:117;4770:2;4796:53;4841:7;4832:6;4821:9;4817:22;4796:53;:::i;:::-;4786:63;;4741:118;4898:2;4924:53;4969:7;4960:6;4949:9;4945:22;4924:53;:::i;:::-;4914:63;;4869:118;4375:619;;;;;:::o;5000:943::-;5095:6;5103;5111;5119;5168:3;5156:9;5147:7;5143:23;5139:33;5136:120;;;5175:79;;:::i;:::-;5136:120;5295:1;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5266:117;5422:2;5448:53;5493:7;5484:6;5473:9;5469:22;5448:53;:::i;:::-;5438:63;;5393:118;5550:2;5576:53;5621:7;5612:6;5601:9;5597:22;5576:53;:::i;:::-;5566:63;;5521:118;5706:2;5695:9;5691:18;5678:32;5737:18;5729:6;5726:30;5723:117;;;5759:79;;:::i;:::-;5723:117;5864:62;5918:7;5909:6;5898:9;5894:22;5864:62;:::i;:::-;5854:72;;5649:287;5000:943;;;;;;;:::o;5949:468::-;6014:6;6022;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:53;6267:7;6258:6;6247:9;6243:22;6222:53;:::i;:::-;6212:63;;6168:117;6324:2;6350:50;6392:7;6383:6;6372:9;6368:22;6350:50;:::i;:::-;6340:60;;6295:115;5949:468;;;;;:::o;6423:474::-;6491:6;6499;6548:2;6536:9;6527:7;6523:23;6519:32;6516:119;;;6554:79;;:::i;:::-;6516:119;6674:1;6699:53;6744:7;6735:6;6724:9;6720:22;6699:53;:::i;:::-;6689:63;;6645:117;6801:2;6827:53;6872:7;6863:6;6852:9;6848:22;6827:53;:::i;:::-;6817:63;;6772:118;6423:474;;;;;:::o;6903:684::-;6996:6;7004;7053:2;7041:9;7032:7;7028:23;7024:32;7021:119;;;7059:79;;:::i;:::-;7021:119;7207:1;7196:9;7192:17;7179:31;7237:18;7229:6;7226:30;7223:117;;;7259:79;;:::i;:::-;7223:117;7364:78;7434:7;7425:6;7414:9;7410:22;7364:78;:::i;:::-;7354:88;;7150:302;7491:2;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7462:118;6903:684;;;;;:::o;7593:323::-;7649:6;7698:2;7686:9;7677:7;7673:23;7669:32;7666:119;;;7704:79;;:::i;:::-;7666:119;7824:1;7849:50;7891:7;7882:6;7871:9;7867:22;7849:50;:::i;:::-;7839:60;;7795:114;7593:323;;;;:::o;7922:329::-;7981:6;8030:2;8018:9;8009:7;8005:23;8001:32;7998:119;;;8036:79;;:::i;:::-;7998:119;8156:1;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8127:117;7922:329;;;;:::o;8257:327::-;8315:6;8364:2;8352:9;8343:7;8339:23;8335:32;8332:119;;;8370:79;;:::i;:::-;8332:119;8490:1;8515:52;8559:7;8550:6;8539:9;8535:22;8515:52;:::i;:::-;8505:62;;8461:116;8257:327;;;;:::o;8590:349::-;8659:6;8708:2;8696:9;8687:7;8683:23;8679:32;8676:119;;;8714:79;;:::i;:::-;8676:119;8834:1;8859:63;8914:7;8905:6;8894:9;8890:22;8859:63;:::i;:::-;8849:73;;8805:127;8590:349;;;;:::o;8945:509::-;9014:6;9063:2;9051:9;9042:7;9038:23;9034:32;9031:119;;;9069:79;;:::i;:::-;9031:119;9217:1;9206:9;9202:17;9189:31;9247:18;9239:6;9236:30;9233:117;;;9269:79;;:::i;:::-;9233:117;9374:63;9429:7;9420:6;9409:9;9405:22;9374:63;:::i;:::-;9364:73;;9160:287;8945:509;;;;:::o;9460:329::-;9519:6;9568:2;9556:9;9547:7;9543:23;9539:32;9536:119;;;9574:79;;:::i;:::-;9536:119;9694:1;9719:53;9764:7;9755:6;9744:9;9740:22;9719:53;:::i;:::-;9709:63;;9665:117;9460:329;;;;:::o;9795:684::-;9888:6;9896;9945:2;9933:9;9924:7;9920:23;9916:32;9913:119;;;9951:79;;:::i;:::-;9913:119;10071:1;10096:53;10141:7;10132:6;10121:9;10117:22;10096:53;:::i;:::-;10086:63;;10042:117;10226:2;10215:9;10211:18;10198:32;10257:18;10249:6;10246:30;10243:117;;;10279:79;;:::i;:::-;10243:117;10384:78;10454:7;10445:6;10434:9;10430:22;10384:78;:::i;:::-;10374:88;;10169:303;9795:684;;;;;:::o;10485:179::-;10554:10;10575:46;10617:3;10609:6;10575:46;:::i;:::-;10653:4;10648:3;10644:14;10630:28;;10485:179;;;;:::o;10670:118::-;10757:24;10775:5;10757:24;:::i;:::-;10752:3;10745:37;10670:118;;:::o;10794:157::-;10899:45;10919:24;10937:5;10919:24;:::i;:::-;10899:45;:::i;:::-;10894:3;10887:58;10794:157;;:::o;10987:732::-;11106:3;11135:54;11183:5;11135:54;:::i;:::-;11205:86;11284:6;11279:3;11205:86;:::i;:::-;11198:93;;11315:56;11365:5;11315:56;:::i;:::-;11394:7;11425:1;11410:284;11435:6;11432:1;11429:13;11410:284;;;11511:6;11505:13;11538:63;11597:3;11582:13;11538:63;:::i;:::-;11531:70;;11624:60;11677:6;11624:60;:::i;:::-;11614:70;;11470:224;11457:1;11454;11450:9;11445:14;;11410:284;;;11414:14;11710:3;11703:10;;11111:608;;;10987:732;;;;:::o;11725:109::-;11806:21;11821:5;11806:21;:::i;:::-;11801:3;11794:34;11725:109;;:::o;11840:118::-;11927:24;11945:5;11927:24;:::i;:::-;11922:3;11915:37;11840:118;;:::o;11964:360::-;12050:3;12078:38;12110:5;12078:38;:::i;:::-;12132:70;12195:6;12190:3;12132:70;:::i;:::-;12125:77;;12211:52;12256:6;12251:3;12244:4;12237:5;12233:16;12211:52;:::i;:::-;12288:29;12310:6;12288:29;:::i;:::-;12283:3;12279:39;12272:46;;12054:270;11964:360;;;;:::o;12330:364::-;12418:3;12446:39;12479:5;12446:39;:::i;:::-;12501:71;12565:6;12560:3;12501:71;:::i;:::-;12494:78;;12581:52;12626:6;12621:3;12614:4;12607:5;12603:16;12581:52;:::i;:::-;12658:29;12680:6;12658:29;:::i;:::-;12653:3;12649:39;12642:46;;12422:272;12330:364;;;;:::o;12700:377::-;12806:3;12834:39;12867:5;12834:39;:::i;:::-;12889:89;12971:6;12966:3;12889:89;:::i;:::-;12882:96;;12987:52;13032:6;13027:3;13020:4;13013:5;13009:16;12987:52;:::i;:::-;13064:6;13059:3;13055:16;13048:23;;12810:267;12700:377;;;;:::o;13107:845::-;13210:3;13247:5;13241:12;13276:36;13302:9;13276:36;:::i;:::-;13328:89;13410:6;13405:3;13328:89;:::i;:::-;13321:96;;13448:1;13437:9;13433:17;13464:1;13459:137;;;;13610:1;13605:341;;;;13426:520;;13459:137;13543:4;13539:9;13528;13524:25;13519:3;13512:38;13579:6;13574:3;13570:16;13563:23;;13459:137;;13605:341;13672:38;13704:5;13672:38;:::i;:::-;13732:1;13746:154;13760:6;13757:1;13754:13;13746:154;;;13834:7;13828:14;13824:1;13819:3;13815:11;13808:35;13884:1;13875:7;13871:15;13860:26;;13782:4;13779:1;13775:12;13770:17;;13746:154;;;13929:6;13924:3;13920:16;13913:23;;13612:334;;13426:520;;13214:738;;13107:845;;;;:::o;13958:366::-;14100:3;14121:67;14185:2;14180:3;14121:67;:::i;:::-;14114:74;;14197:93;14286:3;14197:93;:::i;:::-;14315:2;14310:3;14306:12;14299:19;;13958:366;;;:::o;14330:::-;14472:3;14493:67;14557:2;14552:3;14493:67;:::i;:::-;14486:74;;14569:93;14658:3;14569:93;:::i;:::-;14687:2;14682:3;14678:12;14671:19;;14330:366;;;:::o;14702:::-;14844:3;14865:67;14929:2;14924:3;14865:67;:::i;:::-;14858:74;;14941:93;15030:3;14941:93;:::i;:::-;15059:2;15054:3;15050:12;15043:19;;14702:366;;;:::o;15074:::-;15216:3;15237:67;15301:2;15296:3;15237:67;:::i;:::-;15230:74;;15313:93;15402:3;15313:93;:::i;:::-;15431:2;15426:3;15422:12;15415:19;;15074:366;;;:::o;15446:::-;15588:3;15609:67;15673:2;15668:3;15609:67;:::i;:::-;15602:74;;15685:93;15774:3;15685:93;:::i;:::-;15803:2;15798:3;15794:12;15787:19;;15446:366;;;:::o;15818:::-;15960:3;15981:67;16045:2;16040:3;15981:67;:::i;:::-;15974:74;;16057:93;16146:3;16057:93;:::i;:::-;16175:2;16170:3;16166:12;16159:19;;15818:366;;;:::o;16190:::-;16332:3;16353:67;16417:2;16412:3;16353:67;:::i;:::-;16346:74;;16429:93;16518:3;16429:93;:::i;:::-;16547:2;16542:3;16538:12;16531:19;;16190:366;;;:::o;16562:::-;16704:3;16725:67;16789:2;16784:3;16725:67;:::i;:::-;16718:74;;16801:93;16890:3;16801:93;:::i;:::-;16919:2;16914:3;16910:12;16903:19;;16562:366;;;:::o;16934:::-;17076:3;17097:67;17161:2;17156:3;17097:67;:::i;:::-;17090:74;;17173:93;17262:3;17173:93;:::i;:::-;17291:2;17286:3;17282:12;17275:19;;16934:366;;;:::o;17306:::-;17448:3;17469:67;17533:2;17528:3;17469:67;:::i;:::-;17462:74;;17545:93;17634:3;17545:93;:::i;:::-;17663:2;17658:3;17654:12;17647:19;;17306:366;;;:::o;17678:::-;17820:3;17841:67;17905:2;17900:3;17841:67;:::i;:::-;17834:74;;17917:93;18006:3;17917:93;:::i;:::-;18035:2;18030:3;18026:12;18019:19;;17678:366;;;:::o;18050:::-;18192:3;18213:67;18277:2;18272:3;18213:67;:::i;:::-;18206:74;;18289:93;18378:3;18289:93;:::i;:::-;18407:2;18402:3;18398:12;18391:19;;18050:366;;;:::o;18422:::-;18564:3;18585:67;18649:2;18644:3;18585:67;:::i;:::-;18578:74;;18661:93;18750:3;18661:93;:::i;:::-;18779:2;18774:3;18770:12;18763:19;;18422:366;;;:::o;18794:::-;18936:3;18957:67;19021:2;19016:3;18957:67;:::i;:::-;18950:74;;19033:93;19122:3;19033:93;:::i;:::-;19151:2;19146:3;19142:12;19135:19;;18794:366;;;:::o;19166:::-;19308:3;19329:67;19393:2;19388:3;19329:67;:::i;:::-;19322:74;;19405:93;19494:3;19405:93;:::i;:::-;19523:2;19518:3;19514:12;19507:19;;19166:366;;;:::o;19538:::-;19680:3;19701:67;19765:2;19760:3;19701:67;:::i;:::-;19694:74;;19777:93;19866:3;19777:93;:::i;:::-;19895:2;19890:3;19886:12;19879:19;;19538:366;;;:::o;19910:::-;20052:3;20073:67;20137:2;20132:3;20073:67;:::i;:::-;20066:74;;20149:93;20238:3;20149:93;:::i;:::-;20267:2;20262:3;20258:12;20251:19;;19910:366;;;:::o;20282:::-;20424:3;20445:67;20509:2;20504:3;20445:67;:::i;:::-;20438:74;;20521:93;20610:3;20521:93;:::i;:::-;20639:2;20634:3;20630:12;20623:19;;20282:366;;;:::o;20654:::-;20796:3;20817:67;20881:2;20876:3;20817:67;:::i;:::-;20810:74;;20893:93;20982:3;20893:93;:::i;:::-;21011:2;21006:3;21002:12;20995:19;;20654:366;;;:::o;21026:::-;21168:3;21189:67;21253:2;21248:3;21189:67;:::i;:::-;21182:74;;21265:93;21354:3;21265:93;:::i;:::-;21383:2;21378:3;21374:12;21367:19;;21026:366;;;:::o;21398:::-;21540:3;21561:67;21625:2;21620:3;21561:67;:::i;:::-;21554:74;;21637:93;21726:3;21637:93;:::i;:::-;21755:2;21750:3;21746:12;21739:19;;21398:366;;;:::o;21770:398::-;21929:3;21950:83;22031:1;22026:3;21950:83;:::i;:::-;21943:90;;22042:93;22131:3;22042:93;:::i;:::-;22160:1;22155:3;22151:11;22144:18;;21770:398;;;:::o;22174:366::-;22316:3;22337:67;22401:2;22396:3;22337:67;:::i;:::-;22330:74;;22413:93;22502:3;22413:93;:::i;:::-;22531:2;22526:3;22522:12;22515:19;;22174:366;;;:::o;22546:::-;22688:3;22709:67;22773:2;22768:3;22709:67;:::i;:::-;22702:74;;22785:93;22874:3;22785:93;:::i;:::-;22903:2;22898:3;22894:12;22887:19;;22546:366;;;:::o;22918:::-;23060:3;23081:67;23145:2;23140:3;23081:67;:::i;:::-;23074:74;;23157:93;23246:3;23157:93;:::i;:::-;23275:2;23270:3;23266:12;23259:19;;22918:366;;;:::o;23290:::-;23432:3;23453:67;23517:2;23512:3;23453:67;:::i;:::-;23446:74;;23529:93;23618:3;23529:93;:::i;:::-;23647:2;23642:3;23638:12;23631:19;;23290:366;;;:::o;23662:::-;23804:3;23825:67;23889:2;23884:3;23825:67;:::i;:::-;23818:74;;23901:93;23990:3;23901:93;:::i;:::-;24019:2;24014:3;24010:12;24003:19;;23662:366;;;:::o;24034:108::-;24111:24;24129:5;24111:24;:::i;:::-;24106:3;24099:37;24034:108;;:::o;24148:118::-;24235:24;24253:5;24235:24;:::i;:::-;24230:3;24223:37;24148:118;;:::o;24272:256::-;24384:3;24399:75;24470:3;24461:6;24399:75;:::i;:::-;24499:2;24494:3;24490:12;24483:19;;24519:3;24512:10;;24272:256;;;;:::o;24534:589::-;24759:3;24781:95;24872:3;24863:6;24781:95;:::i;:::-;24774:102;;24893:95;24984:3;24975:6;24893:95;:::i;:::-;24886:102;;25005:92;25093:3;25084:6;25005:92;:::i;:::-;24998:99;;25114:3;25107:10;;24534:589;;;;;;:::o;25129:379::-;25313:3;25335:147;25478:3;25335:147;:::i;:::-;25328:154;;25499:3;25492:10;;25129:379;;;:::o;25514:222::-;25607:4;25645:2;25634:9;25630:18;25622:26;;25658:71;25726:1;25715:9;25711:17;25702:6;25658:71;:::i;:::-;25514:222;;;;:::o;25742:640::-;25937:4;25975:3;25964:9;25960:19;25952:27;;25989:71;26057:1;26046:9;26042:17;26033:6;25989:71;:::i;:::-;26070:72;26138:2;26127:9;26123:18;26114:6;26070:72;:::i;:::-;26152;26220:2;26209:9;26205:18;26196:6;26152:72;:::i;:::-;26271:9;26265:4;26261:20;26256:2;26245:9;26241:18;26234:48;26299:76;26370:4;26361:6;26299:76;:::i;:::-;26291:84;;25742:640;;;;;;;:::o;26388:373::-;26531:4;26569:2;26558:9;26554:18;26546:26;;26618:9;26612:4;26608:20;26604:1;26593:9;26589:17;26582:47;26646:108;26749:4;26740:6;26646:108;:::i;:::-;26638:116;;26388:373;;;;:::o;26767:210::-;26854:4;26892:2;26881:9;26877:18;26869:26;;26905:65;26967:1;26956:9;26952:17;26943:6;26905:65;:::i;:::-;26767:210;;;;:::o;26983:222::-;27076:4;27114:2;27103:9;27099:18;27091:26;;27127:71;27195:1;27184:9;27180:17;27171:6;27127:71;:::i;:::-;26983:222;;;;:::o;27211:313::-;27324:4;27362:2;27351:9;27347:18;27339:26;;27411:9;27405:4;27401:20;27397:1;27386:9;27382:17;27375:47;27439:78;27512:4;27503:6;27439:78;:::i;:::-;27431:86;;27211:313;;;;:::o;27530:419::-;27696:4;27734:2;27723:9;27719:18;27711:26;;27783:9;27777:4;27773:20;27769:1;27758:9;27754:17;27747:47;27811:131;27937:4;27811:131;:::i;:::-;27803:139;;27530:419;;;:::o;27955:::-;28121:4;28159:2;28148:9;28144:18;28136:26;;28208:9;28202:4;28198:20;28194:1;28183:9;28179:17;28172:47;28236:131;28362:4;28236:131;:::i;:::-;28228:139;;27955:419;;;:::o;28380:::-;28546:4;28584:2;28573:9;28569:18;28561:26;;28633:9;28627:4;28623:20;28619:1;28608:9;28604:17;28597:47;28661:131;28787:4;28661:131;:::i;:::-;28653:139;;28380:419;;;:::o;28805:::-;28971:4;29009:2;28998:9;28994:18;28986:26;;29058:9;29052:4;29048:20;29044:1;29033:9;29029:17;29022:47;29086:131;29212:4;29086:131;:::i;:::-;29078:139;;28805:419;;;:::o;29230:::-;29396:4;29434:2;29423:9;29419:18;29411:26;;29483:9;29477:4;29473:20;29469:1;29458:9;29454:17;29447:47;29511:131;29637:4;29511:131;:::i;:::-;29503:139;;29230:419;;;:::o;29655:::-;29821:4;29859:2;29848:9;29844:18;29836:26;;29908:9;29902:4;29898:20;29894:1;29883:9;29879:17;29872:47;29936:131;30062:4;29936:131;:::i;:::-;29928:139;;29655:419;;;:::o;30080:::-;30246:4;30284:2;30273:9;30269:18;30261:26;;30333:9;30327:4;30323:20;30319:1;30308:9;30304:17;30297:47;30361:131;30487:4;30361:131;:::i;:::-;30353:139;;30080:419;;;:::o;30505:::-;30671:4;30709:2;30698:9;30694:18;30686:26;;30758:9;30752:4;30748:20;30744:1;30733:9;30729:17;30722:47;30786:131;30912:4;30786:131;:::i;:::-;30778:139;;30505:419;;;:::o;30930:::-;31096:4;31134:2;31123:9;31119:18;31111:26;;31183:9;31177:4;31173:20;31169:1;31158:9;31154:17;31147:47;31211:131;31337:4;31211:131;:::i;:::-;31203:139;;30930:419;;;:::o;31355:::-;31521:4;31559:2;31548:9;31544:18;31536:26;;31608:9;31602:4;31598:20;31594:1;31583:9;31579:17;31572:47;31636:131;31762:4;31636:131;:::i;:::-;31628:139;;31355:419;;;:::o;31780:::-;31946:4;31984:2;31973:9;31969:18;31961:26;;32033:9;32027:4;32023:20;32019:1;32008:9;32004:17;31997:47;32061:131;32187:4;32061:131;:::i;:::-;32053:139;;31780:419;;;:::o;32205:::-;32371:4;32409:2;32398:9;32394:18;32386:26;;32458:9;32452:4;32448:20;32444:1;32433:9;32429:17;32422:47;32486:131;32612:4;32486:131;:::i;:::-;32478:139;;32205:419;;;:::o;32630:::-;32796:4;32834:2;32823:9;32819:18;32811:26;;32883:9;32877:4;32873:20;32869:1;32858:9;32854:17;32847:47;32911:131;33037:4;32911:131;:::i;:::-;32903:139;;32630:419;;;:::o;33055:::-;33221:4;33259:2;33248:9;33244:18;33236:26;;33308:9;33302:4;33298:20;33294:1;33283:9;33279:17;33272:47;33336:131;33462:4;33336:131;:::i;:::-;33328:139;;33055:419;;;:::o;33480:::-;33646:4;33684:2;33673:9;33669:18;33661:26;;33733:9;33727:4;33723:20;33719:1;33708:9;33704:17;33697:47;33761:131;33887:4;33761:131;:::i;:::-;33753:139;;33480:419;;;:::o;33905:::-;34071:4;34109:2;34098:9;34094:18;34086:26;;34158:9;34152:4;34148:20;34144:1;34133:9;34129:17;34122:47;34186:131;34312:4;34186:131;:::i;:::-;34178:139;;33905:419;;;:::o;34330:::-;34496:4;34534:2;34523:9;34519:18;34511:26;;34583:9;34577:4;34573:20;34569:1;34558:9;34554:17;34547:47;34611:131;34737:4;34611:131;:::i;:::-;34603:139;;34330:419;;;:::o;34755:::-;34921:4;34959:2;34948:9;34944:18;34936:26;;35008:9;35002:4;34998:20;34994:1;34983:9;34979:17;34972:47;35036:131;35162:4;35036:131;:::i;:::-;35028:139;;34755:419;;;:::o;35180:::-;35346:4;35384:2;35373:9;35369:18;35361:26;;35433:9;35427:4;35423:20;35419:1;35408:9;35404:17;35397:47;35461:131;35587:4;35461:131;:::i;:::-;35453:139;;35180:419;;;:::o;35605:::-;35771:4;35809:2;35798:9;35794:18;35786:26;;35858:9;35852:4;35848:20;35844:1;35833:9;35829:17;35822:47;35886:131;36012:4;35886:131;:::i;:::-;35878:139;;35605:419;;;:::o;36030:::-;36196:4;36234:2;36223:9;36219:18;36211:26;;36283:9;36277:4;36273:20;36269:1;36258:9;36254:17;36247:47;36311:131;36437:4;36311:131;:::i;:::-;36303:139;;36030:419;;;:::o;36455:::-;36621:4;36659:2;36648:9;36644:18;36636:26;;36708:9;36702:4;36698:20;36694:1;36683:9;36679:17;36672:47;36736:131;36862:4;36736:131;:::i;:::-;36728:139;;36455:419;;;:::o;36880:::-;37046:4;37084:2;37073:9;37069:18;37061:26;;37133:9;37127:4;37123:20;37119:1;37108:9;37104:17;37097:47;37161:131;37287:4;37161:131;:::i;:::-;37153:139;;36880:419;;;:::o;37305:::-;37471:4;37509:2;37498:9;37494:18;37486:26;;37558:9;37552:4;37548:20;37544:1;37533:9;37529:17;37522:47;37586:131;37712:4;37586:131;:::i;:::-;37578:139;;37305:419;;;:::o;37730:::-;37896:4;37934:2;37923:9;37919:18;37911:26;;37983:9;37977:4;37973:20;37969:1;37958:9;37954:17;37947:47;38011:131;38137:4;38011:131;:::i;:::-;38003:139;;37730:419;;;:::o;38155:::-;38321:4;38359:2;38348:9;38344:18;38336:26;;38408:9;38402:4;38398:20;38394:1;38383:9;38379:17;38372:47;38436:131;38562:4;38436:131;:::i;:::-;38428:139;;38155:419;;;:::o;38580:222::-;38673:4;38711:2;38700:9;38696:18;38688:26;;38724:71;38792:1;38781:9;38777:17;38768:6;38724:71;:::i;:::-;38580:222;;;;:::o;38808:129::-;38842:6;38869:20;;:::i;:::-;38859:30;;38898:33;38926:4;38918:6;38898:33;:::i;:::-;38808:129;;;:::o;38943:75::-;38976:6;39009:2;39003:9;38993:19;;38943:75;:::o;39024:311::-;39101:4;39191:18;39183:6;39180:30;39177:56;;;39213:18;;:::i;:::-;39177:56;39263:4;39255:6;39251:17;39243:25;;39323:4;39317;39313:15;39305:23;;39024:311;;;:::o;39341:307::-;39402:4;39492:18;39484:6;39481:30;39478:56;;;39514:18;;:::i;:::-;39478:56;39552:29;39574:6;39552:29;:::i;:::-;39544:37;;39636:4;39630;39626:15;39618:23;;39341:307;;;:::o;39654:308::-;39716:4;39806:18;39798:6;39795:30;39792:56;;;39828:18;;:::i;:::-;39792:56;39866:29;39888:6;39866:29;:::i;:::-;39858:37;;39950:4;39944;39940:15;39932:23;;39654:308;;;:::o;39968:132::-;40035:4;40058:3;40050:11;;40088:4;40083:3;40079:14;40071:22;;39968:132;;;:::o;40106:141::-;40155:4;40178:3;40170:11;;40201:3;40198:1;40191:14;40235:4;40232:1;40222:18;40214:26;;40106:141;;;:::o;40253:114::-;40320:6;40354:5;40348:12;40338:22;;40253:114;;;:::o;40373:98::-;40424:6;40458:5;40452:12;40442:22;;40373:98;;;:::o;40477:99::-;40529:6;40563:5;40557:12;40547:22;;40477:99;;;:::o;40582:113::-;40652:4;40684;40679:3;40675:14;40667:22;;40582:113;;;:::o;40701:184::-;40800:11;40834:6;40829:3;40822:19;40874:4;40869:3;40865:14;40850:29;;40701:184;;;;:::o;40891:168::-;40974:11;41008:6;41003:3;40996:19;41048:4;41043:3;41039:14;41024:29;;40891:168;;;;:::o;41065:147::-;41166:11;41203:3;41188:18;;41065:147;;;;:::o;41218:169::-;41302:11;41336:6;41331:3;41324:19;41376:4;41371:3;41367:14;41352:29;;41218:169;;;;:::o;41393:148::-;41495:11;41532:3;41517:18;;41393:148;;;;:::o;41547:305::-;41587:3;41606:20;41624:1;41606:20;:::i;:::-;41601:25;;41640:20;41658:1;41640:20;:::i;:::-;41635:25;;41794:1;41726:66;41722:74;41719:1;41716:81;41713:107;;;41800:18;;:::i;:::-;41713:107;41844:1;41841;41837:9;41830:16;;41547:305;;;;:::o;41858:185::-;41898:1;41915:20;41933:1;41915:20;:::i;:::-;41910:25;;41949:20;41967:1;41949:20;:::i;:::-;41944:25;;41988:1;41978:35;;41993:18;;:::i;:::-;41978:35;42035:1;42032;42028:9;42023:14;;41858:185;;;;:::o;42049:348::-;42089:7;42112:20;42130:1;42112:20;:::i;:::-;42107:25;;42146:20;42164:1;42146:20;:::i;:::-;42141:25;;42334:1;42266:66;42262:74;42259:1;42256:81;42251:1;42244:9;42237:17;42233:105;42230:131;;;42341:18;;:::i;:::-;42230:131;42389:1;42386;42382:9;42371:20;;42049:348;;;;:::o;42403:191::-;42443:4;42463:20;42481:1;42463:20;:::i;:::-;42458:25;;42497:20;42515:1;42497:20;:::i;:::-;42492:25;;42536:1;42533;42530:8;42527:34;;;42541:18;;:::i;:::-;42527:34;42586:1;42583;42579:9;42571:17;;42403:191;;;;:::o;42600:96::-;42637:7;42666:24;42684:5;42666:24;:::i;:::-;42655:35;;42600:96;;;:::o;42702:90::-;42736:7;42779:5;42772:13;42765:21;42754:32;;42702:90;;;:::o;42798:77::-;42835:7;42864:5;42853:16;;42798:77;;;:::o;42881:149::-;42917:7;42957:66;42950:5;42946:78;42935:89;;42881:149;;;:::o;43036:126::-;43073:7;43113:42;43106:5;43102:54;43091:65;;43036:126;;;:::o;43168:77::-;43205:7;43234:5;43223:16;;43168:77;;;:::o;43251:154::-;43335:6;43330:3;43325;43312:30;43397:1;43388:6;43383:3;43379:16;43372:27;43251:154;;;:::o;43411:307::-;43479:1;43489:113;43503:6;43500:1;43497:13;43489:113;;;43588:1;43583:3;43579:11;43573:18;43569:1;43564:3;43560:11;43553:39;43525:2;43522:1;43518:10;43513:15;;43489:113;;;43620:6;43617:1;43614:13;43611:101;;;43700:1;43691:6;43686:3;43682:16;43675:27;43611:101;43460:258;43411:307;;;:::o;43724:320::-;43768:6;43805:1;43799:4;43795:12;43785:22;;43852:1;43846:4;43842:12;43873:18;43863:81;;43929:4;43921:6;43917:17;43907:27;;43863:81;43991:2;43983:6;43980:14;43960:18;43957:38;43954:84;;;44010:18;;:::i;:::-;43954:84;43775:269;43724:320;;;:::o;44050:281::-;44133:27;44155:4;44133:27;:::i;:::-;44125:6;44121:40;44263:6;44251:10;44248:22;44227:18;44215:10;44212:34;44209:62;44206:88;;;44274:18;;:::i;:::-;44206:88;44314:10;44310:2;44303:22;44093:238;44050:281;;:::o;44337:233::-;44376:3;44399:24;44417:5;44399:24;:::i;:::-;44390:33;;44445:66;44438:5;44435:77;44432:103;;;44515:18;;:::i;:::-;44432:103;44562:1;44555:5;44551:13;44544:20;;44337:233;;;:::o;44576:100::-;44615:7;44644:26;44664:5;44644:26;:::i;:::-;44633:37;;44576:100;;;:::o;44682:94::-;44721:7;44750:20;44764:5;44750:20;:::i;:::-;44739:31;;44682:94;;;:::o;44782:176::-;44814:1;44831:20;44849:1;44831:20;:::i;:::-;44826:25;;44865:20;44883:1;44865:20;:::i;:::-;44860:25;;44904:1;44894:35;;44909:18;;:::i;:::-;44894:35;44950:1;44947;44943:9;44938:14;;44782:176;;;;:::o;44964:180::-;45012:77;45009:1;45002:88;45109:4;45106:1;45099:15;45133:4;45130:1;45123:15;45150:180;45198:77;45195:1;45188:88;45295:4;45292:1;45285:15;45319:4;45316:1;45309:15;45336:180;45384:77;45381:1;45374:88;45481:4;45478:1;45471:15;45505:4;45502:1;45495:15;45522:180;45570:77;45567:1;45560:88;45667:4;45664:1;45657:15;45691:4;45688:1;45681:15;45708:180;45756:77;45753:1;45746:88;45853:4;45850:1;45843:15;45877:4;45874:1;45867:15;45894:117;46003:1;46000;45993:12;46017:117;46126:1;46123;46116:12;46140:117;46249:1;46246;46239:12;46263:117;46372:1;46369;46362:12;46386:117;46495:1;46492;46485:12;46509:102;46550:6;46601:2;46597:7;46592:2;46585:5;46581:14;46577:28;46567:38;;46509:102;;;:::o;46617:94::-;46650:8;46698:5;46694:2;46690:14;46669:35;;46617:94;;;:::o;46717:178::-;46857:30;46853:1;46845:6;46841:14;46834:54;46717:178;:::o;46901:237::-;47041:34;47037:1;47029:6;47025:14;47018:58;47110:20;47105:2;47097:6;47093:15;47086:45;46901:237;:::o;47144:225::-;47284:34;47280:1;47272:6;47268:14;47261:58;47353:8;47348:2;47340:6;47336:15;47329:33;47144:225;:::o;47375:224::-;47515:34;47511:1;47503:6;47499:14;47492:58;47584:7;47579:2;47571:6;47567:15;47560:32;47375:224;:::o;47605:178::-;47745:30;47741:1;47733:6;47729:14;47722:54;47605:178;:::o;47789:177::-;47929:29;47925:1;47917:6;47913:14;47906:53;47789:177;:::o;47972:223::-;48112:34;48108:1;48100:6;48096:14;48089:58;48181:6;48176:2;48168:6;48164:15;48157:31;47972:223;:::o;48201:175::-;48341:27;48337:1;48329:6;48325:14;48318:51;48201:175;:::o;48382:181::-;48522:33;48518:1;48510:6;48506:14;48499:57;48382:181;:::o;48569:231::-;48709:34;48705:1;48697:6;48693:14;48686:58;48778:14;48773:2;48765:6;48761:15;48754:39;48569:231;:::o;48806:243::-;48946:34;48942:1;48934:6;48930:14;48923:58;49015:26;49010:2;49002:6;48998:15;48991:51;48806:243;:::o;49055:178::-;49195:30;49191:1;49183:6;49179:14;49172:54;49055:178;:::o;49239:229::-;49379:34;49375:1;49367:6;49363:14;49356:58;49448:12;49443:2;49435:6;49431:15;49424:37;49239:229;:::o;49474:228::-;49614:34;49610:1;49602:6;49598:14;49591:58;49683:11;49678:2;49670:6;49666:15;49659:36;49474:228;:::o;49708:182::-;49848:34;49844:1;49836:6;49832:14;49825:58;49708:182;:::o;49896:232::-;50036:34;50032:1;50024:6;50020:14;50013:58;50105:15;50100:2;50092:6;50088:15;50081:40;49896:232;:::o;50134:231::-;50274:34;50270:1;50262:6;50258:14;50251:58;50343:14;50338:2;50330:6;50326:15;50319:39;50134:231;:::o;50371:173::-;50511:25;50507:1;50499:6;50495:14;50488:49;50371:173;:::o;50550:182::-;50690:34;50686:1;50678:6;50674:14;50667:58;50550:182;:::o;50738:223::-;50878:34;50874:1;50866:6;50862:14;50855:58;50947:6;50942:2;50934:6;50930:15;50923:31;50738:223;:::o;50967:220::-;51107:34;51103:1;51095:6;51091:14;51084:58;51176:3;51171:2;51163:6;51159:15;51152:28;50967:220;:::o;51193:114::-;;:::o;51313:236::-;51453:34;51449:1;51441:6;51437:14;51430:58;51522:19;51517:2;51509:6;51505:15;51498:44;51313:236;:::o;51555:235::-;51695:34;51691:1;51683:6;51679:14;51672:58;51764:18;51759:2;51751:6;51747:15;51740:43;51555:235;:::o;51796:174::-;51936:26;51932:1;51924:6;51920:14;51913:50;51796:174;:::o;51976:238::-;52116:34;52112:1;52104:6;52100:14;52093:58;52185:21;52180:2;52172:6;52168:15;52161:46;51976:238;:::o;52220:221::-;52360:34;52356:1;52348:6;52344:14;52337:58;52429:4;52424:2;52416:6;52412:15;52405:29;52220:221;:::o;52447:122::-;52520:24;52538:5;52520:24;:::i;:::-;52513:5;52510:35;52500:63;;52559:1;52556;52549:12;52500:63;52447:122;:::o;52575:116::-;52645:21;52660:5;52645:21;:::i;:::-;52638:5;52635:32;52625:60;;52681:1;52678;52671:12;52625:60;52575:116;:::o;52697:122::-;52770:24;52788:5;52770:24;:::i;:::-;52763:5;52760:35;52750:63;;52809:1;52806;52799:12;52750:63;52697:122;:::o;52825:120::-;52897:23;52914:5;52897:23;:::i;:::-;52890:5;52887:34;52877:62;;52935:1;52932;52925:12;52877:62;52825:120;:::o;52951:122::-;53024:24;53042:5;53024:24;:::i;:::-;53017:5;53014:35;53004:63;;53063:1;53060;53053:12;53004:63;52951:122;:::o
Swarm Source
ipfs://37c42d9758a23917f09b8a0fd0e16daae664a94a4a129015d0a9fab5b9ca97f2
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.